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 diintegrasikan dengan IAM dan cara Anda dapat menggunakan IAM untuk autentikasi database. Untuk penjelasan lengkap tentang Google Cloud IAM, lihat dokumentasi IAM.

Cloud SQL menyediakan serangkaian 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 serangkaian izin yang Anda perlukan. Selain itu, peran dasar lama (Editor, Viewer, dan Pemilik) juga masih tersedia untuk Anda, meskipun 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 semua level dalam hierarki resource: di 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 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. Untuk autentikasi database IAM, akun utama memerlukan izin cloudsql.instances.login untuk login ke instance. Untuk mendapatkan izin ini, Anda harus mengikat pengguna, akun layanan, atau grup ke peran Pengguna Instance Cloud SQL yang telah ditetapkan atau peran khusus yang memaketkan izin. 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

Cloud SQL terintegrasi dengan Identity and Access Management (IAM) untuk membantu Anda mengelola akses login bagi pengguna dan akun layanan untuk database dengan lebih baik. Fitur ini disebut autentikasi database IAM.

Autentikasi adalah proses verifikasi identitas pengguna yang berupaya mengakses sebuah instance. Cloud SQL menggunakan jenis autentikasi 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.
    • Satu per satu: Secara default, saat menggunakan autentikasi database IAM, Anda memberikan peran IAM dan menetapkan hak istimewa database kepada masing-masing pengguna dan akun layanan. Anda dapat menambahkan akun individual ke instance dan mengelola hak istimewa setiap akun secara terpisah.
    • Berdasarkan grup: Dengan autentikasi grup IAM, Anda dapat mengontrol akses ke instance Cloud SQL di tingkat grup. Misalnya, Anda dapat menetapkan peran Identity and Access Management serta hak istimewa database ke grup Cloud Identity. Semua pengguna dan akun layanan di grup Cloud Identity mewarisi peran IAM dan hak istimewa database yang ditetapkan ke grup tersebut. Autentikasi grup IAM berada dalam Pratinjau.

Bandingkan opsi autentikasi database

Tabel berikut membandingkan berbagai metode autentikasi database untuk Cloud SQL.

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

Autentikasi grup IAM

Dengan autentikasi grup IAM, Anda dapat 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 akun layanan atau pengguna 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 dari 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 database mereka secara otomatis.
  • Menghapus pengguna dari grup untuk menghapus akses login dan hak istimewa database mereka dari database Cloud SQL.
  • Berikan hak istimewa database atau login ke grup satu kali, tanpa harus memberikan hak istimewa yang sama beberapa kali kepada pengguna yang berbeda.
  • Menghapus 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 masing-masing, bukan akun grup bersama untuk login. Cloud SQL membuat akun database pada instance untuk akun layanan atau pengguna tersebut setelah login pertama.

Aktivitas login dan database individual untuk setiap akun pengguna atau akun layanan akan muncul di log audit. Untuk tujuan audit, Anda akan mendapatkan manfaat dari melihat akun mana yang melakukan tindakan mana dalam 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 pada Cloud SQL akan terjadi:

  • Jika Anda telah memberikan izin login IAM ke grup, akun pengguna atau akun layanan dapat login ke instance Cloud SQL karena pengguna atau akun layanan merupakan bagian dari grup tersebut.
  • Pengguna secara otomatis mewarisi semua hak istimewa database yang telah diberikan ke grup.

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

  • Pengguna kehilangan semua hak istimewa database yang sebelumnya diwarisi dengan menjadi anggota grup.
  • Pengguna mungkin masih dapat login jika 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.

Pembatasan autentikasi grup IAM

  • Autentikasi grup IAM hanya dapat dikelola melalui gcloud CLI selama pratinjau.
  • Anda dapat menambahkan maksimum 200 grup Cloud Identity ke satu instance.
  • Anda tidak dapat menambahkan akun layanan atau pengguna IAM individual yang merupakan bagian dari grup pada instance yang sama. Dengan kata lain, Anda tidak dapat menambahkan akun dengan jenis CLOUD_IAM_USER atau CLOUD_IAM_SERVICE_ACCOUNT jika akun yang identik dengan jenis CLOUD_IAM_GROUP_USER atau CLOUD_IAM_GROUP_SERVICE_ACCOUNT sudah ada.
  • Jika akun perorangan sudah ada di instance dengan jenis CLOUD_IAM_GROUP_USER atau CLOUD_IAM_GROUP_SERVICE_ACCOUNT, akun tersebut tidak dapat digunakan untuk autentikasi grup IAM. Jenis pengguna ini tidak akan mewarisi peran IAM dan hak istimewa database dari grup.

    Untuk memperbaiki masalah ini dan menggunakan akun dengan autentikasi grup IAM, hapus pengguna IAM atau akun layanan satu per satu. Untuk informasi selengkapnya, lihat Pengguna atau akun 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. Ini merupakan tambahan waktu yang diperlukan untuk perubahan IAM.

    Setelah perubahan diterapkan, pengguna atau akun layanan harus logout dan login kembali agar perubahan dapat diterapkan.

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. 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. Ini didukung oleh Cloud SQL Auth Proxy, 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 suatu instance menggunakan autentikasi database IAM, Anda harus menambahkannya ke instance atau menambahkannya ke grup yang memiliki akses ke instance tersebut. Untuk mengetahui informasi selengkapnya, lihat Menambahkan akun pengguna atau akun 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 Kondisi IAM 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. Untuk keamanan, login yang menggunakan autentikasi database IAM hanya tersedia di koneksi SSL. Koneksi yang tidak terenkripsi ditolak.
  2. 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.
  3. Autentikasi database IAM tidak didukung untuk instance yang menggunakan MySQL 5.6.

Langkah selanjutnya