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 Generator と IAM Policy Simulator を使用することもできます。
Kinesis Data Streams のアクション
IAM ポリシーステートメントで、IAM をサポートするすべてのサービスから任意の API アクションを指定できます。Kinesis Data Streams の場合、API
アクションの名前にプレフィックスとして kinesis:
を使用します。例: kinesis:CreateStream
、kinesis: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
に対して GetShardIterator
、GetRecords
、および 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/*" ] } ] }