Halaman ini memberikan informasi mengenai peran dan izin Identity and Access Management (IAM) dan cara penggunaannya dengan instance Cloud SQL.
Pengantar
Halaman ini berfokus pada aspek IAM yang relevan khususnya untuk Cloud SQL. Untuk mengetahui pembahasan mendetail tentang IAM dan fitur-fiturnya secara umum, lihat Identity and Access Management. Secara khusus lihat bagian Mengelola Kebijakan IAM. Dengan IAM, Anda dapat mengontrol siapa yang memiliki akses ke resource di project Google Cloud Anda. Serangkaian aturan akses yang Anda terapkan ke resource disebut kebijakan IAM. Suatu kebijakan IAM yang diterapkan ke project Anda menentukan tindakan yang dapat dilakukan pengguna pada semua resource dalam project Anda.
Anggota adalah pihak yang dikelola oleh IAM. Anggota bisa berupa pengguna individu, grup, domain, atau bahkan publik secara keseluruhan. Anggota diberi peran, yang memberi mereka kemampuan untuk melakukan tindakan di Cloud SQL serta Google Cloud secara lebih umum. Setiap peran adalah kumpulan satu atau beberapa izin. Izin adalah unit dasar IAM: setiap izin memungkinkan Anda melakukan tindakan tertentu. Lihat peran IAM di Cloud SQL dan izin IAM di Cloud SQL untuk mengetahui daftar lengkap semua peran dan izin yang tersedia di Cloud SQL.
Saat Anda menggunakan akun untuk terhubung ke instance Cloud SQL,
akun tersebut harus memiliki peran (roles/cloudsql.client
) Cloud SQL > Klien, yang mencakup izin
yang diperlukan untuk terhubung ke instance Cloud SQL.
Anda dapat menambahkan peran ke sebuah akun di Konsol pada halaman IAM & Admin > IAM, dan lihat izin mana yang terhubung ke peran tertentu di halaman IAM & Admin > Peran.
Cloud SQL menggunakan akun layanan untuk autentikasi antara Cloud SQL
dan produk Google Cloud lainnya. Akun layanan menyediakan credentials
dalam
format JSON, yang Anda download dari Konsol dan digunakan untuk autentikasi
dalam berbagai skenario.
Peran dan izin Cloud SQL dengan Proxy Auth Cloud SQL
Jika terhubung ke instance Cloud SQL dari instance Compute Engine menggunakan Cloud SQL Auth Proxy, Anda dapat menggunakan akun layanan Compute Engine default yang terkait dengan instance Compute Engine.
Seperti halnya semua akun yang terhubung ke instance Cloud SQL, akun layanan harus memiliki peran Cloud SQL > Klien.
Peran dan izin Cloud SQL dengan opsi serverless
Opsi serverless Google Cloud mencakup App Engine, Cloud Functions, dan Cloud Run.Gunakan akun layanan untuk mengizinkan akses dari opsi ini. Akun layanan mengizinkan akses ke semua Cloud SQL dalam project tertentu. Saat Anda membuat aplikasi atau Cloud Functions, layanan ini akan membuatkan akun ini untuk Anda. Anda dapat menemukan akun tersebut di halaman IAM & Admin > IAM , dengan akhiran yang sesuai:
Opsi serverless | Akhiran akun layanan |
---|---|
App Engine | @gae-api-prod.google.com.iam.gserviceaccount.com |
Cloud Functions | @appspot.gserviceaccount.com |
Cloud Run | compute@developer.gserviceaccount.com |
Peran dan izin Cloud SQL dengan Cloud Storage
Fitur impor dan ekspor di Cloud SQL bekerja bersama. Mengekspor operasi tulis ke Cloud Storage dan mengimpor data yang dibaca dari sana. Karena alasan ini, akun layanan yang Anda gunakan untuk operasi ini memerlukan izin baca dan tulis ke Cloud Storage:
- Untuk mengimpor data ke, dan mengekspor data dari, Cloud Storage, akun layanan
instance Cloud SQL harus memiliki peran IAM
storage.objectAdmin
yang ditetapkan dalam project. Anda dapat menemukan nama akun layanan instance di konsol Google Cloud di halaman Overview instance Anda. - Anda dapat menggunakan perintah
gsutil iam
untuk memberikan peran IAM ini ke akun layanan untuk bucket. - Untuk mendapatkan bantuan dalam menetapkan peran dan izin IAM, lihat Menggunakan izin IAM.
- Untuk informasi lebih lanjut, lihat IAM untuk Cloud Storage.
Izin untuk mengakses instance Cloud SQL pribadi
Saat layanan Google Cloud lain, seperti BigQuery, perlu berkomunikasi dengan instance Cloud SQL Anda untuk mengakses data dan membuat kueri terhadap data ini melalui koneksi pribadi, layanan ini akan menggunakan jalur internal bukan alamat IP pribadi di dalam Virtual Private Cloud (VPC). Traffic tidak dapat dikontrol atau dibatasi dengan konfigurasi tingkat VPC, aturan firewall, kebijakan rute, atau dengan memotong peering.
Sebagai gantinya, Cloud SQL menawarkan flag konfigurasi pada instance Anda untuk mengontrol apakah jalur internal ini perlu diaktifkan atau dinonaktifkan untuk layanan Google Cloud lain yang mengakses database Anda.
Mengontrol dan mencabut izin
Saat layanan Google Cloud lain, seperti BigQuery, mencoba
mengakses instance Cloud SQL pribadi Anda, layanan tersebut harus memberikan identitas yang sah
dengan izin IAM cloudsql.instances.connect
.
Biasanya, ada dua cara yang dapat digunakan layanan untuk mencapai hal ini:
- Meneruskan kredensial pengguna. Sebuah layanan dapat meneruskan identitas IAM pengguna ke Cloud SQL untuk mengevaluasi izin dalam mengakses instance. Dalam skenario ini, pengguna harus memiliki izin IAM yang memadai agar Cloud SQL dapat berhasil membuat koneksi.
Menggunakan akun layanan Sebuah layanan, seperti BigQuery, dapat menggunakan akun layanan yang telah dikonfigurasi sebelumnya untuk terhubung ke instance Cloud SQL. Dalam hal ini, akun layanan harus memiliki izin IAM yang memadai.
Misalnya, untuk koneksi gabungan antara BigQuery dan Cloud SQL, akun layanan bernama
service-{PROJECT_NUMBER}@gcp-sa-bigqueryconnection.iam.gserviceaccount.com
akan dibuat saat BigQuery connection API diaktifkan. Akun layanan ini memiliki dua izin Cloud SQL:cloudsql.instances.connect
dancloudsql.instances.get
. BigQuery menggunakan izin ini untuk mengakses instance Cloud SQL pribadi melalui sebuah jalur internal.
Untuk mengontrol izin terkait siapa yang dapat menggunakan jalur internal ini, Anda dapat memberikan dan mencabut izin IAM ke dan dari identitas IAM pengguna yang digunakan oleh layanan Google Cloud, seperti BigQuery, untuk terhubung ke instance Cloud SQL Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan dan mencabut izin dalam BigQuery, lihat Menyiapkan akses ke Cloud SQL.
Peran dan izin Cloud SQL dengan skenario lain
Cloud SQL berinteraksi dengan produk dan alat Google Cloud lainnya. Interaksi ini juga memerlukan peran dan izin tertentu yang dapat bervariasi di setiap skenario. Dokumentasi Cloud SQL memberikan informasi mendetail tentang persyaratan ini untuk setiap kasus di bawah:
- Terhubung ke Cloud SQL dari aplikasi eksternal.
- Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK).
- Peran IAM untuk Mengelola Kontrol Layanan VPC.
- Untuk terhubung ke instance Cloud SQL dari aplikasi yang berjalan di Google Kubernetes Engine, Anda perlu membuat Secret untuk sebuah file kunci JSON akun layanan.
Menggunakan IAM dengan project
Bagian berikut menunjukkan cara menyelesaikan tugas IAM dasar pada project.
Untuk menyelesaikan tugas berikut, Anda harus memiliki
resourcemanager.projects.getIamPolicy
dan
resourcemanager.projects.setIamPolicy
izin IAM.
Menambahkan anggota ke kebijakan level project
Untuk mengetahui daftar peran yang terkait dengan Cloud SQL, lihat Peran IAM.
Konsol
- Buka halaman IAM & Admin di konsol Google Cloud
- Dalam menu drop-down project di panel atas, pilih project yang ingin Anda tambah anggotanya.
- Klik Tambahkan. Dialog Tambahkan anggota, peran ke project akan muncul.
- Di kolom Anggota baru, masukkan nama entity yang ingin Anda beri akses.
- Di menu drop-down Pilih peran, berikan peran yang sesuai kepada anggota. Peran yang memengaruhi resource Cloud SQL ditemukan dalam submenu Project dan Cloud SQL.
- Klik Simpan.
gsutil
Kebijakan IAM level project dikelola melalui perintah gcloud
,
yang merupakan bagian dari Google Cloud SDK. Untuk menambahkan kebijakan
level project, gunakan gcloud beta projects add-iam-policy-binding
.
Melihat kebijakan IAM untuk project
Konsol
- Buka halaman IAM & Admin di konsol Google Cloud
- Dalam menu drop-down project di panel atas, pilih project yang kebijakannya ingin Anda lihat.
- Ada dua cara untuk melihat izin project:
- Lihat berdasarkan Anggota: Lihat kolom Peran yang terkait dengan masing-masing anggota untuk melihat peran yang dimiliki setiap anggota.
- Lihat berdasarkan Peran: Gunakan menu drop-down yang terkait dengan setiap peran untuk melihat anggota yang memiliki peran tersebut.
gsutil
Kebijakan IAM level project dikelola melalui perintah gcloud
,
yang merupakan bagian dari Google Cloud SDK. Untuk melihat
kebijakan IAM suatu project, gunakan perintah gcloud beta projects get-iam-policy
.
Menghapus anggota dari kebijakan level project
Konsol
- Buka halaman IAM & Admin di konsol Google Cloud
- Pada menu drop-down project di panel atas, pilih project yang ingin Anda hapus anggotanya.
- Pastikan Anda melihat izin berdasarkan Anggota, lalu pilih anggota yang ingin dihapus.
- Klik Hapus.
- Di jendela overlay yang muncul, klik Konfirmasi.
gsutil
Kebijakan IAM level project dikelola melalui perintah gcloud
, yang
merupakan bagian dari Google Cloud SDK. Untuk menghapus kebijakan level project, gunakan
gcloud beta projects remove-iam-policy-binding
.
Praktik terbaik
IAM, seperti setelan administratif lainnya, memerlukan pengelolaan aktif agar bisa bekerja dengan efektif. Sebelum Anda membuat resource agar dapat diakses oleh pengguna lain, pastikan Anda mengetahui peran apa yang Anda ingin mereka lakukan. Seiring waktu, perubahan dalam pengelolaan project, pola penggunaan, dan kepemilikan organisasi mungkin mengharuskan Anda untuk mengubah setelan IAM pada project, terutama jika Anda mengelola Cloud SQL dalam organisasi besar atau untuk sekelompok besar pengguna. Saat Anda mengevaluasi dan merencanakan setelan kontrol akses, selalu ingat praktik terbaik berikut:
Gunakan prinsip hak istimewa terendah saat memberikan akses. Prinsip hak istimewa terendah adalah panduan keamanan untuk memberikan akses ke resource Anda. Saat memberikan akses berdasarkan prinsip hak istimewa terendah, Anda memberikan akses yang dibutuhkan pengguna hanya untuk menyelesaikan tugas yang diberikan kepada pengguna.
Hindari memberikan peran dengan izin
setIamPolicy
kepada orang yang tidak Anda kenal. Memberikan izinsetIamPolicy
memungkinkan pengguna untuk mengubah izin dan mengambil kontrol data. Anda sebaiknya menggunakan peran dengan izinsetIamPolicy
hanya jika ingin mendelegasikan kontrol administratif atas objek dan bucket.Pastikan Anda mendelegasikan kontrol administratif atas resource Anda. Anda harus yakin bahwa resource Anda masih dapat dikelola oleh anggota tim lainnya jika seseorang dengan akses administratif keluar dari grup. Dua cara umum untuk melakukannya adalah sebagai berikut:
- Tetapkan peran Admin Cloud SQL untuk project Anda ke grup, bukan ke individu.
- Tetapkan peran Admin Cloud SQL untuk project Anda setidaknya kepada dua individu.
Langkah selanjutnya
- Pelajari lebih lanjut tentang cara Mengontrol akses