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:Connecttindakan 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:valkeyatauredis.<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:valkeyatauredis.
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:valkeyatauredis.<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 mengirimAUTHatauHELLOperintah 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. Periksauser=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).