Поделиться через


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

Это важно

Ключи управляемой учетной записи хранения Key Vault (устаревшие версии) поддерживаются as-is без дополнительных обновлений. Только SAS учетной записи поддерживаются с определениями SAS, подписанными службой хранения не позднее 2018-03-28.

Это важно

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

Это важно

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

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

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

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

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

Это важно

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

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

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

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

Арендаторы Облако Идентификатор приложения
Майкрософт Ентра айди Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Майкрософт Ентра айди Общедоступная служба Azure cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Other Любое cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Предпосылки

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

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

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

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

az login

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

Используйте команду az role assignment create в Azure CLI, чтобы предоставить 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 [email protected] --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 .

  • : передайте идентификатор ресурса учетной записи хранения, который находится в форме . Найдите идентификатор подписки с помощью команды 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>"

Токены подписи общего доступа

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

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

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

Определите шаблон параметра общего доступа

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 учетной записи. Необходимо задать значение версии 2015-04-05 или более поздней. Key Vault поддерживает версии не позднее 2018-03-28
SignedServices (ss) Обязательное. Указывает подписанные службы, доступные с помощью SAS учетной записи. Возможные значения включают:

— Blob (b)
— очередь (q)
— Таблица (t)
- Файл (f)

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

— Служба (s): доступ к API уровня обслуживания (например, Get/Set Service Properties, Get Service Stats, List Containers/Queues/Tables/Share)
— Контейнер (c): доступ к API уровня контейнера (например, создание и удаление контейнера, создание и удаление очереди, создание и удаление таблицы, создание и удаление общей папки, список BLOB-объектов и каталогов)
— Объект (o): доступ к объектного уровня API для объектов Blob, сообщений очереди, сущностей таблиц и файлов (например, Put Blob, Query Entity, Get Messages, Создать файл и т.д.)

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

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

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

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

Замечание

Key Vault игнорирует параметры времени действия, такие как "Срок действия подписи", "Начало действия подписи" и параметры, представленные после версии 2018-03-28

Настройка определения подписи общего доступа в Key Vault

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

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

Проверьте определение общей сигнатуры доступа

Вы можете убедиться, что определение сигнатуры общего доступа сохранено в вашем хранилище ключей с помощью команды 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>

Дальнейшие шаги