View a markdown version of this page

IAM の設定 - Amazon Aurora DSQL

IAM の設定

重要

この機能は AWS プレビューとして提供されており、変更される可能性があります。詳細については、「AWS のサービス条件」のセクション 2、「ベータ版とプレビュー」を参照してください。CDC ストリームの料金の詳細については、「Aurora DSQL の料金ページ」を参照してください。

一般提供する前に、ストリームペイロードに新しいオペレーションタイプ ("op": "u" 更新用) を追加します。アプリケーションがこれらの変更を修正せずに処理できるようにするには、after ペイロードを適用して、認識されない op 値をすべてアップサートとして扱います。詳細については、「CDC レコードについて」を参照してください。

CDC ストリームには、2 つの異なる IAM アクセス許可のセットが必要です。

  • 発信者のアクセス許可 – CDC ストリーム API オペレーション (CreateStreamGetStreamDeleteStreamListStreams) を呼び出す IAM プリンシパルには、これらのアクションと iam:PassRole のアクセス許可が必要です。

  • サービスロール – CDC レコードをターゲットに書き込むために Aurora DSQL が実行時に引き受ける IAM ロール。このロールを作成し、Aurora DSQL サービスプリンシパルがロールを引き受けることを許可する信頼ポリシーをアタッチし、ターゲットへの書き込みアクセスを許可するアクセス許可ポリシーをアタッチします。

注記

CDC サービスロールは、Aurora DSQL クラスターのリソースベースのポリシーとは別のものです。クラスターリソースベースのポリシーは、クラスターに接続してクエリできるプリンシパルを制御します。CDC サービスロールは、Aurora DSQL が CDC レコードを書き込むことができるターゲットを制御します。

発信者のアクセス許可

CDC ストリーム API オペレーションを呼び出す IAM プリンシパルには、関連する dsql アクションおよび iam:PassRole に対するアクセス許可が必要です。CreateStream オペレーションでは、サービスロール ARN を Aurora DSQL に渡すため、iam:PassRole が必要です。次に、ポリシーの例を示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DSQLStreamActions", "Effect": "Allow", "Action": [ "dsql:CreateStream", "dsql:GetStream", "dsql:ListStreams", "dsql:DeleteStream" ], "Resource": [ "arn:aws:dsql:region:your-account-id:cluster/cluster-id", "arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/*" ] }, { "Sid": "PassServiceRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::your-account-id:role/dsql-cdc-role", "Condition": { "StringEquals": { "iam:PassedToService": "dsql.amazonaws.com" } } } ] }

Resource 要素には、クラスター ARN (CreateStream および ListStreams で必要) とストリーム ARN パターン (GetStreamDeleteStream で必要) の両方が含まれます。

各オペレーションに必要なアクセス許可の完全なリストについては、「Amazon Aurora DSQL API リファレンス」の「CreateStream」、「GetStream」、「DeleteStream」、および「ListStreams」を参照してください。

サービスロール

サービスロールとは、Aurora DSQL が CDC レコードをターゲットに書き込むために引き受ける IAM ロールです。このロールを作成し、CreateStream を呼び出すときに、その ARN を targetDefinition.kinesis.roleArn フィールドに渡します。ロールには、信頼ポリシーとアクセス許可ポリシーが必要です。

サービスロール信頼ポリシー

信頼ポリシーでは、Aurora DSQL サービスプリンシパルがロールを引き受けることを許可する必要があります。混乱した代理攻撃を防ぐには、aws:SourceAccount および aws:SourceArn 条件キーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DSQLAssumeRole", "Effect": "Allow", "Principal": { "Service": "dsql.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/*" } } } ] }

aws:SourceArn 条件は、ロールを特定のクラスターのストリームに制限します。Aurora DSQL がまだストリーム識別子を割り当てていないため、ストリームを作成するときはワイルドカード (stream/*) を使用する必要があります。ストリームを作成したら、ロールが単一のストリームを提供する場合、条件を正確なストリーム ARN (arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/stream-id) に絞り込むことができます。

アカウントの任意のクラスターで、ストリームを使用してロールを使用するには、より広範なワイルドカード arn:aws:dsql:region:your-account-id:cluster/*/stream/* を使用します。

混乱した代理の防止の詳細については、このガイドの「サービス間の混乱した代理の防止」を参照してください。

サービスロールのアクセス許可ポリシー

アクセス許可ポリシーにより、サービスロールは Kinesis データストリームにレコードを書き込むためのアクセス許可を取得します。次のポリシーには、Kinesis の書き込みアクセス許可と AWS KMS アクセス許可の両方が含まれています。KMSAccess ステートメントは、Kinesis データストリームが AWS KMS カスタマーマネージドキーを使用する場合にのみ必要ですが、カスタマーマネージドキーを後で追加しても CDC ストリームが破損しないように、事前に含めることができます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "KinesisAccess", "Effect": "Allow", "Action": [ "kinesis:PutRecord", "kinesis:PutRecords", "kinesis:DescribeStreamSummary", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:your-account-id:stream/kinesis-stream-name" }, { "Sid": "KMSAccess", "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:*:*:key/*", "Condition": { "StringEquals": { "kms:ViaService": "kinesis.region.amazonaws.com", "kms:EncryptionContext:aws:kinesis:arn": "arn:aws:kinesis:region:your-account-id:stream/kinesis-stream-name", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } } ] }

AWS KMS ステートメントの条件は、次の保護を提供します。

  • kms:ViaService – キーの使用を、指定されたリージョンで Kinesis サービスを経由するリクエストに制限します。

  • kms:EncryptionContext:aws:kinesis:arn – キーの使用を、指定された Kinesis データストリームの暗号化オペレーションに制限します。

  • aws:ResourceAccount – キーは呼び出し元のプリンシパルと同じ AWS アカウントに属している必要があり、これによりクロスアカウントでのキーの使用が防止されます。

注記

ここで参照される AWS KMS キーは、クラスターの AWS KMS キーではなく、Kinesis データストリームの暗号化キーです。クラスターの暗号化キーは、Aurora DSQL 境界内の CDC データを保護します。Kinesis 暗号化キーは、Aurora DSQL が Kinesis データストリームに書き込んだ後の CDC データを保護します。

データ保護

Aurora DSQL は Transport Layer Security (TLS) を使用して、Aurora DSQL とターゲット間で転送中の CDC データを暗号化します。Aurora DSQL 境界内では、Aurora DSQL はクラスターの暗号化キーを使用して保管中の CDC データを暗号化します。

クラスターが AWS KMS カスタマーマネージドキーを使用していて、そのキーにアクセスできなくなった場合、ACTIVE または IMPAIRED ストリームはエラーコード CLUSTER_CMK_INACCESSIBLEIMPAIRED に移行します。ストリームの作成が完了する前にキーにアクセスできなくなった場合、ストリームは FAILED に直接移行します。

Aurora DSQL での暗号化の詳細については、このガイドの「Amazon Aurora DSQL のデータ暗号化」を参照してください。