Настройка управления доступом на основе ролей с помощью Microsoft Entra ID для учетной записи Azure Cosmos DB

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Примечание.

Эта статья описывает управление доступом на основе ролей для операций в плоскости данных в Azure Cosmos DB. Если используются операции в плоскости управления, см. раздел Управление доступом на основе ролей, посвященный применимым операциям в плоскости управления.

Azure Cosmos DB предоставляет встроенную систему управления доступом на основе ролей, которая позволяет:

  • Проверка подлинности запросов данных с помощью удостоверения Microsoft Entra.
  • Авторизовать запросы данных с использованием детализированной модели разрешений на основе ролей.

Основные понятия

Управление доступом на основе ролей уровня данных Azure Cosmos DB основано на концепциях, которые обычно находятся в других системах управления доступом на основе ролей, таких как управление доступом на основе ролей Azure:

  • Модель разрешений состоит из набора действий; каждое из которых сопоставляется с одной или несколькими операциями с базой данных. Примеры действий: чтение элемента, запись элемента, выполнение запроса.
  • Пользователи Azure Cosmos DB создают определения ролей, содержащие список разрешенных действий.
  • Определения ролей назначаются определенным удостоверениям Microsoft Entra с помощью назначений ролей. Назначение роли также определяет область, к которым применяется определение роли. В настоящее время три область в настоящее время:
    • Учетная запись Azure Cosmos DB
    • База данных Azure Cosmos DB
    • Контейнер Azure Cosmos DB

Diagram of common role-based access control concepts including role definitions, role assignments, and principals.

Модель разрешения

Внимание

Эта модель разрешений охватывает только операции с базами данных, которые включают чтение и запись данных. Он не охватывает какие-либо операции управления с ресурсами управления, в том числе:

  • создание, замена и удаление базы данных;
  • создание, замена и удаление контейнера;
  • Пропускная способность контейнера для чтения и замены
  • создание, замена, удаление и чтение хранимых процедур;
  • создание, замена, удаление и чтение триггеров;
  • создание, замена, удаление и чтение пользовательских функций.

Пакет SDK плоскости данных Azure Cosmos DB нельзя использовать для проверки подлинности операций управления с помощью удостоверения Microsoft Entra. Вместо этого необходимо использовать управление доступом на основе ролей Azure с помощью одного из следующих вариантов:

Чтение из базы данных и чтение из контейнера считаются запросами метаданных. Доступ к этим операциям можно предоставить, как описано в следующем разделе.

В этой таблице перечислены все действия, предоставляемые моделью разрешений.

Имя. Соответствующая (-ие) операция (-и) с базой данных
Microsoft.DocumentDB/databaseAccounts/readMetadata Чтение метаданных учетной записи. Дополнительные сведения см. в разделе Запросы метаданных.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create Создайте новый элемент.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read Чтение отдельного элемента по его идентификатору и ключу секции (чтение-точки).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace Замена существующего элемента.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert Элемент Upsert. Эта операция создает элемент, если он еще не существует, или заменить элемент, если он существует.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete Удаление элемента.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery Выполнение SQL-запроса.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed Чтение из канала изменений контейнера. Выполнение SQL-запросов с помощью пакетов SDK.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure Выполнение хранимой процедуры.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts Управление конфликтами учетных записей регионов с множественной записью (вывод списка и удаление элементов из канала конфликтов).

Примечание.

При выполнении запросов через пакеты SDK требуются как разрешения, так Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery и Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed разрешения.

На уровне контейнеров и элементов поддерживаются подстановочные знаки.

  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Запросы метаданных

Пакеты SDK Azure Cosmos DB выдают запросы метаданных только для чтения во время инициализации и обслуживать определенные запросы данных. Эти запросы извлекает различные сведения о конфигурации, такие как:

  • Глобальная конфигурация учетной записи, включающая регионы Azure, в которых доступна учетная запись.
  • Ключ секции для контейнеров или их политики индексации.
  • Список физических секций, составляющих контейнер, и их адресов.

Они не извлекают никакие данные, сохраненные в учетной записи.

Для обеспечения максимальной прозрачности модели разрешений эти запросы метаданных явным образом охвачены действием Microsoft.DocumentDB/databaseAccounts/readMetadata. Это действие должно быть разрешено в каждой ситуации, в которой доступ к учетной записи Azure Cosmos DB осуществляется через один из пакетов SDK Azure Cosmos DB. Оно может быть назначено (посредством назначения роли) на любом уровне иерархии Azure Cosmos DB (т. е. на уровне учетной записи, базы данных или контейнера).

Конкретные запросы метаданных, которые разрешены действием Microsoft.DocumentDB/databaseAccounts/readMetadata, зависят от области, которой назначено действие.

Область Запросы, разрешенные действием
Учетная запись • Перечисление баз данных в учетной записи
• Для каждой базы данных в учетной записи разрешенные действия в базе данных область
База данных • Чтение метаданных базы данных
• Перечисление контейнеров в базе данных
• Для каждого контейнера в базе данных разрешенные действия в область контейнера
Контейнер • Чтение метаданных контейнера
• Перечисление физических секций в контейнере
• Разрешение адреса каждой физической секции

Внимание

Пропускная способность не включена в метаданные для этого действия.

Определения встроенных ролей

Azure Cosmos DB предоставляет два встроенных определения ролей:

Внимание

Определения ролей терминов здесь относятся к определениям конкретных ролей Azure Cosmos DB. Они отличаются от определений ролей управления доступом на основе ролей Azure.

ИД Имя. Предоставляемые действия
00000000-0000-0000-0000-000000000001 Встроенный модуль чтения данных Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed
00000000-0000-0000-0000-000000000002 Встроенный участник данных Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Создание определений настраиваемой роли

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

  • Имя учетной записи Azure Cosmos DB.
  • Группа ресурсов, содержащая учетную запись.
  • Тип определения роли: CustomRole.
  • Имя определения роли.
  • Список действий, которые должна разрешать роль.
  • Одно или несколько область, на которые можно назначить определение роли; поддерживаются область:
    • / (уровень учетной записи);
    • /dbs/<database-name> (уровень базы данных);
    • /dbs/<database-name>/colls/<container-name> (уровень контейнера).

Примечание.

Описанные операции доступны в:

Использование Azure PowerShell

Создание роли с именем MyReadOnlyRole, которая содержит только действия чтения:

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadOnlyRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed') `
    -AssignableScope "/"

Создание роли с именем MyReadWriteRole, которая содержит все действия:

New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadWriteRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*') `
    -AssignableScope "/"

Список определений ролей, созданный для извлечения их идентификаторов:

Get-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName
RoleName         : MyReadWriteRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

RoleName         : MyReadOnlyRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

Использование Azure CLI

Создайте роль с именем MyReadOnlyRole , которая содержит только действия чтения в файле с именем role-definition-ro.json:

{
    "RoleName": "MyReadOnlyRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ]
    }]
}
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-ro.json

Создайте роль с именем MyReadWriteRole , которая содержит все действия в файле с именем role-definition-rw.json:

{
    "RoleName": "MyReadWriteRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ]
    }]
}
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-rw.json

Список определений ролей, созданный для извлечения их идентификаторов:

az cosmosdb sql role definition list --account-name $accountName --resource-group $resourceGroupName
[
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadWriteRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  },
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadOnlyRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  }
]

Использование шаблонов Azure Resource Manager

Справочные материалы и примеры использования шаблонов Azure Resource Manager для создания определений роли см. на странице Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions.

Создание назначений ролей

Встроенные или настраиваемые определения ролей можно связать с удостоверениями Microsoft Entra. При создании назначения роли необходимо указать следующие данные.

  • Имя учетной записи Azure Cosmos DB.

  • Группа ресурсов, содержащая учетную запись.

  • Идентификатор назначаемого определения роли.

  • Идентификатор субъекта удостоверения, которому должно быть назначено определение роли.

  • Область назначения роли. Поддерживаются следующие области:

    • / (уровень учетной записи);
    • /dbs/<database-name> (уровень базы данных);
    • /dbs/<database-name>/colls/<container-name> (уровень контейнера).

    Область должна совпадать с одной из областей, назначаемых для определения роли, или входить в нее.

Примечание.

Если вы хотите создать назначение ролей для субъекта-службы, обязательно используйте его идентификатор объекта, как показано в разделе корпоративных приложений колонки портала идентификатора Microsoft Entra ID.

Примечание.

Описанные операции доступны в:

Использование Azure PowerShell

Назначить роль удостоверению:

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
$readOnlyRoleDefinitionId = "<roleDefinitionId>" # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
$principalId = "<aadPrincipalId>"
New-AzCosmosDBSqlRoleAssignment -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -RoleDefinitionId $readOnlyRoleDefinitionId `
    -Scope "/" `
    -PrincipalId $principalId

Использование Azure CLI

Назначить роль удостоверению:

resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
readOnlyRoleDefinitionId='<roleDefinitionId>' # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
principalId='<aadPrincipalId>'
az cosmosdb sql role assignment create --account-name $accountName --resource-group $resourceGroupName --scope "/" --principal-id $principalId --role-definition-id $readOnlyRoleDefinitionId

Использование шаблонов Bicep/Azure Resource Manager

Для встроенного назначения с помощью шаблона Bicep:

resource sqlRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2023-04-15' = {
  name: guid(<roleDefinitionId>, <aadPrincipalId>, <databaseAccountResourceId>)
  parent: databaseAccount
  properties:{
    principalId: <aadPrincipalId>
    roleDefinitionId: '/${subscription().id}/resourceGroups/<databaseAccountResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>'
    scope: <databaseAccountResourceId>
  }
}

Справочные материалы и примеры использования шаблонов Azure Resource Manager для создания назначений роли см. на странице Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments.

Инициализация пакета SDK с помощью идентификатора Microsoft Entra

Чтобы использовать управление доступом на основе ролей Azure Cosmos DB в приложении, необходимо обновить способ инициализации пакета SDK для Azure Cosmos DB. Вместо указания первичного ключа учетной записи необходимо указывать экземпляр класса TokenCredential. Этот экземпляр предоставляет пакет SDK Azure Cosmos DB с контекстом, необходимым для получения маркера Microsoft Entra от имени используемого удостоверения.

Описание создания экземпляра TokenCredential выходит за рамки этой статьи. Существует множество способов создания такого экземпляра в зависимости от типа удостоверения Microsoft Entra, который вы хотите использовать (субъект-пользователь, субъект-служба, группа и т. д.). Важнее всего то, что экземпляр TokenCredential должен разрешаться в удостоверение (идентификатор субъекта), которому назначены роли. Примеры создания класса TokenCredential

В следующих примерах используется субъект-служба с экземпляром ClientSecretCredential .

В .NET

В настоящее время управление доступом на основе ролей Azure Cosmos DB поддерживается в пакете SDK для .NET версии 3.

TokenCredential servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
CosmosClient client = new CosmosClient("<account-endpoint>", servicePrincipal);

В Java

В настоящее время управление доступом на основе ролей Azure Cosmos DB поддерживается в пакете SDK java версии 4.

TokenCredential ServicePrincipal = new ClientSecretCredentialBuilder()
    .authorityHost("https://login.microsoftonline.com")
    .tenantId("<azure-ad-tenant-id>")
    .clientId("<client-application-id>")
    .clientSecret("<client-application-secret>")
    .build();
CosmosAsyncClient Client = new CosmosClientBuilder()
    .endpoint("<account-endpoint>")
    .credential(ServicePrincipal)
    .build();

В JavaScript

В настоящее время управление доступом на основе ролей Azure Cosmos DB поддерживается в пакете SDK JavaScript версии 3.

const servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
const client = new CosmosClient({
    endpoint: "<account-endpoint>",
    aadCredentials: servicePrincipal
});

Использование Python

Управление доступом на основе ролей Azure Cosmos DB поддерживается в пакетах SDK для Python версии 4.3.0b4 и выше.

aad_credentials = ClientSecretCredential(
    tenant_id="<azure-ad-tenant-id>",
    client_id="<client-application-id>",
    client_secret="<client-application-secret>")
client = CosmosClient("<account-endpoint>", aad_credentials)

Проверка подлинности запросов на REST API

При создании заголовка авторизации REST API задайте параметр типа идентификатору Microsoft Entra и хэш-сигнатуре (sig) маркер OAuth, как показано в следующем примере:

type=aad&ver=1.0&sig=<token-from-oauth>

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

Примечание.

Обозреватель данных, предоставляемый в портал Azure, пока не поддерживает управление доступом на основе ролей Azure Cosmos DB. Чтобы использовать удостоверение Microsoft Entra при изучении данных, вместо этого необходимо использовать Обозреватель Azure Cosmos DB.

При доступе к Обозревателю Azure Cosmos DB с определенным параметром запроса ?feature.enableAadDataPlane=true и последующим входом используется следующая логика для доступа к вашим данным:

  1. Запрос на получение первичного ключа учетной записи выполняется от имени удостоверения, с которым был выполнен вход. Если запрос выполняется успешно, первичный ключ используется для доступа к данным учетной записи.
  2. Если удостоверение, с которым выполнен вход, не имеет разрешения на получение первичного ключа учетной записи, это удостоверение напрямую используется для аутентификации доступа к данным. В этом режиме удостоверение должно быть назначено с надлежащими определениями роли для доступа к данным.

Аудит запросов данных

Журналы диагностики дополняются сведениями о удостоверении и авторизации для каждой операции с данными при использовании управления доступом на основе ролей Azure Cosmos DB. Это расширение позволяет выполнять подробный аудит и извлекать удостоверение Microsoft Entra, используемое для каждого запроса данных, отправленного в учетную запись Azure Cosmos DB.

Эта дополнительная информация поступает в категорию журнала DataPlaneRequests и состоит из двух дополнительных столбцов.

  • aadPrincipalId_g отображает идентификатор субъекта удостоверения Microsoft Entra, который использовался для проверки подлинности запроса.
  • aadAppliedRoleAssignmentId_g показывает назначение роли, которое соблюдалось при авторизации запроса.

Применение управления доступом на основе ролей в качестве единственного метода проверки подлинности

В ситуациях, когда вы хотите принудительно подключить клиентов к Azure Cosmos DB исключительно с помощью управления доступом на основе ролей, вы можете отключить первичные или вторичные ключи учетной записи. При этом любой входящий запрос с помощью первичного или вторичного ключа или маркера ресурса активно отклоняется.

Использование шаблонов Azure Resource Manager

При создании или обновлении учетной записи Azure Cosmos DB с помощью шаблонов ARM задайте для свойства disableLocalAuth значение true:

"resources": [
    {
        "type": " Microsoft.DocumentDB/databaseAccounts",
        "properties": {
            "disableLocalAuth": true,
            // ...
        },
        // ...
    },
    // ...
 ]

Ограничения

  • Можно создать не более 100 определений ролей и 2000 назначений ролей для каждой учетной записи Azure Cosmos DB.
  • Определения ролей можно назначать только удостоверениям Microsoft Entra, принадлежащим тому же клиенту Microsoft Entra, что и учетная запись Azure Cosmos DB.
  • Разрешение группы Microsoft Entra в настоящее время не поддерживается для удостоверений, принадлежащих более чем 200 группам.
  • Маркер Microsoft Entra в настоящее время передается в качестве заголовка с каждым отдельным запросом, отправленным в службу Azure Cosmos DB, увеличив общий размер полезных данных.

Часто задаваемые вопросы

В этом разделе содержатся часто задаваемые вопросы об управлении доступом на основе ролей и Azure Cosmos DB.

Какие API-интерфейсы Azure Cosmos DB поддерживают управление доступом на основе ролей на основе данных?

По состоянию на данный момент поддерживается только API NoSQL.

Можно ли управлять определениями и назначениями ролей на портале Azure?

портал Azure поддержка управления ролями пока недоступна.

Какие пакеты SDK в API Azure Cosmos DB для NoSQL поддерживают управление доступом на основе ролей?

В настоящее время поддерживаются пакеты SDK .NET версии 3, Java версии 4, JavaScript версии 3 и Python версии 4.3 и выше.

Будут ли пакеты SDK для Azure Cosmos DB автоматически обновлять маркер Microsoft Entra по истечении срока действия?

Да.

Можно ли отключить использование первичных или вторичных ключей учетной записи при использовании управления доступом на основе ролей?

Да, см . раздел "Принудительное управление доступом на основе ролей" в качестве единственного метода проверки подлинности.

Следующие шаги