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

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

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

このセクションを参照して、Amazon QLDB の標準アクセス許可モードを開始します。このセクションでは、PartiQL アクションについて AWS Identity and Access Management (IAM) でアイデンティティベースのポリシーを作成する際に役立つリファレンステーブルと、QLDB のテーブルリソースを示します。また、 step-by-step 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 コマンドと必要なアクセス許可
コマンド 必要なアクセス許可 (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)

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 をコピーするには、横のコピーアイコン ( ) を選択します。

テーブルのタグ付け

テーブルリソースにタグ付けすることができます。既存のテーブルのタグを管理するには、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 でアクセス許可ポリシーを作成する手順について説明します。その後は、新しいポリシーを IAM ユーザーに直接アタッチできるようになります。ユーザーのポリシーを変更または削除することもできます。

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

前提条件

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

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

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

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

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

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

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

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

  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" ] } ] }

ポリシーをユーザーに直接アタッチすることによるアクセス権限の追加

ポリシーをアタッチした結果は、すぐにユーザーに反映されます。

管理ポリシーを直接アタッチすることでユーザーにアクセス許可を追加するには

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

  2. ナビゲーションペインで [ユーザー] を選択して、変更するアクセス許可を持つユーザーの名前を選択し、[Permissions (アクセス許可)] タブを選択します。

  3. [アクセス許可の追加]、[Attach existing policies directly (既存のポリシーをユーザーに直接アタッチ)] の順に選択します。

  4. ユーザーにアタッチする管理ポリシーのチェックボックスを 1 つ以上オンにします。QLDB の AWS マネージドポリシーのリストについては、「Amazon QLDB の AWS マネージドポリシー」を参照してください。

    [ポリシーの作成] を選択して、新しい管理ポリシーを作成することもできます。その場合は、新しいポリシーが完成したらこのブラウザタブまたはウィンドウに戻ります。[Refresh (更新)] を選択した後、ユーザーにアタッチする新しいポリシーのチェックボックスをオンにします。詳細については、IAM ユーザーガイド の「IAM ポリシーの作成」を参照してください。

  5. [Next: (次へ:)] を選択します 確認をクリックして、ユーザーにアタッチするポリシーのリストを表示します。次に、[アクセス許可の追加] を選択します。

ユーザーにアタッチされているアクセス許可ポリシーの編集

アクセス許可を変更した結果は、すぐにユーザーに反映されます。

ユーザーにアタッチされている管理ポリシーを編集する

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

  2. ナビゲーションペインで [Users] (ユーザー) を選択します。

  3. アクセス許可ポリシーを変更する対象のユーザーの名前を選択します。

  4. [Permissions] (アクセス許可) タブを選択します。必要に応じて、[Permissions policies (アクセス許可ポリシー)] セクションを開きます。

  5. ポリシーの詳細を表示するために編集するポリシーの名前を選択します。[Used as (用途)] を選択し、ポリシーを編集した場合に影響を受ける可能性がある他のエンティティを確認します。

  6. [Permissions (アクセス許可)] タブを選択し、ポリシーで付与されるアクセス許可を確認します。[ポリシーの編集] を選択します。

  7. [ビジュアルエディター]タブまたは[JSON]タブを使用してポリシーを編集し、ポリシー検証の推奨事項を解決します。詳細については、「IAM ユーザーガイド」の「IAM ポリシーの編集」を参照してください。

  8. [ポリシーの確認] を選択し、ポリシーの概要を確認します。次に、[変更の保存] を選択します。

ユーザーからのアクセス許可ポリシーの削除

ポリシーを削除した結果は、すぐにユーザーに反映されます。

IAM ユーザーのアクセス許可を取り消すには

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

  2. ナビゲーションペインで [Users] (ユーザー) を選択します。

  3. アクセス許可の境界を削除する対象のユーザーの名前を選択します。

  4. [Permissions] (アクセス許可) タブを選択します。

  5. 既存のポリシーを削除してアクセス許可を取り消す場合は、[ポリシータイプ] を表示して、ユーザーがそのポリシーを取得する方法を理解してから、[X] を選択してポリシーを削除します。

    • グループメンバーシップのためにポリシーが適用されている場合、[X] を選択して、ユーザーをそのグループから削除します。1 つのグループには複数のポリシーがアタッチされている場合があります。グループからユーザーを削除すると、そのユーザーは、グループメンバーシップを通じて受け取ったすべてのポリシーへのアクセスを失います。

    • ポリシーがユーザーに直接アタッチされた管理ポリシーの場合、[X] を選択して、ユーザーへのポリシーのアタッチを解除します。これは、そのポリシー自体やそのポリシーがアタッチされている他のエンティティに影響を与えません。

    • ポリシーがインライン埋め込みポリシーである場合は、[X] を選択すると、IAM からポリシーが削除されます。ユーザーに直接アタッチされたインラインポリシーは、そのユーザーにのみ存在します。