

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

# Keamanan di Amazon MSK
<a name="security"></a>

Keamanan cloud di AWS adalah prioritas tertinggi. Sebagai AWS pelanggan, Anda mendapat manfaat dari pusat data dan arsitektur jaringan yang dibangun untuk memenuhi persyaratan organisasi yang paling sensitif terhadap keamanan.

Keamanan adalah tanggung jawab bersama antara Anda AWS dan Anda. [Model tanggung jawab bersama](https://aws.amazon.com/compliance/shared-responsibility-model/) menjelaskan hal ini sebagai keamanan *dari* cloud dan keamanan *dalam* cloud:
+ **Keamanan cloud** — AWS bertanggung jawab untuk melindungi infrastruktur yang menjalankan AWS layanan di AWS Cloud. AWS juga memberi Anda layanan yang dapat Anda gunakan dengan aman. Auditor pihak ketiga secara teratur menguji dan memverifikasi efektivitas keamanan kami sebagai bagian dari [Program AWS Kepatuhan Program AWS Kepatuhan](https://aws.amazon.com/compliance/programs/) . Untuk mempelajari tentang program kepatuhan yang berlaku untuk Amazon Managed Streaming for Apache Kafka, lihat Amazon Web Services in Scope by Compliance Program [Amazon Web Services in Scope by Compliance](https://aws.amazon.com/compliance/services-in-scope/) Program by Compliance Program.
+ **Keamanan di cloud** — Tanggung jawab Anda ditentukan oleh AWS layanan yang Anda gunakan. Anda juga bertanggung jawab atas faktor lain, termasuk sensitivitas data Anda, persyaratan perusahaan Anda, serta undang-undang dan peraturan yang berlaku. 

Dokumentasi ini membantu Anda memahami cara menerapkan model tanggung jawab bersama saat menggunakan Amazon MSK. Topik berikut menunjukkan cara mengonfigurasi Amazon MSK untuk memenuhi tujuan keamanan dan kepatuhan Anda. Anda juga mempelajari cara menggunakan Amazon Web Services lain yang membantu Anda memantau dan mengamankan sumber daya MSK Amazon Anda. 

**Topics**
+ [Perlindungan data di Amazon Managed Streaming for Apache Kafka](data-protection.md)
+ [Otentikasi dan otorisasi untuk Amazon MSK APIs](security-iam.md)
+ [Otentikasi dan otorisasi untuk Apache Kafka APIs](kafka_apis_iam.md)
+ [Mengubah grup keamanan klaster MSK Amazon](change-security-group.md)
+ [Kontrol akses ke ZooKeeper node Apache di kluster MSK Amazon Anda](zookeeper-security.md)
+ [Validasi kepatuhan untuk Amazon Managed Streaming for Apache Kafka](MSK-compliance.md)
+ [Ketahanan di Amazon Managed Streaming untuk Apache Kafka](disaster-recovery-resiliency.md)
+ [Keamanan infrastruktur di Amazon Managed Streaming for Apache Kafka](infrastructure-security.md)

# Perlindungan data di Amazon Managed Streaming for Apache Kafka
<a name="data-protection"></a>

[Model tanggung jawab AWS bersama model](https://aws.amazon.com/compliance/shared-responsibility-model/) berlaku untuk perlindungan data di Amazon Managed Streaming for Apache Kafka. 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. Anda juga bertanggung jawab atas tugas-tugas konfigurasi dan manajemen keamanan untuk Layanan AWS 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 melindungi Akun AWS kredensyal dan mengatur pengguna individu dengan AWS IAM Identity Center atau AWS Identity and Access Management (IAM). Dengan cara itu, setiap pengguna hanya diberi izin yang diperlukan untuk memenuhi tanggung jawab tugasnya. Kami juga menyarankan supaya Anda mengamankan data dengan cara-cara berikut:
+ Gunakan autentikasi multi-faktor (MFA) pada setiap akun.
+ Gunakan SSL/TLS untuk berkomunikasi dengan AWS sumber daya. Kami mensyaratkan TLS 1.2 dan menganjurkan TLS 1.3.
+ Siapkan API dan pencatatan aktivitas pengguna dengan AWS CloudTrail. Untuk informasi tentang penggunaan CloudTrail jejak untuk menangkap AWS aktivitas, lihat [Bekerja dengan CloudTrail jejak](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) di *AWS CloudTrail Panduan Pengguna*.
+ Gunakan solusi AWS enkripsi, bersama dengan semua kontrol keamanan default di dalamnya Layanan AWS.
+ Gunakan layanan keamanan terkelola tingkat lanjut seperti Amazon Macie, yang membantu menemukan dan mengamankan data sensitif yang disimpan di Amazon S3.
+ Jika Anda memerlukan modul kriptografi tervalidasi FIPS 140-3 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-3](https://aws.amazon.com/compliance/fips/).

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 ketika Anda bekerja dengan Amazon MSK atau lainnya Layanan AWS 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. Saat Anda memberikan URL ke server eksternal, kami sangat menganjurkan supaya Anda tidak menyertakan informasi kredensial di dalam URL untuk memvalidasi permintaan Anda ke server itu.

**Topics**
+ [Enkripsi Amazon MSK](msk-encryption.md)
+ [Memulai enkripsi MSK Amazon](msk-working-with-encryption.md)
+ [Gunakan Amazon MSK APIs dengan Titik Akhir VPC Antarmuka](privatelink-vpc-endpoints.md)

# Enkripsi Amazon MSK
<a name="msk-encryption"></a>

Amazon MSK menyediakan opsi enkripsi data yang dapat Anda gunakan untuk memenuhi persyaratan manajemen data yang ketat. Sertifikat yang digunakan Amazon MSK untuk enkripsi harus diperbarui setiap 13 bulan. Amazon MSK secara otomatis memperbarui sertifikat ini untuk semua cluster. Cluster broker ekspres tetap dalam `ACTIVE` keadaan saat Amazon MSK memulai operasi pembaruan sertifikat. Untuk klaster pialang standar, Amazon MSK menetapkan status cluster `MAINTENANCE` saat memulai operasi pembaruan sertifikat. MSK menyetelnya kembali ke `ACTIVE` saat pembaruan selesai. Saat cluster berada dalam operasi pemutakhiran sertifikat, Anda dapat terus memproduksi dan mengkonsumsi data, tetapi Anda tidak dapat melakukan operasi pembaruan apa pun di dalamnya.

## Enkripsi MSK Amazon saat istirahat
<a name="msk-encryption-at-rest"></a>

Amazon MSK terintegrasi dengan [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/)(KMS) untuk menawarkan enkripsi sisi server yang transparan. Amazon MSK selalu mengenkripsi data Anda saat istirahat. Saat Anda membuat klaster MSK, Anda dapat menentukan AWS KMS key yang Anda ingin Amazon MSK gunakan untuk mengenkripsi data Anda saat istirahat. Jika Anda tidak menentukan kunci KMS, Amazon MSK membuat [Kunci yang dikelola AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)untuk Anda dan menggunakannya atas nama Anda. Untuk informasi selengkapnya tentang kunci KMS, lihat [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) di *Panduan Developer AWS Key Management Service *.

## Enkripsi MSK Amazon dalam perjalanan
<a name="msk-encryption-in-transit"></a>

Amazon MSK menggunakan TLS 1.2. Secara default, ini mengenkripsi data dalam perjalanan antara broker kluster MSK Anda. Anda dapat mengganti default ini pada saat Anda membuat cluster. 

Untuk komunikasi antara klien dan broker, Anda harus menentukan salah satu dari tiga pengaturan berikut:
+ Hanya izinkan data terenkripsi TLS. Ini adalah pengaturan default.
+ Izinkan plaintext, serta data terenkripsi TLS.
+ Hanya izinkan data plaintext.

Broker MSK Amazon menggunakan AWS Certificate Manager sertifikat publik. Oleh karena itu, setiap truststore yang mempercayai Amazon Trust Services juga mempercayai sertifikat broker MSK Amazon.

Meskipun kami sangat menyarankan untuk mengaktifkan enkripsi dalam transit, ini dapat menambahkan overhead CPU tambahan dan latensi beberapa milidetik. Namun, sebagian besar kasus penggunaan tidak sensitif terhadap perbedaan ini, dan besarnya dampaknya bergantung pada konfigurasi klaster, klien, dan profil penggunaan Anda. 

# Memulai enkripsi MSK Amazon
<a name="msk-working-with-encryption"></a>

Saat membuat cluster MSK, Anda dapat menentukan pengaturan enkripsi dalam format JSON. Berikut adalah contohnya.

```
{
   "EncryptionAtRest": {
       "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/abcdabcd-1234-abcd-1234-abcd123e8e8e"
    },
   "EncryptionInTransit": {
        "InCluster": true,
        "ClientBroker": "TLS"
    }
}
```

Untuk`DataVolumeKMSKeyId`, Anda dapat menentukan [kunci yang dikelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) atau MSK Kunci yang dikelola AWS untuk di akun Anda (`alias/aws/kafka`). Jika Anda tidak menentukan`EncryptionAtRest`, Amazon MSK masih mengenkripsi data Anda saat istirahat di bawah. Kunci yang dikelola AWS Untuk menentukan kunci mana yang digunakan klaster Anda, kirim `GET` permintaan atau panggil operasi `DescribeCluster` API. 

Untuk`EncryptionInTransit`, nilai default `InCluster` adalah true, tetapi Anda dapat mengaturnya ke false jika Anda tidak ingin Amazon MSK mengenkripsi data Anda saat melewati antara broker.

Untuk menentukan mode enkripsi untuk data dalam perjalanan antara klien dan broker, atur `ClientBroker` ke salah satu dari tiga nilai:`TLS`,`TLS_PLAINTEXT`, atau`PLAINTEXT`.

**Topics**
+ [Tentukan pengaturan enkripsi saat membuat cluster MSK Amazon](msk-working-with-encryption-cluster-create.md)
+ [Uji enkripsi Amazon MSK TLS](msk-working-with-encryption-test-tls.md)

# Tentukan pengaturan enkripsi saat membuat cluster MSK Amazon
<a name="msk-working-with-encryption-cluster-create"></a>

Proses ini menjelaskan cara menentukan pengaturan enkripsi saat membuat cluster MSK Amazon.

**Tentukan pengaturan enkripsi saat membuat cluster**

1. Simpan isi dari contoh sebelumnya dalam file dan berikan file nama apa pun yang Anda inginkan. Misalnya, sebut saja`encryption-settings.json`.

1. Jalankan `create-cluster` perintah dan gunakan `encryption-info` opsi untuk menunjuk ke file tempat Anda menyimpan konfigurasi JSON Anda. Berikut adalah contohnya. Ganti *\$1YOUR MSK VERSION\$1* dengan versi yang cocok dengan versi klien Apache Kafka. Untuk informasi tentang cara menemukan versi klaster MSK Anda, lihat[Menentukan versi klaster MSK Anda](create-topic.md#find-msk-cluster-version). Ketahuilah bahwa menggunakan versi klien Apache Kafka yang tidak sama dengan versi cluster MSK Anda dapat menyebabkan kerusakan, kehilangan, dan waktu henti data Apache Kafka.

   ```
   aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --kafka-version "{YOUR MSK VERSION}" --number-of-broker-nodes 3
   ```

   Berikut ini adalah contoh respons yang berhasil setelah menjalankan perintah ini.

   ```
   {
       "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e",
       "ClusterName": "ExampleClusterName",
       "State": "CREATING"
   }
   ```

# Uji enkripsi Amazon MSK TLS
<a name="msk-working-with-encryption-test-tls"></a>

Proses ini menjelaskan cara menguji enkripsi TLS di Amazon MSK.

**Untuk menguji enkripsi TLS**

1. Buat mesin klien mengikuti panduan di[Langkah 3: Buat mesin klien](create-client-machine.md).

1. Instal Apache Kafka di mesin klien.

1. Dalam contoh ini kita menggunakan truststore JVM untuk berbicara dengan cluster MSK. Untuk melakukan ini, pertama buat folder bernama `/tmp` pada mesin klien. Kemudian, buka `bin` folder instalasi Apache Kafka, dan jalankan perintah berikut. (Jalur JVM Anda mungkin berbeda.)

   ```
   cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. Saat masih dalam `bin` folder instalasi Apache Kafka di mesin klien, buat file teks bernama `client.properties` dengan konten berikut.

   ```
   security.protocol=SSL
   ssl.truststore.location=/tmp/kafka.client.truststore.jks
   ```

1. Jalankan perintah berikut pada mesin yang telah AWS CLI diinstal, ganti *clusterARN* dengan ARN cluster Anda.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   Hasil yang sukses terlihat seperti berikut ini. Simpan hasil ini karena Anda membutuhkannya untuk langkah selanjutnya.

   ```
   {
       "BootstrapBrokerStringTls": "a-1.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-3.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-2.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123"
   }
   ```

1. Jalankan perintah berikut, ganti *BootstrapBrokerStringTls* dengan salah satu titik akhir broker yang Anda peroleh pada langkah sebelumnya.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic
   ```

1. Buka jendela perintah baru dan sambungkan ke mesin klien yang sama. Kemudian, jalankan perintah berikut untuk membuat konsumen konsol.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic
   ```

1. Di jendela produser, ketik pesan teks diikuti dengan pengembalian, dan cari pesan yang sama di jendela konsumen. Amazon MSK mengenkripsi pesan ini dalam perjalanan.

[Untuk informasi selengkapnya tentang mengonfigurasi klien Apache Kafka agar bekerja dengan data terenkripsi, lihat Mengonfigurasi Klien Kafka.](https://kafka.apache.org/documentation/#security_configclients)

# Gunakan Amazon MSK APIs dengan Titik Akhir VPC Antarmuka
<a name="privatelink-vpc-endpoints"></a>

Anda dapat menggunakan Endpoint VPC Antarmuka, yang didukung oleh AWS PrivateLink, untuk mencegah lalu lintas antara VPC Amazon dan MSK APIs Amazon Anda meninggalkan jaringan Amazon. Titik Akhir VPC Antarmuka tidak memerlukan gateway internet, perangkat NAT, koneksi VPN, atau koneksi Direct AWS Connect. [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)adalah AWS teknologi yang memungkinkan komunikasi pribadi antar AWS layanan menggunakan elastic network interface dengan private IPs di Amazon VPC Anda. Untuk informasi selengkapnya, lihat [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) dan [Interface VPC Endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint) ().AWS PrivateLink

Aplikasi Anda dapat terhubung dengan Amazon MSK Provisioned dan MSK Connect menggunakan. APIs AWS PrivateLink Untuk memulai, buat Endpoint VPC Antarmuka untuk API MSK Amazon Anda untuk memulai lalu lintas yang mengalir dari dan ke sumber daya VPC Amazon Anda melalui Titik Akhir VPC Antarmuka. Titik akhir VPC Antarmuka berkemampuan FIPS tersedia untuk Wilayah AS. Untuk informasi selengkapnya, lihat [Membuat Endpoint Antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint).

Dengan menggunakan fitur ini, klien Apache Kafka Anda dapat secara dinamis mengambil string koneksi untuk terhubung dengan sumber daya MSK Provisioned atau MSK Connect tanpa melintasi internet untuk mengambil string koneksi.

Saat membuat Endpoint VPC Antarmuka, pilih salah satu titik akhir nama layanan berikut:

**Untuk MSK Disediakan:**
+ Titik akhir nama layanan berikut tidak lagi didukung untuk koneksi baru:
  + com.amazonaws.region.kafka
  + com.amazonaws.region.kafka-fips (diaktifkan FIPS)
+ Layanan endpoint dualstack yang mendukung keduanya IPv4 dan IPv6 lalu lintas adalah:
  + aws.api.region.kafka-api
  + aws.api.region. kafka-api-fips (FIPS-diaktifkan)

Untuk menyiapkan titik akhir dualstack, Anda harus mengikuti pedoman titik akhir [Dual-stack](https://docs.aws.amazon.com/sdkref/latest/guide/feature-endpoints.html) dan FIPS.

Di mana wilayah adalah nama wilayah Anda. Pilih nama layanan ini untuk bekerja dengan MSK APIs Provisioned-compatible. Untuk informasi selengkapnya, lihat [Operasi](https://docs.aws.amazon.com/msk/1.0/apireference/operations.html) di *https://docs.aws.amazon.com/msk/1.0/apireference/*.

**Untuk MSK Connect:**
+ com.amazonaws.region.kafkaconnect

Di mana wilayah adalah nama wilayah Anda. Pilih nama layanan ini untuk bekerja dengan MSK APIs Connect-kompatibel. Untuk informasi selengkapnya, lihat [Tindakan](https://docs.aws.amazon.com/MSKC/latest/mskc/API_Operations.html) di *Referensi API Amazon MSK Connect*.

*Untuk informasi selengkapnya, termasuk step-by-step petunjuk untuk membuat titik akhir VPC antarmuka, lihat [Membuat titik akhir antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint) di Panduan.AWS PrivateLink *

## Kontrol akses ke titik akhir VPC untuk Amazon MSK Provisioned atau MSK Connect APIs
<a name="vpc-endpoints-control-access"></a>

Kebijakan titik akhir VPC memungkinkan Anda mengontrol akses dengan melampirkan kebijakan ke titik akhir VPC atau dengan menggunakan bidang tambahan dalam kebijakan yang dilampirkan ke pengguna, grup, atau peran IAM untuk membatasi akses agar hanya terjadi melalui titik akhir VPC yang ditentukan. Gunakan kebijakan contoh yang sesuai untuk menentukan izin akses untuk layanan MSK Provisioned atau MSK Connect.

Jika Anda tidak melampirkan kebijakan ketika membuat titik akhir, Amazon VPC melampirkan kebijakan default untuk Anda sehingga memungkinkan akses penuh ke layanan. Kebijakan endpoint tidak mengesampingkan atau mengganti kebijakan berbasis identitas IAM atau kebijakan khusus layanan. Ini adalah kebijakan terpisah untuk mengendalikan akses dari titik akhir ke layanan tertentu.

*Untuk informasi selengkapnya, lihat [Mengontrol Akses ke Layanan dengan Titik Akhir VPC di Panduan](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).AWS PrivateLink *

------
#### [ MSK Provisioned — VPC policy example ]

**Akses hanya-baca**  
Kebijakan sampel ini dapat dilampirkan ke titik akhir VPC. (Untuk informasi selengkapnya, lihat Mengontrol Akses ke Sumber Daya VPC Amazon). Ini membatasi tindakan untuk hanya mencantumkan dan menjelaskan operasi melalui titik akhir VPC yang dilampirkan.

```
{
  "Statement": [
    {
      "Sid": "MSKReadOnly",
      "Principal": "*",
      "Action": [
        "kafka:List*",
        "kafka:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
```

**MSK Provisioned - Contoh kebijakan titik akhir VPC**  
Batasi akses ke kluster MSK tertentu

Kebijakan sampel ini dapat dilampirkan ke titik akhir VPC. Ini membatasi akses ke cluster Kafka tertentu melalui titik akhir VPC yang dilampirkan.

```
{
  "Statement": [
    {
      "Sid": "AccessToSpecificCluster",
      "Principal": "*",
      "Action": "kafka:*",
      "Effect": "Allow",
      "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/MyCluster"
    }
  ]
}
```

------
#### [ MSK Connect — VPC endpoint policy example ]

**Daftar konektor dan buat konektor baru**  
Berikut ini adalah contoh kebijakan endpoint untuk MSK Connect. Kebijakan ini memungkinkan peran yang ditentukan untuk mencantumkan konektor dan membuat konektor baru.

```
{
    "Version": "2012-10-17", 		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "MSKConnectPermissions",
            "Effect": "Allow",
            "Action": [
                "kafkaconnect:ListConnectors",
                "kafkaconnect:CreateConnector"
            ],
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/MyMSKConnectExecutionRole"
                ]
            }
        }
    ]
}
```

**MSK Connect - Contoh kebijakan titik akhir VPC**  
Mengizinkan hanya permintaan dari alamat IP tertentu di VPC yang ditentukan

Contoh berikut menunjukkan kebijakan yang hanya memungkinkan permintaan yang berasal dari alamat IP tertentu di VPC tertentu untuk berhasil. Permintaan dari alamat IP lain akan gagal.

```
{
    "Statement": [
        {
            "Action": "kafkaconnect:*",
            "Effect": "Allow",
            "Principal": "*",
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:VpcSourceIp": "192.0.2.123"
                },
        "StringEquals": {
                    "aws:SourceVpc": "vpc-555555555555"
                }
            }
        }
    ]
}
```

------

# Otentikasi dan otorisasi untuk Amazon MSK APIs
<a name="security-iam"></a>

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 *diberi wewenang* (memiliki izin) untuk menggunakan sumber daya MSK Amazon. IAM adalah Layanan AWS yang dapat Anda gunakan tanpa biaya tambahan.

**Topics**
+ [Bagaimana Amazon MSK bekerja dengan IAM](security_iam_service-with-iam.md)
+ [Contoh kebijakan berbasis identitas MSK Amazon](security_iam_id-based-policy-examples.md)
+ [Peran terkait layanan untuk Amazon MSK](using-service-linked-roles.md)
+ [AWS kebijakan terkelola untuk Amazon MSK](security-iam-awsmanpol.md)
+ [Memecahkan masalah identitas dan akses MSK Amazon](security_iam_troubleshoot.md)

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

Sebelum Anda menggunakan IAM untuk mengelola akses ke Amazon MSK, Anda harus memahami fitur IAM apa yang tersedia untuk digunakan dengan Amazon MSK. *Untuk mendapatkan tampilan tingkat tinggi tentang cara Amazon MSK dan AWS layanan lainnya bekerja dengan IAM, lihat [AWS Layanan yang Bekerja dengan IAM di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html).*

**Topics**
+ [Kebijakan berbasis identitas MSK Amazon](security_iam_service-with-iam-id-based-policies.md)
+ [Kebijakan berbasis sumber daya Amazon MSK](security_iam_service-with-iam-resource-based-policies.md)
+ [Otorisasi berdasarkan tag MSK Amazon](security_iam_service-with-iam-tags.md)
+ [Peran Amazon MSK IAM](security_iam_service-with-iam-roles.md)

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

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. Amazon MSK mendukung tindakan, sumber daya, dan kunci kondisi tertentu. Untuk mempelajari semua elemen yang 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*.

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

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.

Tindakan kebijakan di Amazon MSK menggunakan awalan berikut sebelum tindakan:. `kafka:` Misalnya, untuk memberikan izin kepada seseorang untuk mendeskripsikan klaster MSK dengan operasi Amazon MSK `DescribeCluster` API, Anda menyertakan `kafka:DescribeCluster` tindakan tersebut dalam kebijakan mereka. Pernyataan kebijakan harus memuat elemen `Action` atau `NotAction`. Amazon MSK mendefinisikan serangkaian tindakannya sendiri yang menggambarkan tugas yang dapat Anda lakukan dengan layanan ini.

Harap dicatat, tindakan kebijakan untuk topik MSK APIs menggunakan `kafka-cluster` awalan sebelum tindakan, lihat. [Semantik tindakan dan sumber daya kebijakan otorisasi IAM](kafka-actions.md)

Untuk menetapkan beberapa tindakan dalam satu pernyataan, pisahkan dengan koma seperti berikut:

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

Anda dapat menentukan beberapa tindakan menggunakan wildcard (\$1). Sebagai contoh, untuk menentukan semua tindakan yang dimulai dengan kata `Describe`, sertakan tindakan berikut:

```
"Action": "kafka:Describe*"
```



*Untuk melihat daftar tindakan MSK Amazon, lihat [Tindakan, sumber daya, dan kunci kondisi untuk Amazon Managed Streaming for Apache](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonmanagedstreamingforapachekafka.html) Kafka di Panduan Pengguna IAM.*

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

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



Sumber daya instans MSK Amazon memiliki ARN berikut:

```
arn:${Partition}:kafka:${Region}:${Account}:cluster/${ClusterName}/${UUID}
```

Untuk informasi selengkapnya tentang format ARNs, lihat [Amazon Resource Names (ARNs) dan Ruang Nama AWS Layanan](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Misalnya, untuk menentukan instans `CustomerMessages` dalam pernyataan Anda, gunakan ARN berikut:

```
"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/CustomerMessages/abcd1234-abcd-dcba-4321-a1b2abcd9f9f-2"
```

Untuk menentukan semua instans milik akun tertentu, gunakan wildcard (\$1):

```
"Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*"
```

Beberapa tindakan MSK Amazon, seperti untuk membuat sumber daya, tidak dapat dilakukan pada sumber daya tertentu. Dalam kasus tersebut, Anda harus menggunakan wildcard (\$1).

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

Untuk menentukan beberapa sumber daya dalam satu pernyataan, pisahkan ARNs dengan koma. 

```
"Resource": ["resource1", "resource2"]
```

*Untuk melihat daftar jenis sumber daya MSK Amazon dan jenisnya ARNs, lihat Sumber Daya yang [Ditentukan oleh Amazon Managed Streaming for Apache](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-resources-for-iam-policies) Kafka di Panduan Pengguna IAM.* Untuk mempelajari tindakan mana yang dapat Anda tentukan ARN dari setiap sumber daya, lihat [Tindakan yang Ditentukan oleh Amazon Managed Streaming for](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-actions-as-permissions) Apache Kafka.

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

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

Amazon MSK mendefinisikan rangkaian kunci kondisinya sendiri dan juga mendukung penggunaan beberapa kunci kondisi global. 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 MSK Amazon, lihat Kunci Kondisi [untuk Amazon Managed Streaming for Apache](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-policy-keys) Kafka di Panduan Pengguna IAM.* Untuk mempelajari tindakan dan sumber daya yang dapat Anda gunakan kunci kondisi, lihat [Tindakan yang Ditentukan oleh Amazon Managed Streaming for Apache](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonmanagedstreamingforkafka.html#amazonmanagedstreamingforkafka-actions-as-permissions) Kafka.

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



Untuk melihat contoh kebijakan berbasis identitas MSK Amazon, lihat. [Contoh kebijakan berbasis identitas MSK Amazon](security_iam_id-based-policy-examples.md)

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

Amazon MSK mendukung kebijakan klaster (juga dikenal sebagai kebijakan berbasis sumber daya) untuk digunakan dengan kluster MSK Amazon. Anda dapat menggunakan kebijakan klaster untuk menentukan prinsipal IAM mana yang memiliki izin lintas akun untuk menyiapkan konektivitas pribadi ke kluster MSK Amazon Anda. Saat digunakan dengan otentikasi klien IAM, Anda juga dapat menggunakan kebijakan klaster untuk secara terperinci menentukan izin bidang data Kafka untuk klien yang menghubungkan.

Ukuran maksimum yang didukung untuk kebijakan klaster adalah 20 KB.

Untuk melihat contoh cara mengonfigurasi kebijakan klaster, lihat[Langkah 2: Lampirkan kebijakan klaster ke klaster MSK](mvpc-cluster-owner-action-policy.md). 

# Otorisasi berdasarkan tag MSK Amazon
<a name="security_iam_service-with-iam-tags"></a>

Anda dapat melampirkan tag ke cluster MSK Amazon. 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 `kafka:ResourceTag/key-name`, `aws:RequestTag/key-name`, atau `aws:TagKeys`. Untuk informasi tentang menandai sumber daya MSK Amazon, lihat. [Menandai kluster MSK Amazon](msk-tagging.md)

Anda hanya dapat mengontrol akses cluster dengan bantuan tag. Untuk menandai topik dan grup konsumen, Anda perlu menambahkan pernyataan terpisah dalam kebijakan Anda tanpa tag.

Untuk melihat contoh kebijakan berbasis identitas untuk membatasi akses ke klaster berdasarkan tag pada klaster tersebut, lihat. [Mengakses kluster MSK Amazon berdasarkan tag](security_iam_id-based-policy-examples-view-widget-tags.md)

Anda dapat menggunakan kondisi dalam kebijakan berbasis identitas untuk mengontrol akses ke sumber daya MSK Amazon berdasarkan tag. Contoh berikut menunjukkan kebijakan yang memungkinkan pengguna untuk mendeskripsikan cluster, mendapatkan broker bootstrap, daftar node brokernya, memperbaruinya, dan menghapusnya. Namun, kebijakan ini hanya memberikan izin jika tag klaster `Owner` memiliki nilai pengguna tersebut. `username` Pernyataan kedua dalam kebijakan berikut memungkinkan akses ke topik di cluster. Pernyataan pertama dalam kebijakan ini tidak mengizinkan akses topik apa pun.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessClusterIfOwner",
      "Effect": "Allow",
      "Action": [
        "kafka:Describe*",
        "kafka:Get*",
        "kafka:List*",
        "kafka:Update*",
        "kafka:Delete*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:123456789012:cluster/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Owner": "${aws:username}"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "kafka-cluster:*Topic*",
        "kafka-cluster:WriteData",
        "kafka-cluster:ReadData"
      ],
      "Resource": [
        "arn:aws:kafka:us-east-1:123456789012:topic/*"
      ]
    }
  ]
}
```

------

# Peran Amazon MSK IAM
<a name="security_iam_service-with-iam-roles"></a>

[IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) adalah entitas di dalam akun Amazon Web Services Anda yang memiliki izin khusus.

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

Anda dapat menggunakan kredensial sementara untuk masuk dengan gabungan, menjalankan IAM role, atau menjalankan peran lintas akun. Anda memperoleh kredensyal keamanan sementara dengan memanggil operasi AWS STS API seperti [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)atau. [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) 

Amazon MSK mendukung penggunaan kredensyal sementara. 

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

[Peran terkait layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) memungkinkan Amazon Web Services mengakses sumber daya di layanan lain untuk menyelesaikan tindakan atas nama Anda. Peran tertaut layanan muncul di akun IAM Anda dan dimiliki oleh layanan tersebut. Administrator dapat melihat tetapi tidak dapat mengedit izin untuk peran yang terkait dengan layanan.

Amazon MSK mendukung peran terkait layanan. Untuk detail tentang membuat atau mengelola peran terkait layanan MSK Amazon,. [Peran terkait layanan untuk Amazon MSK](using-service-linked-roles.md)

# Contoh kebijakan berbasis identitas MSK Amazon
<a name="security_iam_id-based-policy-examples"></a>

Secara default, pengguna dan peran IAM tidak memiliki izin untuk menjalankan tindakan Amazon MSK API. Administrator harus membuat kebijakan IAM yang memberikan izin kepada pengguna dan peran untuk melakukan operasi API tertentu pada sumber daya tertentu yang mereka butuhkan. Administrator kemudian harus melampirkan kebijakan tersebut ke pengguna IAM atau grup yang memerlukan izin tersebut.

Untuk mempelajari cara membuat kebijakan berbasis identitas IAM menggunakan contoh dokumen kebijakan JSON ini, lihat [Membuat Kebijakan pada Tab JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) dalam *Panduan Pengguna IAM*.

**Topics**
+ [Praktik terbaik kebijakan](security_iam_service-with-iam-policy-best-practices.md)
+ [Mengizinkan pengguna melihat izin mereka sendiri](security_iam_id-based-policy-examples-view-own-permissions.md)
+ [Mengakses satu cluster MSK Amazon](security_iam_id-based-policy-examples-access-one-cluster.md)
+ [Mengakses kluster MSK Amazon berdasarkan tag](security_iam_id-based-policy-examples-view-widget-tags.md)

# 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 MSK Amazon 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*.

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

# Mengakses satu cluster MSK Amazon
<a name="security_iam_id-based-policy-examples-access-one-cluster"></a>

Dalam contoh ini, Anda ingin memberikan pengguna IAM di akun Amazon Web Services Anda akses ke salah satu cluster Anda. `purchaseQueriesCluster` Kebijakan ini memungkinkan pengguna untuk mendeskripsikan cluster, mendapatkan broker bootstrap, daftar node brokernya, dan memperbaruinya.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"UpdateCluster",
         "Effect":"Allow",
         "Action":[
            "kafka:Describe*",
            "kafka:Get*",
            "kafka:List*",
            "kafka:Update*"
         ],
         "Resource":"arn:aws:kafka:us-east-1:012345678012:cluster/purchaseQueriesCluster/abcdefab-1234-abcd-5678-cdef0123ab01-2"
      }
   ]
}
```

------

# Mengakses kluster MSK Amazon berdasarkan tag
<a name="security_iam_id-based-policy-examples-view-widget-tags"></a>

Anda dapat menggunakan kondisi dalam kebijakan berbasis identitas untuk mengontrol akses ke sumber daya MSK Amazon berdasarkan tag. Contoh ini menunjukkan bagaimana Anda dapat membuat kebijakan yang memungkinkan pengguna untuk mendeskripsikan cluster, mendapatkan broker bootstrap, daftar node brokernya, memperbaruinya, dan menghapusnya. Namun, izin diberikan hanya jika tag cluster `Owner` memiliki nilai nama pengguna pengguna tersebut.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessClusterIfOwner",
      "Effect": "Allow",
      "Action": [
        "kafka:Describe*",
        "kafka:Get*",
        "kafka:List*",
        "kafka:Update*",
        "kafka:Delete*"
      ],
      "Resource": "arn:aws:kafka:us-east-1:012345678012:cluster/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Owner": "${aws:username}"
        }
      }
    }
  ]
}
```

------

Anda dapat melampirkan kebijakan ini ke pengguna IAM di akun Anda. Jika pengguna bernama `richard-roe` mencoba memperbarui kluster MSK, cluster harus diberi tag `Owner=richard-roe` atau. `owner=richard-roe` Jika tidak, aksesnya akan ditolak. Kunci tanda syarat `Owner` sama dengan kedua `Owner` dan `owner` karena nama kunci syarat tidak terpengaruh huruf besar/kecil. Untuk informasi lebih lanjut, lihat [Elemen Kebijakan IAM JSON: Persyaratan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dalam *Panduan Pengguna IAM*.

# Peran terkait layanan untuk Amazon MSK
<a name="using-service-linked-roles"></a>

Amazon MSK menggunakan peran terkait [layanan AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) (IAM). Peran terkait layanan adalah jenis peran IAM unik yang ditautkan langsung ke Amazon MSK. Peran terkait layanan telah ditentukan sebelumnya oleh Amazon MSK dan mencakup semua izin yang diperlukan layanan untuk memanggil layanan lain AWS atas nama Anda. 

Peran terkait layanan membuat pengaturan Amazon MSK lebih mudah karena Anda tidak perlu menambahkan izin yang diperlukan secara manual. Amazon MSK mendefinisikan izin dari peran terkait layanannya. Kecuali ditentukan lain, hanya Amazon MSK yang dapat mengambil perannya. Izin yang ditentukan mencakup kebijakan kepercayaan dan kebijakan izin, serta bahwa kebijakan izin tidak dapat dilampirkan ke entitas IAM lainnya.

Untuk informasi tentang layanan lain yang mendukung peran terkait layanan, lihat [Amazon Web Services yang Bekerja dengan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html), dan cari layanan yang memiliki **Ya** di kolom Peran Tertaut **Layanan**. Pilih **Ya** dengan sebuah tautan untuk melihat dokumentasi peran terkait layanan untuk layanan tersebut.

**Topics**
+ [Izin peran terkait layanan](slr-permissions.md)
+ [Buat peran tertaut layanan](create-slr.md)
+ [Edit peran tertaut layanan](edit-slr.md)
+ [Wilayah yang didukung untuk peran yang terhubung dengan layanan](slr-regions.md)

# Izin peran terkait layanan untuk Amazon MSK
<a name="slr-permissions"></a>

Amazon MSK menggunakan peran terkait layanan bernama. **AWSServiceRoleForKafka** Amazon MSK menggunakan peran ini untuk mengakses sumber daya Anda dan melakukan operasi seperti:
+ `*NetworkInterface`— membuat dan mengelola antarmuka jaringan di akun pelanggan yang membuat broker cluster dapat diakses oleh klien di VPC pelanggan.
+ `*VpcEndpoints`— mengelola titik akhir VPC di akun pelanggan yang membuat broker klaster dapat diakses oleh klien di VPC pelanggan yang menggunakan. AWS PrivateLink Amazon MSK menggunakan izin untuk`DescribeVpcEndpoints`, `ModifyVpcEndpoint` dan. `DeleteVpcEndpoints`
+ `secretsmanager`— kelola kredensyal klien dengan. AWS Secrets Manager
+ `GetCertificateAuthorityCertificate`— mengambil sertifikat untuk otoritas sertifikat pribadi Anda.
+ `*Ipv6Addresses`— menetapkan dan membatalkan penetapan IPv6 alamat ke antarmuka jaringan di akun pelanggan untuk mengaktifkan IPv6 konektivitas untuk kluster MSK.
+ `ModifyNetworkInterfaceAttribute`— memodifikasi atribut antarmuka jaringan di akun pelanggan untuk mengkonfigurasi IPv6 pengaturan untuk konektivitas cluster MSK.

Peran terkait layanan ini dilampirkan ke kebijakan terkelola berikut ini: `KafkaServiceRolePolicy`. Untuk pembaruan kebijakan ini, lihat [KafkaServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/KafkaServiceRolePolicy.html).

Peran tertaut layanan AWSServiceRoleForKafka memercayai layanan berikut untuk mengambil peran tersebut:
+ `kafka.amazonaws.com`

Kebijakan izin peran memungkinkan Amazon MSK menyelesaikan tindakan berikut pada sumber daya.

Anda harus mengonfigurasi izin untuk mengizinkan entitas IAM (seperti pengguna, grup, atau peran) untuk membuat, mengedit, atau menghapus peran terkait layanan. Untuk informasi selengkapnya, silakan lihat [Izin Peran Tertaut Layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) di *Panduan Pengguna IAM*.

# Membuat peran terkait layanan untuk Amazon MSK
<a name="create-slr"></a>

Anda tidak perlu membuat peran terkait layanan secara manual. Saat Anda membuat klaster MSK Amazon di Konsol Manajemen AWS, API AWS CLI, atau AWS API, Amazon MSK membuat peran terkait layanan untuk Anda. 

Jika Anda menghapus peran terkait layanan ini, dan ingin membuatnya lagi, Anda dapat mengulangi proses yang sama untuk membuat kembali peran tersebut di akun Anda. Saat Anda membuat kluster MSK Amazon, Amazon MSK membuat peran terkait layanan untuk Anda lagi. 

# Mengedit peran terkait layanan untuk Amazon MSK
<a name="edit-slr"></a>

Amazon MSK tidak mengizinkan Anda mengedit peran AWSServiceRoleForKafka terkait layanan. Setelah membuat peran terkait layanan, Anda tidak dapat mengubah nama peran karena berbagai entitas mungkin merujuk peran tersebut. Namun, Anda dapat mengedit penjelasan peran menggunakan IAM. Untuk informasi selengkapnya, lihat [Mengedit Peran Tertaut Layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role) dalam *Panduan Pengguna IAM*.

# Wilayah yang Didukung untuk peran terkait layanan MSK Amazon
<a name="slr-regions"></a>

Amazon MSK mendukung penggunaan peran terkait layanan di semua Wilayah tempat layanan tersedia. Untuk informasi selengkapnya, lihat [AWS Wilayah dan Titik Akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html).

# AWS kebijakan terkelola untuk Amazon MSK
<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: MSKFull Akses Amazon
<a name="security-iam-awsmanpol-AmazonMSKFullAccess"></a>

Kebijakan ini memberikan izin administratif yang memungkinkan akses penuh utama ke semua tindakan MSK Amazon. Izin dalam kebijakan ini dikelompokkan sebagai berikut:
+ Izin MSK Amazon memungkinkan semua tindakan MSK Amazon.
+ **`Amazon EC2`izin** — dalam kebijakan ini diperlukan untuk memvalidasi sumber daya yang diteruskan dalam permintaan API. Ini untuk memastikan Amazon MSK dapat berhasil menggunakan sumber daya dengan cluster. Izin Amazon EC2 lainnya dalam kebijakan ini memungkinkan Amazon MSK membuat AWS sumber daya yang diperlukan untuk memungkinkan Anda terhubung ke cluster Anda.
+ **`AWS KMS`izin** - digunakan selama panggilan API untuk memvalidasi sumber daya yang diteruskan dalam permintaan. Mereka diperlukan untuk Amazon MSK untuk dapat menggunakan kunci yang diteruskan dengan cluster MSK Amazon.
+ **`CloudWatch Logs, Amazon S3, and Amazon Data Firehose`izin** - diperlukan untuk Amazon MSK untuk dapat memastikan bahwa tujuan pengiriman log dapat dijangkau, dan valid untuk penggunaan log broker.
+ **`IAM`izin** - diperlukan agar Amazon MSK dapat membuat peran terkait layanan di akun Anda dan memungkinkan Anda meneruskan peran eksekusi layanan ke Amazon MSK.

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

****  

```
    {
    	"Version":"2012-10-17",		 	 	 
    	"Statement": [{
    			"Effect": "Allow",
    			"Action": [
    				"kafka:*",
    				"ec2:DescribeSubnets",
    				"ec2:DescribeVpcs",
    				"ec2:DescribeSecurityGroups",
    				"ec2:DescribeRouteTables",
    				"ec2:DescribeVpcEndpoints",
    				"ec2:DescribeVpcAttribute",
    				"kms:DescribeKey",
    				"kms:CreateGrant",
    				"logs:CreateLogDelivery",
    				"logs:GetLogDelivery",
    				"logs:UpdateLogDelivery",
    				"logs:DeleteLogDelivery",
    				"logs:ListLogDeliveries",
    				"logs:PutResourcePolicy",
    				"logs:DescribeResourcePolicies",
    				"logs:DescribeLogGroups",
    				"S3:GetBucketPolicy",
    				"firehose:TagDeliveryStream"
    			],
    			"Resource": "*"
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateVpcEndpoint"
    			],
    			"Resource": [
    				"arn:*:ec2:*:*:vpc/*",
    				"arn:*:ec2:*:*:subnet/*",
    				"arn:*:ec2:*:*:security-group/*"
    			]
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateVpcEndpoint"
    			],
    			"Resource": [
    				"arn:*:ec2:*:*:vpc-endpoint/*"
    			],
    			"Condition": {
    				"StringEquals": {
    					"aws:RequestTag/AWSMSKManaged": "true"
    				},
    				"StringLike": {
    					"aws:RequestTag/ClusterArn": "*"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:CreateTags"
    			],
    			"Resource": "arn:*:ec2:*:*:vpc-endpoint/*",
    			"Condition": {
    				"StringEquals": {
    					"ec2:CreateAction": "CreateVpcEndpoint"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"ec2:DeleteVpcEndpoints"
    			],
    			"Resource": "arn:*:ec2:*:*:vpc-endpoint/*",
    			"Condition": {
    				"StringEquals": {
    					"ec2:ResourceTag/AWSMSKManaged": "true"
    				},
    				"StringLike": {
    					"ec2:ResourceTag/ClusterArn": "*"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:PassRole",
    			"Resource": "*",
    			"Condition": {
    				"StringEquals": {
    					"iam:PassedToService": "kafka.amazonaws.com"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:CreateServiceLinkedRole",
    			"Resource": "arn:aws:iam::*:role/aws-service-role/kafka.amazonaws.com/AWSServiceRoleForKafka*",
    			"Condition": {
    				"StringLike": {
    					"iam:AWSServiceName": "kafka.amazonaws.com"
    				}
    			}
    		},
    		{
    			"Effect": "Allow",
    			"Action": [
    				"iam:AttachRolePolicy",
    				"iam:PutRolePolicy"
    			],
    			"Resource": "arn:aws:iam::*:role/aws-service-role/kafka.amazonaws.com/AWSServiceRoleForKafka*"
    		},
    		{
    			"Effect": "Allow",
    			"Action": "iam:CreateServiceLinkedRole",
    			"Resource": "arn:aws:iam::*:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery*",
    			"Condition": {
    				"StringLike": {
    					"iam:AWSServiceName": "delivery.logs.amazonaws.com"
    				}
    			}
    		}

    	]
    }
```

------

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

Kebijakan ini memberikan izin hanya-baca yang memungkinkan pengguna melihat informasi di Amazon MSK. Prinsipal dengan kebijakan ini terlampir tidak dapat membuat pembaruan atau menghapus sumber daya yang keluar, juga tidak dapat membuat sumber daya MSK Amazon baru. Misalnya, prinsipal dengan izin ini dapat melihat daftar cluster dan konfigurasi yang terkait dengan akun mereka, tetapi tidak dapat mengubah konfigurasi atau pengaturan cluster apa pun. Izin dalam kebijakan ini dikelompokkan sebagai berikut:
+ **`Amazon MSK`izin** - memungkinkan Anda mencantumkan sumber daya MSK Amazon, menjelaskannya, dan mendapatkan informasi tentangnya.
+ **`Amazon EC2`izin** - digunakan untuk menggambarkan VPC Amazon, subnet, grup keamanan, ENIs dan yang terkait dengan kluster.
+ **`AWS KMS`izin** — digunakan untuk menggambarkan kunci yang terkait dengan cluster.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "kafka:Describe*",
                "kafka:List*",
                "kafka:Get*",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "kms:DescribeKey"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

# AWS kebijakan terkelola: KafkaServiceRolePolicy
<a name="security-iam-awsmanpol-KafkaServiceRolePolicy"></a>

Anda tidak dapat melampirkan KafkaServiceRolePolicy ke entitas IAM Anda. Kebijakan ini dilampirkan ke peran terkait layanan yang memungkinkan Amazon MSK melakukan tindakan seperti mengelola titik akhir (konektor) VPC pada kluster MSK, mengelola antarmuka jaringan, dan mengelola kredensyal klaster. AWS Secrets Manager Untuk informasi selengkapnya, lihat [Peran terkait layanan untuk Amazon MSK](using-service-linked-roles.md).

Tabel berikut menjelaskan pembaruan pada kebijakan KafkaServiceRolePolicy terkelola sejak Amazon MSK mulai melacak perubahan.


| Ubah | Deskripsi | Date | 
| --- | --- | --- | 
|  [IPv6 dukungan konektivitas ditambahkan ke KafkaServiceRolePolicy](#security-iam-awsmanpol-KafkaServiceRolePolicy) — Perbarui ke kebijakan yang ada  |  Amazon MSK menambahkan izin untuk mengaktifkan IPv6 konektivitas KafkaServiceRolePolicy untuk kluster MSK. Izin ini memungkinkan Amazon MSK untuk menetapkan dan membatalkan penetapan IPv6 alamat ke antarmuka jaringan dan memodifikasi atribut antarmuka jaringan di akun pelanggan.  | November 17, 2025 | 
|  [KafkaServiceRolePolicy](#security-iam-awsmanpol-KafkaServiceRolePolicy) – Pembaruan ke kebijakan yang ada  |  Amazon MSK menambahkan izin untuk mendukung konektivitas pribadi multi-VPC.  | 8 Maret 2023 | 
|  Amazon MSK mulai melacak perubahan  |  Amazon MSK mulai melacak perubahan untuk kebijakan KafkaServiceRolePolicy terkelola.  | 8 Maret 2023 | 

# AWS kebijakan terkelola: AWSMSKReplicator ExecutionRole
<a name="security-iam-awsmanpol-AWSMSKReplicatorExecutionRole"></a>

`AWSMSKReplicatorExecutionRole`Kebijakan ini memberikan izin kepada replikator MSK Amazon untuk mereplikasi data antar kluster MSK. Izin dalam kebijakan ini dikelompokkan sebagai berikut:
+ **`cluster`**— Memberikan izin Amazon MSK Replicator untuk terhubung ke cluster menggunakan otentikasi IAM. Juga memberikan izin untuk mendeskripsikan dan mengubah cluster.
+ **`topic`**— Memberikan izin Amazon MSK Replicator untuk mendeskripsikan, membuat, dan mengubah topik, dan untuk mengubah konfigurasi dinamis topik.
+ **`consumer group`**— Memberikan izin Amazon MSK Replicator untuk mendeskripsikan dan mengubah grup konsumen, membaca dan menulis tanggal dari kluster MSK, dan untuk menghapus topik internal yang dibuat oleh replikator.

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "ClusterPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:Connect",
				"kafka-cluster:DescribeCluster",
				"kafka-cluster:AlterCluster",
				"kafka-cluster:DescribeTopic",
				"kafka-cluster:CreateTopic",
				"kafka-cluster:AlterTopic",
				"kafka-cluster:WriteData",
				"kafka-cluster:ReadData",
				"kafka-cluster:AlterGroup",
				"kafka-cluster:DescribeGroup",
				"kafka-cluster:DescribeTopicDynamicConfiguration",
				"kafka-cluster:AlterTopicDynamicConfiguration",
				"kafka-cluster:WriteDataIdempotently"
			],
			"Resource": [
				"arn:aws:kafka:*:*:cluster/*"
			]
		},
		{
			"Sid": "TopicPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:DescribeTopic",
				"kafka-cluster:CreateTopic",
				"kafka-cluster:AlterTopic",
				"kafka-cluster:WriteData",
				"kafka-cluster:ReadData",
				"kafka-cluster:DescribeTopicDynamicConfiguration",
				"kafka-cluster:AlterTopicDynamicConfiguration",
				"kafka-cluster:AlterCluster"
			],
			"Resource": [
				"arn:aws:kafka:*:*:topic/*/*"
			]
		},
		{
			"Sid": "GroupPermissions",
			"Effect": "Allow",
			"Action": [
				"kafka-cluster:AlterGroup",
				"kafka-cluster:DescribeGroup"
			],
			"Resource": [
				"arn:aws:kafka:*:*:group/*/*"
			]
		}
	]
}
```

------

# Amazon MSK memperbarui kebijakan AWS terkelola
<a name="security-iam-awsmanpol-updates"></a>

Lihat detail tentang pembaruan kebijakan AWS terkelola untuk Amazon MSK sejak layanan ini mulai melacak perubahan ini.


| Ubah | Deskripsi | Date | 
| --- | --- | --- | 
|  [WriteDataIdempotently izin ditambahkan ke AWSMSKReplicator ExecutionRole](security-iam-awsmanpol-AWSMSKReplicatorExecutionRole.md) - Perbarui ke kebijakan yang ada  |  Amazon MSK menambahkan WriteDataIdempotently izin ke AWSMSKReplicator ExecutionRole kebijakan untuk mendukung replikasi data antara kluster MSK.  | Maret 12, 2024 | 
|  [AWSMSKReplicatorExecutionRole](security-iam-awsmanpol-AWSMSKReplicatorExecutionRole.md) – Kebijakan baru  |  Amazon MSK menambahkan AWSMSKReplicator ExecutionRole kebijakan untuk mendukung Amazon MSK Replicator.  | Desember 4, 2023 | 
|  [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md) - Perbarui ke kebijakan yang ada  |  Amazon MSK menambahkan izin untuk mendukung Amazon MSK Replicator.  | 28 September 2023 | 
|  [KafkaServiceRolePolicy](security-iam-awsmanpol-KafkaServiceRolePolicy.md) – Pembaruan ke kebijakan yang ada  |  Amazon MSK menambahkan izin untuk mendukung konektivitas pribadi multi-VPC.  | 8 Maret 2023 | 
| [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md) - Perbarui ke kebijakan yang ada |  Amazon MSK menambahkan izin Amazon EC2 baru untuk memungkinkan untuk terhubung ke cluster.  | 30 November 2021 | 
|  [Amazon MSKFull Access](security-iam-awsmanpol-AmazonMSKFullAccess.md) - Perbarui ke kebijakan yang ada  |  Amazon MSK menambahkan izin baru untuk memungkinkannya menggambarkan tabel rute Amazon EC2.  | November 19, 2021 | 
|  Amazon MSK mulai melacak perubahan  |  Amazon MSK mulai melacak perubahan untuk kebijakan yang AWS dikelola.  | November 19, 2021 | 

# Memecahkan masalah identitas dan akses MSK Amazon
<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 MSK dan IAM.

**Topics**
+ [Saya tidak berwenang untuk melakukan tindakan di Amazon MSK](#security_iam_troubleshoot-no-permissions)

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

Jika Konsol Manajemen AWS memberitahu Anda bahwa Anda tidak berwenang untuk melakukan tindakan, maka Anda harus menghubungi administrator Anda untuk bantuan. Administrator Anda adalah orang yang memberi Anda kredensial masuk.

Contoh kesalahan berikut terjadi ketika pengguna `mateojackson` IAM mencoba menggunakan konsol untuk menghapus cluster tetapi tidak memiliki `kafka:DeleteCluster` izin.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: kafka:DeleteCluster on resource: purchaseQueriesCluster
```

Dalam hal ini, Mateo meminta administratornya untuk memperbarui kebijakannya untuk mengizinkan dia mengakses sumber daya `purchaseQueriesCluster` menggunakan tindakan `kafka:DeleteCluster`.

# Otentikasi dan otorisasi untuk Apache Kafka APIs
<a name="kafka_apis_iam"></a>

Anda dapat menggunakan IAM untuk mengautentikasi klien dan mengizinkan atau menolak tindakan Apache Kafka. Atau, Anda dapat menggunakan TLS atau SASL/SCRAM untuk mengautentikasi klien, dan Apache Kafka ACLs untuk mengizinkan atau menolak tindakan.

Untuk informasi tentang cara mengontrol siapa yang dapat melakukan [operasi MSK Amazon](https://docs.aws.amazon.com/msk/1.0/apireference/operations.html) di klaster Anda, lihat[Otentikasi dan otorisasi untuk Amazon MSK APIs](security-iam.md).

**Topics**
+ [Kontrol akses IAM](iam-access-control.md)
+ [Otentikasi klien TLS timbal balik untuk Amazon MSK](msk-authentication.md)
+ [Otentikasi kredensyal masuk dengan Secrets Manager AWS](msk-password.md)
+ [Apache Kafka ACLs](msk-acls.md)

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

Kontrol akses IAM untuk Amazon MSK memungkinkan Anda menangani otentikasi dan otorisasi untuk klaster MSK Anda. Ini menghilangkan kebutuhan untuk menggunakan satu mekanisme untuk otentikasi dan satu lagi untuk otorisasi. Misalnya, ketika klien mencoba menulis ke klaster Anda, Amazon MSK menggunakan IAM untuk memeriksa apakah klien tersebut adalah identitas yang diautentikasi dan juga apakah itu berwenang untuk diproduksi ke cluster Anda.

Kontrol akses IAM berfungsi untuk klien Java dan non-Java, termasuk klien Kafka yang ditulis dengan Python, Go, dan .NET. JavaScript Kontrol akses IAM untuk klien non-Java tersedia untuk kluster MSK dengan Kafka versi 2.7.1 atau lebih tinggi.

Untuk memungkinkan kontrol akses IAM, Amazon MSK membuat modifikasi kecil pada kode sumber Apache Kafka. Modifikasi ini tidak akan menyebabkan perbedaan nyata dalam pengalaman Apache Kafka Anda. Amazon MSK mencatat peristiwa akses sehingga Anda dapat mengaudit mereka.

Anda dapat memanggil Apache Kafka ACL APIs untuk cluster MSK yang menggunakan kontrol akses IAM. Namun, Apache Kafka tidak ACLs berpengaruh pada otorisasi untuk identitas IAM. Anda harus menggunakan kebijakan IAM untuk mengontrol akses identitas IAM.

**Pertimbangan penting**  
Saat Anda menggunakan kontrol akses IAM dengan kluster MSK Anda, ingatlah pertimbangan penting berikut:  
Kontrol akses IAM tidak berlaku untuk node Apache ZooKeeper . Untuk informasi tentang bagaimana Anda dapat mengontrol akses ke node tersebut, lihat[Kontrol akses ke ZooKeeper node Apache di kluster MSK Amazon Anda](zookeeper-security.md).
Pengaturan `allow.everyone.if.no.acl.found` Apache Kafka tidak berpengaruh jika cluster Anda menggunakan kontrol akses IAM. 
Anda dapat memanggil Apache Kafka ACL APIs untuk cluster MSK yang menggunakan kontrol akses IAM. Namun, Apache Kafka tidak ACLs berpengaruh pada otorisasi untuk identitas IAM. Anda harus menggunakan kebijakan IAM untuk mengontrol akses identitas IAM.

# Cara kerja kontrol akses IAM untuk Amazon MSK
<a name="how-to-use-iam-access-control"></a>

Untuk menggunakan kontrol akses IAM untuk Amazon MSK, lakukan langkah-langkah berikut, yang dijelaskan secara rinci dalam topik ini:
+ [Buat kluster MSK Amazon yang menggunakan kontrol akses IAM](create-iam-access-control-cluster-in-console.md) 
+ [Konfigurasikan klien untuk kontrol akses IAM](configure-clients-for-iam-access-control.md)
+ [Buat kebijakan otorisasi untuk peran IAM](create-iam-access-control-policies.md)
+ [Dapatkan broker bootstrap untuk kontrol akses IAM](get-bootstrap-brokers-for-iam.md)

# Buat kluster MSK Amazon yang menggunakan kontrol akses IAM
<a name="create-iam-access-control-cluster-in-console"></a>

Bagian ini menjelaskan bagaimana Anda dapat menggunakan Konsol Manajemen AWS, API, atau AWS CLI untuk membuat klaster MSK Amazon yang menggunakan kontrol akses IAM. Untuk informasi tentang cara mengaktifkan kontrol akses IAM untuk klaster yang ada, lihat[Perbarui pengaturan keamanan kluster MSK Amazon](msk-update-security.md).

**Gunakan Konsol Manajemen AWS untuk membuat cluster yang menggunakan kontrol akses IAM**

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

1. Pilih **Buat klaster**.

1. Pilih **Buat cluster dengan pengaturan khusus**.

1. Di bagian **Otentikasi**, pilih kontrol **akses IAM**.

1. Selesaikan sisa alur kerja untuk membuat cluster.

**Menggunakan API atau AWS CLI untuk membuat klaster yang menggunakan kontrol akses IAM**
+ Untuk membuat cluster dengan kontrol akses IAM diaktifkan, gunakan [CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster)API atau perintah CLI [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/create-cluster.html), dan teruskan JSON berikut untuk parameter:. `ClientAuthentication` `"ClientAuthentication": { "Sasl": { "Iam": { "Enabled": true } }` 

# Konfigurasikan klien untuk kontrol akses IAM
<a name="configure-clients-for-iam-access-control"></a>

Untuk memungkinkan klien berkomunikasi dengan kluster MSK yang menggunakan kontrol akses IAM, Anda dapat menggunakan salah satu dari mekanisme ini:
+ Konfigurasi klien non-Java menggunakan mekanisme SASL\$1OAUTHBEARER
+ Konfigurasi klien Java menggunakan SASL\$1OAUTHBEARER mekanisme atau AWS\$1MSK\$1IAM mekanisme

## Gunakan SASL\$1OAUTHBEARER mekanisme untuk mengkonfigurasi IAM
<a name="configure-clients-for-iam-access-control-sasl-oauthbearer"></a>

1. Edit file konfigurasi client.properties Anda menggunakan contoh klien Python Kafka berikut. Perubahan konfigurasi serupa dalam bahasa lain.

   ```
   from kafka import KafkaProducer
   from kafka.errors import KafkaError
   from kafka.sasl.oauth import AbstractTokenProvider
   import socket
   import time
   from aws_msk_iam_sasl_signer import MSKAuthTokenProvider
   
   class MSKTokenProvider():
       def token(self):
           token, _ = MSKAuthTokenProvider.generate_auth_token('<my Wilayah AWS>')
           return token
   
   tp = MSKTokenProvider()
   
   producer = KafkaProducer(
       bootstrap_servers='<myBootstrapString>',
       security_protocol='SASL_SSL',
       sasl_mechanism='OAUTHBEARER',
       sasl_oauth_token_provider=tp,
       client_id=socket.gethostname(),
   )
   
   topic = "<my-topic>"
   while True:
       try:
           inp=input(">")
           producer.send(topic, inp.encode())
           producer.flush()
           print("Produced!")
       except Exception:
           print("Failed to send message:", e)
   
   producer.close()
   ```

1. Unduh pustaka pembantu untuk bahasa konfigurasi yang Anda pilih dan ikuti petunjuk di bagian *Memulai* di beranda perpustakaan bahasa tersebut.
   + JavaScript: [https://github.com/aws/aws-msk-iam-sasl-signer-js \$1getting -dimulai](https://github.com/aws/aws-msk-iam-sasl-signer-js#getting-started)
   + Python: [https://github.com/aws/aws-msk-iam-sasl-signer-python \$1get -dimulai](https://github.com/aws/aws-msk-iam-sasl-signer-python#get-started)
   + Go: [https://github.com/aws/aws-msk-iam-sasl-signer-go](https://github.com/aws/aws-msk-iam-sasl-signer-go#getting-started) \$1getting -started
   + .NET: [https://github.com/aws/aws-msk-iam-sasl-signer-net](https://github.com/aws/aws-msk-iam-sasl-signer-net#getting-started) \$1getting -dimulai
   + JAVA: SASL\$1OAUTHBEARER dukungan untuk Java tersedia melalui file [https://github.com/aws/aws-msk-iam-auth/releases](https://github.com/aws/aws-msk-iam-auth/releases)jar

## Gunakan AWS\$1MSK\$1IAM mekanisme kustom MSK untuk mengkonfigurasi IAM
<a name="configure-clients-for-iam-access-control-msk-iam"></a>

1. Tambahkan yang berikut ini ke `client.properties` file. Ganti *<PATH\$1TO\$1TRUST\$1STORE\$1FILE>* dengan jalur yang sepenuhnya memenuhi syarat ke file trust store pada klien.
**catatan**  
Jika Anda tidak ingin menggunakan sertifikat tertentu, Anda dapat menghapus `ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>` dari `client.properties` file Anda. Bila Anda tidak menentukan nilai untuk`ssl.truststore.location`, proses Java menggunakan sertifikat default.

   ```
   ssl.truststore.location=<PATH_TO_TRUST_STORE_FILE>
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
   sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
   ```

   Untuk menggunakan profil bernama yang Anda buat untuk AWS kredensyal, sertakan `awsProfileName="your profile name";` dalam file konfigurasi klien Anda. Untuk informasi tentang profil bernama, lihat [Profil bernama](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) dalam AWS CLI dokumentasi.

1. Unduh file [aws-msk-iam-auth](https://github.com/aws/aws-msk-iam-auth/releases)JAR stabil terbaru, dan letakkan di jalur kelas. Jika Anda menggunakan Maven, tambahkan dependensi berikut, sesuaikan nomor versi sesuai kebutuhan:

   ```
   <dependency>
       <groupId>software.amazon.msk</groupId>
       <artifactId>aws-msk-iam-auth</artifactId>
       <version>1.0.0</version>
   </dependency>
   ```

Plugin klien MSK Amazon bersumber terbuka di bawah lisensi Apache 2.0.

# Buat kebijakan otorisasi untuk peran IAM
<a name="create-iam-access-control-policies"></a>

Lampirkan kebijakan otorisasi ke peran IAM yang sesuai dengan klien. Dalam kebijakan otorisasi, Anda menentukan tindakan mana yang akan diizinkan atau ditolak untuk peran tersebut. Jika klien Anda menggunakan instans Amazon EC2, kaitkan kebijakan otorisasi dengan peran IAM untuk instans Amazon EC2 tersebut. Atau, Anda dapat mengonfigurasi klien Anda untuk menggunakan profil bernama, dan kemudian Anda mengaitkan kebijakan otorisasi dengan peran untuk profil bernama tersebut. [Konfigurasikan klien untuk kontrol akses IAM](configure-clients-for-iam-access-control.md)menjelaskan cara mengkonfigurasi klien untuk menggunakan profil bernama.

Untuk informasi tentang cara membuat kebijakan IAM, lihat [Membuat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html). 

Berikut ini adalah contoh kebijakan otorisasi untuk cluster bernama MyTestCluster. Untuk memahami semantik `Action` dan `Resource` elemen, lihat. [Semantik tindakan dan sumber daya kebijakan otorisasi IAM](kafka-actions.md)

**penting**  
Perubahan yang Anda buat pada kebijakan IAM tercermin dalam IAM APIs dan segera. AWS CLI Namun, perlu waktu yang nyata agar perubahan kebijakan berlaku. Dalam kebanyakan kasus, perubahan kebijakan berlaku dalam waktu kurang dari satu menit. Kondisi jaringan terkadang dapat meningkatkan penundaan.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:111122223333:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:AlterGroup",
                "kafka-cluster:DescribeGroup"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:group/MyTestCluster/*"
            ]
        }
    ]
}
```

------

Untuk mempelajari cara membuat kebijakan dengan elemen tindakan yang sesuai dengan kasus penggunaan Apache Kafka yang umum, seperti memproduksi dan mengkonsumsi data, lihat. [Kasus penggunaan umum untuk kebijakan otorisasi klien](iam-access-control-use-cases.md)

[Untuk Kafka versi 2.8.0 dan di atasnya, **WriteDataIdempotently**izin tidak digunakan lagi (KIP-679).](https://cwiki.apache.org/confluence/display/KAFKA/KIP-679%3A+Producer+will+enable+the+strongest+delivery+guarantee+by+default) Secara default, `enable.idempotence = true` diatur. Oleh karena itu, untuk Kafka versi 2.8.0 ke atas, IAM tidak menawarkan fungsionalitas yang sama dengan Kafka. ACLs Tidak mungkin `WriteDataIdempotently` untuk topik dengan hanya menyediakan `WriteData` akses ke topik itu. Ini tidak mempengaruhi kasus ketika `WriteData` disediakan untuk **SEMUA** topik. Dalam hal ini, `WriteDataIdempotently` diperbolehkan. Hal ini disebabkan perbedaan dalam implementasi logika IAM dan bagaimana Kafka ACLs diimplementasikan. Selain itu, menulis ke topik idempotently juga membutuhkan akses ke. `transactional-ids`

Untuk mengatasi hal ini, sebaiknya gunakan kebijakan yang serupa dengan kebijakan berikut.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:Connect",
                "kafka-cluster:AlterCluster",
                "kafka-cluster:DescribeCluster",
                "kafka-cluster:WriteDataIdempotently"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:cluster/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kafka-cluster:*Topic*",
                "kafka-cluster:WriteData",
                "kafka-cluster:ReadData"
            ],
            "Resource": [
                "arn:aws:kafka:us-east-1:123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/TestTopic",
                "arn:aws:kafka:us-east-1:123456789012:transactional-id/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*"
            ]
        }
    ]
}
```

------

Dalam hal ini, `WriteData` memungkinkan menulis ke`TestTopic`, sementara `WriteDataIdempotently` memungkinkan penulisan idempoten ke cluster. Kebijakan ini juga menambahkan akses ke `transactional-id` sumber daya yang akan dibutuhkan.

Karena `WriteDataIdempotently` merupakan izin tingkat cluster, Anda tidak dapat menggunakannya di tingkat topik. Jika `WriteDataIdempotently` dibatasi pada tingkat topik, kebijakan ini tidak akan berfungsi.

# Dapatkan broker bootstrap untuk kontrol akses IAM
<a name="get-bootstrap-brokers-for-iam"></a>

Lihat [Dapatkan broker bootstrap untuk cluster MSK Amazon](msk-get-bootstrap-brokers.md).

# Semantik tindakan dan sumber daya kebijakan otorisasi IAM
<a name="kafka-actions"></a>

**catatan**  
Untuk cluster yang menjalankan Apache Kafka versi 3.8 atau yang lebih baru, kontrol akses IAM mendukung API untuk mengakhiri transaksi. WriteTxnMarkers Untuk cluster yang menjalankan versi Kafka lebih awal dari 3.8, kontrol akses IAM tidak mendukung tindakan klaster internal termasuk. WriteTxnMarkers Untuk versi sebelumnya, untuk mengakhiri transaksi, gunakan otentikasi SCRAM atau mTLS dengan tepat, ACLs bukan autentikasi IAM.

Bagian ini menjelaskan semantik elemen tindakan dan sumber daya yang dapat Anda gunakan dalam kebijakan otorisasi IAM. Untuk contoh kebijakan, lihat [Buat kebijakan otorisasi untuk peran IAM](create-iam-access-control-policies.md).

## Tindakan kebijakan otorisasi
<a name="actions"></a>

Tabel berikut mencantumkan tindakan yang dapat Anda sertakan dalam kebijakan otorisasi saat Anda menggunakan kontrol akses IAM untuk Amazon MSK. Bila Anda menyertakan dalam kebijakan otorisasi tindakan dari kolom *Tindakan* tabel, Anda juga harus menyertakan tindakan terkait dari kolom *Tindakan yang diperlukan*. 


| Tindakan | Deskripsi | Tindakan yang diperlukan | Sumber daya yang dibutuhkan | Berlaku untuk cluster tanpa server | 
| --- | --- | --- | --- | --- | 
| kafka-cluster:Connect | Memberikan izin untuk menghubungkan dan mengautentikasi ke cluster. | Tidak ada | cluster | Ya | 
| kafka-cluster:DescribeCluster | Memberikan izin untuk mendeskripsikan berbagai aspek cluster, setara dengan DESCRIPTION CLUSTER ACL Apache Kafka. |  `kafka-cluster:Connect`  | cluster | Ya | 
| kafka-cluster:AlterCluster | Memberikan izin untuk mengubah berbagai aspek cluster, setara dengan ALTER CLUSTER ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeCluster`  | klaster | Tidak | 
| kafka-cluster:DescribeClusterDynamicConfiguration | Memberikan izin untuk mendeskripsikan konfigurasi dinamis cluster, setara dengan APache Kafka DESCRIBE\$1CONFIGS CLUSTER ACL. |  `kafka-cluster:Connect`  | klaster | Tidak | 
| kafka-cluster:AlterClusterDynamicConfiguration | Memberikan izin untuk mengubah konfigurasi dinamis cluster, setara dengan ALTER\$1CONFIGS CLUSTER ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | klaster | Tidak | 
| kafka-cluster:WriteDataIdempotently | Memberikan izin untuk menulis data idempotently pada cluster, setara dengan Apache Kafka IDEMPOTENT\$1WRITE CLUSTER ACL. |  `kafka-cluster:Connect` `kafka-cluster:WriteData`  | cluster | Ya | 
| kafka-cluster:CreateTopic | Memberikan izin untuk membuat topik di cluster, setara dengan CREATE ACL Apache Kafka. CLUSTER/TOPIC  |  `kafka-cluster:Connect`  | topik | Ya | 
| kafka-cluster:DescribeTopic | Memberikan izin untuk mendeskripsikan topik di cluster, setara dengan APache Kafka's DESCRIPTE TOPIC ACL. |  `kafka-cluster:Connect`  | topik | Ya | 
| kafka-cluster:AlterTopic | Memberikan izin untuk mengubah topik di klaster, setara dengan ALTER TOPIC ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | topik | Ya | 
| kafka-cluster:DeleteTopic | Memberikan izin untuk menghapus topik di klaster, setara dengan DELETE TOPIC ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | topik | Ya | 
| kafka-cluster:DescribeTopicDynamicConfiguration | Memberikan izin untuk mendeskripsikan konfigurasi dinamis topik pada klaster, setara dengan DESCRIBE\$1CONFIGS TOPIC ACL Apache Kafka. |  `kafka-cluster:Connect`  | topik | Ya | 
| kafka-cluster:AlterTopicDynamicConfiguration | Memberikan izin untuk mengubah konfigurasi dinamis topik pada klaster, setara dengan ALTER\$1CONFIGS TOPIC ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration`  | topik | Ya | 
| kafka-cluster:ReadData | Memberikan izin untuk membaca data dari topik di cluster, setara dengan READ TOPIC ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterGroup`  | topik | Ya | 
| kafka-cluster:WriteData | Memberikan izin untuk menulis data ke topik di cluster, setara dengan WRITE TOPIC ACL Apache Kafka |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic`  | topik | Ya | 
| kafka-cluster:DescribeGroup | Memberikan izin untuk mendeskripsikan grup pada sebuah cluster, setara dengan Apache Kafka's DESCRIPTE GROUP ACL. |  `kafka-cluster:Connect`  | grup | Ya | 
| kafka-cluster:AlterGroup | Memberikan izin untuk bergabung dengan grup di cluster, setara dengan READ GROUP ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | grup | Ya | 
| kafka-cluster:DeleteGroup | Memberikan izin untuk menghapus grup di cluster, setara dengan DELETE GROUP ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeGroup`  | grup | Ya | 
| kafka-cluster:DescribeTransactionalId | Memberikan izin untuk mendeskripsikan transaksional IDs pada klaster, setara dengan DESCRIBE TRANSACTIONAL\$1ID ACL Apache Kafka. |  `kafka-cluster:Connect`  | transaksional-id | Ya | 
| kafka-cluster:AlterTransactionalId | Memberikan izin untuk mengubah transaksional IDs pada cluster, setara dengan WRITE TRANSACTIONAL\$1ID ACL Apache Kafka. |  `kafka-cluster:Connect` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:WriteData`  | transaksional-id | Ya | 

Anda dapat menggunakan wildcard asterisk (\$1) beberapa kali dalam tindakan setelah titik dua. Berikut ini adalah beberapa contohnya.
+ `kafka-cluster:*Topic`singkatan dari`kafka-cluster:CreateTopic`,`kafka-cluster:DescribeTopic`,`kafka-cluster:AlterTopic`, dan`kafka-cluster:DeleteTopic`. Itu tidak termasuk `kafka-cluster:DescribeTopicDynamicConfiguration` atau`kafka-cluster:AlterTopicDynamicConfiguration`.
+ `kafka-cluster:*`singkatan dari semua izin.

## Sumber daya kebijakan otorisasi
<a name="msk-iam-resources"></a>

Tabel berikut menunjukkan empat jenis sumber daya yang dapat Anda gunakan dalam kebijakan otorisasi saat Anda menggunakan kontrol akses IAM untuk Amazon MSK. Anda bisa mendapatkan klaster Amazon Resource Name (ARN) dari Konsol Manajemen AWS atau dengan menggunakan [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API atau perintah [AWS CLI describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html). Anda kemudian dapat menggunakan ARN cluster untuk membangun topik, grup, dan ID transaksional. ARNs Untuk menentukan sumber daya dalam kebijakan otorisasi, gunakan ARN sumber daya tersebut.


| Sumber daya | Format ARN | 
| --- | --- | 
| Kluster | arn:aws:kafka: ::cluster//regionaccount-idcluster-namecluster-uuid | 
| Topik | arn:aws:kafka: ::topik///regionaccount-idcluster-namecluster-uuidtopic-name | 
| Kelompok | arn:aws:kafka: ::grup///regionaccount-idcluster-namecluster-uuidgroup-name | 
| ID Transaksional | arn:aws:kafka: ::transactional-id//regionaccount-idcluster-namecluster-uuidtransactional-id | 

Anda dapat menggunakan wildcard asterisk (\$1) beberapa kali di mana saja di bagian ARN yang muncul setelah`:cluster/`,,, `:topic/` dan. `:group/` `:transactional-id/` Berikut ini adalah beberapa contoh bagaimana Anda dapat menggunakan wildcard asterisk (\$1) untuk merujuk ke beberapa sumber daya:
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/*`: semua topik di cluster mana pun bernama MyTestCluster, terlepas dari UUID cluster.
+ `arn:aws:kafka:us-east-1:0123456789012:topic/MyTestCluster/abcd1234-0123-abcd-5678-1234abcd-1/*_test`: semua topik yang namanya diakhiri dengan “\$1test” di cluster yang namanya MyTestCluster dan UUIDnya abcd1234-0123-abcd-5678-1234abcd-1.
+ `arn:aws:kafka:us-east-1:0123456789012:transactional-id/MyTestCluster/*/5555abcd-1111-abcd-1234-abcd1234-1`: semua transaksi yang ID transaksionalnya adalah 5555abcd-1111-abcd-1234-abcd1234-1, di semua inkarnasi klaster yang disebutkan di akun Anda. MyTestCluster Ini berarti bahwa jika Anda membuat klaster bernama MyTestCluster, lalu menghapusnya, dan kemudian membuat cluster lain dengan nama yang sama, Anda dapat menggunakan ARN sumber daya ini untuk mewakili ID transaksi yang sama pada kedua cluster. Namun, cluster yang dihapus tidak dapat diakses.

# Kasus penggunaan umum untuk kebijakan otorisasi klien
<a name="iam-access-control-use-cases"></a>

Kolom pertama dalam tabel berikut menunjukkan beberapa kasus penggunaan umum. Untuk mengotorisasi klien untuk melaksanakan kasus penggunaan tertentu, sertakan tindakan yang diperlukan untuk kasus penggunaan tersebut dalam kebijakan otorisasi klien, dan atur `Effect` ke. `Allow`

Untuk informasi tentang semua tindakan yang merupakan bagian dari kontrol akses IAM untuk Amazon MSK, lihat. [Semantik tindakan dan sumber daya kebijakan otorisasi IAM](kafka-actions.md)

**catatan**  
Tindakan ditolak secara default. Anda harus secara eksplisit mengizinkan setiap tindakan yang ingin Anda berikan otorisasi kepada klien untuk dilakukan.


****  

| Kasus penggunaan | Tindakan yang diperlukan | 
| --- | --- | 
| Admin |  `kafka-cluster:*`  | 
| Buat topik |  `kafka-cluster:Connect` `kafka-cluster:CreateTopic`  | 
| Menghasilkan data |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData`  | 
| Konsumsi data |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:DescribeGroup` `kafka-cluster:AlterGroup` `kafka-cluster:ReadData`  | 
| Menghasilkan data secara idempotently |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:WriteDataIdempotently`  | 
| Menghasilkan data secara transaksional |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:WriteData` `kafka-cluster:DescribeTransactionalId` `kafka-cluster:AlterTransactionalId`  | 
| Jelaskan konfigurasi cluster |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration`  | 
| Perbarui konfigurasi cluster |  `kafka-cluster:Connect` `kafka-cluster:DescribeClusterDynamicConfiguration` `kafka-cluster:AlterClusterDynamicConfiguration`  | 
| Jelaskan konfigurasi suatu topik |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` | 
| Perbarui konfigurasi topik |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopicDynamicConfiguration` `kafka-cluster:AlterTopicDynamicConfiguration`  | 
| Mengubah topik |  `kafka-cluster:Connect` `kafka-cluster:DescribeTopic` `kafka-cluster:AlterTopic`  | 

# Otentikasi klien TLS timbal balik untuk Amazon MSK
<a name="msk-authentication"></a>

Anda dapat mengaktifkan otentikasi klien dengan TLS untuk koneksi dari aplikasi Anda ke broker MSK Amazon Anda. Untuk menggunakan otentikasi klien, Anda memerlukan file AWS Private CA. AWS Private CA Bisa sama dengan cluster Anda Akun AWS , atau di akun yang berbeda. Untuk informasi tentang AWS Private CA s, lihat [Membuat dan Mengelola a AWS Private CA](https://docs.aws.amazon.com/acm-pca/latest/userguide/create-CA.html).

Amazon MSK tidak mendukung daftar pencabutan sertifikat (). CRLs Untuk mengontrol akses ke topik klaster Anda atau memblokir sertifikat yang disusupi, gunakan Apache Kafka ACLs dan AWS grup keamanan. Untuk informasi tentang menggunakan Apache Kafka ACLs, lihat. [Apache Kafka ACLs](msk-acls.md)

**Topics**
+ [Buat kluster MSK Amazon yang mendukung otentikasi klien](msk-authentication-cluster.md)
+ [Siapkan klien untuk menggunakan otentikasi](msk-authentication-client.md)
+ [Menghasilkan dan mengkonsumsi pesan menggunakan otentikasi](msk-authentication-messages.md)

# Buat kluster MSK Amazon yang mendukung otentikasi klien
<a name="msk-authentication-cluster"></a>

Prosedur ini menunjukkan kepada Anda cara mengaktifkan otentikasi klien menggunakan file. AWS Private CA
**catatan**  
Kami sangat merekomendasikan penggunaan independen AWS Private CA untuk setiap cluster MSK ketika Anda menggunakan TLS timbal balik untuk mengontrol akses. Melakukannya akan memastikan bahwa sertifikat TLS yang ditandatangani PCAs hanya dengan mengautentikasi dengan satu kluster MSK.

1. Buat file bernama `clientauthinfo.json` dengan isi berikut ini. Ganti *Private-CA-ARN* dengan ARN PCA Anda.

   ```
   {
      "Tls": {
          "CertificateAuthorityArnList": ["Private-CA-ARN"]
       }
   }
   ```

1. Buat file bernama `brokernodegroupinfo.json` seperti yang dijelaskan dalam[Buat klaster MSK Amazon yang disediakan menggunakan AWS CLI](create-cluster-cli.md).

1. Otentikasi klien mengharuskan Anda juga mengaktifkan enkripsi dalam perjalanan antara klien dan broker. Buat file bernama `encryptioninfo.json` dengan isi berikut ini. Ganti *KMS-Key-ARN* dengan ARN kunci KMS Anda. Anda dapat mengatur `ClientBroker` ke `TLS` atau`TLS_PLAINTEXT`.

   ```
   {
      "EncryptionAtRest": {
          "DataVolumeKMSKeyId": "KMS-Key-ARN"
       },
      "EncryptionInTransit": {
           "InCluster": true,
           "ClientBroker": "TLS"
       }
   }
   ```

   Untuk informasi selengkapnya tentang enkripsi, lihat[Enkripsi Amazon MSK](msk-encryption.md).

1. Pada mesin tempat Anda AWS CLI menginstal, jalankan perintah berikut untuk membuat cluster dengan otentikasi dan enkripsi dalam transit diaktifkan. Simpan ARN cluster yang disediakan dalam tanggapan.

   ```
   aws kafka create-cluster --cluster-name "AuthenticationTest" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --client-authentication file://clientauthinfo.json --kafka-version "{YOUR KAFKA VERSION}" --number-of-broker-nodes 3
   ```

# Siapkan klien untuk menggunakan otentikasi
<a name="msk-authentication-client"></a>

Proses ini menjelaskan cara menyiapkan instans Amazon EC2 untuk digunakan sebagai klien untuk menggunakan otentikasi.

Proses ini menjelaskan cara menghasilkan dan menggunakan pesan menggunakan otentikasi dengan membuat mesin klien, membuat topik, dan mengonfigurasi pengaturan keamanan yang diperlukan.

1. Buat instans Amazon EC2 untuk digunakan sebagai mesin klien. Untuk mempermudah, buat instance ini di VPC yang sama yang Anda gunakan untuk cluster. Lihat [Langkah 3: Buat mesin klien](create-client-machine.md) contoh cara membuat mesin klien seperti itu.

1. Buat topik. Sebagai contoh, lihat instruksi di bawah[Langkah 4: Buat topik di cluster MSK Amazon](create-topic.md).

1. Pada mesin tempat Anda AWS CLI menginstal, jalankan perintah berikut untuk mendapatkan broker bootstrap dari cluster. Ganti *Cluster-ARN* dengan ARN cluster Anda.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN
   ```

   Simpan string yang terkait `BootstrapBrokerStringTls` dengan respons.

1. Pada mesin klien Anda, jalankan perintah berikut untuk menggunakan toko kepercayaan JVM untuk membuat toko kepercayaan klien Anda. Jika jalur JVM Anda berbeda, sesuaikan perintahnya.

   ```
   cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
   ```

1. Pada mesin klien Anda, jalankan perintah berikut untuk membuat kunci pribadi untuk klien Anda. Ganti *Distinguished-Name**Example-Alias*,*Your-Store-Pass*,, dan *Your-Key-Pass* dengan string pilihan Anda.

   ```
   keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12 -keyalg rsa
   ```

1. Pada mesin klien Anda, jalankan perintah berikut untuk membuat permintaan sertifikat dengan kunci pribadi yang Anda buat pada langkah sebelumnya.

   ```
   keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
   ```

1. Buka `client-cert-sign-request` file dan pastikan bahwa itu dimulai dengan `-----BEGIN CERTIFICATE REQUEST-----` dan diakhiri dengan`-----END CERTIFICATE REQUEST-----`. Jika dimulai dengan`-----BEGIN NEW CERTIFICATE REQUEST-----`, hapus kata `NEW` (dan spasi tunggal yang mengikutinya) dari awal dan akhir file.

1. Pada mesin tempat Anda AWS CLI menginstal, jalankan perintah berikut untuk menandatangani permintaan sertifikat Anda. Ganti *Private-CA-ARN* dengan ARN PCA Anda. Anda dapat mengubah nilai validitas jika Anda mau. Di sini kita menggunakan 300 sebagai contoh.

   ```
   aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"
   ```

   Simpan sertifikat ARN yang disediakan dalam tanggapan.
**catatan**  
Untuk mengambil sertifikat klien Anda, gunakan `acm-pca get-certificate` perintah dan tentukan ARN sertifikat Anda. Untuk informasi selengkapnya, lihat [mendapatkan sertifikat di Referensi AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm-pca/get-certificate.html) *Perintah*.

1. Jalankan perintah berikut untuk mendapatkan sertifikat yang AWS Private CA ditandatangani untuk Anda. Ganti *Certificate-ARN* dengan ARN yang Anda peroleh dari respons ke perintah sebelumnya.

   ```
   aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN
   ```

1. Dari hasil JSON menjalankan perintah sebelumnya, salin string yang terkait dengan `Certificate` dan. `CertificateChain` Tempel kedua string ini dalam file baru bernama signed-certificate-from-acm. Tempel string yang terkait dengan `Certificate` pertama, diikuti oleh string yang terkait dengan`CertificateChain`. Ganti `\n` karakter dengan baris baru. Berikut ini adalah struktur file setelah Anda menempelkan sertifikat dan rantai sertifikat di dalamnya.

   ```
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   -----BEGIN CERTIFICATE-----
   ...
   -----END CERTIFICATE-----
   ```

1. Jalankan perintah berikut pada mesin klien untuk menambahkan sertifikat ini ke keystore Anda sehingga Anda dapat mempresentasikannya ketika Anda berbicara dengan broker MSK.

   ```
   keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
   ```

1. Buat file bernama `client.properties` dengan isi berikut ini. Sesuaikan lokasi truststore dan keystore ke jalur tempat Anda menyimpan. `kafka.client.truststore.jks` Ganti versi klien Kafka Anda dengan *\$1YOUR KAFKA VERSION\$1* placeholder.

   ```
   security.protocol=SSL
   ssl.truststore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.truststore.jks
   ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.keystore.jks
   ssl.keystore.password=Your-Store-Pass
   ssl.key.password=Your-Key-Pass
   ```

# Menghasilkan dan mengkonsumsi pesan menggunakan otentikasi
<a name="msk-authentication-messages"></a>

Proses ini menjelaskan cara memproduksi dan mengkonsumsi pesan menggunakan otentikasi.

1. Jalankan perintah berikut untuk membuat topik. File bernama `client.properties` adalah yang Anda buat di prosedur sebelumnya.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBroker-String --replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties
   ```

1. Jalankan perintah berikut untuk memulai produser konsol. File bernama `client.properties` adalah yang Anda buat di prosedur sebelumnya.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --producer.config client.properties
   ```

1. Di jendela perintah baru di mesin klien Anda, jalankan perintah berikut untuk memulai konsumen konsol.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties
   ```

1. Ketik pesan di jendela produser dan saksikan mereka muncul di jendela konsumen.

# Otentikasi kredensyal masuk dengan Secrets Manager AWS
<a name="msk-password"></a>

Anda dapat mengontrol akses ke kluster MSK Amazon menggunakan kredensyal masuk yang disimpan dan diamankan menggunakan Secrets Manager. AWS Menyimpan kredensyal pengguna di Secrets Manager mengurangi overhead otentikasi klaster seperti mengaudit, memperbarui, dan memutar kredensyal. Secrets Manager juga memungkinkan Anda berbagi kredensyal pengguna di seluruh cluster.

Setelah Anda mengaitkan rahasia dengan kluster MSK, MSK menyinkronkan data kredensi secara berkala.

**Topics**
+ [Cara kerja autentikasi kredensyal masuk](msk-password-howitworks.md)
+ [Menyiapkan SASL/SCRAM otentikasi untuk kluster MSK Amazon](msk-password-tutorial.md)
+ [Bekerja dengan pengguna](msk-password-users.md)
+ [Keterbatasan saat menggunakan rahasia SCRAM](msk-password-limitations.md)

# Cara kerja autentikasi kredensyal masuk
<a name="msk-password-howitworks"></a>

Autentikasi kredensyal masuk untuk Amazon MSK SASL/SCRAM menggunakan otentikasi (Otentikasi Sederhana dan Lapisan Keamanan/Mekanisme Respons Tantangan Asin). Untuk menyiapkan autentikasi kredensyal masuk untuk klaster, Anda membuat sumber daya Rahasia di Secrets [Manager, dan mengaitkan kredensyal masuk dengan AWS rahasia](https://docs.aws.amazon.com//secretsmanager/?id=docs_gateway) tersebut. 

[SASL/SCRAM didefinisikan dalam RFC 5802.](https://tools.ietf.org/html/rfc5802) SCRAM menggunakan algoritma hashing aman, dan tidak mengirimkan kredensyal login plaintext antara klien dan server. 

**catatan**  
Saat Anda mengatur SASL/SCRAM otentikasi untuk klaster Anda, Amazon MSK mengaktifkan enkripsi TLS untuk semua lalu lintas antara klien dan broker.

# Menyiapkan SASL/SCRAM otentikasi untuk kluster MSK Amazon
<a name="msk-password-tutorial"></a>

Untuk mengatur AWS rahasia di Secrets Manager, ikuti tutorial [Membuat dan Mengambil Rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html) di [Panduan Pengguna AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).

Perhatikan persyaratan berikut saat membuat rahasia untuk cluster MSK Amazon:
+ Pilih **Jenis rahasia lainnya (misalnya kunci API)** untuk tipe rahasia.
+ Nama rahasia Anda harus dimulai dengan awalan **AmazonMSK\$1**.
+ Anda harus menggunakan AWS KMS kunci kustom yang ada atau membuat AWS KMS kunci khusus baru untuk rahasia Anda. Secrets Manager menggunakan AWS KMS kunci default untuk rahasia secara default. 
**penting**  
Rahasia yang dibuat dengan AWS KMS kunci default tidak dapat digunakan dengan kluster MSK Amazon.
+ **Data kredensi login Anda harus dalam format berikut untuk memasukkan pasangan nilai kunci menggunakan opsi Plaintext.**

  ```
  {
    "username": "alice",
    "password": "alice-secret"
  }
  ```
+ Catat nilai ARN (Amazon Resource Name) untuk rahasia Anda. 
+ 
**penting**  
Anda tidak dapat mengaitkan rahasia Secrets Manager dengan klaster yang melebihi batas yang dijelaskan dalam[Ukuran kluster Anda dengan benar: Jumlah partisi per pialang Standar](bestpractices.md#partitions-per-broker).
+ Jika Anda menggunakan AWS CLI untuk membuat rahasia, tentukan ID kunci atau ARN untuk parameter. `kms-key-id` Jangan tentukan alias.
+ Untuk mengaitkan rahasia dengan cluster Anda, gunakan konsol MSK Amazon, atau [ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operasinya. 
**penting**  
Saat Anda mengaitkan rahasia dengan klaster, Amazon MSK melampirkan kebijakan sumber daya ke rahasia yang memungkinkan klaster Anda mengakses dan membaca nilai rahasia yang Anda tetapkan. Anda tidak boleh mengubah kebijakan sumber daya ini. Melakukannya dapat mencegah cluster Anda mengakses rahasia Anda. Jika Anda membuat perubahan pada kebijakan sumber daya Rahasia dan/atau kunci KMS yang digunakan untuk enkripsi rahasia, pastikan Anda mengaitkan kembali rahasia ke kluster MSK Anda. Ini akan memastikan bahwa cluster Anda dapat terus mengakses rahasia Anda.

  Contoh input JSON berikut untuk `BatchAssociateScramSecret` operasi mengaitkan rahasia dengan cluster:

  ```
  {
    "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4",          
    "secretArnList": [
      "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret"
    ]
  }
  ```

# Menghubungkan ke klaster Anda dengan kredensyal masuk
<a name="msk-password-tutorial-connect"></a>

Setelah Anda membuat rahasia dan mengaitkannya dengan cluster Anda, Anda dapat menghubungkan klien Anda ke cluster. Prosedur berikut menunjukkan cara menghubungkan klien ke cluster yang menggunakan SASL/SCRAM otentikasi. Ini juga menunjukkan bagaimana memproduksi dan mengkonsumsi dari topik contoh.

**Topics**
+ [Menghubungkan klien ke cluster menggunakan SASL/SCRAM otentikasi](#w2aab9c13c29c17c13c11b9b7)
+ [Memecahkan masalah koneksi](#msk-password-tutorial-connect-troubleshooting)

## Menghubungkan klien ke cluster menggunakan SASL/SCRAM otentikasi
<a name="w2aab9c13c29c17c13c11b9b7"></a>

1. Jalankan perintah berikut pada mesin yang telah AWS CLI diinstal. Ganti *clusterARN* dengan ARN cluster Anda.

   ```
   aws kafka get-bootstrap-brokers --cluster-arn clusterARN
   ```

   Dari hasil JSON dari perintah ini, simpan nilai yang terkait dengan string bernama`BootstrapBrokerStringSaslScram`. Anda akan menggunakan nilai ini di langkah selanjutnya.

1. Di mesin klien Anda, buat file konfigurasi JAAS yang berisi kredensyal pengguna yang disimpan dalam rahasia Anda. Misalnya, untuk pengguna **alice**, buat file yang dipanggil `users_jaas.conf` dengan konten berikut.

   ```
   KafkaClient {
      org.apache.kafka.common.security.scram.ScramLoginModule required
      username="alice"
      password="alice-secret";
   };
   ```

1. Gunakan perintah berikut untuk mengekspor file konfigurasi JAAS Anda sebagai parameter `KAFKA_OPTS` lingkungan.

   ```
   export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf
   ```

1. Buat file bernama `kafka.client.truststore.jks` dalam `/tmp` direktori.

1. (Opsional) Gunakan perintah berikut untuk menyalin file penyimpanan kunci JDK dari `cacerts` folder JVM Anda ke `kafka.client.truststore.jks` file yang Anda buat pada langkah sebelumnya. Ganti *JDKFolder* dengan nama folder JDK pada instance Anda. Misalnya, folder JDK Anda mungkin diberi nama. `java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64`

   ```
   cp /usr/lib/jvm/JDKFolder/lib/security/cacerts /tmp/kafka.client.truststore.jks
   ```

1. Di `bin` direktori instalasi Apache Kafka Anda, buat file properti klien yang disebut `client_sasl.properties` dengan konten berikut. File ini mendefinisikan mekanisme dan protokol SASL.

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=SCRAM-SHA-512
   ```

1. Untuk membuat contoh topik, jalankan perintah berikut. Ganti *BootstrapBrokerStringSaslScram* dengan string broker bootstrap yang Anda peroleh di langkah 1 topik ini.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBrokerStringSaslScram --command-config <path-to-client-properties>/client_sasl.properties --replication-factor 3 --partitions 1 --topic ExampleTopicName
   ```

1. Untuk menghasilkan contoh topik yang Anda buat, jalankan perintah berikut di mesin klien Anda. Ganti *BootstrapBrokerStringSaslScram* dengan string broker bootstrap yang Anda ambil di langkah 1 topik ini.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
   ```

1. Untuk mengkonsumsi dari topik yang Anda buat, jalankan perintah berikut di mesin klien Anda. Ganti *BootstrapBrokerStringSaslScram* dengan string broker bootstrap yang Anda peroleh di langkah 1 topik ini.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties
   ```

## Memecahkan masalah koneksi
<a name="msk-password-tutorial-connect-troubleshooting"></a>

Saat menjalankan perintah klien Kafka, Anda mungkin mengalami kesalahan memori heap Java, terutama saat bekerja dengan topik atau kumpulan data besar. Kesalahan ini terjadi karena alat Kafka berjalan sebagai aplikasi Java dengan pengaturan memori default yang mungkin tidak cukup untuk beban kerja Anda.

Untuk mengatasi `Out of Memory Java Heap` kesalahan, Anda dapat meningkatkan ukuran heap Java dengan memodifikasi variabel `KAFKA_OPTS` lingkungan untuk menyertakan pengaturan memori.

Contoh berikut menetapkan ukuran heap maksimum untuk 1GB ()`-Xmx1G`. Anda dapat menyesuaikan nilai ini berdasarkan memori dan persyaratan sistem yang tersedia.

```
export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf -Xmx1G"
```

Untuk mengkonsumsi topik besar, pertimbangkan untuk menggunakan parameter berbasis waktu atau berbasis offset alih-alih membatasi penggunaan `--from-beginning` memori:

```
<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --max-messages 1000 --consumer.config client_sasl.properties
```

# Bekerja dengan pengguna
<a name="msk-password-users"></a>

**Membuat pengguna:** Anda membuat pengguna dalam rahasia Anda sebagai pasangan nilai kunci. Saat Anda menggunakan opsi **Plaintext** di konsol Secrets Manager, Anda harus menentukan data kredensi masuk dalam format berikut.

```
{
  "username": "alice",
  "password": "alice-secret"
}
```

**Mencabut akses pengguna:** Untuk mencabut kredensyal pengguna untuk mengakses kluster, sebaiknya Anda menghapus atau menerapkan ACL di klaster terlebih dahulu, lalu memisahkan rahasianya. Ini karena hal-hal berikut:
+ Menghapus pengguna tidak menutup koneksi yang ada.
+ Perubahan pada rahasia Anda membutuhkan waktu hingga 10 menit untuk disebarkan.

Untuk informasi tentang menggunakan ACL dengan Amazon MSK, lihat. [Apache Kafka ACLs](msk-acls.md)

Untuk cluster yang menggunakan ZooKeeper mode, kami menyarankan Anda membatasi akses ke ZooKeeper node Anda untuk mencegah pengguna memodifikasi. ACLs Untuk informasi selengkapnya, lihat [Kontrol akses ke ZooKeeper node Apache di kluster MSK Amazon Anda](zookeeper-security.md).

# Keterbatasan saat menggunakan rahasia SCRAM
<a name="msk-password-limitations"></a>

Perhatikan batasan berikut saat menggunakan rahasia SCRAM:
+ Amazon MSK hanya mendukung otentikasi SCRAM-SHA-512.
+ Cluster MSK Amazon dapat memiliki hingga 1000 pengguna.
+ Anda harus menggunakan sebuah AWS KMS key dengan Rahasia Anda. Anda tidak dapat menggunakan Rahasia yang menggunakan kunci enkripsi Secrets Manager default dengan Amazon MSK. Untuk informasi tentang membuat kunci KMS, lihat [Membuat kunci KMS enkripsi simetris](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk).
+ Anda tidak dapat menggunakan kunci KMS asimetris dengan Secrets Manager.
+ Anda dapat mengaitkan hingga 10 rahasia dengan cluster sekaligus menggunakan [ BatchAssociateScramSecret](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-scram-secrets.html#BatchAssociateScramSecret)operasi.
+ **Nama rahasia yang terkait dengan cluster MSK Amazon harus memiliki awalan AmazonMSK\$1.**
+ Rahasia yang terkait dengan kluster MSK Amazon harus berada di akun dan AWS wilayah Amazon Web Services yang sama dengan cluster.

# Apache Kafka ACLs
<a name="msk-acls"></a>

Apache Kafka memiliki otorisasi yang dapat dicolokkan dan dikirimkan dengan implementasi otorisasi. out-of-box Amazon MSK memungkinkan otorisasi ini dalam `server.properties` file di broker.

Apache Kafka ACLs memiliki format “Principal P adalah [Diizinkan/Ditolak] Operasi O Dari Host H pada Resource R apa pun yang cocok dengan RP”. ResourcePattern Jika RP tidak cocok dengan R sumber daya tertentu, maka R tidak terkait ACLs, dan oleh karena itu tidak ada orang lain selain pengguna super yang diizinkan mengakses R. Untuk mengubah perilaku Apache Kafka ini, Anda mengatur properti `allow.everyone.if.no.acl.found` ke true. Amazon MSK menetapkannya ke true secara default. Ini berarti bahwa dengan kluster MSK Amazon, jika Anda tidak secara eksplisit mengatur ACLs sumber daya, semua kepala sekolah dapat mengakses sumber daya ini. Jika Anda ACLs mengaktifkan sumber daya, hanya kepala sekolah yang berwenang yang dapat mengaksesnya. Jika Anda ingin membatasi akses ke topik dan mengotorisasi klien menggunakan otentikasi timbal balik TLS, tambahkan ACLs menggunakan Apache Kafka Authorizer CLI. Untuk informasi selengkapnya tentang menambahkan, menghapus, dan mencantumkan ACLs, lihat Antarmuka [Baris Perintah Otorisasi Kafka](https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Authorization+Command+Line+Interface).

Karena Amazon MSK mengonfigurasi broker sebagai pengguna super, mereka dapat mengakses semua topik. Ini membantu broker untuk mereplikasi pesan dari partisi utama apakah `allow.everyone.if.no.acl.found` properti didefinisikan untuk konfigurasi cluster atau tidak.

**Untuk menambah atau menghapus akses baca dan tulis ke topik**

1. Tambahkan broker Anda ke tabel ACL untuk memungkinkan mereka membaca dari semua topik yang ada ACLs . Untuk memberi broker Anda membaca akses ke topik, jalankan perintah berikut pada mesin klien yang dapat berkomunikasi dengan cluster MSK. 

   Ganti *Distinguished-Name* dengan DNS dari salah satu broker bootstrap cluster Anda, lalu ganti string sebelum periode pertama dalam nama yang dibedakan ini dengan tanda bintang ()`*`. Misalnya, jika salah satu broker bootstrap cluster Anda memiliki DNS`b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com`, ganti *Distinguished-Name* perintah berikut dengan`*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com`. Untuk informasi tentang cara mendapatkan broker bootstrap, lihat[Dapatkan broker bootstrap untuk cluster MSK Amazon](msk-get-bootstrap-brokers.md).

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
   ```

1. Untuk memberikan akses baca aplikasi klien ke topik, jalankan perintah berikut di mesin klien Anda. Jika Anda menggunakan otentikasi TLS timbal balik, gunakan yang sama dengan yang *Distinguished-Name* Anda gunakan saat Anda membuat kunci pribadi.

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
   ```

   Untuk menghapus akses baca, Anda dapat menjalankan perintah yang sama, menggantinya `--add` dengan`--remove`.

1. Untuk memberikan akses tulis ke topik, jalankan perintah berikut di mesin klien Anda. Jika Anda menggunakan otentikasi TLS timbal balik, gunakan yang sama dengan yang *Distinguished-Name* Anda gunakan saat Anda membuat kunci pribadi.

   ```
   <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name
   ```

   Untuk menghapus akses tulis, Anda dapat menjalankan perintah yang sama, menggantinya `--add` dengan`--remove`.

# Mengubah grup keamanan klaster MSK Amazon
<a name="change-security-group"></a>

Halaman ini menjelaskan cara mengubah grup keamanan klaster MSK yang ada. Anda mungkin perlu mengubah grup keamanan klaster untuk menyediakan akses ke kumpulan pengguna tertentu atau membatasi akses ke klaster. Untuk informasi tentang grup keamanan, lihat [Grup keamanan untuk VPC Anda di panduan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) pengguna Amazon VPC.

1. Gunakan [ListNodes](https://docs.amazonaws.cn/en_us/msk/1.0/apireference/clusters-clusterarn-nodes.html#ListNodes)API atau perintah [daftar-node](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/list-nodes.html) di dalam AWS CLI untuk mendapatkan daftar broker di cluster Anda. Hasil operasi ini termasuk antarmuka jaringan elastis (ENIs) yang terkait dengan broker. IDs 

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. Menggunakan daftar dropdown di dekat sudut kanan atas layar, pilih Wilayah tempat cluster digunakan.

1. Di panel kiri, di bawah **Jaringan & Keamanan**, pilih **Antarmuka Jaringan**.

1. Pilih ENI pertama yang Anda peroleh pada langkah pertama. Pilih menu **Tindakan** di bagian atas layar, lalu pilih **Ubah Grup Keamanan**. Tetapkan grup keamanan baru ke ENI ini. Ulangi langkah ini untuk setiap ENIs yang Anda peroleh pada langkah pertama.
**catatan**  
**Perubahan yang Anda buat pada grup keamanan klaster menggunakan konsol Amazon EC2 tidak tercermin di konsol MSK di bawah Pengaturan jaringan.**

1. Konfigurasikan aturan grup keamanan baru untuk memastikan bahwa klien Anda memiliki akses ke broker. Untuk informasi tentang menyetel aturan grup keamanan, lihat [Menambahkan, Menghapus, dan Memperbarui Aturan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#AddRemoveRules) di panduan pengguna Amazon VPC.

**penting**  
Jika Anda mengubah grup keamanan yang terkait dengan broker cluster, dan kemudian menambahkan broker baru ke cluster itu, Amazon MSK mengaitkan broker baru dengan grup keamanan asli yang dikaitkan dengan cluster ketika cluster dibuat. Namun, agar cluster berfungsi dengan benar, semua brokernya harus dikaitkan dengan grup keamanan yang sama. Oleh karena itu, jika Anda menambahkan broker baru setelah mengubah grup keamanan, Anda harus mengikuti prosedur sebelumnya lagi dan memperbarui broker baru. ENIs 

# Kontrol akses ke ZooKeeper node Apache di kluster MSK Amazon Anda
<a name="zookeeper-security"></a>

Untuk alasan keamanan, Anda dapat membatasi akses ke ZooKeeper node Apache yang merupakan bagian dari kluster MSK Amazon Anda. Untuk membatasi akses ke node, Anda dapat menetapkan grup keamanan terpisah untuk mereka. Anda kemudian dapat memutuskan siapa yang mendapat akses ke grup keamanan itu.

**penting**  
Bagian ini tidak berlaku untuk cluster yang berjalan dalam KRaft mode. Lihat [KRaft modus](metadata-management.md#kraft-intro).

**Topics**
+ [Untuk menempatkan ZooKeeper node Apache Anda dalam grup keamanan terpisah](zookeeper-security-group.md)
+ [Menggunakan keamanan TLS dengan Apache ZooKeeper](zookeeper-security-tls.md)

# Untuk menempatkan ZooKeeper node Apache Anda dalam grup keamanan terpisah
<a name="zookeeper-security-group"></a>

Untuk membatasi akses ke ZooKeeper node Apache, Anda dapat menetapkan grup keamanan terpisah untuk mereka. Anda dapat memilih siapa yang memiliki akses ke grup keamanan baru ini dengan menetapkan aturan grup keamanan.

1. Dapatkan string ZooKeeper koneksi Apache untuk cluster Anda. Untuk mempelajari caranya, lihat [ZooKeeper modus](metadata-management.md#msk-get-connection-string). String koneksi berisi nama DNS dari node Apache ZooKeeper Anda.

1. Gunakan alat seperti `host` atau `ping` untuk mengonversi nama DNS yang Anda peroleh pada langkah sebelumnya ke alamat IP. Simpan alamat IP ini karena Anda membutuhkannya nanti dalam prosedur ini.

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. Di panel kiri, di bawah **NETWORK & SECURITY**, pilih **Network Interfaces**.

1. Di bidang pencarian di atas tabel antarmuka jaringan, ketikkan nama cluster Anda, lalu ketik return. Ini membatasi jumlah antarmuka jaringan yang muncul dalam tabel ke antarmuka yang terkait dengan cluster Anda.

1. Pilih kotak centang di awal baris yang sesuai dengan antarmuka jaringan pertama dalam daftar.

1. Di panel detail di bagian bawah halaman, cari ** IPv4 IP pribadi Primer**. Jika alamat IP ini cocok dengan salah satu alamat IP yang Anda peroleh pada langkah pertama prosedur ini, ini berarti bahwa antarmuka jaringan ini ditetapkan ke ZooKeeper node Apache yang merupakan bagian dari cluster Anda. Jika tidak, batalkan centang kotak di sebelah antarmuka jaringan ini, dan pilih antarmuka jaringan berikutnya dalam daftar. Urutan di mana Anda memilih antarmuka jaringan tidak masalah. Pada langkah selanjutnya, Anda akan melakukan operasi yang sama pada semua antarmuka jaringan yang ditugaskan ke ZooKeeper node Apache, satu per satu.

1. Saat Anda memilih antarmuka jaringan yang sesuai dengan ZooKeeper node Apache, pilih menu **Tindakan** di bagian atas halaman, lalu pilih **Ubah Grup Keamanan**. Tetapkan grup keamanan baru ke antarmuka jaringan ini. Untuk informasi tentang membuat grup keamanan, lihat [Membuat Grup Keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#CreatingSecurityGroups) di dokumentasi Amazon VPC.

1. Ulangi langkah sebelumnya untuk menetapkan grup keamanan baru yang sama ke semua antarmuka jaringan yang terkait dengan ZooKeeper node Apache cluster Anda.

1. Anda sekarang dapat memilih siapa yang memiliki akses ke grup keamanan baru ini. Untuk informasi tentang menyetel aturan grup keamanan, lihat [Menambahkan, Menghapus, dan Memperbarui Aturan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html?shortFooter=true#AddRemoveRules) di dokumentasi Amazon VPC.

# Menggunakan keamanan TLS dengan Apache ZooKeeper
<a name="zookeeper-security-tls"></a>

Anda dapat menggunakan keamanan TLS untuk enkripsi dalam perjalanan antara klien Anda dan node Apache ZooKeeper Anda. Untuk menerapkan keamanan TLS dengan ZooKeeper node Apache Anda, lakukan hal berikut:
+ Cluster harus menggunakan Apache Kafka versi 2.5.1 atau yang lebih baru untuk menggunakan keamanan TLS dengan Apache. ZooKeeper
+ Aktifkan keamanan TLS saat Anda membuat atau mengonfigurasi klaster Anda. Cluster yang dibuat dengan Apache Kafka versi 2.5.1 atau yang lebih baru dengan TLS diaktifkan secara otomatis menggunakan keamanan TLS dengan titik akhir Apache. ZooKeeper Untuk informasi tentang pengaturan keamanan TLS, lihat[Memulai enkripsi MSK Amazon](msk-working-with-encryption.md).
+ Ambil ZooKeeper titik akhir TLS Apache menggunakan operasi. [DescribeCluster ](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)
+ Buat file ZooKeeper konfigurasi Apache untuk digunakan dengan `kafka-configs.sh` dan [https://kafka.apache.org/documentation/#security_authz_cli](https://kafka.apache.org/documentation/#security_authz_cli)alat, atau dengan ZooKeeper shell. Dengan setiap alat, Anda menggunakan `--zk-tls-config-file` parameter untuk menentukan ZooKeeper konfigurasi Apache Anda.

  Contoh berikut menunjukkan file ZooKeeper konfigurasi Apache khas: 

  ```
  zookeeper.ssl.client.enable=true
  zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
  zookeeper.ssl.keystore.location=kafka.jks
  zookeeper.ssl.keystore.password=test1234
  zookeeper.ssl.truststore.location=truststore.jks
  zookeeper.ssl.truststore.password=test1234
  ```
+ Untuk perintah lain (seperti`kafka-topics`), Anda harus menggunakan variabel `KAFKA_OPTS` lingkungan untuk mengkonfigurasi ZooKeeper parameter Apache. Contoh berikut menunjukkan cara mengkonfigurasi variabel `KAFKA_OPTS` lingkungan untuk meneruskan ZooKeeper parameter Apache ke perintah lain:

  ```
  export KAFKA_OPTS="
  -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty 
  -Dzookeeper.client.secure=true 
  -Dzookeeper.ssl.trustStore.location=/home/ec2-user/kafka.client.truststore.jks
  -Dzookeeper.ssl.trustStore.password=changeit"
  ```

  Setelah Anda mengkonfigurasi variabel `KAFKA_OPTS` lingkungan, Anda dapat menggunakan perintah CLI secara normal. Contoh berikut membuat topik Apache Kafka menggunakan ZooKeeper konfigurasi Apache dari variabel lingkungan: `KAFKA_OPTS`

  ```
  <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --zookeeper ZooKeeperTLSConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic
  ```

**catatan**  
Nama-nama parameter yang Anda gunakan dalam file ZooKeeper konfigurasi Apache Anda dan yang Anda gunakan dalam variabel `KAFKA_OPTS` lingkungan Anda tidak konsisten. Perhatikan nama mana yang Anda gunakan dengan parameter mana dalam file konfigurasi dan variabel `KAFKA_OPTS` lingkungan Anda.

Untuk informasi selengkapnya tentang mengakses ZooKeeper node Apache Anda dengan TLS, lihat [KIP-515: Aktifkan klien ZK untuk](https://cwiki.apache.org/confluence/display/KAFKA/KIP-515%3A+Enable+ZK+client+to+use+the+new+TLS+supported+authentication) menggunakan otentikasi baru yang didukung TLS.

# Validasi kepatuhan untuk Amazon Managed Streaming for Apache Kafka
<a name="MSK-compliance"></a>

Auditor pihak ketiga menilai keamanan dan kepatuhan Amazon Managed Streaming for Apache Kafka sebagai bagian dari program kepatuhan. AWS Ini termasuk PCI dan HIPAA BAA.

Untuk daftar AWS layanan dalam lingkup program kepatuhan tertentu, lihat [Layanan Amazon dalam Lingkup menurut Program Kepatuhan](https://aws.amazon.com/compliance/services-in-scope/) . 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 Amazon MSK ditentukan oleh sensitivitas data Anda, tujuan kepatuhan perusahaan Anda, serta undang-undang dan peraturan yang berlaku. AWS menyediakan sumber daya berikut untuk membantu kepatuhan:
+ [Panduan Quick Start Keamanan dan Kepatuhan](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) – Panduan deployment ini membahas pertimbangan arsitektur dan menyediakan langkah–langkah untuk melakukan deployment terhadap lingkungan dasar di AWS yang menjadi fokus keamanan dan kepatuhan.
+ [Arsitektur untuk Whitepaper Keamanan dan Kepatuhan HIPAA — Whitepaper](https://docs.aws.amazon.com/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.html) ini menjelaskan bagaimana perusahaan dapat menggunakan untuk membuat aplikasi yang sesuai dengan HIPAA. AWS 
+ [AWS Sumber Daya AWS](https://aws.amazon.com/compliance/resources/) — Kumpulan buku kerja dan panduan ini mungkin berlaku untuk industri dan lokasi Anda.
+ [Mengevaluasi Sumber Daya dengan Aturan](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) dalam *Panduan AWS Config Pengembang* — AWS Config Layanan menilai seberapa baik konfigurasi sumber daya Anda mematuhi praktik internal, pedoman industri, dan peraturan.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)— AWS Layanan ini memberikan pandangan komprehensif tentang keadaan keamanan Anda di dalamnya AWS yang membantu Anda memeriksa kepatuhan Anda terhadap standar industri keamanan dan praktik terbaik.

# Ketahanan di Amazon Managed Streaming untuk Apache Kafka
<a name="disaster-recovery-resiliency"></a>

Infrastruktur AWS global dibangun di sekitar AWS Wilayah dan Zona Ketersediaan. AWS Wilayah menyediakan beberapa Availability Zone yang terpisah secara fisik dan terisolasi, yang terhubung dengan latensi rendah, throughput tinggi, dan jaringan yang sangat redundan. Dengan Zona Ketersediaan, Anda dapat merancang serta mengoperasikan aplikasi dan basis data yang secara otomatis melakukan fail over di antara zona tanpa gangguan. Zona Ketersediaan memiliki ketersediaan dan toleransi kesalahan yang lebih baik, dan dapat diskalakan dibandingkan infrastruktur pusat data tunggal atau multi tradisional. 

Untuk informasi selengkapnya tentang AWS Wilayah dan Availability Zone, lihat [Infrastruktur AWS Global](https://aws.amazon.com/about-aws/global-infrastructure/).

# Keamanan infrastruktur di Amazon Managed Streaming for Apache Kafka
<a name="infrastructure-security"></a>

Sebagai layanan terkelola, Amazon Managed Streaming for Apache Kafka dilindungi oleh prosedur keamanan jaringan global AWS yang dijelaskan dalam whitepaper [Amazon Web Services: Overview of](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) Security Processes.

Anda menggunakan panggilan API yang AWS dipublikasikan untuk mengakses Amazon MSK melalui jaringan. Klien harus mendukung Keamanan Lapisan Pengangkutan (TLS) 1.0 atau versi yang lebih baru. Kami merekomendasikan TLS 1.2 atau versi yang lebih baru. Klien juga harus mendukung suite cipher dengan perfect forward secrecy (PFS) seperti Ephemeral Diffie-Hellman (DHE) atau Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). Sebagian besar sistem modern seperti Java 7 dan sistem yang lebih baru mendukung mode ini.

Selain itu, permintaan harus ditandatangani menggunakan ID kunci akses dan kunci akses rahasia yang terkait dengan principal IAM. 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 menandatangani permintaan.