Защита доступа к данным в Azure Cosmos DB

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

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

Azure Cosmos DB предоставляет три способа управления доступом к данным.

Тип управления доступом Характеристики
Первичные/вторичные ключи Общий секрет, позволяющий выполнять любые операции управления или работы с данными. Он предоставляется в таких вариантах: для чтения и записи и только для чтения.
управление доступом на основе ролей (RBAC); Детальная модель разрешений на основе ролей с помощью удостоверений Microsoft Entra для проверки подлинности.
Маркеры ресурсов Детализированная модель разрешений на основе собственных пользователей и разрешений Azure Cosmos DB.

Первичные/вторичные ключи

Первичные/вторичные ключи предоставляют доступ ко всем административным ресурсам для учетной записи базы данных. Каждая учетная запись состоит из двух ключей: первичного и вторичного. Назначение двух ключей заключается в том, чтобы позволить повторно создавать или свертывать ключи, предоставляя непрерывный доступ к учетной записи и данным. Дополнительные сведения о первичных и вторичных ключах см. в статье "Общие сведения о безопасности базы данных в Azure Cosmos DB".

Чтобы просмотреть ключи учетной записи, в меню слева выберите "Ключи". Затем щелкните значок представления справа от каждого ключа. Нажмите кнопку "Копировать", чтобы скопировать выбранный ключ. Затем их можно скрыть, выбрав один и тот же значок на ключ, который обновляет значок на кнопку "Скрыть ".

Screenshot of the View account key for Azure Cosmos DB.

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

Примечание.

В следующем разделе описаны шаги по смене и повторному создании ключей для API для NoSQL. Если вы используете другой API, ознакомьтесь с API для MongoDB, API для Cassandra, API для Gremlin или API для разделов таблиц .

Сведения о мониторинге учетной записи для обновления ключей и повторного восстановления ключей см. в статье "Мониторинг учетной записи Azure Cosmos DB" для обновления ключей и восстановления ключей.

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

  1. Перейдите к учетной записи Azure Cosmos DB в портал Azure.

  2. Выберите "Ключи " в меню слева и выберите "Повторно создать вторичный ключ " в правой части дополнительного ключа.

    Screenshot that shows the Azure portal showing how to regenerate the secondary key.

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

  4. Замените первичный ключ на вторичный в своем приложении.

  5. Вернитесь на портал Azure и выполните повторное создание первичного ключа.

    Screenshot that shows the Azure portal showing how to regenerate the primary key.

Пример кода для использования первичного ключа

В следующем примере кода показано, как использовать конечную точку учетной записи Azure Cosmos DB и первичный ключ для создания экземпляра CosmosClient:

// Read the Azure Cosmos DB endpointUrl and authorization keys from config.
// These values are available from the Azure portal on the Azure Cosmos DB account blade under "Keys".
// Keep these values in a safe and secure location. Together they provide Administrative access to your Azure Cosmos DB account.

private static readonly string endpointUrl = ConfigurationManager.AppSettings["EndPointUrl"];
private static readonly string authorizationKey = ConfigurationManager.AppSettings["AuthorizationKey"];

CosmosClient client = new CosmosClient(endpointUrl, authorizationKey);

Управление доступом на основе ролей

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

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

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

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

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

Сведения и пример кода для настройки RBAC для Azure Cosmos DB для MongoDB см. в статье Настройка управления доступом на основе ролей для Azure Cosmos DB для MongoDB.

Маркеры ресурсов

Маркеры ресурсов предоставляют доступ к ресурсам приложения в базе данных. Маркеры ресурсов.

  • Предоставление доступа к определенным контейнерам, ключам секций, документам и вложениям.
  • создаются, когда пользователю предоставляются разрешения на доступ к определенному ресурсу;
  • Повторно создаются при выполнении ресурса разрешений вызовом POST, GET или PUT.
  • используют хэш, который маркер ресурса специально создал для пользователя, ресурса и разрешения;
  • имеют ограничение по времени (настраиваемый срок действия). Допустимый интервал времени по умолчанию составляет один час. Однако время существования токена может быть явно указано до 24 часов.
  • Обеспечивают безопасную альтернативу выдаче первичного ключа.
  • Разрешить клиентам читать, записывать и удалять ресурсы в учетной записи Azure Cosmos DB в соответствии с предоставленными разрешениями.

Вы можете использовать маркер ресурса (создав пользователей и разрешения Azure Cosmos DB), если вы хотите предоставить доступ к ресурсам в учетной записи Azure Cosmos DB клиенту, который не может быть доверенным с первичным ключом.

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

Ниже приведен типичный шаблон проектирования, в котором маркеры ресурсов можно запрашивать, создавать и доставлять клиентам:

  1. Служба среднего уровня настроена для обслуживания мобильного приложения по обмену фотографиями.

  2. Служба среднего уровня обладает первичным ключом учетной записи Azure Cosmos DB.

  3. Фото приложение устанавливается на мобильных устройствах пользователей.

  4. При входе в приложение фотографии устанавливается удостоверение пользователя со службой среднего уровня. Механизм установления личности пользователя реализуется исключительно в приложении.

  5. После установки удостоверения служба среднего уровня запрашивает разрешения на основе удостоверения.

  6. Служба среднего уровня отправляет маркер ресурса обратно в приложение для телефона.

  7. Телефонное приложение может продолжать использовать маркер ресурса для прямого доступа к ресурсам Azure Cosmos DB с разрешениями, определенными маркером ресурса, и для интервала, разрешенного маркером ресурса.

  8. По истечении срока действия маркера ресурса последующие запросы получают исключение: 401 — не авторизовано. На этом этапе приложение телефона повторно возвращает удостоверение и запрашивает новый маркер ресурса.

    Screenshot that shows an Azure Cosmos DB resource tokens workflow.

Создание и управление маркерами ресурсов обрабатываются собственными клиентскими библиотеками Azure Cosmos DB. Однако при использовании REST необходимо создать заголовки запросов и проверки подлинности. Дополнительные сведения о создании заголовков проверки подлинности для REST см. в статье "Управление доступом" в ресурсах Azure Cosmos DB или исходный код для пакета SDK для .NET или пакета SDK Node.js.

Пример службы среднего уровня, используемой для создания или брокера маркеров ресурсов, см. в приложении ResourceTokenBroker.

Пользователи

Пользователи Azure Cosmos DB связаны с базой данных Azure Cosmos DB. Каждая база данных может содержать ноль или больше пользователей Azure Cosmos DB. В следующем примере кода показано, как создать пользователя Azure Cosmos DB с помощью пакета SDK для .NET для Azure Cosmos DB версии 3.

// Create a user.
Database database = client.GetDatabase("SalesDatabase");
User user = await database.CreateUserAsync("User 1");

Примечание.

Каждый пользователь Azure Cosmos DB имеет ReadAsync() метод, который можно использовать для получения списка разрешений , связанных с пользователем.

Разрешения

Ресурс разрешения связан с пользователем и назначается определенному ресурсу. Каждый пользователь может содержать ноль или больше разрешений. Ресурс разрешения предоставляет доступ к маркеру безопасности, необходимому пользователю при попытке доступа к конкретному контейнеру или данным в конкретном ключе раздела. Существует два доступных уровня доступа, которые могут быть предоставлены ресурсом разрешений:

  • Все: пользователь имеет полное разрешение на ресурс.
  • Чтение. Пользователь может только считывать содержимое ресурса, но не может выполнять операции записи, обновления или удаления ресурса.

Примечание.

Для выполнения хранимых процедур пользователь должен иметь разрешение "Все " для контейнера, в котором будет выполняться хранимая процедура.

Если включить журналы диагностики в запросах плоскости данных, регистрируются следующие два свойства, соответствующие этому разрешению:

  • resourceTokenPermissionId: это свойство указывает указанный идентификатор разрешения маркера ресурса.

  • resourceTokenPermissionMode: это свойство указывает режим разрешений, заданный при создании маркера ресурса. Режим разрешений может иметь такие значения, как All или Read.

Пример кода для создания разрешения

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

// Create a permission on a container and specific partition key value
Container container = client.GetContainer("SalesDatabase", "OrdersContainer");
await user.CreatePermissionAsync(
    new PermissionProperties(
        id: "permissionUser1Orders", 
        permissionMode: PermissionMode.All, 
        container: container,
        resourcePartitionKey: new PartitionKey("012345")));

Пример кода для пользователя с разрешением на чтение

В следующем фрагменте кода показано, как получить разрешение, связанное с созданным пользователем, и создать экземпляр нового CosmosClient пользователя, область в один ключ секции.

// Read a permission, create user client session.
Permission permission = await user.GetPermission("permissionUser1Orders").ReadAsync();

CosmosClient client = new CosmosClient(accountEndpoint: "MyEndpoint", authKeyOrResourceToken: permission.Resource.Token);

Различия между RBAC и маркерами ресурсов

Subject RBAC Маркеры ресурсов
Проверка подлинности С идентификатором Microsoft Entra. На основе собственных пользователей Azure Cosmos DB.
Интеграция маркеров ресурсов с идентификатором Microsoft Entra требует дополнительной работы для моста удостоверений Microsoft Entra и пользователей Azure Cosmos DB.
Авторизация На основе ролей: определения ролей сопоставляют разрешенные действия и могут быть назначены нескольким удостоверениям. На основе разрешений. Для каждого пользователя Azure Cosmos DB необходимо назначить разрешения на доступ к данным.
Область действия маркера Токен Microsoft Entra содержит удостоверение запрашивающего пользователя. Это удостоверение сопоставляется со всеми назначенными определениями ролей для выполнения авторизации. Маркер ресурсов содержит разрешение, предоставленное конкретному Azure Cosmos DB пользователю на конкретный ресурс Azure Cosmos DB. Запросы авторизации на разных ресурсах могут требовать разные маркеры.
Обновление маркера Маркер Microsoft Entra автоматически обновляется пакетами SDK Azure Cosmos DB по истечении срока действия. Обновление маркера ресурса не поддерживается. По истечении срока действия маркера ресурсов должен быть выдан новый маркер.

Добавление пользователей и назначение ролей

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

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

  2. Выберите Управление доступом (IAM) .

  3. Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.

  4. Назначьте следующую роль. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.

    Параметр Значение
    Роль Средство чтения учетных записей Cosmos DB.
    Назначить доступ для пользователь, группа или субъект-служба.
    Участники Пользователь, группа или приложение в каталоге, которому требуется предоставить доступ.

    Screenshot that shows the Add role assignment page in the Azure portal.

Теперь сущность может считывать ресурсы Azure Cosmos DB.

Удаление и экспорт сведений о пользователях

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

Каждый API с несколькими моделями (SQL, MongoDB, Gremlin, Cassandra или Table) предоставляет различные языковые пакеты SDK, содержащие методы для поиска и удаления данных на основе пользовательских предикатов. Вы также можете включить функцию жизни (TTL) для автоматического удаления данных после указанного периода без каких-либо дополнительных затрат.

Примечание.

См. сведения о просмотре и удалении персональных данных в руководстве по созданию запросов субъектов данных Azure в соответствии с GDPR. Дополнительные сведения о GDPR см. в разделе, посвященном GDPR, в Центре управления безопасностью Майкрософт и на портале Service Trust Portal.

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