Perubahan pada Pembuat IAM Kebijakan API dari versi 1 ke versi 2 - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Perubahan pada Pembuat IAM Kebijakan API dari versi 1 ke versi 2

Topik ini merinci perubahan dalam Pembuat IAM Kebijakan API dari versi 1 (v1) ke versi 2 (v2).

Perubahan tingkat tinggi

Perubahan v1 v2

Ketergantungan Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.5871</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-core</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>iam-policy-builder</artifactId> </dependency> </dependencies>
Nama paket com.amazonaws.auth.policy software.amazon.awssdk.policybuilder.iam
Nama kelas

Kebijakan

Pernyataan

IamPolicy

IamStatement

1 Versi terbaru. 2 Versi terbaru.

APIperubahan

Pengaturan v1 v2

Membuat instantiasi kebijakan
Policy policy = new Policy();
IamPolicy.Builder policyBuilder = IamPolicy.builder(); ... IamPolicy policy = policyBuilder.build();

Tetapkan id

policy.withtId(...); policy.setId(...);
policyBuilder.id(...);

Tetapkan versi

N/A - menggunakan versi default 2012-10-17
policyBuilder.version(...);

Buat pernyataan

Statement statement = new Statement(Effect.Allow) .withActions(...) .withConditions(...) .withId(...) .withPrincipals(...) .withResources(...);
IamStatement statement = IamStatement.builder() .effect(IamEffect.ALLOW) .actions(...) .notActions(...) .conditions(...) .sid(...) .principals(...) .notPrincipals(...) .resources(...) .notResources(...) .build()

Tetapkan pernyataan

policy.withStatements(statement); policy.setStatements(statement);
policyBuilder.addStatement(statement);

Perbedaan dalam membangun pernyataan

Tindakan

v1

V1 SDK memiliki enumtipe untuk tindakan layanan yang mewakili Action elemen dalam pernyataan kebijakan. enumJenis berikut adalah beberapa contoh.

Contoh berikut menunjukkan SendMessage konstanta untukSQSActions.

Action action = SQSActions.SendMessage;

Anda tidak dapat menentukan NotAction elemen ke pernyataan di v1.

v2

Di v2, IamActionantarmuka mewakili semua tindakan. Untuk menentukan elemen tindakan khusus layanan, berikan string ke create metode seperti yang ditunjukkan pada kode berikut.

IamAction action = IamAction.create("sqs:SendMessage");

Anda dapat menentukan NotAction untuk pernyataan dengan v2 seperti yang ditunjukkan dalam kode berikut.

IamAction action = IamAction.create("sqs:SendMessage"); IamStatement.builder().addNotAction(action);

Ketentuan

v1

Untuk mewakili kondisi pernyataan, v1 SDK menggunakan subclass dari. Condition

Setiap Condition subkelas mendefinisikan enum tipe perbandingan untuk membantu menentukan kondisi. Misalnya, berikut ini menunjukkan perbandingan string tidak suka untuk suatu kondisi.

Condition condition = new StringCondition(StringComparisonType.StringNotLike, "key", "value");

v2

Di v2, Anda membuat kondisi untuk pernyataan kebijakan dengan menggunakan IamCondition dan menyediakanIamConditionOperator, yang berisi enums untuk semua jenis.

IamCondition condition = IamCondition.create(IamConditionOperator.STRING_NOT_LIKE, "key", "value");

Sumber daya

v1

ResourceElemen pernyataan kebijakan diwakili oleh SDK Resource kelas. Anda menyediakan ARN sebagai string di konstruktor. Subkelas berikut menyediakan konstruktor kenyamanan.

Di v1, Anda dapat menentukan NotResource elemen untuk a Resource dengan memanggil withIsNotType metode seperti yang ditunjukkan dalam pernyataan berikut.

Resource resource = new Resource("arn:aws:s3:::mybucket").withIsNotType(true);

v2

Di v2, Anda membuat Resource elemen dengan meneruskan ARN ke IamResource.create metode.

IamResource resource = IamResource.create("arn:aws:s3:::mybucket");

Sebuah IamResource dapat diatur sebagai NotResourceelemen seperti yang ditunjukkan dalam cuplikan berikut.

IamResource resource = IamResource.create("arn:aws:s3:::mybucket"); IamStatement.builder().addNotResource(resource);

IamResource.ALLmewakili semua sumber daya.

Pengguna utama

v1

V1 SDK menawarkan Principal kelas-kelas berikut untuk mewakili jenis kepala sekolah yang mencakup semua anggota:

  • AllUsers

  • AllServices

  • AllWebProviders

  • All

Anda tidak dapat menambahkan NotPrincipal elemen ke pernyataan.

v2

Dalam v2, IamPrincipal.ALL mewakili semua prinsip:

Untuk mewakili semua anggota dalam jenis kepala sekolah lainnya, gunakan IamPrincipalType kelas saat Anda membuat file. IamPrincipal

  • IamPrincipal.create(IamPrincipalType.AWS,"*")untuk semua pengguna.

  • IamPrincipal.create(IamPrincipalType.SERVICE,"*")untuk semua layanan.

  • IamPrincipal.create(IamPrincipalType.FEDERATED,"*")untuk semua penyedia web.

  • IamPrincipal.create(IamPrincipalType.CANONICAL_USER,"*")untuk semua pengguna kanonik.

Anda dapat menggunakan addNotPrincipal metode untuk mewakili NotPrincipal elemen ketika Anda membuat pernyataan kebijakan seperti yang ditunjukkan dalam pernyataan berikut.

IamPrincipal principal = IamPrincipal.create(IamPrincipalType.AWS, "arn:aws:iam::444455556666:root"); IamStatement.builder().addNotPrincipal(principal);