Ringkasan kontrol akses yang sangat teperinci

Kontrol akses terperinci Spanner menggabungkan manfaat Identity and Access Management (IAM) dengan kontrol akses berbasis peran SQL. Dengan kontrol akses terperinci, Anda dapat menentukan peran database, memberikan hak istimewa ke peran, dan membuat kebijakan IAM untuk memberikan izin pada peran database ke akun utama IAM. Halaman ini menjelaskan cara menggunakan kontrol akses terperinci dengan Spanner untuk database dialek GoogleSQL dan database dialek PostgreSQL.

Sebagai administrator, Anda harus mengaktifkan kontrol akses terperinci untuk setiap akun utama IAM. Akun utama yang kontrol akses terperincinya diaktifkan ("pengguna kontrol akses terperinci") harus mengasumsikan peran database untuk mengakses resource Spanner.

Akses resource untuk pengguna yang bukan pengguna kontrol akses terperinci diatur oleh peran IAM tingkat database. Kontrol akses terperinci sepenuhnya kompatibel dan dapat berdampingan 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 data perubahan.

Untuk mengelola kontrol akses 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 hingga 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 memiliki nama yang 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 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 berbagi tumpangan 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 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 pada 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 disisipkan, 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.
Tampilan
Anda dapat memberikan hak istimewa SELECT pada tampilan. Hanya SELECT yang didukung untuk tampilan. Spanner mendukung tampilan hak invoker dan tampilan hak definer. Jika Anda membuat tampilan dengan hak invoker, untuk membuat kueri tampilan, peran atau pengguna database memerlukan hak istimewa SELECT pada tampilan, dan juga hak istimewa SELECT pada objek pokok yang direferensikan dalam tampilan. Jika Anda membuat tampilan dengan hak definer, untuk membuat kueri tampilan, peran atau pengguna database hanya memerlukan hak istimewa SELECT pada tampilan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan tampilan.
Aliran data perubahan
Anda dapat memberikan SELECT pada aliran data perubahan. Anda juga harus memberikan EXECUTE pada fungsi baca yang terkait dengan aliran data perubahan. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses terperinci untuk aliran data perubahan.
Urutan
Anda dapat memberikan SELECT dan UPDATE pada urutan. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses terperinci untuk urutan.
Model
Anda dapat memberikan EXECUTE pada model. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses terperinci untuk model.

Peran sistem kontrol akses terperinci

Kontrol akses terperinci memiliki peran sistem bawaan 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 tabel INFORMATION_SCHEMA.

Untuk mengetahui informasi selengkapnya, lihat Peran sistem kontrol akses terperinci.

Hierarki dan pewarisan peran database

Anda dapat membuat hierarki peran database, tempat 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 pada tabel employees.

Pewarisan hak istimewa

hr_manager dan hr_director juga dapat memiliki anggota, dan anggota tersebut akan mewarisi hak istimewa SELECT pada employees.

Tidak ada batasan pada kedalaman hierarki peran, tetapi performa kueri dapat menurun dengan struktur hierarki peran yang mendalam 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 cadangan database, sehingga Anda harus memberikan kembali akses ke peran database ke akun utama di 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.
  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 terperinci untuk akun utama. Akun utama kemudian akan otomatis diberi peran database public, yang tidak memiliki hak istimewa secara default. 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 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 TABLE di Google Cloud konsol tidak tersedia untuk pengguna kontrol akses terperinci.

Langkah berikutnya