Menggunakan kebijakan berbasis identitas dengan 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.

Menggunakan kebijakan berbasis identitas dengan Amazon SNS

Amazon Simple Notification Service terintegrasi dengan AWS Identity and Access Management (IAM) sehingga Anda dapat menentukan SNS tindakan Amazon mana yang Akun AWS dapat dilakukan pengguna dengan SNS sumber daya Amazon. Anda dapat menentukan topik tertentu dalam kebijakan. Misalnya, Anda dapat menggunakan variabel saat membuat IAM kebijakan yang memberikan izin kepada pengguna tertentu di organisasi Anda untuk menggunakan Publish tindakan dengan topik tertentu di organisasi Anda Akun AWS. Untuk informasi selengkapnya, lihat Variabel Kebijakan dalam IAM panduan Menggunakan.

penting

Menggunakan Amazon SNS dengan IAM tidak mengubah cara Anda menggunakan AmazonSNS. Tidak ada perubahan pada SNS tindakan Amazon, dan tidak ada SNS tindakan Amazon baru yang terkait dengan pengguna dan kontrol akses.

Untuk contoh kebijakan yang mencakup SNS tindakan dan sumber daya Amazon, lihatContoh kebijakan untuk Amazon SNS.

IAMdan SNS kebijakan Amazon bersama-sama

Anda menggunakan IAM kebijakan untuk membatasi akses pengguna ke SNS tindakan dan topik Amazon. IAMKebijakan dapat membatasi akses hanya untuk pengguna dalam AWS akun Anda, bukan untuk yang lain Akun AWS.

Anda menggunakan SNS kebijakan Amazon dengan topik tertentu untuk membatasi siapa yang dapat bekerja dengan topik itu (misalnya, siapa yang dapat mempublikasikan pesan ke sana, siapa yang dapat berlangganan, dll.). SNSKebijakan Amazon dapat memberikan akses ke orang lain Akun AWS, atau kepada pengguna di dalam milik Anda Akun AWS.

Untuk memberikan izin kepada pengguna untuk SNS topik Amazon, Anda dapat menggunakan IAM kebijakan, SNS kebijakan Amazon, atau keduanya. Umumnya, Anda dapat mencapai hasil yang sama dengan baik. Misalnya, diagram berikut menunjukkan IAM kebijakan dan SNS kebijakan Amazon yang setara. IAMKebijakan ini memungkinkan SNS Subscribe tindakan Amazon untuk topik yang disebut topic_xyz dalam IAM Kebijakan Anda Akun AWS dilampirkan ke pengguna Bob dan Susan (yang berarti bahwa Bob dan Susan memiliki izin yang dinyatakan dalam kebijakan). SNSKebijakan Amazon juga memberikan izin kepada Bob dan Susan Subscribe untuk mengakses topic_xyz.

Membandingkan IAM kebijakan dan kebijakan Amazon, menunjukkan bahwa kedua SNS kebijakan tersebut memberikan izin yang setara kepada dua pengguna, Bob dan Susan, yang memungkinkan mereka untuk berlangganan SNS topik Amazon tertentu dalam file. Akun AWS Perbedaan utama yang disorot adalah bahwa SNS kebijakan Amazon dapat memberikan izin kepada pengguna di berbagai tempat Akun AWS, sedangkan IAM kebijakan tidak dapat.
catatan

Contoh sebelumnya menunjukkan kebijakan sederhana tanpa syarat. Anda bisa menentukan syarat tertentu dalam kebijakan yang mana pun dan mendapatkan hasil yang sama.

Ada satu perbedaan antara AWS IAM dan SNS kebijakan Amazon: Sistem SNS kebijakan Amazon memungkinkan Anda memberikan izin kepada yang lain Akun AWS, sedangkan IAM kebijakan tidak.

Terserah Anda bagaimana Anda menggunakan kedua sistem bersama-sama untuk mengelola izin Anda, berdasarkan kebutuhan Anda. Contoh berikut menunjukkan cara sistem dua kebijakan bekerja sama.

contoh 1

Dalam contoh ini, IAM kebijakan dan SNS kebijakan Amazon berlaku untuk Bob. IAMKebijakan tersebut memberinya izin untuk Subscribe topik apa pun, sedangkan SNS kebijakan Amazon memberinya izin untuk menggunakan Publish topik tertentu (topic_xyz). Akun AWS Diagram berikut menggambarkan konsep.

Menunjukkan bagaimana IAM kebijakan dan SNS kebijakan Amazon berlaku untuk pengguna Bob, dengan IAM kebijakan yang memungkinkan dia untuk berlangganan topik apa pun di Akun AWS, dan SNS kebijakan Amazon yang memberinya izin untuk mempublikasikan pesan ke topik tertentu bernama “topic_xyz.” Diagram menekankan perbedaan antara izin umum yang diberikan oleh IAM kebijakan dan izin khusus yang diberikan oleh SNS kebijakan Amazon untuk topik tertentu.

Jika Bob mengirim permintaan untuk berlangganan topik apa pun di AWS akun, IAM kebijakan tersebut akan memungkinkan tindakan tersebut. Jika Bob mengirim permintaan untuk mempublikasikan pesan ke topic_xyz, SNS kebijakan Amazon akan mengizinkan tindakan tersebut.

contoh 2

Dalam contoh ini, kita mengembangkan contoh 1 (ada dua kebijakan yang diterapkan pada Bob). Katakanlah bahwa Bob memublikasikan pesan ke topic_xyz yang seharusnya tidak dia lakukan, jadi Anda ingin sepenuhnya menghapus kemampuannya memublikasikan ke topik. Hal termudah untuk dilakukan adalah menambahkan IAM kebijakan yang menolaknya mengakses Publish tindakan pada semua topik. Kebijakan ketiga ini mengesampingkan SNS kebijakan Amazon yang awalnya memberinya izin untuk mempublikasikan ke topic_xyz, karena penolakan eksplisit selalu mengesampingkan izin (untuk informasi lebih lanjut tentang logika evaluasi kebijakan, lihat). Logika evaluasi Diagram berikut menggambarkan konsep.

Ilustrasi bagaimana menambahkan IAM kebijakan yang menolak tindakan “Publikasikan” untuk semua topik dapat mengesampingkan SNS kebijakan Amazon yang ada yang memungkinkan pengguna Bob memublikasikan ke topik tertentu, “topic_xyz.” Kebijakan IAM penolakan lebih diutamakan daripada SNS kebijakan Amazon, yang secara efektif mencegah Bob menerbitkan ke topik apa pun, termasuk “topic_xyz.”

Untuk contoh kebijakan yang mencakup SNS tindakan dan sumber daya Amazon, lihatContoh kebijakan untuk Amazon SNS. Untuk informasi lebih lanjut tentang menulis SNS kebijakan Amazon, buka dokumentasi teknis untuk Amazon SNS.

ARNFormat SNS sumber daya Amazon

Untuk AmazonSNS, topik adalah satu-satunya jenis sumber daya yang dapat Anda tentukan dalam kebijakan. Berikut ini adalah format Amazon Resource Name (ARN) untuk topik.

arn:aws:sns:region:account_ID:topic_name

Untuk informasi lebih lanjut tentangARNs, buka Panduan IAM Pengguna. ARNs

Berikut ini adalah ARN untuk topik yang dinamai MyTopic di wilayah us-east-2, milik 123456789012. Akun AWS

arn:aws:sns:us-east-2:123456789012:MyTopic

Jika Anda memiliki topik yang disebutkan MyTopic di setiap Wilayah berbeda yang SNS didukung Amazon, Anda dapat menentukan topik dengan yang berikut iniARN.

arn:aws:sns:*:123456789012:MyTopic

Anda dapat menggunakan wildcard * dan ? dalam nama topik. Sebagai contoh, yang berikut ini dapat merujuk pada semua topik yang dibuat oleh Bob yang telah dia awali dengan bob_.

arn:aws:sns:*:123456789012:bob_*

Sebagai kenyamanan bagi Anda, saat Anda membuat topik, Amazon SNS mengembalikan topik sebagai tanggapan. ARN

SNSAPITindakan Amazon

Dalam IAM kebijakan, Anda dapat menentukan tindakan apa pun yang SNS ditawarkan Amazon. Namun, Unsubscribe tindakan ConfirmSubscription dan tindakan tidak memerlukan otentikasi, yang berarti bahwa meskipun Anda menentukan tindakan tersebut dalam kebijakan, tidak IAM akan membatasi akses pengguna ke tindakan tersebut.

Setiap tindakan yang Anda tentukan dalam kebijakan harus diawali dengan string huruf kecil sns:. Untuk menentukan semua SNS tindakan Amazon, misalnya, Anda akan menggunakansns:*. Untuk daftar tindakan, buka APIReferensi Layanan Pemberitahuan Sederhana Amazon.

Kunci SNS kebijakan Amazon

Amazon SNS menerapkan kunci kebijakan AWS lebar berikut, ditambah beberapa kunci khusus layanan.

Untuk daftar kunci kondisi yang didukung oleh masing-masing Layanan AWS, lihat Tindakan, sumber daya, dan kunci kondisi Layanan AWS di Panduan IAM Pengguna. Untuk daftar kunci kondisi yang dapat digunakan dalam beberapa Layanan AWS, lihat kunci konteks kondisi AWS global di Panduan IAM Pengguna.

Amazon SNS menggunakan kunci khusus layanan berikut. Gunakan kunci ini dalam kebijakan yang membatasi akses ke permintaan Subscribe.

  • sns:endpoint— Alamat emailURL, atau ARN dari Subscribe permintaan atau langganan yang dikonfirmasi sebelumnya. Gunakan dengan syarat string (lihat Contoh kebijakan untuk Amazon SNS) untuk membatasi akses ke titik akhir tertentu (misalnya, *@yourcompany.com).

  • sns:protocol—Nilai protocol dari permintaan Subscribe atau langganan yang telah dikonfirmasi sebelumnya. Gunakan dengan syarat string (lihat Contoh kebijakan untuk Amazon SNS) untuk membatasi publikasi ke protokol pengiriman tertentu (misalnya, https).

Contoh kebijakan untuk Amazon SNS

Bagian ini menunjukkan beberapa kebijakan sederhana untuk mengontrol akses pengguna ke AmazonSNS.

catatan

Di masa depan, Amazon SNS mungkin menambahkan tindakan baru yang secara logis harus dimasukkan dalam salah satu kebijakan berikut, berdasarkan tujuan yang dinyatakan kebijakan tersebut.

contoh 1: Memungkinkan grup untuk membuat dan mengelola topik

Dalam contoh ini, kami membuat kebijakan yang memberikan akses ke CreateTopic, ListTopics SetTopicAttributes, dan DeleteTopic.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:CreateTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:DeleteTopic"], "Resource": "*" }] }
contoh 2: Memungkinkan grup IT untuk memublikasikan pesan ke topik tertentu

Dalam contoh ini, kami membuat grup untuk IT, dan menetapkan kebijakan yang memberikan akses ke Publish pada topik tertentu yang diinginkan.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }
contoh 3: Berikan pengguna Akun AWS kemampuan untuk berlangganan topik

Dalam contoh ini, kami membuat kebijakan yang memberikan akses ke tindakan Subscribe, dengan syarat pencocokan string untuk kunci kebijakan sns:Protocol dan sns:Endpoint.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:Subscribe"], "Resource": "*", "Condition": { "StringLike": { "SNS:Endpoint": "*@example.com" }, "StringEquals": { "sns:Protocol": "email" } } }] }
contoh 4: Mengizinkan mitra memublikasikan pesan ke topik tertentu

Anda dapat menggunakan SNS kebijakan Amazon atau IAM kebijakan untuk mengizinkan mitra mempublikasikan ke topik tertentu. Jika pasangan Anda memiliki Akun AWS, mungkin lebih mudah untuk menggunakan SNS kebijakan Amazon. Namun, siapa pun di perusahaan mitra yang memiliki kredensyal AWS keamanan dapat mempublikasikan pesan ke topik tersebut. Contoh ini mengasumsikan bahwa Anda ingin membatasi akses ke orang (atau aplikasi) tertentu. Untuk melakukan ini, Anda perlu memperlakukan mitra seperti pengguna di dalam perusahaan Anda sendiri, dan menggunakan IAM kebijakan alih-alih SNS kebijakan Amazon.

Untuk contoh ini, kami membuat grup bernama WidgetCo yang mewakili perusahaan mitra; kami membuat pengguna untuk orang tertentu (atau aplikasi) di perusahaan mitra yang membutuhkan akses; dan kemudian kami menempatkan pengguna dalam grup.

Kami kemudian melampirkan kebijakan yang memberikan Publish akses grup pada topik tertentu bernama WidgetPartnerTopic.

Kami juga ingin mencegah WidgetCo grup melakukan hal lain dengan topik, jadi kami menambahkan pernyataan yang menolak izin untuk SNS tindakan Amazon selain topik apa pun selain Publish topik apa pun selain WidgetPartnerTopic. Ini diperlukan hanya jika ada kebijakan luas di tempat lain dalam sistem yang memberi pengguna akses luas ke AmazonSNS.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect": "Deny", "NotAction": "sns:Publish", "NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ] }