Управление ролями безопасности

Важно!

Перед изменением правил авторизации в кластерах Kusto ознакомьтесь со следующими статьями: Общие сведения об авторизации на основе ролейуправления доступом Kusto

В этой статье описываются команды управления, используемые для управления ролями безопасности. Роли безопасности определяют, какие субъекты безопасности (пользователи и приложения) имеют разрешения на работу с защищенным ресурсом, таким как база данных или таблица, и какие операции разрешены. Например, субъекты, имеющие database viewer роль безопасности для определенной базы данных, могут запрашивать и просматривать все сущности этой базы данных (за исключением таблиц с ограниченным доступом).

Роль безопасности может быть связана с субъектами безопасности или группами безопасности (которые могут иметь другие субъекты безопасности или другие группы безопасности). Когда субъект безопасности пытается выполнить операцию с защищенным ресурсом, система проверяет, связан ли субъект по крайней мере с одной ролью безопасности, которая предоставляет разрешения на выполнение этой операции с ресурсом. Это называется проверкой авторизации. Сбой проверки авторизации прерывает операцию.

Примечание

Чтобы изменить субъекты безопасности, необходимо быть администратором базы данных или администратором всех баз данных.

Команды управления ролями безопасности

Синтаксис

ГлаголSecurableObjectTypeSecurableObjectNameRole [(ListOfPrincipals) [Description]]

Аргументы

  • Команда указывает тип выполняемого действия: .add, .drop.set и .show.

    Команда Описание
    .add Добавляет один или несколько субъектов в роль.
    .drop Удаляет один или несколько субъектов из роли.
    .set Задает роль для определенного списка субъектов, удаляя все предыдущие (если таковые есть).
    .show Показывает список субъектов и их ролей.
  • SecurableObjectType — это тип объекта, роль которого указана.

    SecurableObjectType Описание
    database Указанная база данных
    table Указанная таблица
    materialized-view Указанное материализованное представление
  • SecurableObjectName — это имя объекта.

  • Роль — это имя соответствующей роли.

    Роль Описание
    admins Управление защищаемым объектом, включая возможность просмотра, изменения и удаления объекта и всех вложенных объектов.
    users Может просматривать защищаемый объект и создавать новые объекты под ним.
    viewers Может просматривать защищаемый объект.
    unrestrictedviewers Только на уровне базы данных предоставляет разрешение на adminsпросмотр для или viewersusers для всех таблиц в базе данных, для которых включена политика ограниченного представления. Используйте эту роль в дополнение к ролям admins, viewers или users .
    ingestors Только на уровне базы данных разрешает прием данных во все таблицы.
    monitors В указанной области (Database или AllDatabases) разрешены операции представления метаданных (схемы, операции, permissiosn).
  • ListOfPrincipals — это необязательный список идентификаторов субъектов безопасности с разделителями-запятыми (значения типа string).

  • Description — это необязательное значение типа string , которое хранится вместе со связью для будущих целей аудита.

Команда .show

Команда .show выводит список субъектов, заданных для защищаемого объекта. Для каждой роли, назначенной субъекту, возвращается строка.

Синтаксис

.showSecurableObjectTypeSecurableObjectNameprincipals

Пример

Следующая команда управления выводит список всех субъектов безопасности, которые имеют некоторый доступ к таблице StormEvents в базе данных:

.show table StormEvents principals

Ниже приведены возможные результаты этой команды:

Роль PrincipalType PrincipalDisplayName PrincipalObjectId PrincipalFQN
База данных Apsty Администратор пользователь Azure AD Марк Смит cd709aed-a26c-e3953dec735e aaduser=msmith@fabrikam.com

Управление ролями безопасности базы данных

.setdatabaseРольnoneDatabaseName [skip-results]

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

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

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

Первая команда удаляет из роли все субъекты. Второй удаляет все субъекты из роли и задает новый набор субъектов. Третий добавляет новые субъекты в роль без удаления существующих. Последний удаляет указанные субъекты из ролей и сохраняет остальные.

Где:

  • DatabaseName — это имя базы данных, роль безопасности которой изменяется.

  • Роль : admins, ingestors, monitors, unrestrictedviewers, usersили viewers.

  • Субъект — это один или несколько субъектов. Сведения о том, как указать эти субъекты, см. в разделе Субъекты и поставщики удостоверений .

  • skip-results, если он указан, запрашивает, чтобы команда не возвращала обновленный список субъектов базы данных.

  • Описание — это текст, который будет связан с изменением и получен соответствующей .show командой.

Примеры

Добавьте роли безопасности:

// 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)'

Удаление ролей безопасности:

.drop database Test admins ('aadGroup=SGEmail@fabrikam.com')

Управление ролями безопасности таблиц

.settableTableNameRolenone [skip-results]

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

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

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

Первая команда удаляет из роли все субъекты. Второй удаляет все субъекты из роли и задает новый набор субъектов. Третий добавляет новые субъекты в роль без удаления существующих. Последний удаляет указанные субъекты из ролей и сохраняет остальные.

Где:

  • TableName — это имя таблицы, роль безопасности которой изменяется.

  • Роль : admins или ingestors.

  • Субъект — это один или несколько субъектов. Сведения о том, как указать эти субъекты, см. в разделе Субъекты и поставщики удостоверений .

  • skip-results, если он указан, запрашивает, чтобы команда не возвращала обновленный список субъектов таблицы.

  • Описание — это текст, который будет связан с изменением и получен соответствующей .show командой.

Примеры

Добавьте роли безопасности:

// 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)'

Удаление ролей безопасности:

.drop table TestTable admins ('aaduser=imikeoein@fabrikam.com')

Управление ролями безопасности материализованного представления

.showmaterialized-viewMaterializedViewNameprincipals

.setmaterialized-viewMaterializedViewNameadmins(Основной,[Основной...])

.addmaterialized-viewMaterializedViewNameadmins(Основной,[Основной...])

.dropmaterialized-viewMaterializedViewNameadmins(Основной,[Основной...])

Где:

Управление ролями безопасности функций

.setfunctionFunctionNameRolenone [skip-results]

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

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

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

Первая команда удаляет из роли все субъекты. Второй удаляет все субъекты из роли и задает новый набор субъектов. Третий добавляет новые субъекты в роль без удаления существующих. Последний удаляет указанные субъекты из ролей и сохраняет остальные.

Где:

  • FunctionName — это имя функции, роль безопасности которой изменяется.

  • Роль всегда adminимеет значение .

  • Субъект — это один или несколько субъектов. Сведения о том, как указать эти субъекты, см. в разделе Субъекты и поставщики удостоверений .

  • skip-results, если он указан, запрашивает, чтобы команда не возвращала обновленный список субъектов-функций.

  • Описание — это текст, который будет связан с изменением и получен соответствующей .show командой.

Пример

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