Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Contoh kasus untuk pengendalian akses Amazon SNS

Mode fokus
Contoh kasus untuk pengendalian akses 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.

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

Bagian ini menjelaskan beberapa contoh kasus penggunaan umum untuk kontrol akses.

Berikan Akun AWS akses ke suatu topik

Katakanlah Anda memiliki topik di Amazon SNS, dan Anda ingin mengizinkan satu atau lebih Akun AWS untuk melakukan tindakan tertentu pada topik itu, seperti mempublikasikan pesan. Anda dapat melakukannya dengan menggunakan tindakan Amazon SNS API. AddPermission

AddPermissionTindakan ini memungkinkan Anda untuk menentukan topik, daftar Akun AWS IDs, daftar tindakan, dan label. Amazon SNS kemudian secara otomatis membuat dan menambahkan pernyataan kebijakan baru ke kebijakan kontrol akses topik. Anda tidak perlu menulis pernyataan kebijakan sendiri—Amazon SNS menangani ini untuk Anda. Jika Anda perlu menghapus kebijakan nanti, Anda dapat melakukannya dengan menelepon RemovePermission dan memberikan label yang Anda gunakan saat menambahkan izin.

Misalnya, jika Anda memanggil AddPermission topik arn:aws:sns:us-east- 2:444455556666:, tentukan MyTopic ID 1111-2222-3333, tindakan, dan label Akun AWS , Amazon SNS akan menghasilkan Publish dan menyisipkan pernyataan kebijakan berikut ke dalam kebijakan kontrol akses topik: grant-1234-publish

{ "Statement": [{ "Sid": "grant-1234-publish", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Publish"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic" }] }

Setelah pernyataan ini ditambahkan, Akun AWS 1111-2222-3333 akan memiliki izin untuk mempublikasikan pesan ke topik tersebut.

Informasi tambahan:

  • Manajemen kebijakan khusus: Meskipun AddPermission nyaman untuk memberikan izin, seringkali berguna untuk mengelola kebijakan kontrol akses topik secara manual untuk skenario yang lebih kompleks, seperti menambahkan kondisi atau memberikan izin ke peran atau layanan IAM tertentu. Anda dapat melakukannya dengan menggunakan SetTopicAttributes API untuk memperbarui atribut kebijakan secara langsung.

  • Praktik terbaik keamanan: Berhati-hatilah saat memberikan izin untuk memastikan bahwa hanya entitas tepercaya Akun AWS atau entitas yang memiliki akses ke topik Amazon SNS Anda. Secara teratur meninjau dan mengaudit kebijakan yang dilampirkan pada topik Anda untuk menjaga keamanan.

  • Batas kebijakan: Perlu diingat bahwa ada batasan ukuran dan kompleksitas kebijakan Amazon SNS. Jika Anda perlu menambahkan banyak izin atau kondisi rumit, pastikan kebijakan Anda tetap berada dalam batas-batas ini.

Batasi langganan ke HTTPS

Untuk membatasi protokol pengiriman notifikasi untuk topik Amazon SNS Anda ke HTTPS, Anda harus membuat kebijakan khusus. AddPermissionTindakan di Amazon SNS tidak memungkinkan Anda menentukan batasan protokol saat memberikan akses ke topik Anda. Oleh karena itu, Anda perlu menulis kebijakan secara manual yang memberlakukan pembatasan ini dan kemudian menggunakan SetTopicAttributes tindakan tersebut untuk menerapkan kebijakan tersebut ke topik Anda.

Berikut cara membuat kebijakan yang membatasi langganan ke HTTPS:

  1. Tulis kebijakan. Kebijakan harus menentukan Akun AWS ID yang ingin Anda berikan akses dan menerapkan kondisi bahwa hanya langganan HTTPS yang diizinkan. Di bawah ini adalah contoh kebijakan yang memberikan izin Akun AWS ID 1111-2222-3333 untuk berlangganan topik, tetapi hanya jika protokol yang digunakan adalah HTTPS.

    { "Statement": [{ "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Subscribe"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "sns:Protocol": "https" } } }] }
  2. Terapkan Kebijakan. Gunakan SetTopicAttributes tindakan di Amazon SNS API untuk menerapkan kebijakan ini ke topik Anda. Tetapkan Policy atribut topik ke kebijakan JSON yang Anda buat.

    snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:444455556666:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());

Informasi tambahan:

  • Menyesuaikan kontrol akses. Pendekatan ini memungkinkan Anda untuk menerapkan kontrol akses yang lebih terperinci, seperti membatasi protokol berlangganan, yang tidak mungkin dilakukan melalui tindakan saja. AddPermission Kebijakan khusus memberikan fleksibilitas untuk skenario yang memerlukan kondisi tertentu, seperti penegakan protokol atau pembatasan alamat IP.

  • Praktik terbaik keamanan. Membatasi langganan ke HTTPS meningkatkan keamanan notifikasi Anda dengan memastikan bahwa data dalam perjalanan dienkripsi. Tinjau kebijakan topik Anda secara teratur untuk memastikan mereka memenuhi persyaratan keamanan dan kepatuhan Anda.

  • Pengujian kebijakan. Sebelum menerapkan kebijakan dalam lingkungan produksi, ujilah di lingkungan pengembangan untuk memastikannya berperilaku seperti yang diharapkan. Ini membantu mencegah masalah akses yang tidak disengaja atau pembatasan yang tidak diinginkan.

Memublikasikan pesan ke antrean Amazon SQS

Untuk mempublikasikan pesan dari topik Amazon SNS Anda ke antrean Amazon SQS, Anda perlu mengonfigurasi izin yang benar pada antrian Amazon SQS. Meskipun Amazon SNS dan Amazon SQS AWS menggunakan bahasa kebijakan kontrol akses, Anda harus secara eksplisit menetapkan kebijakan pada antrian Amazon SQS untuk mengizinkan pesan dikirim dari topik Amazon SNS.

Anda dapat mencapai ini dengan menggunakan SetQueueAttributes tindakan untuk menerapkan kebijakan kustom ke antrean Amazon SQS. Tidak seperti Amazon SNS, Amazon SQS tidak mendukung tindakan untuk membuat AddPermission pernyataan kebijakan dengan kondisi. Karena itu, Anda harus menulis kebijakan secara manual.

Berikut ini adalah contoh kebijakan Amazon SQS yang memberikan izin Amazon SNS untuk mengirim pesan ke antrian Anda. Perhatikan bahwa kebijakan ini dikaitkan dengan antrean Amazon SQS, bukan topik Amazon SNS. Tindakan yang ditentukan adalah tindakan Amazon SQS, dan sumber daya adalah Nama Sumber Daya Amazon (ARN) dari antrian. Anda dapat mengambil ARN antrian dengan menggunakan tindakan. GetQueueAttributes

{ "Statement": [{ "Sid": "Allow-SNS-SendMessage", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": ["sqs:SendMessage"], "Resource": "arn:aws:sqs:us-east-2:444455556666:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:444455556666:MyTopic" } } }] }

Kebijakan ini menggunakan aws:SourceArn kondisi untuk membatasi akses ke antrean SQS berdasarkan sumber pesan yang dikirim. Ini memastikan bahwa hanya pesan yang berasal dari topik SNS yang ditentukan (dalam hal ini, arn:aws:sns:us-east- 2:444455556666:) yang diizinkan untuk dikirim ke antrian. MyTopic

Informasi tambahan:

  • Antrian ARN. Pastikan Anda mengambil ARN yang benar dari antrean Amazon SQS Anda menggunakan tindakan. GetQueueAttributes ARN ini penting untuk mengatur izin yang benar.

  • Praktik terbaik keamanan. Saat membuat kebijakan, selalu ikuti prinsip hak istimewa paling sedikit. Berikan hanya izin yang diperlukan ke topik Amazon SNS untuk berinteraksi dengan antrean Amazon SQS, dan tinjau kebijakan Anda secara teratur untuk memastikannya aman up-to-date

  • Kebijakan default di Amazon SNS. Amazon SNS tidak secara otomatis memberikan kebijakan default yang memungkinkan orang lain Layanan AWS atau akun mengakses topik yang baru dibuat. Secara default, topik Amazon SNS dibuat tanpa izin, artinya topik tersebut bersifat pribadi dan hanya dapat diakses oleh akun yang membuatnya. Untuk mengaktifkan akses untuk akun Layanan AWS, akun, atau kepala sekolah lainnya, Anda harus secara eksplisit menentukan dan melampirkan kebijakan akses ke topik tersebut. Ini sejalan dengan prinsip hak istimewa terkecil, memastikan bahwa tidak ada akses yang tidak diinginkan diberikan secara default.

  • Pengujian dan validasi. Setelah menyetel kebijakan, uji integrasi dengan memublikasikan pesan ke topik Amazon SNS dan memverifikasi bahwa pesan tersebut berhasil dikirim ke antrean Amazon SQS. Ini membantu mengonfirmasi bahwa kebijakan telah dikonfigurasi dengan benar.

Izinkan pemberitahuan acara Amazon S3 untuk mempublikasikan ke suatu topik

Untuk mengizinkan bucket Amazon S3 dari yang lain Akun AWS untuk mempublikasikan pemberitahuan acara ke topik Amazon SNS Anda, Anda perlu mengonfigurasi kebijakan akses topik yang sesuai. Ini melibatkan penulisan kebijakan khusus yang memberikan izin ke layanan Amazon S3 dari yang Akun AWS spesifik dan kemudian menerapkan kebijakan ini ke topik Amazon SNS Anda.

Inilah cara Anda dapat mengaturnya:

  1. Tulis kebijakan. Kebijakan tersebut harus memberikan layanan Amazon S3 (s3.amazonaws.com) izin yang diperlukan untuk mempublikasikan ke topik Amazon SNS Anda. Anda akan menggunakan SourceAccount kondisi ini untuk memastikan bahwa hanya yang ditentukan Akun AWS, yang memiliki bucket Amazon S3, yang dapat mempublikasikan pemberitahuan ke topik Anda.

    Berikut ini adalah contoh kebijakan.

    { "Statement": [{ "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:111122223333:MyTopic", "Condition": { "StringEquals": { "AWS:SourceAccount": "444455556666" } } }] }
    • Pemilik topik — 111122223333 adalah ID yang Akun AWS memiliki topik Amazon SNS.

    • Pemilik bucket Amazon S3 — 444455556666 adalah ID yang Akun AWS memiliki bucket Amazon S3 mengirimkan notifikasi.

  2. Terapkan Kebijakan. Gunakan SetTopicAttributes tindakan untuk menetapkan kebijakan ini pada topik Amazon SNS Anda. Ini akan memperbarui kontrol akses topik untuk menyertakan izin yang ditentukan dalam kebijakan kustom Anda.

    snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:111122223333:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());

Informasi tambahan:

  • Menggunakan SourceAccount kondisi. SourceAccountKondisi ini memastikan bahwa hanya peristiwa yang berasal dari yang ditentukan Akun AWS (444455556666 dalam kasus ini) yang dapat memicu topik Amazon SNS. Ini adalah langkah keamanan untuk mencegah akun yang tidak sah mengirim pemberitahuan ke topik Anda.

  • Layanan lain yang mendukungSourceAccount. SourceAccountKondisi ini didukung oleh layanan berikut. Sangat penting untuk menggunakan kondisi ini ketika Anda ingin membatasi akses ke topik Amazon SNS Anda berdasarkan akun asal.

    • Amazon API Gateway

    • Amazon CloudWatch

    • DevOpsGuru Amazon

    • Amazon EventBridge

    • GameLift Peladen Amazon

    • API SMS dan Suara Amazon Pinpoint

    • Amazon RDS

    • Amazon Redshift

    • Amazon S3 Glacier

    • Amazon SES

    • Amazon Simple Storage Service

    • AWS CodeCommit

    • AWS Directory Service

    • AWS Lambda

    • Manajer Insiden AWS Systems Manager

  • Pengujian dan validasi. Setelah menerapkan kebijakan, uji penyiapan dengan memicu peristiwa di bucket Amazon S3 dan mengonfirmasi bahwa itu berhasil dipublikasikan ke topik Amazon SNS Anda. Ini akan membantu memastikan bahwa kebijakan Anda dikonfigurasi dengan benar.

  • Praktik terbaik keamanan. Tinjau dan audit kebijakan topik Amazon SNS Anda secara berkala untuk memastikan kebijakan tersebut mematuhi persyaratan keamanan Anda. Membatasi akses hanya ke akun dan layanan tepercaya sangat penting untuk menjaga operasi yang aman.

Izinkan Amazon SES mempublikasikan ke topik yang dimiliki oleh akun lain

Anda dapat mengizinkan orang lain Layanan AWS untuk mempublikasikan ke topik yang dimiliki oleh orang lain Akun AWS. Misalkan Anda masuk ke akun 111122223333, membuka Amazon SES, dan membuat email. Untuk memublikasikan notifikasi tentang email ini ke topik Amazon SNS yang dimiliki akun 444455556666, Anda akan membuat kebijakan seperti berikut. Untuk melakukannya, Anda perlu memberikan informasi tentang penanggung jawab (layanan lainnya) dan kepemilikan setiap sumber daya. Pernyataan Resource menyediakan ARN topik, yang mencakup ID akun pemilik topik, 444455556666. Pernyataan "aws:SourceOwner": "111122223333" menentukan bahwa akun Anda memiliki email.

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:SourceOwner": "111122223333" } } } ] }

Saat memublikasikan acara ke Amazon SNS, layanan berikut mendukung: aws:SourceOwner

  • Amazon API Gateway

  • Amazon CloudWatch

  • DevOpsGuru Amazon

  • GameLift Peladen Amazon

  • API SMS dan Suara Amazon Pinpoint

  • Amazon RDS

  • Amazon Redshift

  • Amazon SES

  • AWS CodeCommit

  • AWS Directory Service

  • AWS Lambda

  • Manajer Insiden AWS Systems Manager

aws:SourceAccount versus aws:SourceOwner

penting

aws:SourceOwnertidak digunakan lagi dan layanan baru dapat diintegrasikan dengan Amazon SNS hanya melalui dan. aws:SourceArn aws:SourceAccount Amazon SNS masih mempertahankan kompatibilitas mundur untuk layanan yang ada yang saat ini mendukung. aws:SourceOwner

Kunci aws:SourceAccount dan aws:SourceOwner kondisi masing-masing ditetapkan oleh beberapa orang Layanan AWS ketika mereka mempublikasikan ke topik Amazon SNS. Ketika didukung, nilainya akan menjadi ID AWS akun 12 digit yang atas nama layanan tersebut menerbitkan data. Beberapa layanan mendukung satu, dan beberapa mendukung yang lain.

Izinkan akun di organisasi AWS Organizations untuk mempublikasikan ke topik di akun yang berbeda

AWS Organizations Layanan ini membantu Anda mengelola penagihan secara terpusat, mengontrol akses dan keamanan, dan berbagi sumber daya di seluruh Anda. Akun AWS

Anda dapat menemukan ID organisasi Anda di konsol Organizations. Untuk informasi selengkapnya, lihat Melihat detail organisasi dari akun manajemen.

Dalam contoh ini, setiap Akun AWS organisasi myOrgId dapat mempublikasikan ke topik Amazon SNS MyTopic di akun. 444455556666 Kebijakan memeriksa nilai ID organisasi menggunakan kunci syarat global aws:PrincipalOrgID.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "myOrgId" } } } ] }

Izinkan CloudWatch alarm apa pun untuk mempublikasikan ke topik di akun yang berbeda

penting

CloudWatch Alarm tidak mendukung penerbitan ke topik Amazon SNS dengan cara yang Akun AWS berbeda, bahkan jika kebijakan topik Amazon SNS mengizinkannya. Jika kasus penggunaan Anda memerlukan notifikasi Amazon SNS lintas akun, Anda harus menggunakan mekanisme perantara, seperti topik Amazon SNS di akun yang sama dengan alarm yang meneruskan pesan ke topik Amazon SNS di akun lain melalui Lambda atau aturan. EventBridge

Dalam hal ini, kebijakan berikut memungkinkan CloudWatch alarm apa pun di akun 111122223333 untuk dipublikasikan ke topik Amazon SNS di 444455556666 akun, CloudWatch tetapi Alarm tidak akan menggunakan kebijakan ini karena pembatasan lintas akun.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" } } } ] }
Solusi untuk menggunakan topik Amazon SNS lokal dan meneruskan pesan

Gunakan langkah-langkah berikut untuk mengaktifkan notifikasi CloudWatch Amazon SNS lintas akun untuk Alarm:

  1. Buat topik Amazon SNS di akun yang sama dengan CloudWatch Alarm (111122223333).

  2. Berlangganan fungsi Lambda atau EventBridge aturan Amazon ke topik Amazon SNS tersebut.

  3. Fungsi atau EventBridge aturan Lambda kemudian dapat mempublikasikan pesan ke topik Amazon SNS di akun target (444455556666).

Membatasi publikasi ke topik Amazon SNS hanya dari VPC endpoint tertentu

Dalam kasus ini, topik di akun 444455556666 diizinkan untuk memublikasikan hanya dari VPC endpoint dengan ID vpce-1ab2c34d.

{ "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1ab2c34d" } } }] }
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.