Pertimbangan integrasi lintas akun dengan CMK - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pertimbangan integrasi lintas akun dengan CMK

Saat Anda mencoba mengintegrasikan dari DynamoDB ke Amazon Redshift, tindakan awal diluncurkan dari Amazon Redshift. Tanpa izin yang tepat, tindakan ini dapat mengakibatkan kegagalan diam. Bagian berikut merinci izin yang diperlukan untuk integrasi lintas akun ini.

AWS KMS Kebijakan dan izin yang diperlukan

Ganti placeholder berikut dalam contoh:

  • REDSHIFT_ACCOUNT_ID: Akun AWS ID tempat Amazon Redshift di-host

  • DYNAMODB_ACCOUNT_ID: Akun AWS ID tempat DynamoDB di-host

  • REDSHIFT_ROLE_NAME: Nama peran IAM yang digunakan oleh Amazon Redshift

  • REGION: Di Wilayah AWS mana sumber daya Anda berada

  • TABLE_NAME: Nama tabel DynamoDB Anda

  • KMS_KEY_ID: ID kunci KMS Anda

Kebijakan kunci KMS di akun DynamoDB

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::DYNAMODB_ACCOUNT_ID:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow Redshift to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::REDSHIFT_ACCOUNT_ID:role/REDSHIFT_ROLE_NAME" }, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*" } ] }

Kebijakan IAM untuk peran Amazon Redshift (di akun Amazon Redshift)

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBAccess", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:ParitalBatchGetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:BatchGetItem", "dynamodb:GetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream", "dynamodb:ListStreams" ], "Resource": [ "arn:aws:dynamodb:REGION:DYNAMODB_ACCOUNT_ID:table/TABLE_NAME", "arn:aws:dynamodb:REGION:DYNAMODB_ACCOUNT_ID:table/TABLE_NAME/stream/*" ] }, { "Sid": "AllowKMSAccess", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "arn:aws:kms:REGION:DYNAMODB_ACCOUNT_ID:key/KMS_KEY_ID" } ] }

Hubungan kepercayaan untuk peran Amazon Redshift

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Kebijakan DynamoDB Table (jika menggunakan kebijakan berbasis sumber daya)

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRedshiftAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::REDSHIFT_ACCOUNT_ID:role/REDSHIFT_ROLE_NAME" }, "Action": [ "dynamodb:DescribeTable", "dynamodb:ParitalBatchGetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:BatchGetItem", "dynamodb:GetItem", "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream", "dynamodb:ListStreams" ], "Resource": [ "arn:aws:dynamodb:REGION:DYNAMODB_ACCOUNT_ID:table/TABLE_NAME", "arn:aws:dynamodb:REGION:DYNAMODB_ACCOUNT_ID:table/TABLE_NAME/stream/*" ] } ] }

Pertimbangan penting

  1. Pastikan kunci KMS berada di wilayah yang sama dengan tabel DynamoDB Anda.

  2. Kunci KMS harus berupa kunci yang dikelola pelanggan (CMK), bukan kunci. Kunci yang dikelola AWS

  3. Jika Anda menggunakan tabel global DynamoDB, konfigurasikan izin untuk semua wilayah yang relevan.

  4. Pertimbangkan untuk menambahkan pernyataan kondisi untuk membatasi akses berdasarkan titik akhir VPC atau rentang IP.

  5. Untuk meningkatkan keamanan, pertimbangkan untuk menggunakan aws:PrincipalOrgID kondisi untuk membatasi akses ke organisasi Anda.

  6. Pantau penggunaan kunci KMS melalui CloudTrail dan CloudWatch metrik.