

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

# Keamanan Amazon SNS
<a name="security"></a>

[Model tanggung jawab AWS bersama model](https://aws.amazon.com/compliance/shared-responsibility-model/) berlaku untuk perlindungan data di. Seperti yang dijelaskan dalam model AWS ini, bertanggung jawab untuk melindungi infrastruktur global yang menjalankan semua AWS Cloud. Anda bertanggung jawab untuk mempertahankan kendali atas konten yang di-host pada infrastruktur ini. Konten ini mencakup konfigurasi keamanan dan tugas manajemen untuk AWS layanan yang Anda gunakan. Lihat informasi yang lebih lengkap tentang privasi data dalam [Pertanyaan Umum Privasi Data](https://aws.amazon.com/compliance/data-privacy-faq). Lihat informasi tentang perlindungan data di Eropa di pos blog [Model Tanggung Jawab Bersama dan GDPR AWS](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) di *Blog Keamanan AWS *.

Untuk tujuan perlindungan data, kami menyarankan Anda untuk melindungi Akun AWS kredensil dan menyiapkan akun pengguna individu dengan AWS Identity and Access Management (IAM). Dengan cara ini, setiap pengguna hanya diberi izin yang diperlukan untuk memenuhi tanggung jawab tugas mereka. Kami juga merekomendasikan agar Anda mengamankan data Anda dengan cara-cara berikut ini:
+ Gunakan autentikasi multi-faktor (MFA) pada setiap akun.
+ Gunakan SSL/TLS untuk berkomunikasi dengan AWS sumber daya. Kami merekomendasikan TLS 1.2 atau versi yang lebih baru.
+ Siapkan API dan pencatatan aktivitas pengguna dengan AWS CloudTrail.
+ Gunakan solusi AWS enkripsi, bersama dengan semua kontrol keamanan default dalam AWS layanan.
+ Gunakan layanan keamanan terkelola lanjutan seperti Amazon Macie, yang membantu menemukan dan mengamankan data pribadi yang disimpan di Amazon S3.
+ Jika Anda memerlukan modul kriptografi tervalidasi FIPS 140-2 saat mengakses AWS melalui antarmuka baris perintah atau API, gunakan titik akhir FIPS. Lihat informasi selengkapnya tentang titik akhir FIPS yang tersedia di [Standar Pemrosesan Informasi Federal (FIPS) 140-2](https://aws.amazon.com/compliance/fips/).
+ Perlindungan data pesan
  + Perlindungan data pesan adalah fitur utama baru Amazon SNS
  + Gunakan MDP untuk memindai pesan untuk informasi rahasia atau sensitif
  + Berikan audit pesan ke semua konten yang mengalir melalui topik
  + Menyediakan kontrol akses konten ke pesan yang dipublikasikan ke topik dan pesan yang disampaikan oleh topik

**penting**  
Kami sangat merekomendasikan agar Anda tidak pernah memasukkan informasi identifikasi yang sensitif, seperti nomor rekening pelanggan Anda, ke dalam tanda atau bidang isian bebas seperti bidang Nama. Ini termasuk saat Anda bekerja dengan Amazon SNS atau Amazon Web Services lainnya menggunakan konsol, API AWS CLI, atau. AWS SDKs Data apa pun yang Anda masukkan ke dalam tanda atau bidang isian bebas yang digunakan untuk nama dapat digunakan untuk log penagihan atau log diagnostik. Jika Anda menyediakan URL ke server eksternal, kami sangat menyarankan agar Anda tidak menyertakan informasi kredensial dalam URL untuk memvalidasi permintaan Anda ke server itu.

# Enkripsi data Amazon SNS
<a name="sns-data-encryption"></a>

Perlindungan data mengacu pada perlindungan data saat dalam transit (saat melakukan perjalanan ke dan dari Amazon SNS) dan saat diam (sementara data disimpan di dalam disk di pusat data Amazon SNS). Anda dapat melindungi data saat transit menggunakan Secure Socket Layer (SSL) atau enkripsi di sisi klien. Secara default, Amazon SNS menyimpan pesan dan file menggunakan enkripsi disk. Anda dapat melindungi data saat istirahat dengan meminta Amazon SNS untuk mengenkripsi pesan Anda sebelum menyimpannya ke sistem file terenkripsi di pusat datanya. Amazon SNS merekomendasikan penggunaan SSE untuk enkripsi data yang dioptimalkan.

# Mengamankan data Amazon SNS dengan enkripsi sisi server
<a name="sns-server-side-encryption"></a>

Enkripsi sisi server (SSE) memungkinkan Anda menyimpan data sensitif dalam topik terenkripsi dengan melindungi konten pesan dalam topik Amazon SNS menggunakan kunci yang dikelola di (). AWS Key Management Service AWS KMS

SSE mengenkripsi olahpesan segera setelah Amazon SNS menerimanya. Pesan disimpan dalam bentuk terenkripsi, dan hanya didekripsi saat dikirim.
+ Untuk informasi tentang mengelola SSE menggunakan Konsol Manajemen AWS atau AWS SDK untuk Java (dengan menyetel `KmsMasterKeyId` atribut menggunakan tindakan `[CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)` dan `[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)` API), lihat[Menyiapkan enkripsi topik Amazon SNS dengan enkripsi sisi server](sns-enable-encryption-for-topic.md). 
+ Untuk informasi tentang membuat topik terenkripsi menggunakan CloudFormation (dengan menyetel `KmsMasterKeyId` properti menggunakan `[AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)` sumber daya), lihat *AWS CloudFormation Panduan Pengguna*.

**penting**  
Semua permintaan untuk topik dengan SSE yang diaktifkan harus menggunakan HTTPS dan [Versi Tanda Tangan 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).  
Untuk informasi tentang kompatibilitas layanan lainnya dengan topik terenkripsi, lihat dokumentasi layanan Anda.  
Amazon SNS hanya mendukung kunci KMS enkripsi simetris. Anda tidak dapat menggunakan jenis kunci KMS lainnya untuk mengenkripsi sumber daya layanan Anda. Untuk bantuan menentukan apakah kunci KMS adalah kunci enkripsi simetris, lihat [Mengidentifikasi kunci KMS asimetris](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html).

AWS KMS menggabungkan perangkat keras dan perangkat lunak yang aman dan sangat tersedia untuk menyediakan sistem manajemen kunci yang diskalakan untuk cloud. Saat Anda menggunakan Amazon SNS AWS KMS, [kunci data yang mengenkripsi data](#sse-key-terms) pesan Anda juga dienkripsi dan disimpan dengan data yang dilindunginya.

Berikut ini adalah manfaat menggunakan AWS KMS:
+ Anda dapat membuat dan mengelola [AWS KMS key](#sse-key-terms)sendiri.
+ Anda juga dapat menggunakan kunci KMS yang AWS dikelola untuk Amazon SNS, yang unik untuk setiap akun dan wilayah.
+ Standar AWS KMS keamanan dapat membantu Anda memenuhi persyaratan kepatuhan terkait enkripsi.

Untuk informasi lebih lanjut, lihat [Apa itu AWS Key Management Service?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) di *Panduan AWS Key Management Service Pengembang*.

## Lingkup enkripsi
<a name="what-does-sse-encrypt"></a>

SSE mengenkripsi isi pesan dalam topik Amazon SNS.

SSE tidak mengenkripsi berikut ini:
+ Metadata topik (nama topik dan atribut)
+ Metadata pesan (subjek, ID pesan, timestamp, dan atribut)
+ Kebijakan perlindungan data 
+ Metrik per topik

**catatan**  
Pesan dienkripsi hanya jika dikirim setelah enkripsi topik diaktifkan. Amazon SNS tidak mengenkripsi pesan backlogged.
Setiap pesan terenkripsi tetap dienkripsi bahkan jika enkripsi topiknya dinonaktifkan.

## Istilah kunci
<a name="sse-key-terms"></a>

Istilah kunci berikut ini dapat membantu Anda lebih memahami fungsionalitas SSE. Untuk deskripsi detail, lihat *[Referensi API Layanan Notifikasi Sederhana Amazon](https://docs.aws.amazon.com/sns/latest/api/)*.

**Kunci data**  
Kunci enkripsi data (DEK) bertanggung jawab untuk mengenkripsi isi pesan Amazon SNS.  
Untuk informasi lebih lanjut, lihat [Kunci Data](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) dalam *Panduan Developer AWS Key Management Service * dan [Enkripsi Amplop](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption) dalam *Panduan Developer AWS Encryption SDK *.

**AWS KMS key ID**  
Alias, alias ARN, ID kunci, atau ARN kunci dari, atau kustom AWS KMS—di AWS KMS key akun Anda atau di akun lain. Sementara alias yang AWS dikelola AWS KMS untuk Amazon SNS `alias/aws/sns` selalu, alias AWS KMS kustom dapat, misalnya, menjadi. `alias/MyAlias` Anda dapat menggunakan AWS KMS kunci ini untuk melindungi pesan dalam topik Amazon SNS.   
Ingatlah hal-hal berikut ini:  
+ Pertama kali Anda menggunakan Konsol Manajemen AWS untuk menentukan KMS AWS terkelola untuk Amazon SNS untuk suatu topik AWS KMS , membuat AWS KMS terkelola untuk Amazon SNS.
+ Atau, saat pertama kali Anda menggunakan `Publish` tindakan pada topik dengan SSE diaktifkan, AWS KMS membuat KMS AWS terkelola untuk Amazon SNS.
Anda dapat membuat AWS KMS kunci, menentukan kebijakan yang mengontrol bagaimana AWS KMS kunci dapat digunakan, dan mengaudit AWS KMS penggunaan menggunakan **AWS KMS keys**bagian AWS KMS konsol atau `[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)` AWS KMS tindakan. Untuk informasi selengkapnya, lihat [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)dan [Membuat Kunci](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) di *Panduan AWS Key Management Service Pengembang*. Untuk contoh AWS KMS pengidentifikasi lainnya, lihat [KeyId](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters)di *Referensi AWS Key Management Service API*. Untuk informasi tentang menemukan AWS KMS pengenal, lihat [Menemukan ID Kunci dan ARN](https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn) di Panduan *AWS Key Management Service Pengembang.*  
Ada biaya tambahan untuk penggunaan AWS KMS. Untuk informasi selengkapnya, lihat [Memperkirakan biaya AWS KMS](sns-key-management.md#sse-estimate-kms-usage-costs) dan [Harga AWS Key Management Service](https://aws.amazon.com/kms/pricing).

# Mengelola kunci dan biaya enkripsi Amazon SNS
<a name="sns-key-management"></a>

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 jenis kunci KMS lainnya untuk mengenkripsi sumber daya layanan Anda. Untuk bantuan menentukan apakah kunci KMS adalah kunci enkripsi simetris, lihat [Mengidentifikasi kunci KMS asimetris](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html).

## Memperkirakan biaya AWS KMS
<a name="sse-estimate-kms-usage-costs"></a>

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 topik*gunakan 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal) penerbitan yang dikirim ke topik Amazon SNS.

Berikut ini adalah contoh perhitungan. Untuk informasi harga sebenranya, lihat [Harga AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

### Contoh 1: Menghitung jumlah panggilan AWS KMS API untuk 1 penerbit dan 1 topik
<a name="example-1-topic-1-publisher"></a>

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 panggilan AWS KMS API untuk beberapa penerbit dan 2 topik
<a name="example-2-topics-multiple-publishers"></a>

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
```

## Mengkonfigurasi izin AWS KMS
<a name="sns-what-permissions-for-sse"></a>

Sebelum Anda dapat menggunakan SSE, Anda harus mengonfigurasi AWS KMS key kebijakan untuk mengizinkan enkripsi topik dan enkripsi dan dekripsi pesan. Untuk contoh dan informasi selengkapnya tentang izin AWS KMS , lihat[Izin API AWS KMS : Tindakan dan Referensi Sumber Daya](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) dalam *Panduan Developer AWS Key Management Service *. Untuk detail tentang cara mengatur topik Amazon SNS dengan enkripsi sisi server, lihat. [Informasi tambahan](sns-enable-encryption-for-topic.md#set-up-topic-with-sse)

**catatan**  
Anda juga dapat mengelola izin untuk kunci KMS enkripsi simetris menggunakan kebijakan IAM. Untuk informasi selengkapnya, lihat [Menggunakan Kebijakan IAM dengan AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html).  
Meskipun Anda dapat mengonfigurasi izin global untuk mengirim dan menerima dari Amazon SNS AWS KMS , memerlukan secara eksplisit penamaan ARN lengkap di wilayah tertentu di KMSs bagian kebijakan IAM. `Resource`

Anda juga harus memastikan bahwa kebijakan utama AWS KMS key mengizinkan 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 ke prinsipal yang menerbitkan dan berlangganan untuk menerima pesan terenkripsi di Amazon SNS. Untuk informasi selengkapnya, lihat [Mengelola Akses ke AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access) 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 kondisi`kms:ResourceAliases`, pastikan bahwa kunci yang dikelola pelanggan yang dipilih juga memiliki alias yang terkait. *Untuk informasi selengkapnya tentang penggunaan alias untuk mengontrol akses ke kunci KMS, lihat [Menggunakan alias untuk mengontrol akses ke kunci KMS](https://docs.aws.amazon.com/kms/latest/developerguide/alias-authorization.html) di Panduan Pengembang.AWS Key Management Service *

### Mengizinkan pengguna untuk mengirim pesan ke topik dengan SSE
<a name="send-to-encrypted-topic"></a>

Penerbit harus memiliki `kms:GenerateDataKey*` dan `kms:Decrypt` izin 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
<a name="compatibility-with-aws-services"></a>

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](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) di *Panduan Developer AWS Key Management Service *.

1. Untuk mengizinkan AWS layanan memiliki `kms:GenerateDataKey*` dan `kms:Decrypt` izin, tambahkan pernyataan berikut ke kebijakan KMS.

   ```
   {
     "Statement": [{
       "Effect": "Allow",
       "Principal": {
         "Service": "service.amazonaws.com"
       },
       "Action": [
         "kms:GenerateDataKey*",
         "kms:Decrypt"
       ],
       "Resource": "*"
     }]
   }
   ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/sns-key-management.html)
**catatan**  
Beberapa sumber acara Amazon SNS mengharuskan Anda untuk memberikan peran IAM (bukan prinsip layanan) dalam kebijakan: AWS KMS key   
[Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ASGettingNotifications.html)
[Amazon Elastic Transcoder](https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/notifications.html)
[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals.html#approvals-configuration-options)
[AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/notifications-for-AWS-Config.html)
[AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.sns.html)
[AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sns-rule.html)
[EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/ibhow-integrations.html#integ-sns-encrypted)

1. Tambahkan kunci `aws:SourceAccount` dan `aws:SourceArn` kondisi ke kebijakan sumber daya KMS untuk lebih melindungi kunci KMS dari serangan [wakil yang membingungkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Lihat daftar dokumentasi khusus layanan (di atas) untuk detail yang tepat dalam setiap kasus.
**penting**  
Menambahkan `aws:SourceAccount``aws: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"
       }
     }
   }
   ```

1. [Aktifkan SSE untuk topik Anda](sns-enable-encryption-for-topic.md) menggunakan KMS Anda.

1. Berikan ARN topik terenkripsi ke sumber peristiwa.

## AWS KMS kesalahan
<a name="sse-troubleshooting-errors"></a>

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

**KMSDisabledPengecualian**  
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](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) dalam *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 ini.  
Kode Status HTTP: 403

**KMSThrottlingPengecualian**  
Permintaan ditolak karena throttling permintaan. *Untuk informasi selengkapnya tentang pembatasan, lihat [Kuota di Panduan Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second).AWS Key Management Service *  
Kode Status HTTP: 400

# Menyiapkan enkripsi topik Amazon SNS dengan enkripsi sisi server
<a name="sns-enable-encryption-for-topic"></a>

Amazon SNS mendukung enkripsi sisi server (SSE) untuk melindungi konten pesan menggunakan (). AWS Key Management Service AWS KMS Ikuti petunjuk di bawah ini untuk mengaktifkan SSE menggunakan konsol Amazon SNS atau CDK.

## Opsi 1: Aktifkan enkripsi menggunakan Konsol Manajemen AWS
<a name="enable-encryption-console"></a>

1. Masuk ke [Konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Arahkan ke halaman **Topik**, pilih **topik** Anda, dan pilih **Edit**.

1. Perluas bagian **Enkripsi** dan lakukan hal berikut ini: 
   + **Alihkan enkripsi ke Aktifkan.**
   + Pilih **AWS Managed SNS Key** (alias/aws/sns) sebagai kunci enkripsi. Ini dipilih secara default.

1. Pilih **Simpan perubahan**.

**catatan**  
Secara otomatis dibuat jika belum ada. Kunci yang dikelola AWS 
Jika Anda tidak melihat kunci atau memiliki izin yang tidak memadai, mintalah administrator Anda untuk `kms:ListAliases` dan`kms:DescribeKey`.

## Opsi 2: Aktifkan enkripsi menggunakan AWS CDK
<a name="enable-encryption-cdk"></a>

Untuk menggunakan SNS  kunci AWS terkelola dalam aplikasi CDK Anda, tambahkan cuplikan berikut:

```
import software.amazon.awscdk.services.sns.*;
import software.amazon.awscdk.services.kms.*;
import software.amazon.awscdk.core.*;

public class SnsEncryptionExample extends Stack {
    public SnsEncryptionExample(final Construct scope, final String id) {
        super(scope, id);

        // Define the managed SNS key
        IKey snsKey = Alias.fromAliasName(this, "helloKey", "alias/aws/sns");

        // Create the SNS Topic with encryption enabled
        Topic.Builder.create(this, "MyEncryptedTopic")
            .masterKey(snsKey)
            .build();
    }
}
```

## Informasi tambahan
<a name="set-up-topic-with-sse"></a>
+ **Kunci KMS kustom** - Anda dapat menentukan kunci kustom jika diperlukan. Di konsol Amazon SNS, pilih kunci KMS kustom Anda dari daftar atau masukkan ARN.
+ **Izin untuk kunci KMS kustom - Jika menggunakan kunci** KMS kustom, sertakan yang berikut ini dalam kebijakan kunci untuk mengizinkan Amazon SNS mengenkripsi dan mendekripsi pesan:

```
{ 
    "Effect": "Allow", 
    "Principal": { 
        "Service": "sns.amazonaws.com" 
     },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    "Resource": "*",
    "Condition": {
        "ArnLike": { 
            "aws:SourceArn": "arn:aws:service:region:customer-account-id:resource-type/customer-resource-id" 
        },
        "StringEquals": { 
            "kms:EncryptionContext:aws:sns:topicArn": "arn:aws:sns:your_region:customer-account-id:your_sns_topic_name" 
        }
    }
}
```

## Dampak pada konsumen
<a name="enable-encryption-impact-on-consumers"></a>

Mengaktifkan SSE tidak mengubah cara pelanggan mengkonsumsi pesan. AWS mengelola enkripsi dan dekripsi secara transparan. Pesan tetap dienkripsi saat istirahat dan secara otomatis didekripsi sebelum dikirim ke pelanggan. Untuk keamanan optimal, AWS rekomendasikan untuk mengaktifkan HTTPS untuk semua titik akhir untuk memastikan transmisi pesan yang aman.

# Menyiapkan enkripsi topik Amazon SNS dengan langganan antrian Amazon SQS terenkripsi
<a name="sns-enable-encryption-for-topic-sqs-queue-subscriptions"></a>

Anda dapat mengaktifkan enkripsi sisi server (SSE) untuk topik untuk melindungi datanya. Untuk mengizinkan Amazon SNS mengirim pesan ke antrian Amazon SQS terenkripsi, kunci terkelola pelanggan yang terkait dengan antrian Amazon SQS harus memiliki pernyataan kebijakan yang memberikan akses prinsipal layanan Amazon SNS ke tindakan API dan. AWS KMS `GenerateDataKey` `Decrypt` Untuk informasi selengkapnya tentang menggunakan SSE, lihat [Mengamankan data Amazon SNS dengan enkripsi sisi server](sns-server-side-encryption.md).

Topik ini menjelaskan cara mengaktifkan SSE untuk topik Amazon SNS dengan langganan antrian Amazon SQS terenkripsi menggunakan. Konsol Manajemen AWS

## Langkah 1: Buat kunci KMS kustom
<a name="create-custom-cmk"></a>

1. Masuk ke [konsol AWS KMS](https://console.aws.amazon.com/kms/) dengan pengguna yang memiliki setidaknya kebijakan `AWSKeyManagementServicePowerUser`.

1. Pilih **Buat kunci**.

1. **Untuk membuat kunci KMS enkripsi simetris, untuk **Key type** pilih Symmetric.**

   Untuk informasi tentang cara membuat kunci KMS asimetris di AWS KMS konsol, lihat [Membuat kunci KMS asimetris](https://docs.aws.amazon.com/kms/latest/developerguide/asymm-create-key.html#create-asymmetric-keys-console) (konsol).

1. Dalam **Penggunaan kunci**, opsi **Enkripsi dan dekripsi** dipilih untuk Anda.

   Untuk informasi tentang cara membuat kunci KMS yang menghasilkan dan memverifikasi kode MAC, lihat [Membuat kunci KMS HMAC](https://docs.aws.amazon.com/kms/latest/developerguide/hmac-create-key.html).

   Untuk informasi tentang **opsi lanjutan**, lihat Kunci [tujuan khusus](https://docs.aws.amazon.com/kms/latest/developerguide/key-types.html).

1. Pilih **Berikutnya**.

1. Ketik alias untuk kunci KMS. Nama alias tidak dapat dimulai dengan **aws/**. **aws/**Awalan dicadangkan oleh Amazon Web Services untuk mewakili Kunci yang dikelola AWS di akun Anda.
**catatan**  
Menambahkan, menghapus, atau memperbarui alias dapat mengizinkan atau menolak izin ke kunci KMS. Untuk detailnya, lihat [ABAC untuk AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) dan [Menggunakan alias untuk mengontrol akses ke kunci KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#hmac-key-concept).

   Alias adalah nama tampilan yang dapat Anda gunakan untuk mengidentifikasi kunci KMS. Kami menyarankan Anda memilih alias yang menunjukkan jenis data yang Anda rencanakan untuk dilindungi atau aplikasi yang Anda rencanakan untuk digunakan dengan kunci KMS.

   Alias diperlukan saat Anda membuat kunci KMS di file. Konsol Manajemen AWS Mereka opsional saat Anda menggunakan [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi.

1. (Opsional) Ketik deskripsi untuk kunci KMS.

   Anda dapat menambahkan deskripsi sekarang atau memperbaruinya kapan saja kecuali [status kuncinya](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) adalah `Pending Deletion` atau`Pending Replica Deletion`. Untuk menambah, mengubah, atau menghapus deskripsi kunci terkelola pelanggan yang ada, [edit deskripsi](https://docs.aws.amazon.com/kms/latest/developerguide/editing-keys.html) di Konsol Manajemen AWS atau gunakan [UpdateKeyDescription](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html)operasi.

1. (Opsional) Ketik kunci tanda dan nilai tanda opsional. Untuk menambahkan lebih dari satu tag ke tombol KMS, pilih **Tambah tag**.
**catatan**  
Menandai atau melepas tag kunci KMS dapat mengizinkan atau menolak izin ke kunci KMS. Untuk detailnya, lihat [ABAC untuk AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html) dan [Menggunakan tag untuk mengontrol akses ke kunci KMS](https://docs.aws.amazon.com/kms/latest/developerguide/tag-authorization.html).

   Saat Anda menambahkan tag ke AWS sumber daya Anda, AWS buat laporan alokasi biaya dengan penggunaan dan biaya yang dikumpulkan berdasarkan tag. Tag juga dapat digunakan untuk mengontrol akses ke kunci KMS. [Untuk informasi tentang menandai kunci KMS, lihat [Menandai kunci](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html) dan ABAC untuk. AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/abac.html)

1. Pilih **Berikutnya**.

1. Pilih pengguna IAM dan peran yang dapat mengelola kunci KMS.
**catatan**  
Kebijakan kunci ini memberikan kontrol Akun AWS penuh atas kunci KMS ini. Ini memungkinkan administrator akun untuk menggunakan kebijakan IAM untuk memberikan izin kepada prinsipal lain untuk mengelola kunci KMS. Untuk detailnya, lihat [Kebijakan kunci default](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html).  
   
Praktik terbaik IAM mencegah penggunaan pengguna IAM dengan kredensil jangka panjang. Bila memungkinkan, gunakan peran IAM, yang menyediakan kredensi sementara. Untuk detailnya, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) di Panduan Pengguna IAM.

1. (Opsional) Untuk mencegah pengguna dan peran IAM yang dipilih menghapus kunci KMS ini, di bagian **Penghapusan kunci** di bagian bawah halaman, kosongkan kotak centang **Izinkan administrator kunci untuk menghapus kunci** ini.

1. Pilih **Berikutnya**.

1. Pilih pengguna IAM dan peran yang dapat menggunakan kunci dalam operasi [kriptografi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). Pilih **Berikutnya**.

1. Pada halaman **Meninjau dan mengedit kebijakan kunci**, tambahkan pernyataan berikut ini ke kebijakan kunci, dan kemudian pilih **Selesai**.

   ```
   {
       "Sid": "Allow Amazon SNS to use this key",
       "Effect": "Allow",
       "Principal": {
           "Service": "sns.amazonaws.com"
       },
       "Action": [
           "kms:Decrypt",
           "kms:GenerateDataKey*"
       ],
       "Resource": "*"
   }
   ```

Kunci terkelola pelanggan baru Anda muncul di daftar kunci.

## Langkah 2: Buat topik Amazon SNS terenkripsi
<a name="create-encrypted-topic"></a>

1. Masuk ke [Konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Pada panel navigasi, pilih **Topik**.

1. Pilih **Buat topik**.

1. Pada halaman **Buat topik baru**, untuk **Nama**, masukkan nama topik (sebagai contoh, `MyEncryptedTopic`) dan kemudian pilih **Buat topik**.

1. Perluas bagian **Enkripsi** dan lakukan hal berikut ini: 

   1. Pilih **Aktifkan enkripsi sisi server**.

   1. Tentukan kunci yang dikelola pelanggan. Untuk informasi selengkapnya, lihat [Istilah kunci](sns-server-side-encryption.md#sse-key-terms).

      Untuk setiap jenis kunci yang dikelola pelanggan, **ARN** **Deskripsi**, **Akun**, dan kunci yang dikelola pelanggan ditampilkan.
**penting**  
Jika Anda bukan pemilik kunci yang dikelola pelanggan, atau jika Anda masuk dengan akun yang tidak memiliki `kms:DescribeKey` izin `kms:ListAliases` dan, Anda tidak akan dapat melihat informasi tentang kunci yang dikelola pelanggan di konsol Amazon SNS.  
Mintalah pemilik kunci yang dikelola pelanggan untuk memberi Anda izin ini. Untuk informasi selengkapnya, lihat [Izin API AWS KMS : Referensi Tindakan dan Sumber Daya](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) dalam *Panduan Developer AWS Key Management Service *.

   1. Untuk **kunci terkelola pelanggan**, pilih **MyCustomKey**[yang Anda buat sebelumnya](#create-custom-cmk), lalu pilih **Aktifkan enkripsi sisi server**.

1. Pilih **Simpan perubahan**.

   SSE diaktifkan untuk topik Anda dan **MyTopic**halaman ditampilkan.

   Status **Enkripsi** topik, AWS **Akun**, **kunci terkelola pelanggan**, **ARN** kunci terkelola pelanggan, dan **Deskripsi** ditampilkan di tab **Enkripsi**.

Topik terenkripsi baru Anda muncul dalam daftar topik.

## Langkah 3: Buat dan berlangganan antrian Amazon SQS terenkripsi
<a name="create-encrypted-queue"></a>

1. Masuk ke [konsol Amazon SQS](https://console.aws.amazon.com/sqs/).

1. Pilih **Buat Antrean Baru**.

1. Pada halaman **Buat Antrean Baru**, lakukan hal berikut ini:

   1. Masukkan **Nama Antrean** (sebagai contoh, `MyEncryptedQueue1`).

   1. Pilih **Antrean Standar**, dan kemudian pilih **Konfigurasi Antrean**.

   1. Pilih **Gunakan SSE**.

   1. Untuk **AWS KMS key**, pilih **MyCustomKey**[yang Anda buat sebelumnya](#create-custom-cmk), lalu pilih **Buat Antrian**.

1. Ulangi proses untuk membuat antrean kedua (sebagai contoh, beri nama `MyEncryptedQueue2`).

   Antrean terenkripsi baru Anda muncul dalam daftar antrean.

1. Pada konsol Amazon SQS, pilih `MyEncryptedQueue1` dan `MyEncryptedQueue2` dan kemudian pilih **Tindakan Antrean**, **Berlangganan Antrean ke Topik SNS**.

1. Dalam kotak dialog **Subscribe to a Topic**, untuk **Pilih Topik** pilih **MyEncryptedTopic**, lalu pilih **Berlangganan**.

   Langganan antrean terenkripsi Anda ke topik terenkripsi Anda ditampilkan di kotak dialog **Hasil Berlangganan Topik**.

1. Pilih **OK**.

## Langkah 4: Publikasikan pesan ke topik terenkripsi Anda
<a name="publish-to-encrypted-topic"></a>

1. Masuk ke [Konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Di panel navigasi, pilih **Topik**.

1. Dari daftar topik, pilih **MyEncryptedTopic**lalu pilih **Publikasikan pesan**.

1. Pada halaman **Terbitkan pesan**, lakukan hal berikut ini:

   1. (Opsional) Di bagian **Detail pesan**, masukkan **Subjek** (sebagai contoh, `Testing message publishing`).

   1. Di bagian **Isi pesan**, masukkan isi pesan (sebagai contoh, `My message body is encrypted at rest.`).

   1. Pilih **Terbitkan pesan**.

Pesan Anda diterbitkan ke antrean terenkripsi berlangganan Anda.

## Langkah 5: Verifikasi pengiriman pesan
<a name="verify-message-delivery"></a>

1. Masuk ke [konsol Amazon SQS](https://console.aws.amazon.com/sqs/).

1. Dari daftar antrian, pilih **MyEncryptedQueue1** lalu pilih **Kirim dan terima** pesan.

1. Pada halaman **Kirim dan terima pesan dalam MyEncryptedQueue 1**, pilih **Poll untuk pesan**.

   Pesan [yang Anda kirim sebelumnya](#publish-to-encrypted-topic) ditampilkan.

1. Pilih **Detail Selengkapnya** untuk melihat pesan Anda.

1. Setelah Anda selesai, pilih **Tutup**.

1. Ulangi proses ini untuk **MyEncryptedQueue2**.

# Mengamankan lalu lintas Amazon SNS dengan titik akhir VPC
<a name="sns-internetwork-traffic-privacy"></a>

Titik akhir Amazon Virtual Private Cloud (Amazon VPC) untuk Amazon SNS adalah entitas logis di dalam VPC yang mengizinkan konektivitas hanya ke Amazon SNS. Rute VPC meminta Amazon SNS dan rute merespons kembali ke VPC. Bagian berikut ini memberikan informasi tentang bekerja dengan VPC endpoint dan membuat kebijakan VPC endpoint.

Jika Anda menggunakan Amazon Virtual Private Cloud (Amazon VPC) untuk meng-host AWS sumber daya Anda, Anda dapat membuat koneksi pribadi antara VPC dan Amazon SNS. Dengan koneksi ini, Anda dapat menerbitkan pesan ke topik Amazon SNS Anda tanpa mengirim mereka melalui internet publik.

Amazon VPC adalah AWS layanan yang dapat Anda gunakan untuk meluncurkan AWS sumber daya di jaringan virtual yang Anda tentukan. Dengan VPC, Anda memiliki kendali terhadap pengaturan jaringan, seperti rentang alamat IP, subnet, tabel rute, dan pintu masuk jaringan. Untuk menghubungkan VPC Anda ke Amazon SNS, Anda menentukan *VPC endpoint antarmuka*. Jenis titik akhir ini memungkinkan Anda untuk menghubungkan VPC AWS Anda ke layanan. Titik akhir memberikan konektivitas yang dapat diandalkan, dapat diskalakan ke Amazon SNS tanpa memerlukan gateway internet, instans terjemahan alamat jaringan (NAT), atau koneksi VPN. Untuk informasi selengkapnya, lihat [Mengakses titik akhir VPC antarmuka Layanan AWS menggunakan antarmuka di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html) Pengguna Amazon *VPC*.

Informasi di bagian ini ditujukan untuk pengguna Amazon VPC. Untuk informasi selengkapnya, dan untuk memulai membuat VPC, lihat [Merencanakan VPC Anda di Panduan Pengguna](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html) Amazon *VPC*.

**catatan**  
VPC endpoint tidak mengizinkan Anda untuk berlangganan topik Amazon SNS ke alamat IP privat.

# Membuat VPC endpoint Amazon untuk Amazon SNS
<a name="sns-vpc-create-endpoint"></a>

Untuk menerbitkan pesan ke topik Amazon SNS Anda dari Amazon VPC, buat VPC endpoint antarmuka. Kemudian, Anda dapat menerbitkan pesan ke topik Anda sambil menjaga lalu lintas di dalam jaringan yang Anda kelola dengan VPC.

Gunakan informasi berikut ini untuk membuat titik akhir dan menguji koneksi antara VPC Anda dan Amazon SNS. Atau, untuk panduan yang membantu Anda memulai dari scratch, lihat [Menerbitkan pesan Amazon SNS dari Amazon VPC](sns-vpc-tutorial.md).

## Membuat titik akhir
<a name="sns-vpc-endpoint-create"></a>

Anda dapat membuat endpoint Amazon SNS di VPC menggunakan, SDK Konsol Manajemen AWS, Amazon SNS AWS API, atau. AWS CLI AWS CloudFormation

Untuk informasi tentang membuat dan mengonfigurasi titik akhir menggunakan konsol Amazon VPC atau AWS CLI, lihat [Membuat Titik Akhir Antarmuka](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) dalam *Panduan Pengguna Amazon VPC.*

**penting**  
Anda dapat menggunakan Amazon Virtual Private Cloud hanya dengan titik akhir HTTPS Amazon SNS.  
Ketika Anda membuat titik akhir, tetapkan Amazon SNS sebagai layanan yang ingin Anda hubungkan ke VPC Anda. Di konsol Amazon VPC, nama layanan bervariasi berdasarkan wilayah. Sebagai contoh, jika Anda memilih US East (N. Virginia), nama layanan adalah **com.amazonaws.us-east-1.sns**.  
Saat Anda mengonfigurasi Amazon SNS untuk mengirim pesan dari Amazon VPC, Anda harus mengaktifkan DNS pribadi dan menentukan titik akhir dalam format. `sns.us-east-2.amazonaws.com`  
DNS pribadi tidak mendukung titik akhir lama seperti atau. `queue.amazonaws.com` `us-east-2.queue.amazonaws.com`

Untuk informasi tentang membuat dan mengonfigurasi titik akhir menggunakan AWS CloudFormation, lihat [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html)sumber daya di *AWS CloudFormation Panduan Pengguna*.

## Menguji koneksi antara VPC Anda dan Amazon SNS
<a name="sns-vpc-publish"></a>

Setelah Anda membuat titik akhir untuk Amazon SNS, Anda dapat menerbitkan pesan dari VPC Anda ke topik Amazon SNS Anda. Untuk menguji koneksi ini, lakukan hal berikut ini:

1. Connect ke EC2 instans Amazon yang berada di VPC Anda. Untuk informasi tentang menghubungkan, lihat [Menyambungkan ke Instans Linux Anda](https://docs.aws.amazon.com/AWSEC2/latest/DeveloperGuide/AccessingInstances.html) atau [Menghubungkan ke Instans Windows Anda](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html) di EC2 dokumentasi Amazon.

   Sebagai contoh, untuk menghubungkan ke instans Linux menggunakan klien SSH, jalankan perintah berikut ini dari terminal:

   ```
   $ ssh -i ec2-key-pair.pem ec2-user@instance-hostname
   ```

   Di mana:
   + *ec2-key-pair.pem* adalah file yang berisi key pair yang disediakan Amazon saat Anda membuat instance. EC2 
   + *instance-hostname* adalah nama host publik dari instans. Untuk mendapatkan nama host di [ EC2konsol Amazon](https://console.aws.amazon.com/ec2): Pilih **Instans, pilih instans** Anda, dan temukan nilai untuk DNS **Publik**.

1. Dari instans Anda, gunakan perintah [https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html) Amazon SNS dengan AWS CLI. Anda dapat mengirim pesan sederhana ke topik dengan perintah berikut ini:

   ```
   $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"
   ```

   Di mana:
   + *aws-region* adalah Wilayah tempat topik AWS tersebut berada.
   + *sns-topic-arn*adalah Nama Sumber Daya Amazon (ARN) dari topik tersebut. Untuk mendapatkan ARN dari [konsol Amazon SNS](https://console.aws.amazon.com/sns/home): Pilih**Topik**, temukan topik Anda, dan temukan nilai di kolom **ARN**.

   Jika pesan berhasil diterima oleh Amazon SNS, terminal akan mencetak ID pesan, seperti berikut ini:

   ```
   {
      "MessageId": "6c96dfff-0fdf-5b37-88d7-8cba910a8b64"
   }
   ```

# Membuat kebijakan VPC endpoint Amazon untuk Amazon SNS
<a name="sns-vpc-endpoint-policy"></a>

Anda dapat membuat kebijakan untuk VPC endpoint Amazon untuk Amazon SNS di mana Anda menentukan hal berikut ini:
+ Prinsipal yang dapat melakukan tindakan.
+ Tindakan yang dapat dilakukan.
+ Sumber daya yang menjadi target tindakan.

Untuk informasi selengkapnya, lihat [Mengontrol Akses ke Layanan dengan VPC Endpoint](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) dalam *Panduan Pengguna Amazon VPC*.

Kebijakan VPC endpoint contoh berikut ini menentukan bahwa pengguna `MyUser` diizinkan untuk menerbitkan topik Amazon SNS `MyTopic`.

```
{
  "Statement": [{
    "Action": ["sns:Publish"],
    "Effect": "Allow",
    "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic",
    "Principal": {
      "AWS": "arn:aws:iam:123456789012:user/MyUser"
    }
  }]
}
```

Hal berikut ini ditolak:
+ Tindakan Amazon SNS API lainnya, seperti `sns:Subscribe` dan `sns:Unsubscribe`.
+ Pengguna IAM dan aturan lainnya yang mencoba untuk menggunakan VPC endpoint ini.
+ `MyUser` menerbitkan ke topik Amazon SNS yang berbeda.

**catatan**  
Pengguna IAM masih dapat menggunakan tindakan Amazon SNS API lainnya dari *luar* VPC.

# Menerbitkan pesan Amazon SNS dari Amazon VPC
<a name="sns-vpc-tutorial"></a>

Bagian ini menjelaskan cara untuk menerbitkan ke topik Amazon SNS sambil menjaga pesan aman dalam jaringan privat. Anda menerbitkan pesan dari instans Amazon EC2 yang dihosting di Amazon Virtual Private Cloud (Amazon VPC). Pesan tetap berada di dalam AWS jaringan tanpa bepergian ke internet publik. Dengan menerbitkan pesan secara privat dari VPC, Anda dapat meningkatkan keamanan lalu lintas antara aplikasi Anda dan Amazon SNS. Keamanan ini penting ketika Anda menerbitkan informasi yang dapat diidentifikasi secara pribadi (PII) tentang pelanggan Anda, atau ketika aplikasi Anda tunduk pada peraturan pasar. Sebagai contoh, menerbitkan secara privat sangat membantu jika Anda memiliki sistem pemeliharaan kesehatan yang harus mematuhi Health Insurance Portability and Accountability Act (HIPAA), atau sistem keuangan yang harus mematuhi Payment Card Industry Data Security Standard (PCI DSS).

Langkah-langkah umumnya adalah sebagai berikut:
+ Gunakan AWS CloudFormation template untuk secara otomatis membuat jaringan pribadi sementara di Anda Akun AWS.
+ Buat VPC endpoint yang menghubungkan VPC dengan Amazon SNS.
+ Login ke instans Amazon EC2 dan terbitkan pesan secara privat ke topik Amazon SNS.
+ Verifikasi bahwa pesan telah berhasil dikirimkan.
+ Hapus sumber daya yang Anda buat selama proses ini sehingga tidak tetap ada di Anda Akun AWS.

Diagram berikut menggambarkan jaringan pribadi yang Anda buat di AWS akun Anda saat Anda menyelesaikan langkah-langkah ini:

![\[Arsitektur jaringan privat yang Anda buat dengan langkah-langkah tersebut.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-architecture.png)


Jaringan ini terdiri dari VPC yang berisi instans Amazon EC2. Instans menghubungkan ke Amazon SNS melalui *VPC endpoint antarmuka*. Jenis titik akhir ini terhubung ke layanan yang didukung oleh AWS PrivateLink. Dengan dibuatnya koneksi ini, Anda dapat login ke instans Amazon EC2 dan menerbitkan pesan ke topik Amazon SNS, meskipun jaringan terputus dari internet publik. Topik ini menggemari pesan yang diterimanya ke dua AWS Lambda fungsi berlangganan. Fungsi-fungsi ini mencatat pesan yang mereka terima di Amazon CloudWatch Logs.

Dibutuhkan sekitar 20 menit untuk menyelesaikan langkah-langkah tersebut.

**Topics**
+ [Sebelum Anda mulai](#sns-vpc-prereqs)
+ [Langkah 1: Buat pasangan kunci](#sns-vpc-keypair)
+ [Langkah 2: Buat sumber daya](#sns-vpc-resources)
+ [Langkah 3: Periksa koneksi internet untuk instans Anda](#sns-vpc-connection)
+ [Langkah 4: Buat titik akhir](#sns-vpc-endpoint)
+ [Langkah 5: Terbitkan pesan](#sns-vpc-publish)
+ [Langkah 6: Verifikasi](#sns-vpc-verify)
+ [Langkah 7: Bersihkan](#sns-vpc-delete)
+ [Sumber daya terkait](#sns-vpc-resources-related)

## Sebelum Anda mulai
<a name="sns-vpc-prereqs"></a>

Sebelum Anda memulai, Anda memerlukan akun Amazon Web Services (AWS). Saat Anda mendaftar, akun Anda secara otomatis mendaftar untuk semua layanan AWS, termasuk Amazon SNS dan Amazon VPC. Jika Anda belum membuat akun, buka [https://aws.amazon.com/](https://aws.amazon.com/), dan kemudian pilih **Buat Akun Gratis**.

## Langkah 1: Buat pasangan kunci Amazon EC2
<a name="sns-vpc-keypair"></a>

*Pasangan kunci* digunakan untuk login ke instans Amazon EC2. Pasangan kunci terdiri dari kunci publik yang digunakan untuk mengenkripsi informasi login Anda, dan kunci privat yang digunakan untuk mendekripsinya. Saat Anda membuat pasangan kunci, Anda harus mengunduh salinan kunci privat. Kemudian, Anda menggunakan pasangan kunci untuk login ke instans Amazon EC2. Untuk login, Anda harus menentukan nama pasangan kunci, dan Anda harus memberikan kunci privat.

**Untuk membuat pasangan kunci**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dalam menu navigasi di sebelah kiri, cari bagian **Jaringan & Keamanan**. Kemudian, pilih **Pasangan Kunci**.

1. Pilih **Buat Pasangan Kunci**.

1. Di jendela **Buat Pasangan Kunci**, untuk **Nama pasangan kunci**, ketik **VPCE-Tutorial-KeyPair**. Kemudian, pilih **Buat**.  
![\[Jendela Create Key Pair dengan teks “VPCE-tutorial-KeyPair” di bidang nama pasangan kunci.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-key-pair.png)

1. File kunci privat tersebut akan secara otomatis diunduh oleh peramban Anda. Simpan di tempat yang aman. Amazon EC2 memberikan file ekstensi `.pem`. 

1. (Opsional) Jika Anda akan menggunakan klien SSH pada komputer Mac atau Linux untuk menghubungkan ke instans Anda, gunakan perintah `chmod` untuk mengatur izin file kunci privat Anda sehingga hanya Anda yang dapat membacanya:

   1. Buka terminal dan navigasikan ke direktori yang berisi kunci privat: 

      ```
      $ cd /filepath_to_private_key/
      ```

   1. Mengatur izin menggunakan perintah berikut ini:

      ```
      $ chmod 400 VPCE-Tutorial-KeyPair.pem
      ```

## Langkah 2: Buat AWS sumber daya
<a name="sns-vpc-resources"></a>

Untuk mengatur infrastruktur, Anda menggunakan CloudFormation *template*. Templat adalah file yang bertindak sebagai cetak biru untuk membangun sumber daya AWS , seperti instans Amazon EC2 dan topik Amazon SNS. Template untuk proses ini disediakan GitHub untuk Anda unduh. 

Anda menyediakan template untuk CloudFormation, dan CloudFormation menyediakan sumber daya yang Anda butuhkan sebagai *tumpukan* di Anda Akun AWS. Tumpukan adalah kumpulan sumber daya yang Anda kelola sebagai unit tunggal. Ketika Anda menyelesaikan langkah-langkah ini, Anda dapat menggunakan CloudFormation untuk menghapus semua sumber daya dalam tumpukan sekaligus. Sumber daya ini tidak tetap ada di Anda Akun AWS, kecuali jika Anda menginginkannya.

Tumpukan untuk proses ini mencakup sumber daya berikut ini:
+ VPC dan sumber daya jaringan yang berkaitan, termasuk subnet, grup keamanan, gateway internet, dan tabel rute.
+ Instans Amazon EC2 yang diluncurkan ke subnet di VPC.
+ Topik Amazon SNS.
+ Dua AWS Lambda fungsi. Fungsi-fungsi ini menerima pesan yang dipublikasikan ke topik Amazon SNS, dan mereka mencatat peristiwa di CloudWatch Log.
+  CloudWatch Metrik dan log Amazon.
+ Peran IAM yang memungkinkan instans Amazon EC2 menggunakan Amazon SNS, dan peran IAM yang memungkinkan fungsi Lambda menulis ke log. CloudWatch 

**Untuk membuat sumber AWS daya**

1. Unduh [file template](https://github.com/aws-samples/aws-sns-samples/blob/master/templates/SNS-VPCE-Tutorial-CloudFormation.template) dari situs GitHub web.

1. Masuk ke [konsol CloudFormation](https://console.aws.amazon.com/cloudformation).

1. Pilih **Buat Tumpukan**.

1. Pada halaman **Pilih Templat**, pilih **Unggah templat ke Amazon S3**, pilih file, dan pilih **Berikutnya**.

1. Pada halaman **Tentukan Detail**, tentukan nama tumpukan dan kunci:

   1. Untuk **Nama tumpukan**, ketik **VPCE-Tutorial-Stack**.

   1. Untuk **KeyName**, pilih **VPCE-tutorial-**. KeyPair

   1. Untuk **SSHLocation**, pertahankan nilai default dari**0.0.0.0/0**.  
![\[Halaman Tentukan Detail yang menampilkan bidang nilai terisi untuk nama Stack, KeyName, dan. SSHLocation\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-stack-name.png)

   1. Pilih **Berikutnya**.

1. Pada halaman **Opsi**, simpan semua nilai default, dan pilih **Berikutnya**.

1. Pada halaman **Tinjau**, verifikasi detail tumpukan.

1. Di bawah **Kemampuan**, akui bahwa CloudFormation mungkin membuat sumber daya IAM dengan nama khusus.

1. Pilih **Buat**.

    CloudFormation Konsol membuka halaman **Stacks**. VPCE-Tutorial-StackMemiliki status **CREATE\$1IN\$1PROGRESS**. Dalam beberapa menit, setelah proses pembuatan selesai, status berubah menjadi **CREATE\$1COMPLETE**.  
![\[CloudFormation Tumpukan dengan status CREATE_COMPLETE.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-stack-create-complete.png)
**Tip**  
Pilih tombol **Segarkan** untuk melihat status tumpukan terbaru.

## Langkah 3: Konfirmasi bahwa instans Amazon EC2 Anda tidak memiliki akses internet
<a name="sns-vpc-connection"></a>

Instans Amazon EC2 yang diluncurkan di VPC Anda dalam langkah sebelumnya tidak memiliki akses internet. Ini melarang lalu lintas keluar, dan tidak dapat menerbitkan pesan ke Amazon SNS. Verifikasikan ini dengan masuk ke instans. Kemudian, upayakan untuk menghubungkan ke titik akhir publik, dan upayakan untuk mengirim pesan Amazon SNS.

Pada titik ini, upaya menerbitkan gagal. Dalam langkah berikutnya, setelah Anda membuat VPC endpoint untuk Amazon SNS, upaya Anda untuk menerbitkan berhasil.

**Untuk menghubungkan ke instans Amazon EC2 Anda**

1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dalam menu navigasi di sebelah kiri, cari bagian **Instans**. Kemudian, pilih **Instans**.

1. Dalam daftar contoh, pilih **VPCE** -. Tutorial-EC2Instance

1. Salin nama host yang disediakan di kolom **DNS Publik**.  
![\[Detail tentang instans Amazon EC2 yang diluncurkan oleh. CloudFormation\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-instance-details.png)

1. Buka terminal. Dari direktori yang berisi key pair, sambungkan ke instance menggunakan perintah berikut, di mana *instance-hostname* nama host yang Anda salin dari konsol Amazon EC2:

   ```
   $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
   ```

**Untuk memverifikasi bahwa instans tidak memiliki konektivitas internet**
+ Di terminal Anda, upayakan untuk menghubungkan ke titik akhir publik, seperti amazon.com:

  ```
  $ ping amazon.com
  ```

  Karena upaya koneksi gagal, Anda dapat membatalkan kapan saja (Ctrl \$1 C pada Windows atau Command \$1 C pada macOS).

**Untuk memverifikasi bahwa instans tidak memiliki konektivitas ke Amazon SNS**

1. Masuk ke [konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Di panel navigasi di sebelah kiri, pilih **Topik**.

1. Pada halaman **Topik**, salin Amazon Resource Name (ARN) ke topik **VPCE-Tutorial-Topic**.

1. Di terminal Anda, upayakan untuk menerbitkan pesan ke topik:

   ```
   $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"
   ```

   Karena upaya menerbitkan gagal, Anda dapat membatalkan setiap saat.

## Langkah 4: Buat VPC endpoint Amazon untuk Amazon SNS
<a name="sns-vpc-endpoint"></a>

Untuk menghubungkan VPC ke Amazon SNS, Anda harus menentukan VPC endpoint antarmuka. Setelah Anda menambahkan titik akhir, Anda dapat login ke instans Amazon EC2 di VPC Anda, dan dari sana Anda dapat menggunakan API Amazon SNS. Anda dapat menerbitkan pesan ke topik, dan pesan diterbitkan secara privat. Mereka tetap berada dalam AWS jaringan, dan mereka tidak melakukan perjalanan internet publik.

**catatan**  
Instans masih kekurangan akses ke AWS layanan lain dan titik akhir di internet.

**Untuk membuat titik akhir**

1. Buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Di menu navigasi di sebelah kiri, pilih **Titik Akhir**.

1. Pilih **Buat Titik Akhir**.

1. Pada halaman **Buat Titik Akhir**, untuk **Kategori layanan**, pilih **layanan AWS **.

1. Untuk **Nama Layanan**, pilih nama layanan untuk Amazon SNS.

   Nama layanan bervariasi berdasarkan wilayah yang dipilih. Misalnya, jika Anda memilih US East (Virginia N.), nama layanannya adalah **com.amazonaws. *us-east-1*.sns**.

1. Untuk **VPC**, pilih VPC yang memiliki nama **VPCE-Tutorial-VPC**.  
![\[Menu VPC pada halaman Buat Titik Akhir.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-create-endpoint-vpc.png)

1. Untuk **Subnet**, pilih subnet yang memiliki *VPCE-Tutorial-Subnet* di ID subnet.  
![\[Subnet pada halaman Buat Titik Akhir.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-create-endpoint-subnet.png)

1. Untuk **Aktifkan Nama DNS Privat**, pilih **Aktifkan untuk titik akhir ini**.

1. Untuk **grup Keamanan**, **pilih Pilih grup keamanan**, dan pilih **VPCE-tutorial** -. SecurityGroup  
![\[Grup keamanan pada halaman Buat Titik Akhir.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-create-endpoint-security-group.png)

1. Pilih **Buat titik akhir**. Konsol Amazon VPC mengonfirmasi bahwa VPC endpoint dibuat.  
![\[Pesan konfirmasi ditampilkan setelah Anda membuat titik akhir.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-create-endpoint-confirmation.png)

1. Pilih **Tutup**. 

   Konsol Amazon VPC membuka halaman **Titik akhir**. Titik akhir baru memiliki status **tertunda**. Dalam beberapa menit, setelah proses pembuatan selesai, status berubah menjadi **tersedia**.  
![\[VPC endpoint dengan status tersedia.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-create-endpoint-status-available.png)

## Langkah 5: Terbitkan pesan ke topik Amazon SNS Anda
<a name="sns-vpc-publish"></a>

Sekarang VPC Anda mencakup titik akhir untuk Amazon SNS, Anda dapat login ke instans Amazon EC2 dan menerbitkan pesan ke topik.

**Untuk menerbitkan pesan**

1. Jika terminal Anda tidak lagi terhubung ke instans Amazon EC2 Anda, hubungkan lagi:

   ```
   $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
   ```

1. Jalankan perintah yang sama yang Anda lakukan sebelumnya untuk menerbitkan pesan ke topik Amazon SNS Anda. Kali ini, upaya untuk menerbitkan berhasil, dan Amazon SNS mengembalikan ID pesan:

   ```
   $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"
   
   
   {
       "MessageId": "5b111270-d169-5be6-9042-410dfc9e86de"
   }
   ```

## Langkah 6: Verifikasi pengiriman pesan Anda
<a name="sns-vpc-verify"></a>

Ketika topik Amazon SNS menerima pesan, akan melakukan fan out pesan dengan mengirimkannya ke dua fungsi Lambda yang berlangganan. Ketika fungsi-fungsi ini menerima pesan, mereka mencatat peristiwa ke CloudWatch log. Untuk memverifikasi bahwa pengiriman pesan Anda berhasil, periksa apakah fungsi telah dipanggil, dan periksa apakah CloudWatch log telah diperbarui.

**Untuk memverifikasi bahwa fungsi Lambda dipanggil**

1. Buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Pada halaman **Fungsi**, pilih **VPCe-Tutorial-Lambda-1**.

1. Pilih **Pemantauan**.

1. Periksa grafik **Hitungan invokasi**. Grafik ini menunjukkan jumlah waktu saat fungsi Lambda telah dijalankan.

   Jumlah invokasi cocok dengan jumlah waktu saat Anda menerbitkan pesan ke topik.  
![\[Grafik hitungan invokasi di konsol Lambda.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-lambda-invocation-count.png)

**Untuk memverifikasi bahwa CloudWatch log telah diperbarui**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi di sebelah kiri, pilih **Log**.

1. Periksa log yang ditulis oleh fungsi Lambda:

   1. Pilih grup log**/aws/lambda/VPCE-Tutorial-Lambda-1/.**

   1. Pilih pengaliran log.

   1. Periksa bahwa log mencakup entri `From SNS: Hello`.  
![\[CloudWatch Log termasuk entri “Dari SNS: Halo”.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/vpce-tutorial-cloudwatch-log.png)

   1. Pilih **Grup Log** pada bagian atas konsol untuk kembali ke halaman **Grup Log**. Kemudian, ulangi langkah-langkah sebelumnya untuk grup log/aws/lambda/VPCE-Tutorial-Lambda-2/.

Selamat\$1 Dengan menambahkan titik akhir untuk Amazon SNS ke VPC, Anda dapat menerbitkan pesan ke topik dari dalam jaringan yang terkelola oleh VPC. Pesan diterbitkan secara privat tanpa dipaparkan ke internet publik.

## Langkah 7: Membersihkan
<a name="sns-vpc-delete"></a>

Kecuali Anda ingin mempertahankan sumber daya yang Anda buat, Anda dapat menghapusnya sekarang. Dengan menghapus AWS sumber daya yang tidak lagi Anda gunakan, Anda mencegah tagihan yang tidak perlu ke Anda Akun AWS. 

Pertama, hapus VPC endpoint Anda menggunakan konsol Amazon VPC. Kemudian, hapus sumber daya lain yang Anda buat dengan menghapus tumpukan di CloudFormation konsol. Saat Anda menghapus tumpukan, CloudFormation hapus sumber daya tumpukan dari tumpukan Anda Akun AWS.

**Untuk menghapus VPC endpoint Anda**

1. Buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Di menu navigasi di sebelah kiri, pilih **Titik Akhir**.

1. Pilih titik akhir yang Anda buat.

1. Pilih **Tindakan**, dan kemudian pilih **Hapus Titik Akhir**.

1. Di jendela **Hapus Titik Akhir**, pilih **Ya, Hapus**.

   Status titik akhir ubah ke **menghapus**. Setelah penghapusan selesai, titik akhir dihapus dari halaman.

**Untuk menghapus CloudFormation tumpukan Anda**

1. Buka CloudFormation konsol di [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Pilih tumpukan **VPCe-Tutorial-Stack**.

1. Pilih **Tindakan**, dan kemudian pilih **Hapus Tumpukan**.

1. Di jendela **Hapus Tumpukan**, pilih **Ya, Hapus**.

   Status tumpukan berubah menjadi **DELETE\$1IN\$1PROGRESS**. Saat penghapusan selesai, tumpukan dihapus dari halaman.

## Sumber daya terkait
<a name="sns-vpc-resources-related"></a>

Untuk informasi selengkapnya, lihat sumber daya berikut ini.
+ [AWS Blog Keamanan: Mengamankan pesan yang dipublikasikan ke Amazon SNS dengan AWS PrivateLink ](https://aws.amazon.com/blogs/security/securing-messages-published-to-amazon-sns-with-aws-privatelink/)
+ [Apa yang Dimaksud Amazon VPC?](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html)
+ [Titik Akhir VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)
+ [Apa itu Amazon EC2?](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)
+ [CloudFormation Konsep](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html)

# Connect ke Amazon SNS menggunakan titik akhir Dual-stack (dan) IPv4 IPv6
<a name="sns-dual-stack"></a>

 Titik akhir dual-stack mendukung keduanya IPv4 dan lalu lintas. IPv6 Saat Anda membuat permintaan ke titik akhir dual-stack, URL endpoint akan diselesaikan ke alamat atau alamat. IPv4 IPv6 [Untuk informasi selengkapnya tentang dual-stack dan titik akhir FIPS, lihat panduan Referensi SDK.](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html) 

 Amazon SNS mendukung titik akhir tumpukan ganda Regional, yang berarti Anda harus menentukan AWS Wilayah sebagai bagian dari nama titik akhir. Nama titik akhir tumpukan ganda menggunakan konvensi penamaan berikut:. `sns.Region.amazonaws.com` Misalnya, nama titik akhir tumpukan ganda untuk Wilayah `eu-west-1` adalah `sns.eu-west-1.amazonaws.com`. 

[Untuk daftar lengkap titik akhir Amazon SNS, lihat Referensi Umum.AWS](https://docs.aws.amazon.com/general/latest/gr/sns.html) 

# Meningkatkan keamanan Amazon SNS dengan Perlindungan Data Pesan
<a name="sns-message-data-protection"></a>

**penting**  
Perlindungan data pesan Amazon SNS tidak akan lagi tersedia untuk pelanggan baru mulai 30 April 2026. Untuk informasi selengkapnya dan panduan tentang alternatif, lihat [perubahan ketersediaan perlindungan data pesan Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-message-data-protection-availability-change.html).
+ [Perlindungan Data Pesan](message-data-protection.md) adalah fitur di Amazon SNS yang digunakan untuk menentukan aturan dan kebijakan Anda sendiri untuk mengaudit dan mengontrol konten untuk data yang bergerak, sebagai lawan dari data saat istirahat.
+ Perlindungan Data Pesan menyediakan layanan tata kelola, kepatuhan, dan audit untuk aplikasi perusahaan yang berpusat pada pesan, sehingga masuknya dan keluar data dapat dikontrol oleh pemilik topik Amazon SNS, dan alur konten dapat dilacak dan dicatat.
+ Anda dapat menulis aturan tata kelola berbasis payload untuk menghentikan konten payload yang tidak sah memasuki aliran pesan Anda.
+ Anda dapat memberikan izin akses konten yang berbeda kepada pelanggan individu, dan mengaudit seluruh proses alur konten.

# Identity and access management di Amazon SNS
<a name="security-iam"></a>

Akses ke Amazon SNS memerlukan kredensi yang AWS dapat digunakan untuk mengautentikasi permintaan Anda. Kredensi ini harus memiliki izin untuk mengakses AWS sumber daya, seperti topik dan pesan Amazon SNS. Bagian berikut memberikan detail tentang bagaimana Anda dapat menggunakan [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) dan Amazon SNS untuk membantu mengamankan sumber daya Anda dengan mengendalikan siapa yang dapat mengaksesnya. 

AWS Identity and Access Management (IAM) adalah Layanan AWS yang membantu administrator mengontrol akses ke AWS sumber daya dengan aman. Administrator IAM mengontrol siapa yang dapat *diautentikasi* (masuk) dan *diotorisasi* (memiliki izin) untuk menggunakan sumber daya Amazon SNS. IAM adalah Layanan AWS yang dapat Anda gunakan tanpa biaya tambahan.

## Audiens
<a name="security_iam_audience"></a>

Cara Anda menggunakan AWS Identity and Access Management (IAM) berbeda berdasarkan peran Anda:
+ **Pengguna layanan** - minta izin dari administrator Anda jika Anda tidak dapat mengakses fitur (lihat [Memecahkan masalah identitas dan akses Amazon Simple Notification Service](security_iam_troubleshoot.md))
+ **Administrator layanan** - tentukan akses pengguna dan mengirimkan permintaan izin (lihat [Bagaimana Amazon SNS bekerja dengan IAM](security_iam_service-with-iam.md))
+ **Administrator IAM** - tulis kebijakan untuk mengelola akses (lihat [Contoh kebijakan berbasis identitas untuk Amazon Simple Notification Service](security_iam_id-based-policy-examples.md))

## Mengautentikasi dengan identitas
<a name="security_iam_authentication"></a>

Otentikasi adalah cara Anda masuk AWS menggunakan kredensi identitas Anda. Anda harus diautentikasi sebagai pengguna Akun AWS root, pengguna IAM, atau dengan mengasumsikan peran IAM.

Anda dapat masuk sebagai identitas federasi menggunakan kredensyal dari sumber identitas seperti AWS IAM Identity Center (Pusat Identitas IAM), autentikasi masuk tunggal, atau kredensyal. Google/Facebook Untuk informasi selengkapnya tentang cara masuk, lihat [Cara masuk ke Akun AWS Anda](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dalam *Panduan Pengguna AWS Sign-In *.

Untuk akses terprogram, AWS sediakan SDK dan CLI untuk menandatangani permintaan secara kriptografis. Untuk informasi selengkapnya, lihat [AWS Signature Version 4 untuk permintaan API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dalam *Panduan Pengguna IAM*.

### Akun AWS pengguna root
<a name="security_iam_authentication-rootuser"></a>

 Saat Anda membuat Akun AWS, Anda mulai dengan satu identitas masuk yang disebut *pengguna Akun AWS root* yang memiliki akses lengkap ke semua Layanan AWS dan sumber daya. Kami sangat menyarankan agar Anda tidak menggunakan pengguna root untuk tugas sehari-hari. Untuk tugas yang memerlukan kredensial pengguna root, lihat [Tugas yang memerlukan kredensial pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dalam *Panduan Pengguna IAM*. 

### Identitas terfederasi
<a name="security_iam_authentication-federated"></a>

Sebagai praktik terbaik, mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses Layanan AWS menggunakan kredensyal sementara.

*Identitas federasi* adalah pengguna dari direktori perusahaan Anda, penyedia identitas web, atau Directory Service yang mengakses Layanan AWS menggunakan kredensyal dari sumber identitas. Identitas terfederasi mengambil peran yang memberikan kredensial sementara.

Untuk manajemen akses terpusat, kami menyarankan AWS IAM Identity Center. Untuk informasi selengkapnya, lihat [Apa itu Pusat Identitas IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) dalam *Panduan Pengguna AWS IAM Identity Center *.

### Pengguna dan grup IAM
<a name="security_iam_authentication-iamuser"></a>

*[Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* adalah identitas dengan izin khusus untuk satu orang atau aplikasi. Sebaiknya gunakan kredensial sementara alih-alih pengguna IAM dengan kredensial jangka panjang. Untuk informasi selengkapnya, lihat [Mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses AWS menggunakan kredensyal sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) di Panduan Pengguna *IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) menentukan kumpulan pengguna IAM dan mempermudah pengelolaan izin untuk pengguna dalam jumlah besar. Untuk mempelajari selengkapnya, lihat [Kasus penggunaan untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dalam *Panduan Pengguna IAM*.

### Peran IAM
<a name="security_iam_authentication-iamrole"></a>

*[Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* adalah identitas dengan izin khusus yang menyediakan kredensial sementara. Anda dapat mengambil peran dengan [beralih dari pengguna ke peran IAM (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) atau dengan memanggil operasi AWS CLI atau AWS API. Untuk informasi selengkapnya, lihat [Metode untuk mengambil peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dalam *Panduan Pengguna IAM*.

Peran IAM berguna untuk akses pengguna terfederasi, izin pengguna IAM sementara, akses lintas akun, akses lintas layanan, dan aplikasi yang berjalan di Amazon EC2. Untuk informasi selengkapnya, lihat [Akses sumber daya lintas akun di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dalam *Panduan Pengguna IAM*.

## Mengelola akses menggunakan kebijakan
<a name="security_iam_access-manage"></a>

Anda mengontrol akses AWS dengan membuat kebijakan dan melampirkannya ke AWS identitas atau sumber daya. Kebijakan menentukan izin saat dikaitkan dengan identitas atau sumber daya. AWS mengevaluasi kebijakan ini ketika kepala sekolah membuat permintaan. Sebagian besar kebijakan disimpan AWS sebagai dokumen JSON. Untuk informasi selengkapnya tentang dokumen kebijakan JSON, lihat [Gambaran umum kebijakan JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dalam *Panduan Pengguna IAM*.

Menggunakan kebijakan, administrator menentukan siapa yang memiliki akses ke apa dengan mendefinisikan **principal** mana yang dapat melakukan **tindakan** pada **sumber daya** apa, dan dalam **kondisi** apa.

Secara default, pengguna dan peran tidak memiliki izin. Administrator IAM membuat kebijakan IAM dan menambahkannya ke peran, yang kemudian dapat diambil oleh pengguna. Kebijakan IAM mendefinisikan izin terlepas dari metode yang Anda gunakan untuk melakukan operasinya.

### Kebijakan berbasis identitas
<a name="security_iam_access-manage-id-based-policies"></a>

Kebijakan berbasis identitas adalah dokumen kebijakan izin JSON yang Anda lampirkan ke identitas (pengguna, grup, atau peran). Kebijakan ini mengontrol tindakan apa yang bisa dilakukan oleh identitas tersebut, terhadap sumber daya yang mana, dan dalam kondisi apa. Untuk mempelajari cara membuat kebijakan berbasis identitas, lihat [Tentukan izin IAM kustom dengan kebijakan yang dikelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

Kebijakan berbasis identitas dapat berupa *kebijakan inline* (disematkan langsung ke dalam satu identitas) atau *kebijakan terkelola* (kebijakan mandiri yang dilampirkan pada banyak identitas). Untuk mempelajari cara memilih antara kebijakan terkelola dan kebijakan inline, lihat [Pilih antara kebijakan terkelola dan kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dalam *Panduan Pengguna IAM*.

### Kebijakan berbasis sumber daya
<a name="security_iam_access-manage-resource-based-policies"></a>

Kebijakan berbasis sumber daya adalah dokumen kebijakan JSON yang Anda lampirkan ke sumber daya. Contohnya termasuk *kebijakan kepercayaan peran IAM* dan *kebijakan bucket* Amazon S3. Dalam layanan yang mendukung kebijakan berbasis sumber daya, administrator layanan dapat menggunakannya untuk mengontrol akses ke sumber daya tertentu. Anda harus [menentukan principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dalam kebijakan berbasis sumber daya.

Kebijakan berbasis sumber daya merupakan kebijakan inline yang terletak di layanan tersebut. Anda tidak dapat menggunakan kebijakan AWS terkelola dari IAM dalam kebijakan berbasis sumber daya.

### Jenis-jenis kebijakan lain
<a name="security_iam_access-manage-other-policies"></a>

AWS mendukung jenis kebijakan tambahan yang dapat menetapkan izin maksimum yang diberikan oleh jenis kebijakan yang lebih umum:
+ **Batasan izin** – Menetapkan izin maksimum yang dapat diberikan oleh kebijakan berbasis identitas kepada entitas IAM. Untuk informasi selengkapnya, lihat [Batasan izin untuk entitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dalam *Panduan Pengguna IAM*.
+ **Kebijakan kontrol layanan (SCPs)** — Tentukan izin maksimum untuk organisasi atau unit organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat [Kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dalam *Panduan Pengguna AWS Organizations *.
+ **Kebijakan kontrol sumber daya (RCPs)** — Tetapkan izin maksimum yang tersedia untuk sumber daya di akun Anda. Untuk informasi selengkapnya, lihat [Kebijakan kontrol sumber daya (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) di *Panduan AWS Organizations Pengguna*.
+ **Kebijakan sesi** – Kebijakan lanjutan yang diteruskan sebagai parameter saat membuat sesi sementara untuk peran atau pengguna terfederasi. Untuk informasi selengkapnya, lihat [Kebijakan sesi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dalam *Panduan Pengguna IAM*.

### Berbagai jenis kebijakan
<a name="security_iam_access-manage-multiple-policies"></a>

Ketika beberapa jenis kebijakan berlaku pada suatu permintaan, izin yang dihasilkan lebih rumit untuk dipahami. Untuk mempelajari cara AWS menentukan apakah akan mengizinkan permintaan saat beberapa jenis kebijakan terlibat, lihat [Logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) di *Panduan Pengguna IAM*.

## Kontrol akses
<a name="access-control"></a>

Amazon SNS memiliki sistem izin berbasis sumber daya sendiri yang menggunakan kebijakan yang ditulis dalam bahasa yang sama yang digunakan untuk kebijakan (IAM). AWS Identity and Access Management Hal ini berarti Anda dapat mencapai hal yang sama dengan kebijakan Amazon SNS dan kebijakan IAM.

**catatan**  
Penting untuk dipahami bahwa semua Akun AWS dapat mendelegasikan izin mereka kepada pengguna di bawah akun mereka. Akses lintas akun memungkinkan Anda berbagi akses ke sumber daya AWS tanpa harus mengelola pengguna tambahan. Untuk informasi tentang penggunaan akses lintas akun, lihat [Mengaktifkan Akses Lintas Akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/Delegation.html) dalam *Panduan Pengguna IAM*.

# Kasus penggunaan kontrol akses Amazon SNS
<a name="sns-when-to-use-access-control"></a>

Anda memiliki banyak fleksibilitas dalam cara Anda memberikan atau menolak akses ke sumber daya. Namun, kasus penggunaan yang umum cukup sederhana: 
+ Anda ingin memberikan jenis tindakan topik Akun AWS tertentu kepada orang lain (misalnya, Publikasikan). Untuk informasi selengkapnya, lihat [Berikan Akun AWS akses ke suatu topik](sns-access-policy-use-cases.md#sns-grant-aws-account-access-to-topic).
+ Anda ingin membatasi langganan topik Anda ke protokol HTTPS saja. Untuk informasi selengkapnya, lihat [Batasi langganan ke HTTPS](sns-access-policy-use-cases.md#sns-limit-subscriptions-to-https).
+ Anda ingin memungkinkan Amazon SNS memublikasikan pesan ke antrean Amazon SQS Anda. Untuk informasi selengkapnya, lihat [Memublikasikan pesan ke antrean Amazon SQS](sns-access-policy-use-cases.md#sns-publish-messages-to-sqs-queue).

# Konsep kebijakan akses Amazon SNS utama
<a name="sns-access-policy-language-key-concepts"></a>

Bagian berikut menjelaskan konsep yang perlu Anda pahami untuk menggunakan bahasa kebijakan akses. Konsep-konsep disajikan dalam urutan logis, dengan istilah pertama yang perlu Anda ketahui di bagian atas daftar.

## Izin
<a name="permissions"></a>

*Izin*adalah konsep mengizinkan atau melarang beberapa jenis akses ke sumber daya tertentu. Izin pada dasarnya mengikuti bentuk ini: "A diizinkan/tidak diizinkan untuk melakukan B ke C jika D diterapkan." Misalnya,*Jane* (A) memiliki izin untuk *memublikasikan* (B) ke *TopicA* (C) selama *dia menggunakan protokol HTTP* (D). Setiap kali Jane memublikasikan TopicA, layanan memeriksa untuk melihat apakah dia memiliki izin dan apakah permintaan memenuhi persyaratan yang ditetapkan dalam izin.

## Pernyataan
<a name="statement"></a>

*Pernyataan* adalah deskripsi formal dari satu izin, yang ditulis dalam bahasa kebijakan akses. Anda selalu menulis pernyataan sebagai bagian dari dokumen kontainer yang lebih luas dikenal sebagai *kebijakan* (lihat konsep berikutnya).

## Kebijakan
<a name="policy"></a>

*Kebijakan* adalah dokumen (yang ditulis dalam bahasa kebijakan akses) yang bertindak sebagai kontainer untuk satu atau lebih pernyataan. Misalnya, kebijakan dapat memiliki dua pernyataan di dalamnya: satu yang menyatakan bahwa Jane dapat berlangganan menggunakan protokol email, dan satu lagi yang menyatakan bahwa Bob tidak dapat mempublikasikan ke Topik A. Seperti yang ditunjukkan pada gambar berikut, skenario yang setara adalah memiliki dua kebijakan, satu yang menyatakan bahwa Jane dapat berlangganan menggunakan protokol email, dan satu lagi yang menyatakan bahwa Bob tidak dapat mempublikasikan ke Topik A.

![\[Membandingkan dua cara mengatur pernyataan kebijakan di Amazon SNS. Di sebelah kiri, satu kebijakan (Kebijakan A) berisi dua pernyataan. Di sebelah kanan, dua pernyataan yang sama dibagi antara dua kebijakan, dengan masing-masing kebijakan berisi satu pernyataan. Diagram menggambarkan bahwa kedua pendekatan ini setara dalam hal bagaimana izin didefinisikan dan ditegakkan.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/AccessPolicyLanguage_Statement_and_Policy.gif)


Hanya karakter ASCII yang diizinkan dalam dokumen kebijakan. Anda dapat memanfaatkan `aws:SourceAccount` dan `aws:SourceOwner` mengatasi skenario di mana Anda perlu plug-in AWS layanan lain ARNs yang berisi karakter non-ASCII. Lihat perbedaan antara[`aws:SourceAccount` versus `aws:SourceOwner`](sns-access-policy-use-cases.md#source-account-versus-source-owner).



## Penerbit
<a name="issuer"></a>

*Penerbit* adalah orang yang menulis kebijakan untuk memberikan izin untuk sumber daya. Penerbit (menurut definisi) selalu menjadi pemilik sumber daya. AWS tidak mengizinkan pengguna AWS layanan untuk membuat kebijakan untuk sumber daya yang tidak mereka miliki. Jika John adalah pemilik sumber daya, AWS mengautentikasi identitas John ketika dia mengirimkan kebijakan yang ditulisnya untuk memberikan izin untuk sumber daya tersebut.

## Principal
<a name="principal"></a>

*Penanggung jawab* adalah orang atau orang-orang yang menerima izin dalam kebijakan. Penanggung jawab adalah A dalam pernyataan "A memiliki izin untuk melakukan B ke C jika D diterapkan." Dalam kebijakan, Anda dapat mengatur penanggung jawab ke "siapa pun" (yaitu, Anda dapat menentukan wildcard untuk mewakili semua orang). Anda mungkin melakukan ini, misalnya, jika Anda tidak ingin membatasi akses berdasarkan identitas sebenarnya dari peminta, tetapi sebaliknya berdasarkan pada beberapa karakteristik lain yang mengidentifikasi seperti alamat IP peminta.

## Tindakan
<a name="action"></a>

*Tindakan* adalah aktivitas yang izin untuk melakukannya dimiliki penanggung jawab. Tindakan adalah B dalam pernyataan "A memiliki izin untuk melakukan B ke C jika D diterapkan." Biasanya, tindakan hanya operasi dalam permintaan untuk AWS. Misalnya, Jane mengirimkan permintaan ke Amazon SNS dengan `Action``=Subscribe`. Anda dapat menentukan satu atau beberapa tindakan dalam kebijakan.

## Sumber daya
<a name="resource"></a>

*Sumber daya* adalah obyek yang diminta aksesnya oleh penanggung jawab. Sumber daya adalah C dalam pernyataan "A memiliki izin untuk melakukan B ke C jika D diterapkan."

## Syarat dan kunci
<a name="conditions"></a>

*Syarat* adalah pembatasan atau detail tentang izin. Syarat adalah D dalam pernyataan "A memiliki izin untuk melakukan B ke C jika D diterapkan." Bagian dari kebijakan yang menentukan syarat dapat menjadi yang paling rinci dan kompleks dari semua bagian. Syarat umum terkait dengan:
+ Tanggal dan waktu (misalnya, permintaan harus tiba sebelum hari tertentu)
+ Alamat IP (misalnya, alamat IP peminta harus bagian dari kisaran CIDR tertentu)

*Kunci* adalah karakteristik spesifik yang menjadi dasar pembatasan akses. Misalnya, tanggal dan waktu permintaan.

Anda menggunakan baik *syarat* maupun *kunci* bersama-sama untuk mengekspresikan pembatasan. Cara termudah untuk memahami bagaimana Anda benar-benar menerapkan pembatasan adalah dengan contoh: Jika Anda ingin membatasi akses sebelum 30 Mei 2010, Anda menggunakan syarat yang disebut `DateLessThan`. Anda menggunakan tombol yang disebut `aws:CurrentTime` dan mengaturnya ke nilai `2010-05-30T00:00:00Z`. AWS mendefinisikan syarat dan kunci yang dapat Anda gunakan. AWS Layanan itu sendiri (misalnya, Amazon SQS atau Amazon SNS) mungkin juga menentukan kunci khusus layanan. Untuk informasi selengkapnya, lihat [Izin API Amazon SNS: Tindakan dan referensi sumber daya](sns-access-policy-language-api-permissions-reference.md).

## Pemohon
<a name="requester"></a>

*Pemohon* adalah orang yang mengirim permintaan ke AWS layanan dan meminta akses ke sumber daya tertentu. Pemohon mengirimkan permintaan ke AWS yang pada dasarnya mengatakan: “Apakah Anda mengizinkan saya melakukan B ke C di mana D berlaku?”

## Evaluasi
<a name="evaluation"></a>

*Evaluasi* adalah proses yang digunakan AWS layanan untuk menentukan apakah permintaan yang masuk harus ditolak atau diizinkan berdasarkan kebijakan yang berlaku. Untuk informasi tentang logika evaluasi, lihat [Logika evaluasi](sns-access-policy-language-evaluation-logic.md).

## Efek
<a name="effect"></a>

*Efek* adalah hasil yang Anda inginkan untuk dikembalikan pernyataan kebijakan xpada waktu evaluasi. Anda menentukan nilai ini ketika Anda menulis pernyataan dalam kebijakan, dan nilai-nilai yang mungkin adalah *menolak* dan *mengizinkan*.

Misalnya, Anda dapat menulis kebijakan yang memiliki pernyataan yang *menyangkal* semua permintaan yang berasal dari Antartika (effect=deny mengingat permintaan tersebut menggunakan alamat IP yang dialokasikan ke Antartika). Sebagai alternatif, Anda dapat menulis kebijakan yang memiliki pernyataan yang *mengizinkan* semua permintaan yang *tidak* berasal dari Antartika (effect=allow mengingat permintaan tersebut tidak berasal dari Antartika). Meskipun dua pernyataan tersebut tampak seperti melakukan hal yang sama, dalam logika bahasa kebijakan akses, keduanya berbeda. Untuk informasi selengkapnya, lihat [Logika evaluasi](sns-access-policy-language-evaluation-logic.md).

Meskipun hanya ada dua nilai yang mungkin yang dapat Anda tentukan untuk efek (mengizinkan atau menolak), dapat ada tiga hasil yang berbeda pada waktu evaluasi kebijakan: *blokir secara default*, *perizinan*, atau *penolakan eksplisit*. Untuk informasi selengkapnya, lihat konsep berikut dan [Logika evaluasi](sns-access-policy-language-evaluation-logic.md).

## Blokir secara default
<a name="Define_SoftDeny"></a>

*Blokir secara default* adalah hasil default dari kebijakan jika tidak ada izin atau penolakan eksplisit. 

## Izinkan
<a name="allow"></a>

*Perizinan* dihasilkan dari pernyataan yang memiliki efek=mengizinkan, dengan asumsi syarat apa pun yang dinyatakan terpenuhi. Contoh: Mengizinkan permintaan jika diterima sebelum pukul 1:00 siang pada tanggal 30 April 2010. Perizinan mengabaikan semua blokir secara default, tetapi tidak mengabaikan penolakan eksplisit.

## Penolakan eksplisit
<a name="Define_HardDeny"></a>

*Penolakan eksplisit* dihasilkan dari pernyataan yang memiliki efek=menolak, dengan asumsi syarat apa pun yang dinyatakan terpenuhi. Contoh: Tolak semua permintaan jika berasal dari Antartika. Setiap permintaan yang berasal dari Antartika akan selalu ditolak tidak peduli apa yang mungkin diizinkan kebijakan lain apa pun.

# Ikhtisar arsitektur kontrol akses Amazon SNS
<a name="sns-access-policy-language-architectural-overview"></a>

Gambar dan tabel berikut menggambarkan komponen utama yang berinteraksi untuk memberikan pengendalian akses untuk sumber daya Anda.

![\[Aliran kontrol akses dalam file Layanan AWS. Ini menunjukkan bagaimana Anda, sebagai pemilik sumber daya, mengelola sumber daya Anda (seperti antrian Amazon SQS) melalui kebijakan. Kebijakan ini dievaluasi oleh kode evaluasi bahasa kebijakan akses AWS layanan untuk menentukan apakah permintaan masuk dari pemohon harus diberikan atau ditolak akses ke sumber daya. Diagram mencakup elemen bernomor yang sesuai dengan pemilik sumber daya, sumber daya, kebijakan, permintaan masuk, dan logika evaluasi.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/AccessPolicyLanguage_Arch_Overview.gif)



|  |  | 
| --- |--- |
| 1 |  Anda, pemilik sumber daya.  | 
| 2 |  Sumber daya Anda (terkandung dalam AWS layanan; misalnya, antrian Amazon SQS).  | 
| 3 |  Kebijakan Anda. Biasanya Anda memiliki satu kebijakan per sumber daya, meskipun Anda bisa memiliki beberapa. AWS Layanan itu sendiri menyediakan API yang Anda gunakan untuk mengunggah dan mengelola kebijakan Anda.  | 
| 4 |  Pemohon dan permintaan masuk mereka ke layanan. AWS   | 
| 5 |  Kode evaluasi bahasa kebijakan akses. Ini adalah kumpulan kode dalam AWS layanan yang mengevaluasi permintaan masuk terhadap kebijakan yang berlaku dan menentukan apakah pemohon diizinkan mengakses sumber daya. Untuk informasi tentang cara membuat keputusan, lihat [Logika evaluasi](sns-access-policy-language-evaluation-logic.md).  | 

# Menggunakan Bahasa Kebijakan Akses di Amazon SNS
<a name="sns-access-policy-language-using"></a>

Gambar dan tabel berikut mendeskripsikan proses umum bagaimana pengendalian akses bekerja dengan bahasa kebijakan akses. 

![\[Proses enam langkah tentang cara kerja kontrol akses dengan bahasa kebijakan akses di. AWS Dimulai dengan menulis kebijakan untuk sumber daya Anda, menambahkannya ke sistem, dan kemudian dilanjutkan melalui tahapan pemohon membuat permintaan, Layanan AWS mengevaluasi kebijakan yang berlaku, dan akhirnya, layanan memberikan atau menolak permintaan berdasarkan evaluasi.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/AccessPolicyLanguage_Basic_Flow.gif)



**Proses untuk menggunakan pengendalian akses dengan Bahasa Kebijakan Akses**  

|  |  | 
| --- |--- |
|  1  |  Anda menulis kebijakan untuk sumber daya Anda. Misalnya, Anda menulis kebijakan untuk menentukan izin untuk topik Amazon SNS Anda.  | 
|  2  |  Anda mengunggah kebijakan Anda ke AWS.  AWS Layanan itu sendiri menyediakan API yang Anda gunakan untuk mengunggah kebijakan Anda. Misalnya, Anda menggunakan tindakan `SetTopicAttributes` Amazon SNS untuk mengunggah kebijakan untuk topik Amazon SNS tertentu.  | 
|  3  |  Seseorang mengirimkan permintaan untuk menggunakan sumber daya Anda. Misalnya, pengguna mengirimkan permintaan ke Amazon SNS untuk menggunakan salah satu topik Anda.   | 
|  4  |   AWS Layanan menentukan kebijakan mana yang berlaku untuk permintaan tersebut. Misalnya, Amazon SNS melihat semua kebijakan Amazon SNS yang tersedia dan menentukan yang mana yang diterapkan (berdasarkan sumber daya apa, siapa peminta, dll.).  | 
|  5  |   AWS Layanan mengevaluasi kebijakan. Misalnya, Amazon SNS mengevaluasi kebijakan dan menentukan apakah peminta diizinkan untuk menggunakan topik Anda atau tidak. Untuk informasi tentang logika keputusan, lihat [Logika evaluasi](sns-access-policy-language-evaluation-logic.md).  | 
|  6  |   AWS Layanan menolak permintaan atau terus memprosesnya.  Sebagai contoh, berdasarkan hasil evaluasi kebijakan, layanan mengembalikan kesalahan "Akses ditolak" ke peminta atau melanjutkan untuk memproses permintaan.  | 

# Logika evaluasi
<a name="sns-access-policy-language-evaluation-logic"></a>

Tujuan pada waktu evaluasi adalah memutuskan apakah permintaan pemberian harus diizinkan atau ditolak. Logika evaluasi mengikuti beberapa aturan dasar:
+ Secara default, semua permintaan untuk menggunakan sumber daya Anda yang berasal dari siapa pun selain Anda ditolak
+ Perizinan mengabaikan penolakan default apa pun
+ Penolakan eksplisit mengabaikan izin apa pun.
+ Urutan evaluasi kebijakan tidak penting

Bagan alir dan diskusi berikut menjelaskan secara lebih rinci bagaimana keputusan dibuat.

![\[Mengilustrasikan proses pengambilan keputusan yang digunakan oleh AWS untuk menentukan apakah permintaan untuk mengakses sumber daya harus diizinkan atau ditolak. Ini dimulai dengan penolakan default, memeriksa penolakan eksplisit dalam kebijakan yang berlaku, kemudian mencari instruksi izinkan apa pun, dan akhirnya, jika tidak ada izin ditemukan, permintaan ditolak secara default.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/AccessPolicyLanguage_Evaluation_Flow.gif)



|  |  | 
| --- |--- |
| 1 |  Keputusan dimulai dengan penolakan default.  | 
| 2 |   Kemudian, kode penerapan mengevaluasi semua kebijakan yang diterapkan pada permintaan (berdasarkan sumber daya, penanggung jawab, tindakan, dan syarat).  Urutan yang digunakan kode penerapan untuk mengevaluasi kebijakan tidak penting.  | 
| 3 |   Dalam semua kebijakan tersebut, kode penerapan mencari instruksi penolakan eksplisit yang akan diterapkan pada permintaan. Jika menemukan satu penolakan pun, kode penerapan akan mengembalikan keputusan "menolak" dan proses selesai (ini adalah penolakan eksplisit; untuk informasi lebih lanjut, lihat [Penolakan eksplisit](sns-access-policy-language-key-concepts.md#Define_HardDeny)).  | 
| 4 |  Jika penolakan eksplisit tidak ditemukan, kode penerapan mencari instruksi "mengizinkan" apa pun yang akan diterapkan pada permintaan. Jika menemukan satu instruksi pun, kode penerapan mengembalikan keputusan "mengizinkan" dan proses selesai (layanan melanjutkan untuk memproses permintaan).   | 
| 5 |  Jika tidak ada perizinan ditemukan, maka keputusan akhir adalah "menolak" (karena tidak ada penolakan eksplisit atau memungkinkan, ini dianggap sebagai *blokir secara default* (untuk informasi selengkapnya, lihat [Blokir secara default](sns-access-policy-language-key-concepts.md#Define_SoftDeny)).  | 

## Interaksi penolakan eksplisit dan blokir secara default
<a name="denials"></a>

Kebijakan menghasilkan blokir secara default jika tidak diterapkan secara langsung pada permintaan. Misalnya, jika pengguna meminta untuk menggunakan Amazon SNS, tetapi kebijakan tentang topik tersebut Akun AWS sama sekali tidak merujuk ke pengguna, maka kebijakan tersebut akan menghasilkan penolakan default.

Kebijakan juga mengakibatkan blokir secara default jika suatu syarat dalam pernyataan tidak terpenuhi. Jika semua syarat dalam pernyataan terpenuhi, maka kebijakan menghasilkan perizinan atau penolakan eksplisit, berdasarkan nilai elemen Efek dalam kebijakan. Kebijakan tidak menentukan apa yang harus dilakukan jika syarat tidak terpenuhi, sehingga hasil default dalam kasus tersebut adalah blokir secara default.

Misalnya, katakanlah Anda ingin mencegah permintaan masuk dari Antartika. Anda menulis kebijakan (disebut Kebijakan A1) yang mengizinkan permintaan hanya jika tidak datang dari Antartika. Diagram berikut menggambarkan kebijakan.

![\[Mengilustrasikan kebijakan (Kebijakan A1) yang memungkinkan permintaan jika tidak berasal dari Antartika. Ini menunjukkan kondisi bahwa permintaan tidak boleh berasal dari Antartika agar efek “Izinkan” diterapkan; jika tidak, tindakan default adalah menolak permintaan.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/AccessPolicyLanguage_Allow_Override_1.gif)


Jika seseorang mengirimkan permintaan dari AS, syaratnya terpenuhi (permintaannya bukan dari Antartika). Oleh karena itu, permintaan diizinkan. Namun, jika seseorang mengirimkan permintaan dari Antartika, syarat tidak terpenuhi, dan oleh karena itu hasil kebijakan adalah blokir secara default. 

Anda dapat mengubah hasilnya menjadi penolakan eksplisit dengan menulis ulang kebijakan (bernama Kebijakan A2) seperti dalam diagram berikut. Di sini, kebijakan secara eksplisit menolak permintaan jika berasal dari Antartika.

![\[Mengilustrasikan kebijakan (Kebijakan A2) yang secara eksplisit menolak permintaan jika berasal dari Antartika. Ini menunjukkan bahwa ketika kondisi terpenuhi (permintaan berasal dari Antartika), kebijakan tersebut menghasilkan penolakan eksplisit, yang berarti permintaan selalu ditolak dalam keadaan ini.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/AccessPolicyLanguage_Allow_Override_2.gif)


Jika seseorang mengirimkan permintaan dari Antartika, syarat terpenuhi, dan karena itu hasil kebijakan adalah penolakan eksplisit.

Perbedaan antara blokir secara default dan penolakan eksplisit penting karena blokir secara default dapat diabaikan oleh perizinan, tetapi penolakan eksplisit tidak da[at diabaikan. Misalnya, ada kebijakan lain yang mengizinkan permintaan jika tiba pada tanggal 1 Juni 2010. Bagaimana kebijakan ini mempengaruhi hasil keseluruhan ketika digabungkan dengan kebijakan yang membatasi akses dari Antartika? Kami akan membandingkan hasil keseluruhan saat menggabungkan kebijakan berbasis tanggal (akan disebut Kebijakan B) dengan kebijakan A1 dan A2 sebelumnya. Skenario 1 menggabungkan Kebijakan A1 dengan Kebijakan B, dan Skenario 2 menggabungkan Kebijakan A2 dengan Kebijakan B. Gambar dan diskusi berikut menunjukkan hasil saat permintaan datang dari Antartika pada 1 Juni 2010.

![\[Membandingkan dua skenario di mana kebijakan membatasi akses berdasarkan asal permintaan (Antartika) dan tanggal permintaan (1 Juni 2010). Dalam Skenario 1, kombinasi kebijakan menghasilkan penolakan default yang diganti oleh izin, yang mengizinkan permintaan. Dalam Skenario 2, penolakan eksplisit dari satu kebijakan mengesampingkan izin dari yang lain, sehingga permintaan ditolak.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/AccessPolicyLanguage_Allow_Override.gif)


Dalam Skenario 1, Kebijakan A1 mengembalikan blokir secara default, seperti yang dijelaskan sebelumnya dalam bagian ini. Kebijakan B mengembalikan perizinan karena kebijakan (menurut definisi) mengizinkan permintaan yang datang pada 1 Juni 2010. Perizinan dari Kebijakan B mengabaikan blokir secara default dari Kebijakan A1, dan oleh karena itu permintaan diperbolehkan.

Dalam Skenario 2, Kebijakan A2 mengembalikan penolakan eksplisit, seperti yang dijelaskan sebelumnya dalam bagian ini. Sekali lagi, Kebijakan B mengembalikan perizinan. Perizinan dari Kebijakan A2 mengabaikan perizinan dari Kebijakan B, dan oleh karena itu permintaan ditolak.

# Contoh kasus untuk pengendalian akses Amazon SNS
<a name="sns-access-policy-use-cases"></a>

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

## Berikan Akun AWS akses ke suatu topik
<a name="sns-grant-aws-account-access-to-topic"></a>

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`

`AddPermission`Tindakan 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
<a name="sns-limit-subscriptions-to-https"></a>

Untuk membatasi protokol pengiriman notifikasi untuk topik Amazon SNS Anda ke HTTPS, Anda harus membuat kebijakan khusus. `AddPermission`Tindakan 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"
         }
       }
     }]
   }
   ```

1. **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
<a name="sns-publish-messages-to-sqs-queue"></a>

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 antrean 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 antrean. 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
<a name="sns-allow-s3-bucket-to-publish-to-topic"></a>

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.

1. **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.** `SourceAccount`Kondisi 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 mendukung`SourceAccount`.** `SourceAccount`Kondisi 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 Server Amazon
  + API SMS dan Suara Amazon Pinpoint
  + Amazon RDS
  + Amazon Redshift
  + Amazon Glacier
  + Amazon SES
  + Amazon Simple Storage Service
  + AWS CodeCommit
  + 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
<a name="sns-allow-specified-service-to-publish-to-topic"></a>

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. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-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 Server Amazon
+ API SMS dan Suara Amazon Pinpoint
+ Amazon RDS
+ Amazon Redshift
+ Amazon SES
+ AWS CodeCommit
+ Directory Service
+ AWS Lambda
+ Manajer Insiden AWS Systems Manager

## `aws:SourceAccount` versus `aws:SourceOwner`
<a name="source-account-versus-source-owner"></a>

**penting**  
`aws:SourceOwner`tidak 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.
+ Lihat [Izinkan pemberitahuan acara Amazon S3 untuk mempublikasikan ke suatu topik](#sns-allow-s3-bucket-to-publish-to-topic) bagaimana notifikasi Amazon S3 digunakan `aws:SourceAccount` dan daftar AWS layanan yang mendukung kondisi tersebut.
+ Lihat [Izinkan Amazon SES mempublikasikan ke topik yang dimiliki oleh akun lain](#sns-allow-specified-service-to-publish-to-topic) bagaimana Amazon SES menggunakan `aws:SourceOwner` dan daftar AWS layanan yang mendukung kondisi tersebut.

## Izinkan akun di organisasi AWS Organizations untuk mempublikasikan ke topik di akun yang berbeda
<a name="sns-allow-organization-to-publish-to-topic-in-another-account"></a>

 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](https://console.aws.amazon.com/organizations/). Untuk informasi selengkapnya, lihat [Melihat detail organisasi dari akun manajemen](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html#orgs_view_org). 

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
<a name="sns-allow-cloudwatch-alarm-to-publish-to-topic-in-another-account"></a>

Gunakan langkah-langkah berikut untuk memanggil topik Amazon SNS dengan alarm di berbagai CloudWatch tempat. Akun AWS Contoh ini menggunakan dua akun:
+ **Akun A** digunakan untuk membuat CloudWatch alarm.
+ **Akun B** digunakan untuk membuat topik SNS.

**Buat topik SNS di akun B**

1. Masuk ke [Konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Pada panel navigasi, silakan pilih **Topik**, lalu pilih **Buat topik**.

1. Pilih **Standar** untuk jenis topik, lalu buat nama untuk topik tersebut.

1. Pilih **Buat topik**, lalu salin **ARN** topik.

1. Di panel navigasi, pilih **Langganan**, lalu pilih **Buat** langganan.

1. Tambahkan ARN topik di bagian Topik **ARN**, pilih **Email** sebagai protokol, lalu **masukkan** alamat email.

1. Pilih **Buat langganan**, lalu periksa email Anda untuk **mengonfirmasi langganan**.

**Buat CloudWatch alarm di akun A**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Alarm, lalu pilih **Buat** alarm**.

1. Jika Anda belum membuat alarm, buat alarm sekarang. Jika tidak, pilih **metrik** Anda, lalu berikan detail untuk parameter ambang batas dan perbandingan.

1. Dari **Konfigurasi Tindakan**, di bawah **Pemberitahuan**, pilih **Gunakan topik ARN untuk memberi tahu akun lain**, lalu masukkan topik **ARN** dari Akun B.

1. Buat nama untuk alarm, lalu pilih **Buat alarm**.

**Perbarui kebijakan akses topik SNS di akun B**

1. Masuk ke [Konsol Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Di panel navigasi, pilih **Topik**, lalu pilih topik.

1. Pilih **Edit**, lalu tambahkan yang berikut ini ke kebijakan:

**catatan**  
Ganti nilai contoh dalam kebijakan di bawah ini dengan milik Anda sendiri. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "__default_policy_ID",
    "Statement": [
        {
            "Sid": "__default_statement_ID",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "SNS:GetTopicAttributes",
                "SNS:SetTopicAttributes",
                "SNS:AddPermission",
                "SNS:RemovePermission",
                "SNS:DeleteTopic",
                "SNS:Subscribe",
                "SNS:ListSubscriptionsByTopic",
                "SNS:Publish"
            ],
            "Resource": "arn:aws:cloudwatch:us-west-1:111122223333:alarm:",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cloudwatch:us-west-1:111122223333:alarm:"
                }
            }
        }
    ]
}
```

------

**Uji alarm**

Untuk menguji alarm, ubah ambang alarm berdasarkan titik data metrik, atau ubah status alarm secara manual. Saat Anda mengubah ambang alarm atau status alarm, Anda menerima pemberitahuan email.

**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**](sns-create-topic.md) di akun yang sama dengan **CloudWatchalarm (111122223333**).

1. Berlangganan [**fungsi Lambda**](lambda-console.md) atau [ EventBridgeaturan Amazon ke topik](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-s3-object-created-tutorial.html) Amazon SNS tersebut.

1. 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
<a name="sns-restrict-publication-only-from-specified-vpc-endpoint"></a>

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"
      }
    }
  }]
}
```

# Bagaimana Amazon SNS bekerja dengan IAM
<a name="security_iam_service-with-iam"></a>

Sebelum Anda menggunakan IAM untuk mengelola akses ke Amazon SNS, pelajari fitur IAM apa yang tersedia untuk digunakan dengan Amazon SNS.






**Fitur IAM yang dapat Anda gunakan dengan Amazon Simple Notification Service**  

| Fitur IAM | Dukungan Amazon SNS | 
| --- | --- | 
|  [Kebijakan berbasis identitas](security-iam.md#security_iam_service-with-iam-id-based-policies)  |   Ya  | 
|  [Kebijakan berbasis sumber daya](security-iam.md#security_iam_service-with-iam-resource-based-policies)  |  Ya  | 
|  [Tindakan kebijakan](security-iam.md#security_iam_service-with-iam-id-based-policies-actions)  |   Ya  | 
|  [Sumber daya kebijakan](security-iam.md#security_iam_service-with-iam-id-based-policies-resources)  |   Ya  | 
|  [kunci-kunci persyaratan kebijakan (spesifik layanan)](security-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   Ya  | 
|  [ACLs](security-iam.md#security_iam_service-with-iam-acls)  |   Tidak   | 
|  [ABAC (tanda dalam kebijakan)](security-iam.md#security_iam_service-with-iam-tags)  |   Parsial  | 
|  [Kredensial sementara](security-iam.md#security_iam_service-with-iam-roles-tempcreds)  |   Ya  | 
|  [Izin principal](security-iam.md#security_iam_service-with-iam-principal-permissions)  |   Ya  | 
|  [Peran layanan](security-iam.md#security_iam_service-with-iam-roles-service)  |   Ya  | 
|  [Peran terkait layanan](security-iam.md#security_iam_service-with-iam-roles-service-linked)  |   Tidak   | 

*Untuk mendapatkan tampilan tingkat tinggi tentang cara kerja Amazon SNS dan layanan AWS lainnya dengan sebagian besar fitur IAM, [AWS lihat layanan yang bekerja dengan IAM di Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) IAM.*

# AWS kebijakan terkelola untuk Amazon Simple Notification Service
<a name="security-iam-awsmanpol"></a>



Kebijakan AWS terkelola adalah kebijakan mandiri yang dibuat dan dikelola oleh AWS. AWS Kebijakan terkelola dirancang untuk memberikan izin bagi banyak kasus penggunaan umum sehingga Anda dapat mulai menetapkan izin kepada pengguna, grup, dan peran.

Perlu diingat bahwa kebijakan AWS terkelola mungkin tidak memberikan izin hak istimewa paling sedikit untuk kasus penggunaan spesifik Anda karena tersedia untuk digunakan semua pelanggan. AWS Kami menyarankan Anda untuk mengurangi izin lebih lanjut dengan menentukan [kebijakan yang dikelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) yang khusus untuk kasus penggunaan Anda.

Anda tidak dapat mengubah izin yang ditentukan dalam kebijakan AWS terkelola. Jika AWS memperbarui izin yang ditentukan dalam kebijakan AWS terkelola, pembaruan akan memengaruhi semua identitas utama (pengguna, grup, dan peran) yang dilampirkan kebijakan tersebut. AWS kemungkinan besar akan memperbarui kebijakan AWS terkelola saat baru Layanan AWS diluncurkan atau operasi API baru tersedia untuk layanan yang ada.

Untuk informasi selengkapnya, lihat [Kebijakan terkelola AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) dalam *Panduan Pengguna IAM*.

 





## AWS kebijakan terkelola: SNSFull Akses Amazon
<a name="security-iam-awsmanpol-AmazonSNSFullAccess"></a>

`AmazonSNSFullAccess`menyediakan akses penuh ke Amazon SNS menggunakan file. Konsol Manajemen AWS Kebijakan ini juga mencakup tindakan baca dan tulis berikut AWS Olah Pesan Pengguna Akhir SMS saat dipanggil menggunakan Amazon SNS. Anda dapat melampirkan kebijakan ini ke pengguna, grup, atau peran Anda.

**Detail izin**

Izin berikut hanya berlaku saat menggunakan Amazon APIs SNS:
+ `sns:*`— Memungkinkan izin penuh untuk melakukan tindakan apa pun yang terkait dengan Amazon SNS. Wildcard ini (\$1) berarti bahwa pengguna dapat menjalankan semua tindakan Amazon SNS yang mungkin.
+ `sms-voice:DescribeVerifiedDestinationNumbers`— Memungkinkan Anda untuk mengambil daftar nomor telepon yang telah diverifikasi untuk mengirim pesan SMS dalam Akun AWS.
+ `sms-voice:CreateVerifiedDestinationNumber`— Memungkinkan Anda memverifikasi nomor telepon baru untuk digunakan dengan layanan pesan SMS di dalamnya AWS.
+ `sms-voice:SendDestinationNumberVerificationCode`— Memungkinkan Anda mengirim kode verifikasi ke nomor telepon yang sedang dalam proses diverifikasi untuk pesan SMS di dalamnya AWS. 
+ `sms-voice:SendTextMessage`— Memungkinkan Anda membuat pesan teks baru dan mengirimkannya ke nomor telepon penerima. `SendTextMessage`hanya mengirim pesan SMS ke satu penerima setiap kali dipanggil.
+ `sms-voice:DeleteVerifiedDestinationNumber`— Memungkinkan Anda untuk menghapus nomor telepon dari daftar nomor yang diverifikasi dalam Akun AWS
+ `sms-voice:VerifyDestinationNumber`— Memungkinkan Anda untuk memulai dan menyelesaikan proses verifikasi untuk nomor telepon yang akan digunakan untuk layanan pesan SMS di dalamnya AWS.
+ `sms-voice:DescribeAccountAttributes`— Memungkinkan Anda untuk mengambil informasi rinci tentang atribut tingkat akun yang terkait dengan layanan pesan SMS di dalamnya. AWS
+ `sms-voice:DescribeSpendLimits`— Memungkinkan Anda untuk mengambil informasi tentang batas pengeluaran yang terkait dengan layanan pesan SMS dalam Akun AWS
+ `sms-voice:DescribePhoneNumbers`— Memungkinkan Anda untuk mengambil informasi rinci tentang nomor telepon yang terkait dengan layanan pesan SMS dalam Akun AWS 
+ `sms-voice:SetTextMessageSpendLimitOverride`— Memungkinkan Anda untuk mengatur atau mengganti batas pengeluaran untuk pesan teks SMS dalam Akun AWS
+ `sms-voice:DescribeOptedOutNumbers`— Memungkinkan Anda untuk mengambil daftar nomor telepon yang telah memilih keluar dari menerima pesan SMS dari akun Anda AWS .
+ `sms-voice:DeleteOptedOutNumber`— Memungkinkan Anda untuk menghapus nomor telepon dari daftar nomor opted-out dalam Akun AWS

**`AmazonSNSFullAccess`contoh kebijakan**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SNSFullAccess",
            "Effect": "Allow",
            "Action": "sns:*",
            "Resource": "*"
        },
        {
            "Sid": "SMSAccessViaSNS",
            "Effect": "Allow",
            "Action": [
                "sms-voice:DescribeVerifiedDestinationNumbers",
                "sms-voice:CreateVerifiedDestinationNumber",
                "sms-voice:SendDestinationNumberVerificationCode",
                "sms-voice:SendTextMessage",
                "sms-voice:DeleteVerifiedDestinationNumber",
                "sms-voice:VerifyDestinationNumber",
                "sms-voice:DescribeAccountAttributes",
                "sms-voice:DescribeSpendLimits",
                "sms-voice:DescribePhoneNumbers",
                "sms-voice:SetTextMessageSpendLimitOverride",
                "sms-voice:DescribeOptedOutNumbers",
                "sms-voice:DeleteOptedOutNumber"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:CalledViaLast": "sns.amazonaws.com"
                }
            }
        }
    ]
}
```

------

Untuk melihat izin kebijakan ini, lihat [Amazon SNSFull Access](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSNSFullAccess.html) di *Referensi Kebijakan AWS Terkelola*.

## AWS kebijakan terkelola: Amazon SNSRead OnlyAccess
<a name="security-iam-awsmanpol-AmazonSNSReadOnlyAccess"></a>

`AmazonSNSReadOnlyAccess`menyediakan akses hanya-baca ke Amazon SNS menggunakan file. Konsol Manajemen AWS Kebijakan ini juga mencakup tindakan hanya-baca berikut AWS Olah Pesan Pengguna Akhir SMS saat dipanggil menggunakan Amazon SNS. Anda dapat melampirkan kebijakan ini ke pengguna, grup, dan peran Anda.

**Detail izin**

Izin berikut hanya berlaku saat menggunakan Amazon APIs SNS:
+ `sns:GetTopicAttributes`— Memungkinkan Anda untuk mengambil atribut dari topik Amazon SNS. Ini termasuk informasi seperti ARN topik (Nama Sumber Daya Amazon), daftar pelanggan, kebijakan pengiriman, kebijakan kontrol akses, dan metadata lain yang terkait dengan topik tersebut.
+ `sns:List*`— Memungkinkan Anda melakukan operasi apa pun yang dimulai dengan `List` untuk sumber daya Amazon SNS. Ini termasuk izin untuk mencantumkan berbagai elemen yang terkait dengan Amazon SNS, seperti:
  + `sns:ListTopics`— Memungkinkan Anda untuk mengambil daftar semua topik Amazon SNS di. Akun AWS
  + `sns:ListSubscriptions`— Memungkinkan Anda untuk mengambil daftar semua langganan ke topik Amazon SNS.
  + `sns:ListSubscriptionsByTopic`— Memungkinkan Anda membuat daftar semua langganan untuk topik Amazon SNS tertentu.
  + `sns:ListPlatformApplications`— Memungkinkan Anda untuk membuat daftar semua aplikasi platform yang dibuat untuk pemberitahuan push seluler.
  + `sns:ListEndpointsByPlatformApplication`— Memungkinkan Anda untuk membuat daftar semua titik akhir yang terkait dengan aplikasi platform.
+ `sns:CheckIfPhoneNumberIsOptedOut`— Memungkinkan Anda memeriksa apakah nomor telepon tertentu telah memilih untuk tidak menerima pesan SMS melalui Amazon SNS.
+ `sns:GetEndpointAttributes`— Memungkinkan Anda mengambil atribut titik akhir yang terkait dengan aplikasi platform Amazon SNS. Ini dapat mencakup atribut seperti status diaktifkan titik akhir, data pengguna kustom, dan metadata lain yang terkait dengan titik akhir.
+ `sns:GetDataProtectionPolicy`— Memungkinkan Anda mengambil kebijakan perlindungan data yang terkait dengan topik Amazon SNS.
+ `sns:GetPlatformApplicationAttributes`— Memungkinkan Anda untuk mengambil atribut dari aplikasi platform Amazon SNS. Aplikasi platform digunakan di Amazon SNS untuk mengirim pemberitahuan push ke perangkat seluler melalui layanan seperti Apple Push Notification Service (APNS) atau Firebase Cloud Messaging (FCM).
+ `sns:GetSMSAttributes`— Memungkinkan Anda untuk mengambil pengaturan SMS default untuk. Akun AWS
+ `sns:GetSMSSandboxAccountStatus`— Memungkinkan Anda untuk mengambil status saat ini dari kotak pasir SMS untuk Anda. Akun AWS
+ `sns:GetSubscriptionAttributes`— Memungkinkan Anda mengambil atribut langganan tertentu ke topik Amazon SNS.
+ `sms-voice:DescribeVerifiedDestinationNumbers`— Memungkinkan Anda untuk melihat atau mengambil daftar nomor telepon yang telah diverifikasi untuk mengirim pesan SMS dalam Akun AWS
+ `sms-voice:DescribeAccountAttributes`— Memungkinkan Anda untuk melihat atau mengambil informasi tentang atribut tingkat akun yang terkait dengan layanan pesan SMS di dalamnya. AWS
+ `sms-voice:DescribeSpendLimits`— Memungkinkan Anda untuk melihat atau mengambil informasi tentang batas pengeluaran yang terkait dengan layanan pesan SMS dalam Akun AWS
+ `sms-voice:DescribePhoneNumbers`— Memungkinkan Anda untuk melihat atau mengambil informasi tentang nomor telepon yang digunakan untuk layanan pesan SMS dalam Akun AWS
+ `sms-voice:DescribeOptedOutNumbers`— Memungkinkan Anda untuk melihat atau mengambil daftar nomor telepon yang telah memilih untuk tidak menerima pesan SMS dari Anda Akun AWS

**`AmazonSNSReadOnlyAccess`contoh kebijakan**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SNSReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "sns:GetTopicAttributes",
                "sns:List*",
                "sns:CheckIfPhoneNumberIsOptedOut",
                "sns:GetEndpointAttributes",
                "sns:GetDataProtectionPolicy",
                "sns:GetPlatformApplicationAttributes",
                "sns:GetSMSAttributes",
                "sns:GetSMSSandboxAccountStatus",
                "sns:GetSubscriptionAttributes"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SMSAccessViaSNS",
            "Effect": "Allow",
            "Action": [
                "sms-voice:DescribeVerifiedDestinationNumbers",
                "sms-voice:DescribeAccountAttributes",
                "sms-voice:DescribeSpendLimits",
                "sms-voice:DescribePhoneNumbers",
                "sms-voice:DescribeOptedOutNumbers"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:CalledViaLast": "sns.amazonaws.com"
                }
            }
        }
    ]
}
```

------

Untuk melihat izin kebijakan ini, lihat [Amazon SNSFull Access](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSNSFullAccess.html) di *Referensi Kebijakan AWS Terkelola*.

## Pembaruan Amazon SNS ke AWS kebijakan terkelola
<a name="security-iam-awsmanpol-updates"></a>



Lihat detail tentang pembaruan kebijakan AWS terkelola untuk Amazon SNS sejak layanan ini mulai melacak perubahan ini. Untuk peringatan otomatis tentang perubahan pada halaman ini, berlangganan umpan RSS di halaman riwayat Dokumen Amazon SNS.




| Ubah | Deskripsi | Tanggal | 
| --- | --- | --- | 
|   [AmazonSNSFullAccess](#security-iam-awsmanpol-AmazonSNSFullAccess) — Permbaruan ke kebijakan yang sudah ada  |  Amazon SNS menambahkan izin baru untuk memungkinkan akses penuh ke Amazon SNS menggunakan file. Konsol Manajemen AWS  | 09/24/2024 | 
|  [Amazon SNSRead OnlyAccess](#security-iam-awsmanpol-AmazonSNSReadOnlyAccess) - Perbarui ke kebijakan yang ada  |  Amazon SNS menambahkan izin baru untuk memungkinkan akses hanya-baca ke Amazon SNS menggunakan file. Konsol Manajemen AWS  | 09/24/2024 | 
|  Amazon SNS mulai melacak perubahan  |  Amazon SNS mulai melacak perubahan untuk kebijakan yang AWS dikelola.  | 08/27/2024 | 

## Tindakan kebijakan untuk Amazon SNS
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Mendukung tindakan kebijakan:** Ya

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, di mana **utama** dapat melakukan **tindakan** pada **sumber daya**, dan dalam **kondisi apa**.

Elemen `Action` dari kebijakan JSON menjelaskan tindakan yang dapat Anda gunakan untuk mengizinkan atau menolak akses dalam sebuah kebijakan. Sertakan tindakan dalam kebijakan untuk memberikan izin untuk melakukan operasi terkait.



Untuk melihat daftar tindakan Amazon SNS, lihat [Sumber Daya yang Ditentukan oleh Layanan Pemberitahuan Sederhana Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html) di Referensi *Otorisasi Layanan*.

Tindakan kebijakan di Amazon SNS menggunakan awalan berikut sebelum tindakan:

```
sns
```

Untuk menetapkan secara spesifik beberapa tindakan dalam satu pernyataan, pisahkan tindakan tersebut dengan koma.

```
"Action": [
      "sns:action1",
      "sns:action2"
         ]
```





Untuk melihat contoh kebijakan berbasis identitas Amazon SNS, lihat. [Contoh kebijakan berbasis identitas untuk Amazon Simple Notification Service](security_iam_id-based-policy-examples.md)

## Sumber daya kebijakan untuk Amazon SNS
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Mendukung sumber daya kebijakan:** Ya

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, di mana **utama** dapat melakukan **tindakan** pada **sumber daya**, dan dalam **kondisi apa**.

Elemen kebijakan JSON `Resource` menentukan objek yang menjadi target penerapan tindakan. Praktik terbaiknya, tentukan sumber daya menggunakan [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Untuk tindakan yang tidak mendukung izin di tingkat sumber daya, gunakan wildcard (\$1) untuk menunjukkan bahwa pernyataan tersebut berlaku untuk semua sumber daya.

```
"Resource": "*"
```

Untuk melihat daftar jenis sumber daya Amazon SNS dan jenisnya ARNs, lihat [Tindakan yang Ditentukan oleh Layanan Pemberitahuan Sederhana Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html) di Referensi *Otorisasi Layanan*. Untuk mempelajari tindakan yang dapat Anda tentukan ARN dari setiap sumber daya, lihat Sumber Daya yang [Ditentukan oleh Amazon Simple Notification Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html).





Untuk melihat contoh kebijakan berbasis identitas Amazon SNS, lihat. [Contoh kebijakan berbasis identitas untuk Amazon Simple Notification Service](security_iam_id-based-policy-examples.md)

## Kunci kondisi kebijakan untuk Amazon SNS
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**Mendukung kunci kondisi kebijakan khusus layanan:** Yes

Administrator dapat menggunakan kebijakan AWS JSON untuk menentukan siapa yang memiliki akses ke apa. Yaitu, **principal** dapat melakukan **tindakan** pada suatu **sumber daya**, dan dalam suatu **syarat**.

Elemen `Condition` menentukan ketika pernyataan dieksekusi berdasarkan kriteria yang ditetapkan. Anda dapat membuat ekspresi bersyarat yang menggunakan [operator kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), misalnya sama dengan atau kurang dari, untuk mencocokkan kondisi dalam kebijakan dengan nilai-nilai yang diminta. Untuk melihat semua kunci kondisi AWS global, lihat [kunci konteks kondisi AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) di *Panduan Pengguna IAM*.

Untuk melihat daftar kunci kondisi Amazon SNS, lihat Kunci Kondisi untuk [Layanan Pemberitahuan Sederhana Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html) di Referensi *Otorisasi Layanan*. Untuk mempelajari tindakan dan sumber daya yang dapat Anda gunakan kunci kondisi, lihat [Sumber Daya yang Ditentukan oleh Amazon Simple Notification Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html).

Untuk melihat contoh kebijakan berbasis identitas Amazon SNS, lihat. [Contoh kebijakan berbasis identitas untuk Amazon Simple Notification Service](security_iam_id-based-policy-examples.md)

## ACLs di Amazon SNS
<a name="security_iam_service-with-iam-acls"></a>

**Mendukung ACLs:** Tidak 

Access control lists (ACLs) mengontrol prinsipal mana (anggota akun, pengguna, atau peran) yang memiliki izin untuk mengakses sumber daya. ACLs mirip dengan kebijakan berbasis sumber daya, meskipun mereka tidak menggunakan format dokumen kebijakan JSON.

## ABAC dengan Amazon SNS
<a name="security_iam_service-with-iam-tags"></a>

**Mendukung ABAC (tag dalam kebijakan): Sebagian**

Kontrol akses berbasis atribut (ABAC) adalah strategi otorisasi yang menentukan izin berdasarkan atribut tanda. Anda dapat melampirkan tag ke entitas dan AWS sumber daya IAM, lalu merancang kebijakan ABAC untuk mengizinkan operasi saat tag prinsipal cocok dengan tag pada sumber daya.

Untuk mengendalikan akses berdasarkan tanda, berikan informasi tentang tanda di [elemen kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dari kebijakan menggunakan kunci kondisi `aws:ResourceTag/key-name`, `aws:RequestTag/key-name`, atau `aws:TagKeys`.

Jika sebuah layanan mendukung ketiga kunci kondisi untuk setiap jenis sumber daya, nilainya adalah **Ya** untuk layanan tersebut. Jika suatu layanan mendukung ketiga kunci kondisi untuk hanya beberapa jenis sumber daya, nilainya adalah **Parsial**.

Untuk informasi selengkapnya tentang ABAC, lihat [Tentukan izin dengan otorisasi ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) dalam *Panduan Pengguna IAM.* Untuk melihat tutorial yang menguraikan langkah-langkah pengaturan ABAC, lihat [Menggunakan kontrol akses berbasis atribut (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) dalam *Panduan Pengguna IAM*.

## Menggunakan kredensi sementara dengan Amazon SNS
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Mendukung kredensial sementara:** Ya

Kredensi sementara menyediakan akses jangka pendek ke AWS sumber daya dan secara otomatis dibuat saat Anda menggunakan federasi atau beralih peran. AWS merekomendasikan agar Anda secara dinamis menghasilkan kredensi sementara alih-alih menggunakan kunci akses jangka panjang. Untuk informasi selengkapnya, lihat [Kredensial keamanan sementara di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) dan [Layanan AWS yang berfungsi dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) dalam *Panduan Pengguna IAM*.

## Izin utama lintas layanan untuk Amazon SNS
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Mendukung sesi akses terusan (FAS):** Ya

 Sesi akses teruskan (FAS) menggunakan izin dari pemanggilan utama Layanan AWS, dikombinasikan dengan permintaan Layanan AWS untuk membuat permintaan ke layanan hilir. Untuk detail kebijakan ketika mengajukan permintaan FAS, lihat [Sesi akses terusan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Peran layanan untuk Amazon SNS
<a name="security_iam_service-with-iam-roles-service"></a>

**Mendukung peran layanan:** Ya

 Peran layanan adalah [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) yang diambil oleh sebuah layanan untuk melakukan tindakan atas nama Anda. Administrator IAM dapat membuat, mengubah, dan menghapus peran layanan dari dalam IAM. Untuk informasi selengkapnya, lihat [Buat sebuah peran untuk mendelegasikan izin ke Layanan AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dalam *Panduan pengguna IAM*. 

**Awas**  
Mengubah izin untuk peran layanan dapat merusak fungsionalitas Amazon SNS. Edit peran layanan hanya jika Amazon SNS memberikan panduan untuk melakukannya.

## Peran terkait layanan untuk Amazon SNS
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Mendukung peran terkait layanan:** Tidak 

 Peran terkait layanan adalah jenis peran layanan yang ditautkan ke. Layanan AWS Layanan tersebut dapat menjalankan peran untuk melakukan tindakan atas nama Anda. Peran terkait layanan muncul di Anda Akun AWS dan dimiliki oleh layanan. Administrator IAM dapat melihat, tetapi tidak dapat mengedit izin untuk peran terkait layanan. 

Untuk detail tentang pembuatan atau manajemen peran terkait layanan, lihat [Layanan AWS yang berfungsi dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). Cari layanan dalam tabel yang memiliki `Yes` di kolom **Peran terkait layanan**. Pilih tautan **Ya** untuk melihat dokumentasi peran terkait layanan untuk layanan tersebut.

# Contoh kebijakan berbasis identitas untuk Amazon Simple Notification Service
<a name="security_iam_id-based-policy-examples"></a>

Secara default, pengguna dan peran tidak memiliki izin untuk membuat atau memodifikasi sumber daya Amazon SNS. Untuk memberikan izin kepada pengguna untuk melakukan tindakan di sumber daya yang mereka perlukan, administrator IAM dapat membuat kebijakan IAM.

*Untuk mempelajari cara membuat kebijakan berbasis identitas IAM dengan menggunakan contoh dokumen kebijakan JSON ini, lihat [Membuat kebijakan IAM (konsol) di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html).*

Untuk detail tentang tindakan dan jenis sumber daya yang ditentukan oleh Amazon SNS, termasuk format ARNs untuk setiap jenis sumber daya, lihat [Tindakan, Sumber Daya, dan Kunci Kondisi untuk Layanan Pemberitahuan Sederhana Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsns.html) di Referensi *Otorisasi Layanan*.

## Praktik terbaik kebijakan
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Kebijakan berbasis identitas menentukan apakah seseorang dapat membuat, mengakses, atau menghapus sumber daya Amazon SNS di akun Anda. Tindakan ini membuat Akun AWS Anda dikenai biaya. Ketika Anda membuat atau mengedit kebijakan berbasis identitas, ikuti panduan dan rekomendasi ini:
+ **Mulailah dengan kebijakan AWS terkelola dan beralih ke izin hak istimewa paling sedikit — Untuk mulai memberikan izin** kepada pengguna dan beban kerja Anda, gunakan *kebijakan AWS terkelola* yang memberikan izin untuk banyak kasus penggunaan umum. Mereka tersedia di Anda Akun AWS. Kami menyarankan Anda mengurangi izin lebih lanjut dengan menentukan kebijakan yang dikelola AWS pelanggan yang khusus untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat [Kebijakan yang dikelola AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) atau [Kebijakan yang dikelola AWS untuk fungsi tugas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dalam *Panduan Pengguna IAM*.
+ **Menerapkan izin dengan hak akses paling rendah** – Ketika Anda menetapkan izin dengan kebijakan IAM, hanya berikan izin yang diperlukan untuk melakukan tugas. Anda melakukannya dengan mendefinisikan tindakan yang dapat diambil pada sumber daya tertentu dalam kondisi tertentu, yang juga dikenal sebagai *izin dengan hak akses paling rendah*. Untuk informasi selengkapnya tentang cara menggunakan IAM untuk mengajukan izin, lihat [Kebijakan dan izin dalam IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dalam *Panduan Pengguna IAM*.
+ **Gunakan kondisi dalam kebijakan IAM untuk membatasi akses lebih lanjut** – Anda dapat menambahkan suatu kondisi ke kebijakan Anda untuk membatasi akses ke tindakan dan sumber daya. Sebagai contoh, Anda dapat menulis kondisi kebijakan untuk menentukan bahwa semua permintaan harus dikirim menggunakan SSL. Anda juga dapat menggunakan ketentuan untuk memberikan akses ke tindakan layanan jika digunakan melalui yang spesifik Layanan AWS, seperti CloudFormation. Untuk informasi selengkapnya, lihat [Elemen kebijakan JSON IAM: Kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dalam *Panduan Pengguna IAM*.
+ **Gunakan IAM Access Analyzer untuk memvalidasi kebijakan IAM Anda untuk memastikan izin yang aman dan fungsional** – IAM Access Analyzer memvalidasi kebijakan baru dan yang sudah ada sehingga kebijakan tersebut mematuhi bahasa kebijakan IAM (JSON) dan praktik terbaik IAM. IAM Access Analyzer menyediakan lebih dari 100 pemeriksaan kebijakan dan rekomendasi yang dapat ditindaklanjuti untuk membantu Anda membuat kebijakan yang aman dan fungsional. Untuk informasi selengkapnya, lihat [Validasi kebijakan dengan IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dalam *Panduan Pengguna IAM*.
+ **Memerlukan otentikasi multi-faktor (MFA)** - Jika Anda memiliki skenario yang mengharuskan pengguna IAM atau pengguna root di Anda, Akun AWS aktifkan MFA untuk keamanan tambahan. Untuk meminta MFA ketika operasi API dipanggil, tambahkan kondisi MFA pada kebijakan Anda. Untuk informasi selengkapnya, lihat [Amankan akses API dengan MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) dalam *Panduan Pengguna IAM*.

Untuk informasi selengkapnya tentang praktik terbaik dalam IAM, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam *Panduan Pengguna IAM*.

## Menggunakan konsol Amazon SNS
<a name="security_iam_id-based-policy-examples-console"></a>

Untuk mengakses konsol Amazon Simple Notification Service, Anda harus memiliki set izin minimum. Izin ini harus memungkinkan Anda untuk membuat daftar dan melihat detail tentang sumber daya Amazon SNS di Anda. Akun AWS Jika Anda membuat kebijakan berbasis identitas yang lebih ketat daripada izin minimum yang diperlukan, konsol tidak akan berfungsi sebagaimana mestinya untuk entitas (pengguna atau peran) dengan kebijakan tersebut.

Anda tidak perlu mengizinkan izin konsol minimum untuk pengguna yang melakukan panggilan hanya ke AWS CLI atau AWS API. Sebagai gantinya, izinkan akses hanya ke tindakan yang sesuai dengan operasi API yang coba mereka lakukan.

Untuk memastikan bahwa pengguna dan peran masih dapat menggunakan konsol Amazon SNS, lampirkan juga Amazon `ConsoleAccess` SNS `ReadOnly` AWS atau kebijakan terkelola ke entitas. Untuk informasi selengkapnya, lihat [Menambah izin untuk pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) dalam *Panduan Pengguna IAM*.

## Jenis-jenis kebijakan lain
<a name="security_iam_access-manage-other-policies"></a>

AWS mendukung jenis kebijakan tambahan yang dapat menetapkan izin maksimum yang diberikan oleh jenis kebijakan yang lebih umum:
+ **Batasan izin** – Menetapkan izin maksimum yang dapat diberikan oleh kebijakan berbasis identitas kepada entitas IAM. Untuk informasi selengkapnya, lihat [Batasan izin untuk entitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dalam *Panduan Pengguna IAM*.
+ **Kebijakan kontrol layanan (SCPs)** — Tentukan izin maksimum untuk organisasi atau unit organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat [Kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dalam *Panduan Pengguna AWS Organizations *.
+ **Kebijakan kontrol sumber daya (RCPs)** — Tetapkan izin maksimum yang tersedia untuk sumber daya di akun Anda. Untuk informasi selengkapnya, lihat [Kebijakan kontrol sumber daya (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) di *Panduan AWS Organizations Pengguna*.
+ **Kebijakan sesi** – Kebijakan lanjutan yang diteruskan sebagai parameter saat membuat sesi sementara untuk peran atau pengguna terfederasi. Untuk informasi selengkapnya, lihat [Kebijakan sesi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dalam *Panduan Pengguna IAM*.

## Berbagai jenis kebijakan
<a name="security_iam_access-manage-multiple-policies"></a>

Ketika beberapa jenis kebijakan berlaku pada suatu permintaan, izin yang dihasilkan lebih rumit untuk dipahami. Untuk mempelajari cara AWS menentukan apakah akan mengizinkan permintaan saat beberapa jenis kebijakan terlibat, lihat [Logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) di *Panduan Pengguna IAM*.

## Mengizinkan pengguna melihat izin mereka sendiri
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Contoh ini menunjukkan cara membuat kebijakan yang mengizinkan pengguna IAM melihat kebijakan inline dan terkelola yang dilampirkan ke identitas pengguna mereka. Kebijakan ini mencakup izin untuk menyelesaikan tindakan ini di konsol atau menggunakan API atau secara terprogram. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## Kebijakan berbasis identitas untuk Amazon SNS
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Mendukung kebijakan berbasis identitas**: Ya

Kebijakan berbasis identitas adalah dokumen kebijakan izin JSON yang dapat Anda lampirkan ke sebuah identitas, seperti pengguna IAM, grup pengguna IAM, atau peran IAM. Kebijakan ini mengontrol jenis tindakan yang dapat dilakukan oleh pengguna dan peran, di sumber daya mana, dan berdasarkan kondisi seperti apa. Untuk mempelajari cara membuat kebijakan berbasis identitas, lihat [Tentukan izin IAM kustom dengan kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

Dengan kebijakan berbasis identitas IAM, Anda dapat menentukan secara spesifik apakah tindakan dan sumber daya diizinkan atau ditolak, serta kondisi yang menjadi dasar dikabulkan atau ditolaknya tindakan tersebut. Untuk mempelajari semua elemen yang dapat Anda gunakan dalam kebijakan JSON, lihat [Referensi elemen kebijakan JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) dalam *Panduan Pengguna IAM*.

### Contoh kebijakan berbasis identitas untuk Amazon SNS
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Untuk melihat contoh kebijakan berbasis identitas Amazon SNS, lihat. [Contoh kebijakan berbasis identitas untuk Amazon Simple Notification Service](security_iam_id-based-policy-examples.md)

## Kebijakan berbasis sumber daya dalam Amazon SNS
<a name="security_iam_service-with-iam-resource-based-policies"></a>


|  |  | 
| --- |--- |
|  Mendukung kebijakan berbasis sumber daya  |  Ya  | 

Kebijakan berbasis sumber daya adalah dokumen kebijakan JSON yang Anda lampirkan ke sumber daya. Contoh kebijakan berbasis sumber daya adalah *kebijakan kepercayaan peran* IAM dan *kebijakan bucket* Amazon S3. Dalam layanan yang mendukung kebijakan berbasis sumber daya, administrator layanan dapat menggunakannya untuk mengontrol akses ke sumber daya tertentu. Untuk sumber daya tempat kebijakan dilampirkan, kebijakan menentukan tindakan apa yang dapat dilakukan oleh principal tertentu pada sumber daya tersebut dan dalam kondisi apa. Anda harus [menentukan principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html) dalam kebijakan berbasis sumber daya. Prinsipal dapat mencakup akun, pengguna, peran, pengguna federasi, atau. Layanan AWS

Untuk mengaktifkan akses lintas akun, Anda dapat menentukan secara spesifik seluruh akun atau entitas IAM di akun lain sebagai principal dalam kebijakan berbasis sumber daya. Untuk informasi selengkapnya, lihat [Akses sumber daya lintas akun di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dalam *Panduan Pengguna IAM*.

# Menggunakan kebijakan berbasis identitas dengan Amazon SNS
<a name="sns-using-identity-based-policies"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/PolicyVariables.html) 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](#sns-example-policies).

## Kebijakan IAM dan Amazon SNS bersama-sama
<a name="iam-and-sns-policies"></a>

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\$1xyz dalam Kebijakan IAM Akun AWS Anda dilampirkan ke pengguna Bob dan Susan (yang berarti bahwa Bob dan Susan memiliki izin yang dinyatakan dalam kebijakan). Kebijakan Amazon SNS juga memberikan Bob dan Susan izin untuk mengakses `Subscribe` untuk topic\$1xyz.

![\[Membandingkan kebijakan IAM dan kebijakan Amazon SNS, menunjukkan bahwa kedua kebijakan tersebut memberikan izin yang setara kepada dua pengguna, Bob dan Susan, yang memungkinkan mereka berlangganan topik Amazon SNS tertentu dalam file. Akun AWS Perbedaan utama yang disorot adalah bahwa kebijakan Amazon SNS dapat memberikan izin kepada pengguna di berbagai tempat Akun AWS, sedangkan kebijakan IAM tidak bisa.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/SNS_EquivalentPolicies.png)


**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.

**Example 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\$1xyz). Diagram berikut menggambarkan konsep.  

![\[Menunjukkan bagaimana kebijakan IAM dan kebijakan Amazon SNS berlaku untuk pengguna Bob, dengan kebijakan IAM yang memungkinkan dia untuk berlangganan topik apa pun di Akun AWS, dan kebijakan Amazon SNS yang memberinya izin untuk mempublikasikan pesan ke topik tertentu bernama “topic_xyz.” Diagram menekankan perbedaan antara izin umum yang diberikan oleh kebijakan IAM dan izin khusus yang diberikan oleh kebijakan Amazon SNS untuk topik tertentu.\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/SNS_UnionOfPolicies.png)

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\$1xyz, kebijakan Amazon SNS akan mengizinkan tindakan tersebut.  
 

**Example 2**  
Dalam contoh ini, kita mengembangkan contoh 1 (ada dua kebijakan yang diterapkan pada Bob). Katakanlah bahwa Bob memublikasikan pesan ke topic\$1xyz 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\$1xyz, karena penolakan eksplisit selalu mengabaikan perizinan (untuk informasi lebih lanjut tentang logika evaluasi kebijakan, lihat [Logika evaluasi](sns-access-policy-language-evaluation-logic.md)). Diagram berikut menggambarkan konsep.  

![\[Ilustrasi bagaimana menambahkan kebijakan IAM yang menolak tindakan “Publikasikan” untuk semua topik dapat mengesampingkan kebijakan Amazon SNS yang ada yang memungkinkan pengguna Bob mempublikasikan ke topik tertentu, “topic_xyz.” Kebijakan penolakan IAM lebih diutamakan daripada kebijakan Amazon SNS, yang secara efektif mencegah Bob menerbitkan ke topik apa pun, termasuk “topic_xyz.”\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/images/SNS_DenyOverride.png)


Untuk contoh kebijakan yang mencakup tindakan dan sumber daya Amazon SNS, lihat [Contoh kebijakan untuk Amazon SNS](#sns-example-policies).

## Format ARN sumber daya Amazon SNS
<a name="sns-arn-format"></a>

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 ARNs, buka *Panduan Pengguna IAM*. [ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html#Identifiers_ARNs)

**Example**  
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
```

**Example**  
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 \$1 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
<a name="sns-api-actions"></a>

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](https://docs.aws.amazon.com/sns/latest/api/). 

## Kunci kebijakan Amazon SNS
<a name="sns-policy-keys"></a>

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](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) dalam *Panduan Pengguna IAM*. Untuk daftar kunci kondisi yang dapat digunakan dalam beberapa Layanan AWS, lihat [kunci konteks kondisi AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) 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](#sns-example-policies)) untuk membatasi akses ke titik akhir tertentu (misalnya, \$1@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](#sns-example-policies)) untuk membatasi publikasi ke protokol pengiriman tertentu (misalnya, https). 

## Contoh kebijakan untuk Amazon SNS
<a name="sns-example-policies"></a>

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. 

**Example 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": "*"
  }]
}
```

**Example 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"
  }]
}
```

**Example 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"
      }
    }
  }]
}
```

**Example 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 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 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 selain topik apa pun `Publish` selain 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"
    }
  ]
}
```

## Kebijakan Amazon SNS untuk Titik Akhir Email
<a name="sns-email-endpoints"></a>

Amazon SNS menormalkan alamat email dalam kebijakan akses titik akhir dengan menghapus spasi putih utama dan di belakang, mengonversi semua karakter menjadi huruf kecil, dan menormalkan karakter khusus dan urutan escape. Karena itu, Anda harus menggunakan alamat email huruf kecil dalam definisi kebijakan Anda untuk memastikan pencocokan permintaan berlangganan yang tepat. 

Contoh kebijakan:

```
{
    "Condition": {
        "StringEquals": {
            "sns:Endpoint": "user.name@example.com"
        }
    }
}
```

Alamat email berikut cocok dengan kondisi di atas:
+ `user.name@example.com`
+ `USER.NAME@EXAMPLE.COM`
+ `User.N\ame@Example.com`

## Kebijakan Amazon SNS untuk titik akhir HTTP/HTTPs
<a name="sns-http-https-endpoints"></a>

Amazon SNS menormalkan titik akhir dalam kebijakan akses HTTP/HTTPs titik akhir dengan mengonversi skema dan nama host menjadi huruf kecil sambil mempertahankan port, jalur, parameter kueri, dan fragmen dengan tepat. Karena itu, Anda harus menggunakan skema huruf kecil dan nama host dalam definisi kebijakan Anda untuk memastikan pencocokan permintaan langganan yang tepat. 

```
{
    "Condition": {
        "StringEquals": {
            "sns:Endpoint": "https://example.com:443/path?A=B"
        }
    }
}
```

Berikut ini HTTP/HTTPs cocok dengan kondisi di atas:
+ `HTTPS://EXAMPLE.COM:443/path?A=B`
+ `HTTPS://example.com:443/path?A=B`
+ `HTTPS://ExAmPlE.cOm:443/path?A=B`

# Mengelola kebijakan Amazon SNS IAM khusus
<a name="sns-sms-custom-policies"></a>

Kebijakan IAM khusus memungkinkan Anda menentukan izin untuk pengguna, grup, atau peran IAM individual, memberikan atau membatasi akses ke sumber daya dan tindakan tertentu. AWS Saat mengelola sumber daya Amazon SNS, kebijakan IAM khusus memungkinkan Anda menyesuaikan izin akses sesuai dengan persyaratan keamanan dan operasional organisasi Anda.

Gunakan langkah-langkah berikut untuk mengelola kebijakan IAM khusus untuk Amazon SNS:

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dari panel navigasi, pilih **Kebijakan**.

1. Untuk membuat kebijakan IAM kustom baru, pilih **Buat kebijakan** dan pilih **SNS**. Untuk mengedit kebijakan yang ada, pilih kebijakan dari daftar dan pilih **Edit kebijakan**.

1. Di editor kebijakan, tentukan **izin** untuk mengakses sumber daya Amazon SNS. Anda dapat menentukan **tindakan**, **sumber daya**, dan **kondisi** berdasarkan kebutuhan spesifik Anda.

1. Untuk memberikan izin untuk tindakan Amazon SNS, sertakan tindakan Amazon SNS yang relevan `sns:Publish` seperti`sns:Subscribe`,, `sns:DeleteTopic` dan dalam kebijakan IAM Anda. Tentukan ARN (Nama Sumber Daya Amazon) dari topik Amazon SNS yang menerapkan izin.

1. Tentukan **pengguna**, **grup**, atau **peran** IAM yang harus dilampirkan kebijakan tersebut. Anda dapat melampirkan kebijakan secara langsung ke pengguna atau grup IAM, atau mengaitkannya dengan peran IAM yang digunakan oleh Layanan AWS atau aplikasi.

1. Tinjau konfigurasi kebijakan IAM untuk memastikannya selaras dengan persyaratan kontrol akses Anda. Setelah diverifikasi, **simpan** perubahan kebijakan.

1. Lampirkan **kebijakan IAM khusus** ke pengguna, grup, atau peran IAM yang relevan dalam Anda. Akun AWS Ini memberi mereka izin yang ditentukan dalam kebijakan untuk mengelola sumber daya Amazon SNS.

# Menggunakan kredensial sementara dengan Amazon SNS
<a name="sns-using-temporary-credentials"></a>

AWS Identity and Access Management (IAM) memungkinkan Anda untuk memberikan kredensi keamanan sementara kepada pengguna dan aplikasi yang membutuhkan akses ke sumber daya Anda. AWS Kredensyal keamanan sementara ini terutama digunakan untuk peran IAM dan akses federasi melalui protokol standar industri seperti SAM dan OpenID Connect (OIDC).

Untuk mengelola akses ke AWS sumber daya secara efektif, penting untuk memahami konsep-konsep kunci berikut:
+ Peran **IAM — Peran** digunakan untuk mendelegasikan akses ke AWS sumber daya. Peran dapat diasumsikan oleh entitas seperti instans Amazon EC2, fungsi Lambda, atau pengguna dari yang lain. Akun AWS
+ Pengguna **Federasi — Ini adalah pengguna** yang diautentikasi melalui penyedia identitas eksternal (IdPs) menggunakan SAMP atau OIDC. Akses federasi direkomendasikan untuk pengguna manusia, sedangkan peran IAM harus digunakan untuk aplikasi perangkat lunak.
+ **Peran Di Mana Saja** — Untuk aplikasi eksternal yang memerlukan AWS akses, Anda dapat menggunakan IAM Roles Anywhere untuk mengelola akses dengan aman tanpa membuat kredensyal jangka panjang.

Anda dapat menggunakan kredensil keamanan sementara untuk mengajukan permintaan ke Amazon SNS. Pustaka SDKs dan API menghitung tanda tangan yang diperlukan menggunakan kredensyal ini untuk mengautentikasi permintaan Anda. Permintaan dengan kredensi kedaluwarsa akan ditolak oleh Amazon SNS.

*Untuk informasi selengkapnya tentang kredensyal keamanan sementara, lihat [Menggunakan peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) dan [Menyediakan akses ke pengguna yang diautentikasi secara eksternal (federasi identitas) dalam Panduan Pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) IAM.*

**Example Contoh permintaan HTTPS**  
Contoh berikut menunjukkan cara mengautentikasi permintaan Amazon SNS menggunakan kredensil keamanan sementara yang diperoleh dari (STS). AWS Security Token Service   

```
https://sns.us-east-2.amazonaws.com/
?Action=CreateTopic
&Name=My-Topic
&SignatureVersion=4
&SignatureMethod=AWS4-HMAC-SHA256
&Timestamp=2023-07-05T12:00:00Z
&X-Amz-Security-Token=SecurityTokenValue
&X-Amz-Date=20230705T120000Z
&X-Amz-Credential=<your-access-key-id>/20230705/us-east-2/sns/aws4_request
&X-Amz-SignedHeaders=host
&X-Amz-Signature=<signature-value>
```

**Langkah-langkah untuk mengautentikasi permintaan**

1. **Dapatkan Kredensyal Keamanan Sementara** — Gunakan AWS STS untuk mengambil peran atau mendapatkan kredensyal pengguna gabungan. Ini akan memberi Anda ID kunci akses, kunci akses rahasia, dan token keamanan.

1. **Buat Permintaan** — Sertakan parameter yang diperlukan untuk tindakan Amazon SNS Anda (misalnya CreateTopic,), dan pastikan Anda menggunakan HTTPS untuk komunikasi yang aman.

1. **Tanda tangani Permintaan** — Gunakan proses AWS Signature Version 4 untuk menandatangani permintaan Anda. Ini melibatkan pembuatan permintaan kanonik, string-to-sign, dan kemudian menghitung tanda tangan. Untuk selengkapnya tentang AWS Signature Version 4, lihat [Menggunakan Signature Version 4 yang masuk](https://docs.aws.amazon.com/ebs/latest/userguide/ebsapis-using-sigv4.html) ke *Panduan Pengguna Amazon EBS*.

1. **Kirim Permintaan** - Sertakan X-Amz-Security-Token di header permintaan Anda untuk meneruskan kredensil keamanan sementara ke Amazon SNS.

# Izin API Amazon SNS: Tindakan dan referensi sumber daya
<a name="sns-access-policy-language-api-permissions-reference"></a>

Daftar berikut memberikan informasi khusus untuk implementasi pengendalian akses oleh Amazon SNS:
+ Setiap kebijakan harus mencakup hanya satu topik (ketika menulis kebijakan, jangan sertakan pernyataan yang mencakup topik yang berbeda)
+ Setiap kebijakan harus memiliki `Id` kebijakan yang unik
+ Setiap pernyataan dalam kebijakan harus memiliki `sid` pernyataan unik

## Kuota kebijakan
<a name="sns-policy-quotas"></a>

Tabel berikut mencantumkan kuota maksimum untuk pernyataan kebijakan.


| Nama | Kuota maksimum | 
| --- | --- | 
|  Byte  |  30 kb  | 
|  Pernyataan  |  100  | 
|  Penanggung jawab  |  1 hingga 200 (0 tidak valid.)  | 
|  Sumber daya  |  1 (0 tidak valid. Nilai harus sesuai dengan ARN topik kebijakan.)  | 

## Tindakan kebijakan Amazon SNS yang valid
<a name="sns-valid-policy-actions"></a>

Amazon SNS mendukung tindakan yang ditunjukkan dalam tabel berikut.


| Tindakan | Deskripsi | 
| --- | --- | 
| SNS: AddPermission | Memberikan izin untuk menambahkan izin ke kebijakan topik. | 
| SNS: DeleteTopic | Memberikan izin untuk menghapus topik. | 
| SNS: GetDataProtectionPolicy | Memberikan izin untuk mengambil kebijakan perlindungan data topik.  | 
| SNS: GetTopicAttributes  | Memberikan izin untuk menerima semua atribut topik. | 
| SNS: ListSubscriptionsByTopic | Memberikan izin untuk mengambil semua langganan untuk topik tertentu. | 
| SNS: ListTagsForResource | Memberikan izin untuk mencantumkan semua tag yang ditambahkan ke topik tertentu. | 
| SNS:Publish  | Memberikan izin untuk mempublikasikan dan menerbitkan batch ke topik atau titik akhir. Untuk informasi selengkapnya, lihat [Menerbitkan](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) dan [PublishBatch](https://docs.aws.amazon.com/sns/latest/api/API_BatchPublish.html)di Referensi API Layanan Pemberitahuan Sederhana Amazon. | 
| SNS: PutDataProtectionPolicy | Memberikan izin untuk menetapkan kebijakan perlindungan data topik. | 
| SNS: RemovePermission  | Memberikan izin untuk menghapus izin apa pun dalam kebijakan topik. | 
| SNS: SetTopicAttributes  | Memberikan izin untuk mengatur atribut topik. | 
| sns:Subscribe  | Memberikan izin untuk berlangganan topik. | 

## Kunci khusus layanan
<a name="sns-service-specific-keys"></a>

Amazon SNS menggunakan kunci khusus layanan berikut. Anda dapat menggunakan 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](sns-using-identity-based-policies.md#sns-example-policies)) untuk membatasi akses ke titik akhir tertentu (misalnya, \$1@example.com).
+ **sns:protocol—**Nilai `protocol` dari permintaan `Subscribe` atau langganan yang telah dikonfirmasi sebelumnya. Gunakan dengan syarat string (lihat [Contoh kebijakan untuk Amazon SNS](sns-using-identity-based-policies.md#sns-example-policies)) untuk membatasi publikasi ke protokol pengiriman tertentu (misalnya, https).

**penting**  
Ketika Anda menggunakan kebijakan untuk mengontrol akses oleh sns:Endpoint, perhatikan bahwa masalah DNS dapat mempengaruhi resolusi nama titik akhir di masa depan.

# Memecahkan masalah identitas dan akses Amazon Simple Notification Service
<a name="security_iam_troubleshoot"></a>

Gunakan informasi berikut untuk membantu Anda mendiagnosis dan memperbaiki masalah umum yang mungkin Anda temui saat bekerja dengan Amazon SNS dan IAM.

## Saya tidak berwenang untuk melakukan tindakan di Amazon SNS
<a name="security_iam_troubleshoot-no-permissions"></a>

Jika Anda menerima pesan kesalahan bahwa Anda tidak memiliki otorisasi untuk melakukan tindakan, kebijakan Anda harus diperbarui agar Anda dapat melakukan tindakan tersebut.

Contoh kesalahan berikut terjadi ketika pengguna `mateojackson` mencoba menggunakan konsol untuk melihat detail tentang suatu sumber daya `my-example-widget` fiktif, tetapi tidak memiliki izin `sns:GetWidget` fiktif.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: sns:GetWidget on resource: my-example-widget
```

Dalam hal ini, kebijakan Mateo harus diperbarui untuk memungkinkannya mengakses `my-example-widget` sumber daya menggunakan `sns:GetWidget` tindakan tersebut.

Jika Anda memerlukan bantuan, hubungi AWS administrator Anda. Administrator Anda adalah orang yang memberi Anda kredensial masuk.

## Saya tidak berwenang untuk melakukan iam: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Jika Anda menerima kesalahan bahwa Anda tidak diizinkan untuk melakukan `iam:PassRole` tindakan, kebijakan Anda harus diperbarui agar Anda dapat meneruskan peran ke Amazon SNS.

Beberapa Layanan AWS memungkinkan Anda untuk meneruskan peran yang ada ke layanan tersebut alih-alih membuat peran layanan baru atau peran terkait layanan. Untuk melakukannya, Anda harus memiliki izin untuk meneruskan peran ke layanan.

Contoh kesalahan berikut terjadi ketika pengguna IAM bernama `marymajor` mencoba menggunakan konsol untuk melakukan tindakan di Amazon SNS. Namun, tindakan tersebut memerlukan layanan untuk mendapatkan izin yang diberikan oleh peran layanan. Mary tidak memiliki izin untuk meneruskan peran tersebut pada layanan.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

Dalam kasus ini, kebijakan Mary harus diperbarui agar dia mendapatkan izin untuk melakukan tindakan `iam:PassRole` tersebut.

Jika Anda memerlukan bantuan, hubungi AWS administrator Anda. Administrator Anda adalah orang yang memberi Anda kredensial masuk.

## Saya ingin mengizinkan orang di luar saya Akun AWS untuk mengakses sumber daya Amazon SNS saya
<a name="security_iam_troubleshoot-cross-account-access"></a>

Anda dapat membuat peran yang dapat digunakan pengguna di akun lain atau orang-orang di luar organisasi Anda untuk mengakses sumber daya Anda. Anda dapat menentukan siapa saja yang dipercaya untuk mengambil peran tersebut. Untuk layanan yang mendukung kebijakan berbasis sumber daya atau daftar kontrol akses (ACLs), Anda dapat menggunakan kebijakan tersebut untuk memberi orang akses ke sumber daya Anda.

Untuk mempelajari selengkapnya, periksa referensi berikut:
+ Untuk mengetahui apakah Amazon SNS mendukung fitur-fitur ini, lihat. [Bagaimana Amazon SNS bekerja dengan IAM](security_iam_service-with-iam.md)
+ Untuk mempelajari cara menyediakan akses ke sumber daya Anda di seluruh sumber daya Akun AWS yang Anda miliki, lihat [Menyediakan akses ke pengguna IAM di pengguna lain Akun AWS yang Anda miliki](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) di *Panduan Pengguna IAM*.
+ Untuk mempelajari cara menyediakan akses ke sumber daya Anda kepada pihak ketiga Akun AWS, lihat [Menyediakan akses yang Akun AWS dimiliki oleh pihak ketiga](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) dalam *Panduan Pengguna IAM*.
+ Untuk mempelajari cara memberikan akses melalui federasi identitas, lihat [Menyediakan akses ke pengguna terautentikasi eksternal (federasi identitas)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) dalam *Panduan Pengguna IAM*.
+ *Untuk mempelajari perbedaan antara menggunakan peran dan kebijakan berbasis sumber daya untuk akses lintas akun, lihat [Akses sumber daya lintas akun di IAM di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html).*

# Pencatatan dan Pemantauan di Amazon SNS
<a name="sns-logging-monitoring"></a>

Amazon SNS memungkinkan Anda melacak dan memantau aktivitas perpesanan dengan mencatat panggilan API dengan CloudTrail dan memantau topik dengan. CloudWatch Alat ini membantu Anda mendapatkan wawasan tentang pengiriman pesan, memecahkan masalah, dan memastikan kesehatan alur kerja pesan Anda. Topik ini mencakup hal-hal berikut:
+ [Pencatatan panggilan API AWS SNS menggunakan AWS CloudTrail](logging-using-cloudtrail.md). Pencatatan ini memungkinkan Anda melacak tindakan yang dilakukan pada topik Amazon SNS Anda, seperti pembuatan topik, manajemen langganan, dan penerbitan pesan. Dengan menganalisis CloudTrail log, Anda dapat mengidentifikasi siapa yang membuat permintaan API tertentu dan kapan permintaan tersebut dibuat, membantu Anda mengaudit dan memecahkan masalah penggunaan Amazon SNS Anda.
+ [Memantau topik Amazon SNS menggunakan CloudWatch](sns-monitoring-using-cloudwatch.md). CloudWatch menyediakan metrik yang memungkinkan Anda mengamati kinerja dan kesehatan topik Amazon SNS Anda secara real time. Siapkan alarm berdasarkan metrik ini, sehingga Anda dapat segera merespons anomali apa pun, seperti kegagalan pengiriman atau latensi pesan tinggi. Kemampuan pemantauan ini memastikan bahwa Anda dapat mempertahankan keandalan sistem pesan berbasis SNS Anda dengan secara proaktif menangani masalah potensial.

# Pencatatan panggilan API AWS SNS menggunakan AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS SNS terintegrasi dengan [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html), layanan yang menyediakan catatan tindakan yang diambil oleh pengguna, peran, atau. Layanan AWS CloudTrail menangkap semua panggilan API untuk SNS sebagai peristiwa. Panggilan yang diambil termasuk panggilan dari konsol SNS dan panggilan kode ke operasi SNS API. Dengan menggunakan informasi yang dikumpulkan oleh CloudTrail, Anda dapat menentukan permintaan yang dibuat untuk SNS, alamat IP dari mana permintaan dibuat, kapan dibuat, dan detail tambahan.

Setiap entri peristiwa atau log berisi informasi tentang entitas yang membuat permintaan tersebut. Informasi identitas membantu Anda menentukan berikut hal ini:
+ Baik permintaan tersebut dibuat dengan kredensial pengguna root atau pengguna.
+ Apakah permintaan dibuat atas nama pengguna IAM Identity Center.
+ Apakah permintaan tersebut dibuat dengan kredensial keamanan sementara untuk satu peran atau pengguna gabungan.
+ Apakah permintaan tersebut dibuat oleh Layanan AWS lain.

CloudTrail aktif di Anda Akun AWS ketika Anda membuat akun dan Anda secara otomatis memiliki akses ke **riwayat CloudTrail Acara**. **Riwayat CloudTrail Acara menyediakan catatan** yang dapat dilihat, dapat dicari, dapat diunduh, dan tidak dapat diubah dari 90 hari terakhir dari peristiwa manajemen yang direkam dalam file. Wilayah AWS Untuk informasi selengkapnya, lihat [Bekerja dengan riwayat CloudTrail Acara](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) di *Panduan AWS CloudTrail Pengguna*. Tidak ada CloudTrail biaya untuk melihat **riwayat Acara**.

Untuk catatan acara yang sedang berlangsung dalam 90 hari Akun AWS terakhir Anda, buat jejak atau penyimpanan data acara [CloudTrailDanau](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html).

**CloudTrail jalan setapak**  
*Jejak* memungkinkan CloudTrail untuk mengirimkan file log ke bucket Amazon S3. Semua jalur yang dibuat menggunakan Konsol Manajemen AWS Multi-region. Anda dapat membuat jalur Single-region atau Multi-region dengan menggunakan. AWS CLI Membuat jejak Multi-wilayah disarankan karena Anda menangkap aktivitas Wilayah AWS di semua akun Anda. Jika Anda membuat jejak wilayah Tunggal, Anda hanya dapat melihat peristiwa yang dicatat di jejak. Wilayah AWS Untuk informasi selengkapnya tentang jejak, lihat [Membuat jejak untuk Anda Akun AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) dan [Membuat jejak untuk organisasi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html) di *Panduan AWS CloudTrail Pengguna*.  
Anda dapat mengirimkan satu salinan acara manajemen yang sedang berlangsung ke bucket Amazon S3 Anda tanpa biaya CloudTrail dengan membuat jejak, namun, ada biaya penyimpanan Amazon S3. Untuk informasi selengkapnya tentang CloudTrail harga, lihat [AWS CloudTrail Harga](https://aws.amazon.com/cloudtrail/pricing/). Untuk informasi tentang harga Amazon S3, lihat [Harga Amazon S3](https://aws.amazon.com/s3/pricing/).

**CloudTrail Menyimpan data acara danau**  
*CloudTrail Lake* memungkinkan Anda menjalankan kueri berbasis SQL pada acara Anda. CloudTrail [Lake mengonversi peristiwa yang ada dalam format JSON berbasis baris ke format Apache ORC.](https://orc.apache.org/) ORC adalah format penyimpanan kolumnar yang dioptimalkan untuk pengambilan data dengan cepat. Peristiwa digabungkan ke dalam *penyimpanan data peristiwa*, yang merupakan kumpulan peristiwa yang tidak dapat diubah berdasarkan kriteria yang Anda pilih dengan menerapkan pemilih acara [tingkat lanjut](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-concepts.html#adv-event-selectors). Penyeleksi yang Anda terapkan ke penyimpanan data acara mengontrol peristiwa mana yang bertahan dan tersedia untuk Anda kueri. Untuk informasi lebih lanjut tentang CloudTrail Danau, lihat [Bekerja dengan AWS CloudTrail Danau](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) di *Panduan AWS CloudTrail Pengguna*.  
CloudTrail Penyimpanan data acara danau dan kueri menimbulkan biaya. Saat Anda membuat penyimpanan data acara, Anda memilih [opsi harga](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-manage-costs.html#cloudtrail-lake-manage-costs-pricing-option) yang ingin Anda gunakan untuk penyimpanan data acara. Opsi penetapan harga menentukan biaya untuk menelan dan menyimpan peristiwa, dan periode retensi default dan maksimum untuk penyimpanan data acara. Untuk informasi selengkapnya tentang CloudTrail harga, lihat [AWS CloudTrail Harga](https://aws.amazon.com/cloudtrail/pricing/).

## Peristiwa data SNS di CloudTrail
<a name="cloudtrail-data-events"></a>

[Peristiwa data](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events) memberikan informasi tentang operasi sumber daya yang dilakukan pada atau di sumber daya (misalnya, membaca atau menulis ke objek Amazon S3). Ini juga dikenal sebagai operasi bidang data. Peristiwa data sering kali merupakan aktivitas bervolume tinggi. Secara default, CloudTrail tidak mencatat peristiwa data. **Riwayat CloudTrail peristiwa** tidak merekam peristiwa data.

Biaya tambahan berlaku untuk peristiwa data. Untuk informasi selengkapnya tentang CloudTrail harga, lihat [AWS CloudTrail Harga](https://aws.amazon.com/cloudtrail/pricing/).

Anda dapat mencatat peristiwa data untuk jenis sumber daya SNS menggunakan CloudTrail konsol AWS CLI, atau operasi CloudTrail API. Untuk informasi selengkapnya tentang cara mencatat peristiwa data, lihat [Mencatat peristiwa data dengan Konsol Manajemen AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console) dan Mencatat [peristiwa data dengan AWS Command Line Interface](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI) di *Panduan AWS CloudTrail Pengguna*.

Tabel berikut mencantumkan jenis sumber daya SNS yang dapat Anda log peristiwa data. Kolom **tipe peristiwa data (konsol)** menunjukkan nilai yang akan dipilih dari daftar **tipe peristiwa Data** di CloudTrail konsol. Kolom nilai **resources.type menunjukkan `resources.type` nilai**, yang akan Anda tentukan saat mengonfigurasi penyeleksi acara lanjutan menggunakan or. AWS CLI CloudTrail APIs CloudTrailKolom **Data yang APIs dicatat ke** menampilkan panggilan API yang dicatat CloudTrail untuk jenis sumber daya. 


| Jenis peristiwa data (konsol) | nilai resources.type | Data APIs masuk CloudTrail | 
| --- | --- | --- | 
| Topik SNS |  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html)  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/logging-using-cloudtrail.html) | 
| Titik akhir platform SNS |  AWS::SNS::PlatformEndpoint  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/logging-using-cloudtrail.html)  | 

**catatan**  
Jenis sumber daya SNS `AWS::SNS::PhoneNumber` tidak dicatat oleh CloudTrail.

Anda dapat mengonfigurasi pemilih acara lanjutan untuk memfilter pada `eventName``readOnly`,, dan `resources.ARN` bidang untuk mencatat hanya peristiwa yang penting bagi Anda. Untuk informasi selengkapnya tentang bidang ini, lihat [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)di *Referensi AWS CloudTrail API*.

Untuk informasi tentang peristiwa data pencatatan, lihat Mencatat peristiwa data dengan Konsol Manajemen AWS dan Logging peristiwa data dengan AWS CLI di Panduan CloudTrail Pengguna.

## Acara manajemen SNS di CloudTrail
<a name="cloudtrail-management-events"></a>

[Acara manajemen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events) memberikan informasi tentang operasi manajemen yang dilakukan pada sumber daya di Anda Akun AWS. Ini juga dikenal sebagai operasi bidang kontrol. Secara default, CloudTrail mencatat peristiwa manajemen.

AWS SNS mencatat operasi bidang kontrol SNS berikut CloudTrail sebagai peristiwa *manajemen*.
+ `[AddPermission](https://docs.aws.amazon.com/sns/latest/api/API_AddPermission.html)`
+ `[CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html)`
+ `[ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)`
+ `[CreatePlatformApplication](https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html)`
+ `[CreatePlatformEndpoint](https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html)`
+ `[CreateSMSSandboxPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_CreateSMSSandboxPhoneNumber.html)`
+ `[CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)`
+ `[DeleteEndpoint](https://docs.aws.amazon.com/sns/latest/api/API_DeleteEndpoint.html)`
+ `[DeletePlatformApplication](https://docs.aws.amazon.com/sns/latest/api/API_DeletePlatformApplication.html)`
+ `[DeleteSMSSandboxPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_DeleteSMSSandboxPhoneNumber.html)`
+ `[DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html)`
+ `[GetDataProtectionPolicy](https://docs.aws.amazon.com/sns/latest/api/API_GetDataProtectionPolicy.html)`
+ `[GetEndpointAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetEndpointAttributes.html)`
+ `[GetPlatformApplicationAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetPlatformApplicationAttributes.html)`
+ `[GetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html)`
+ `[GetSMSSandboxAccountStatus](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSSandboxAccountStatus.html)`
+ `[GetSubscriptionAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetSubscriptionAttributes.html)`
+ `[GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html)`
+ `[ListEndpointsByPlatformApplication](https://docs.aws.amazon.com/sns/latest/api/API_ListEndpointsByPlatformApplication.html)`
+ `[ListOriginationNumbers](https://docs.aws.amazon.com/sns/latest/api/API_ListOriginationNumbers.html)`
+ `[ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html)`
+ `[ListPlatformApplications](https://docs.aws.amazon.com/sns/latest/api/API_ListPlatformApplications.html)`
+ `[ListSMSSandboxPhoneNumbers](https://docs.aws.amazon.com/sns/latest/api/API_ListSMSSandboxPhoneNumbers.html)`
+ `[ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)`
+ `[ListSubscriptionsByTopic](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptionsByTopic.html)`
+ `[ListTagsForResource](https://docs.aws.amazon.com/sns/latest/api/API_ListTagsForResource.html)`
+ `[ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html)`
+ `[OptInPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_OptInPhoneNumber.html)`
+ `[PutDataProtectionPolicy](https://docs.aws.amazon.com/sns/latest/api/API_PutDataProtectionPolicy.html)`
+ `[RemovePermission](https://docs.aws.amazon.com/sns/latest/api/API_RemovePermission.html)`
+ `[SetEndpointAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetEndpointAttributes.html)`
+ `[SetPlatformApplicationAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetPlatformApplicationAttributes.html)`
+ `[SetSMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html)`
+ `[SetSubscriptionAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)`
+ `[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)`
+ `[Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)`
+ `[TagResource](https://docs.aws.amazon.com/sns/latest/api/API_TagResource.html)`
+ `[Unsubscribe](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html)`
+ `[UntagResource](https://docs.aws.amazon.com/sns/latest/api/API_UntagResource.html)`
+ `[VerifySMSSandboxPhoneNumber](https://docs.aws.amazon.com/sns/latest/api/API_VerifySMSSandboxPhoneNumber.html)`

**catatan**  
Ketika Anda tidak masuk ke Amazon Web Services (mode tidak diautentikasi) dan [https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html)tindakan [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)atau tindakan dipanggil, maka mereka tidak akan masuk ke log. CloudTrail Misalnya, ketika Anda memilih tautan yang disediakan dalam notifikasi email untuk mengonfirmasi langganan tertunda ke topik, tindakan `ConfirmSubscription` dipanggil dalam mode tidak terautentikasi. Dalam contoh ini, `ConfirmSubscription` tindakan tidak akan dicatat CloudTrail.

## Contoh acara SNS
<a name="cloudtrail-event-examples"></a>

Peristiwa mewakili permintaan tunggal dari sumber manapun dan mencakup informasi tentang operasi API yang diminta, tanggal dan waktu operasi, parameter permintaan, dan sebagainya. CloudTrail file log bukanlah jejak tumpukan yang diurutkan dari panggilan API publik, sehingga peristiwa tidak muncul dalam urutan tertentu.

Contoh berikut menunjukkan CloudTrail peristiwa yang menunjukkan **`ListTopics`**,`CreateTopic`, dan `DeleteTopic` tindakan.

```
{
  "Records": [
    {
      "eventVersion": "1.02",
      "userIdentity": {
        "type": "IAMUser",
        "userName": "Bob",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Bob",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE"
      },
      "eventTime": "2014-09-30T00:00:00Z",
      "eventSource": "sns.amazonaws.com",
      "eventName": "ListTopics",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "127.0.0.1",
      "userAgent": "aws-sdk-java/unknown-version",
      "requestParameters": {
        "nextToken": "ABCDEF1234567890EXAMPLE=="
      },
      "responseElements": null,
      "requestID": "example1-b9bb-50fa-abdb-80f274981d60",
      "eventID": "example0-09a3-47d6-a810-c5f9fd2534fe",
      "eventType": "AwsApiCall",
      "recipientAccountId": "123456789012"
    },
    {
      "eventVersion": "1.02",
      "userIdentity": {
        "type": "IAMUser",
        "userName": "Bob",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Bob",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE"
      },
      "eventTime": "2014-09-30T00:00:00Z",
      "eventSource": "sns.amazonaws.com",
      "eventName": "CreateTopic",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "127.0.0.1",
      "userAgent": "aws-sdk-java/unknown-version",
      "requestParameters": {
        "name": "hello"
      },
      "responseElements": {
        "topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
      },
      "requestID": "example7-5cd3-5323-8a00-f1889011fee9",
      "eventID": "examplec-4f2f-4625-8378-130ac89660b1",
      "eventType": "AwsApiCall",
      "recipientAccountId": "123456789012"
    },
    {
      "eventVersion": "1.02",
      "userIdentity": {
        "type": "IAMUser",
        "userName": "Bob",
        "principalId": "EX_PRINCIPAL_ID",
        "arn": "arn:aws:iam::123456789012:user/Bob",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE"
      },
      "eventTime": "2014-09-30T00:00:00Z",
      "eventSource": "sns.amazonaws.com",
      "eventName": "DeleteTopic",
      "awsRegion": "us-west-2",
      "sourceIPAddress": "127.0.0.1",
      "userAgent": "aws-sdk-java/unknown-version",
      "requestParameters": {
        "topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
      },
      "responseElements": null,
      "requestID": "example5-4faa-51d5-aab2-803a8294388d",
      "eventID": "example8-6443-4b4d-abfd-1b867280d964",
      "eventType": "AwsApiCall",
      "recipientAccountId": "123456789012"
    }
  ]
}
```

Contoh berikut menunjukkan CloudTrail peristiwa yang menunjukkan `Publish` tindakan.

```
{
  "eventVersion": "1.09",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "EX_PRINCIPAL_ID",
    "arn": "arn:aws:iam::123456789012:user/Bob",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/Admin",
        "accountId": "123456789012",
        "userName": "ExampleUser"
      },
      "attributes": {
        "creationDate": "2023-08-21T16:44:05Z",
        "mfaAuthenticated": "false"
      }
    }
  },
  "eventTime": "2023-08-21T16:48:37Z",
  "eventSource": "sns.amazonaws.com",
  "eventName": "Publish",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "192.0.2.0",
  "userAgent": "aws-cli/1.29.16 md/Botocore#1.31.16 ua/2.0 os/linux#5.4.250-173.369.amzn2int.x86_64 md/arch#x86_64 lang/python#3.8.17 md/pyimpl#CPython cfg/retry-mode#legacy botocore/1.31.16",
  "requestParameters": {
    "topicArn": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic",
    "message": "HIDDEN_DUE_TO_SECURITY_REASONS",
    "subject": "HIDDEN_DUE_TO_SECURITY_REASONS",
    "messageStructure": "json",
    "messageAttributes": "HIDDEN_DUE_TO_SECURITY_REASONS"
  },
  "responseElements": {
    "messageId": "0787cd1e-d92b-521c-a8b4-90434e8ef840"
  },
  "requestID": "0a8ab208-11bf-5e01-bd2d-ef55861b545d",
  "eventID": "bb3496d4-5252-4660-9c28-3c6aebdb21c0",
  "readOnly": false,
  "resources": [
    {
      "accountId": "123456789012",
      "type": "AWS::SNS::Topic",
      "ARN": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": false,
  "recipientAccountId": "123456789012",
  "eventCategory": "Data",
  "tlsDetails": {
    "tlsVersion": "TLSv1.2",
    "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
    "clientProvidedHostHeader": "sns.us-east-1.amazonaws.com"
  }
}
```

Contoh berikut menunjukkan CloudTrail peristiwa yang menunjukkan `PublishBatch` tindakan.

```
{
  "eventVersion": "1.09",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "EX_PRINCIPAL_ID",
    "arn": "arn:aws:iam::123456789012:user/Bob",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/Admin",
        "accountId": "123456789012",
        "userName": "ExampleUser"
      },
      "attributes": {
        "creationDate": "2023-08-21T19:20:49Z",
        "mfaAuthenticated": "false"
      }
    }
  },
  "eventTime": "2023-08-21T19:22:01Z",
  "eventSource": "sns.amazonaws.com",
  "eventName": "PublishBatch",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "192.0.2.0",
  "userAgent": "aws-cli/1.29.16 md/Botocore#1.31.16 ua/2.0 os/linux#5.4.250-173.369.amzn2int.x86_64 md/arch#x86_64 lang/python#3.8.17 md/pyimpl#CPython cfg/retry-mode#legacy botocore/1.31.16",
  "requestParameters": {
    "topicArn": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic",
    "publishBatchRequestEntries": [
      {
        "id": "1",
        "message": "HIDDEN_DUE_TO_SECURITY_REASONS"
      },
      {
        "id": "2",
        "message": "HIDDEN_DUE_TO_SECURITY_REASONS"
      }
    ]
  },
  "responseElements": {
    "successful": [
      {
        "id": "1",
        "messageId": "30d68101-a64a-5573-9e10-dc5c1dd3af2f"
      },
      {
        "id": "2",
        "messageId": "c0aa0c5c-561d-5455-b6c4-5101ed84de09"
      }
    ],
    "failed": []
  },
  "requestID": "e2cdf7f3-1b35-58ad-ac9e-aaaea0ace2f1",
  "eventID": "10da9a14-0154-4ab6-b3a5-1825b229a7ed",
  "readOnly": false,
  "resources": [
    {
      "accountId": "123456789012",
      "type": "AWS::SNS::Topic",
      "ARN": "arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": false,
  "recipientAccountId": "123456789012",
  "eventCategory": "Data",
  "tlsDetails": {
    "tlsVersion": "TLSv1.2",
    "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
    "clientProvidedHostHeader": "sns.us-east-1.amazonaws.com"
  }
}
```

Untuk informasi tentang konten CloudTrail rekaman, lihat [konten CloudTrail rekaman](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html) di *Panduan AWS CloudTrail Pengguna*.

# Memantau topik Amazon SNS menggunakan CloudWatch
<a name="sns-monitoring-using-cloudwatch"></a>

Amazon SNS dan Amazon CloudWatch terintegrasi sehingga Anda dapat mengumpulkan, melihat, dan menganalisis metrik untuk setiap notifikasi Amazon SNS yang aktif. Setelah Anda mengonfigurasi CloudWatch untuk Amazon SNS, Anda dapat memperoleh wawasan yang lebih baik tentang kinerja topik Amazon SNS, pemberitahuan push, dan pengiriman SMS Anda. Misalnya, Anda dapat mengatur alarm untuk mengirimkan notifikasi email jika ambang batas tertentu dipenuhi untuk metrik Amazon SNS, seperti `NumberOfNotificationsFailed`. Untuk daftar semua metrik yang CloudWatch dikirimkan Amazon SNS, lihat. [Metrik Amazon SNS](#sns-metrics) Untuk informasi selengkapnya tentang notifikasi push Amazon SNS, lihat [Mengirim notifikasi push seluler dengan Amazon SNS](sns-mobile-application-as-subscriber.md). 

**catatan**  
Metrik yang Anda konfigurasikan CloudWatch untuk topik Amazon SNS Anda dikumpulkan dan didorong secara otomatis *pada* interval 1 CloudWatch menit. Metrik ini dikumpulkan pada semua topik yang memenuhi CloudWatch pedoman untuk aktif. Topik dianggap aktif hingga CloudWatch enam jam dari aktivitas terakhir (yaitu, panggilan API apa pun) pada topik tersebut.   
Tidak ada biaya untuk metrik Amazon SNS yang dilaporkan CloudWatch; mereka disediakan sebagai bagian dari layanan Amazon SNS.

## Lihat CloudWatch metrik untuk Amazon SNS
<a name="view-cloudwatch-metrics"></a>

Anda dapat memantau metrik untuk Amazon SNS menggunakan konsol CloudWatch, CloudWatch antarmuka baris perintah (CLI) sendiri, atau menggunakan API secara terprogram. CloudWatch Prosedur berikut menunjukkan cara mengakses metrik menggunakan Konsol Manajemen AWS.

**Untuk melihat metrik menggunakan konsol CloudWatch**

1. Masuk ke [konsol CloudWatch](https://console.aws.amazon.com/cloudwatch) tersebut.

1. Di panel navigasi, pilih **Metrics (Metrik)**.

1. Pada tab **All metrics (Semua metrik)**, pilih **SNS**, lalu pilih salah satu dimensi berikut:
   + **Negara, Jenis SMS**
   + **PhoneNumber**
   + **Metrik Topik**
   + **Metrik tanpa dimensi**

1. Untuk melihat detail lebih lanjut, pilih item tertentu. Misalnya, jika Anda memilih **Metrik Topik** dan kemudian memilih **NumberOfMessagesPublished**, jumlah rata-rata pesan Amazon SNS yang diterbitkan untuk periode 1 menit selama rentang waktu 6 jam akan ditampilkan.

1. Untuk melihat metrik penggunaan Amazon SNS, pada tab **Semua metrik**, pilih **Penggunaan**, dan pilih **metrik penggunaan Amazon SNS target** (misalnya,). `NumberOfMessagesPublishedPerAccount`

## Setel CloudWatch alarm untuk metrik Amazon SNS
<a name="SNS_AlarmMetrics"></a>

CloudWatch juga memungkinkan Anda untuk mengatur alarm ketika ambang batas terpenuhi untuk metrik. Misalnya, Anda dapat mengatur alarm untuk metrik **NumberOfNotificationsFailed**, sehingga ketika nomor ambang batas yang Anda tentukan terpenuhi dalam periode pengambilan sampel, maka pemberitahuan email akan dikirim untuk memberi tahu Anda tentang peristiwa tersebut.

**Untuk mengatur alarm menggunakan konsol CloudWatch**

1. Masuk ke Konsol Manajemen AWS dan buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1.  Pilih **Alarms (Alarm)** lalu pilih tombol **Create Alarm (Buat Alarm)**. Proses ini meluncurkan wizard **Create Alarm (Buat Alarm)**. 

1.  Gulir menggunakan metrik Amazon SNS untuk menemukan metrik yang ingin Anda aktifkan alarmnya. Pilih metrik untuk membuat alarm aktif dan pilih **Continue (Lanjutkan)**. 

1. Isi nilai **Name (Nama)**, **Description (Deskripsi)**, **Threshold (Ambang)**, dan **Time (Waktu)** untuk metrik, dan kemudian pilih **Continue (Lanjutkan)**. 

1. Pilih **Alarm (Alarm)** sebagai status alarm. Jika Anda CloudWatch ingin mengirimi Anda email saat status alarm tercapai, pilih salah satu topik Amazon SNS yang ada atau pilih **Buat Topik Email Baru**. Jika memilih **Create New Email Topic (Buat Topik Email Baru)**, Anda dapat mengatur nama dan alamat email untuk topik baru. Daftar ini akan disimpan dan muncul di kotak drop-down untuk alarm di masa mendatang. Pilih **Continue (Lanjutkan)**. 
**catatan**  
Jika Anda menggunakan **Create New Email Topic (Buat Topik Email Baru)** untuk membuat topik Amazon SNS baru, alamat email harus diverifikasi sebelum menerima notifikasi. Email hanya dikirim saat alarm memasuki status alarm. Jika perubahan status alarm ini terjadi sebelum alamat email diverifikasi, alamat tidak akan menerima notifikasi. 

1. Pada proses ini, wizard **Create Alarm (Buat Alarm)** memberi Anda kesempatan untuk meninjau alarm yang akan Anda buat. Jika Anda perlu melakukan perubahan, Anda dapat menggunakan tautan **Edit** di sebelah kanan. Setelah Anda puas, pilih **Create Alarm (Buat Alarm)**. 

Untuk informasi selengkapnya tentang penggunaan CloudWatch dan alarm, lihat [CloudWatchDokumentasi](https://aws.amazon.com/documentation/cloudwatch).

## Metrik Amazon SNS
<a name="sns-metrics"></a>

Amazon SNS mengirimkan metrik berikut ke. CloudWatch


| Namespace | Metrik | Deskripsi | 
| --- | --- | --- | 
| AWS/SNS |  NumberOfMessagesPublished  |  Jumlah pesan yang dipublikasikan ke topik Amazon SNS Anda. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah  | 
| AWS/SNS |  NumberOfNotificationsDelivered  |  Jumlah pesan berhasil dikirim dari topik Amazon SNS Anda ke endpoint berlangganan. Agar upaya pengiriman berhasil, langganan dari endpoint harus menerima pesan tersebut. Langganan menerima pesan jika.) Tidak memiliki kebijakan filter atau b.) kebijakan filter mencakup atribut yang cocok dengan yang ditetapkan ke pesan. Jika langganan menolak pesan, upaya pengiriman tidak dihitung untuk metrik ini. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah  | 
| AWS/SNS |  NumberOfNotificationsFailed  |  Jumlah pesan yang gagal dikirim oleh Amazon SNS.  Untuk Amazon SQS, email, SMS, atau endpoint push seluler, metrik bertambah 1 saat Amazon SNS berhenti mencoba pengiriman pesan. Untuk endpoint HTTP atau HTTPS, metrik mencakup setiap upaya pengiriman yang gagal, termasuk percobaan ulang yang mengikuti upaya awal. Untuk semua endpoint lainnya, jumlah bertambah 1 ketika pesan gagal terkrim (terlepas dari jumlah upaya). Metrik ini tidak menyertakan pesan yang ditolak oleh kebijakan filter langganan. Anda dapat mengontrol jumlah pengulangan untuk endpoint HTTP. Untuk informasi selengkapnya, lihat [Pengiriman ulang pesan Amazon SNS](sns-message-delivery-retries.md). **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata  | 
| AWS/SNS | NumberOfNotificationsFilteredOut |  Jumlah pesan yang ditolak oleh kebijakan filter langganan. Kebijakan filter menolak pesan bila atribut pesan tidak cocok dengan atribut kebijakan. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-MessageAttributes | Jumlah pesan yang ditolak oleh kebijakan filter langganan untuk pemfilteran berbasis atribut. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-MessageBody |  Jumlah pesan yang ditolak oleh kebijakan filter langganan untuk pemfilteran berbasis muatan.  **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-InvalidAttributes |  Jumlah pesan yang ditolak oleh kebijakan filter langganan karena atribut pesan tidak valid — misalnya, karena atribut JSON salah diformat. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-NoMessageAttributes |  Jumlah pesan yang ditolak oleh kebijakan filter langganan karena pesan tidak memiliki atribut. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata  | 
| AWS/SNS | NumberOfNotificationsFilteredOut-InvalidMessageBody |  Jumlah pesan yang ditolak oleh kebijakan filter langganan karena badan pesan tidak valid untuk pemfilteran — misalnya, badan pesan JSON tidak valid. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata  | 
| AWS/SNS |  NumberOfNotificationsRedrivenToDlq  |  Jumlah pesan yang telah dipindahkan ke antrean surat mati. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata | 
| AWS/SNS |  NumberOfNotificationsFailedToRedriveToDlq  |  Jumlah pesan yang tidak dapat dipindahkan ke antrean surat mati. **Unit:** Hitung **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Jumlah, Rata-rata | 
| AWS/SNS |  PublishSize  |  Ukuran pesan yang diterbitkan. **Unit:** Bytes **Dimensi yang valid:** Aplikasi PhoneNumber, Platform, dan TopicName **Statistik yang valid:** Minimum, Maksimum, Rata-rata dan Hitungan  | 
| AWS/SNS | SMSMonthToDateSpentUSD |  Biaya yang telah Anda dapatkan sejak awal bulan kalender saat ini untuk mengirim pesan SMS. Anda dapat mengatur alarm untuk metrik ini untuk mengetahui kapan month-to-date tagihan Anda mendekati kuota belanja SMS bulanan untuk akun Anda. Ketika Amazon SNS menentukan bahwa mengirim pesan SMS akan dikenakan biaya yang melebihi kuota ini, Amazon SNS akan berhenti menerbitkan pesan SMS dalam beberapa menit. Selengkapnya tentang pengaturan kuota belanja SMS bulanan Anda, atau untuk informasi tentang permintaan kenaikan kuota belanja dengan AWS, lihat [Mengatur preferensi pesan SMS di Amazon SNS](sms_preferences.md). **Satuan:** USD **Dimensi yang valid:** Tidak ada **Statistik yang valid:** Jumlah  | 
| AWS/SNS |  SMSSuccessRate  |  Tingkat keberhasilan pengiriman pesan SMS. **Unit:** Hitung **Dimensi yang valid:** PhoneNumber **Statistik yang valid:** Jumlah, Rata-rata, Sampel Data  | 

## Dimensi untuk metrik Amazon SNS
<a name="sns-metric-dimensions"></a>

Amazon Simple Notification Service mengirimkan dimensi berikut ke CloudWatch.


|  Dimensi  |  Deskripsi  | 
| --- | --- | 
|  Application  |  Filter pada objek aplikasi, yang mewakili aplikasi dan perangkat yang terdaftar di salah satu layanan pemberitahuan push yang didukung, seperti APNs dan FCM.  | 
|  Application,Platform  |  Filter pada objek aplikasi dan platform, di mana objek platform adalah untuk layanan pemberitahuan push yang didukung, seperti APNs dan FCM.  | 
| Country |  Filter di negara tujuan atau wilayah pesan SMS. Negara atau wilayah diwakili oleh kode ISO 3166-1 alpha-2.  | 
|  PhoneNumber  |  Filter pada nomor telepon saat Anda mempublikasikan SMS langsung ke nomor telepon (tanpa topik).  | 
|  Platform  |  Filter pada objek platform untuk layanan pemberitahuan push, seperti APNs dan FCM.  | 
|  TopicName  |  Filter pada nama topik Amazon SNS.  | 
| SMSType |  Filter pada jenis pesan SMS. Bisa *promotional (promosi)* atau *transactional (transaksional)*.  | 

## Metrik penggunaan Amazon SNS
<a name="sns-usage-metrics"></a>

Amazon Simple Notification Service mengirimkan metrik penggunaan berikut ke CloudWatch.


|  Namespace  |  Layanan  | Metrik | Sumber daya | Tipe | Deskripsi | 
| --- | --- | --- | --- | --- | --- | 
| AWS/Penggunaan | SNS | ResourceCount | NumberOfMessagesPublishedPerAccount | Sumber daya |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Penggunaan | SNS | ResourceCount | ApproximateNumberOfTopics | Sumber daya |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Penggunaan | SNS | ResourceCount | ApproximateNumberOfFilterPolicies | Sumber daya |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Penggunaan | SNS | ResourceCount | ApproximateNumberOfPendingSubscriptions | Sumber daya |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 
| AWS/Penggunaan | SNS | CallCount |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | API |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sns/latest/dg/sns-monitoring-using-cloudwatch.html)  | 

# Validasi Kepatuhan untuk Amazon SNS
<a name="compliance-validation"></a>

Untuk mempelajari apakah an Layanan AWS berada dalam lingkup program kepatuhan tertentu, lihat [Layanan AWS di Lingkup oleh Program Kepatuhan Layanan AWS](https://aws.amazon.com/compliance/services-in-scope/) dan pilih program kepatuhan yang Anda minati. Untuk informasi umum, lihat [Program AWS Kepatuhan Program AWS](https://aws.amazon.com/compliance/programs/) .

Anda dapat mengunduh laporan audit pihak ketiga menggunakan AWS Artifact. Untuk informasi selengkapnya, lihat [Mengunduh Laporan di AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

Tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS ditentukan oleh sensitivitas data Anda, tujuan kepatuhan perusahaan Anda, dan hukum dan peraturan yang berlaku. Untuk informasi selengkapnya tentang tanggung jawab kepatuhan Anda saat menggunakan Layanan AWS, lihat [Dokumentasi AWS Keamanan](https://docs.aws.amazon.com/security/).

# Ketahanan di Amazon SNS
<a name="disaster-recovery-resiliency"></a>

Ketahanan di Amazon SNS dipastikan dengan memanfaatkan infrastruktur global, yang berputar AWS di sekitar dan Availability Zone. Wilayah AWS Wilayah AWS menawarkan Availability Zone yang terpisah secara fisik dan terisolasi yang dihubungkan oleh latensi rendah, throughput tinggi, dan jaringan yang sangat redundan. Arsitektur ini memungkinkan failover tanpa batas antara Availability Zones tanpa gangguan, membuat aplikasi dan database secara inheren lebih toleran terhadap kesalahan dan skalabel dibandingkan dengan infrastruktur pusat data tradisional. Dengan menggunakan Availability Zones, pelanggan Amazon SNS mendapat manfaat dari peningkatan ketersediaan dan keandalan, menjamin pengiriman pesan meskipun ada potensi gangguan. Untuk informasi selengkapnya tentang Wilayah AWS dan Availability Zone, lihat [Infrastruktur AWS Global](https://aws.amazon.com/about-aws/global-infrastructure/).

Selain itu, langganan ke topik Amazon SNS dapat dikonfigurasi dengan percobaan ulang pengiriman dan antrian surat mati, memungkinkan penanganan otomatis kegagalan sementara dan memastikan pesan mencapai tujuan yang diinginkan dengan andal. 

Amazon SNS juga mendukung pemfilteran pesan dan atribut pesan, yang memungkinkan Anda menyesuaikan strategi ketahanan dengan kasus penggunaan spesifiknya, meningkatkan ketahanan keseluruhan aplikasi Anda.

# Keamanan infrastruktur di Amazon SNS
<a name="infrastructure-security"></a>

Sebagai layanan terkelola, Amazon SNS dilindungi oleh prosedur keamanan jaringan AWS global yang terdapat dalam dokumentasi [Praktik Terbaik untuk Keamanan, Identitas, & Kepatuhan](https://aws.amazon.com/architecture/security-identity-compliance).

Gunakan tindakan AWS API untuk mengakses Amazon SNS melalui jaringan. Klien harus mendukung Keamanan Lapisan Pengangkutan (TLS) 1.2 atau versi yang lebih baru. Selain itu, klien harus mendukung suite sandi dengan Perfect Forward Secrecy (PFS) seperti Ephemeral Diffie-Hellman (DHE) atau Elliptic Curve Diffie-Hellman Ephemeral (ECDHE).

Anda harus menandatangani permintaan menggunakan access key ID dan secret access key yang terhubung dengan IAM utama. Atau, Anda dapat menggunakan[AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) untuk menghasilkan kredensial keamanan sementara untuk permintaan penandatanganan.

Anda dapat menghubungi tindakan API ini dari lokasi jaringan mana pun, tetapi Amazon SNS mendukung kebijakan akses berbasis sumber daya, yang dapat mencakup pembatasan berdasarkan alamat IP sumber. Anda juga dapat menggunakan kebijakan Amazon SNS untuk mengontrol akses dari titik akhir VPC Amazon tertentu atau spesifik. VPCs Ini secara efektif mengisolasi akses jaringan ke topik Amazon SNS tertentu dari hanya VPC tertentu dalam jaringan. AWS Lihat informasi yang lebih lengkap di [Membatasi publikasi ke topik Amazon SNS hanya dari VPC endpoint tertentu](sns-access-policy-use-cases.md#sns-restrict-publication-only-from-specified-vpc-endpoint).

# Praktik terbaik keamanan Amazon SNS
<a name="sns-security-best-practices"></a>

AWS menyediakan banyak fitur keamanan untuk Amazon SNS. Tinjau fitur keamanan ini dalam konteks kebijakan keamanan Anda.

**catatan**  
Panduan untuk fitur keamanan ini berlaku untuk kasus penggunaan dan implementasi umum. Sebaiknya Anda meninjau praktik terbaik ini dalam konteks kasus penggunaan, arsitektur, dan model ancaman tertentu Anda.

## Praktik terbaik pencegahan
<a name="preventative-best-practices"></a>

Berikut adalah praktik terbaik keamanan pencegahan untuk Amazon SNS.

**Topics**
+ [Memastikan topik tidak dapat diakses secara publik](#ensure-topics-not-publicly-accessible)
+ [Menerapkan akses hak istimewa yang paling rendah](#implement-least-privilege-access)
+ [Gunakan peran IAM untuk aplikasi dan AWS layanan yang memerlukan akses Amazon SNS](#use-iam-roles-for-applications-aws-services-which-require-access)
+ [Menerapkan enkripsi sisi server](#implement-server-side-encryption)
+ [Menegakkan enkripsi data saat transit](#enforce-encryption-data-in-transit)
+ [Pertimbangkan titik akhir VPC untuk mengakses Amazon SNS](#consider-using-vpc-endpoints-access-sns)
+ [Pastikan langganan tidak dikonfigurasi untuk dikirim ke titik akhir http mentah](#http-subscription-configuration)
+ [Menerapkan otentikasi saat berhenti berlangganan](#enforce-authentication-on-unsubscribe)

### Memastikan topik tidak dapat diakses secara publik
<a name="ensure-topics-not-publicly-accessible"></a>

Kecuali Anda secara eksplisit meminta siapa pun di internet untuk dapat membaca atau menulis ke topik Amazon SNS Anda, Anda harus memastikan bahwa topik Anda tidak dapat diakses publik (dapat diakses oleh semua orang di dunia atau oleh pengguna yang diautentikasi). AWS 
+ Hindari pembuatan kebijakan dengan `Principal` diatur ke `""`.
+ Hindari penggunaan wildcard (`*`). Sebagai gantinya, beri nama pengguna tertentu.

### Menerapkan akses hak istimewa yang paling rendah
<a name="implement-least-privilege-access"></a>

Saat Anda memberikan izin, Anda memutuskan siapa yang menerimanya, untuk topik apa izin tersebut, dan tindakan API tertentu yang ingin Anda izinkan untuk topik. Menerapkan prinsip hak istimewa paling rendah penting untuk mengurangi risiko keamanan. Tindakan ini juga membantu mengurangi efek negatif dari kesalahan atau niat jahat.

Ikuti saran keamanan standar pemberian hak istimewa paling rendah. Artinya, hanya berikan izin yang diperlukan untuk melakukan tugas tertentu. Anda dapat menerapkan hak istimewa paling rendah dengan menggunakan kombinasi kebijakan keamanan yang berkaitan dengan akses pengguna.

Amazon SNS menggunakan model penerbit langganan, yang membutuhkan tiga jenis akses akun pengguna:
+ **Administrator** – Akses untuk membuat, memodifikasi, dan menghapus topik. Administrator juga mengontrol kebijakan topik.
+ **Penerbit** – Akses untuk mengirim pesan ke topik.
+ **Pelanggan** – Akses untuk berlangganan topik.

Untuk informasi selengkapnya, lihat bagian berikut:
+ [Identity and access management di Amazon SNS](security-iam.md)
+ [Izin API Amazon SNS: Tindakan dan referensi sumber daya](sns-access-policy-language-api-permissions-reference.md)

### Gunakan peran IAM untuk aplikasi dan AWS layanan yang memerlukan akses Amazon SNS
<a name="use-iam-roles-for-applications-aws-services-which-require-access"></a>

Untuk aplikasi atau AWS layanan, seperti Amazon EC2, untuk mengakses topik Amazon SNS, mereka harus menggunakan kredensyal yang AWS valid dalam permintaan API mereka. AWS Karena kredensyal ini tidak diputar secara otomatis, Anda tidak boleh menyimpan AWS kredensyal secara langsung di aplikasi atau instans EC2.

Sebaliknya, Anda harus menggunakan IAM role dalam mengelola kredensial sementara untuk aplikasi atau layanan yang perlu mengakses Amazon SNS. Saat Anda menggunakan peran, Anda tidak perlu mendistribusikan kredensyal jangka panjang (seperti nama pengguna, kata sandi, dan kunci akses) ke instans atau AWS layanan EC2, seperti. AWS Lambda Sebagai gantinya, peran menyediakan izin sementara yang dapat digunakan aplikasi saat mereka melakukan panggilan ke AWS sumber daya lain.

Untuk informasi selengkapnya, lihat [IAM Role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dan [Skenario Umum untuk Peran: Pengguna, Aplikasi, dan Layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html) di *Panduan Pengguna IAM*.

### Menerapkan enkripsi sisi server
<a name="implement-server-side-encryption"></a>

Untuk mitigasi masalah kebocoran data, gunakan enkripsi saat istirahat untuk mengenkripsi pesan menggunakan kunci yang disimpan di lokasi berbeda dari lokasi yang menyimpan pesan Anda. Enkripsi sisi server (SSE) menyediakan enkripsi data saat istirahat. Amazon SNS mengenkripsi data Anda di tingkat pesan saat menyimpannya, dan mendekripsi pesan untuk Anda saat mengaksesnya. SSE menggunakan kunci yang dikelola di AWS Key Management Service. Saat Anda mengautentikasi permintaan dan memiliki izin akses, tidak ada perbedaan dalam mengakses topik terenkripsi atau tidak terenkripsi.

Untuk informasi selengkapnya, lihat [Mengamankan data Amazon SNS dengan enkripsi sisi server](sns-server-side-encryption.md) dan [Mengelola kunci dan biaya enkripsi Amazon SNS](sns-key-management.md).

### Menegakkan enkripsi data saat transit
<a name="enforce-encryption-data-in-transit"></a>

Mungkin, namun tidak disarankan, untuk mempublikasikan pesan yang tidak dienkripsi selama transit menggunakan HTTP. Namun, ketika topik dienkripsi saat istirahat menggunakan AWS KMS, diperlukan untuk menggunakan HTTPS untuk mempublikasikan pesan guna memastikan enkripsi baik saat istirahat maupun dalam perjalanan. Meskipun topik tidak secara otomatis menolak pesan HTTP, menggunakan HTTPS diperlukan untuk mempertahankan standar keamanan.

AWS merekomendasikan agar Anda menggunakan HTTPS alih-alih HTTP. Saat Anda menggunakan HTTPS, pesan akan dienkripsi secara otomatis selama transit, meskipun topik SNS itu sendiri tidak dienkripsi. Tanpa HTTPS, penyerang berbasis jaringan dapat menguping lalu lintas jaringan atau memanipulasinya menggunakan serangan seperti. man-in-the-middle

Untuk menegakkan hanya koneksi terenkripsi melalui HTTPS, tambahkan kondisi [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) di kebijakan IAM yang dilampirkan ke topik SNS yang tidak dienkripsi. Hal ini memaksa penerbit pesan untuk menggunakan HTTPS bukan HTTP. Anda dapat menggunakan kebijakan contoh berikut sebagai panduan:

------
#### [ JSON ]

****  

```
{
    "Id": "ExamplePolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPublishThroughSSLOnly",
            "Action": "SNS:Publish",
            "Effect": "Deny",
            "Resource": [
                "arn:aws:sns:us-east-1:111122223333:test-topic"
            ],
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            },
            "Principal": "*"
        }
    ]
}
```

------

### Pertimbangkan titik akhir VPC untuk mengakses Amazon SNS
<a name="consider-using-vpc-endpoints-access-sns"></a>

Jika Anda memiliki topik yang harus berinteraksi dengan Anda, tetapi topik ini harus benar-benar tidak terekspos internet, gunakan titik akhir VPC untuk membatasi akses topik hanya ke host dalam VPC tertentu. Anda dapat menggunakan kebijakan topik untuk mengontrol akses ke topik dari titik akhir VPC Amazon tertentu atau dari yang spesifik. VPCs

Titik akhir VPC Amazon SNS menyediakan dua cara untuk mengontrol akses ke pesan Anda:
+ Anda dapat mengontrol permintaan, pengguna, atau grup yang diizinkan melalui VPC endpoint tertentu.
+ Anda dapat mengontrol titik akhir VPC mana VPCs yang memiliki akses ke topik Anda menggunakan kebijakan topik.

Untuk informasi selengkapnya, lihat [Membuat titik akhir](sns-vpc-create-endpoint.md#sns-vpc-endpoint-create) dan [Membuat kebijakan VPC endpoint Amazon untuk Amazon SNS](sns-vpc-endpoint-policy.md).

### Pastikan langganan tidak dikonfigurasi untuk dikirim ke titik akhir http mentah
<a name="http-subscription-configuration"></a>

Hindari mengonfigurasi langganan untuk dikirimkan ke titik akhir http mentah. Selalu memiliki langganan yang dikirimkan ke nama domain endpoint. Misalnya, langganan yang dikonfigurasi untuk dikirim ke titik akhir`http://1.2.3.4/my-path`, harus diubah menjadi`http://my.domain.name/my-path`.

### Menerapkan otentikasi saat berhenti berlangganan
<a name="enforce-authentication-on-unsubscribe"></a>

 Kecuali Anda diminta untuk mengizinkan berhenti berlangganan yang tidak diautentikasi, seperti dalam kasus berhenti berlangganan mudah untuk email atau SMS, Anda harus menerapkan otentikasi untuk berhenti berlangganan dari suatu topik. Ini sejalan dengan rekomendasi kontrol [akses hak istimewa terkecil](#implement-least-privilege-access). 

 Anda dapat mengatur `AuthenticateOnUnsubscribe` ke `True` saat mengonfirmasi langganan. Gagal menyetel `AuthenticateOnUnsubscribe` bendera `True` saat mengonfirmasi langganan Amazon SNS, dapat menyebabkan permintaan berhenti berlangganan berhasil, meskipun tidak diautentikasi. Untuk informasi selengkapnya, lihat referensi Amazon SNS API untuk [ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html), atau contoh [Python di Amazon Q Detector Library](https://docs.aws.amazon.com/codeguru/detector-library/python/sns-unauthenticated-unsubscribe/). 

 Misalnya, untuk mengonfirmasi langganan email menggunakan AWS CLI, salin tautan dari teks “Konfirmasi Langganan” dalam pemberitahuan email. URL itu akan memberi Anda informasi yang diperlukan untuk memanggil AWS CLI perintah di bawah ini. 

```
aws sns confirm-subscription --region us-west-2 \
    --topic-arn sns-topic-arn \
    --token token-from-subscribe-notification \
    --authenticate-on-unsubscribe true
```

 Di mana: 
+  aws-region adalah Wilayah tempat topik AWS tersebut berada. Ini juga tersedia dalam topik ARN. 
+  sns-topic-arnadalah ARN dari topik tersebut. Ini adalah teks setelah “TopicArn=” dan sebelum “&Token” di URL langganan konfirmasi. 
+  token-from-subscribe-notificationadalah string UUID setelah “Token=” dan sebelum “&Endpoint” di URL langganan konfirmasi. 

 Berikut ini adalah contoh URL: 

```
        https://sns.us-west-2.amazonaws.com/confirmation.html?TopicArn=arn:aws:sns:us-west-2:123456789012:sns-topic&Token=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1&Endpoint=email@address.com
```