このセクションでは、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

ServiceS3、EC2、KMSIA のようなサービスネームスペース。

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 ポリシー

変更可能なタグ値

avicontroller-ec2-policy.json

cloud_name:cloud_uuid

AviController-S3-policy.json

[new_se_prefix]

AviController-R53-policy.json

hosted_zone_id

AviController-IAM-policy.json

custom-avi-<service(ec2/s3…)>

avicontroller-kms-policy.json

key_id_to_be_used

  1. avicontroller-ec2-policy.json:変更せずに IAM ポリシーを作成する場合に使用します。このポリシーの権限は、リソースのタグ キーに基づいて制限されます。さらに制限する場合は、ポリシー ファイルを変更し、タグ キーに必要な値を追加します。この場合、権限は、タグ キーとタグ値が同じリソースにのみ適用されます。タグ値は、cloud_name:cloud_uuid の形式にする必要があります。展開に従って、具体的なタグ値に置き換えてください。

  2. AviController-S3-policy.json:バケット名は、サービス エンジン グループで構成されたサービス エンジン名のプレフィックスから取得されます。デフォルトの SE 名のプレフィックスは NSX Advanced Load Balancer であるため、バケット名は avi で始まります(プレフィックスは小文字に変換します)。SE プレフィックス値が変更された場合は、同じ値を小文字で使用します。

    注:

    注:[new_se_prefix] 値は、展開に従って置き換えます。

  3. AviController-R53-policy.json:R53 の権限を制限する場合は、このポリシーを使用します。JSON ファイルは、Route 53 ホスト ゾーンの ID で更新されます。選択したゾーンは、VIP と FIP の登録および登録解除に使用します。次のスニペットの例では、ポリシーによって上記の 2 つの権限が hosted_zone_id に制限されています。

    注:

    hosted_zone_id の値は、展開に従って置き換えます。

  4. AviController-IAM-policy.json:このポリシー ファイルは、正しい role_name、instance_profile_name(ロール名と同じ)、および AWS にインストールする際に IAM ロールの設定を使用して作成したポリシーの共通プレフィックスで更新する必要があります。次のスニペットの例では、NSX Advanced Load Balancer Controller のロール名 (CustomAviRole) に、共通のプレフィックス (custom-avi-<service(ec2/s3…)>) でポリシーが作成されています。

    注:

    プレフィックス値は、展開に従って置き換えます。

  5. avicontroller-kms-policy.json:S3/EBS 暗号化を有効にする場合は、このポリシーを使用します。KMS 暗号化キーに対する権限は、リソースベースのポリシーまたは IAM ポリシー、あるいは両方を使用して管理できます。IAM ポリシーを制限するには、特定のキー ID を指定します。または、キー ポリシー セクションで同じ権限を KMS キーに直接適用することもできます。

    注:

    key_id_to_be_used の値は、展開に従って置き換えます。