

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

# Migrasi dari otentikasi berbasis kata sandi (AUTH) ke otentikasi IAM
<a name="auth-to-iam-migration"></a>

Panduan ini menjelaskan cara memigrasikan cluster ElastiCache berbasis node Amazon atau cache tanpa server dari autentikasi berbasis kata sandi (AUTH) ke autentikasi (IAM) tanpa gangguan layanan. AWS Identity and Access Management 

**catatan**  
Sebaiknya uji migrasi ini di lingkungan non-produksi sebelum menerapkan perubahan pada lingkungan produksi Anda.

## Ikhtisar
<a name="auth-to-iam-overview"></a>

Otentikasi IAM memberikan keamanan yang ditingkatkan dengan menghilangkan kebutuhan akan kata sandi yang berumur panjang. Sebagai gantinya, aplikasi menghasilkan token otentikasi berumur pendek (berlaku hingga 15 menit) menggunakan proses [penandatanganan AWS Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/signature-version-4.html).

## Prasyarat
<a name="auth-to-iam-prereqs"></a>

Sebelum memulai, lakukan hal berikut:
+ Cache Anda menjalankan Redis OSS 7.0 atau yang lebih baru, atau Valkey. Autentikasi IAM tidak didukung pada versi mesin sebelumnya.
+ In-transit enkripsi (TLS) diaktifkan pada cache Anda. Autentikasi IAM membutuhkan TLS. Untuk informasi selengkapnya, lihat [ElastiCache enkripsi dalam transit (TLS)](in-transit-encryption.md).
+ Anda memiliki izin IAM yang diperlukan untuk membuat pengguna dan memodifikasi grup pengguna. Untuk informasi selengkapnya, lihat [Bagaimana Amazon ElastiCache bekerja dengan IAM](security_iam_service-with-iam.md).
+ Peran IAM atau pengguna yang digunakan aplikasi Anda memiliki kebijakan IAM yang memungkinkan `elasticache:Connect` tindakan untuk cache target dan pengguna IAM. Untuk informasi selengkapnya, lihat [Autentikasi dengan IAM](auth-iam.md).
+ Tidak ada batasan autentikasi IAM tambahan yang berlaku untuk aplikasi Anda. Untuk daftar lengkap batasan, lihat[Autentikasi dengan IAM](auth-iam.md).

## Proses migrasi
<a name="auth-to-iam-process"></a>

Proses migrasi melibatkan pembuatan berbasis kata sandi dan IAM-authenticated pengguna, memverifikasi konektivitas, dan kemudian transisi aplikasi Anda ke otentikasi IAM.

### Langkah 1: Buat pengguna
<a name="auth-to-iam-create-users"></a>

Buat dua ElastiCache pengguna sehingga cache Anda mendukung autentikasi berbasis kata sandi dan IAM selama periode migrasi.

**Buat pengguna otentikasi berbasis kata sandi**

**catatan**  
Jika Anda sudah memiliki pengguna berbasis kata sandi yang dikonfigurasi, Anda dapat melewati pembuatan yang baru dan menggunakan pengguna yang sudah ada.

Gunakan AWS CLI perintah berikut untuk membuat pengguna berbasis kata sandi.

Untuk Linux, macOS, atau Unix:

```
aws elasticache create-user \
  --user-id {{<user-id>}} \
  --user-name default \
  --engine {{<engine>}} \
  --passwords "{{<your-existing-auth-password>}}" \
  --access-string "on ~* +@all"
```

Untuk Windows:

```
aws elasticache create-user ^
  --user-id {{<user-id>}} ^
  --user-name default ^
  --engine {{<engine>}} ^
  --passwords "{{<your-existing-auth-password>}}" ^
  --access-string "on ~* +@all"
```

Ganti:
+ {{<user-id>}}— ID unik untuk pengguna ini.
+ {{<engine>}}— Mesin cache Anda menggunakan: `valkey` atau`redis`.
+ {{<your-existing-auth-password>}}— Token AUTH saat ini dikonfigurasi pada cache Anda.

**Buat IAM-authenticated pengguna**

Gunakan AWS CLI perintah berikut untuk membuat IAM-authenticated pengguna.

Untuk Linux, macOS, atau Unix:

```
aws elasticache create-user \
  --user-id {{<iam-user-id>}} \
  --user-name {{<iam-user-name>}} \
  --authentication-mode Type=iam \
  --engine {{<engine>}} \
  --access-string "on ~* +@all"
```

Untuk Windows:

```
aws elasticache create-user ^
  --user-id {{<iam-user-id>}} ^
  --user-name {{<iam-user-name>}} ^
  --authentication-mode Type=iam ^
  --engine {{<engine>}} ^
  --access-string "on ~* +@all"
```

Ganti:
+ {{<iam-user-id>}}— ID unik untuk pengguna IAM.
+ {{<iam-user-name>}}— Nama pengguna untuk pengguna IAM.
+ {{<engine>}}— Mesin cache Anda menggunakan: `valkey` atau`redis`.

### Langkah 2: Buat dan lampirkan grup pengguna
<a name="auth-to-iam-user-group"></a>

Jika Anda sudah memiliki grup pengguna yang berisi pengguna berbasis kata sandi, tambahkan IAM-authenticated pengguna ke grup yang ada:

Untuk Linux, macOS, atau Unix:

```
aws elasticache modify-user-group \
  --user-group-id {{<user-group-id>}} \
  --user-ids-to-add {{<iam-user-id>}}
```

Untuk Windows:

```
aws elasticache modify-user-group ^
  --user-group-id {{<user-group-id>}} ^
  --user-ids-to-add {{<iam-user-id>}}
```

Ganti:
+ {{<user-group-id>}}— ID grup pengguna Anda yang ada.
+ {{<iam-user-id>}}— ID pengguna IAM-authenticated pengguna yang dibuat pada Langkah 1.

Lalu, langsung ke [Langkah 3: Verifikasi kedua metode otentikasi](#auth-to-iam-verify-dual).

Jika tidak, buat grup pengguna baru, tambahkan kedua pengguna, dan lampirkan grup ke cache Anda.

Gunakan AWS CLI perintah berikut untuk membuat grup pengguna dengan kedua pengguna:

Untuk Linux, macOS, atau Unix:

```
aws elasticache create-user-group \
  --user-group-id {{<user-group-id>}} \
  --engine {{<engine>}} \
  --user-ids {{<user-id>}} {{<iam-user-id>}}
```

Untuk Windows:

```
aws elasticache create-user-group ^
  --user-group-id {{<user-group-id>}} ^
  --engine {{<engine>}} ^
  --user-ids {{<user-id>}} {{<iam-user-id>}}
```

Ganti:
+ {{<user-group-id>}}— ID unik untuk grup pengguna.
+ {{<engine>}}— Mesin cache Anda menggunakan: `valkey` atau`redis`.
+ {{<user-id>}}, {{<iam-user-id>}} — ID pengguna yang dibuat pada Langkah 1.

Kemudian ubah cache Anda untuk menggunakan grup pengguna baru.

Untuk cluster berbasis node:

Untuk Linux, macOS, atau Unix:

```
aws elasticache modify-replication-group \
  --replication-group-id {{<replication-group-id>}} \
  --auth-token-update-strategy DELETE \
  --user-group-ids-to-add {{<user-group-id>}}
```

Untuk Windows:

```
aws elasticache modify-replication-group ^
  --replication-group-id {{<replication-group-id>}} ^
  --auth-token-update-strategy DELETE ^
  --user-group-ids-to-add {{<user-group-id>}}
```

Ganti:
+ {{<replication-group-id>}}— ID grup replikasi Anda.
+ {{<user-group-id>}}— ID grup pengguna yang Anda buat di atas.

Untuk cache tanpa server:

Untuk Linux, macOS, atau Unix:

```
aws elasticache modify-serverless-cache \
  --serverless-cache-name {{<serverless-cache-name>}} \
  --user-group-id {{<user-group-id>}}
```

Untuk Windows:

```
aws elasticache modify-serverless-cache ^
  --serverless-cache-name {{<serverless-cache-name>}} ^
  --user-group-id {{<user-group-id>}}
```

Ganti:
+ {{<serverless-cache-name>}}— Nama cache tanpa server Anda.
+ {{<user-group-id>}}— ID grup pengguna yang Anda buat di atas.

### Langkah 3: Verifikasi kedua metode otentikasi
<a name="auth-to-iam-verify-dual"></a>

Setelah menyelesaikan Langkah 2, cache Anda mendukung kedua metode otentikasi. Verifikasi bahwa aplikasi dapat terhubung menggunakan kedua metode sebelum melanjutkan.
+ Aplikasi yang menggunakan otentikasi berbasis kata sandi dapat terus terhubung dengan kata sandi.
+ Aplikasi yang dikonfigurasi untuk otentikasi IAM dapat terhubung menggunakan token IAM.

### Langkah 4: Connect dengan IAM
<a name="auth-to-iam-connect"></a>

**Menghasilkan token otentikasi IAM**

Buat token otentikasi IAM berumur pendek menggunakan permintaan yang telah ditandatangani sebelumnya [AWS SiGv4](https://docs.aws.amazon.com//general/latest/gr/sigv4-signed-request-examples.html). Contoh Python berikut menunjukkan pembuatan token.

```
import boto3
from botocore.auth import SigV4QueryAuth
from botocore.awsrequest import AWSRequest

cache_name = "<cache-name>"
user = "<username>"
region = "<region>"
expires = 900

session = boto3.Session()
credentials = session.get_credentials().get_frozen_credentials()

req = AWSRequest(
    method="GET",
    url=f"http://{cache_name}/",
    params={"Action": "connect", "User": user}
)
SigV4QueryAuth(credentials, "elasticache", region, expires=expires).add_auth(req)

token = req.url.replace("http://", "")
print(token)
```

**catatan**  
Token yang dihasilkan berlaku hingga 15 menit sejak pembuatan.

**Connect menggunakan valkey-cli**

Connect ke ElastiCache cache Anda menggunakan token yang dihasilkan. Anda dapat menggunakan salah satu **valkey-cli** atau **redis-cli** untuk terhubung ke cluster Valkey. Untuk cluster Redis OSS, gunakan. **redis-cli**

```
valkey-cli -h {{<host>}} -p 6379 --tls
```

Untuk kluster yang diaktifkan mode cluster, tambahkan `--cluster` tanda:

```
valkey-cli -h {{<host>}} -p 6379 --tls --cluster
```

Kemudian otentikasi dengan perintah berikut:

```
AUTH {{<username>}} {{<token>}}
```

Ganti:
+ {{<host>}}— Titik akhir cache Anda.
+ {{<username>}}— Nama pengguna IAM-authenticated pengguna.
+ {{<token>}}— Token otentikasi IAM yang Anda buat.

Keluaran yang diharapkan

```
OK
```

Jalankan perintah berikut untuk memvalidasi nama pengguna:

```
ACL WHOAMI
```

### Langkah 5: Integrasi aplikasi
<a name="auth-to-iam-app-integration"></a>

Untuk aplikasi Java, gunakan rantai penyedia AWS Credentials default untuk menghasilkan kredensil keamanan sementara. Untuk informasi selengkapnya, lihat [Autentikasi dengan IAM](auth-iam.md). Untuk bahasa lain, buat token otentikasi IAM menggunakan [proses penandatanganan AWS Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/signature-version-4.html) dan teruskan sebagai kata sandi dalam perintah klien `AUTH` Anda.

## Menyelesaikan migrasi
<a name="auth-to-iam-completing"></a>

Setelah aplikasi Anda dapat terhubung menggunakan autentikasi IAM, selesaikan langkah-langkah berikut untuk menyelesaikan migrasi.

### Langkah 1: Konfigurasikan otentikasi IAM dengan fallback
<a name="auth-to-iam-fallback"></a>

Sebelum menghapus pengguna berbasis kata sandi, perbarui kode aplikasi Anda untuk menggunakan autentikasi IAM sebagai metode utama sambil menjaga pengguna berbasis kata sandi sebagai fallback.

Dalam kode aplikasi Anda:
+ Konfigurasikan klien Anda untuk mengautentikasi menggunakan IAM-generated token sebagai metode utama.
+ Tambahkan mekanisme fallback sehingga jika otentikasi IAM gagal (misalnya, karena kedaluwarsa token atau kesalahan pembuatan), klien mencoba lagi menggunakan kredensi AUTH berbasis kata sandi.
+ Catat semua upaya otentikasi, termasuk fallback dan percobaan ulang, sehingga Anda dapat memantau apakah ada koneksi yang kembali ke autentikasi berbasis kata sandi.

### Langkah 2: Pantau dan verifikasi
<a name="auth-to-iam-monitor"></a>

Tinjau log aplikasi Anda dan CloudWatch metrik `IamAuthenticationThrottling` Amazon selama setidaknya 24-48 jam untuk mengonfirmasi semua koneksi melalui IAM. `IamAuthenticationExpirations`

Nilai bukan nol untuk investigasi waran metrik:
+ `IamAuthenticationExpirations`- Koneksi yang diautentikasi IAM secara otomatis terputus setelah 12 jam. Koneksi dapat diperpanjang dengan mengirim `AUTH` atau `HELLO` perintah dengan token otentikasi IAM baru.
+ `IamAuthenticationThrottling`— Menunjukkan terlalu banyak permintaan otentikasi, yang mungkin berarti aplikasi Anda menghasilkan token terlalu agresif atau memiliki masalah penyatuan koneksi.

Untuk cluster berbasis node, Anda dapat melakukan pemeriksaan tingkat mesin tambahan:
+ `ACL LOG`— Periksa upaya otentikasi yang gagal. Cari entri dengan`reason=auth`.
+ `CLIENT LIST`— Verifikasi pengguna yang terhubung. Periksa `user=` bidang untuk mengonfirmasi klien menggunakan pengguna IAM.

`ACL LOG`dan `CLIENT LIST` hanya tersedia di cluster berbasis node. Untuk penerapan ElastiCache Tanpa Server, andalkan pencatatan sisi aplikasi dan metrik Amazon. CloudWatch 

### Langkah 3: Hapus pengguna berbasis kata sandi
<a name="auth-to-iam-remove-user"></a>

Setelah Anda mengonfirmasi bahwa semua aplikasi menggunakan otentikasi IAM, hapus pengguna berbasis kata sandi dari grup pengguna.

**Cache Valkey**

Hapus pengguna berbasis kata sandi secara langsung:

Untuk Linux, macOS, atau Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-remove {{<password-user-id>}}
```

Untuk Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-remove {{<password-user-id>}}
```

**Redis OSS cache**

Untuk cache Redis OSS, grup pengguna harus selalu berisi pengguna dengan nama pengguna. `default` Jika pengguna berbasis kata sandi yang Anda buat di Langkah 1 memiliki nama pengguna`default`, Anda harus membuat pengguna placeholder yang dinonaktifkan untuk menggantinya sebelum menghapusnya:

Untuk Linux, macOS, atau Unix:

```
aws elasticache create-user \
   --user-id {{<disabled-default-id>}} \
   --user-name default \
   --engine redis \
   --no-password-required \
   --access-string "off ~* -@all"
```

Untuk Windows:

```
aws elasticache create-user ^
   --user-id {{<disabled-default-id>}} ^
   --user-name default ^
   --engine redis ^
   --no-password-required ^
   --access-string "off ~* -@all"
```

Kemudian tambahkan pengguna yang dinonaktifkan ke grup dan hapus pengguna berbasis kata sandi:

Untuk Linux, macOS, atau Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-add {{<disabled-default-id>}} \
   --user-ids-to-remove {{<password-user-id>}}
```

Untuk Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-add {{<disabled-default-id>}} ^
   --user-ids-to-remove {{<password-user-id>}}
```

Jika pengguna berbasis kata sandi yang Anda buat di Langkah 1 tidak memiliki nama pengguna`default`, Anda dapat menghapusnya secara langsung menggunakan perintah yang sama yang ditunjukkan untuk cache Valkey di atas.

Ganti:
+ {{<disabled-default-id>}}— ID unik untuk pengguna placeholder yang dinonaktifkan (hanya Redis OSS).
+ {{<user-group-id>}}— ID grup pengguna yang terkait dengan cache Anda.
+ {{<password-user-id>}}— ID pengguna pengguna berbasis kata sandi untuk dihapus.

**catatan**  
Jangan hapus pengguna berbasis kata sandi setelah menghapusnya dari grup pengguna. Tetap tersedia jika Anda perlu memutar kembali ke otentikasi berbasis kata sandi.

### Langkah 4: Konfirmasikan pasca-penghapusan
<a name="auth-to-iam-confirm"></a>

Setelah menghapus pengguna berbasis kata sandi dari grup pengguna, pantau metrik Amazon`AuthenticationFailures`. CloudWatch Nilai berkelanjutan nol menegaskan tidak ada kegagalan otentikasi yang terjadi, termasuk upaya berbasis kata sandi residual. Atur CloudWatch alarm pada metrik ini untuk mendeteksi upaya tak terduga.

Untuk cluster berbasis node, Anda juga dapat memverifikasi menggunakan dan. `ACL LOG` `CLIENT LIST` Untuk cache tanpa server, andalkan logging dan metrik sisi aplikasi. CloudWatch 

## Prosedur rollback
<a name="auth-to-iam-rollback"></a>

Re-add pengguna berbasis kata sandi ke grup pengguna, lalu pulihkan autentikasi berbasis kata sandi di aplikasi Anda saat Anda menyelidiki.

Untuk cache Valkey:

Untuk Linux, macOS, atau Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-add {{<password-user-id>}}
```

Untuk Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-add {{<password-user-id>}}
```

Untuk cache Redis OSS di mana pengguna berbasis kata sandi tidak memiliki nama pengguna`default`, gunakan perintah yang sama di atas.

Untuk cache Redis OSS tempat Anda membuat pengguna placeholder yang dinonaktifkan[Langkah 3: Hapus pengguna berbasis kata sandi](#auth-to-iam-remove-user), tambahkan pengguna berbasis kata sandi dan hapus pengguna placeholder yang dinonaktifkan dalam satu operasi:

Untuk Linux, macOS, atau Unix:

```
aws elasticache modify-user-group \
   --user-group-id {{<user-group-id>}} \
   --user-ids-to-add {{<password-user-id>}} \
   --user-ids-to-remove {{<disabled-default-id>}}
```

Untuk Windows:

```
aws elasticache modify-user-group ^
   --user-group-id {{<user-group-id>}} ^
   --user-ids-to-add {{<password-user-id>}} ^
   --user-ids-to-remove {{<disabled-default-id>}}
```

Ganti:
+ {{<user-group-id>}}— ID grup pengguna yang terkait dengan cache Anda.
+ {{<password-user-id>}}— ID pengguna pengguna berbasis kata sandi untuk ditambahkan kembali.
+ {{<disabled-default-id>}}— ID pengguna pengguna placeholder yang dinonaktifkan (hanya Redis OSS).