Amazon QLDB で IAM が機能する仕組み - Amazon Quantum Ledger Database (Amazon QLDB)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon QLDB で IAM が機能する仕組み

IAM を使用して QLDB へのアクセスを管理する前に、QLDB で利用できる IAM の機能について学びます。

QLDB およびその他の がほとんどの IAM 機能と AWS のサービス 連携する方法の概要を把握するには、「IAM ユーザーガイド」のAWS のサービス 「IAM と連携する 」を参照してください。

QLDB のアイデンティティベースのポリシー

アイデンティティベースポリシーをサポートする

あり

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティに添付できる JSON アクセス許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件を制御します。アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーの作成」を参照してください。

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。プリンシパルは、それが添付されているユーザーまたはロールに適用されるため、アイデンティティベースのポリシーでは指定できません。JSON ポリシーで使用できるすべての要素について学ぶには、「IAM ユーザーガイド」の「IAM JSON ポリシーの要素のリファレンス」を参照してください。

QLDB のアイデンティティベースのポリシーの例

QLDB のアイデンティティベースのポリシーの例を表示するには、「Amazon QLDB のアイデンティティベースのポリシー例」を参照してください。

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

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

なし

リソースベースのポリシーは、リソースに添付する JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM ロールの信頼ポリシーや Amazon S3 バケットポリシーが挙げられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。ポリシーが添付されているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーでは、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または を含めることができます AWS のサービス。

クロスアカウントアクセスを有効にするには、アカウント全体、または別のアカウントの IAM エンティティをリソースベースのポリシーのプリンシパルとして指定します。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが異なる にある場合 AWS アカウント、信頼されたアカウントの IAM 管理者は、リソースへのアクセス許可をプリンシパルエンティティ (ユーザーまたはロール) に付与する必要もあります。IAM 管理者は、アイデンティティベースのポリシーをエンティティに添付することで許可を付与します。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、アイデンティティベースのポリシーを追加する必要はありません。詳細については、「IAM ユーザーガイド」の「IAM ロールとリソースベースのポリシーとの相違点」を参照してください。

QLDB のポリシーアクション

ポリシーアクションに対するサポート

はい

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件アクションを実行できるかということです。

JSON ポリシーのAction要素には、ポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションのないアクセス許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数アクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。

このアクションは、関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

QLDB アクションのリストを確認するには、「サービス認証リファレンス」の「Amazon QLDB で定義されるアクション」を参照してください。

QLDB のポリシーアクションは、アクションの前に以下のプレフィックスを使用します。

qldb

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

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

ワイルドカード (*) を使用して複数アクションを指定できます。例えば、Describe という単語で始まるすべてのアクションを指定するには、次のアクションを含めます。

"Action": "qldb:Describe*"

台帳で PartiQL ステートメントを実行して QLDB トランザクションデータ API (QLDB セッション) と対話するには、次のように SendCommand アクションにアクセス許可を付与する必要があります。

"Action": "qldb:SendCommand"

STANDARD アクセス許可モードの台帳の場合は、「PartiQL アクセス許可のリファレンス」を参照して、各 PartiQL コマンドに必要な追加のアクセス許可を確認してください。

QLDB のアイデンティティベースのポリシーの例を表示するには、「Amazon QLDB のアイデンティティベースのポリシー例」を参照してください。

QLDB のポリシーリソース

ポリシーリソースに対するサポート

はい

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Resource JSON ポリシーの要素は、オブジェクトあるいはアクションが適用されるオブジェクトを指定します。ステートメントには、Resource または NotResource 要素を含める必要があります。ベストプラクティスとしては、Amazon リソースネーム (ARN) を使用してリソースを指定します。これは、リソースレベルのアクセス許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

オペレーションのリスト化など、リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。

"Resource": "*"

QLDB リソースのタイプとその ARN のリストを確認するには、「サービス認証リファレンス」の「Amazon QLDB で定義されるリソース」を参照してください。どのアクションで各リソースの ARN を指定できるかについては、「Amazon QLDB で定義されるアクション」を参照してください。

QLDB では、プライマリリソースは台帳です。QLDB では、追加のリソースタイプ (テーブルおよびストリーム) もサポートしています。ただし、既存の台帳のコンテキストでのみ、テーブルやストリームを作成できます。

QLDB テーブルは、台帳のジャーナルからの順序付けられていないドキュメントリビジョンのコレクションのマテリアライズドビューです。STANDARD アクセス許可モードの台帳では、このテーブルリソースで PartiQL ステートメントを実行するために、アクセス許可を付与する IAM ポリシーを作成する必要があります。テーブルリソースに対するアクセス許可を使用すると、テーブルの現在の状態にアクセスするステートメントを実行できます。組み込みの history() 関数を使用してテーブルのリビジョン履歴のクエリを実行することもできます。詳細については、「Amazon QLDB の標準アクセス許可モードの開始方法」を参照してください。

注記

CREATE TABLE ステートメントは、一意の ID と指定されたテーブル名を持つテーブルを作成します。指定するテーブル名は、すべてのアクティブなテーブルの中で一意である必要があります。ただし、QLDB ではテーブルを非アクティブ化できるため、同じテーブル名を共有する非アクティブなテーブルが複数存在する可能性があります。したがって、テーブルリソース ARN は、ユーザー定義のテーブル名ではなく、システムによって割り当てられた一意の ID を参照します。

各台帳では、システム定義のカタログリソースも提供され、このリソースでクエリを実行して台帳内のすべてのテーブルとインデックスを一覧表示できます。QLDB データオブジェクトモデルの詳細については、「Amazon QLDB の重要な概念と用語」を参照してください。

このリソースには、次の表に示すように、一意の ARN が関連付けられています。

リソースタイプ ARN
ledger arn:${Partition}:qldb:${Region}:${Account}:ledger/${LedgerName}
table arn:${Partition}:qldb:${Region}:${Account}:ledger/${LedgerName}/table/${TableId}
catalog arn:${Partition}:qldb:${Region}:${Account}:ledger/${LedgerName}/information_schema/user_tables
stream arn:${Partition}:qldb:${Region}:${Account}:stream/${LedgerName}/${StreamId}

例えば、ステートメントで myExampleLedger リソースを指定するには、次の ARN を使用します。

"Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger"

複数リソースを単一ステートメントで指定するには、ARN をカンマで区切ります。

"Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger1", "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger2" ]

QLDB のアイデンティティベースのポリシーの例を表示するには、「Amazon QLDB のアイデンティティベースのポリシー例」を参照してください。

QLDB のポリシー条件キー

サービス固有のポリシー条件キーのサポート

はい

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件アクションを実行できるかということです。

Condition 要素 (または Condition ブロック) を使用すると、ステートメントが有効な条件を指定できます。Condition 要素はオプションです。equal や less than などの条件演算子を使用して条件式を作成することによって、ポリシーの条件とリクエスト内の値を一致させることができます。

1 つのステートメントに複数の Condition 要素を指定する場合、または 1 つの Condition 要素に複数のキーを指定する場合、 AWS は AND 論理演算子を使用してそれらを評価します。1 つの条件キーに複数の値を指定すると、 は論理OR演算を使用して条件 AWS を評価します。ステートメントの権限が付与される前にすべての条件が満たされる必要があります。

条件を指定する際にプレースホルダー変数も使用できます。例えば IAM ユーザーに、IAM ユーザー名がタグ付けされている場合のみリソースにアクセスできる許可を付与できます。詳細については、「IAM ユーザーガイド」の「‬IAM ポリシーの要素: 変数およびタグ‭‬」を参照してください。

AWS は、 グローバル条件キーとサービス固有の条件キーをサポートします。すべての AWS グローバル条件キーを確認するには、「IAM ユーザーガイド」のAWS 「 グローバル条件コンテキストキー」を参照してください。

QLDB の条件キーのリストを確認するには、「サービス認証リファレンス」の「Amazon QLDB の条件キー」を参照してください。条件キーを使用できるアクションとリソースについては、「Amazon QLDB で定義されるアクション」を参照してください。

PartiQLDropIndex アクションおよび PartiQLDropTable アクションは、qldb:Purge 条件キーをサポートします。この条件キーは PartiQL DROP ステートメントで指定された purge の値でアクセスをフィルタします。ただし、QLDB で現在サポートされているのは purge = true for DROP INDEX ステートメントと purge = false for DROP TABLE ステートメントのみです。他の QLDB アクションでは、いくつかのグローバルコンディションキーがサポートされています。

QLDB のアイデンティティベースのポリシーの例を表示するには、「Amazon QLDB のアイデンティティベースのポリシー例」を参照してください。

QLDB のアクセスコントロールリスト (ACL)

ACL のサポート

なし

アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするための権限を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。

QLDB での属性ベースのアクセスコントロール (ABAC)

ABAC のサポート (ポリシー内のタグ)

はい

属性ベースのアクセス制御 (ABAC) は、属性に基づいてアクセス許可を定義するアクセス許可戦略です。では AWS、これらの属性はタグ と呼ばれます。タグは、IAM エンティティ (ユーザーまたはロール) および多くの AWS リソースにアタッチできます。エンティティとリソースのタグ付けは、ABAC の最初の手順です。次に、プリンシパルのタグがアクセスを試行するリソースのタグと一致したときにオペレーションを許可するよう、ABAC ポリシーを設計します。

ABAC は、急成長する環境やポリシー管理が煩雑になる状況で役立ちます。

タグに基づいてアクセスを制御するには、aws:ResourceTag/key-nameaws:RequestTag/key-name、または aws:TagKeys の条件キーを使用して、ポリシーの 条件要素 でタグ情報を提供します。

サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値は Yes です。サービスが一部のリソースタイプに対してのみ 3 つの条件キーすべてをサポートする場合、値は Partial です。

ABAC の詳細については、「IAM ユーザーガイド」の [ABAC とは?」を参照してください。ABAC をセットアップするステップを説明するチュートリアルについては、「IAM ユーザーガイド」の「属性ベースのアクセス制御 (ABAC) を使用する」を参照してください。

QLDB リソースのタグ付けの詳細については、「Amazon QLDB リソースのタグ付け」を参照してください。

リソースのタグに基づいてリソースへのアクセスを制限するためのアイデンティティベースポリシーの例を表示するには、「タグに基づく QLDB 台帳の更新」を参照してください。

QLDB での一時的な認証情報の使用

一時的な認証情報のサポート

はい

一部の AWS のサービス は、一時的な認証情報を使用してサインインすると機能しません。一時的な認証情報 AWS のサービス を使用する などの詳細については、IAM ユーザーガイドの「IAM AWS のサービス と連携する 」を参照してください。

ユーザー名とパスワード以外の AWS Management Console 方法で にサインインする場合は、一時的な認証情報を使用しています。例えば、会社の Single Sign-On (SSO) リンク AWS を使用して にアクセスすると、そのプロセスは自動的に一時的な認証情報を作成します。また、ユーザーとしてコンソールにサインインしてからロールを切り替える場合も、一時的な認証情報が自動的に作成されます。ロールの切り替えに関する詳細については、「IAM ユーザーガイド」の「ロールへの切り替え (コンソール)」を参照してください。

一時的な認証情報は、 AWS CLI または AWS API を使用して手動で作成できます。その後、これらの一時的な認証情報を使用して、長期的なアクセスキーを使用する代わりに、動的に一時的な認証情報を生成する AWS. AWS recommends にアクセスできます。詳細については、「IAM の一時的セキュリティ認証情報」を参照してください。

QLDB のクロスサービスプリンシパル許可

転送アクセスセッション (FAS) をサポート

いいえ

IAM ユーザーまたはロールを使用して でアクションを実行する場合 AWS、ユーザーはプリンシパルと見なされます。一部のサービスを使用する際に、アクションを実行することで、別のサービスの別のアクションがトリガーされることがあります。FAS は、 を呼び出すプリンシパルのアクセス許可を使用し AWS のサービス、ダウンストリームサービスにリクエスト AWS のサービス を行うリクエストと組み合わせて使用します。FAS リクエストは、他の AWS のサービス またはリソースとのやり取りを完了する必要があるリクエストをサービスが受信した場合にのみ行われます。この場合、両方のアクションを実行するためのアクセス許可が必要です。FAS リクエストを行う際のポリシーの詳細については、「転送アクセスセッション」を参照してください。

QLDB のサービスロール

サービスロールに対するサポート

あり

サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロールです。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「IAM ユーザーガイド」の「AWS のサービスに権限を委任するロールの作成」を参照してください。

警告

サービスロールの許可を変更すると、QLDB の機能が破損する可能性があります。QLDB が指示する場合以外は、サービスロールを編集しないでください。

次のセクションで説明するように、QLDB は ExportJournalToS3 および StreamJournalToKinesis API オペレーションのサービスロールをサポートしています。

QLDB で IAM ロールを選択

QLDB でジャーナルブロックをエクスポートまたはストリーミングする場合、ユーザーに代わって特定の宛先にオブジェクトを書き込むことを QLDB に許可するロールを選択する必要があります。以前に作成したサービスロールがある場合、QLDB により、選択できるロールのリストが表示されます。エクスポート用に指定した Simple Storage Service (Amazon S3) バケットに書き込むか、ストリーム用に指定した Amazon Kinesis Data Streams リソースに書き込むためのアクセスを許可するロールを選択することが重要です。詳細については、QLDB のジャーナルエクスポート権限またはQLDB のストリーミング許可を参照してください。

注記

ジャーナルエクスポートまたはストリームをリクエストするときに QLDB にロールを渡すには、IAM ロールリソースで iam:PassRole アクションを実行するためのアクセス許可が必要です。これは、QLDB 台帳リソースでの qldb:ExportJournalToS3 の実行、または QLDB ストリームサブリソースでの qldb:StreamJournalToKinesis の実行に対するアクセス許可に追加されます。

QLDB のサービスリンクロール

サービスにリンクされたロールのサポート

いいえ

サービスにリンクされたロールは、 にリンクされたサービスロールの一種です AWS のサービス。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは に表示され AWS アカウント 、サービスによって所有されます。IAM 管理者は、サービスリンクロールの権限を表示できますが、編集することはできません。

サービスリンクロールの作成または管理の詳細については、「IAM と提携するAWS のサービス」を参照してください。表の中から、[Service-linked role (サービスリンクロール)] 列に Yes と記載されたサービスを見つけます。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[はい] リンクを選択します。