Управление ключами учетной записи хранения с помощью Key Vault и Azure CLI (прежняя версия)

Внимание

Управляемые Key Vault ключи учетной записи служба хранилища (прежняя версия) поддерживаются без дополнительных обновлений. Только SAS учетной записи поддерживаются с подписанными определениями SAS службы хранилища не позднее 28 марта 2018 г.

Внимание

Поддержка ключей управляемых служба хранилища учетных записей в Azure CLI была удалена в версии 2.54, необходимо использовать Azure CLI версии 2.53.1 или ранее для команд в этом руководстве.

Внимание

Мы рекомендуем использовать служба хранилища Azure интеграцию с идентификатором Microsoft Entra ID, облачной службой управления удостоверениями и доступом Майкрософт. Интеграция Microsoft Entra доступна для больших двоичных объектов Azure, очередей и таблиц и предоставляет доступ на основе маркеров OAuth2 к служба хранилища Azure (так же, как Azure Key Vault). Идентификатор Microsoft Entra позволяет выполнять проверку подлинности клиентского приложения с помощью приложения или удостоверения пользователя, а не учетных данных учетной записи хранения. Управляемое удостоверение Microsoft Entra можно использовать при запуске в Azure. Управляемые удостоверения устраняют необходимость проверки подлинности клиента и хранения учетных данных в приложении или вместе с ним. Используйте следующее решение, только если проверка подлинности Microsoft Entra невозможна.

Учетная запись хранения Azure использует учетные данные, состоящие из имени учетной записи и ключа. Ключ генерируется автоматически и служит скорее паролем, чем криптографическим ключом. Key Vault управляет ключами учетной записи хранения, периодически создавая их заново в учетной записи хранения, и предоставляет маркеры подписанного URL-адреса в случае делегированного доступа к ресурсам в учетной записи хранения.

С помощью функции ключа управляемой учетной записи хранения Key Vault можно перечислять (синхронизировать) ключи с учетными записями хранения Azure и периодически повторно создавать (заменять) ключи. Вы можете управлять ключами как для учетных записей хранения, так и для классических учетных записей хранения.

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

  • Значения ключей никогда не возвращаются в ответе вызывающему объекту.
  • Управлять ключами учетной записи хранения должно только решение Key Vault. Не управляйте ключами самостоятельно и избегайте конфликтов с процессами Key Vault.
  • Управлять ключами учетной записи хранения должен только один объект Key Vault. Не разрешайте управление ключами из нескольких объектов.
  • Создавайте ключи повторно только с помощью Key Vault. Не создавайте повторно ключи своей учетной записи хранения вручную.

Внимание

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

Идентификатор приложения субъекта-службы

Клиент Microsoft Entra предоставляет каждое зарегистрированное приложение с субъектом-службой. Субъект-служба выступает в качестве идентификатора приложения, который используется во время настройки авторизации для получения доступа к другим ресурсам Azure с помощью управления доступа на основе ролей (Azure RBAC).

Key Vault — это приложение Майкрософт, которое предварительно зарегистрировано во всех клиентах Microsoft Entra. Key Vault регистрируется с одним и тем же идентификатором приложения в каждом облаке Azure.

Клиенты Облако Application ID
Microsoft Entra ID Azure для государственных организаций 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Общедоступное облако Azure cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Другие Любое cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Необходимые компоненты

Для работы с этим руководством сначала вам следует выполнить перечисленные ниже действия:

Управление ключами учетной записи хранения

Подключитесь к своей учетной записи Azure

Проверьте подлинность сеанса Azure CLI с помощью команд az login.

az login

Предоставление доступа Key Vault к учетной записи хранения

Используйте команду Azure CLI az role assignment create, чтобы предоставить Key Vault доступ к учетной записи хранения. Укажите в команде следующие значения параметров:

  • --role: передает роль Azure "Роль службы оператора ключей учетных записей хранения". Эта роль ограничивает область доступа учетной записью хранения. Для классической учетной записи хранения вместо этого передается "Роль службы оператора ключей классических учетных записей хранения".
  • --assignee:передает значение "https://vault.azure.net"", которое является URL-адресом для Key Vault в общедоступном облаке Azure. (Для облака Azure для государственных организаций используйте вместо этого "--assignee-object-id". См. раздел Идентификатор приложения субъекта-службы.)
  • --scope: передает идентификатор ресурса учетной записи хранения в форме /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Найдите идентификатор подписки с помощью команды Azure CLI az account list. Найдите имя учетной записи хранения и группу ресурсов учетной записи хранения с помощью команды Azure CLI az storage account list.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee "https://vault.azure.net" --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Предоставление разрешения учетной записи пользователя для управляемых учетных записей хранения

Используйте командлет Azure CLI az keyvault-set-policy, чтобы обновить политику доступа Key Vault и предоставить учетной записи пользователя разрешения учетной записи хранения.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

Разрешения для учетных записей хранения недоступны на странице "Политики доступа" учетной записи хранения в портал Azure.

Создание управляемой учетной записи хранения Key Vault

Создайте управляемую учетную запись хранения Key Vault с помощью команды Azure CLI az keyvault storage. Задайте период повторного создания длительностью 30 дней. Когда пришло время повернуть, KeyVault повторно создает ключ, который не активен, а затем задает только что созданный ключ как активный. Только один из ключей используется для выдачи маркеров SAS в любое время, это активный ключ. Укажите в команде следующие значения параметров:

  • --vault-name: передает имя хранилища ключей. Чтобы найти имя хранилища ключей, используйте команду Azure CLI az keyvault list.
  • -n: передает имя учетной записи хранения. Чтобы найти имя учетной записи хранения, используйте команду Azure CLI az storage account list.
  • --resource-id: передает идентификатор ресурса учетной записи хранения в форме /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Найдите идентификатор подписки с помощью команды Azure CLI az account list. Найдите имя учетной записи хранения и группу ресурсов учетной записи хранения с помощью команды Azure CLI az storage account list.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P30D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Маркер подписанного URL-адреса

Key Vault также может создавать маркеры подписанного URL-адреса. Подпись общего доступа обеспечивает делегированный доступ к ресурсам в вашей учетной записи хранения. Вы можете предоставить клиентам доступ к ресурсам в учетной записи хранения, не предоставляя общий доступ к ключам учетной записи. Подписанный URL-адрес обеспечивает возможность безопасно предоставлять общий доступ к ресурсам хранилища, не раскрывая ключи учетной записи.

С помощью команд в этом разделе можно выполнить следующие действия:

  • Задать определение подписанного URL-адреса учетной записи <YourSASDefinitionName>. Определение задается для управляемой учетной записи хранения Key Vault <YourStorageAccountName> в хранилище ключей <YourKeyVaultName>.
  • Задать в хранилище определение подписанного URL-адреса управляемого хранилища Key Vault. Определение содержит шаблон универсального кода ресурса (URI) созданного маркера подписанного URL-адреса. Этот подписанный URL-адрес относится к типу account и действителен в течение N дней.
  • Убедиться, что подписанный URL-адрес сохранен в хранилище ключей в качестве секрета.

Определение шаблона подписанного URL-адреса

Key Vault использует шаблон определения SAS для создания маркеров для клиентских приложений.

Пример шаблона определения SAS:

"sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

Шаблон определения SAS будет переданы параметру --template-uri на следующем этапе.

Параметры SAS учетной записи, необходимые в шаблоне определения SAS для Key Vault

Параметр запроса SAS Description
SignedVersion (sv) Обязательное. Указывает подписанную версию службы хранилища, используемую для авторизации запросов, выполненных с помощью SAS этой учетной записи. Должна быть установлена версия 05-04-2015 или более поздняя версия. Key Vault поддерживает версии не позднее 28 марта 2018 г.
SignedServices (ss) Обязательный. Указывает подписанные службы, доступные с помощью SAS учетной записи. Возможные значения включают:

- BLOB-объект (b)
- Очередь (q)
- Таблица (t)
- Файл (f)

Вы можете объединить значения для предоставления доступа к нескольким службам. Например, ss=bf указывает доступ к конечным точкам BLOB-объектов и файлов.
SignedResourceTypes (srt) Обязательный. Указывает подписанные типы ресурсов, доступные с помощью SAS учетной записи.

— Служба (s): доступ к API уровня обслуживания (например, Получить/Настроить свойства службы, Получить статистику службы, Список контейнеров/Очередей/Таблиц/Общих папок)
— Контейнер (c): доступ к API уровня контейнера (например, Создать/Удалить контейнер, Создать/Удалить очередь, Создать/Удалить таблицу, Создать/Удалить общую папку, Список BLOB-объектов/файлов и каталогов)
— Объект (o): доступ к API уровня объекта для больших двоичных объектов, сообщений очереди, сущностей таблицы и файлов (например, Put Blob, Query Entity, Get Messages, Create File и т. д.)

Вы можете объединить значения для предоставления доступа к нескольким типам ресурсов. Например, srt=sc указывает доступ к ресурсам службы и контейнера.
SignedPermission (sp) Обязательный. Указывает подписанные разрешения для SAS учетной записи. Разрешения действительны только в том случае, если они соответствуют указанному типу подписанного ресурса; в противном случае они игнорируются.

— Чтение (r): допустимо для всех подписанных типов ресурсов (служба, контейнер и объект). Дает разрешения на чтение для указанного типа ресурса.
— Запись (w): допустимо для всех подписанных типов ресурсов (служба, контейнер и объект). Дает разрешение на запись для указанного типа ресурса.
— Удаление (d): допустимо для типов ресурсов контейнера и объектов, за исключением сообщений очереди.
— Постоянное удаление (y): допустимо только для типа ресурса "BLOB-объект.
— Список (l): допустимо только для типа ресурсов "Служба" и "Контейнер".
- Добавление (a): допустимо только для следующих типов ресурсов объектов: сообщения очереди, сущности таблицы и добавочные BLOB-объекты.
— Создание (c): допустимо только для следующих типов ресурсов объектов: BLOB-объекты и файлы. Пользователи могут создавать новые BLOB-объекты или файлы, но не могут перезаписывать существующие BLOB-объекты или файлы.
— Обновление (u): допустимы только для следующих типов ресурсов объектов: сообщения очереди и сущности таблицы.
— Процесс (p): допустимый только для следующего типа ресурса объекта: сообщения очереди.
— Тег (t): допустимо только для следующего типа ресурса объекта: BLOB-объекты. Разрешает операции с тегами BLOB-объектов.
- Фильтр (f): допустимо только для следующего типа ресурса объекта: большой двоичный объект. Разрешает фильтрацию по тегу BLOB-объекта.
- Настройка политики неизменяемости (i): допустимо только для следующего типа ресурса объекта: BLOB-объект. Разрешает настройку и удаление политики неизменяемости и юридическое удержание BLOB-объекта.
SignedProtocol (spr) Необязательно. Указывает протоколы, разрешенные для запроса, сделанного с помощью SAS учетной записи. Параметр может иметь значение HTTPS и HTTP (https,http) или только HTTPS (https). Значение по умолчанию — https,http.

Только HTTP не является допустимым значением.

Дополнительные сведения о создании SAS для учетной записи см. в статье Создание SAS для учетной записи.

Примечание.

Key Vault игнорирует параметры времени существования, такие как "Срок действия подписи", "Подписанный запуск" и параметры, представленные после версии 28 марта 2018 г.

Настройка определения подписанного URL-адреса в Key Vault

Чтобы создать определение подписанного URL-адреса, используйте команду Azure CLI az keyvault storage sas-definition create, передав шаблон определения SAS с предыдущего шага в параметр --template-uri. С помощью параметра -n можно задать выбранное имя.

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <sasDefinitionTemplate>

Проверка определения подписанного URL-адреса

Убедиться в том, что определение подписанного URL-адреса сохранено в хранилище ключей, можно с помощью команды Azure CLI az keyvault storage sas-definition show.

Теперь для просмотра содержимого этого секрета можно воспользоваться командой az keyvault storage sas-definition show и свойством id.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

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