

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

# Menggunakan rahasia untuk mengakses titik AWS Database Migration Service akhir
<a name="security_iam_secretsmanager"></a>

Untuk AWS DMS, *rahasia* adalah kunci terenkripsi yang dapat Anda gunakan untuk mewakili sekumpulan kredensi pengguna untuk mengautentikasi, melalui *otentikasi rahasia*, koneksi database untuk sumber yang didukung atau titik akhir target. AWS DMS Untuk endpoint Oracle yang juga menggunakan Oracle Automatic Storage Management (ASM), AWS DMS memerlukan rahasia tambahan yang mewakili kredensi pengguna untuk mengakses Oracle ASM.

Anda dapat membuat rahasia atau rahasia yang AWS DMS memerlukan otentikasi rahasia menggunakan AWS Secrets Manager, layanan untuk membuat, menyimpan, dan mengambil kredensil dengan aman untuk mengakses aplikasi, layanan, dan sumber daya TI di cloud dan di lokasi. Ini termasuk dukungan untuk rotasi berkala otomatis dari nilai rahasia terenkripsi tanpa intervensi Anda, sehingga memberikan tingkat keamanan tambahan untuk kredensial Anda. Mengaktifkan rotasi nilai rahasia AWS Secrets Manager juga memastikan bahwa rotasi nilai rahasia ini terjadi tanpa efek apa pun pada migrasi database apa pun yang bergantung pada rahasia. Untuk mengautentikasi koneksi basis data titik akhir secara rahasia, buat rahasia yang identitas atau ARN-nya Anda tetapkan untuk `SecretsManagerSecretId`, yang Anda sertakan dalam pengaturan titik akhir Anda. Untuk mengautentikasi Oracle ASM sebagai bagian dari titik akhir Oracle secara rahasia, buat rahasia yang identitas atau ARN-nya Anda tetapkan untuk `SecretsManagerOracleAsmSecretId`, yang juga Anda sertakan dalam pengaturan titik akhir Anda.

**catatan**  
Anda tidak dapat menggunakan kredensi master yang dikelola oleh Amazon RDS Aurora. Kredensi ini tidak termasuk informasi host atau port, yang AWS DMS perlu membuat koneksi. Sebaliknya, buat pengguna baru dan rahasia. Untuk informasi tentang membuat pengguna dan rahasia, lihat [Menggunakan Konsol Manajemen AWS untuk membuat peran akses rahasia dan rahasia](#security_iam_secretsmanager.console) berikut.

Untuk informasi selengkapnya AWS Secrets Manager, lihat [Apa itu AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dalam *AWS Secrets Manager User Guide*.

AWS DMS mendukung otentikasi rahasia untuk database on-premise atau AWS-managed berikut pada sumber yang didukung dan titik akhir target:
+ Amazon DocumentDB
+ IBM Db2 LUW
+ Microsoft SQL Server
+ MongoDB
+ MySQL
+ Oracle
+ PostgreSQL
+ Amazon Redshift
+ SAP ASE

Untuk koneksi ke salah satu basis data ini, Anda memiliki pilihan untuk memasukkan salah satu dari rangkaian nilai berikut, tetapi tidak keduanya, sebagai bagian dari pengaturan titik akhir Anda:
+ Nilai teks yang jelas untuk mengautentikasi koneksi basis data menggunakan pengaturan `UserName`, `Password`, `ServerName`, dan `Port`. Untuk titik akhir Oracle yang juga menggunakan Oracle ASM, sertakan nilai teks yang jelas tambahan untuk mengautentikasi ASM menggunakan pengaturan `AsmUserName`, `AsmPassword`, dan `AsmServerName`.
+ Autentikasi rahasia menggunakan nilai untuk pengaturan `SecretsManagerSecretId` dan `SecretsManagerAccessRoleArn`. Untuk titik akhir Oracle yang menggunakan Oracle ASM, sertakan nilai tambahan untuk pengaturan `SecretsManagerOracleAsmSecretId` dan `SecretsManagerOracleAsmAccessRoleArn`. Nilai rahasia untuk pengaturan ini dapat mencakup berikut ini untuk: 
  + `SecretsManagerSecretId` – Amazon Resource Name (ARN) lengkap, ARN parsial, atau nama yang dikenal dari rahasia yang telah Anda buat untuk akses basis data titik akhir di AWS Secrets Manager.
  + `SecretsManagerAccessRoleArn`— ARN dari peran akses rahasia yang telah Anda buat di IAM untuk menyediakan AWS DMS akses ke `SecretsManagerSecretId` rahasia ini atas nama Anda.
  + `SecretsManagerOracleAsmSecretId` – Amazon Resource Name (ARN) lengkap, ARN parsial, atau nama yang dikenal dari rahasia yang telah Anda buat untuk akses Oracle ASM di AWS Secrets Manager.
  + `SecretsManagerOracleAsmAccessRoleArn` – ARN dari peran akses rahasia yang telah Anda buat di IAM untuk memberikan akses AWS DMS ke rahasia `SecretsManagerOracleAsmSecretId` atas nama Anda.
**catatan**  
Anda juga dapat menggunakan peran akses rahasia tunggal untuk menyediakan AWS DMS akses ke `SecretsManagerSecretId` rahasia dan `SecretsManagerOracleAsmSecretId` rahasia. Jika Anda membuat peran akses rahasia tunggal ini untuk kedua rahasia, pastikan bahwa Anda menetapkan ARN yang sama untuk peran akses ini untuk `SecretsManagerAccessRoleArn` dan `SecretsManagerOracleAsmAccessRoleArn`. Misalnya, jika peran akses rahasia Anda untuk kedua rahasia memiliki ARN yang ditugaskan untuk variabel, `ARN2xsecrets`, Anda dapat mengatur pengaturan ARN ini sebagai berikut:  

  ```
  SecretsManagerAccessRoleArn = ARN2xsecrets;
  SecretsManagerOracleAsmAccessRoleArn = ARN2xsecrets;
  ```

  Untuk informasi lebih lanjut tentang nilai-nilai tersebut, lihat [Menggunakan Konsol Manajemen AWS untuk membuat peran akses rahasia dan rahasia](#security_iam_secretsmanager.console).

Setelah Anda telah membuat dan menentukan pengaturan rahasia dan titik akhir akses-peran rahasia yang diperlukan untuk titik akhir Anda, perbarui izin pada akun pengguna yang akan menjalankan permintaan `CreateEndpoint` atau `ModifyEndpoint` API dengan detail rahasia ini. Pastikan bahwa izin akun ini mencakup `IAM:GetRole` izin pada peran akses rahasia dan `SecretsManager:DescribeSecret` izin pada rahasia. AWS DMS memerlukan izin ini untuk memvalidasi peran akses dan rahasianya.

**Untuk memberikan dan memverifikasi izin pengguna yang diperlukan**

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

1. Pilih **Pengguna**, lalu pilih **ID Pengguna** yang digunakan untuk membuat panggilan `CreateEndpoint` dan `ModifyEndpoint` API.

1. Dari tab **Izin**, pilih **\$1\$1 JSON**.

1. Pastikan pengguna memiliki izin yang ditampilkan berikut ini.

   ```
   {
   	"Statement": [{
   			"Effect": "Allow",
   			"Action": [
   				"iam:GetRole",
   				"iam:PassRole"
   			],
   			"Resource": "SECRET_ACCESS_ROLE_ARN"
   		},
   		{
   			"Effect": "Allow",
   			"Action": "secretsmanager:DescribeSecret",
   			"Resource": "SECRET_ARN"
   		}
   	]
   }
   ```

1. Jika pengguna tidak memiliki izin tersebut, tambahkan izin.

1. Jika Anda menggunakan IAM role untuk melakukan panggilan DMS API, ulangi langkah-langkah di atas untuk masing-masing peran.

1. Buka terminal dan gunakan AWS CLI untuk memvalidasi bahwa izin diberikan dengan benar dengan mengasumsikan Peran atau Pengguna yang digunakan di atas.

   1. Validasi izin pengguna pada SecretAccessRole menggunakan perintah IAM`get-role`.

      ```
      aws iam get-role --role-name ROLE_NAME
      ```

      Ganti *ROLE\$1NAME* dengan nama`SecretsManagerAccessRole`.

      Jika perintah mengembalikan pesan kesalahan, pastikan izin diberikan dengan benar.

   1. Memvalidasi izin pengguna pada rahasia menggunakan perintah Secrets Manager `describe-secret`.

      ```
      aws secretsmanager describe-secret --secret-id SECRET_NAME OR SECRET_ARN --region=REGION_NAME
      ```

      Pengguna bisa menjadi nama yang dikenal, ARN parsial atau ARN lengkap. Untuk informasi lebih lanjut, lihat [uraikan-rahasia](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html).

      Jika perintah mengembalikan pesan kesalahan, pastikan izin diberikan dengan benar.

## Menggunakan Konsol Manajemen AWS untuk membuat peran akses rahasia dan rahasia
<a name="security_iam_secretsmanager.console"></a>

Anda dapat menggunakan Konsol Manajemen AWS untuk membuat rahasia untuk otentikasi titik akhir dan untuk membuat kebijakan dan peran AWS DMS untuk memungkinkan mengakses rahasia atas nama Anda.

**Untuk membuat rahasia menggunakan Konsol Manajemen AWS yang AWS DMS dapat digunakan untuk mengautentikasi database untuk sumber dan koneksi titik akhir target**

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

1. Pilih **Simpan rahasia baru**.

1. Di bawah **Pilih tipe rahasia** pada halaman **Simpan rahasia baru**, pilih **Jenis rahasia lainnya**, lalu pilih **Plaintext**.
**catatan**  
Ini adalah satu-satunya tempat yang Anda butuhkan untuk memasukkan kredensial teks yang jelas untuk terhubung ke basis data titik akhir Anda mulai saat ini hingga seterusnya.

1. Di bidang **Plaintext**: 
   + Untuk rahasia yang identitasnya Anda tetapkan pada `SecretsManagerSecretId`, masukkan struktur JSON berikut ini.

     ```
     {
       "username": db_username,
       "password": db_user_password,
       "port": db_port_number,
       "host": db_server_name
     }
     ```
**catatan**  
Ini adalah daftar minimum anggota JSON yang diperlukan untuk mengautentikasi basis data titik akhir. Anda dapat menambahkan pengaturan titik akhir JSON tambahan sebagai anggota JSON dalam huruf kecil yang Anda inginkan. Namun, AWS DMS mengabaikan setiap anggota JSON tambahan untuk autentikasi titik akhir.

     Di sini, `db_username` adalah nama pengguna yang mengakses basis data , `db_user_password` adalah kata sandi dari pengguna basis data, `db_port_number` adalah nomor port untuk mengakses database, dan `db_server_name` adalah nama server basis data (alamat) di web, seperti dalam contoh berikut.

     ```
     {
       "username": "admin",
       "password": "some_password",
       "port": "8190",
       "host": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com"
     }
     ```
   + Untuk rahasia yang identitasnya Anda tetapkan pada `SecretsManagerOracleAsmSecretId`, masukkan struktur JSON berikut ini.

     ```
     {
       "asm_user": asm_username,
       "asm_password": asm_user_password,
       "asm_server": asm_server_name
     }
     ```
**catatan**  
Ini adalah daftar minimum anggota JSON yang diperlukan untuk mengautentikasi Oracle ASM untuk titik akhir Oracle. Daftar ini juga merupakan daftar lengkap yang dapat Anda tentukan berdasarkan pengaturan titik akhir Oracle ASM yang tersedia.

     Di sini, `asm_username` adalah nama pengguna yang mengakses Oracle ASM, `asm_user_password` adalah kata sandi pengguna Oracle ASM, dan `asm_server_name` adalah nama server (alamat) Oracle ASM di web, termasuk port, seperti dalam contoh berikut.

     ```
     { 
       "asm_user": "oracle_asm_user", 
       "asm_password": "oracle_asm_password",
       "asm_server": "oracle101.abcdefghij.us-east-1.rds.amazonaws.com:8190/+ASM" 
     }
     ```

1. Pilih kunci AWS KMS enkripsi untuk mengenkripsi rahasia. Anda dapat menerima kunci enkripsi default yang dibuat untuk layanan Anda dengan AWS Secrets Manager atau memilih AWS KMS kunci yang Anda buat.

1. Tentukan nama untuk mereferensikan rahasia ini dan deskripsi opsional. Ini adalah nama yang dikenal yang Anda gunakan sebagai nilai untuk `SecretsManagerSecretId` atau `SecretsManagerOracleAsmSecretId`.

1. Jika Anda ingin mengaktifkan rotasi otomatis dalam rahasia, Anda perlu memilih atau membuat AWS Lambda fungsi dengan izin untuk memutar kredensil untuk rahasia seperti yang dijelaskan. Namun, sebelum mengatur rotasi otomatis untuk menggunakan fungsi Lambda Anda, pastikan bahwa pengaturan konfigurasi untuk fungsi tersebut menambahkan empat karakter berikut ke nilai variabel lingkungan `EXCLUDE_CHARACTERS`.

   ```
   ;.:+{}*&,%\
   ```

   AWS DMS tidak mengizinkan karakter ini dalam kata sandi yang digunakan untuk kredensil titik akhir. Mengonfigurasi fungsi Lambda Anda untuk mengecualikan karakter tersebut mencegah AWS Secrets Manager dari menghasilkan karakter tersebut sebagai bagian dari nilai kata sandi yang dirotasi. Setelah Anda mengatur rotasi otomatis untuk menggunakan fungsi Lambda Anda, AWS Secrets Manager segera putar rahasia untuk memvalidasi konfigurasi rahasia Anda.
**catatan**  
Tergantung pada konfigurasi mesin basis data Anda, basis data Anda mungkin tidak mengambil kredensial yang dirotasi. Dalam hal ini, Anda perlu memulai ulang tugas secara manual untuk menyegarkan kredensial.

1. Tinjau dan simpan rahasia Anda AWS Secrets Manager. Anda kemudian dapat mencari setiap rahasia dengan nama ramahnya AWS Secrets Manager, lalu mengambil ARN rahasia sebagai nilai `SecretsManagerSecretId` untuk `SecretsManagerOracleAsmSecretId` atau sesuai untuk mengautentikasi akses ke koneksi database endpoint Anda dan Oracle ASM (jika digunakan).

**Untuk membuat kebijakan akses rahasia dan peran untuk mengatur `SecretsManagerAccessRoleArn` atau`SecretsManagerOracleAsmAccessRoleArn`, yang memungkinkan akses AWS DMS AWS Secrets Manager untuk mengakses rahasia Anda yang sesuai**

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

1. Pilih **Kebijakan**, lalu pilih **Buat kebijakan**.

1. Pilih **JSON** dan masukkan kebijakan berikut untuk mengaktifkan akses ke dan dekripsi rahasia Anda.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "secretsmanager:GetSecretValue",
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "kms:Decrypt",
           "kms:DescribeKey"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

   Di sini, `secret_arn` adalah ARN rahasia Anda, yang bisa Anda dapatkan dari `SecretsManagerSecretId` atau `SecretsManagerOracleAsmSecretId` yang sesuai, dan `kms_key_arn` adalah ARN kunci AWS KMS yang Anda gunakan untuk mengenkripsi rahasia Anda, seperti dalam contoh berikut.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "arn:aws:secretsmanager:us-east-2:123456789012:secret:MySQLTestSecret-qeHamH"
           },
           {
                "Effect": "Allow",
                "Action": [
                           "kms:Decrypt",
                           "kms:DescribeKey"
                         ],
                "Resource": "arn:aws:kms:us-east-2:123456789012:key/761138dc-0542-4e58-947f-4a3a8458d0fd"
           }
        ]
   }
   ```

------
**catatan**  
Jika Anda menggunakan kunci enkripsi default yang dibuat oleh AWS Secrets Manager, Anda tidak perlu menentukan AWS KMS izin untuk`kms_key_arn`.  
Jika Anda ingin kebijakan Anda menyediakan akses ke kedua rahasia, cukup tentukan objek sumber daya JSON tambahan untuk yang lain*secret\$1arn*.  
Jika rahasia Anda ada di akun yang berbeda, maka `SecretsManagerAccessRoleArn` peran tersebut memerlukan kebijakan tambahan untuk memverifikasi rahasia lintas akun. Untuk kasus penggunaan seperti itu, tambahkan tindakan `secretsmanager:DescribeSecret` ke kebijakan. Untuk detail selengkapnya tentang menyiapkan rahasia lintas akun, lihat Rahasia [Izin untuk AWS Secrets Manager untuk pengguna di akun lain](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples_cross.html).

1. Tinjau dan buat kebijakan dengan nama yang dikenal dan deskripsi opsional.

1. Pilih **Peran**, lalu pilih **Buat peran**.

1. Pilih **layanan AWS ** sebagai jenis entitas terpercaya.

1. Pilih **DMS** dari daftar layanan sebagai layanan terpercaya, lalu pilih **Berikutnya: Izin**.

1. Cari dan lampirkan kebijakan yang Anda buat di langkah 4, lalu lanjutkan dengan menambahkan tag dan tinjau peran Anda. Pada titik ini, edit hubungan kepercayaan agar peran tersebut menggunakan prinsipal layanan AWS DMS regional Anda sebagai entitas tepercaya. Prinsipal ini memiliki format berikut.

   ```
   dms.region-name.amazonaws.com
   ```

   Di sini, *`region-name`* adalah nama wilayah Anda, seperti `us-east-1`. Dengan demikian, kepala layanan AWS DMS regional untuk wilayah ini mengikuti.

   ```
   dms.us-east-1.amazonaws.com
   ```

1. Setelah mengedit entitas terpercaya untuk peran tersebut, buat peran dengan nama yang dikenal dan deskripsi opsional. Anda sekarang dapat mencari peran baru Anda dengan nama yang dikenal di IAM, kemudian mengambil ARN peran sebagai nilai `SecretsManagerAccessRoleArn` atau `SecretsManagerOracleAsmAccessRoleArn` untuk mengautentikasi koneksi basis data titik akhir Anda.

**Untuk menggunakan secrets manager dengan instans replikasi di subnet privat**

1. Buat VPC endpoint secret manager dan perhatikan DNS untuk titik akhir. Untuk informasi lebih lanjut tentang cara membuat VPC endpoint secret manager, lihat [Menghubungkan ke Secrets Manager melalui VPC endpoint](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html#vpc-endpoint) []()di *Panduan Pengguna Secrets Manager AWS .*

1. Untuk aturan masuknya grup keamanan titik akhir VPC, izinkan lalu lintas HTTPS dari alamat ip pribadi instans replikasi atau grup keamanan yang dilampirkan ke instance replikasi.

1. Untuk aturan keluar grup keamanan instans replikasi, izinkan semua lalu lintas untuk tujuan `0.0.0.0/0`.

1. Atur atribut koneksi tambahan titik akhir, `secretsManagerEndpointOverride=secretsManager endpoint DNS` untuk memberikan DNS VPC endpoint secret manager, seperti yang ditunjukkan dalam contoh berikut.

   ```
   secretsManagerEndpointOverride=vpce-1234a5678b9012c-12345678.secretsmanager.eu-west-1.vpce.amazonaws.com
   ```