Autentikasi IAM

Google Cloud menawarkan Identity and Access Management (IAM), yang memungkinkan Anda memberikan akses ke resource Google Cloud tertentu dan mencegah akses yang tidak diinginkan ke resource lain. Halaman ini menjelaskan cara Cloud SQL terintegrasi dengan IAM dan cara Anda dapat menggunakan IAM untuk mengelola akses ke resource Cloud SQL dan untuk autentikasi database. Untuk mengetahui deskripsi mendetail Google Cloud IAM, lihat dokumentasi IAM.

Cloud SQL menyediakan sekumpulan peran standar yang dirancang untuk membantu Anda mengontrol akses ke resource Cloud SQL. Anda juga dapat membuat peran khusus Anda sendiri, jika peran yang telah ditetapkan tidak menyediakan kumpulan izin yang Anda perlukan. Selain itu, peran dasar lama (Editor, Viewer, dan Pemilik) juga masih tersedia untuk Anda, meskipun mereka tidak memberikan kontrol terperinci yang sama dengan peran Cloud SQL. Secara khusus, peran dasar memberikan akses ke resource di Google Cloud, bukan hanya untuk Cloud SQL. Untuk mengetahui informasi selengkapnya tentang peran dasar Google Cloud, lihat Peran dasar.

Anda dapat menetapkan kebijakan IAM di level mana pun dalam hierarki resource: level organisasi, level folder, atau level project. Resource mewarisi kebijakan semua resource induknya.

Referensi IAM untuk Cloud SQL

Konsep autentikasi IAM

Saat menggunakan autentikasi IAM, izin untuk mengakses resource (instance Cloud SQL) tidak diberikan langsung kepada pengguna akhir. Sebagai gantinya, izin dikelompokkan ke dalam beberapa peran, dan peran tersebut diberikan kepada akun utama. Untuk informasi lebih lanjut, lihat Ringkasan IAM.

Administrator yang memiliki pengguna yang login melalui autentikasi database IAM dapat menggunakan autentikasi IAM untuk mengelola kontrol akses ke instance mereka secara terpusat menggunakan kebijakan IAM.

Kebijakan IAM mencakup entity berikut:

  • Akun utama. Di Cloud SQL, Anda dapat menggunakan beberapa jenis akun utama: akun pengguna, akun layanan (untuk aplikasi), atau grup. Untuk mengetahui informasi selengkapnya, lihat Konsep yang terkait dengan identitas.
  • Peran. Peran adalah kumpulan izin. Anda dapat memberikan peran kepada akun utama untuk memberi mereka hak istimewa yang diperlukan guna menyelesaikan tugas tertentu. Misalnya, dengan autentikasi database IAM, akun utama memerlukan izin cloudsql.instances.login untuk login ke instance, yang disertakan dalam peran Cloud SQL Instance User. Untuk mendapatkan izin, Anda mengikat pengguna, akun layanan, atau grup ke peran Cloud SQL bawaan atau peran kustom yang menyertakan izin tersebut. Untuk mengetahui informasi selengkapnya tentang peran IAM, lihat Peran.
  • Resource. Resource yang diakses utama adalah instance Cloud SQL. Secara default, binding kebijakan IAM diterapkan di level project, sehingga akun utama menerima izin peran untuk semua instance Cloud SQL dalam project.

Autentikasi database IAM

Autentikasi database adalah proses memverifikasi identitas pengguna yang mencoba mengakses database. Di Cloud SQL, Anda dapat menggunakan jenis autentikasi database berikut untuk pengguna database:

  • Autentikasi bawaan database menggunakan nama pengguna dan sandi untuk mengautentikasi pengguna database.
  • Autentikasi database IAM menggunakan IAM untuk mengautentikasi pengguna dengan menggunakan token akses. Anda memiliki dua opsi untuk mengelola pengguna atau akun layanan.
    • Per individu: Secara default, saat menggunakan autentikasi database IAM, Anda memberikan peran IAM dan menetapkan hak istimewa database kepada setiap pengguna dan akun layanan. Anda menambahkan akun individual ke instance dan mengelola hak istimewa setiap akun secara terpisah.
    • Menurut grup: Autentikasi grup IAM memungkinkan Anda mengontrol akses ke instance Cloud SQL di tingkat grup. Misalnya, Anda dapat menetapkan peran Identity and Access Management dan hak istimewa database ke grup Cloud Identity. Semua pengguna dan akun layanan dalam grup Cloud Identity mewarisi peran IAM dan hak istimewa database yang ditetapkan ke grup.

Membandingkan opsi autentikasi database

Tabel berikut membandingkan berbagai metode autentikasi database untuk Cloud SQL.

Fitur Autentikasi database bawaan Autentikasi database IAM (perorangan) Autentikasi grup IAM
Metode autentikasi Sandi Token autentikasi sementara Token autentikasi sementara
Enkripsi traffic jaringan SSL tidak diperlukan SSL diperlukan SSL diperlukan
Pengelolaan pengguna Manual Terpusat melalui IAM Terpusat melalui grup IAM dan Cloud Identity

Autentikasi grup IAM

Autentikasi grup IAM memungkinkan Anda mengelola pengguna Cloud SQL di tingkat grup. Contoh grup mencakup grup Cloud Identity. Fitur ini menyederhanakan pengelolaan pengguna database. Anda dapat mengelola peran atau izin IAM Cloud SQL untuk beberapa akun sekaligus, tanpa harus memperbarui setiap pengguna atau akun layanan satu per satu. Anda juga dapat memberikan dan mencabut hak istimewa database untuk grup Cloud Identity. Setiap akun baru yang Anda tambahkan ke grup Cloud Identity akan mewarisi hak istimewa grup tersebut.

Dengan autentikasi grup IAM, Anda dapat melakukan hal berikut:

  • Tambahkan pengguna ke grup dan minta pengguna tersebut mewarisi peran IAM dan hak istimewa databasenya secara otomatis.
  • Hapus pengguna dari grup untuk menghapus akses login dan hak istimewa database mereka dari database Cloud SQL.
  • Berikan hak istimewa login atau database ke grup satu kali, bukan harus memberikan hak istimewa yang sama beberapa kali kepada pengguna yang berbeda.
  • Hapus izin login atau akses ke objek database untuk grup sekaligus.

Meskipun peran dan izin IAM ditetapkan di tingkat grup, pengguna dan akun layanan menggunakan akun dan kredensial IAM individual mereka, bukan akun grup bersama untuk login. Cloud SQL membuat akun database di instance untuk akun pengguna atau akun layanan tersebut setelah login pertamanya.

Aktivitas login dan database individual untuk setiap pengguna atau akun layanan akan muncul di log audit. Untuk tujuan audit, Anda mendapatkan manfaat untuk melihat akun mana yang melakukan tindakan tertentu di database Anda.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan grup Cloud Identity, lihat Ringkasan Cloud Identity.

Saat Anda menambahkan pengguna atau akun layanan ke grup, perubahan berikut akan terjadi di Cloud SQL:

  • Jika Anda telah memberikan izin login IAM ke grup, pengguna atau akun layanan akan mendapatkan kemampuan untuk login ke instance Cloud SQL karena pengguna atau akun layanan tersebut adalah anggota grup.
  • Pengguna otomatis mewarisi hak istimewa database yang telah diberikan kepada grup.

Saat Anda menghapus akun pengguna atau akun layanan dari grup, perubahan berikut akan terjadi di Cloud SQL:

  • Pengguna kehilangan hak istimewa database yang sebelumnya diwarisi dengan menjadi anggota grup.
  • Pengguna mungkin masih dapat login jika mereka menerima izin login IAM untuk instance Cloud SQL melalui keanggotaan grup lainnya. Namun, pengguna tidak akan memiliki hak istimewa database dari keanggotaan grup sebelumnya saat login.

Praktik terbaik autentikasi grup IAM

  • Saat Anda mencabut izin login (cloudsql.instances.login) untuk grup IAM di Cloud Identity, pastikan Anda juga menghapus grup dari instance Cloud SQL.
  • Saat Anda menghapus grup dari Cloud Identity, pastikan Anda juga menghapus grup tersebut dari instance Cloud SQL.
  • Gunakan grup untuk mengonfigurasi kontrol akses berbasis peran di database Anda. Selalu berikan hak istimewa yang paling sedikit diperlukan ke grup.
  • Jangan berikan peran autentikasi grup IAM kepada pengguna bawaan. Misalnya, jika Anda memiliki pengguna bawaan, user-a, dan membuat pengguna autentikasi grup IAM, user-b@example.com, jangan berikan peran user-b@example.com ke user-a.

Batasan autentikasi grup IAM

  • Anda dapat menambahkan maksimum 200 grup IAM ke instance.
  • Anda tidak dapat menambahkan akun pengguna atau akun layanan IAM individual yang termasuk dalam grup di instance yang sama. Dengan kata lain, Anda tidak dapat menambahkan akun dengan jenis CLOUD_IAM_USER atau CLOUD_IAM_SERVICE_ACCOUNT jika sudah ada akun identik dengan jenis CLOUD_IAM_GROUP_USER atau CLOUD_IAM_GROUP_SERVICE_ACCOUNT.
  • Jika akun perorangan sudah ada di instance dengan jenis CLOUD_IAM_USER atau CLOUD_IAM_SERVICE_ACCOUNT, akun tersebut tidak dapat digunakan untuk autentikasi grup IAM. Jenis pengguna ini tidak mewarisi peran IAM dan hak istimewa database dari grup.

    Untuk memperbaiki masalah ini dan menggunakan akun dengan autentikasi grup IAM, hapus akun pengguna atau akun layanan IAM individu.

    Untuk mengetahui informasi selengkapnya, lihat Akun pengguna atau layanan IAM yang ada tidak mewarisi hak istimewa database yang diberikan ke grupnya.
  • Perubahan pada keanggotaan grup Cloud Identity, seperti penambahan akun, memerlukan waktu sekitar 15 menit untuk diterapkan. Hal ini selain waktu yang diperlukan untuk perubahan IAM.

Autentikasi database IAM otomatis versus manual

Cloud SQL untuk MySQL memiliki dua opsi untuk autentikasi database IAM: otomatis dan manual.

Autentikasi database IAM otomatis

Autentikasi database IAM otomatis memungkinkan Anda menyerahkan permintaan dan pengelolaan token akses ke konektor Cloud SQL perantara, seperti Proxy Auth Cloud SQL atau salah satu Konektor Bahasa Cloud SQL. Dengan autentikasi database IAM otomatis, pengguna hanya perlu meneruskan nama pengguna database IAM dalam permintaan koneksi dari klien. Konektor mengirimkan informasi token akses untuk atribut sandi atas nama klien.

Autentikasi database IAM otomatis memerlukan penggunaan konektor Cloud SQL dan didukung oleh Proxy Auth Cloud SQL, konektor Go, konektor Java, dan konektor Python.

Untuk mendapatkan pengalaman yang paling aman dan andal, sebaiknya gunakan autentikasi database IAM otomatis. Autentikasi database IAM menggunakan token akses OAuth 2.0, yang berumur pendek dan hanya valid selama satu jam. Konektor Cloud SQL dapat meminta dan memperbarui token ini, yang memastikan bahwa proses atau aplikasi berumur panjang yang mengandalkan penggabungan koneksi dapat memiliki koneksi yang stabil. Autentikasi database IAM otomatis sangat direkomendasikan daripada autentikasi manual.

Untuk mengetahui informasi selengkapnya, lihat Login dengan autentikasi database IAM otomatis.

Autentikasi database IAM manual

Autentikasi database IAM manual mengharuskan akun utama IAM secara eksplisit meneruskan token akses untuk atribut sandi dalam permintaan koneksi klien. Akun utama harus login ke Google Cloud terlebih dahulu dan secara eksplisit meminta token akses dari IAM.

Dengan menggunakan gcloud CLI, Anda dapat secara eksplisit meminta token OAuth 2.0 dengan cakupan Cloud SQL Admin API yang digunakan untuk login ke database. Ketika login sebagai pengguna database dengan autentikasi database IAM, Anda menggunakan alamat email Anda sebagai nama pengguna dan token akses sebagai sandi. Anda dapat menggunakan metode ini dengan koneksi langsung ke database atau dengan konektor Cloud SQL.

Login dengan autentikasi database IAM hanya dapat dilakukan melalui koneksi SSL.

Untuk mengetahui informasi selengkapnya, lihat Logging dengan autentikasi database IAM manual.

Administrasi akun layanan dan pengguna

Untuk memberi pengguna dan akun layanan akses ke database pada instance menggunakan autentikasi database IAM, Anda harus menambahkannya ke instance atau menambahkannya ke grup yang memiliki akses ke instance. Untuk mengetahui informasi selengkapnya, lihat Menambahkan akun pengguna atau layanan yang menggunakan IAM.

Jika Anda menggunakan konsol Google Cloud untuk menambahkan pengguna atau akun layanan, Cloud SQL akan meminta Anda menambahkan peran "pengguna Cloud SQL" kepada pengguna. Peran ini diperlukan bagi pengguna untuk login ke instance.

Setelah menambahkan pengguna IAM ke database, Anda perlu memberikan hak istimewa database secara manual. Gunakan perintah BERIKAN MySQL untuk memberikan hak istimewa database lainnya.

Konfigurasi instance untuk autentikasi database IAM Cloud SQL

Anda dapat mengaktifkan autentikasi database IAM pada instance menggunakan cloudsql_iam_authentication flag. Setelah flag ini diaktifkan, instance akan mengaktifkan login dari akun yang dikonfigurasi untuk autentikasi database IAM.

Tanda ini diperlukan untuk autentikasi grup IAM dan autentikasi database IAM.

Setelan flag ini tidak akan mencegah pengguna non-IAM yang sudah ada menggunakan nama pengguna dan sandi mereka untuk login. Namun, jika Anda menonaktifkan flag ini pada instance, setiap pengguna yang sebelumnya Anda tambahkan menggunakan autentikasi database IAM akan kehilangan akses ke instance tersebut. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi instance untuk autentikasi database IAM.

Autentikasi database IAM Cloud SQL untuk berbagai skenario instance

Replika baca Autentikasi database IAM tidak diaktifkan secara otomatis dalam replika baca, meskipun sudah diaktifkan di instance utama. Setelah membuat replika baca, Anda perlu menambahkan autentikasi database IAM. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi login replika baca untuk autentikasi database IAM.
Instance yang dipulihkan Jika instance sebelumnya dicadangkan lalu dipulihkan ke instance yang sama atau berbeda dalam project yang sama, otorisasi login pengguna saat ini akan berlaku. Jika Anda memulihkan cadangan ke instance baru di project lain Anda perlu menyiapkan otorisasi pengguna untuk instance baru tersebut. Untuk mengetahui informasi selengkapnya, lihat Menambahkan pengguna atau akun layanan yang menggunakan autentikasi database IAM.

Tentang IAM Conditions

Dengan IAM Conditions, Anda dapat memberikan peran berdasarkan berbagai atribut. Misalnya, Anda dapat mengizinkan akses hanya pada tanggal dan waktu tertentu atau memberikan akses hanya ke resource Cloud SQL dengan nama tertentu.

Untuk mengetahui informasi selengkapnya tentang IAM Conditions lihat halaman Ringkasan IAM Conditions Anda juga dapat mempelajari lebih lanjut cara Menggunakan IAM Conditions dengan Cloud SQL, termasuk contohnya.

Bekerja dengan Cloud Audit Logs

Untuk menyimpan kumpulan data akses data, termasuk login, Anda dapat menggunakan log audit. Cloud Audit Logs dinonaktifkan secara default. Anda harus mengaktifkan Log audit Akses Data untuk login tracking. Penggunaan logging audit untuk tujuan ini akan dikenakan biaya untuk logging data. Untuk mengetahui informasi selengkapnya, lihat Log Audit, Mengonfigurasi Log audit Akses Data dan Harga untuk data logging.

Pembatasan

  1. Login untuk akun pengguna autentikasi database IAM harus menggunakan huruf kecil. Misalnya, example-user@example.com. Example-User@example.com tidak diizinkan.
  2. Untuk keamanan, login yang menggunakan autentikasi database IAM hanya tersedia di koneksi SSL. Koneksi yang tidak terenkripsi ditolak.
  3. Terdapat kuota login per menit untuk setiap instance, yang mencakup login berhasil dan gagal. Jika kuota terlampaui, login tidak akan tersedia untuk sementara. Sebaiknya hindari login yang terlalu sering dan batasi login menggunakan jaringan yang diizinkan. Kuota untuk otorisasi login adalah 12.000 per menit, per instance.
  4. Autentikasi database IAM tidak didukung untuk instance yang menggunakan MySQL 5.6.

Langkah berikutnya