Amazon DynamoDB リソースへのアクセス許可管理の概要 - Amazon DynamoDB

Amazon DynamoDB リソースへのアクセス許可管理の概要

すべての AWS リソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、アクセス権限のポリシーによって管理されます。アカウント管理者は、アクセス許可ポリシーを IAM アイデンティティ (ユーザー、グループ、ロール)にアタッチできます。一部のサービス(AWS Lambda など) では、アクセス許可ポリシーをリソースにアタッチすることもできます。

注記

アカウント管理者 (または管理者ユーザー) は、管理者権限を持つユーザーです。詳細については、「IAM ユーザーガイド 」の「IAM のベストプラクティス」を参照してください。

アクセス権限を付与する場合、アクセス権限を取得するユーザー、取得するアクセス権限の対象となるリソース、およびそれらのリソースに対して許可される特定のアクションを決定します。

DynamoDB のリソースとオペレーション

DynamoDB では、プライマリリソースはテーブルです。DynamoDB では、追加のリソースタイプ、インデックス、およびストリーミングもサポートしています。ただし、既存の DynamoDB テーブルのコンテキストでのみ、インデックスやストリーミングを作成できます。これらはサブリソースと呼ばれます。

これらのリソースとサブリソースには、次の表に示すとおり、一意の Amazon リソースネーム (ARN) が関連付けられています。

リソースタイプ ARN 形式
arn:aws:dynamodb:region:account-id:table/table-name
索引 arn:aws:dynamodb:region:account-id:table/table-name/index/index-name
ストリーム arn:aws:dynamodb:region:account-id:table/table-name/stream/stream-label

DynamoDB では、DynamoDB リソースを操作する一連のオペレーションが用意されています。可能なオペレーションのリストについては、Amazon DynamoDB アクションを参照してください。

リソースの所有権を理解する

AWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。具体的には、リソース所有者は、リソースの作成リクエストを認証するプリンシパルエンティティ (AWS アカウント√ユーザー、IAM ユーザー、または IAM ロール) の AWS アカウントです。以下の例では、このしくみを示しています。

  • AWS アカウントのルートユーザーの認証情報を使用してテーブルを作成する場合、この AWS アカウントがリソースの所有者です (DynamoDB では、リソースはテーブルです)。

  • AWS アカウントで IAM ユーザーを作成し、そのユーザーにテーブルを作成する権限を付与すると、そのユーザーはテーブルを作成できます。ただし、ユーザーが属する AWS アカウントがテーブルリソースを所有します。

  • テーブルを作成するためのアクセス許可を持つ AWS アカウントに IAM ロールを作成する場合は、ロールを引き受けることのできるいずれのユーザーもテーブルを作成できます。テーブルリソースを所有しているのは、このロールが属する AWS アカウントです。

リソースへのアクセスの管理

アクセス許可ポリシーでは、誰が何にアクセスできるかを記述します。以下のセクションで、アクセス権限のポリシーを作成するために使用可能なオプションについて説明します。

注記

このセクションでは、DynamoDB コンテキストでの IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメンテーションについては、「IAM ユーザーガイド」の「IAM とは」を参照してください。IAM ポリシー構文の詳細と説明については、IAM ユーザーガイドAWS IAM ポリシーの参照を参照してください。

IAM アイデンティティにアタッチされているポリシーは、アイデンティティベースのポリシー (IAM ポリシー) と呼ばれます。リソースに添付されたポリシーは、[リソースベース]のポリシーと呼ばれます。DynamoDB では、アイデンティティベースのポリシー (IAM ポリシー) のみがサポートされます。

アイデンティティベースのポリシー (IAM ポリシー)

ポリシーを IAM アイデンティティにアタッチできます。例えば、次の操作を実行できます。

  • アカウントのユーザーまたはグループに許可ポリシーを添付する – テーブルなどの Amazon DynamoDB リソースを作成する許可を付与するために、ユーザーまたはユーザーが所属するグループに許可のポリシーを添付できます。

  • 許可ポリシーをロールにアタッチする (クロスアカウントの許可を付与) – アイデンティティベースのアクセス許可ポリシーを IAM ロールにアタッチして、クロスアカウントの許可を付与することができます。例えば、アカウント A の管理者は、次のように別の AWS アカウント (例えば、アカウント B) または AWS サービスにクロスアカウントアクセス許可を付与するロールを作成できます。

    1. アカウント A の管理者は、IAM ロールを作成して、アカウント A のリソースに許可を付与するロールに許可ポリシーをアタッチします。

    2. アカウント A の管理者は、アカウント B をそのロールを引き受けるプリンシパルとして識別するロールに、信頼ポリシーをアタッチします。

    3. アカウント B の管理者は、アカウント B のユーザーにロールを引き受ける権限を委任できるようになります。これにより、アカウント B のユーザーはアカウント A のリソースの作成とアクセスができます。ロールを引き受ける権限を AWS のサービスに付与すると、信頼ポリシー内のプリンシパルも AWS のサービスのプリンシパルとなることができます。

    IAM を使用した許可委任の詳細については、IAM ユーザーガイドアクセス 管理を参照してください。

DynamoDB アクション (dynamodb:ListTables) に許可を付与するポリシーの例を次に示します。Resource 値のワイルドカード文字 (*) は、このアクションを使用して、現在の AWS リージョンの AWS アカウントで所有されているすべてのテーブルの名前を取得できることを意味します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListTables", "Effect": "Allow", "Action": [ "dynamodb:ListTables" ], "Resource": "*" } ] }

DynamoDB でアイデンティティベースのポリシーを使用する場合の詳細については、Amazon DynamoDB でのアイデンティティベースポリシー (IAM ポリシー) の使用 を参照してください。ユーザー、グループ、ロール、アクセス許可の詳細については、IAM ユーザーガイドの「アイデンティティ (ユーザー、グループ、ロール)」を参照してください。

リソースベースのポリシー

Simple Storage Service (Amazon S3) などの他のサービスでは、リソースベースの許可ポリシーもサポートされています。例えば、ポリシーを S3 バケットにアタッチして、そのバケットに対するアクセス許可を管理できます。DynamoDB では、リソースベースのポリシーはサポートされていません。

ポリシー要素 (アクション、効果、プリンシパル) の指定

サービスは、DynamoDB リソースごとに一連の API オペレーションを定義します。これらの API オペレーションを実行する許可を付与するために、DynamoDB ではポリシーで指定できる一連のアクションを定義します。一部の API オペレーションは、API オペレーションを実行するために複数のアクションに対するアクセス許可を要求できます。リソースおよび API オペレーションに関する詳細については、DynamoDB のリソースとオペレーション および DynamoDB アクションを参照してください。

以下は、最も基本的なポリシーの要素です。

  • リソース - Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。詳細については、「DynamoDB のリソースとオペレーション」を参照してください。

  • アクション - アクションのキーワードを使用して、許可または拒否するリソースオペレーションを識別します。たとえば、dynamodb:Query 許可は、DynamoDB Query オペレーションの実行をユーザーに許可します。

  • 効果 – ユーザーが特定のアクションをリクエストする際の効果 (許可または拒否) を指定します。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。また、明示的にリソースへのアクセスを拒否すると、別のポリシーによってアクセスが許可されている場合でも、ユーザーはそのリソースにアクセスできなくなります。

  • プリンシパル - アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが黙示的なプリンシパルとなります。リソースベースのポリシーでは、権限 (リソースベースのポリシーにのみ適用) を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。DynamoDB では、リソースベースのポリシーはサポートされていません。

IAM ポリシーの構文と記述の詳細については、IAM ユーザーガイドAWS IAM ポリシーリファレンスを参照してください。

適用する Amazon DynamoDB の API オペレーションやリソースがすべて表示されているテーブルのについては、DynamoDB API の許可: アクション、リソース、条件リファレンス を参照してください。

ポリシーでの条件を指定する

アクセス許可を付与するとき、アクセスポリシー言語を使用して、ポリシーが有効になる条件を指定できます。例えば、特定の日付の後にのみ適用されるポリシーが必要になる場合があります。ポリシー言語での条件の指定の詳細については、「IAM ユーザーガイド」の「条件」を参照してください。

条件を表すには、あらかじめ定義された条件キーを使用します。AWS 全体の条件キーと DynamoDB 固有のキーがあり、必要に応じて使用できます。AWS 全体を対象とするすべてのキーのリストについては、IAM ユーザーガイドの「条件に利用可能なキー」を参照してください。DynamoDB 固有のキーの一覧については、詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用 を参照してください。