

# VPC ピアリングの Identity and Access Management
<a name="security-iam"></a>

デフォルトでは、 ユーザーは VPC ピア接続を作成または変更することはできません。VPC ピアリングリソースへのアクセス許可を付与するには、IAM アイデンティティ (ロールなど) に IAM ポリシーをアタッチします。

**Topics**
+ [VPC ピアリング接続を作成する](#vpc-peering-iam-create)
+ [VPC ピアリング接続承認する](#vpc-peering-iam-accept)
+ [VPC ピアリング接続を削除する](#vpc-peering-iam-delete)
+ [特定のアカウントでの操作](#vpc-peering-iam-account)
+ [コンソールでの VPC ピアリング接続の管理](#peering-connection-console-iam)

Amazon VPC アクションのリストと、各アクションでサポートされているリソースと条件キーについては、「*サービス認可リファレンス*」の「[Amazon EC2 のアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html)」を参照してください。

## 例: VPC ピアリング接続の作成
<a name="vpc-peering-iam-create"></a>

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

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

------
#### [ JSON ]

****  

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

------

次のポリシーでは、特定の AWS アカウントのユーザーに、特定のリージョン内の任意の VPC を使用して VPC ピアリング接続を作成するアクセス許可を付与しています。ただし、ピアリング接続を受け入れる VPC が指定されたアカウントの特定の VPC である場合に限ります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVpcPeeringConnection",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc/*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateVpcPeeringConnection",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc-peering-connection/*",
            "Condition": {
                "ArnEquals": {
                    "ec2:AccepterVpc": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:vpc/{{vpc-1234567890abcdef0}}"
                }
            }
        }
    ]
}
```

------

## 例: VPC ピアリング接続の承認
<a name="vpc-peering-iam-accept"></a>

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action": "ec2:AcceptVpcPeeringConnection",
      "Resource": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc-peering-connection/*",
      "Condition": {
        "ArnEquals": {
          "ec2:RequesterVpc": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:vpc/*"
        }
      }
    },
    {
      "Effect":"Allow",
      "Action": "ec2:AcceptVpcPeeringConnection",
      "Resource": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc/*"
    }
  ]
}
```

------

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

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action": "ec2:AcceptVpcPeeringConnection",
      "Resource": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc-peering-connection/*"
    },
    {
      "Effect": "Allow",
      "Action": "ec2:AcceptVpcPeeringConnection",
      "Resource": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc/*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/{{Purpose}}": "{{Peering}}"
        }
      }
    }
  ]
}
```

------

## 例: VPC ピアリング接続の削除
<a name="vpc-peering-iam-delete"></a>

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

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:DeleteVpcPeeringConnection",
            "Resource": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc-peering-connection/*",
            "Condition": {
                "ArnNotEquals": {
                    "ec2:AccepterVpc": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc/{{vpc-1234567890abcdef0}}",
                    "ec2:RequesterVpc": "arn:aws:ec2:{{us-east-1}}:{{123456789012}}:vpc/{{vpc-0abcdef1234567890}}"
                }
            }
        }
    ]
}
```

------

## 例: 特定のアカウントでの操作
<a name="vpc-peering-iam-account"></a>

次のポリシーでは、特定のアカウント内で VPC ピアリング接続を操作するアクセス許可をユーザーに付与しています。ユーザーは、VPC ピアリング接続の表示、作成、受け入れ、拒否、削除を実行できます (それらの接続がすべて AWS アカウント内の接続である場合)。

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

2 番目のステートメントでは、VPC ピアリング接続を作成し、必要であれば、特定のアカウント内のすべての VPC へアクセスする許可をユーザーに付与しています。

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

------
#### [ JSON ]

****  

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

------

## 例: コンソールを使用した VPC ピアリング接続の管理
<a name="peering-connection-console-iam"></a>

Amazon VPC コンソールへの VPC ピアリング接続を表示するには、ユーザーに `ec2:DescribeVpcPeeringConnections` アクションを使用するアクセス権限が必要です。[**Create Peering Connection (ピアリング接続の作成)**] ページを使用するには、ユーザーは `ec2:DescribeVpcs` アクションを使用する許可が必要です。これにより、VPC を表示および選択するためのアクセス許可が付与されます。`ec2:DescribeVpcPeeringConnections` を除くすべての `ec2:*PeeringConnection` アクションに、リソースレベルのアクセス権限を適用できます。

次のポリシーでは、VPC ピアリング接続を表示し、**[Create VPC Peering Connection]** (VPC ピアリング接続の作成) ダイアログボックスで、特定のリクエスタの VPC のみを使用して VPC ピアリング接続を作成するアクセス許可がユーザーに付与されます。ユーザーが別のリクエスト元の VPC を使用して VPC ピア接続を作成しようとすると、リクエストは失敗します。

------
#### [ JSON ]

****  

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

------