Amazon QLDB の標準アクセス許可モードの開始方法 - Amazon Quantum Ledger Database (Amazon QLDB)

Amazon QLDB の標準アクセス許可モードの開始方法

このセクションを参照して、Amazon QLDB の標準アクセス許可モードを開始します。このセクションでは、PartiQL アクションについて AWS Identity and Access Management (IAM) でアイデンティティベースのポリシーを作成する際に役立つリファレンステーブルと、QLDB のテーブルリソースを示します。また、IAM でアクセス許可ポリシーを作成するためのステップバイステップのチュートリアルと、QLDB でテーブル ARN を検索し、テーブルタグを作成する手順も含まれています。

STANDARD アクセス許可モード

QLDB では、台帳リソースの STANDARD アクセス許可モードがサポートされるようになりました。標準アクセス許可モードでは、台帳、テーブル、および PartiQL コマンドをより詳細なレベルでアクセスコントロールすることができます。デフォルトでは、このモードは、台帳内の任意のテーブルで、任意の PartiQL コマンドを実行するすべてのリクエストを拒否します。

注記

以前は、台帳で使用できる唯一のアクセス許可モードは ALLOW_ALL でした。この ALLOW_ALL モードでは、台帳の API レベルの詳細度によるアクセスコントロールが有効になり、QLDB 台帳では引き続きサポートされますが、推奨はされません。このモードでは、SendCommand API アクセス許可があるユーザーは、アクセス許可ポリシーで指定された台帳の任意のテーブルですべての PartiQL コマンドを実行することができます (したがって、PartiQL コマンドを「すべて許可」します)。

既存の台帳のアクセス許可モードを ALLOW_ALL から STANDARD に変更できます。詳細については、標準アクセス許可モードへの移行を参照してください。

標準モードでコマンドを許可するには、特定のテーブルリソースと PartiQL アクションに対するアクセス許可ポリシーを IAM で作成する必要があります。これは、台帳に対する SendCommand API アクセス許可に追加されます。このモードのポリシーを容易にするために、QLDB では、PartiQL コマンドに対する IAM アクションのセット、および QLDB テーブルの Amazon リソースネーム (ARN) が導入されました。QLDB データオブジェクトモデルの詳細については、「Amazon QLDB の重要な概念と用語」を参照してください。

PartiQL アクセス許可のリファレンス

次の表に、各 QLDB PartiQL コマンド、コマンドを実行するためにアクセス許可を付与する必要がある対応する IAM アクション、アクセス許可を付与できる AWS リソースを示します。ポリシーの Action フィールドでアクションを指定し、ポリシーの Resource フィールドでリソースの値を指定します。

重要
  • この PartiQL コマンドにアクセス許可を付与する IAM ポリシーは、STANDARD アクセス許可モードが台帳に割り当てられている場合にのみ、台帳に適用されます。このようなポリシーは、ALLOW_ALL アクセス許可モードの台帳には適用できません。

    台帳を作成または更新するときにアクセス許可モードを指定する方法については、「Amazon QLDB 台帳の基本的なオペレーション」、または「コンソールの開始方法」の「ステップ 1: 新しい台帳を作成する」を参照してください。

  • 台帳で任意の PartiQL コマンドを実行するには、台帳リソースに対する SendCommand API アクションにもアクセス許可を付与する必要があります。これは、次の表に示す PartiQL アクションおよびテーブルリソースに追加されています。詳細については、「データトランザクションの実行」を参照してください。

Amazon QLDB PartiQL コマンドと必要なアクセス許可
Command 必要なアクセス許可 (IAM アクション) リソース 依存アクション
CREATE TABLE qldb:PartiQLCreateTable

arn:aws:qldb:region:account-id:ledger/ledger-name/table/*

qldb:TagResource (作成時のタグ付け用)
DROP TABLE qldb:PartiQLDropTable

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

テーブルの削除の取り消し qldb:PartiQLUndropTable

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

CREATE INDEX qldb:PartiQLCreateIndex

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

DROP INDEX qldb:PartiQLDropIndex

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

DELETE qldb:PartiQLDelete

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

qldb:PartiQLSelect
FROM-REMOVE (ドキュメント全体)
INSERT qldb:PartiQLInsert

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

UPDATE qldb:PartiQLUpdate

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

qldb:PartiQLSelect
FROM (INSERT、REMOVE、または SET)
REDACT_REVISION (ストアドプロシージャ) qldb:PartiQLRedact

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

SELECT FROM table_name

qldb:PartiQLSelect

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

SELECT FROM information_schema.user_tables

qldb:PartiQLSelect

arn:aws:qldb:region:account-id:ledger/ledger-name/information_schema/user_tables

SELECT FROM history(table_name)

qldb:PartiQLHistoryFunction

arn:aws:qldb:region:account-id:ledger/ledger-name/table/table-id

これらの PartiQL コマンドにアクセス許可を付与する IAM ポリシードキュメントの例については、「クイックスタートチュートリアル: アクセス許可ポリシーの作成」または「Amazon QLDB のアイデンティティベースのポリシー例」を参照してください。

テーブル ID と ARN の検索

AWS Management Console を使用するか、テーブル information_schema.user_tables のクエリを実行して、テーブル ID を検索することができます。コンソールでテーブルの詳細を表示する、または、このシステムカタログテーブルのクエリを実行するには、システムカタログリソースに対する SELECT アクセス許可が必要です。例えば、Vehicle テーブルのテーブル ID を検索するには、次のステートメントを実行できます。

SELECT * FROM information_schema.user_tables WHERE name = 'Vehicle'

このクエリは、次の例のような形式で結果を返します。

{ tableId: "Au1EiThbt8s0z9wM26REZN", name: "Vehicle", indexes: [ { indexId: "Djg2nt0yIs2GY0T29Kud1z", expr: "[VIN]", status: "ONLINE" }, { indexId: "4tPW3fUhaVhDinRgKRLhGU", expr: "[LicensePlateNumber]", status: "BUILDING" } ], status: "ACTIVE" }

テーブルで PartiQL ステートメントを実行するためのアクセス許可を付与するには、次の ARN 形式でテーブルリソースを指定します。

arn:aws:qldb:${region}:${account-id}:ledger/${ledger-name}/table/${table-id}

以下に、テーブル ID Au1EiThbt8s0z9wM26REZN のテーブル ARN の例を示します。

arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/Au1EiThbt8s0z9wM26REZN

QLDB コンソールを使用してテーブル ARN を検索することもできます。

テーブルの ARN を検索するには (コンソール)
  1. AWS Management Console にサインインして、Amazon QLDB コンソール (https://console.aws.amazon.com/qldb) を開きます。

  2. ナビゲーションペイン内で [Ledgers (台帳)] を選択します。

  3. [Ledgers] (台帳) のリストで、検索するテーブル ARN の台帳名を選択します。

  4. 台帳の詳細ページの [Tables] (テーブル) タブで、検索する ARN のテーブル名を見つけます。ARN をコピーするには、横のコピーアイコン ( 
                  Copy icon.
                ) を選択します。

テーブルのタグ付け

テーブルリソースにタグ付けすることができます。既存のテーブルのタグを管理するには、AWS Management Console または API オペレーション TagResourceUntagResource、および ListTagsForResource を使用します。詳細については、「Amazon QLDB リソースのタグ付け」を参照してください。

注記

テーブルリソースは、ルート台帳リソースのタグを継承しません。

作成時のテーブルのタグ付けは、現在 STANDARD 許可モードの台帳のみでサポートされています。

テーブルの作成中に、QLDB コンソールを使用するか、CREATE TABLE PartiQL ステートメントで指定して、テーブルタグを定義することもできます。次の例では、Vehicle という名前のテーブルをタグ environment=production を付けて作成します。

CREATE TABLE Vehicle WITH (aws_tags = `{'environment': 'production'}`)

作成時にテーブルにタグを付けるには、qldb:PartiQLCreateTable および qldb:TagResource アクションの両方にアクセスする必要があります。

作成時にリソースにタグ付けすることで、リソース作成後にカスタムタグ付けスクリプトを実行する必要がなくなります。テーブルにタグを付けると、それらのタグに基づいてテーブルへのアクセスを制御できます。例えば、特定のタグを持つテーブルにのみフルアクセスを付与できます。JSON ポリシーの例については、「テーブルタグに基づくすべてのアクションへのフルアクセス」を参照してください。

QLDB コンソールを使用して、テーブルの作成中にテーブルタグを定義することもできます。

作成時にテーブルにタグを付けるには (コンソール)
  1. AWS Management Console にサインインして、Amazon QLDB コンソール (https://console.aws.amazon.com/qldb) を開きます。

  2. ナビゲーションペイン内で [Ledgers (台帳)] を選択します。

  3. [Ledgers] (台帳) のリストで、テーブルを作成する台帳の名前を選択します。

  4. 台帳の詳細ページの [Tables] (テーブル) タブで、[Create table] (テーブルを作成) を選択します。

  5. [Create table] (テーブルを作成) ページで、次の操作を行います。

    • [Table name] (テーブル名) – テーブル名を入力します。

    • [Tags] (タグ) – タグをキーと値の組み合わせとしてアタッチすることで、メタデータをテーブルに追加します。テーブルにタグを追加すると、テーブルの整理と識別がしやすくなります。

      [Add tag (タグの追加)] を選択し、必要に応じて、任意のキーと値の組み合わせを入力します。

  6. すべての設定が正しいことを確認したら、[テーブルを作成] を選択します。

クイックスタートチュートリアル: アクセス許可ポリシーの作成

このチュートリアルでは、STANDARD アクセス許可モードの Amazon QLDB 台帳に対して IAM でアクセス許可ポリシーを作成する手順について説明します。その後、ユーザー、グループ、またはロールに権限を割り当てることができます。

PartiQL コマンドおよびテーブルリソースにアクセス許可を付与する IAM ポリシードキュメントの例については、「Amazon QLDB のアイデンティティベースのポリシー例」を参照してください。

前提条件

作業を始める前に、次の操作を実行してください。

  1. まだ行っていない場合は、「Amazon QLDB へのアクセス」の AWS の設定手順に従います。これらのステップには、AWS へのサインアップ手順と、管理ユーザーの作成手順が含まれます。

  2. 新しい台帳を作成し、台帳の STANDARD アクセス許可モードを選択します。その方法については、「コンソールの開始方法」の「ステップ 1: 新しい台帳を作成する」、または「Amazon QLDB 台帳の基本的なオペレーション」を参照してください。

読み取り専用ポリシーの作成

JSON ポリシーエディタを使用して、標準アクセス許可モードの台帳のすべてのテーブルに対する読み取り専用ポリシーを作成するには、次の手順を実行します。

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. 左側のナビゲーション列で、[ポリシー] を選択します。

    [Policies] (ポリシー) を初めて選択する場合は、[Welcome to Managed Policies] (マネージドポリシーにようこそ) ページが表示されます。[今すぐ始める] を選択します。

  3. ページの上部で、[ポリシーを作成] を選択します。

  4. JSONタブを選択します。

  5. 以下の JSON ポリシードキュメントをコピーして貼り付けます。このポリシー例では、台帳のすべてのテーブルに読み取り専用アクセス権を付与しています。

    このポリシーを使用するには、以下の例の us-east-1123456789012、および myExampleLedger を自分の情報と置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLReadOnlyPermissions", "Effect": "Allow", "Action": [ "qldb:PartiQLSelect", "qldb:PartiQLHistoryFunction" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/*", "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/information_schema/user_tables" ] } ] }
  6. [Review policy] (ポリシーの確認) を選択します。

    注記

    いつでも [Visual editor] (ビジュアルエディタ) タブと [JSON] タブを切り替えることができます。ただし、[Visual editor] (ビジュアルエディタ) タブで [Review policy] (ポリシーの確認) を変更または選択した場合、IAM はポリシーを再構成してビジュアルエディタに合わせて最適化することがあります。詳細については、IAM ユーザーガイドの「ポリシーの再構成」を参照してください。

  7. [ポリシーの確認] ページに作成するポリシーの [名前] と [説明] を入力します。ポリシーの [Summary] (概要) を参照して、ポリシーによって付与された許可を確認します。次に、[Create policy] (ポリシーの作成) を選択して作業を保存します。

フルアクセスポリシーの作成

標準アクセス許可モードの QLDB 台帳内のすべてのテーブルに対するフルアクセスポリシーを作成するには、次の手順を実行します。

  • 次のポリシードキュメントを使用して、前のステップを繰り返します。このポリシー例では、ワイルドカード (*) を使用して、すべての PartiQL アクションと台帳のすべてのリソースがカバーされるようにすることで、台帳のすべてのテーブルに対するすべての PartiQL コマンドにアクセス権を付与しています。

    警告

    これは、ワイルドカード文字 (*) を使用して、すべての PartiQL アクションを許可する例です。これには、QLDB 台帳のすべてのテーブルに対する管理オペレーションと読み取り/書き込みオペレーションが含まれます。代わりに、付与する各アクションと、そのユーザー、ロール、またはグループが必要とするアクションのみを明示的に指定することをお勧めします。

    このポリシーを使用するには、以下の例の us-east-1123456789012、および myExampleLedger を自分の情報と置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLFullPermissions", "Effect": "Allow", "Action": [ "qldb:PartiQL*" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/*", "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/information_schema/user_tables" ] } ] }

特定のテーブルの読み取り専用ポリシーの作成

標準アクセス許可モードの QLDB 台帳内の特定のテーブルに対する読み取り専用アクセスポリシーを作成するには、次の手順を実行します。

  1. AWS Management Console を使用するか、システムカタログテーブル information_schema.user_tables のクエリを実行して、テーブルの ARN を検索します。手順については、「テーブル ID と ARN の検索」を参照してください。

  2. テーブル ARN を使用して、テーブルへの読み取り専用アクセスを許可するポリシーを作成します。これを行うには、次のポリシードキュメントを使用して、前のステップを繰り返します。

    このポリシー例では、指定されたテーブルにのみ、読み取り専用アクセス権が付与されています。この例では、テーブル ID は Au1EiThbt8s0z9wM26REZN です。このポリシーを使用するには、以下の例の us-east-1123456789012myExampleLedger、および Au1EiThbt8s0z9wM26REZN を自分の情報と置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLReadOnlyPermissions", "Effect": "Allow", "Action": [ "qldb:PartiQLSelect", "qldb:PartiQLHistoryFunction" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/Au1EiThbt8s0z9wM26REZN" ] } ] }

アクセス許可の割り当て

QLDB アクセス権限ポリシーを作成したら、次のように権限を割り当てます。

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。