IAM Policy Builder のバージョン 1 APIからバージョン 2 への変更 - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM Policy Builder のバージョン 1 APIからバージョン 2 への変更

このトピックでは、 IAM Policy Builder のバージョン 1 (v1) APIからバージョン 2 (v2) への変更について詳しく説明します。

高レベル変更

変更 v1 v2

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>
パッケージ名 com.amazonaws.auth.policy software.amazon.awssdk.policybuilder.iam
クラス名

Policy

Statement

IamPolicy

IamStatement

1 最新バージョン2 最新バージョン

API 変更

設定 v1 v2

ポリシーのインスタンス化
Policy policy = new Policy();
IamPolicy.Builder policyBuilder = IamPolicy.builder(); ... IamPolicy policy = policyBuilder.build();

ID を設定する

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

バージョンの設定

N/A - のデフォルトバージョンを使用する 2012-10-17
policyBuilder.version(...);

ステートメントの作成

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()

ステートメントを設定する

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

ステートメントの構築における違い

アクション

v1

v1 SDKには、ポリシーステートメントのAction要素を表すサービスアクションenumのタイプがあります。以下のenumタイプが例です。

次の例は、 のSendMessage定数を示していますSQSActions

Action action = SQSActions.SendMessage;

v1 のステートメントに NotAction要素を指定することはできません。

v2

v2 では、IamActionインターフェイスはすべてのアクションを表します。サービス固有のアクション要素を指定するには、次のコードに示すように、 create メソッドに文字列を渡します。

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

次のコードに示すように、v2 を使用して ステートメントNotActionに を指定できます。

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

条件

v1

ステートメント条件を表すために、v1 は のサブクラスSDKを使用しますCondition

Conditionサブクラスは、条件の定義に役立つ比較enumタイプを定義します。例えば、次の図は、条件の文字列比較とは異なります。

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

v2

v2 では、 を使用してポリシーステートメントの条件を構築しIamConditionOperator、すべてのタイプenumsに を含む IamConditionを指定します。

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

リソース

v1

ポリシーステートメントの Resource要素は、 SDKのResourceクラスで表されます。コンストラクターで を文字列ARNとして指定します。次のサブクラスは、コンビニエンスコンストラクターを提供します。

v1 では、次のステートメントに示すように withIsNotTypeメソッドを呼び出すResourceことで、 の NotResource 要素を指定できます。

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

v2

v2 では、 を IamResource.createメソッドARNに渡して Resource要素を作成します。

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

次のスニペットに示すようにIamResource、 を NotResource要素として設定できます。

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

IamResource.ALL はすべてのリソースを表します。

プリンシパル

v1

v1 SDKでは、すべてのメンバーを含むプリンシパルのタイプを表すために、次のPrincipalクラスが用意されています。

  • AllUsers

  • AllServices

  • AllWebProviders

  • All

ステートメントに NotPrincipal要素を追加することはできません。

v2

v2 では、 はすべてのプリンシパルIamPrincipal.ALLを表します。

他のタイプのプリンシパルのすべてのメンバーを表すには、 を作成するときに IamPrincipalType クラスを使用しますIamPrincipal

  • IamPrincipal.create(IamPrincipalType.AWS,"*") すべてのユーザー向け。

  • IamPrincipal.create(IamPrincipalType.SERVICE,"*") すべての のサービス。

  • IamPrincipal.create(IamPrincipalType.FEDERATED,"*") すべてのウェブプロバイダー用。

  • IamPrincipal.create(IamPrincipalType.CANONICAL_USER,"*") すべての正規ユーザー向け。

次のステートメントに示すように、 addNotPrincipalメソッドを使用してポリシーステートメントを作成するときに NotPrincipal要素を表すことができます。

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