Manajemen peran keamanan

Penting

Sebelum mengubah aturan otorisasi pada kluster Kusto Anda, baca yang berikut ini: ringkasan kontrol akses Kustootorisasi berbasis peran

Artikel ini menjelaskan perintah kontrol yang digunakan untuk mengelola peran keamanan. Peran keamanan menentukan prinsipal keamanan mana (pengguna dan aplikasi) yang memiliki izin untuk melakukan operasi pada sumber daya yang aman seperti database atau tabel, dan operasi apa yang diizinkan. Misalnya, prinsipal yang memiliki peran keamanan database viewer untuk database tertentu dapat meminta dan melihat semua entitas database tersebut (dengan pengecualian tabel terbatas).

Peran keamanan dapat dikaitkan dengan prinsipal keamanan atau kelompok keamanan (yang dapat memiliki prinsipal keamanan lain atau kelompok keamanan lainnya). Ketika prinsipal keamanan mencoba untuk melakukan operasi pada sumber daya yang aman, sistem memeriksa bahwa prinsipal dikaitkan dengan setidaknya satu peran keamanan yang memberikan izin untuk melakukan operasi ini pada sumber daya. Ini disebut pemeriksaan otorisasi. Gagal dalam pemeriksaan otorisasi membatalkan operasi.

Perintah manajemen peran keamanan

Sintaks

VerbSecurableObjectTypeSecurableObjectNameRole [(ListOfPrincipals) [Description]]

Argumen

  • Verb menunjukkan jenis tindakan yang akan dilakukan: .show, .add, .drop, dan .set.

    Kata kerja Deskripsi
    .add Menambahkan satu atau beberapa prinsipal ke peran.
    .drop Menghapus satu atau beberapa prinsipal dari peran tersebut.
    .set Mengatur peran ke daftar prinsipal tertentu, menghapus semua yang sebelumnya (jika ada).
  • SecurableObjectType adalah jenis objek yang perannya ditentukan.

    SecurableObjectType Deskripsi
    database Database yang ditentukan
    table Tabel yang ditentukan
    materialized-view Tampilan materialisasi yang ditentukan
  • SecurableObjectName adalah nama objek.

  • Role adalah nama peran yang relevan.

    Peran Deskripsi
    admins Memiliki kontrol atas objek yang dapat diamankan, termasuk kemampuan untuk melihat, memodifikasinya, dan menghapus objek dan semua sub-objek.
    users Dapat melihat objek yang dapat diamankan, dan membuat objek baru di bawahnya.
    viewers Dapat melihat objek yang dapat diamankan.
    unrestrictedviewers Pada tingkat database saja, memungkinkan melihat tabel terbatas (yang tidak diekspos ke "normal" viewers dan users).
    ingestors Pada tingkat database saja, memungkinkan penyerapan data ke semua tabel.
    monitors Pada cakupan yang ditentukan (Database atau AllDatabases) memungkinkan metadata (skema, operasi, permissiosn) melihat operasi.
  • ListOfPrincipals adalah daftar pengidentifikasi prinsipal keamanan opsional yang dibatasi koma (nilai jenis string).

  • Description adalah nilai opsional jenis string yang disimpan di samping asosiasi, untuk tujuan audit di masa mendatang.

Perintah .show

Perintah .show mencantumkan prinsipal yang ditetapkan pada objek yang dapat diamankan. Garis dikembalikan untuk setiap peran yang ditugaskan ke prinsipal.

Sintaks

.showSecurableObjectTypeSecurableObjectNameprincipals

Contoh

Perintah kontrol berikut mencantumkan semua prinsipal keamanan yang memiliki beberapa akses ke tabel StormEvents dalam database:

.show table StormEvents principals

Berikut adalah hasil potensial dari perintah ini:

Peran PrincipalType PrincipalDisplayName PrincipalObjectId PrincipalFQN
Database Apsty Admin Pengguna Azure AD Mark Smith cd709aed-a26c-e3953dec735e aaduser=msmith@fabrikam.com

Mengelola peran keamanan database

.setdatabaseDatabaseNameRolenone [skip-results]

.setdatabaseDatabaseNameRole(Principal [,Principal...] ) [skip-results] [Description]

.adddatabaseDatabaseNameRole(Principal [,Principal...] ) [skip-results] [Description]

.dropdatabaseDatabaseNameRole(Principal [,Principal...] ) [skip-results] [Description]

Perintah pertama menghapus semua prinsipal dari peran. Yang kedua menghapus semua prinsipal dari peran, dan menetapkan set prinsipal baru. Yang ketiga menambahkan prinsipal baru ke peran tanpa menghapus prinsipal yang ada. Yang terakhir menghapus prinsipal yang ditunjukkan dari peran dan menjaga yang lain.

Di mana:

  • DatabaseName adalah nama database yang peran keamanannya sedang dimodifikasi.

  • Role adalah: admins, ingestors, monitors, unrestrictedviewers, users, atau viewers.

  • Principal adalah satu atau beberapa prinsipal. Lihat prinsipal dan penyedia identitas untuk cara menentukan prinsipal ini.

  • skip-results, jika disediakan, meminta agar perintah tidak mengembalikan daftar prinsipal database yang diperbarui.

  • Description, jika disediakan, adalah teks yang akan dikaitkan dengan perubahan dan diambil oleh perintah .show yang sesuai.

Contoh

// No need to specify AAD tenant for UPN, as Kusto performs the resolution by itself
.add database Test users ('aaduser=imikeoein@fabrikam.com') 'Test user (AAD)'

// AAD SG on 'fabrikam.com' tenant
.add database Test admins ('aadGroup=SGEmail@fabrikam.com')

// OPTIONAL: AAD App on another tenant - by tenant guid
.add database Test viewers ('aadapp=4c7e82bd-6adb-46c3-b413-fdd44834c69b;9752a91d-8e15-44e2-aa72-e9f8e12c3ec5') 'Test app on another tenant (AAD)'

Mengelola peran keamanan tabel

.settableTableNameRolenone [skip-results]

.settableTableNameRole(Principal [,Principal...] ) [skip-results] [Description]

.addtableTableNameRole(Principal [,Principal...] ) [skip-results] [Description]

.droptableTableNameRole(Principal [,Principal...] ) [skip-results] [Description]

Perintah pertama menghapus semua prinsipal dari peran. Yang kedua menghapus semua prinsipal dari peran, dan menetapkan set prinsipal baru. Yang ketiga menambahkan prinsipal baru ke peran tanpa menghapus prinsipal yang ada. Yang terakhir menghapus prinsipal yang ditunjukkan dari peran dan menjaga yang lain.

Di mana:

  • TableName adalah nama tabel yang peran keamanannya sedang dimodifikasi.

  • Role adalah: admins atau ingestors.

  • Principal adalah satu atau beberapa prinsipal. Lihat prinsipal dan penyedia identitas untuk cara menentukan prinsipal ini.

  • skip-results, jika disediakan, meminta agar perintah tidak mengembalikan daftar prinsipal tabel yang diperbarui.

  • Description, jika disediakan, adalah teks yang akan dikaitkan dengan perubahan dan diambil oleh perintah .show yang sesuai.

Contoh

// No need to specify AAD tenant for UPN, as Kusto performs the resolution by itself
.add table TestTable admins ('aaduser=imikeoein@fabrikam.com') 'Test user (AAD)'

// AAD SG on 'fabrikam.com' tenant
.add table TestTable ingestors ('aadGroup=SGEmail@fabrikam.com')

// OPTIONAL: AAD App on another tenant - by tenant guid
.add table TestTable ingestors ('aadapp=4c7e82bd-6adb-46c3-b413-fdd44834c69b;9752a91d-8e15-44e2-aa72-e9f8e12c3ec5') 'Test app on another tenant (AAD)'

Mengelola peran keamanan tampilan materialisasi

.showmaterialized-viewMaterializedViewNameprincipals

.setmaterialized-viewMaterializedViewNameadmins(Principal,[Principal...])

.addmaterialized-viewMaterializedViewNameadmins(Principal,[Principal...])

.dropmaterialized-viewMaterializedViewNameadmins(Principal,[Principal...])

Di mana:

  • MaterializedViewName adalah nama tampilan materialisasi yang peran keamanannya sedang dimodifikasi
  • Principal adalah satu atau beberapa prinsipal. Lihat prinsipal dan penyedia identitas

Mengelola peran keamanan fungsi

.setfunctionFunctionNameRolenone [skip-results]

.setfunctionFunctionNameRole(Principal [,Principal...] ) [skip-results] [Description]

.addfunctionFunctionNameRole(Principal [,Principal...] ) [skip-results] [Description]

.dropfunctionFunctionNameRole(Principal [,Principal...] ) [skip-results] [Description]

Perintah pertama menghapus semua prinsipal dari peran. Yang kedua menghapus semua prinsipal dari peran, dan menetapkan set prinsipal baru. Yang ketiga menambahkan prinsipal baru ke peran tanpa menghapus prinsipal yang ada. Yang terakhir menghapus prinsipal yang ditunjukkan dari peran dan menjaga yang lain.

Di mana:

  • FunctionName adalah nama fungsi yang peran keamanannya sedang dimodifikasi.

  • Role selalu admin.

  • Principal adalah satu atau beberapa prinsipal. Lihat prinsipal dan penyedia identitas untuk cara menentukan prinsipal ini.

  • skip-results, jika disediakan, meminta agar perintah tidak mengembalikan daftar prinsipal fungsi yang diperbarui.

  • Description, jika disediakan, adalah teks yang akan dikaitkan dengan perubahan dan diambil oleh perintah .show yang sesuai.

Contoh

.add function MyFunction admins ('aaduser=imike@fabrikam.com') 'This user should have access'