Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Cosmos DB для MongoDB предоставляет встроенную систему управления доступом на основе ролей для операций плоскости данных. Используйте управление доступом на основе ролей, чтобы авторизовать запросы данных с точными разрешениями на основе ролей. В этом руководстве показано, как включить управление доступом на основе ролей, создать роли и пользователей и пройти проверку подлинности с помощью поддерживаемых драйверов.
Предпосылки
- подписка Azure
- Учетная запись Azure Cosmos DB для MongoDB (версия 3.6 или более поздняя)
- Последняя версия Azure CLI
Включение управления доступом на основе ролей
Включите управление доступом на основе ролей в учетной записи Azure Cosmos DB для MongoDB.
Войдите в Azure CLI.
az loginВключите функцию управления доступом на основе ролей в учетной записи базы данных.
az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --kind "MongoDB" \ --capabilities "EnableMongoRoleBasedAccessControl"Подсказка
Вы также можете включить управление доступом на основе ролей на вкладке "Компоненты" на портале Azure.
Создайте базу данных для пользователей, к которому можно подключиться на портале Azure.
Создание ролей и пользователей
Определите пользовательские роли и пользователей для управления доступом к учетной записи базы данных.
Создайте определение роли.
az cosmosdb mongodb role definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body {\"Id\":\"test.My_Read_Only_Role101\",\"RoleName\":\"My_Read_Only_Role101\",\"Type\":\"CustomRole\",\"DatabaseName\":\"test\",\"Privileges\":[{\"Resource\":{\"Db\":\"test\",\"Collection\":\"test\"},\"Actions\":[\"insert\",\"find\"]}],\"Roles\":[]}Подсказка
Кроме того, используйте JSON-файл:
az cosmosdb mongodb role definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body @role.json{ "Id": "test.My_Read_Only_Role101", "RoleName": "My_Read_Only_Role101", "Type": "CustomRole", "DatabaseName": "test", "Privileges": [{ "Resource": { "Db": "test", "Collection": "test" }, "Actions": ["insert", "find"] }], "Roles": [] }Создайте определение пользователя с назначением ролей.
az cosmosdb mongodb user definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body {\"Id\":\"test.myName\",\"UserName\":\"myName\",\"Password\":\"pass\",\"DatabaseName\":\"test\",\"CustomData\":\"Some_Random_Info\",\"Mechanisms\":\"SCRAM-SHA-256\",\"Roles\":[{\"Role\":\"My_Read_Only_Role101\",\"Db\":\"test\"}]}Подсказка
Кроме того, используйте JSON-файл:
az cosmosdb mongodb role definition create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --body @role.json{ "Id": "test.myName", "UserName": "myName", "Password": "pass", "DatabaseName": "test", "CustomData": "Some_Random_Info", "Mechanisms": "SCRAM-SHA-256", "Roles": [{ "Role": "My_Read_Only_Role101", "Db": "test" }] }
Проверка подлинности с помощью драйверов
Подключитесь к базе данных с помощью поддерживаемых драйверов и учетных данных управления доступом на основе ролей.
from pymongo import MongoClient
client = MongoClient(
"mongodb://<YOUR_HOSTNAME>:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000",
username="<YOUR_USER>",
password="<YOUR_PASSWORD>",
authSource='<YOUR_DATABASE>',
authMechanism='SCRAM-SHA-256',
appName="<YOUR appName FROM CONNECTION STRING IN AZURE PORTAL>"
)
Выполнение распространенных операций
Теперь выполните некоторые распространенные операции для функций управления доступом на основе ролей в Azure Cosmos DB для MongoDB.
Используйте следующую команду, чтобы отобразить все определения ролей.
az cosmosdb mongodb role definition list --account-name <account-name> --resource-group <resource-group-name>Проверьте наличие роли по его идентификатору.
az cosmosdb mongodb role definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_RoleУдалите определение роли с помощью идентификатора.
az cosmosdb mongodb role definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.My_Read_Only_RoleОтображение всех определений пользователей.
az cosmosdb mongodb user definition list --account-name <account-name> --resource-group <resource-group-name>Проверьте наличие пользователя по его идентификатору.
az cosmosdb mongodb user definition exists --account-name <account-name> --resource-group <resource-group-name> --id test.myNameУдалите определение пользователя с помощью его идентификатора.
az cosmosdb mongodb user definition delete --account-name <account-name> --resource-group <resource-group-name> --id test.myName