このセクションでは、IAM ロールの範囲を特定のリソースやタイプに制限する必要がある場合に、展開のポリシー ファイルを作成する手順について説明します。
AWS ポリシーでのアクションの範囲は、次の 2 つの方法で制限できます。
リソースを明示的に指定
条件を指定。リソースは、ARN (Amazon Resource Name) を使用して指定します。
次に、ARN を指定する表記を 2 つ示します。
arn:partition:service:region:account-id:resource
arn:partition:service:region:account-id:resourcetype/resource
ARN には次のコンポーネントが含まれます。
Partition:AWS リソースを含むパーティション。次の 3 つの値を持つことができます。
aws:パブリック AWS パーティション
aws-cn:AWS China
aws-us-gov:AWS Government Cloud
Service:S3、EC2、KMS、IA のようなサービスネームスペース。
Region:リソースを含むリージョン。
Account:{ "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "ec2:RebootInstances", "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "*", "Condition": { "StringLike": { "ec2:ResourceTag/AVICLOUD_UUID": "*" }}}id:リソースを所有する AWS アカウントの ID。
Resource, resourcetype/resource:この部分は実際のリソースを示します。
これらの AWS リソースは、名前により一意に識別できます。これらのリソースを使用して、IAM 権限の範囲を制限します。たとえば、arn:aws:s3:::avi または arn:aws:iam:::role/vmimport のように使用します。
ただし、EC2 リソースのようなリソース名を使用して一意に識別できないリソースの場合、ARN はリソース ID を使用して構成されます。リソース ID は事前にわからないので、これらのリソースを使用して IAM 権限を制限できます。この場合、ポリシー ドキュメントの条件を使用して権限を制限します。
次の例では、AviCloud_UUID のタグ キーを使用して、ユーザーやロールの権限を制限します。このポリシーにより、ユーザーやロールは、リソース タグ キーが AVICLOUD_UUID と設定されているリソースでのみ、指定された操作を実行します。
{ "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "ec2:RebootInstances", "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "*", "Condition": { "StringLike": { "ec2:ResourceTag/AVICLOUD_UUID": "*" }}}
JSON ポリシーを使用した AWS 権限の範囲設定
IAM ポリシー |
変更可能なタグ値 |
---|---|
cloud_name:cloud_uuid |
|
[new_se_prefix] |
|
hosted_zone_id |
|
custom-avi-<service(ec2/s3…)> |
|
key_id_to_be_used |
avicontroller-ec2-policy.json:変更せずに IAM ポリシーを作成する場合に使用します。このポリシーの権限は、リソースのタグ キーに基づいて制限されます。さらに制限する場合は、ポリシー ファイルを変更し、タグ キーに必要な値を追加します。この場合、権限は、タグ キーとタグ値が同じリソースにのみ適用されます。タグ値は、cloud_name:cloud_uuid の形式にする必要があります。展開に従って、具体的なタグ値に置き換えてください。
AviController-S3-policy.json:バケット名は、サービス エンジン グループで構成されたサービス エンジン名のプレフィックスから取得されます。デフォルトの SE 名のプレフィックスは NSX Advanced Load Balancer であるため、バケット名は avi で始まります(プレフィックスは小文字に変換します)。SE プレフィックス値が変更された場合は、同じ値を小文字で使用します。
注:注:[new_se_prefix] 値は、展開に従って置き換えます。
AviController-R53-policy.json:R53 の権限を制限する場合は、このポリシーを使用します。JSON ファイルは、Route 53 ホスト ゾーンの ID で更新されます。選択したゾーンは、VIP と FIP の登録および登録解除に使用します。次のスニペットの例では、ポリシーによって上記の 2 つの権限が hosted_zone_id に制限されています。
注:hosted_zone_id の値は、展開に従って置き換えます。
AviController-IAM-policy.json:このポリシー ファイルは、正しい role_name、instance_profile_name(ロール名と同じ)、および AWS にインストールする際に IAM ロールの設定を使用して作成したポリシーの共通プレフィックスで更新する必要があります。次のスニペットの例では、NSX Advanced Load Balancer Controller のロール名 (CustomAviRole) に、共通のプレフィックス (custom-avi-<service(ec2/s3…)>) でポリシーが作成されています。
注:プレフィックス値は、展開に従って置き換えます。
avicontroller-kms-policy.json:S3/EBS 暗号化を有効にする場合は、このポリシーを使用します。KMS 暗号化キーに対する権限は、リソースベースのポリシーまたは IAM ポリシー、あるいは両方を使用して管理できます。IAM ポリシーを制限するには、特定のキー ID を指定します。または、キー ポリシー セクションで同じ権限を KMS キーに直接適用することもできます。
注:key_id_to_be_used の値は、展開に従って置き換えます。