View a markdown version of this page

Migrasi dari otentikasi berbasis kata sandi (AUTH) ke otentikasi IAM - Amazon ElastiCache

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

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

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.

Prasyarat

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

  • Anda memiliki izin IAM yang diperlukan untuk membuat pengguna dan memodifikasi grup pengguna. Untuk informasi selengkapnya, lihat Bagaimana Amazon ElastiCache bekerja dengan IAM.

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

  • Tidak ada batasan autentikasi IAM tambahan yang berlaku untuk aplikasi Anda. Untuk daftar lengkap batasan, lihatAutentikasi dengan IAM.

Proses migrasi

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

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

  • <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 atauredis.

Langkah 2: Buat dan lampirkan grup pengguna

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.

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

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

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

Menghasilkan token otentikasi IAM

Buat token otentikasi IAM berumur pendek menggunakan permintaan yang telah ditandatangani sebelumnya AWS SiGv4. 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

Untuk aplikasi Java, gunakan rantai penyedia AWS Credentials default untuk menghasilkan kredensil keamanan sementara. Untuk informasi selengkapnya, lihat Autentikasi dengan IAM. Untuk bahasa lain, buat token otentikasi IAM menggunakan proses penandatanganan AWS Signature Version 4 dan teruskan sebagai kata sandi dalam perintah klien AUTH Anda.

Menyelesaikan migrasi

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

Langkah 1: Konfigurasikan otentikasi IAM dengan fallback

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

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 denganreason=auth.

  • CLIENT LIST— Verifikasi pengguna yang terhubung. Periksa user= bidang untuk mengonfirmasi klien menggunakan pengguna IAM.

ACL LOGdan 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

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 penggunadefault, 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 penggunadefault, 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

Setelah menghapus pengguna berbasis kata sandi dari grup pengguna, pantau metrik AmazonAuthenticationFailures. 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

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 penggunadefault, gunakan perintah yang sama di atas.

Untuk cache Redis OSS tempat Anda membuat pengguna placeholder yang dinonaktifkanLangkah 3: Hapus pengguna berbasis kata sandi, 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).