Cara menyiapkan kontrol akses pada objek yang disinkronkan di kumpulan SQL tanpa server

Di Azure Synapse Analytics, database dan tabel Spark dibagikan dengan kumpulan SQL tanpa server. Database Lake, Parquet, dan tabel yang didukung CSV yang dibuat dengan Spark tersedia secara otomatis di kumpulan SQL tanpa server. Fitur ini memungkinkan penggunaan kumpulan SQL tanpa server untuk menjelajahi dan mengkueri data yang disiapkan dengan menggunakan kumpulan Spark. Pada diagram di bawah ini, Anda dapat melihat ringkasan arsitektur tingkat tinggi untuk memanfaatkan fitur ini. Pertama, Azure Synapse Pipelines memindahkan data dari penyimpanan lokal (atau lainnya) ke Azure Data Lake Storage. Spark sekarang dapat memperkaya data, dan membuat database, serta tabel yang disinkronkan ke Synapse SQL tanpa server. Kemudian, pengguna dapat menjalankan kueri ad-hoc di atas data yang diperkaya atau menyajikannya ke Power BI misalnya.

Enrich in Spark, serve with SQL diagram.

Akses administrator penuh (sysadmin)

Setelah database dan tabel ini disinkronkan dari Spark ke kumpulan SQL tanpa server, tabel eksternal di kumpulan SQL tanpa server ini dapat digunakan untuk mengakses data yang sama. Namun, objek di kumpulan SQL tanpa server bersifat baca-saja karena menjaga konsistensi dengan objek kumpulan Spark. Batasan tersebut membuat hanya pengguna dengan peran Administrator Synapse SQL atau Administrator Synapse yang dapat mengakses objek ini di kumpulan SQL tanpa server. Jika pengguna non-admin mencoba menjalankan kueri pada database/tabel yang disinkronkan, mereka akan menerima kesalahan seperti:External table '<table>' is not accessible because content of directory cannot be listed. meskipun mereka memiliki akses ke data pada akun penyimpanan yang mendasarinya.

Karena database yang disinkronkan di kumpulan SQL tanpa server bersifat baca-saja, database tersebut tidak dapat dimodifikasi. Membuat pengguna, atau memberikan izin lain akan gagal jika dicoba. Untuk membaca database yang disinkronkan, seseorang harus memiliki izin tingkat server yang diistimewakan (seperti sysadmin). Batasan ini juga ada pada tabel eksternal di kumpulan SQL tanpa server saat menggunakan Azure Synapse Link untuk Dataverse dan tabel database lake.

Akses non-admin ke database yang disinkronkan

Seorang pengguna yang perlu membaca data dan membuat laporan biasanya tidak memiliki akses administrator penuh (sysadmin). Pengguna ini biasanya adalah analis data yang hanya perlu membaca dan menganalisis data menggunakan tabel yang ada. Mereka tidak perlu membuat objek baru.

Pengguna dengan izin minimal harus dapat:

  • Tersambung ke database yang direplikasi dari Spark
  • Memilih data melalui tabel eksternal dan mengakses data ADLS yang mendasarinya.

Setelah menjalankan skrip kode di bawah ini, ini akan memungkinkan pengguna non-admin memiliki izin tingkat server untuk tersambung ke database apa pun. Ini juga akan memungkinkan pengguna untuk melihat data dari semua objek tingkat skema, seperti tabel atau tampilan. Keamanan akses data dapat dikelola pada lapisan penyimpanan.

-- Creating Azure AD login (same can be achieved for Azure AD app)
    CREATE LOGIN [login@contoso.com] FROM EXTERNAL PROVIDER;
    go;
    
    GRANT CONNECT ANY DATABASE to [login@contoso.com];
    GRANT SELECT ALL USER SECURABLES to [login@contoso.com];
    GO;

CONNECT ANY DATABASE izin akan memungkinkan pengguna untuk mengakses koneksi ke database apa pun, tetapi tidak memberikan izin apa pun di database apa pun di luar koneksi. Saat izin SELECT ALL USER SECURABLES diberikan, data masuk dapat melihat data dari semua objek tingkat skema, seperti tabel dan tampilan eksternal (skema apa pun kecuali sys dan INFORMATION_SCHEMA). Izin ini berlaku di semua database yang dapat disambungkan pengguna. Baca selengkapnya tentang izin GRANT SERVER.

Setelah membuat data masuk dan memberikan izin, pengguna dapat menjalankan kueri di atas tabel eksternal yang disinkronkan. Mitigasi ini juga dapat diterapkan ke kelompok keamanan Azure AD.

Lebih banyak keamanan pada objek dapat dikelola melalui skema tertentu dan mengunci akses ke skema tertentu. Solusinya membutuhkan DDL ekstra. Untuk skenario ini, Anda dapat membuat database, skema, dan tampilan tanpa server baru yang akan mengarah ke data tabel Spark di ADLS.

Akses ke data di akun penyimpanan dapat dikelola melalui ACL atau Peran Pemilik/Pembaca/Kontributor Data Blob Storage reguler untuk pengguna/grup Azure AD. Untuk Perwakilan Layanan (aplikasi Azure AD), pastikan Anda menggunakan penyiapan ACL.

Catatan

  • Jika Anda ingin melarang penggunaan OPENROWSET di atas data, Anda dapat menggunakan DENY ADMINISTER BULK OPERATIONS to [login@contoso.com]; Untuk informasi selengkapnya, kunjungi izin DENY Server.
  • Jika Anda ingin melarang penggunaan skema tertentu, Anda dapat menggunakan DENY SELECT ON SCHEMA::[schema_name] TO [login@contoso.com]; Untuk informasi selengkapnya, kunjungi Izin DENY Schema.

Langkah berikutnya

Untuk informasi selengkapnya, lihat Autentikasi SQL.