Izin terperinci SQL di Microsoft Fabric
Berlaku untuk: Titik Akhir dan Gudang SQL di Microsoft Fabric
Ketika izin out-of-the-box yang disediakan oleh penugasan ke peran ruang kerja atau diberikan melalui izin item tidak mencukupi, konstruksi SQL standar tersedia untuk kontrol yang lebih terperinci.
Untuk Titik Akhir dan Gudang SQL:
- Keamanan tingkat objek dapat dikelola menggunakan sintaks GRANT, REVOKE, dan DENY.
- Pengguna dapat ditetapkan ke peran SQL, baik peran database kustom maupun bawaan.
Penting
Microsoft Fabric sedang dalam pratinjau.
Izin terperinci pengguna
- Agar pengguna dapat tersambung ke database, pengguna harus ditetapkan ke peran Ruang Kerja atau diberi izin Baca item. Tanpa izin Baca minimal, koneksi gagal.
- Jika Anda ingin menyiapkan izin terperinci pengguna sebelum mengizinkan mereka terhubung ke gudang, izin dapat terlebih dahulu disiapkan dalam SQL. Kemudian, mereka dapat diberikan akses dengan menetapkannya ke peran Ruang Kerja atau memberikan izin item.
Batasan
- CREATE USER tidak dapat dijalankan secara eksplisit saat ini. Ketika GRANT atau DENY dijalankan, pengguna akan dibuat secara otomatis.
- Keamanan tingkat baris saat ini tidak didukung.
- Masking data dinamis saat ini tidak didukung.
Lihat izin saya
Saat pengguna tersambung ke string koneksi SQL, mereka dapat melihat izin yang tersedia untuk mereka menggunakan fungsi sys.fn_my_permissions .
Izin cakupan database pengguna:
SELECT *
FROM sys.fn_my_permissions(NULL, "Database")
Izin tercakup skema pengguna:
SELECT *
FROM sys.fn_my_permissions("<schema-name>", "Schema")
Izin cakupan objek pengguna:
SELECT *
FROM sys.fn_my_permissions("<schema-name>.<object-name>", "Object")
Menampilkan izin yang diberikan secara eksplisit kepada pengguna
Saat tersambung melalui string koneksi SQL, pengguna dengan izin yang ditingkatkan dapat meminta izin yang telah diberikan dengan menggunakan tampilan sistem. Ini tidak memperlihatkan izin pengguna atau pengguna yang diberikan kepada pengguna dengan ditetapkan ke peran ruang kerja atau izin item yang ditetapkan.
SELECT DISTINCT pr.principal_id, pr.name, pr.type_desc,
pr.authentication_type_desc, pe.state_desc, pe.permission_name
FROM sys.database_principals AS pr
JOIN sys.database_permissions AS pe
ON pe.grantee_principal_id = pr.principal_id;
Membatasi akses baris dengan menggunakan tampilan
Keamanan tingkat baris saat ini tidak didukung. Sebagai solusinya, tampilan dan fungsi sistem dapat digunakan untuk membatasi akses pengguna ke data. Ini dapat dicapai dengan cara berikut:
Berikan pengguna izin Baca Fabric saja - Ini akan memberi mereka izin CONNECT hanya untuk Gudang.
Secara opsional, buat peran kustom dan tambahkan pengguna ke peran, jika Anda ingin membatasi akses berdasarkan peran.
CREATE ROLE PrivilegedRole ALTER ROLE PrivilegedRole ADD MEMBER [userOne@contoso.com]
Membuat tampilan yang mengkueri tabel yang ingin Anda batasi akses barisnya
Tambahkan klausa WHERE dalam definisi VIEW, menggunakan fungsi sistem SUSER_SNAME() atau IS_ROLEMEMBER(), untuk memfilter berdasarkan nama pengguna atau keanggotaan peran. Di bawah ini adalah contoh penyediaan akses ke baris tertentu kepada pengguna berdasarkan data wilayah dalam baris. Kondisi pertama menyediakan akses ke baris, dari wilayah tertentu, ke satu pengguna tertentu, sementara kondisi kedua menyediakan akses ke baris, dari wilayah tertentu, ke setiap anggota peran kustom PrivilegedRole.
CREATE VIEW dbo.RestrictedAccessTable as select * from dbo.SampleTable WHERE ( SUSER_SNAME() = 'userTwo@contoso.com' AND test_region = '<region_one_name>') OR ( IS_ROLEMEMBER('PrivilegedRole', SUSER_SNAME()) = 1 AND test_region = '<region_two_name')
Berikan akses ke tampilan:
GRANT SELECT ON dbo.RestrictedAccessTable TO [userOne@contoso.com]