Ringkasan kontrol akses yang mendetail

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 dan DROP untuk membuat dan melepas peran database. Peran database merupakan kumpulan hak istimewa. Anda dapat membuat hingga 100 peran untuk satu database.
  • Pernyataan GRANT dan REVOKE untuk memberikan dan mencabut hak istimewa ke dan dari peran database. Hak istimewa mencakup SELECT, INSERT, UPDATE, DELETE, dan EXECUTE. Nama hak istimewa sesuai dengan pernyataan SQL bernama serupa. Misalnya, peran dengan hak istimewa INSERT dapat mengeksekusi pernyataan SQL INSERT pada tabel yang ditentukan dalam pernyataan GRANT.

    Pernyataan DDL berikut memberikan SELECT pada tabel employees ke peran database hr_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 dan INSERT, tetapi tidak mengizinkan operasi UPDATE dan DELETE.

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, dan DELETE 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, dan UPDATE 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. Hanya SELECT 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 istimewa SELECT dalam tampilan, serta hak istimewa SELECT 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 istimewa SELECT pada tampilan. Untuk informasi lebih lanjut, lihat Ringkasan penayangan.
Mengubah aliran data
Anda dapat memberikan SELECT pada aliran perubahan. Anda juga harus memberikan EXECUTE 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 dan UPDATE 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.

Pewarisan hak istimewa

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.

  1. Buat peran database dan berikan hak istimewa ke peran tersebut.
  2. Opsional: Buat hierarki peran yang memiliki pewarisan dengan memberikan peran ke peran lain.
  3. Lakukan langkah-langkah berikut untuk setiap akun utama yang akan menjadi pengguna kontrol akses terperinci:
    1. 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.
    2. Berikan izin IAM pada satu atau beberapa peran database ke akun utama.
    3. 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.

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 dan DELETE memerlukan SELECT di semua kolom kunci.

Langkah selanjutnya

Lihat topik berikut untuk informasi selengkapnya: