Mengelola CMK menggunakan APIs - Layanan Terkelola untuk Apache Flink

Amazon Managed Service untuk Apache Flink (Amazon MSF) sebelumnya dikenal sebagai Amazon Kinesis Data Analytics untuk Apache Flink.

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

Mengelola CMK menggunakan APIs

Topik ini menjelaskan cara membuat, dan memperbarui KMS Anda CMKs menggunakan Amazon MSF APIs. Untuk mengikuti prosedur yang dijelaskan dalam topik ini, Anda harus memiliki izin untuk mengelola kunci KMS dan aplikasi Amazon MSF. Prosedur dalam topik ini menggunakan kebijakan kunci permisif, yang hanya untuk tujuan demonstrasi dan pengujian. Kami tidak menyarankan menggunakan kebijakan kunci permisif seperti itu untuk beban kerja produksi. Dalam skenario kehidupan nyata untuk beban kerja produksi, peran, izin, dan alur kerja diisolasi.

Buat dan tetapkan kunci KMS

Sebelum Anda mulai, buat kunci KMS. Untuk informasi tentang membuat kunci KMS, lihat Membuat kunci KMS di Panduan AWS Key Management Service Pengembang.

Buat kebijakan kunci KMS

Untuk menggunakan CMK di Amazon MSF, Anda harus menambahkan prinsip layanan berikut ke kebijakan utama Anda: dan. kinesisanalytics.amazonaws.com infrastructure.kinesisanalytics.amazonaws.com Amazon MSF menggunakan prinsip layanan ini untuk validasi dan akses sumber daya. Jika Anda tidak menyertakan prinsipal layanan ini, Amazon MSF menolak permintaan tersebut.

Kebijakan kunci KMS berikut memungkinkan Amazon MSF untuk menggunakan CMK untuk aplikasi,. MyCmkApplication Kebijakan ini memberikan izin yang diperlukan untuk Operator peran dan prinsipal layanan Amazon MSF, kinesisanalytics.amazonaws.com daninfrastructure.kinesisanalytics.amazonaws.com, untuk melakukan operasi berikut:

  • Jelaskan CMK

  • Enkripsi data aplikasi

  • Dekripsi data aplikasi

  • Buat hibah untuk kunci

Contoh berikut menggunakan peran IAM. Anda dapat membuat kebijakan kunci untuk kunci KMS menggunakan contoh berikut sebagai templat, tetapi pastikan untuk melakukan hal berikut:

  • Ganti arn:aws:iam::123456789012:role/Operator dengan Operator peran. Anda harus membuat Operator peran atau pengguna sebelum membuat kebijakan kunci. Gagal melakukan ini akan menyebabkan kegagalan permintaan Anda.

  • Ganti arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication dengan ARN aplikasi Anda.

  • Ganti kinesisanalytics.us-east-1.amazonaws.com dengan nilai layanan untuk Wilayah yang sesuai.

  • Ganti 123456789012 dengan kebijakan idKey akun Anda untuk CMK.

  • Tambahkan pernyataan kebijakan tambahan untuk mengizinkan administrator kunci mengelola kunci KMS. Gagal melakukan ini akan menyebabkan hilangnya akses untuk mengelola kunci.

Pernyataan kebijakan utama berikut ini besar karena dimaksudkan untuk eksplisit dan menunjukkan kondisi yang diperlukan setiap tindakan.

{ "Version": "2012-10-17", "Id": "MyMsfCmkApplicationKeyPolicy", "Statement": [ { "Sid": "AllowOperatorToDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/Operator" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com" } } }, { "Sid": "AllowOperatorToConfigureAppToUseKeyForApplicationState", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/Operator" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication", "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com" } } }, { "Sid": "AllowOperatorToConfigureAppToCreateGrantForRunningState", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/Operator" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication", "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com", "kms:GrantConstraintType": "EncryptionContextSubset" }, "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" } } }, { "Sid": "AllowMSFServiceToDescribeKey", "Effect": "Allow", "Principal": { "Service": [ "kinesisanalytics.amazonaws.com", "infrastructure.kinesisanalytics.amazonaws.com" ] }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication", "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowMSFServiceToGenerateDataKeyForDurableState", "Effect": "Allow", "Principal": { "Service": "kinesisanalytics.amazonaws.com" }, "Action": [ "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication", "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowMSFServiceToDecryptForDurableState", "Effect": "Allow", "Principal": { "Service": "kinesisanalytics.amazonaws.com" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" } } }, { "Sid": "AllowMSFServiceToUseKeyForRunningState", "Effect": "Allow", "Principal": { "Service": [ "infrastructure.kinesisanalytics.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" } } }, { "Sid": "AllowMSFServiceToCreateGrantForRunningState", "Effect": "Allow", "Principal": { "Service": [ "infrastructure.kinesisanalytics.amazonaws.com" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication", "kms:GrantConstraintType": "EncryptionContextSubset" }, "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" } } } ] }

Izin operator siklus hidup aplikasi (pemanggil API)

Kebijakan IAM berikut memastikan bahwa operator siklus hidup aplikasi memiliki izin yang diperlukan untuk menetapkan kunci KMS ke aplikasi,. MyCmkApplication

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMSFAPICalls", "Effect": "Allow", "Action": "kinesisanalytics:*", "Resource": "*" }, { "Sid": "AllowPassingServiceExecutionRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/MyCmkApplicationRole" }, { "Sid": "AllowDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com" } } }, { "Sid": "AllowMyCmkApplicationKeyOperationsForDurableState", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" } } }, { "Sid": "AllowMyCmkApplicationKeyOperationsForRunningState", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" } } }, { "Sid": "AllowMyCmkApplicationCreateGrantForRunningState", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" }, "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication", "kms:GrantConstraintType": "EncryptionContextSubset" } } } ] }

Perbarui aplikasi yang ada untuk menggunakan CMK

Di Amazon MSF, Anda dapat menerapkan kebijakan CMK ke aplikasi yang ada yang menggunakan Kunci milik AWS ()AOKs.

Secara default, Amazon MSF menggunakan AOKs untuk mengenkripsi semua data Anda dalam penyimpanan sementara (menjalankan penyimpanan aplikasi) dan penyimpanan tahan lama (penyimpanan aplikasi tahan lama). Ini berarti semua data yang tunduk pada pos pemeriksaan atau snapshot Flink dienkripsi menggunakan secara default. AOKs Saat Anda mengganti AOK dengan CMK, pos pemeriksaan dan snapshot baru dienkripsi dengan CMK. Namun, snapshot bersejarah akan tetap dienkripsi dengan AOK.

Untuk memperbarui aplikasi yang ada untuk menggunakan CMK
  1. Buat file JSON dengan konfigurasi berikut.

    Pastikan Anda mengganti nilai CurrentApplicationVersionId ke nomor versi aplikasi saat ini. Anda bisa mendapatkan nomor versi aplikasi Anda saat ini, menggunakan DescribeApplication.

    Dalam konfigurasi JSON ini, ingatlah untuk mengganti sample nilai dengan nilai aktual.

    { "ApplicationName": "MyCmkApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "CUSTOMER_MANAGED_KEY", "KeyIdUpdate": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } } }
  2. Simpan file ini. Misalnya, simpan dengan namaenable-cmk.json.

  3. Jalankan AWS CLI perintah update-application seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan file konfigurasi JSON yang Anda buat di langkah sebelumnya sebagai argumen file.

    aws kinesisanalyticsv2 update-application \ --cli-input-json file://enable-cmk.json

Konfigurasi sebelumnya diterima untuk memperbarui aplikasi untuk menggunakan CMK hanya jika kondisi berikut terpenuhi:

  • Pemanggil API memiliki pernyataan kebijakan yang memungkinkan akses ke kunci.

  • Kebijakan kunci memiliki pernyataan kebijakan yang memungkinkan pemanggil API mengakses kunci.

  • Kebijakan kunci memiliki pernyataan kebijakan yang memungkinkan prinsipal layanan MSF Amazon, misalnya, kinesisanalytics.amazonaws.com akses ke kunci.

Kembali dari CMK ke Kunci milik AWS

Untuk kembali dari CMK ke AOK
  1. Buat file JSON dengan konfigurasi berikut.

    Dalam konfigurasi JSON ini, ingatlah untuk mengganti sample nilai dengan nilai aktual.

    { "ApplicationName": "MyCmkApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "AWS_OWNED_KEY" } } }
  2. Simpan file ini. Misalnya, simpan dengan namadisable-cmk.json.

  3. Jalankan AWS CLI perintah update-application seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan file konfigurasi JSON yang Anda buat di langkah sebelumnya sebagai argumen file.

    aws kinesisanalyticsv2 update-application \ --cli-input-json file://disable-cmk.json