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
Topik
Amazon Simple Notification Service terintegrasi dengan AWS Identity and Access Management (IAM) sehingga Anda dapat menentukan tindakan Amazon SNS mana yang dapat dilakukan pengguna dengan sumber Akun AWS daya Amazon SNS. Anda dapat menentukan topik tertentu dalam kebijakan. Misalnya, Anda dapat menggunakan variabel saat membuat kebijakan IAM yang memberikan pengguna tertentu dalam organisasi Anda izin untuk menggunakan tindakan Publish
dengan topik tertentu di Akun AWS Anda. Untuk informasi selengkapnya, lihat Variabel Kebijakan dalam panduan Menggunakan IAM.
penting
Menggunakan Amazon SNS dengan IAM tidak mengubah cara Anda menggunakan Amazon SNS. Tidak ada perubahan pada tindakan Amazon SNS, dan tidak ada tindakan Amazon SNS baru yang terkait dengan pengguna dan pengendalian akses.
Untuk contoh kebijakan yang mencakup tindakan dan sumber daya Amazon SNS, lihat Contoh kebijakan untuk Amazon SNS.
Kebijakan IAM dan Amazon SNS bersama-sama
Anda menggunakan kebijakan IAM untuk membatasi akses pengguna Anda ke tindakan dan topik Amazon SNS. Kebijakan IAM dapat membatasi akses hanya untuk pengguna dalam AWS akun Anda, bukan ke yang lain. Akun AWS
Anda menggunakan kebijakan Amazon SNS dengan topik tertentu untuk membatasi siapa yang dapat bekerja dengan topik tersebut (misalnya, siapa yang dapat memublikasikan pesan ke topik, yang dapat berlangganan ke topik, dll.). Kebijakan Amazon SNS dapat memberikan akses ke orang lain Akun AWS, atau ke pengguna dalam milik Anda. Akun AWS
Untuk memberikan izin untuk topik Amazon SNS Anda ke pengguna Anda, Anda dapat menggunakan kebijakan IAM, kebijakan Amazon SNS, atau keduanya. Umumnya, Anda dapat mencapai hasil yang sama dengan baik. Sebagai contoh, diagram berikut menunjukkan kebijakan IAM dan kebijakan Amazon SNS yang setara. Kebijakan IAM memungkinkan tindakan Amazon Subscribe
SNS untuk topik yang disebut topic_xyz di akun Anda. AWS Kebijakan IAM dilampirkan pada pengguna Bob dan Susan (yang berarti Bob dan Susan memiliki izin yang tercantum dalam kebijakan). Kebijakan Amazon SNS juga memberikan Bob dan Susan izin untuk mengakses Subscribe
untuk topic_xyz.
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 kebijakan AWS IAM dan Amazon SNS: Sistem kebijakan Amazon SNS memungkinkan Anda memberikan izin kepada yang Akun AWS lain, sedangkan kebijakan IAM 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, baik kebijakan IAM maupun kebijakan Amazon SNS diterapkan pada Bob. Kebijakan IAM memberinya izin untuk Subscribe
topik apa pun, sedangkan Akun AWS kebijakan Amazon SNS memberinya izin untuk Publish
menggunakan topik tertentu (topic_xyz). Diagram berikut menggambarkan konsep.
Jika Bob mengirim permintaan untuk berlangganan topik apa pun di AWS akun, kebijakan IAM akan memungkinkan tindakan tersebut. Jika Bob mengirimkan permintaan untuk memublikasikan pesan ke topic_xyz, kebijakan Amazon SNS 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 yang dapat dilakukan adalah menambahkan kebijakan IAM yang menolak Bob mengakses tindakan Publish
pada semua topik. Kebijakan ketiga ini mengabaikan kebijakan Amazon SNS yang awalnya memberikan dia izin untuk memublikasikan ke topic_xyz, karena penolakan eksplisit selalu mengabaikan perizinan (untuk informasi lebih lanjut tentang logika evaluasi kebijakan, lihat Logika evaluasi). Diagram berikut menggambarkan konsep.
Untuk contoh kebijakan yang mencakup tindakan dan sumber daya Amazon SNS, lihat Contoh kebijakan untuk Amazon SNS. Untuk informasi selengkapnya tentang menulis kebijakan Amazon SNS, kunjungi dokumentasi teknis untuk Amazon SNS
Format ARN sumber daya Amazon SNS
Untuk Amazon SNS, topik adalah satu-satunya jenis sumber daya yang dapat Anda tentukan dalam kebijakan. Berikut adalah format Amazon Resource Name (ARN) untuk topik:
arn:aws:sns:region
:account_ID
:topic_name
Untuk informasi lebih lanjut tentang ARN, kunjungi ARN dalam Panduan Pengguna IAM.
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 masing-masing Wilayah berbeda yang didukung Amazon SNS, Anda dapat menentukan topik dengan ARN berikut.
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_*
Untuk kenyamanan Anda, ketika Anda membuat topik, Amazon SNS mengembalikan ARN topik dalam respon.
Tindakan API Amazon SNS
Dalam kebijakan IAM, Anda dapat menentukan tindakan apa pun yang ditawarkan Amazon SNS. Namun, tindakan ConfirmSubscription
dan Unsubscribe
tidak memerlukan autentikasi, yang berarti meskipun Anda menetapkan tindakan tersebut dalam kebijakan, IAM tidak akan membatasi akses pengguna ke tindakan tersebut.
Setiap tindakan yang Anda tentukan dalam kebijakan harus diawali dengan string huruf kecil sns:
. Untuk menentukan semua tindakan Amazon SNS, misalnya, Anda akan menggunakan sns:*
. Untuk daftar tindakan, kunjungi Referensi API Layanan Notifikasi Sederhana Amazon.
Kunci kebijakan Amazon SNS
Amazon SNS mengimplementasikan 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 untuk Layanan AWS dalam Panduan Pengguna IAM. Untuk daftar kunci kondisi yang dapat digunakan dalam beberapa Layanan AWS, lihat kunci konteks kondisi AWS global di Panduan Pengguna IAM.
Amazon SNS menggunakan kunci khusus layanan berikut. Gunakan kunci ini dalam kebijakan yang membatasi akses ke permintaan Subscribe
.
-
sns:endpoint—URL, alamat email, atau ARN dari permintaan
Subscribe
atau langganan yang telah 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 permintaanSubscribe
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 Amazon SNS.
catatan
Di masa depan, Amazon SNS mungkin menambahkan tindakan baru yang harus dimasukkan secara logis ke dalam salah satu kebijakan berikut, berdasarkan tujuan yang dinyatakan kebijakan.
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 kebijakan Amazon SNS atau kebijakan IAM untuk memungkinkan mitra memublikasikan ke topik tertentu. Jika pasangan Anda memiliki Akun AWS, mungkin lebih mudah untuk menggunakan kebijakan Amazon SNS. Namun, siapa pun di perusahaan mitra yang memiliki kredenal 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 dalam perusahaan Anda sendiri, dan menggunakan kebijakan IAM bukan kebijakan Amazon SNS.
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 tindakan Amazon SNS apa pun Publish
selain pada topik apa pun selain. WidgetPartnerTopic Hal ini hanya diperlukan jika terdapat kebijakan luas di tempat lain dalam sistem yang memberikan pengguna akses luas ke Amazon SNS.
{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect": "Deny", "NotAction": "sns:Publish", "NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ] }