Amazon Kinesis Data Streams および Amazon DynamoDB の IAM ポリシーを使用する - Amazon DynamoDB

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 KMSGenerate 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 ユーザーガイドの「サービスにリンクされたロールの削除」を参照してください。