View a markdown version of this page

Mengelola kunci dan biaya enkripsi Amazon SNS - Amazon Simple Notification Service

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

Mengelola kunci dan biaya enkripsi Amazon SNS

Bagian berikut ini memberikan informasi tentang bekerja dengan kunci yang terkelola di AWS Key Management Service (AWS KMS).

catatan

Amazon SNS hanya mendukung kunci KMS enkripsi simetris. Anda tidak dapat menggunakan kunci KMS jenis lain untuk mengenkripsi sumber daya layanan Anda. Untuk bantuan menentukan apakah kunci KMS adalah kunci enkripsi simetris, lihat Mengidentifikasi kunci KMS asimetris.

Estimasi AWS KMS ongkos

Untuk memprediksi biaya dan lebih memahami AWS tagihan Anda, Anda mungkin ingin tahu seberapa sering Amazon SNS menggunakan tagihan Anda AWS KMS key.

catatan

Meskipun rumus berikut dapat memberikan ide yang sangat baik dari biaya yang diharapkan, biaya yang sebenarnya mungkin lebih tinggi karena sifat terdistribusi Amazon SNS.

Untuk menghitung jumlah permintaan API (R) per topikgunakan rumus berikut ini:

R = B / D * (2 * P)

B adalah periode penagihan (dalam detik).

D adalah periode penggunaan kembali kunci data (dalam hitungan detik—Amazon SNS menggunakan kembali kunci data hingga 5 menit).

P adalah jumlah prinsipal penerbitan yang dikirim ke topik Amazon SNS.

Berikut ini adalah contoh perhitungan. Untuk informasi harga sebenranya, lihat Harga AWS Key Management Service.

Contoh 1: Menghitung jumlah AWS KMS Panggilan API untuk 1 penerbit dan 1 topik

Contoh ini mengasumsikan sebagai berikut:

  • Periode penagihan adalah 1-31 Januari (2.678.400 detik).

  • Periode penggunaan kembali kunci data adalah 5 menit (300 detik).

  • Ada 1 topik.

  • Ada 1 penerbitan utama.

2,678,400 / 300 * (2 * 1) = 17,856

Contoh 2: Menghitung jumlah AWS KMS Panggilan API untuk beberapa penerbit dan 2 topik

Contoh ini mengasumsikan sebagai berikut:

  • Periode penagihan adalah 1-28 Februari (2.419.200 detik).

  • Periode penggunaan kembali kunci data adalah 5 menit (300 detik).

  • Ada 2 topik.

  • Topik pertama memiliki 3 prinsipal penerbitan.

  • Topik kedua memiliki 5 prinsipal penerbitan.

(2,419,200 / 300 * (2 * 3)) + (2,419,200 / 300 * (2 * 5)) = 129,024

Melakukan konfigurasi AWS KMS izin

Sebelum Anda dapat menggunakan SSE, Anda harus mengonfigurasi AWS KMS key kebijakan untuk mengizinkan enkripsi topik dan enkripsi serta dekripsi pesan. Untuk contoh dan informasi selengkapnya tentang izin AWS KMS , lihatIzin API AWS KMS : Tindakan dan Referensi Sumber Daya dalam Panduan Developer AWS Key Management Service . Untuk detail tentang cara mengatur topik Amazon SNS dengan enkripsi sisi server, lihat. Informasi tambahan

catatan

Anda juga dapat mengelola izin untuk kunci KMS enkripsi simetris menggunakan kebijakan IAM. Untuk informasi selengkapnya, lihat Menggunakan Kebijakan IAM dengan AWS KMS.

Meskipun Anda dapat mengonfigurasi izin global untuk mengirim dan menerima dari Amazon SNS, AWS KMS memerlukan penamaan secara eksplisit ARN lengkap KMS di wilayah tertentu di Resource bagian kebijakan IAM.

Anda juga harus memastikan kebijakan utama mengiz AWS KMS key inkan izin yang diperlukan. Untuk melakukannya, beri nama utama yang menghasilkan dan menggunakan pesan terenkripsi di Amazon SNS sebagai pengguna dalam kebijakan kunci KMS.

Atau, Anda dapat menentukan AWS KMS tindakan yang diperlukan dan KMS ARN dalam kebijakan IAM yang ditetapkan untuk prinsipal yang menerbitkan dan berlangganan untuk menerima pesan terenkripsi di Amazon SNS. Untuk informasi selengkapnya, lihat Mengelola Ak AWS KMS ses ke dalam Panduan AWS Key Management Service Pengembang.

Jika memilih kunci yang dikelola pelanggan untuk topik Amazon SNS Anda dan Anda menggunakan alias untuk mengontrol akses ke kunci KMS menggunakan kebijakan IAM atau kebijakan kunci KMS dengan kunci kondisikms:ResourceAliases, pastikan kunci yang dikelola pelanggan yang dipilih juga memiliki alias yang terkait. Untuk informasi selengkapnya tentang menggunakan alias untuk mengontrol akses ke kunci KMS, lihat Menggunakan alias untuk mengontrol akses ke kunci KMS di Panduan Peng AWS Key Management Service embang.

Mengizinkan pengguna untuk mengirim pesan ke topik dengan SSE

Penerbit harus memiliki kms:Decrypt izin kms:GenerateDataKey* dan untuk AWS KMS key.

{ "Statement": [{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }

Aktifkan kompatibilitas antara sumber acara dari AWS layanan dan topik terenkripsi

Beberapa AWS layanan mempublikasikan acara ke topik Amazon SNS. Untuk mengizinkan sumber peristiwa tersebut agar bekerja dengan topik terenkripsi, Anda harus melakukan langkah-langkah berikut in.

  1. Gunakan kunci yang dikelola pelanggan. Untuk informasi selengkapnya, lihat Membuat Kunci di Panduan Developer AWS Key Management Service .

  2. Untuk mengiz AWS inkan layanan memiliki kms:Decrypt izin kms:GenerateDataKey* dan, tambahkan pernyataan berikut ke kebijakan KMS.

    { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }
    Sumber peristiwa Prinsipal layanan
    Amazon CloudWatch cloudwatch.amazonaws.com
    Acara CloudWatch Amazon events.amazonaws.com
    AWS CodeCommit codecommit.amazonaws.com
    AWS Database Migration Service dms.amazonaws.com
    AWS Directory Service ds.amazonaws.com
    Amazon DynamoDB dynamodb.amazonaws.com
    Amazon Inspector inspector.amazonaws.com
    Amazon Redshift redshift.amazonaws.com
    Amazon RDS events.rds.amazonaws.com
    Gletser Amazon glacier.amazonaws.com
    Layanan Email Sederhana Amazon ses.amazonaws.com
    Layanan Penyimpanan Sederhana Amazon s3.amazonaws.com
    AWS Snowball Edge importexport.amazonaws.com
    AWS Manajer Insiden Manajer Sistem

    AWS System Manager Incident Manager terdiri dari dua prinsip layanan:

    ssm-incidents.amazonaws.com; ssm-contacts.amazonaws.com
    catatan

    Beberapa sumber peristiwa Amazon SNS mengharuskan Anda untuk memberikan peran IAM (bukan prinsipal layanan) dalam kebijakan: AWS KMS key

  3. Tambahkan kunci aws:SourceAccount dan aws:SourceArn kondisi ke kebijakan sumber daya KMS untuk lebih melindungi kunci KMS dari serangan wakil yang membing ungkan. Lihat daftar dokumentasi khusus layanan (di atas) untuk detail yang tepat dalam setiap kasus.

    penting

    Menambahkan aws:SourceAccountaws:SourceArn,, dan aws:SourceOrgID ke AWS KMS kebijakan tidak didukung untuk EventBridge-to-encrypted topik.

    { "Effect": "Allow", "Principal": { "Service": "service.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "customer-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type:customer-resource-id" } } }
  4. Aktifkan SSE untuk topik Anda menggunakan KMS Anda.

  5. Berikan ARN topik terenkripsi ke sumber peristiwa.

AWS KMS kesalahan

Saat Anda bekerja dengan Amazon SNS dan AWS KMS, Anda mungkin mengalami kesalahan. Daftar berikut ini menjelaskan kesalahan dan solusi pemecahan masalah yang dimungkinkan.

KMSAccessDeniedException

Ciphertext merujuk pada kunci yang tidak ada atau bahwa Anda tidak memiliki akses ke padanya.

Kode Status HTTP: 400

KMSDisabledException

Permintaan ditolak karena KMS yang ditentukan tidak diaktifkan.

Kode Status HTTP: 400

KMSInvalidStateException

Permintaan ditolak karena keadaan sumber daya yang ditentukan tidak valid untuk permintaan ini. Untuk informasi selengkapnya, lihat Status kunci AWS KMS keys di Panduan AWS Key Management Service Pengembang.

Kode Status HTTP: 400

KMSNotFoundException

Permintaan ditolak karena entitas atau sumber daya yang ditentukan tidak dapat ditemukan.

Kode Status HTTP: 400

KMSOptInRequired

ID kunci AWS akses memerlukan langganan untuk layanan.

Kode Status HTTP: 403

KMSThrottlingException

Permintaan ditolak karena throttling permintaan. Untuk informasi selengkapnya tentang throttling, lihat Ku ota di Panduan Peng AWS Key Management Service embang.

Kode Status HTTP: 400