Kontrol akses terperinci Spanner menggabungkan manfaat Identity and Access Management (IAM) dengan kontrol akses berbasis peran SQL tradisional. Dengan kontrol akses yang terperinci, Anda dapat menentukan peran database, memberikan hak istimewa ke peran tersebut, dan membuat kebijakan IAM untuk memberikan izin pada peran database kepada akun utama IAM.
Sebagai administrator, Anda harus mengaktifkan kontrol akses yang terperinci untuk setiap akun utama IAM. Principal yang mengaktifkan kontrol akses terperinci ("pengguna kontrol akses terperinci") harus memiliki peran database untuk mengakses resource Spanner.
Akses resource untuk pengguna yang bukan pengguna kontrol akses terperinci diatur oleh peran level database IAM. Kontrol akses terperinci sepenuhnya kompatibel dan dapat digunakan bersama dengan kontrol akses level database IAM yang sudah ada.
Dengan kontrol akses yang mendetail, Anda dapat mengontrol akses ke tabel, kolom, tampilan, dan aliran perubahan.
Untuk mengelola kontrol akses yang terperinci, gunakan pernyataan DDL berikut:
- Pernyataan
CREATE
danDROP
untuk membuat dan melepas peran database. Peran database merupakan kumpulan hak istimewa. Anda dapat membuat hingga 100 peran untuk satu database. Pernyataan
GRANT
danREVOKE
untuk memberikan dan mencabut hak istimewa ke dan dari peran database. Hak istimewa mencakupSELECT
,INSERT
,UPDATE
,DELETE
, danEXECUTE
. Nama hak istimewa sesuai dengan pernyataan SQL bernama serupa. Misalnya, peran dengan hak istimewaINSERT
dapat mengeksekusi pernyataan SQLINSERT
pada tabel yang ditentukan dalam pernyataanGRANT
.Pernyataan DDL berikut memberikan
SELECT
pada tabelemployees
ke peran databasehr_rep
.GoogleSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;
PostgreSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO hr_rep;
Untuk mengetahui informasi selengkapnya tentang hak istimewa, lihat Referensi hak istimewa kontrol akses terperinci.
Pernyataan
GRANT
untuk memberikan peran ke peran lain guna membuat hierarki peran, dengan pewarisan hak istimewa.
Kasus penggunaan
Berikut adalah contoh kasus penggunaan untuk kontrol akses terperinci:
- Sistem informasi SDM yang memiliki peran untuk analis kompensasi penjualan, manajemen penjualan, dan analis SDM, masing-masing dengan tingkat akses yang berbeda pada data. Misalnya, analis kompensasi dan manajemen penjualan tidak boleh melihat nomor jaminan sosial.
- Aplikasi transportasi online dengan akun layanan dan hak istimewa yang berbeda untuk penumpang dan pengemudi.
- Buku besar yang mengizinkan operasi
SELECT
danINSERT
, tetapi tidak mengizinkan operasiUPDATE
danDELETE
.
Resource Spanner dan hak istimewanya
Berikut adalah daftar resource Spanner dan hak istimewa kontrol akses mendetail yang dapat Anda berikan untuk resource tersebut.
- Tabel
- Anda dapat memberikan hak istimewa
SELECT
,INSERT
,UPDATE
, danDELETE
pada tabel untuk peran database. Untuk tabel sisipan, hak istimewa yang diberikan pada tabel induk tidak diterapkan ke tabel turunan. - Kolom
- Anda dapat memberikan
SELECT
,INSERT
, danUPDATE
pada subkumpulan kolom dalam tabel. Kemudian, hak istimewa hanya berlaku untuk kolom tersebut.DELETE
tidak diizinkan di tingkat kolom. - Tabel Virtual
- Anda dapat memberikan hak istimewa
SELECT
pada tampilan. HanyaSELECT
yang didukung untuk tampilan. Spanner mendukung tampilan hak invoker dan tampilan hak pendefinisi. Jika Anda membuat tampilan dengan hak invoker, untuk membuat kueri tampilan, peran database atau pengguna memerlukan hak istimewaSELECT
dalam tampilan, serta hak istimewaSELECT
pada objek dasar yang direferensikan dalam tampilan. Jika Anda membuat tampilan dengan hak pendefinisi, untuk membuat kueri tampilan, peran database atau pengguna hanya memerlukan hak istimewaSELECT
pada tampilan. Untuk informasi lebih lanjut, lihat Ringkasan penayangan. - Mengubah aliran data
- Anda dapat memberikan
SELECT
pada aliran perubahan. Anda juga harus memberikanEXECUTE
pada fungsi baca yang terkait dengan aliran perubahan. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses terperinci untuk aliran data perubahan. - Urutan
- Anda dapat memberikan
SELECT
danUPDATE
pada urutan. Untuk mengetahui informasinya, lihat Kontrol akses terperinci untuk urutan. - Model
- Anda dapat memberikan
EXECUTE
pada model. Untuk mengetahui informasinya, lihat Kontrol akses terperinci untuk model.
Peran sistem kontrol akses yang terperinci
Kontrol akses terperinci memiliki peran sistem yang telah ditetapkan untuk setiap database. Seperti peran database yang ditentukan pengguna, peran sistem dapat mengontrol akses ke resource Spanner.
Misalnya, pengguna kontrol akses terperinci perlu diberi peran sistem spanner_sys_reader
untuk mengakses Key Visualizer, dan memerlukan peran sistem
spanner_info_reader
agar dapat melihat hasil yang tidak difilter saat membuat kueri
tabel INFORMATION_SCHEMA
.
Untuk mengetahui informasi selengkapnya, lihat Peran sistem kontrol akses terperinci.
Hierarki dan pewarisan peran database
Anda dapat membuat hierarki peran database, di mana peran turunan mewarisi hak istimewa peran induk. Peran turunan disebut sebagai anggota peran induk.
Misalnya, pertimbangkan pernyataan GRANT
berikut:
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
PostgreSQL
GRANT SELECT ON TABLE employees TO pii_access;
GRANT pii_access TO hr_manager, hr_director;
hr_manager
dan hr_director
adalah anggota peran pii_access
, dan mewarisi
hak istimewa SELECT
pada tabel employees
.
hr_manager
dan hr_director
juga dapat memiliki anggota, dan anggota tersebut akan
mewarisi hak istimewa SELECT
di employees
.
Tidak ada batasan kedalaman hierarki peran, tetapi performa kueri dapat menurun dengan struktur hierarki peran yang dalam dan luas.
Pencadangan dan pemulihan
Pencadangan Spanner menyertakan definisi peran database. Saat database dipulihkan dari cadangan, peran database dibuat ulang dengan hak istimewa yang telah diberikan. Namun, kebijakan IAM bukan bagian dari pencadangan database sehingga Anda harus memberikan kembali akses ke peran database kepada akun utama dalam database yang dipulihkan.
Ringkasan penyiapan kontrol akses terperinci
Berikut adalah langkah-langkah tingkat tinggi yang Anda lakukan untuk mulai mengamankan data dengan kontrol akses terperinci. Untuk mengetahui detailnya, lihat Mengonfigurasi kontrol akses terperinci.
Anda harus diberi peran IAM roles/spanner.admin
atau
roles/spanner.databaseAdmin
untuk melakukan tugas ini.
- Buat peran database dan berikan hak istimewa ke peran tersebut.
- Opsional: Buat hierarki peran yang memiliki pewarisan dengan memberikan peran ke peran lain.
- Lakukan langkah-langkah berikut untuk setiap akun utama yang akan menjadi pengguna kontrol akses terperinci:
- Aktifkan kontrol akses terperinci untuk akun utama.
Akun utama kemudian otomatis diberi peran database
public
, yang secara default tidak memiliki hak istimewa. Operasi ini hanya perlu dilakukan satu kali untuk setiap akun utama. - Berikan izin IAM pada satu atau beberapa peran database ke akun utama.
- Setelah akun utama diberi semua peran database yang diperlukan, jika akun utama memiliki peran IAM level database, pertimbangkan untuk mencabut peran level database sehingga kontrol akses akun utama hanya dikelola oleh satu metode.
- Aktifkan kontrol akses terperinci untuk akun utama.
Akun utama kemudian otomatis diberi peran database
Batasan
- Operasi ekspor tidak mengekspor peran dan hak istimewa database, serta operasi impor tidak dapat mengimpornya. Anda harus menyiapkan peran dan hak istimewa secara manual setelah impor selesai.
- Tab Data pada halaman TABLE di Konsol Google Cloud tidak tersedia untuk pengguna kontrol akses yang mendetail.
- Operasi
UPDATE
danDELETE
memerlukanSELECT
di semua kolom kunci.
Langkah selanjutnya
Lihat topik berikut untuk informasi selengkapnya:
- Kontrol akses yang mendetail untuk aliran perubahan
- Mengonfigurasi kontrol akses yang terperinci
- Referensi hak istimewa kontrol akses terperinci
- Peran sistem kontrol akses yang terperinci
- Pernyataan
GRANT
danREVOKE
GoogleSQL - Pernyataan
GRANT
danREVOKE
PostgreSQL - Kontrol akses terperinci untuk urutan
- Kontrol akses terperinci untuk model