Amazon Virtual Private Cloud
ユーザーガイド

Amazon VPC のリソースに対するアクセスの制御

セキュリティ認証情報を共有せずに Amazon VPC リソースへのアクセスを許可するには、IAM ポリシーを作成して、IAM ユーザー、または IAM ユーザーが属するグループにアタッチする必要があります。IAM ユーザーが必要な特定の Amazon VPC リソースおよび Amazon EC2 API アクションを使用するアクセス許可を付与する必要があります。ポリシーをユーザーまたはユーザーのグループにアタッチすると、特定リソースの特定タスクを実行するアクセス許可が付与または拒否されます。一部の API アクションは、ユーザーが作成または変更できる特定のリソースを制御できるようにする、リソースレベルのアクセス許可をサポートしています。

重要

現在、すべての Amazon EC2 API アクションがリソースレベルのアクセス許可をサポートしているわけではありません。Amazon EC2 API アクションでリソースレベルのアクセス許可がサポートされない場合、アクションを使用するアクセス許可をユーザーに付与できますが、ポリシーステートメントのリソース要素として * を指定する必要があります。これを行う例については、「1.VPC を管理する」のサンプルポリシーを参照してください。今後、Amazon EC2 リソースに対する API アクションおよび ARN のサポートを追加していきます。どの Amazon EC2 API アクションでどの ARN を使用できるかについて、また各 ARN でサポートされる条件キーについては、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 API アクションでサポートされるリソースと条件」を参照してください。

Amazon EC2 用の IAM ポリシーの作成、EC2 API アクションでサポートされているリソース、Amazon EC2 用のポリシー例については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 の IAM ポリシー」を参照してください。

AWS CLI または SDK のサンプルポリシー

以下の例では、Amazon VPC に対して IAM ユーザーが所有するアクセス権限を制御するために使用できるポリシーステートメントを示しています。これらの例は、AWS CLI、または AWS SDK を使用するユーザーを対象としています。

ClassicLink に使用するポリシーの例については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「CLI または SDK のサンプルポリシー」を参照してください。

1.VPC を管理する

以下のポリシーは、VPC を作成および管理する許可をユーザーに与えます。このポリシーはネットワーク管理者のグループに割り当てることができます。Action 要素では、VPC、サブネット、インターネットゲートウェイ、カスタマーゲートウェイ、仮想プライベートゲートウェイ、Site-to-Site VPN 接続、ルートテーブル、Elastic IP アドレス、セキュリティグループ、ネットワーク ACL、および DHCP オプションセットに関連した API アクションを指定します。また、このポリシーにより、グループはインスタンスを実行、停止、開始、および終了することを許可されます。さらに、グループは Amazon EC2 のリソースを一覧表示することもできます。

ポリシーでは、ワイルドカードを使用して、各オブジェクトタイプに許可されるアクションをすべて指定します(例: *SecurityGroup*)。または、各アクションを明示的にリストすることもできます。ワイルドカードを使用する場合は、名前にワイルドカード文字列を含む新しいアクションをポリシーに追加すると、そのポリシーによってグループには自動的に新しいアクションへのアクセスが許可されることにご留意ください。

Resource エレメントにワイルドカードを使用します。これは、ユーザーが API アクションですべてのリソースを指定できることを示します。また、API アクションがリソースレベルのアクセス権限をサポートしていない場合も、* ワイルドカードが必要です。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["ec2:*Vpc*", "ec2:*Subnet*", "ec2:*Gateway*", "ec2:*Vpn*", "ec2:*Route*", "ec2:*Address*", "ec2:*SecurityGroup*", "ec2:*NetworkAcl*", "ec2:*DhcpOptions*", "ec2:RunInstances", "ec2:StopInstances", "ec2:StartInstances", "ec2:TerminateInstances", "ec2:Describe*"], "Resource":"*" } ] }

2.Amazon VPC 用の読み取り専用ポリシー

次のポリシーは、VPC とそのコンポーネントをリストする許可をユーザーに与えます。ユーザーは、VPC を作成、更新、または削除することはできません。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeInternetGateways", "ec2:DescribeEgressOnlyInternetGateways", "ec2:DescribeVpcEndpoints", "ec2:DescribeNatGateways", "ec2:DescribeCustomerGateways", "ec2:DescribeVpnGateways", "ec2:DescribeVpnConnections", "ec2:DescribeRouteTables", "ec2:DescribeAddresses", "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkAcls", "ec2:DescribeDhcpOptions", "ec2:DescribeTags", "ec2:DescribeInstances"], "Resource":"*" } ] }

3.Amazon VPC 用のカスタムポリシー

次のポリシーは、インスタンスの起動、インスタンスの停止、インスタンスの開始、インスタンスの終了の許可をユーザーに与え、Amazon EC2 および Amazon VPC で利用できるリソースについて説明します。

ポリシーの 2 番目の定義文は、その他のポリシーで明示的に許可を否定することにより、ユーザーに許可される可能性がある広範囲の API アクションへのアクセスを否定しています。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["ec2:RunInstances", "ec2:StopInstances", "ec2:StartInstances", "ec2:TerminateInstances", "ec2:Describe*"], "Resource":"*" }, { "Effect":"Deny", "NotAction":["ec2:RunInstances", "ec2:StopInstances", "ec2:StartInstances", "ec2:TerminateInstances", "ec2:Describe*"], "Resource":"*" } ] }

4.特定のサブネット内にインスタンスを起動する

以下のポリシーは、特定のサブネット内にインスタンスを起動し、リクエストで特定のセキュリティグループを使用する許可をユーザーに与えます。このポリシーは、subnet-1a2b3c4d の ARN および sg-123abc123 の ARN を指定することで許可を与えます。ユーザーが別のサブネット内でまたは別のセキュリティグループを使用してインスタンスを起動しようとすると、リクエストは失敗します (ただし、別のポリシーまたは別の定義文で、ユーザーにその許可が与えられている場合を除きます)。

このポリシーは、ネットワークインターフェイスリソースを使用する許可も与えます。サブネット内に起動すると、RunInstances リクエストは、デフォルトでプライマリネットワークインターフェイスを作成するので、ユーザーには、インスタンスを起動するときにこのリソースを作成する許可が必要です。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/sg-123abc123" ] } ] }

5.特定の VPC 内にインスタンスを起動する

以下のポリシーは、特定の VPC 内の任意のサブネットにインスタンスを起動する許可をユーザーに与えます。このポリシーは、条件キー (ec2:Vpc) をサブネットリソースに適用することで許可を与えます。

また、このポリシーは、タグ「department=dev」のある AMI のみを使用してインスタンスを起動する許可をユーザーに与えます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account:subnet/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-1a2b3c4d" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region::image/ami-*", "Condition": { "StringEquals": { "ec2:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }

6.VPC でセキュリティグループを管理する

以下のポリシーは、特定の VPC 内の任意のセキュリティグループに対するインバウンドルールとアウトバウンドルールを作成および削除する許可をユーザーに与えます。このポリシーは、Authorize アクションと Revoke アクションのセキュリティグループリソースに条件キー (ec2:Vpc) を適用することで、許可を与えます。

2 番目のステートメントは、すべてのセキュリティグループについて説明する許可をユーザーに与えます。これは、ユーザーが CLI を使用してセキュリティグループルールを変更できるようにするために必要です。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"], "Resource": "arn:aws:ec2:region:account:security-group/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-1a2b3c4d" } } }, { "Effect": "Allow", "Action": "ec2:DescribeSecurityGroups", "Resource": "*" } ] }

7.VPC ピアリング接続の作成と管理

VPC ピアリング接続の作成と変更を管理する際に使用できるポリシーの例を次に示します。

a.VPC ピア接続を作成する

次のポリシーにより、ユーザーは、Purpose=Peering というタグが付いている VPC のみを使用して VPC ピアリング接続リクエストを作成できます。最初のステートメントでは、条件キー (ec2:ResourceTag) が VPC リソースに適用されます。CreateVpcPeeringConnection アクションの VPC リソースは、常にリクエスタ VPC であることに注意してください。

2 番目のステートメントでは、VPC ピア接続リソースを作成するためのアクセス許可をユーザーに与えます。このため、特定のリソース ID の代わりにワイルドカード * が使用されます。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Peering" } } }, { "Effect": "Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc-peering-connection/*" } ] }

次のポリシーにより、AWS アカウント 333333333333 のユーザーは、us-east-1 リージョン内の任意の VPC を使用して VPC ピア接続を作成できます。ただし、ピア接続を受け入れる VPC が特定のアカウント(777788889999)の特定の VPC(vpc-aaa111bb)である場合に限ります。

{ "Version": "2012-10-17", "Statement": [{ "Effect":"Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:us-east-1:333333333333:vpc/*" }, { "Effect": "Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": "arn:aws:ec2:region:333333333333:vpc-peering-connection/*", "Condition": { "ArnEquals": { "ec2:AccepterVpc": "arn:aws:ec2:region:777788889999:vpc/vpc-aaa111bb" } } } ] }

b.VPC ピアリング接続承認する

次のポリシーにより、ユーザーは、AWS アカウント 444455556666 からの VPC ピア接続リクエストを受け入れることができます。これにより、不明なアカウントから VPC ピア接続リクエストを受け入れることを防ぐことができます。最初のステートメントでは、これを適用するために ec2:RequesterVpc 条件キーが使用されます。

また、このポリシーでは、VPC に Purpose=Peering というタグが付いている場合にのみ VPC ピアリクエストを受け入れるアクセス権限をユーザーに与えます。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": "ec2:AcceptVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc-peering-connection/*", "Condition": { "ArnEquals": { "ec2:RequesterVpc": "arn:aws:ec2:region:444455556666:vpc/*" } } }, { "Effect": "Allow", "Action": "ec2:AcceptVpcPeeringConnection", "Resource": "arn:aws:ec2:region:account:vpc/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Peering" } } } ] }

c.VPC ピアリング接続を削除する

次のポリシーにより、アカウント 444455556666 のユーザーは、同じアカウント内の指定された VPC vpc-1a2b3c4d を使用する VPC ピア接続を除くすべての VPC ピア接続を削除できます。このポリシーでは、ec2:AccepterVpc 条件キーと ec2:RequesterVpc 条件キーの両方を指定しています。これは、VPC がリクエスタ VPC であるか、または元の VPC ピアリング接続リクエスト内のピア VPC である可能性があるためです。

{ "Version": "2012-10-17", "Statement": [{ "Effect":"Allow", "Action": "ec2:DeleteVpcPeeringConnection", "Resource": "arn:aws:ec2:region:444455556666:vpc-peering-connection/*", "Condition": { "ArnNotEquals": { "ec2:AccepterVpc": "arn:aws:ec2:region:444455556666:vpc/vpc-1a2b3c4d", "ec2:RequesterVpc": "arn:aws:ec2:region:444455556666:vpc/vpc-1a2b3c4d" } } } ] }

d.特定のアカウントでの操作

次のポリシーにより、ユーザーは特定のアカウント内で VPC ピアリング接続を完全に操作できます。ユーザーは、VPC ピア接続の表示、作成、受け入れ、拒否、および削除を実行できます(それらの接続がすべて AWS アカウント 333333333333 内の接続である場合)。

最初のステートメントでは、ユーザーはすべての VPC ピア接続を表示できます。この場合、Resource エレメントではワイルドカード * が必要になります。現時点では、この API アクション (DescribeVpcPeeringConnections) が、リソースレベルのアクセス権限をサポートしていないためです。

2 番目のステートメントでは、ユーザーは VPC ピア接続を作成でき、必要であれば、アカウント 333333333333 内のすべての VPC へアクセスできます。

3 番目のステートメントでは、すべての VPC ピア接続アクションを許可するために、Action エレメントの一部としてワイルドカード * が使用されています。条件キーによって、アクションは、アカウント 333333333333 の一部である VPC を使用した VPC ピア接続に対してのみ実行することができます。たとえば、アクセプタ VPC またはリクエスタ VPC のどちらかが別のアカウントに属する場合、ユーザーは VPC ピア接続を削除できません。ユーザーは、別のアカウントに属する VPC を使用して VPC ピアリング接続を作成することはできません。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:DescribeVpcPeeringConnections", "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:CreateVpcPeeringConnection","ec2:AcceptVpcPeeringConnection"], "Resource": "arn:aws:ec2:*:333333333333:vpc/*" }, { "Effect": "Allow", "Action": "ec2:*VpcPeeringConnection", "Resource": "arn:aws:ec2:*:333333333333:vpc-peering-connection/*", "Condition": { "ArnEquals": { "ec2:AccepterVpc": "arn:aws:ec2:*:333333333333:vpc/*", "ec2:RequesterVpc": "arn:aws:ec2:*:333333333333:vpc/*" } } } ] }

8.VPC エンドポイントの作成と管理

次のポリシーは、VPC エンドポイント、VPC エンドポイントサービス、および VPC エンドポイント接続通知を作成、変更、表示、削除するアクセス権限をユーザーに付与します。ユーザーは、VPC エンドポイント接続リクエストを承諾または拒否することもできます。ec2:*VpcEndpoint* アクションはいずれもリソースレベルのアクセス権限をサポートしていないため、ユーザーがすべてのリソースを操作できるようにするには、Resource 要素に * ワイルドカードを使用する必要があります。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":"ec2:*VpcEndpoint*", "Resource":"*" } ] }

コンソールのサンプルポリシー

IAM ポリシーを使用して、Amazon VPC コンソールで特定のリソースを表示、および操作するアクセス許可をユーザーに付与することができます。上記のセクションのサンプルポリシーを使用することはできますが、これらは AWS CLI または AWS SDK で作成されたリクエスト向けに設計されています。コンソールではこの機能を実行するために追加の API アクションを使用するので、これらのポリシーは正常に動作しない可能性があります。

このセクションでは、VPC コンソールの特定の部分をユーザーが操作できるようになるポリシーを説明します。

1.VPC ウィザードの使用

Amazon VPC コンソールで VPC ウィザードを使用して、VPC を作成、セットアップ、設定できるので、VPC の使用を開始できます。ウィザードは、ユーザーの要件に応じてさまざまな設定オプションを提供します。VPC ウィザードを使用して VPC を作成する方法の詳細については、「シナリオと例」を参照してください。

ユーザーが VPC ウィザードを使用できるようにするには、選択した設定の一部となるリソースを作成および変更するアクセス権限をユーザーに付与する必要があります。次のポリシーの例では、それぞれのウィザード設定オプションに必要なアクションを示します

注記

ある時点で VPC ウィザードが失敗した場合、作成されたリソースのデタッチと削除が試みられます。これらのアクションを使用するアクセス権限をユーザーに付与していない場合、これらのリソースはアカウントに残ります。

オプション 1: 1 つのパブリックサブネットを持つ VPC

最初の VPC ウィザード設定オプションでは、1 つのサブネットを持つ VPC を作成します。IAM ポリシーでは、ユーザーがこのウィザードオプションを正しく使用できるようにするため、次のアクションを使用するアクセス権限をユーザーに付与する必要があります。

  • ec2:CreateVpcec2:CreateSubnetec2:CreateRouteTable、および ec2:CreateInternetGateway: VPC、サブネット、カスタムルートテーブル、およびインターネットゲートウェイを作成する場合。

  • ec2:DescribeAvailabilityZones: ウィザードのアベイラビリティーゾーンのリストおよびサブネットの CIDR ブロックフィールドのセクションを表示する場合。ユーザーがデフォルト設定をそのままにする場合でも、これらのオプションを表示しないと、VPC を作成することはできません。

  • ec2:DescribeVpcEndpointServices: ウィザードの VPC エンドポイントセクションを表示する場合。

  • ec2:AttachInternetGateway: インターネットゲートウェイを VPC にアタッチする場合。

  • ec2:CreateRoute: カスタムルートテーブルでルートを作成する場合。ルートは、インターネットゲートウェイへのトラフィックを示します。

  • ec2:AssociateRouteTable: カスタムルートテーブルをサブネットに関連付ける場合。

  • ec2:ModifyVpcAttribute: VPC の属性を変更して DNS ホスト名を有効にし、この VPC に起動された各インスタンスが DNS ホスト名を受信できるようにする場合。

このポリシーのいずれの API アクションもリソースレベルのアクセス権限をサポートしないため、ユーザーが使用できる特定のリソースを制御することはできません。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute" ], "Resource": "*" } ] }

オプション 2: パブリックサブネットとプライベートサブネットを持つ VPC

VPC ウィザードの 2 番目の設定オプションは、パブリックサブネットとプライベートサブネットを持つ VPC を作成し、NAT ゲートウェイまたは NAT インスタンスを起動するためのオプションを提供します。次のポリシーには、前の例 (オプション 1) と同じアクションに加えて、ユーザーが NAT ゲートウェイまたは NAT インスタンスのいずれかを実行および設定できるようにするアクションが含まれています。

次のアクションは、NAT インスタンスを起動する場合でも NAT ゲートウェイを起動する場合でも必須です。

  • ec2:DescribeKeyPairs: 既存のキーペアのリストを表示して、ウィザードの NAT セクションをロードする場合。

次のアクションは、NAT ゲートウェイを作成するために必要です (NAT インスタンスの起動には必要ありません)。

  • ec2:CreateNatGateway: NAT ゲートウェイを作成する場合。

  • ec2:DescribeNatGateways: 利用可能な状態になるまで NAT ゲートウェイのステータスを確認する場合。

  • ec2:DescribeAddresses: NAT ゲートウェイに関連付けるためにアカウントで利用可能な Elastic IP アドレスを一覧表示する場合。

次のアクションは、NAT インスタンスを起動するために必要です (NAT ゲートウェイの作成には必要ありません)。

  • ec2:DescribeImages: NAT インスタンスとして実行するよう設定された AMI を見つける場合。

  • ec2:RunInstances: NAT インスタンスを起動する場合。

  • ec2:AllocateAddress および ec2:AssociateAddress: アカウントに Elastic IP アドレスを割り当て、それを NAT インスタンスに関連付ける場合。

  • ec2:ModifyInstanceAttributeNAT インスタンスの送信元/送信先チェックを無効にする場合。

  • ec2:DescribeInstances: 実行中の状態になるまでインスタンスのステータスを確認する場合。

  • ec2:DescribeRouteTablesec2:DescribeVpnGateways、および ec2:DescribeVpcs: メインルートテーブルに追加する必要があるルートに関する情報を収集する場合。

次のポリシーでは、ユーザーが NAT インスタンスまたは NAT ゲートウェイのいずれかを作成できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:CreateNatGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeImages", "ec2:RunInstances", "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:DescribeAddresses", "ec2:DescribeInstances", "ec2:ModifyInstanceAttribute", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeNatGateways" ], "Resource": "*" } ] }

ec2:RunInstances アクションでリソースレベルのアクセス権限を使用して、ユーザーによるインスタンスの起動を管理できます。たとえば、NAT が有効な AMI の ID を指定して、ユーザーがこの AMI でインスタンスの起動のみを行えるようにできます。NAT インスタンスを起動するためにウィザードが使用する AMI を見つけるには、完全なアクセス許可を持つユーザーとして Amazon VPC コンソールにログインし、VPC ウィザードの 2 番目のオプションを実行します。Amazon EC2 コンソールに切り替え、[Instances] ページを選択し、NAT インスタンスを選択して、その起動に使用された AMI ID を書き留めます。

次のポリシーにより、ユーザーは ami-1a2b3c4d のみを使用してインスタンスを起動できます。ユーザーがその他の AMI を使用してインスタンスを起動しようとすると、起動は失敗します。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeImages", "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:DescribeInstances", "ec2:ModifyInstanceAttribute", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-1a2b3c4d", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }

オプション 3: パブリックサブネットとプライベートサブネット、および AWS Site-to-Site VPN アクセスを持つ VPC

3 番目の VPC ウィザード設定オプションでは、パブリックサブネットとプライベートサブネットを持つ VPC を作成し、VPC と自ネットワークの間に AWS Site-to-Site VPN 接続を作成します。IAM ポリシーで、オプション 1 と同じアクションを使用するためのアクセス権限をユーザーに付与する必要があります。これにより、ユーザーは VPC と 2 つのサブネットを作成し、パブリックサブネットのルーティングを設定できるようになります。Site-to-Site VPN 接続を作成するには、ユーザーは以下のアクションを行うためのアクセス許可を持っている必要もあります。

  • ec2:CreateCustomerGateway: カスタマーゲートウェイを作成するには

  • ec2:CreateVpnGatewayec2:AttachVpnGateway: 仮想プライベートゲートウェイを作成して、VPC にアタッチする

  • ec2:EnableVgwRoutePropagation: ルート伝達を有効にして、ルートが自動的にルートテーブルに伝達されるようにする

  • ec2:CreateVpnConnection: Site-to-Site VPN 接続を作成する

  • ec2:DescribeVpnConnectionsec2:DescribeVpnGatewaysec2:DescribeCustomerGateways: ウィザードの 2 番目の設定ページのオプションを表示する

  • ec2:DescribeVpcsec2:DescribeRouteTables: メインルートテーブルに追加する必要があるルートに関する情報を収集する

このポリシーのいずれの API アクションもリソースレベルのアクセス権限をサポートしないため、ユーザーが使用できる特定のリソースを制御することはできません。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute", "ec2:CreateCustomerGateway", "ec2:CreateVpnGateway", "ec2:AttachVpnGateway", "ec2:EnableVgwRoutePropagation", "ec2:CreateVpnConnection", "ec2:DescribeVpnGateways", "ec2:DescribeCustomerGateways", "ec2:DescribeVpnConnections", "ec2:DescribeRouteTables", "ec2:DescribeNetworkAcls", "ec2:DescribeInternetGateways", "ec2:DescribeVpcs" ], "Resource": "*" } ] }

オプション 4: プライベートサブネットのみ、および AWS Site-to-Site VPN アクセスを持つ VPC

4 番目の VPC ウィザード設定オプションでは、プライベートサブネットを持つ VPC を作成し、VPC と自ネットワークの間に Site-to-Site VPN 接続を作成します。他の 3 つのオプションとは異なり、ユーザーには、VPC に対してインターネットゲートウェイを作成またはアタッチするためのアクセス権限も、ルートテーブルを作成してサブネットに関連付けるためのアクセス権限も不要です。Site-to-Site VPN 接続を確立するには、前の例 (オプション 3) と同じアクセス許可が必要です。

このポリシーのいずれの API アクションもリソースレベルのアクセス権限をサポートしないため、ユーザーが使用できる特定のリソースを制御することはできません。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:DescribeVpcEndpointServices", "ec2:ModifyVpcAttribute", "ec2:CreateCustomerGateway", "ec2:CreateVpnGateway", "ec2:AttachVpnGateway", "ec2:EnableVgwRoutePropagation", "ec2:CreateVpnConnection", "ec2:DescribeVpnGateways", "ec2:DescribeCustomerGateways", "ec2:DescribeVpnConnections", "ec2:DescribeRouteTables", "ec2:DescribeNetworkAcls", "ec2:DescribeInternetGateways", "ec2:DescribeVpcs" ], "Resource": "*" } ] }

2.VPC を管理する

VPC コンソールの [Your VPCs] ページで、VPC を作成または削除できます。VPC を表示するには、ec2:DescribeVPCs アクションを使用するアクセス権限がユーザーに必要です。[Create VPC] ダイアログボックスを使用して VPC を作成するには、ec2:CreateVpc アクションを使用するアクセス権限がユーザーに必要です。

注記

デフォルトでは、Name のキーと、ユーザーが指定する値でタグが作成されます。ユーザーに ec2:CreateTags アクションを使用するアクセス権限がない場合、VPC を作成しようすると、[Create VPC] ダイアログボックスにエラーが表示されます。ただし、VPC は正常に作成されている可能性があります。

通常、VPC をセットアップするときは、サブネット、インターネットゲートウェイなど、いくつかの依存オブジェクトを作成します。これらの依存オブジェクトの関連付けを解除し、削除するまでは、VPC を削除することはできません。コンソールを使用して VPC を削除すると、これらのアクションが自動的に実行されます (インスタンスを削除する場合を除く。この場合はユーザーが実行する必要があります)。

次の例では、ユーザーが [Your VPCs] ページで VPC を表示および作成し、VPC ウィザードの最初のオプション (1 つのパブリックサブネットを持つ VPC) で作成された VPC を削除することができます。この VPC には、カスタムルートテーブルに関連付けられた 1 つのサブネットと、それにアタッチされたインターネットゲートウェイがあります。コンソールを使用して VPC とそのコンポーネントを削除するには、いくつかの ec2:Describe* アクションを使用するアクセス権限をユーザーに付与し、この VPC に依存している他のリソースがあるかどうかをコンソールで確認できるようにします。また、サブネットからルートテーブルの関連付けを解除し、VPC からインターネットゲートウェイをデタッチして、これらの両方のリソースを削除するアクセス権限をユーザーに付与する必要があります。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeInternetGateways", "ec2:DescribeSubnets", "ec2:DescribeDhcpOptions", "ec2:DescribeInstances", "ec2:DescribeVpcAttribute", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces", "ec2:DescribeAddresses", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeSecurityGroups", "ec2:CreateVpc", "ec2:DeleteVpc", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:DisassociateRouteTable", "ec2:DeleteSubnet", "ec2:DeleteRouteTable" ], "Resource": "*" } ] }

いずれの ec2:Describe* API アクションにもリソースレベルのアクセス権限を適用することはできませんが、一部の ec2:Delete* アクションにリソースレベルのアクセス権限を適用して、ユーザーが削除できるリソースを制御することができます。

たとえば、次のポリシーでは、Purpose=Test タグを持つルートテーブルとインターネットゲートウェイのみをユーザーが削除できるようにします。ユーザーは、このタグを持たない個別のルートテーブルやインターネットゲートウェイを削除することはできません。同様に、VPC コンソールを使用して、別のルートテーブルまたはインターネットゲートウェイに関連付けられた VPC を削除することもできません。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVpcs", "ec2:DescribeRouteTables", "ec2:DescribeVpnGateways", "ec2:DescribeInternetGateways", "ec2:DescribeSubnets", "ec2:DescribeDhcpOptions", "ec2:DescribeInstances", "ec2:DescribeVpcAttribute", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaces", "ec2:DescribeAddresses", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeSecurityGroups", "ec2:CreateVpc", "ec2:DeleteVpc", "ec2:DetachInternetGateway", "ec2:DisassociateRouteTable", "ec2:DeleteSubnet" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:DeleteInternetGateway", "Resource": "arn:aws:ec2:region:account:internet-gateway/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } }, { "Effect": "Allow", "Action": "ec2:DeleteRouteTable", "Resource": "arn:aws:ec2:region:account:route-table/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } } ] }

3.セキュリティグループの管理

Amazon VPC コンソールの [Security Gropus] ページでセキュリティグループを表示するには、ec2:DescribeSecurityGroups アクションを使用するアクセス許可がユーザーに必要です。[Create Security Group] ダイアログボックスを使用してセキュリティグループを作成するには、ec2:CreateSecurityGroup および ec2:DescribeVpcs アクションを使用するアクセス許可がユーザーに必要です。ec2:DescribeSecurityGroups アクションを使用するアクセス権限がユーザーにない場合でも、ダイアログボックスを使用してセキュリティグループを作成することができますが、グループが作成されなかったことを示すエラーが表示される可能性があります。

ユーザーは、[Create Security Group] ダイアログボックスでセキュリティグループの名前と説明を追加する必要がありますが、ec2:CreateTags アクションを使用するアクセス権限が付与されていない限り、[Name tag] フィールドに値を入力することはできません。ただし、正常にセキュリティグループを作成するために、このアクションは必要ありません。

次のポリシーでは、ユーザーはセキュリティグループを表示、作成でき、vpc-1a2b3c4d に関連付けられたセキュリティグループにインバウンドルールとアウトバウンドルールの両方を追加、削除できます。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:CreateSecurityGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DeleteSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress" ], "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition":{ "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:*:*:vpc/vpc-1a2b3c4d" } } } ] }

4.VPC ピアリング接続の作成

Amazon VPC コンソールへの VPC ピア接続を表示するには、ec2:DescribePeeringConnections アクションを使用するアクセス許可がユーザーに必要です。[Create VPC Peering Connection] ダイアログボックスを使用するには、ec2:DescribeVpcs アクションを使用するアクセス許可がユーザーに必要です。これにより、ユーザーは VPC を表示、選択することができます。この操作なしに、ダイアログボックスを読み込むことはできません。ec2:DescribeVpcPeeringConnections を除くすべての ec2:*PeeringConnection アクションに、リソースレベルのアクセス権限を適用できます。

次のポリシーでは、ユーザーが VPC ピアリング接続を表示し、[Create VPC Peering Connection] ダイアログボックスで、特定のリクエスト元の VPC (vpc-1a2b3c4d) のみを使用して VPC ピアリング接続を作成できます。ユーザーが別のリクエスト元の VPC を使用して VPC ピア接続を作成しようとすると、リクエストは失敗します。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:DescribeVpcPeeringConnections", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect":"Allow", "Action": "ec2:CreateVpcPeeringConnection", "Resource": [ "arn:aws:ec2:*:*:vpc/vpc-1a2b3c4d", "arn:aws:ec2:*:*:vpc-peering-connection/*" ] } ] }

VPC ピア接続を操作するための IAM ポリシーの記述に関するその他の例については、「7.VPC ピアリング接続の作成と管理」を参照してください。