Kontrol akses yang mendetail di Spanner menggabungkan manfaat Identity and Access Management (IAM) dengan kontrol akses berbasis peran SQL. Dengan kontrol akses terperinci, Anda menentukan peran database, memberikan hak istimewa ke peran, dan membuat kebijakan IAM untuk memberikan izin pada peran database ke akun utama IAM.
Sebagai administrator, Anda harus mengaktifkan kontrol akses terperinci untuk setiap akun utama IAM. Akun utama 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 tingkat database IAM. Kontrol akses yang sangat terperinci sepenuhnya kompatibel dan dapat digunakan bersama dengan kontrol akses tingkat database IAM yang ada. Anda dapat menggunakannya untuk mengakses setiap objek database. Untuk mengontrol akses ke seluruh database, gunakan peran IAM.
Dengan kontrol akses terperinci, Anda dapat mengontrol akses ke tabel, kolom, tampilan, dan aliran perubahan.
Untuk mengelola kontrol akses yang sangat terperinci, Anda menggunakan pernyataan DDL berikut:
- Pernyataan
CREATE
danDROP
untuk membuat dan menghapus peran database. Peran database adalah kumpulan hak istimewa. Anda dapat membuat maksimal 100 peran untuk 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 yang bernama sama. Misalnya, peran dengan hak istimewaINSERT
dapat menjalankan 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 yang sangat terperinci:
- Sistem informasi HR yang memiliki peran untuk analis kompensasi penjualan, pengelolaan penjualan, dan analis HR, masing-masing dengan tingkat akses yang berbeda pada data. Misalnya, analis kompensasi dan manajemen penjualan tidak boleh melihat nomor jaminan sosial.
- Aplikasi berbagi tumpangan dengan akun layanan dan hak istimewa yang berbeda untuk penumpang dan pengemudi.
- Ledger 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 terperinci yang dapat Anda berikan untuk resource tersebut.
- Skema
- Anda dapat memberikan hak istimewa
USAGE
pada skema ke peran database tertentu. Untuk skema non-default, peran database harus memiliki hak istimewaUSAGE
untuk mengakses objek database. Pemeriksaan hak istimewa terlihat seperti berikut:
Apakah Anda memiliki USAGE
di skema?
Tidak: Tolak akses.
Ya: Apakah Anda juga memiliki hak yang sesuai pada tabel?
Tidak: Tolak akses.
Ya: Anda dapat mengakses tabel.
- Tabel
- Anda dapat memberikan hak istimewa
SELECT
,INSERT
,UPDATE
, danDELETE
pada tabel ke peran database. Untuk tabel yang diselingi, hak istimewa yang diberikan pada tabel induk tidak akan diterapkan ke tabel turunan. - Kolom
- Anda dapat memberikan
SELECT
,INSERT
, danUPDATE
pada subset kolom dalam tabel. Hak istimewa tersebut hanya berlaku untuk kolom tersebut.DELETE
tidak diizinkan di tingkat kolom. - Dilihat
- Anda dapat memberikan hak istimewa
SELECT
pada tampilan. HanyaSELECT
yang didukung untuk tampilan. Spanner mendukung tampilan hak pemanggil dan tampilan hak penentu. Jika Anda membuat tampilan dengan hak pemanggil, untuk membuat kueri tampilan, peran database atau pengguna memerlukan hak istimewaSELECT
pada tampilan, dan juga hak istimewaSELECT
pada objek pokok yang dirujuk dalam tampilan. Jika Anda membuat tampilan dengan hak penentu, untuk membuat kueri tampilan, peran database atau pengguna hanya memerlukan hak istimewaSELECT
pada tampilan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan tampilan. - Aliran data perubahan
- Anda dapat memberikan
SELECT
pada aliran perubahan. Anda juga harus memberikanEXECUTE
pada fungsi baca yang terkait dengan aliran perubahan. Untuk mengetahui informasinya, lihat Kontrol akses terperinci untuk aliran 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 sangat terperinci
Kontrol akses terperinci memiliki peran sistem yang telah ditentukan sebelumnya untuk setiap database. Seperti peran database yang ditentukan pengguna, peran sistem dapat mengontrol akses ke resource Spanner.
Misalnya, pengguna kontrol akses terperinci harus 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 pada
tabel INFORMATION_SCHEMA
.
Untuk mengetahui informasi selengkapnya, lihat Peran sistem kontrol akses terperinci.
Hierarki dan pewarisan peran database
Anda dapat membuat hierarki peran database, dengan peran turunan mewarisi hak istimewa peran induk. Peran turunan dikenal 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
di 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 mungkin menurun dengan struktur hierarki peran yang dalam dan luas.
Pencadangan dan pemulihan
Cadangan Spanner mencakup definisi peran database. Saat database dipulihkan dari cadangan, peran database akan dibuat ulang dengan hak istimewa yang diberikan. Namun, kebijakan IAM bukan bagian dari pencadangan database, sehingga Anda harus memberikan kembali akses ke peran database kepada akun utama di database yang dipulihkan.
Ringkasan penyiapan kontrol akses yang sangat terperinci
Berikut adalah langkah-langkah mendetail yang Anda lakukan untuk mulai mengamankan data dengan kontrol akses yang sangat 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 dengan 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 yang sangat terperinci untuk akun utama.
Akun utama kemudian otomatis diberi peran database
public
, yang tidak memiliki hak istimewa secara default. Ini adalah operasi satu kali untuk setiap prinsipal. - Berikan izin IAM pada satu atau beberapa peran database kepada akun utama.
- Setelah akun utama diberi semua peran database yang diperlukan, jika akun utama memiliki peran IAM tingkat database, pertimbangkan untuk mencabut peran tingkat database sehingga kontrol akses akun utama hanya dikelola oleh satu metode.
- Aktifkan kontrol akses yang sangat terperinci untuk akun utama.
Akun utama kemudian otomatis diberi peran database
Batasan
- Operasi ekspor tidak mengekspor peran dan hak istimewa database, dan operasi impor tidak dapat mengimpornya. Anda harus menyiapkan peran dan hak istimewa secara manual setelah impor selesai.
- Tab Data di halaman TABEL di konsol Google Cloud tidak tersedia untuk pengguna kontrol akses terperinci.
Langkah selanjutnya
Lihat topik berikut untuk informasi selengkapnya:
- Mengakses database dengan kontrol akses yang sangat terperinci
- Kontrol akses yang sangat terperinci untuk aliran perubahan
- Mengonfigurasi kontrol akses yang sangat terperinci
- Referensi hak istimewa kontrol akses terperinci
- Peran sistem kontrol akses yang sangat terperinci
- Pernyataan
GRANT
danREVOKE
GoogleSQL - Pernyataan
GRANT
danREVOKE
PostgreSQL - Kontrol akses yang sangat terperinci untuk urutan
- Kontrol akses yang sangat terperinci untuk model