Mengelola autentikasi IAM

Halaman ini memberikan petunjuk tentang tugas umum untuk fitur autentikasi IAM untuk Memorystore for Valkey. Untuk mengetahui detail selengkapnya tentang fitur ini, lihat Tentang autentikasi IAM.

Membuat instance dengan autentikasi IAM

Untuk membuat instance Memorystore for Valkey yang menggunakan autentikasi IAM, jalankan perintah create:

gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --authorization-mode=iam-auth

Ganti kode berikut:

  • INSTANCE_ID adalah ID instance Memorystore for Valkey yang Anda buat. ID instance Anda harus terdiri dari 1 hingga 63 karakter dan hanya menggunakan huruf kecil, angka, atau tanda hubung. ID harus diawali dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.

  • REGION_ID adalah region tempat Anda ingin menempatkan instance.

  • NETWORK adalah jaringan yang digunakan untuk membuat instance Anda. File tersebut harus menggunakan format: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. ID jaringan yang digunakan di sini harus cocok dengan ID jaringan yang digunakan oleh kebijakan koneksi layanan. Jika tidak, operasi create akan gagal. Untuk mengetahui detail selengkapnya, lihat Jaringan.

  • NODE_TYPE adalah jenis node untuk instance.

  • SHARD_COUNT menentukan jumlah shard dalam instance Anda. Jumlah shard menentukan total kapasitas memori untuk menyimpan data instance. Untuk melihat detail selengkapnya tentang spesifikasi instance, lihat Spesifikasi instance dan node.

Memberikan izin untuk autentikasi IAM

Untuk memberikan akses IAM, berikan peran roles/memorystore.dbConnectionUser kepada akun utama menggunakan Petunjuk pemberian peran IAM.

Secara default, memberikan peran roles/memorystore.dbConnectionUser kepada akun utama akan memungkinkan akun utama tersebut mengakses semua instance dalam project Anda.

Membuat peran Admin IAM terbatas untuk instance

Anda mungkin ingin membuat peran yang dapat mengubah izin IAM koneksi instance tanpa memberikan akses administrator IAM penuh. Hal ini dapat dilakukan dengan membuat administrator IAM terbatas untuk peran roles/memorystore.dbConnectionUser. Untuk mengetahui detail selengkapnya, buka Membuat admin IAM terbatas.

Menghubungkan ke instance yang menggunakan autentikasi IAM

  1. Jika Anda belum memiliki VM Compute Engine yang menggunakan jaringan resmi yang sama dengan instance Valkey Anda, buat VM dan hubungkan ke VM tersebut dengan mengikuti Panduan memulai menggunakan VM Linux.

  2. Untuk project Anda, aktifkan cakupan Cloud Platform API. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan cakupan akses ini, lihat Menyertakan akun layanan dan memperbarui cakupan akses. Untuk mengetahui informasi selengkapnya tentang praktik terbaik untuk cakupan ini, lihat Praktik terbaik cakupan.

  3. Untuk project Anda, aktifkan Memorystore for Valkey API.

    Memorystore for Valkey API

  4. Instal valkey-cli di VM Compute Engine dengan mengikuti petunjuk di Menginstal Valkey.

  5. Jalankan perintah berikut untuk mengambil token akses bagi pengguna IAM Anda:

    gcloud auth print-access-token
    

    Masa berlaku token akses akan berakhir dalam satu jam. Untuk mengetahui informasi selengkapnya, lihat Jangka waktu token akses IAM.

  6. Hubungkan ke endpoint penemuan instance Anda:

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    Ganti kode berikut:

    • NETWORK_ADDRESS: alamat jaringan instance. Untuk melihat alamat jaringan, lihat Melihat informasi instance.

    • PORT: nomor port instance. Untuk melihat nomor port, lihat Melihat informasi instance.

    • ACCESS_TOKEN: token akses yang Anda ambil di langkah sebelumnya.

    Jika Anda menentukan nama pengguna, Anda harus menggunakan nama pengguna default atau alamat email akun utama IAM. Selain itu, koneksi yang diautentikasi tetap valid setelah masa berlaku token berakhir. Untuk mengetahui informasi selengkapnya, lihat Jangka waktu token akses IAM.

    Jika Anda mengaktifkan enkripsi dalam transit pada instance, Anda harus menambahkan flag Transport Layer Security (TLS). Contoh:

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
    
  7. Opsional: Jika Anda memiliki instance Cluster Mode Enabled, jalankan perintah CLUSTER SHARDS untuk melihat topologi node Anda. Catat salah satu alamat IP dan nomor port node.

    Jika Anda memiliki instance dengan Mode Cluster Dinonaktifkan, Anda dapat melewati langkah ini.

  8. Untuk menggunakan valkey-cli guna melakukan autentikasi dan terhubung ke node Anda, gunakan perintah berikut:

    valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
    

    Ganti kode berikut:

    • NODE_IP_ADDRESS: alamat IP node yang Anda catat di langkah sebelumnya
    • NODE_PORT: nomor port node yang Anda catat di langkah sebelumnya
    • ACCESS_TOKEN: token akses IAM yang Anda ambil sebelumnya dalam prosedur ini
  9. Untuk memverifikasi bahwa Anda memiliki koneksi yang diautentikasi ke node, jalankan perintah Valkey SET dan GET.

  10. Hapus VM Compute Engine yang Anda gunakan untuk terhubung ke instance. Hal ini membantu Anda menghindari pengenaan biaya pada akun Penagihan Cloud Anda.

Mengotomatiskan pengambilan token akses

Sebaiknya Anda mengotomatiskan pengambilan token akses di aplikasi Anda. Karena masa aktif token akses yang singkat, sulit untuk melakukan hardcode pada token.

  1. (Opsional) Jika Anda belum melakukannya, buat akun layanan untuk aplikasi Anda (lihat Membuat dan mengelola akun layanan).

    gcloud iam service-accounts create SA_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    Ganti kode berikut:

    • SA_NAME adalah nama akun layanan.
    • DESCRIPTION adalah deskripsi opsional akun layanan.
    • DISPLAY_NAME adalah nama akun layanan yang akan ditampilkan di konsolGoogle Cloud .
  2. Beri akun layanan Anda peran memorystore.dbConnectionUser di project Anda.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID." \
    --role=roles/"ROLE_NAME"
    

    Ganti kode berikut:

    • PROJECT_ID: project ID.
    • SA_NAME: nama akun layanan.
    • ROLE_NAME: nama peran. Untuk contoh ini: memorystore.dbConnectionUser.
  3. Mengautentikasi aplikasi Anda sebagai akun layanan yang diberikan. Lihat akun layanan untuk mengetahui informasi selengkapnya.

    Untuk contoh kode yang menunjukkan cara mengautentikasi aplikasi Anda menggunakan library klien populer, lihat Contoh kode library klien.

Contoh kode untuk terhubung ke instance yang menggunakan autentikasi IAM

Untuk melihat contoh kode yang kompatibel dengan Valkey tentang cara menyiapkan library klien untuk terhubung ke instance yang menggunakan autentikasi IAM, lihat Contoh kode untuk autentikasi IAM dan enkripsi dalam pengiriman.

Memecahkan masalah pesan error dengan autentikasi IAM

Pesan error Tindakan yang disarankan Deskripsi

-WRONGPASS invalid username-password pair or user is disabled

Verifikasi token akses yang diberikan ke server Memorystore for Valkey dan pastikan pengguna ACL yang cocok diaktifkan.

Akun utama IAM tidak memiliki izin yang diperlukan, token akses yang Anda berikan tidak valid, atau pengguna ACL yang cocok dinonaktifkan.

Pastikan masa berlaku token akses belum habis dan Anda mengambil token dengan mengikuti petunjuk di Menghubungkan ke instance yang menggunakan autentikasi IAM.

Jika Anda baru saja mengubah izin IAM, mungkin perlu waktu beberapa menit agar izin tersebut diterapkan.

-NOAUTH Authentication required

Pastikan aplikasi dikonfigurasi untuk memberikan token akses IAM ke server Memorystore for Valkey.

Aplikasi tidak menyediakan token akses ke server Memorystore for Valkey.

Pastikan aplikasi dikonfigurasi untuk memberikan token akses dan Anda telah mengambil token akses dengan mengikuti petunjuk di Menghubungkan ke instance yang menggunakan autentikasi IAM.

-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded.

Coba lagi dengan backoff eksponensial.

Backend IAM kelebihan beban dan menampilkan error kuota terlampaui ke server Memorystore for Valkey.

Untuk mencegah kegagalan koneksi lebih lanjut, sebaiknya aplikasi mencoba kembali error ini dengan backoff eksponensial.

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error.

Verifikasi nama pengguna atau coba lagi dengan backoff eksponensial.

Error ini terjadi karena alasan berikut:

  • Nama pengguna yang Anda berikan tidak valid. Anda dapat menggunakan nama pengguna default, menghilangkan nama pengguna, atau menggunakan alamat email akun utama IAM.
  • Backend IAM menampilkan error sementara ke server Memorystore for Valkey.

Jika nama pengguna valid, sebaiknya aplikasi Anda mencoba mengulangi error ini dengan backoff eksponensial untuk mencegah kegagalan koneksi lebih lanjut.