View a markdown version of this page

でのパラメータ化された管理アクセス許可の使用 AWS RAM - AWS Resource Access Manager

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

でのパラメータ化された管理アクセス許可の使用 AWS RAM

パラメータ化された管理アクセス許可は、独自の値で入力するポリシー条件にプレースホルダーを含む管理アクセス許可です。これらのプレースホルダーはテンプレートパラメータです。新しい種類の管理アクセス許可は作成されません。既存のポリシーテンプレートに変動性を追加します。

一意の条件値ごとに個別のカスタマー管理アクセス許可を作成する代わりに、パラメータを使用して 1 つのカスタマー管理アクセス許可を作成します。リソース共有に関連付けるときは、各パラメータの値を指定します。 AWS RAM は値をポリシーテンプレートに置き換え、結果のリソースベースのポリシーを共有リソースにアタッチします。

たとえば、中央プラットフォームチームは、Parameter Store パラメータ (リソースタイプ ) に対して 1 AWS Systems Manager つのカスタマー管理アクセス許可を作成しますssm:Parameter。承認されたteamタグを持つプリンシパルにのみ読み取りアクセスを許可します。プラットフォームチームは、そのカスタマー管理アクセス許可を組織内のアカウントと共有します。その後、各アカウントは独自のリソース共有でそれを使用します。これには、1 つ以上の Parameter Store パラメータを含めることができます。各リソース共有で、アカウントは共有 Parameter Store パラメータを読み取ることができるプリンシパルのteamタグ値を提供します。

テンプレートパラメータタイプ

AWS RAM は 2 つのパラメータタイプをサポートしています。タイプは、 AWS RAM が値をレンダリングされたポリシーに置き換える方法を決定します。 AWS RAM API と では AWS CLI、タイプは STRINGと ですSTRING_LIST。 AWS RAM コンソールには、String および StringList として表示されます。

STRING

1 つの文字列値のみを受け入れます。

  • 条件キーまたは条件値でSTRINGパラメータを使用できます。

  • 他のテキストにSTRINGパラメータを埋め込むことができます。例えば、"arn:aws:iam::@{accountId}:role/Auditor"。

  • レンダリングされた値は常に文字列です。IAM 条件演算子は文字列を比較した型に変換するため、STRINGパラメータは数値、ブール値、日付、IP アドレス、または ARN 値を指定できます。

STRING_LIST

1~100 個の文字列値を受け入れます。

  • STRING_LIST パラメータは、条件キーではなく、条件値でのみ使用できます。

  • 条件値が などの パラメータのみを含む単一の文字列である場合"@{teams}"、 は指定した値の配列を AWS RAM レンダリングします。単一の値を指定すると、 は単一の文字列 AWS RAM をレンダリングします。

  • 条件値に パラメータの前後にテキストがある場合、たとえば "arn:aws:iam::@{accountIds}:role/ParameterReader"は各値をそのテキストと AWS RAM 組み合わせます。

  • 各値を複数の文字列と組み合わせるには、条件値の配列の文字列を一覧表示します。 は各値の各配列エントリを AWS RAM レンダリングし、重複した結果を削除します。結果は常に配列です。

  • AWS RAM と IAM は、カンマで文字列を分割しません。カンマ区切りの文字列は 1 つの値として比較されます。

例については、STRING_LIST パラメータの例 を参照してください。

ポリシーテンプレート構文ルール

マネージドアクセス許可のポリシーテンプレートにパラメータを追加すると、次のルールが適用されます。リクエストがこれらのルールのいずれかを破ると、 は InvalidParameterExceptionまたは InvalidPolicyException エラーで AWS RAM 拒否します。

  • パラメータプレースホルダーは構文 を使用します@{parameterName}。

  • パラメータ名には、文字 (a~z、A~Z)、数字 (0~9)、コロン (:)、ハイフン (-)、アンダースコア (_) を使用できます。名前はマネージドアクセス許可バージョン内で一意である必要があり、比較では大文字と小文字は無視されます。

  • アクセス許可またはアクセス許可バージョンを作成するときに、各パラメータを宣言する必要があります。各宣言には、名前、タイプ、説明が必要です。説明は最大 255 文字です。

  • 宣言されたすべてのパラメータがポリシーテンプレートに表示される必要があります。

  • プレースホルダーは、大文字と小文字を含め、宣言された名前と完全に一致します。宣言された名前と完全に一致しない@{...}形式のテキストは、リテラルテキストとしてポリシーに残ります。たとえば、 を宣言teamsして書き込むと@{Teams}、 teamsはテキスト@{Teams}として AWS RAM 処理し、 が使用されないためリクエストを拒否します。

  • パラメータは、 Condition要素、条件キー、または条件値としてのみ表示できます。 はEffect、、Action、またはその他の要素のパラメータ AWS RAM を拒否します。

  • 条件キーには最大 1 つのパラメータを含めることができ、STRINGパラメータである必要があります。条件値には、 など、複数のパラメータを含めることができます"@{project}-@{stage}"。条件値がSTRING_LISTパラメータを組み合わせると、 は各条件値に対して最大 100 個の文字列を、それらの値の組み合わせごとに AWS RAM レンダリングします。

  • マネージドアクセス許可バージョンごとに最大 100 個のパラメータを宣言できます。

  • パラメータにはデフォルト値はありません。アクセス許可をリソース共有に関連付けるときは、宣言されたすべてのパラメータに空でない値を指定する必要があり、宣言されていない名前を指定したり、同じ名前を 2 回指定したりすることはできません。

パラメータ化された管理アクセス許可を作成する

パラメータ化された管理アクセス許可は、他のカスタマー管理アクセス許可を作成するのと同じ方法で作成します。違いは、ポリシーテンプレートの条件にパラメータを宣言し@{parameterName}、プレースホルダーを使用することです。

Console
パラメータ化された管理アクセス許可を作成するには
  1. マネージドアクセス許可ライブラリを開き、カスタマーマネージドアクセス許可の作成を選択します。

  2. カスタマー管理のアクセス許可の詳細で、名前を入力し、リソースタイプを選択します。

  3. ポリシーテンプレートで、ポリシーを入力します。各リソース共有で独自の値を指定する条件で@{parameterName}プレースホルダーを使用します。

  4. テンプレートパラメータで、ポリシーからパラメータを追加を選択してポリシー内の各プレースホルダーに行を追加するか、パラメータを追加を選択して一度に 1 行を追加します。パラメータごとに、パラメータ名を入力し、タイプ (文字列またはStringList) を選択し、説明を入力します。説明は、 パラメータの値を指定するすべてのユーザーに表示されます。

  5. (オプション) タグを追加します。

  6. カスタマー管理アクセス許可の作成 を選択します。

AWS CLI
パラメータ化された管理アクセス許可を作成するには
  • --policy-template および --permission-template-parametersパラメータを使用して create-permission コマンドを実行します。

    次の の例では、 ssm:Parameterリソースタイプのカスタマー管理アクセス許可を作成します。このポリシーでは、プリンシパルに値がteamsリストにあるteamタグがある場合にのみ、プリンシパルはパラメータを読み取ることができます。

    $ aws ram create-permission \ --name ParameterReadByTeam \ --resource-type ssm:Parameter \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}"}}}' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "1", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" } ] } }

パラメータ化された管理アクセス許可のバージョニング

パラメータ化された管理アクセス許可は、他のカスタマー管理アクセス許可と同じ方法でバージョン管理されます。各バージョンはパラメータを個別に宣言するため、新しいバージョンは以前のバージョンとは異なるパラメータのセットを宣言できます。

新しいバージョンを作成するには、 --policy-template および --permission-template-parametersパラメータを使用して create-permission-version コマンドを実行します。次の例では、 という名前のSTRINGパラメータを持つ 2 番目の条件を追加しますenvironment。

$ aws ram create-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"},{"name":"environment","type":"STRING","description":"Value of the environment principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}","aws:PrincipalTag/environment":"@{environment}"}}}'

新しいバージョンは、作成後すぐにデフォルトバージョンになります。既存のリソース共有は、使用するバージョンを保持します。リソース共有の所有者が新しいバージョンに更新する場合、所有者は新しいバージョンが宣言するパラメータの値を指定する必要があります。詳細については、「AWS マネージドアクセス許可を新しいバージョンに更新する」を参照してください。

カスタマー管理のアクセス許可バージョンとデフォルトバージョンの仕組みの詳細については、「」を参照してくださいでのカスタマー管理アクセス許可の作成と使用 AWS RAM。

レンダリングされたポリシーテンプレートをプレビューする

パラメータ化された管理アクセス許可をリソース共有に関連付ける前に、特定のパラメータ値からレンダリングする AWS RAM ポリシーをプレビューできます。

AWS RAM コンソールで、リソース共有を作成または更新するときに、テンプレートパラメータ値の下に値を入力し、レンダリングされたポリシーのプレビューを選択します。

で AWS CLI、 --permission-template-parametersパラメータを使用して get-permission コマンドを実行します。レスポンスの permissionフィールドには、プレースホルダーの代わりに値を含むポリシーが含まれています。

$ aws ram get-permission \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "permission": "{\"Effect\":\"Allow\",\"Action\":[\"ssm:GetParameter\",\"ssm:GetParameters\"],\"Condition\":{\"StringEquals\":{\"aws:PrincipalTag/team\":[\"payments\",\"analytics\"],\"aws:PrincipalTag/environment\":\"prod\"}}}", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "status": "ATTACHABLE", "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" }, { "name": "environment", "type": "STRING", "description": "Value of the environment principal tag that can read the shared parameters" } ] } }

--permission-template-parameters パラメータがない場合、get-permissionコマンドは@{parameterName}プレースホルダーを含むポリシーテンプレートを返します。permissionTemplateParameters フィールドには、宣言された各パラメータの名前、タイプ、説明が一覧表示されます。

パラメータ化された管理アクセス許可をリソース共有に関連付ける

パラメータ化された管理アクセス許可をリソース共有に関連付ける場合は、バージョンが宣言するすべてのパラメータの値を指定する必要があります。 はポリシーテンプレートを値に AWS RAM レンダリングし、結果として得られるリソースベースのポリシーをそのタイプの共有リソースにアタッチします。

Console
パラメータ化された管理アクセス許可をリソース共有に関連付けるには
  1. リソース共有を作成または更新するとき、管理アクセス許可の関連付けページで、リソースタイプのパラメータ化された管理アクセス許可を選択します。

  2. テンプレートパラメータ値に、各パラメータの値を入力します。StringList パラメータの場合は、各値の後に Enter キーを押すか、改行で区切られた値を貼り付けます。

  3. (オプション) レンダリングされたポリシーのプレビューを選択して、 AWS RAM がアタッチするポリシーを確認します。

  4. ウィザードの残りの部分を完了します。レビューページには、テンプレートパラメータ値の下に値が一覧表示されます。

AWS CLI
パラメータ化された管理アクセス許可をリソース共有に関連付けるには
  1. --permission-template-parameters パラメータを使用して create-resource-share または associate-resource-share-permission を実行します。

    の場合create-resource-share、 パラメータはリストです。各エントリには、 permissionArnとそのアクセス許可permissionTemplateParametersの値が含まれます。次の例では、Parameter Store パラメータを別のパラメータと共有するリソース共有を作成します AWS アカウント。team タグpaymentsまたは analyticsと environment タグを持つプリンシパルprodは、タグを読み取ることができます。

    $ aws ram create-resource-share \ --name PaymentsConfig \ --resource-arns arn:aws:ssm:us-east-1:123456789012:parameter/payments/endpoint \ --principals 111122223333 \ --permission-arns arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"permissionArn":"arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam","permissionTemplateParameters":[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]}]' { "resourceShare": { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "name": "PaymentsConfig", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "featureSet": "STANDARD" } }

    create-resource-share は常に各マネージドアクセス許可のデフォルトバージョンを使用します。リソース共有に関連付けることができるのは、マネージドアクセス許可のデフォルトバージョンのみです。

  2. 既存のリソース共有のパラメータ値を変更するか、アクセス許可のデフォルトバージョンに移動するには、 --replaceパラメータを使用して associate-resource-share-permission を実行します。このコマンドでは、 はパラメータ値を直接--permission-template-parameters受け取ります。

    $ aws ram associate-resource-share-permission \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments"]},{"name":"environment","values":["prod"]}]' \ --replace { "returnValue": true }

多くのリソース共有をあるバージョンまたはアクセス許可から別のバージョンまたはアクセス許可に移動するには、 replace-permission-associations を実行します。ターゲットバージョンがパラメータを宣言する場合は、 を含めます--permission-template-parameters。 は、コマンドが更新するすべてのリソース共有に同じ値 AWS RAM を適用します。

テンプレートのパラメータと値を表示する

マネージドアクセス許可が宣言するパラメータと、リソース共有が提供する値を表示できます。

マネージドアクセス許可が宣言するパラメータを表示する

get-permission コマンドを実行します。permissionTemplateParameters フィールドには、各パラメータの名前、タイプ、説明が一覧表示されます。コンソールでは、アクセス許可の詳細ページに同じ情報が表示されます。

リソース共有が提供する値を表示する

list-resource-share-permissions コマンドを実行します。関連するパラメータ化された管理アクセス許可ごとに、 permissionTemplateParametersフィールドにはリソース共有が提供する値が含まれます。

$ aws ram list-resource-share-permissions \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "permissionTemplateParameters": [ { "name": "teams", "values": ["payments"] }, { "name": "environment", "values": ["prod"] } ] } ] }

list-permission-associations コマンドは、所有しているリソース共有の値も返します。共有 AWS アカウント したカスタマー管理アクセス許可を使用する他の のリソース共有を一覧表示する場合、レスポンスにはその値は含まれません。

アカウント間でパラメータ化された管理アクセス許可を共有する

パラメータ化された管理アクセス許可は、他のカスタマー管理アクセス許可 AWS アカウント と同様に、他の と共有できます。受信アカウントには各パラメータの名前、タイプ、説明が表示されるため、指定する値を示す説明を記述します。各受信アカウントは、共有マネージドアクセス許可を独自のリソース共有に関連付けるときに、独自の値を提供します。

カスタマー管理のアクセス許可を共有する手順については、「」を参照してくださいのアカウント間でのカスタマー管理アクセス許可の共有と使用 AWS RAM。

IAM ポリシーでテンプレートパラメータ値を制御する

IAM ポリシーで ram:PermissionTemplateParameter/parameter-name条件キーを使用して、プリンシパルがパラメータに指定できる値を制御することができます。キーは複数値で、名前付きパラメータのリクエストの値が含まれます。これは、、ram:CreateResourceShare、ram:AssociateResourceSharePermissionおよび ram:ReplacePermissionAssociationsアクションの アクセス許可リソースで使用できます。

次のポリシー例では、最初のステートメントはParameterReadByTeamカスタマー管理のアクセス許可に対するアクションを付与します。2 番目のステートメントteamsは、 に指定された値が paymentsまたは 以外の場合、それらを拒否しますanalytics。キーは複数値であるため、ポリシーは ForAnyValue set 演算子を使用します。 AWS RAM は宣言されたパラメータごとに値を必要とするため、このカスタマー管理アクセス許可を使用するリクエストには常にキーが含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam" }, { "Effect": "Deny", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "Condition": { "ForAnyValue:StringNotEquals": { "ram:PermissionTemplateParameter/teams": [ "payments", "analytics" ] } } } ] }

これらのステートメントは、 アクセス許可リソースのみを制御します。プリンシパルには、リソース共有や共有するリソースなど、リクエスト内の他のリソースに対するアクセス許可も必要です。その他の例については、「の IAM ポリシーの例 AWS RAM」を参照してください。

STRING_LIST パラメータの例

次の例は、 がSTRING_LISTパラメータを AWS RAM レンダリングする方法を示しています。

例条件値内のSTRING_LISTパラメータのみ

テンプレート:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": "@{teams}" } }

値: ["payments", "analytics"]

レンダリングされたポリシー:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": ["payments", "analytics"] } }

単一の値 の場合["payments"]、レンダリングされる値は文字列 です"payments"。

例周囲のテキストを含むSTRING_LISTパラメータ

AWS RAM は、各値を パラメータの前後にテキストと結合します。

テンプレート:

"Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::@{accountIds}:role/ParameterReader" } }

値: ["111122223333", "444455556666"]

レンダリングされたポリシー:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/ParameterReader", "arn:aws:iam::444455556666:role/ParameterReader" ] } }
例条件値の配列のSTRING_LISTパラメータ

AWS RAM は、各値の配列内の各エントリをレンダリングし、重複した結果を削除します。

テンプレート:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::@{accountIds}:role/Auditor", "arn:aws:iam::@{accountIds}:role/Reader" ] } }

値: ["111122223333", "444455556666"]

レンダリングされたポリシー:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/Auditor", "arn:aws:iam::444455556666:role/Auditor", "arn:aws:iam::111122223333:role/Reader", "arn:aws:iam::444455556666:role/Reader" ] } }