Amazon QLDB のアイデンティティベースのポリシー例 - Amazon Quantum Ledger Database (Amazon QLDB)

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

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

デフォルトでは、IAM ユーザーおよびロールには、QLDB リソースを作成または変更するアクセス許可はありません。また、、 AWS Command Line Interface (AWS CLI) AWS Management Console、または AWS API を使用してタスクを実行することはできません。IAM 管理者は、リソースで必要なアクションを実行するためのアクセス許可をユーザーに付与するため、IAM ポリシーを作成できます。その後、管理者がロールに IAM ポリシーを追加すると、ユーザーはロールを引き受けることができます。

これらサンプルの JSON ポリシードキュメントを使用して、IAM アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーの作成」を参照してください。

QLDB が定義するアクションとリソースタイプ (リソースタイプごとの ARN の形式を含む) の詳細については、「サービス認証リファレンス」の「Amazon QLDB のアクション、リソース、および条件キー」を参照してください。

ポリシーのベストプラクティス

ID ベースのポリシーは、ユーザーのアカウントで誰かが QLDB リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、 AWS アカウントに料金が発生する可能性があります。アイデンティティベースのポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください。

  • AWS 管理ポリシーの使用を開始し、最小特権のアクセス許可に移行する – ユーザーとワークロードにアクセス許可を付与するには、多くの一般的ユースケースにアクセス許可を付与するAWS 管理ポリシーを使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カスタマー管理ポリシーを定義して、アクセス許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」または「職務機能のAWS マネージドポリシー」を参照してください。

  • 最小特権を適用する – IAM ポリシーでアクセス許可を設定する場合、タスクの実行に必要なアクセス許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権権限とも呼ばれています。IAM を使用してアクセス許可を適用する方法の詳細については、「IAM ユーザーガイド」の「IAM でのポリシーとアクセス許可」を参照してください。

  • IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。条件を使用して、 などの特定の を通じてサービスアクションを使用する場合 AWS のサービス、サービスアクションへのアクセスを許可することもできます AWS CloudFormation。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素:条件」を参照してください。

  • IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的なアクセス許可を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer ポリシーの検証」を参照してください。

  • 多要素認証 (MFA) を要求する – で IAM ユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、セキュリティを強化するために MFA を有効にします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA 保護 API アクセスの設定」を参照してください。

IAM でのベストプラクティスの詳細については、『IAM ユーザーガイド』の「IAM でのセキュリティのベストプラクティス」を参照してください。

QLDB コンソールの使用

Amazon QLDB コンソールにアクセスするには、許可の最小限のセットが必要です。これらのアクセス許可により、 の QLDB リソースの詳細をリストおよび表示できます AWS アカウント。最小限必要な許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) に対してコンソールが意図したとおりに機能しません。

AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソールアクセス許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。

ユーザーとロールが QLDB コンソールとそのすべての機能にフルアクセスできるようにするには、エンティティに次の AWS マネージドポリシーをアタッチします。詳細については、「AWS Amazon QLDB の マネージドポリシー」、および「IAM ユーザーガイド」の「ユーザーへのアクセス許可の追加」を参照してください。

AmazonQLDBConsoleFullAccess

クエリ履歴のアクセス許可

QLDB のアクセス許可に加えて、一部のコンソール機能では、Database Query Metadata Service (サービスプレフィックス: dbqms) に対するアクセス許可が必要です。これは、QLDB やその他の AWS のサービスなどのコンソールクエリエディタで最近使用したクエリや保存したクエリを管理する内部専用のサービスです。DBQMS API アクションの全リストについては、「サービス認証リファレンス」の「データベースクエリメタデータサービス」を参照してください。

クエリ履歴のアクセス許可を付与するには、 AWS マネージドポリシー AmazonQLDBConsoleFullAccess を使用できます。このポリシーでは、ワイルドカード (dbqms:*) を使用して、すべてのリソースに対するすべての DBQMS アクションを許可します。

または、カスタム IAM ポリシーを作成して、次の DBQMS アクションを含めることもできます。QLDB コンソールの PartiQL クエリエディタには、クエリ履歴機能にこれらのアクションを使用する権限が必要です。

dbqms:CreateFavoriteQuery dbqms:CreateQueryHistory dbqms:DeleteFavoriteQueries dbqms:DeleteQueryHistory dbqms:DescribeFavoriteQueries dbqms:DescribeQueryHistory dbqms:UpdateFavoriteQuery

コンソールへのクエリ履歴権限を除いたフルアクセス許可

クエリ履歴権限なしで QLDB コンソールへのフルアクセスを許可するには、すべての DBQMS アクションを除外するカスタム IAM ポリシーを作成できます。例えば、次のポリシードキュメントでは、サービスプレフィックス で始まるアクションを除いて、 AWS マネージドポリシー AmazonQLDBConsoleFullAccess によって付与されるのと同じアクセス許可を許可しますdbqms

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "qldb:CreateLedger", "qldb:UpdateLedger", "qldb:UpdateLedgerPermissionsMode", "qldb:DeleteLedger", "qldb:ListLedgers", "qldb:DescribeLedger", "qldb:ExportJournalToS3", "qldb:ListJournalS3Exports", "qldb:ListJournalS3ExportsForLedger", "qldb:DescribeJournalS3Export", "qldb:CancelJournalKinesisStream", "qldb:DescribeJournalKinesisStream", "qldb:ListJournalKinesisStreamsForLedger", "qldb:StreamJournalToKinesis", "qldb:GetBlock", "qldb:GetDigest", "qldb:GetRevision", "qldb:TagResource", "qldb:UntagResource", "qldb:ListTagsForResource", "qldb:SendCommand", "qldb:ExecuteStatement", "qldb:ShowCatalog", "qldb:InsertSampleData", "qldb:PartiQLCreateIndex", "qldb:PartiQLDropIndex", "qldb:PartiQLCreateTable", "qldb:PartiQLDropTable", "qldb:PartiQLUndropTable", "qldb:PartiQLDelete", "qldb:PartiQLInsert", "qldb:PartiQLUpdate", "qldb:PartiQLSelect", "qldb:PartiQLHistoryFunction" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "kinesis:ListStreams", "kinesis:DescribeStream" ], "Effect": "Allow", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "qldb.amazonaws.com" } } } ] }

自分の許可の表示をユーザーに許可する

この例では、ユーザーアイデンティティに添付されたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーを作成する方法を示します。このポリシーには、コンソールで、または AWS CLI または AWS API を使用してプログラムでこのアクションを実行するアクセス許可が含まれています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

データトランザクションの実行

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

このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、および をユーザー自身の情報に置き換えます。

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

myExampleLedgerALLOW_ALL アクセス許可モードを使用する場合、このポリシーは、台帳の任意のテーブルに対してすべての PartiQL コマンドを実行するアクセス許可を付与します。

AWS マネージドポリシーを使用して、すべての QLDB リソースへのフルアクセスを許可することもできます。詳細については、「AWS Amazon QLDB の マネージドポリシー」を参照してください。

PartiQL アクションとテーブルリソースに対する標準アクセス許可

STANDARD アクセス許可モードの台帳の場合は、適切な PartiQL アクセス許可を付与する例として、次の IAM ポリシードキュメントを参照できます。各 PartiQL コマンドに必要なアクセス許可のリストについては、「PartiQL アクセス許可のリファレンス」を参照してください。

すべてのアクションへのフルアクセス

次の JSON ポリシードキュメントでは、myExampleLedger のすべてのテーブルですべての PartiQL コマンドを使用できるように、フルアクセスを付与しています。このポリシーは、台帳で ALLOW_ALL アクセス許可モードを使用するのと同じ効果を発揮します。

このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、 をユーザー自身の情報に置き換えます。

{ "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:PartiQLCreateIndex", "qldb:PartiQLDropIndex", "qldb:PartiQLCreateTable", "qldb:PartiQLDropTable", "qldb:PartiQLUndropTable", "qldb:PartiQLDelete", "qldb:PartiQLInsert", "qldb:PartiQLUpdate", "qldb:PartiQLRedact", "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" ] } ] }

テーブルタグに基づくすべてのアクションへのフルアクセス

次の JSON ポリシードキュメントでは、テーブルリソースタグに基づいた条件を使用して、myExampleLedger のすべてのテーブルですべての PartiQL コマンドを使用できるようにフルアクセスを付与しています。アクセス許可は、テーブルタグ environment に値 development がある場合にのみ付与されます。

警告

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

このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、 をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLFullPermissionsBasedOnTags", "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" ], "Condition": { "StringEquals": { "aws:ResourceTag/environment": "development" } } } ] }

読み取り/書き込みアクセス

次の JSON ポリシードキュメントでは、myExampleLedger のすべてのテーブルのデータを選択、挿入、更新、および削除するアクセス許可を付与しています。このポリシーでは、テーブルやインデックスの作成や削除など、データの秘匿化やスキーマの変更を行うアクセス許可は付与されません。

注記

UPDATE ステートメントでは、変更するテーブルに対する qldb:PartiQLUpdate アクションと qldb:PartiQLSelect アクション両方のアクセス許可が必要です。UPDATE ステートメントを実行すると、更新オペレーションに加えて読み取りオペレーションも実行されます。両方のアクションを要求すれば、テーブルの内容の読み取りが許可されているユーザーにのみ UPDATE アクセス許可が付与されるようになります。

同様に、DELETE ステートメントでは、qldb:PartiQLDelete アクションと qldb:PartiQLSelect アクションの両方へのアクセス許可が必要です。

このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、 をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLReadWritePermissions", "Effect": "Allow", "Action": [ "qldb:PartiQLDelete", "qldb:PartiQLInsert", "qldb:PartiQLUpdate", "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" ] } ] }

読み取り専用アクセス

次の JSON ポリシードキュメントでは、myExampleLedger のすべてのテーブルに読み取り専用アクセス許可を付与しています。このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、 をユーザー自身の情報に置き換えます。

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

特定のテーブルへの読み取り専用アクセス

次の JSON ポリシードキュメントでは、myExampleLedger の特定のテーブルに読み取り専用アクセス許可を付与しています。この例では、テーブル 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": "QLDBPartiQLReadOnlyPermissionsOnTable", "Effect": "Allow", "Action": [ "qldb:PartiQLSelect", "qldb:PartiQLHistoryFunction" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/Au1EiThbt8s0z9wM26REZN" ] } ] }

テーブル作成のアクセス許可

次の JSON ポリシードキュメントでは、myExampleLedger のテーブルを作成するアクセス許可を付与しています。qldb:PartiQLCreateTable アクションには、テーブルリソースタイプに対するアクセス許可が必要です。ただし、CREATE TABLE ステートメントを実行する時点で、新しいテーブルのテーブル ID は未知です。したがって、qldb:PartiQLCreateTable アクセス許可を付与するポリシーでは、テーブル ARN でワイルドカード (*) を使用してリソースを指定する必要があります。

このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、および をユーザー自身の情報に置き換えます。

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

リクエストタグに基づいたテーブル作成のアクセス許可

次の JSON ポリシードキュメントでは、aws:RequestTag コンテキストキーに基づいた条件を使用して、myExampleLedger のテーブルを作成するアクセス許可を付与しています。アクセス許可は、リクエストタグ environment に値 development がある場合にのみ付与されます。作成時にテーブルにタグを付けるには、qldb:PartiQLCreateTable および qldb:TagResource アクションの両方にアクセスする必要があります。作成時にテーブルにタグを付ける方法については、「テーブルのタグ付け」を参照してください。

このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、および をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBSendCommandPermission", "Effect": "Allow", "Action": "qldb:SendCommand", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "QLDBPartiQLCreateTablePermission", "Effect": "Allow", "Action": [ "qldb:PartiQLCreateTable", "qldb:TagResource" ], "Resource": [ "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger/table/*" ], "Condition": { "StringEquals": { "aws:RequestTag/environment": "development" } } } ] }

Simple Storage Service (Amazon S3) バケットへのジャーナルのエクスポート

ステップ 1: QLDB ジャーナルのエクスポートのアクセス許可

次の例では、QLDB 台帳リソースに対して qldb:ExportJournalToS3アクションを実行する AWS アカウント アクセス許可を のユーザーに付与します。また、QLDB サービスに渡す IAM ロールリソースに対して iam:PassRole アクションを実行するためのアクセス許可も付与しています。これはすべてのジャーナルエクスポートリクエストに必要です。

このポリシーを使用するには、この例の us-east-1123456789012myExampleLedger、、および qldb-s3-export をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBJournalExportPermission", "Effect": "Allow", "Action": "qldb:ExportJournalToS3", "Resource": "arn:aws:qldb:us-east-1:123456789012:ledger/myExampleLedger" }, { "Sid": "IAMPassRolePermission", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/qldb-s3-export", "Condition": { "StringEquals": { "iam:PassedToService": "qldb.amazonaws.com" } } } ] }

ステップ 2: Simple Storage Service (Amazon S3) バケットのアクセス許可

次の例では、IAM ロールを使用して、Simple Storage Service (Amazon S3) バケットの 1 つ、DOC-EXAMPLE-BUCKET に書き込むアクセス権を QLDB に付与しています。これは、どの QLDB ジャーナルエクスポートでも必要です。

s3:PutObject アクセス許可を付与することに加えて、このポリシーは、オブジェクトのアクセスコントロールリスト (ACL) のアクセス許可を設定するための s3:PutObjectAcl アクセス許可も付与します。

このポリシーを使用するには、以下の例の DOC-EXAMPLE-BUCKET を Simple Storage Service (Amazon S3) バケット名と置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBJournalExportS3Permissions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

次に、このアクセス許可ポリシーを、QLDB が Simple Storage Service (Amazon S3) バケットにアクセスするために引き受けることができる IAM ロールにアタッチします。次の JSON ドキュメントは、アカウント 123456789012 のみの QLDB リソースの IAM ロールを QLDB が引き受けることを許可する信頼ポリシーの例です。

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "qldb.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

Kinesis Data Streams へのジャーナルのストリーミング

ステップ 1: QLDB ジャーナルストリームのアクセス許可

次の例では、台帳内のすべての QLDB ストリームサブリソースに対して qldb:StreamJournalToKinesisアクションを実行する AWS アカウント アクセス許可を のユーザーに付与します。また、QLDB サービスに渡す IAM ロールリソースに対して iam:PassRole アクションを実行するためのアクセス許可も付与しています。これは、すべてのジャーナルストリームリクエストに必要です。

このポリシーを使用するには、この例qldb-kinesis-streamus-east-1123456789012myExampleLedger、、および をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBJournalStreamPermission", "Effect": "Allow", "Action": "qldb:StreamJournalToKinesis", "Resource": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*" }, { "Sid": "IAMPassRolePermission", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/qldb-kinesis-stream", "Condition": { "StringEquals": { "iam:PassedToService": "qldb.amazonaws.com" } } } ] }

ステップ 2: Kinesis Data Streams のアクセス許可

次の例では、IAM ロールを使用して、Amazon Kinesis データストリーム にデータレコードを書き込むためのアクセス権を QLDB に付与しますstream-for-qldb。これは、どの QLDB ジャーナルストリームでも必要です。

このポリシーを使用するには、この例stream-for-qldbus-east-1123456789012、 をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "QLDBStreamKinesisPermissions", "Action": [ "kinesis:PutRecord*", "kinesis:DescribeStream", "kinesis:ListShards" ], "Effect": "Allow", "Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/stream-for-qldb" } ] }

次に、このアクセス許可ポリシーを、QLDB が Kinesis データストリームにアクセスするために引き受けることができる IAM ロールにアタッチします。次の JSON ドキュメントは、台帳 myExampleLedger のみのアカウント 123456789012 の QLDB ストリームの IAM ロールを QLDB が引き受けることを許可する信頼ポリシーの例です。

このポリシーを使用するには、この例myExampleLedgerus-east-1123456789012、 をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "qldb.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:qldb:us-east-1:123456789012:stream/myExampleLedger/*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

タグに基づく QLDB 台帳の更新

アイデンティティベースのポリシーの条件を使用して、タグに基づいて QLDB リソースへのアクセスをコントロールできます。この例では、台帳の更新を許可するポリシーを作成する方法を示しています。ただし、台帳タグ Owner にそのユーザーのユーザー名の値がある場合のみ、アクセス許可は付与されます。このポリシーでは、このアクションをコンソールで実行するために必要なアクセス許可も付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListLedgersInConsole", "Effect": "Allow", "Action": "qldb:ListLedgers", "Resource": "*" }, { "Sid": "UpdateLedgerIfOwner", "Effect": "Allow", "Action": "qldb:UpdateLedger", "Resource": "arn:aws:qldb:*:*:ledger/*", "Condition": { "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"} } } ] }

このポリシーをアカウントの ユーザーにアタッチできます。richard-roe という名前のユーザーが QLDB 台帳を更新しようとする場合は、台帳にタグ Owner=richard-roe または owner=richard-roe が付いている必要があります。それ以外の場合、そのユーザーのアクセスは拒否されます。条件キー名では大文字と小文字は区別されないため、条件タグキー OwnerOwnerowner に一致します。詳細については、IAM ユーザーガイドIAM JSON ポリシー要素: 条件を参照してください。