Amazon Kinesis Data Streams
開発者ガイド

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

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 を使用してアプリケーションの状態情報を追跡し、CloudWatch を使用してユーザーに代わって KCL メトリクスを CloudWatch に送信するためです。KCL の詳細については、「Kinesis Client Library 1.x を使用したコンシューマーの開発」を参照してください。

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

IAM および Amazon DynamoDB の詳細については、Amazon DynamoDB 開発者ガイドIAM を使用した Amazon DynamoDB リソースへのアクセスの制御に関する説明を参照してください。

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: ユーザーがストリームからデータを取得できるようにする

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

{ "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/*" ] } ] }