翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
を使用した Amazon Kinesis Data Streams リソースへのアクセスの制御 IAM
AWS Identity and Access Management (IAM) では、次のことを実行できます。
-
AWS アカウントでユーザーとグループを作成する
-
AWS アカウント内の各ユーザーに一意のセキュリティ認証情報を割り当てる
-
AWS リソースを使用してタスクを実行するための各ユーザーのアクセス許可を制御する
-
別の AWS アカウントのユーザーに AWS リソースの共有を許可する
-
AWS アカウントのロールを作成し、引き受けることができるユーザーまたはサービスを定義する
-
エンタープライズの既存の ID を使用して、 AWS リソースを使用してタスクを実行するためのアクセス許可を付与する
を Kinesis Data Streams IAMで使用すると、組織内のユーザーが特定の Kinesis Data Streams APIアクションを使用してタスクを実行できるかどうか、および特定の AWS リソースを使用できるかどうかを制御できます。
Kinesis Client Library (KCL) を使用してアプリケーションを開発する場合、ポリシーには Amazon DynamoDB と Amazon のアクセス許可が含まれている必要があります CloudWatch。 KCLは DynamoDB を使用してアプリケーションの状態情報を追跡し、ユーザーに代わって CloudWatch にKCLメトリクス CloudWatchを送信します。の詳細については、KCL「」を参照してください1.x KCL コンシューマーの開発。
の詳細についてはIAM、以下を参照してください。
IAM と Amazon DynamoDB の詳細については、「Amazon DynamoDB デベロッパーガイド」の「 IAMを使用して Amazon DynamoDB リソースへのアクセスを制御する」を参照してください。 DynamoDB
IAM および Amazon の詳細については CloudWatch、「Amazon ユーザーガイド」の「 AWS アカウントへのユーザーアクセスの制御 CloudWatch 」を参照してください。
内容
ポリシー構文
IAM ポリシーは、1 つ以上のステートメントで構成されるJSONドキュメントです。各ステートメントは次のように構成されます。
{
"Statement":[{
"Effect":"effect
",
"Action":"action
",
"Resource":"arn
",
"Condition":{
"condition
":{
"key
":"value
"
}
}
}
]
}
ステートメントはさまざまなエレメントで構成されています。
-
Effect: effect は、
Allow
またはDeny
にすることができます。デフォルトでは、IAMユーザーにはリソースとAPIアクションを使用するアクセス許可がないため、すべてのリクエストが拒否されます。明示的な許可はデフォルトに上書きされます。明示的な拒否はすべての許可に上書きされます。 -
アクション : アクションは、アクセス許可を付与または拒否する特定のAPIアクションです。
-
Resource] (リソース): アクションによって影響を及ぼされるリソースです。ステートメントでリソースを指定するには、その Amazon リソースネーム () を使用する必要がありますARN。
-
Condition: condition はオプションです。これらは、ポリシーがいつ有効になるかを制御するために使用できます。
IAM ポリシーを作成および管理するときに、IAMPolicy Generator と IAM Policy Simulator を使用することをお勧めします。
Kinesis Data Streams のアクション
IAM ポリシーステートメントでは、 をサポートする任意のサービスから任意のAPIアクションを指定できますIAM。Kinesis Data Streams では、APIアクションの名前にプレフィックス を使用しますkinesis:
。例えば、kinesis:CreateStream
、kinesis:ListStreams
、および kinesis:DescribeStreamSummary
のようになります。
単一のステートメントで複数のアクションを指定するには、次のようにカンマで区切ります。
"Action": ["kinesis:action1", "kinesis:action2"]
ワイルドカードを使用して複数のアクションを指定することもできます。たとえば、Getという単語で始まる名前のすべてのアクションは、以下のように指定できます。
"Action": "kinesis:Get*"
すべてのKinesis Data Streams オペレーションを指定するには、次のように * ワイルドカードを使用します。
"Action": "kinesis:*"
Kinesis Data Streams APIアクションの完全なリストについては、Amazon Kinesis APIリファレンス」を参照してください。
Kinesis Data Streams の Amazon リソースネーム (ARNs)
各IAMポリシーステートメントは、 を使用して指定したリソースに適用されますARNs。
Kinesis データストリームには、次のARNリソース形式を使用します。
arn:aws:kinesis:region
:account-id
:stream/stream-name
例:
"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream
Kinesis Data Streams のポリシー例
次のポリシー例は、Kinesis Data Streams へのユーザーアクセスの制御方法について説明しています。
データストリームを別のアカウントと共有する
注記
Kinesis Producer Library は現在、データストリームへの書き込みARN時にストリームの指定をサポートしていません。クロスアカウントデータストリームに書き込む AWS SDK場合は、 を使用します。
リソースベースのポリシーをデータストリームにアタッチして、別のアカウント、IAMユーザー、またはIAMロールへのアクセスを許可します。リソースベースのポリシーは、データストリームなどのリソースにアタッチするJSONポリシードキュメントです。これらのポリシーでは、そのリソースに対して特定のアクションを実行する指定されたプリンシパルアクセス許可を付与し、このアクセス許可が適用される条件を定義します。ポリシーには複数のステートメントを含めることができます。リソースベースのポリシーで、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または AWS サービスを含めることができます。ポリシーは、Kinesis Data Streams コンソール、APIまたは で設定できますSDK。
拡張ファンアウトなどの登録済みコンシューマーへのアクセスを共有するには、データストリームARNとコンシューマーの両方にポリシーが必要であることに注意してくださいARN。
クロスアカウントアクセスを有効にする
クロスアカウントアクセスを有効にするには、リソースベースのポリシーのプリンシパルとして、アカウント全体または別のアカウントのIAMエンティティを指定できます。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが別々の AWS アカウントにある場合は、アイデンティティベースのポリシーを使用して、プリンシパルにリソースへのアクセスを許可する必要があります。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、ID ベースのポリシーをさらに付与する必要はありません。
クロスアカウントアクセスにリソースベースのポリシーを使用する方法の詳細については、「」の「クロスアカウントリソースアクセスIAM」を参照してください。
データストリーム管理者は、 AWS Identity and Access Management ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。JSON ポリシーの Action
要素は、ポリシーでアクセスを許可または拒否するために使用できるアクションを記述します。ポリシーアクションの名前は通常、関連する AWS APIオペレーションと同じです。
共有可能な Kinesis Data Streams のアクション:
アクション | アクセスのレベル |
---|---|
DescribeStreamConsumer | コンシューマー |
DescribeStreamSummary | データストリーム |
GetRecords | データストリーム |
GetShardIterator | データストリーム |
ListShards | データストリーム |
PutRecord | データストリーム |
PutRecords | データストリーム |
SubscribeToShard | コンシューマー |
リソースベースのポリシーを使用して、データストリームまたは登録済みコンシューマーにクロスアカウントアクセスを許可する例を以下に示します。
クロスアカウントアクションを実行するには、データストリームアクセスARN用のストリームと、登録されたコンシューマーアクセスARN用のコンシューマーを指定する必要があります。
Kinesis データストリームのリソースベースのポリシーの例
登録済みコンシューマーの共有には、必要なアクションを実行するために、データストリームポリシーとコンシューマーポリシーの両方が必要になります。
注記
次に示すのは、Principal
の有効な値の例です。
{"AWS": "123456789012"}
IAM ユーザー –
{"AWS": "arn:aws:iam::123456789012:user/user-name"}
IAM ロール –
{"AWS":["arn:aws:iam::123456789012:role/role-name"]}
複数のプリンシパル (アカウント、ユーザー、ロールの組み合わせが可能) —
{"AWS":["123456789012", "123456789013", "arn:aws:iam::123456789012:user/user-name"]}
データストリームのポリシーをプログラムで管理する
以外では AWS Management Console、Kinesis Data Streams には、データストリームポリシーを管理するAPISための 3 つの機能があります。
PutResourePolicy
を使用して、データストリームまたはコンシューマーのポリシーをアタッチまたは上書きします。GetResourcePolicy
を使用して、指定したデータストリームまたはコンシューマーのポリシーを確認し、表示します。DeleteResourcePolicy
を使用して、指定したデータストリームまたはコンシューマーのポリシーを削除します。
ポリシー制限
Kinesis Data Streams リソースポリシーには次の制限があります。
-
ワイルドカード (*) は、データストリームまたは登録されたコンシューマーに直接アタッチされたリソースポリシーを通じて広範なアクセスが付与されないようにするためにサポートされていません。さらに、以下のポリシーを注意深く調べて、広範なアクセスを許可していないことを確認します。
-
関連付けられた AWS プリンシパルにアタッチされたアイデンティティベースのポリシー (IAMロールなど)
-
関連付けられたリソースにアタッチされた AWS リソースベースのポリシー (キーなど AWS Key Management Service KMS)
-
AWS サービスプリンシパルは、混乱した代理 の可能性を防ぐためにプリンシパルではサポートされていません。
フェデレーションプリンシパルはサポートされていません。
正規ユーザーはIDsサポートされていません。
ポリシーのサイズは 20 KB までです。
暗号化されたデータへのアクセスを共有する
AWS マネージドKMSキーでデータストリームのサーバー側の暗号化を有効にしていて、リソースポリシーを介してアクセスを共有する場合は、カスタマーマネージドキー () の使用に切り替える必要がありますCMK。詳細については、「Kinesis Data Streams のサーバー側の暗号化とは」を参照してください。さらに、KMSクロスアカウント共有機能を使用してCMK、共有プリンシパルエンティティが にアクセスできるようにする必要があります。共有プリンシパルエンティティのIAMポリシーも必ず変更してください。詳細については、「他のアカウントのユーザーにKMSキー の使用を許可する」を参照してください。
別のアカウントの Kinesis Data Streams から読み取るように AWS Lambda 関数を設定する
別のアカウントの Kinesis Data Streams から読み取るように Lambda 関数を設定する方法の例については、「クロスアカウント AWS Lambda 関数とアクセスを共有する」を参照してください。