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 otentikasi berbasis kata sandi (AUTH) ke otentikasi (IAM) tanpa gangguan layanan AWS Identity and Access Management .

catatan

Sebaiknya uji migrasi ini di lingkungan non-produksi sebelum menerapkan perubahan ke lingkungan produksi Anda.

Gambaran umum

Otentikasi IAM memberikan keamanan yang ditingkatkan dengan menghilangkan kebutuhan akan kata sandi 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. Otentikasi IAM tidak didukung pada versi mesin sebelumnya.

  • In-transit Enkripsi (TLS) diaktifkan pada cache Anda. Otentikasi 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 atau pengguna IAM 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 otentikasi 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 otentikasi berbasis kata sandi dan IAM selama periode migrasi.

Membuat pengguna otentikasi berbasis kata sandi

catatan

Jika Anda sudah memiliki pengguna berbasis kata sandi yang dikonfigurasi, Anda dapat melewatkan 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 yang digunakan cache Anda: 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 yang digunakan cache Anda: valkey atauredis.

Langkah 2: Buat dan lampirkan grup pengguna

Jika Anda sudah memiliki grup pengguna yang berisi pengguna berbasis kata sandi Anda, 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 yang digunakan cache Anda: 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. Pastikan 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: Terhubung dengan IAM

Menghasilkan token otentikasi IAM

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

Hubungkan menggunakan valkey-cli

Hubungkan 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, gunakanredis-cli.

valkey-cli -h <host> -p 6379 --tls

Untuk cluster yang diaktifkan mode cluster, tambahkan --cluster flag:

valkey-cli -h <host> -p 6379 --tls --cluster

Kemudian autentikasi dengan perintah berikut:

AUTH <username> <token>

Ganti:

  • <host>— Titik akhir cache Anda.

  • <username>— Nama 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 Cre AWS dentials default untuk menghasilkan kredenSIAL keamanan sementara. Untuk informasi selengkapnya, lihat Autentikasi dengan IAM. Untuk bahasa lain, buat token otentikasi IAM menggunakan proses penandatanganan AWS Signature Version 4 dan berikan sebagai kata sandi dalam AUTH perintah klien Anda.

Menyelesaikan migrasi

Setelah aplikasi Anda dapat terhubung menggunakan otentikasi 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 otentikasi IAM sebagai metode utama sambil mempertahankan pengguna berbasis kata sandi sebagai cadangan.

Dalam kode aplikasi Anda:

  • Konfigurasikan klien Anda untuk mengotentikasi menggunakan IAM-generated token sebagai metode utama.

  • Tambahkan mekanisme fallback sehingga jika otentikasi IAM gagal (misalnya, karena kedaluwarsa token atau kesalahan pembuatan), klien akan mencoba lagi menggunakan kredensi AUTH berbasis kata sandi.

  • Catat semua upaya otentikasi, termasuk cadangan 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 IamAuthenticationExpirations dan IamAuthenticationThrottling Amazon selama setidaknya 24-48 jam untuk mengonfirmasi bahwa semua koneksi melalui IAM.

Nilai bukan nol untuk investigasi waran metrik:

  • IamAuthenticationExpirations— Koneksi yang diautentikasi IAM secara otomatis terputus setelah 12 jam. Koneksi dapat diperpanjang dengan mengirim HELLO perintah AUTH atau dengan token otentikasi IAM baru.

  • IamAuthenticationThrottling— Menunjukkan terlalu banyak permintaan otentikasi, yang mungkin berarti aplikasi Anda menghasilkan token terlalu agresif atau memiliki masalah pengumpulan 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. Centang user= bidang untuk mengonfirmasi bahwa klien menggunakan pengguna IAM.

ACL LOGdan CLIENT LIST hanya tersedia pada cluster berbasis node. Untuk ElastiCache penerapan tanpa server, andalkan logging 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>

Cache Redis OSS

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 yang akan dihapus.

catatan

Jangan menghapus pengguna berbasis kata sandi setelah menghapusnya dari grup pengguna. Simpan 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 Amazon. AuthenticationFailures CloudWatch Nilai nol yang berkelanjutan mengkonfirmasi tidak ada kegagalan otentikasi yang terjadi, termasuk upaya berbasis kata sandi sisa. Setel CloudWatch alarm pada metrik ini untuk mendeteksi upaya tak terduga.

Untuk cluster berbasis node, Anda juga dapat memverifikasi menggunakan ACL LOG dan. 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 otentikasi 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 dari pengguna placeholder yang dinonaktifkan (hanya Redis OSS).