Halaman ini menjelaskan proses login ke instance AlloyDB untuk PostgreSQL menggunakan akun yang disiapkan dengan Identity and Access Management (IAM). Contoh ini mengilustrasikan prosesnya
dengan menunjukkan cara melakukan login berbasis IAM menggunakan klien command line
psql
.
Untuk ringkasan cara menghubungkan ke instance AlloyDB, lihat Ringkasan koneksi.
Sebelum memulai
Project, cluster, instance, dan akun pengguna IAM Anda semuanya memerlukan persiapan sebelum Anda dapat login ke instance AlloyDB menggunakan kredensial IAM.
Untuk informasi selengkapnya, lihat Mengelola autentikasi IAM.
Melakukan autentikasi dengan token OAuth 2.0
Pengguna atau aplikasi dapat melakukan autentikasi dengan database AlloyDB dengan mengikuti langkah-langkah berikut:
Jika Anda belum melakukannya, beri otorisasi Google Cloud CLI menggunakan akun pengguna atau akun layanan yang sama dengan yang ingin Anda gunakan untuk login ke instance AlloyDB.
Minta token OAuth 2.0 dari Google Cloud menggunakan perintah
gcloud auth print-access-token
:gcloud auth print-access-token
Google Cloud mencetak token OAuth 2.0 sebagai output perintah ini.
Untuk keamanan tambahan, Anda dapat membatasi token untuk digunakan hanya dengan autentikasi AlloyDB dengan mengikuti langkah-langkah alternatif berikut:
Tambahkan cakupan
alloydb.login
ke kredensial akses lingkungan Anda saat ini menggunakan perintahgcloud auth application-default login
, jika Anda belum melakukannya:gcloud auth application-default login --scopes=https://www.googleapis.com/auth/alloydb.login,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,openid
Cetak token OAuth 2.0 yang dibatasi menggunakan perintah
gcloud auth application-default print-access-token
, yang mencakup token hanya untuk autentikasi AlloyDB:gcloud auth application-default print-access-token –-scopes=https://www.googleapis.com/auth/alloydb.login
Token OAuth 2.0 memungkinkan Anda—atau siapa saja—membuat permintaan yang diautentikasi ke Google Cloud atas nama Anda. Perlakukan token dengan tingkat keamanan yang sama dengan sandi. Simpan token dengan aman, atau jangan simpan sama sekali. Contoh penggunaan
psql
nanti di halaman ini menunjukkan cara meminta, menggunakan, dan menghapus token OAuth 2.0 dalam satu tindakan.Login ke instance AlloyDB dengan teknik PostgreSQL standar, menggunakan kredensial ini:
Tampilkan token akses yang Anda peroleh di langkah sebelumnya sebagai sandi Anda.
Untuk akun pengguna IAM, nama pengguna database adalah alamat email lengkap akun.
Untuk akun layanan IAM, nama pengguna database adalah alamat email akun tanpa akhiran
.gserviceaccount.com
.
Perintah psql
berikut menunjukkan salah satu cara untuk login ke pengguna IAM di command line. Fungsi ini menetapkan output gcloud
auth print-access-token
ke variabel lingkungan PGPASSWORD
, yang kemudian digunakan psql
sebagai sandi login database.
PGPASSWORD=$(gcloud auth print-access-token) psql \
-h INSTANCE_ADDRESS \
-U USERNAME \
-d DATABASE
Ganti kode berikut:
INSTANCE_ADDRESS
: Alamat IP instance AlloyDB yang akan dihubungkan.USERNAME
: ID untuk pengguna IAM agar dapat melakukan autentikasi dengan instance.Untuk akun pengguna IAM, berikan alamat email lengkap akun pengguna. Misalnya,
kai@altostrat.com
.Untuk akun layanan IAM, berikan alamat akun layanan tanpa akhiran
.gserviceaccount.com
. Misalnya, untuk menentukan akun layananmy-service@my-project.iam.gserviceaccount.com
, Anda akan menggunakan nilaimy-service@my-project.iam
di sini.DATABASE
: Nama database yang akan dihubungkan.
Perhatikan bahwa psql
memotong sandi yang dimasukkan di command line yang panjangnya lebih dari 100 karakter. Untuk menggunakan psql
dengan token OAuth 2.0 sebagai sandi login,
Anda harus menetapkan variabel lingkungan PGPASSWORD
seperti yang ditunjukkan dalam
contoh ini, bukan menempelkannya secara manual saat diminta.
Melakukan autentikasi secara otomatis menggunakan Proxy Auth AlloyDB atau Konektor Bahasa AlloyDB
Anda dapat menggunakan Proxy Auth AlloyDB atau Konektor Bahasa AlloyDB untuk secara otomatis melakukan autentikasi pengguna AlloyDB berbasis IAM, dan terhubung ke instance tanpa perlu memberikan token OAuth 2.0.
Penggunaan Proxy Auth AlloyDB memerlukan pengoperasian klien Proxy Auth AlloyDB dengan
tanda --auto-iam-authn
diaktifkan, sedangkan Konektor Bahasa AlloyDB memerlukan pengaktifan
autentikasi IAM secara terprogram.
Saat menggunakan Konektor Bahasa, ada opsi yang sesuai untuk setiap bahasa. Lihat Mengonfigurasi Konektor Bahasa AlloyDB untuk mengetahui detailnya.
Akun IAM yang Anda gunakan untuk menjalankan
klien proxy atau Language Connector harus sama dengan akun
yang Anda tambahkan sebagai pengguna database. Misalnya, jika menjalankan beban kerja
menggunakan akun pengguna IAM kai@altostrat.com
, Anda dapat menggunakan
klien proxy atau Konektor Bahasa untuk
mengautentikasi pengguna database kai@altostrat.com
secara otomatis tanpa
menentukan token OAuth 2.0. Dalam contoh ini, autentikasi otomatis tidak
berfungsi dengan pengguna database lain kecuali kai@altostrat.com
.
Untuk informasi selengkapnya tentang cara menjalankan Proxy Auth, lihat Menghubungkan menggunakan Proxy Auth AlloyDB.
Untuk informasi selengkapnya tentang cara menjalankan Konektor Bahasa, lihat Menghubungkan menggunakan Konektor Bahasa AlloyDB.
Memecahkan masalah autentikasi IAM
Untuk menentukan penyebab kegagalan upaya autentikasi berbasis IAM, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Logs Explorer:
Di bagian Jenis resource, klik Instance AlloyDB.
Di bagian Severity, klik Alert.
Jika Notifikasi bukan merupakan opsi, berarti tidak ada kegagalan autentikasi yang dicatat dalam periode waktu yang dipilih. Anda mungkin perlu menyesuaikan jendela menggunakan kontrol Logs Explorer.
Di bagian Query results, periksa entri log untuk menemukan salah satu pesan berikut:
Request had invalid authentication credentials.
- Token akses tidak valid.
Caller does not have required permission to use project.
- Akun utama IAM tidak memiliki peran IAM yang diperlukan atau izin. Pesan error lengkap menentukan peran atau izin yang tidak ada.
IAM principal does not match database user.
Akun utama IAM yang diautentikasi dan ditentukan oleh token akses tidak cocok dengan pengguna database yang ingin Anda gunakan untuk terhubung.
Untuk melihat akun utama yang ditentukan oleh token, jalankan perintah berikut:
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=ACCESS_TOKEN" https://www.googleapis.com/oauth2/v1/tokeninfo
Ganti
ACCESS_TOKEN
dengan token akses OAuth 2.0.Request had insufficient scopes.
- Token akses tidak berisi cakupan
alloydb.login
atau cakupancloud-platform
. Setidaknya salah satu cakupan ini diperlukan.