

# グローバルテーブルで IAM を使用します
<a name="gt_IAM"></a>

**重要**  
 このドキュメントはグローバルテーブルのバージョン 2017.11.29 (レガシー) を対象としています。新しいグローバルテーブルでは使用しないでください。可能な限り、[グローバルテーブルバージョン 2019.11.21 (現行)](GlobalTables.md) を使用してください。2017.11.29 (レガシー) よりも柔軟性と効率が高く、消費する書き込みキャパシティが少ないためです。  
ご使用のバージョンを確認するには、「[グローバルテーブルのバージョンを確認する](V2globaltables_versions.md#globaltables.DetermineVersion)」を参照してください。既存のグローバルテーブルを 2017.11.29 (レガシー) からバージョン 2019.11.21 (現行) に更新する方法については、「[DynamoDB グローバルテーブルのバージョン](V2globaltables_versions.md)」を参照してください。

グローバルテーブルを初めて作成する場合は、Amazon DynamoDB によって、AWS Identity and Access Management (IAM) サービスにリンクされたロールが自動的に作成されます。このロールの名前は [https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/aws-service-role/DynamoDBReplicationServiceRolePolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/aws-service-role/DynamoDBReplicationServiceRolePolicy) です。このロールを使用して、お客様に代わって DynamoDB でグローバルテーブルのクロスリージョンレプリケーションを管理できます。このサービスにリンクされたロールは削除しないでください。削除すると、グローバルテーブルはすべて機能しなくなります。

サービスリンクロールの詳細については、「*IAM ユーザーガイド*」の「[サービスリンクロールの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)」を参照してください。

DynamoDB でグローバルテーブルを作成および管理するには、次のそれぞれにアクセスするための `dynamodb:CreateGlobalTable` 許可が必要です。
+ 追加するレプリカテーブル。
+ すでにグローバルテーブルの一部になっている既存の各レプリカ。
+ グローバルテーブル自体。

DynamoDB のグローバルテーブルの設定 (`UpdateGlobalTableSettings`) を更新するには、`dynamodb:UpdateGlobalTable`、`dynamodb:DescribeLimits`、`application-autoscaling:DeleteScalingPolicy` および `application-autoscaling:DeregisterScalableTarget` の許可が必要です。

 `application-autoscaling:DeleteScalingPolicy` および `application-autoscaling:DeregisterScalableTarget` 許可は、既存のスケーリングポリシーを更新するときに必要です。これは、新しいポリシーをテーブルまたはセカンダリインデックスに添付する前に、グローバルテーブルサービスが古いスケーリングポリシーを削除できるようにするためです。

IAM ポリシーを使用して 1 つのレプリカテーブルへのアクセスを管理する場合は、そのグローバルテーブル内の他のすべてのレプリカに同じポリシーを適用する必要があります。この方法により、すべてのレプリカテーブルで一貫した許可モデルを維持できます。

グローバルテーブル内のすべてのレプリカで同じ IAM ポリシーを使用することにより、グローバルテーブルデータに対する意図しない読み込みおよび書き込みアクセスを許可しないようにすることもできます。たとえば、グローバルテーブル内の 1 つのレプリカにのみアクセスできるユーザーについて考えてみます。そのユーザーがこのレプリカに書き込むことができる場合、DynamoDB はその書き込みを他のすべてのレプリカテーブルに伝播します。実際には、ユーザーは、グローバルテーブル内の他のすべてのレプリカに (間接的に) 書き込むことができます。このシナリオは、すべてのレプリカテーブルで一貫した IAM ポリシーを使用することで回避できます。

## 例: CreateGlobalTable アクションを許可します
<a name="access-policy-gt-example1"></a>

グローバルテーブルにレプリカを追加するには、その前にグローバルテーブルとその各レプリカテーブルに対して `dynamodb:CreateGlobalTable` 許可を付与します。

以下の IAM ポリシーは、`CreateGlobalTable` アクションをすべてのテーブルに適用する許可を付与します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["dynamodb:CreateGlobalTable"],
            "Resource": "*"
        }
    ]
}
```

------

## 例: UpdateGlobalTable、DescribeLimits、application-autoscaling:DeleteScalingPolicy、および application-autoscaling:DeregisterScalableTarget アクションを許可します
<a name="access-policy-gt-example2"></a>

DynamoDB のグローバルテーブルの設定 (`UpdateGlobalTableSettings`) を更新するには、`dynamodb:UpdateGlobalTable`、`dynamodb:DescribeLimits`、`application-autoscaling:DeleteScalingPolicy` および `application-autoscaling:DeregisterScalableTarget` の許可が必要です。

以下の IAM ポリシーは、`UpdateGlobalTableSettings` アクションをすべてのテーブルに適用する許可を付与します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateGlobalTable",
                "dynamodb:DescribeLimits",
                "application-autoscaling:DeleteScalingPolicy",
                "application-autoscaling:DeregisterScalableTarget"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 例: 特定のリージョンでのみレプリカが許可されている特定のグローバルテーブル名に対して CreateGlobalTable アクションを許可します
<a name="access-policy-gt-example3"></a>

以下の IAM ポリシーは、`CreateGlobalTable` アクションが 2 つのリージョンにレプリカを持つ `Customers` という名前のグローバルテーブルを作成できるようにする許可を付与します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "dynamodb:CreateGlobalTable",
            "Resource": [
                "arn:aws:dynamodb::123456789012:global-table/Customers",
                "arn:aws:dynamodb:us-east-1:123456789012:table/Customers",
                "arn:aws:dynamodb:us-west-1:123456789012:table/Customers"
            ]
        }
    ]
}
```

------