Amazon Kinesis Data Streams
開発者ガイド

IAM により Amazon Kinesis Data Streams リソースへのアクセスを制御する

AWS Identity and Access Management (IAM) を使って以下を行えます。

  • お客様の AWS アカウントでユーザーとグループを作成する

  • お客様の AWS アカウントでユーザーごとに固有のセキュリティ認証情報を割り当てる

  • AWS のリソースを使用してタスクを実行するために各ユーザーのアクセス許可を制御する

  • 別の AWS アカウントのユーザーがお客様の AWS のリソースを共有できるようにする

  • AWS アカウントにロールを作成し、それを行えるユーザーまたはサービスを定義する

  • お客様の企業用の既存のアイデンティティを使用し、AWS のリソースを使用してタスクを実行するようにアクセス許可を与える

Kinesis Data Streams と組み合わせて IAM を使用することにより、組織のユーザーが特定の Kinesis Data Streams API アクションを使用してタスクを実行できるかどうか、また、特定の AWS リソースを使用できるかどうかを制御できます。

Kinesis Client Library(KCL)ライブラリを使用してアプリケーションを開発する場合、ポリシーに Amazon DynamoDB と Amazon CloudWatch へのアクセス許可を含める必要があります。これは、KCL がアプリケーションの状態情報を追跡するために DynamoDB を使用し、ユーザーに代わって KCL メトリクスを CloudWatch に送信するために CloudWatch を使用するからです。KCL の詳細については、「Kinesis Client Library 1.x を使用したコンシューマーの開発」を参照してください。

IAM の詳細については、以下を参照してください。

IAM および Amazon DynamoDB の詳細については、『Amazon DynamoDB 開発者ガイド』の「Using IAM to Control Access to Amazon DynamoDB Resources」を参照してください。

IAM と Amazon CloudWatch の詳細については、『Amazon CloudWatch ユーザーガイド』の「AWS アカウントへのユーザーアクセスのコントロール」を参照してください。

ポリシー構文

IAM ポリシーは 1 つ以上のステートメントで構成される JSON ドキュメントです。各ステートメントは次のように構成されます。

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

ステートメントはさまざまなエレメントで構成されます。

  • [Effect]: effect は、Allow または Deny にすることができます。デフォルトでは、IAM ユーザーはリソースおよび API アクションを使用するアクセス許可がないため、リクエストはすべて拒否されます。明示的な許可はデフォルトに優先します。明示的な拒否はすべての許可に優先します。

  • [Action]: action は、アクセス許可を付与または拒否する対象とする、特定の API アクションです。

  • [Resource]: アクションによって影響を及ぼされるリソースです。ステートメント内でリソースを指定するには、Amazon リソースネーム(ARN)を使用する必要があります。

  • [Condition]: condition はオプションです。ポリシーの発効条件を指定するために使用します。

IAM のポリシーを作成および管理するときは、IAM Policy GeneratorIAM Policy Simulator を使用することもできます。

Kinesis Data Streams のアクション

IAM ポリシーステートメントで、IAM をサポートするすべてのサービスから任意の API アクションを指定できます。Kinesis Data Streams の場合、API アクション kinesis: の名前に次のプレフィックスを使用します。例: kinesis:CreateStreamkinesis:ListStreams、および kinesis:DescribeStream

単一のステートメントに複数のアクションを指定するには、次のようにコンマで区切ります。

"Action": ["kinesis:action1", "kinesis:action2"]

ワイルドカードを使用して複数のアクションを指定することもできます。たとえば、「Get」という単語で始まる名前のすべてのアクションは、以下のように指定できます。

"Action": "kinesis:Get*"

すべての Kinesis Data Streams オペレーションを指定するには、次のように * ワイルドカードを使用します。

"Action": "kinesis:*"

Kinesis Data Streams API アクションの完全なリストについては、『Amazon Kinesis API Reference』を参照してください。

Kinesis Data Streams 用の Amazon リソースネーム(ARN)

各 IAM ポリシーステートメントは、ARN を使用して指定したリソースに適用されます。

Kinesis data stream には、次の ARN リソースフォーマットを使用します。

arn:aws:kinesis:region:account-id:stream/stream-name

(例:

"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream

Kinesis Data Streams のポリシー例

次のポリシーの例は、Kinesis data stream へのユーザーアクセスの制御方法について説明しています。

例 1: ユーザーがストリームからデータを取得できるようにする

このポリシーでは、ユーザーまたはグループが、任意のシステム上の指定したストリームおよび ListStreams に対して DescribeStreamGetShardIterator、および GetRecords のオペレーションを実行できます。 このポリシーは、特定のストリームからデータを取得できる必要があるユーザーに適用できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:Get*", "kinesis:DescribeStream" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] }, { "Effect": "Allow", "Action": [ "kinesis:ListStreams" ], "Resource": [ "*" ] } ] }

例 2: ユーザーがアカウントの任意のストリームにデータを追加できるようにする

このポリシーでは、ユーザーまたはグループが、アカウントのストリームに対して PutRecord オペレーションを使用できます。このポリシーは、アカウントのすべてのストリームにデータレコードを追加できる必要のあるユーザーに適用できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecord" ], "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/*" ] } ] }

例 3: 特定のストリームに対して任意の Kinesis Data Streams アクションを実行できるようにする

このポリシーでは、ユーザーまたはグループが、指定したストリームに対して任意の Kinesis Data Streams オペレーションを実行できます。このポリシーは、特定のストリームに対して管理上の制御が必要なユーザーに適用できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }

例 4: 任意のストリームに対して任意の Kinesis Data Streams アクションを実行できるようにする

このポリシーでは、ユーザーまたはグループが、アカウントの任意のストリームに対して任意の Kinesis Data Streams オペレーションを実行できます。このポリシーは、すべてのストリームへのフルアクセスを許可するため、管理者にのみ適用する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:*", "Resource": [ "arn:aws:kinesis:*:111122223333:stream/*" ] } ] }