翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
IAM Policy Builder のバージョン 1 APIからバージョン 2 への変更
このトピックでは、 IAM Policy Builder のバージョン 1 (v1) APIからバージョン 2 (v2) への変更について詳しく説明します。
高レベル変更
変更 | v1 | v2 |
---|---|---|
Maven の依存関係 |
|
|
パッケージ名 | com.amazonaws.auth.policy |
software.amazon.awssdk.policybuilder.iam |
クラス名 |
API 変更
設定 | v1 | v2 |
---|---|---|
ポリシーのインスタンス化 |
|
|
ID を設定する |
|
|
バージョンの設定 |
N/A - のデフォルトバージョンを使用する 2012-10-17 |
|
ステートメントの作成 |
|
|
ステートメントを設定する |
|
|
ステートメントの構築における違い
アクション
v1
v1 SDKには、ポリシーステートメントのAction
要素を表すサービスアクションenum
のタイプがあります。以下のenum
タイプが例です。
次の例は、 のSendMessage
定数を示していますSQSActions
。
Action action = SQSActions.SendMessage;
v1 のステートメントに NotAction
要素を指定することはできません。
v2
v2 では、IamActioncreate
メソッドに文字列を渡します。
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);