Amazon Kinesis Data Streams および Amazon DynamoDB の IAM ポリシーを使用する
Amazon DynamoDB 用 Amazon Kinesis Data Streams を初めて有効にすると、DynamoDB は AWS Identity and Access Management (IAM) サービスにリンクされたロールを自動的に作成します。このロール AWSServiceRoleForDynamoDBKinesisDataStreamsReplication
を使用すると、DynamoDB はユーザーに代わって Kinesis Data Streams への項目レベルの変更のレプリケーションを管理できます。このサービスにリンクされたロールは削除しないでください。
サービスリンクロールの詳細については、「IAM ユーザーガイド」の「サービスリンクロールの使用」を参照してください。
注記
DynamoDB は、IAM ポリシーのタグベースの条件をサポートしていません。
Amazon DynamoDB 用 Amazon Kinesis Data Streams を有効にするには、テーブルに対する以下の許可が必要です。
-
dynamodb:EnableKinesisStreamingDestination
-
kinesis:ListStreams
-
kinesis:PutRecords
-
kinesis:DescribeStream
特定の DynamoDB テーブルに対する Amazon DynamoDB 用 Amazon Kinesis Data Streams を記述するには、テーブルに対する以下の許可が必要です。
-
dynamodb:DescribeKinesisStreamingDestination
-
kinesis:DescribeStreamSummary
-
kinesis:DescribeStream
Amazon DynamoDB 用 Amazon Kinesis Data Streams を無効にするには、テーブルに対する以下の許可が必要です。
-
dynamodb:DisableKinesisStreamingDestination
Amazon DynamoDB 用 Amazon Kinesis Data Streams を更新にするには、テーブルに対する以下の許可が必要です。
-
dynamodb:UpdateKinesisStreamingDestination
以下の例は、IAM ポリシーを使用して Amazon DynamoDB 用 Amazon Kinesis Data Streams の許可を付与する方法を示しています。
例: Amazon DynamoDB 用 Amazon Kinesis Data Streams を有効にする
以下の IAM ポリシーは、Music
テーブルに対して Amazon DynamoDB 用 Amazon Kinesis Data Streams を有効にする権限を付与します。Music
テーブルに対して DynamoDB 用 Kinesis Data Streams を無効化、更新、記述する権限は付与されません。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/kinesisreplication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBKinesisDataStreamsReplication", "Condition": {"StringLike": {"iam:AWSServiceName": "kinesisreplication.dynamodb.amazonaws.com"}} }, { "Effect": "Allow", "Action": [ "dynamodb:EnableKinesisStreamingDestination" ], "Resource": "arn:aws:dynamodb:us-west-2:12345678901:table/Music" } ] }
例: Amazon DynamoDB 用 Amazon Kinesis Data Streams を更新する
以下の IAM ポリシーは、Music
テーブルに対して Amazon DynamoDB 用 Amazon Kinesis Data Streams を更新する権限を付与します。Music
テーブルに対して DynamoDB 用 Kinesis Data Streams を有効化、無効化、記述する権限は付与されません。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateKinesisStreamingDestination" ], "Resource": "arn:aws:dynamodb:us-west-2:12345678901:table/Music" } ] }
例: Amazon DynamoDB 用 Amazon Kinesis Data Streams を無効にする
以下の IAM ポリシーは、Music
テーブルに対して Amazon DynamoDB 用 Amazon Kinesis Data Streams を無効にする権限を付与します。Music
テーブルに対して Amazon DynamoDB 用 Amazon Kinesis Data Streams を有効化、更新、記述する権限は付与されません。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DisableKinesisStreamingDestination" ], "Resource": "arn:aws:dynamodb:us-west-2:12345678901:table/Music" } ] }
例: リソースに基づいて、選択的に Amazon DynamoDB 用 Amazon Kinesis Data Streams に許可を適用する
以下の IAM ポリシーは、Music
テーブルの Amazon DynamoDB 用 Amazon Kinesis Data Streams を有効にするか、記述する許可を付与しますが、Orders
テーブルの Amazon DynamoDB 用 Amazon Kinesis Data Streams を無効にする許可は拒否します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:EnableKinesisStreamingDestination", "dynamodb:DescribeKinesisStreamingDestination" ], "Resource": "arn:aws:dynamodb:us-west-2:12345678901:table/Music" }, { "Effect": "Deny", "Action": [ "dynamodb:DisableKinesisStreamingDestination" ], "Resource": "arn:aws:dynamodb:us-west-2:12345678901:table/Orders" } ] }
DynamoDB 用 Kinesis Data Streams に対するサービスにリンクされたロールの使用
Amazon DynamoDB 用 Amazon Kinesis Data Streams は、AWS Identity and Access Management (IAM) のサービスにリンクされたロールを使用します。サービスにリンクされたロールは、一意のタイプの IAM ロールで、DynamoDB 用 Kinesis Data Streams に直接リンクされます。サービスにリンクされたロールは、DynamoDB 用 Kinesis Data Streams によって事前定義されており、お客様の代わりにサービスから他の AWS のサービスを呼び出す必要のあるアクセス許可がすべて含まれています。
サービスにリンクされたロールを使用することで、必要なアクセス権限を手動で追加する必要がなくなるため、DynamoDB 用 Kinesis Data Streams の設定が簡単になります。DynamoDB 用 Kinesis Data Streams は、サービスにリンクされたロールの許可を定義します。特に定義されている場合を除き、DynamoDB 用 Kinesis Data Streams のみがそのロールを引き受けることができます。定義される許可は、信頼ポリシーと許可ポリシーに含まれており、その許可ポリシーを他の IAM エンティティにアタッチすることはできません。
サービスリンクロールをサポートする他のサービスについては、IAM と連携する AWS のサービスを参照して、[サービスにリンクされたロール] 列が [はい] になっているサービスを探してください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[はい] リンクを選択します。
DynamoDB 用 Kinesis Data Streams に対するサービスにリンクされたロールの許可
DynamoDB 用 Kinesis Data Streams では、AWSServiceRoleForDynamoDBKinesisDataStreamsReplication という名前の、サービスにリンクされたロールを使用します。サービスにリンクされたロールの目的は、Amazon DynamoDB がお客様に代わって Kinesis Data Streams に対する項目レベルの変更のレプリケーションを管理できるように許可することです。
AWSServiceRoleForDynamoDBKinesisDataStreamsReplication
サービスリンクロールは、ロールの引き受けについて以下のサービスを信頼します。
-
kinesisreplication.dynamodb.amazonaws.com
ロールのアクセス許可ポリシーは、指定したリソースに対して以下のアクションを完了することを DynamoDB 用 Kinesis Data Streams に許可します。
-
アクション:
Kinesis stream
上でPut records and describe
-
アクション:
AWS KMS
でGenerate data keys
、ユーザーが生成した AWS KMS キーを使用して暗号化された Kinesis ストリームにデータを格納します。
ポリシードキュメントの正確な内容については、「DynamoDBKinesisReplicationServiceRolePolicy
サービスリンクロールの作成、編集、削除を IAM エンティティ (ユーザー、グループ、ロールなど) に許可するには、アクセス許可を設定する必要があります。詳細については、「IAM ユーザーガイド」の「サービスリンクロールの許可」を参照してください。
DynamoDB 用 Kinesis Data Streams のサービスにリンクされたロールの作成
サービスにリンクされたロールを手動で作成する必要はありません。AWS Management Console、AWS CLI または AWS API で DynamoDB 用 Kinesis Data Streams を有効にすると、DynamoDB 用 Kinesis Data Streams がサービスにリンクされたロールを作成します。
このサービスにリンクされたロールを削除した後で再度作成する必要が生じた場合は、同じ方法でアカウントにロールを再作成できます。DynamoDB 用 Kinesis Data Streams を有効にすると、DynamoDB 用 Kinesis Data Streams がサービスにリンクされたロールを再作成します。
DynamoDB 用 Kinesis Data Streams のサービスにリンクされたロールの編集
DynamoDB 用 Kinesis Data Streams では、AWSServiceRoleForDynamoDBKinesisDataStreamsReplication
サービスにリンクされたロールを編集することはできません。サービスにリンクされたロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、IAM を使用したロールの説明の編集はできます。詳細については、IAM ユーザーガイドの「サービスにリンクされたロールの編集」を参照してください。
DynamoDB 用 Kinesis Data Streams のサービスにリンクされたロールの削除
サービスにリンクされたロールは、IAM コンソール、AWS CLI 、または AWS API を使用して手動で削除することもできます。そのためにはまず、サービスにリンクされたロールのリソースをクリーンアップする必要があります。その後で、手動で削除できます。
注記
リソースを削除する際に、DynamoDB 用 Kinesis Data Streams サービスでロールが使用されている場合、削除は失敗することがあります。失敗した場合は、数分待ってから再度オペレーションを実行してください。
IAM を使用してサービスリンクロールを手動で削除するには
IAM コンソール、AWS CLI、または AWS API を使用して、AWSServiceRoleForDynamoDBKinesisDataStreamsReplication
サービスリンクロールを削除します。詳細については、IAM ユーザーガイドの「サービスにリンクされたロールの削除」を参照してください。