Ringkasan kontrol akses yang sangat teperinci

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 dan DROP untuk membuat dan menghapus peran database. Peran database adalah kumpulan hak istimewa. Anda dapat membuat maksimal 100 peran untuk 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 yang bernama sama. Misalnya, peran dengan hak istimewa INSERT dapat menjalankan 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 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 dan INSERT, tetapi tidak mengizinkan operasi UPDATE dan DELETE.

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 istimewa USAGE 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, dan DELETE 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, dan UPDATE 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. Hanya SELECT 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 istimewa SELECT pada tampilan, dan juga hak istimewa SELECT 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 istimewa SELECT pada tampilan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan tampilan.
Aliran data perubahan
Anda dapat memberikan SELECT pada aliran perubahan. Anda juga harus memberikan EXECUTE pada fungsi baca yang terkait dengan aliran perubahan. Untuk mengetahui informasinya, lihat Kontrol akses terperinci untuk aliran 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 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.

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 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.

  1. Buat peran database dan berikan hak istimewa ke peran tersebut.
  2. Opsional: Buat hierarki peran dengan 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 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.
    2. Berikan izin IAM pada satu atau beberapa peran database kepada akun utama.
    3. 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.

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: