Управление Key Vault в Azure Stack Hub с использованием PowerShell

В этой статье объясняется, как создать и администрировать хранилище ключей в Azure Stack Hub с помощью PowerShell. Вы узнаете, как с помощью командлетов PowerShell для Key Vault выполнять следующие задачи:

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

Примечание

Командлеты PowerShell для Key Vault, описанные в этой статье, доступны в пакете SDK для Azure PowerShell.

Предварительные требования

Включение операций с Key Vault для клиентской подписки

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

Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | ft -Autosize

Если для подписки разрешены операции с хранилищем, в выходных данных в столбце RegistrationState для всех типов ресурсов хранилища ключей будет указано значение Registered.

Состояние регистрации Key Vault в PowerShell

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

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

Если регистрация прошла успешно, возвращается следующий результат:

Регистрация Key Vault в PowerShell выполнена

При вызове команд Key Vault могут появляться ошибки, например, "Подписка не зарегистрирована для использования пространства имен "Microsoft.KeyVault". При появлении такой ошибки убедитесь, что вы включили поставщик ресурсов Key Vault (см. сведения выше).

Создайте хранилище ключей.

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

New-AzResourceGroup -Name "VaultRG" -Location local -verbose -Force

Группа ресурсов, созданная в PowerShell

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

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

New-AzKeyVault -VaultName "Vault01" -ResourceGroupName "VaultRG" -Location local -verbose

Хранилище ключей, созданное в PowerShell

В выходных данных команды будут указаны свойства хранилища ключей, которое вы создали. Когда приложение обращается к этому хранилищу, нужно использовать свойство Vault URI. В этом примере оно имеет значение https://vault01.vault.local.azurestack.external.

Развертывание на основе служб федерации Active Directory (AD FS)

При развертывании AD FS может появиться предупреждение: "Политика доступа не установлена. Ни у пользователя, ни у приложения нет разрешений на доступ к этому хранилищу. Чтобы устранить эту проблему, задайте политику доступа для хранилища с помощью команды Set-AzKeyVaultAccessPolicy :

# Obtain the security identifier(SID) of the active directory user
$adUser = Get-ADUser -Filter "Name -eq '{Active directory user name}'"
$objectSID = $adUser.SID.Value

# Set the key vault access policy
Set-AzKeyVaultAccessPolicy -VaultName "{key vault name}" -ResourceGroupName "{resource group name}" -ObjectId "{object SID}" -PermissionsToKeys {permissionsToKeys} -PermissionsToSecrets {permissionsToSecrets} -BypassObjectIdValidation

Управление ключами и секретами

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

Создание ключа

Используйте командлет Add-AzureKeyVaultKey, чтобы создать или импортировать ключ с программной защитой в хранилище ключей.

Add-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01" -verbose -Destination Software

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

Ключ хранилища ключей, созданный в PowerShell

Теперь вы можете использовать созданный ключ, указывая его URI. Если вы создаете или импортируете ключ, имя которого совпадает с именем существующего ключа, все указанные для нового ключа параметры сохраняются в исходном ключе. Информацию о предыдущей версии ключа можно получить с помощью URI для конкретной версии. Пример:

  • https://vault10.vault.local.azurestack.external:443/keys/key01 всегда предоставляет текущую версию.
  • https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a позволяет получить конкретную версию.

Получение ключа

Используйте командлет Get-AzureKeyVaultKey, чтобы получить ключ и сведения о нем.

Get-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01"

Создание секрета

Используйте командлет Set-AzureKeyVaultSecret, чтобы создать или обновить секрет в хранилище. Если секрет еще не существует, создается новый. Если секрет уже существует, создается новая версия этого секрета.

$secretvalue = ConvertTo-SecureString "User@123" -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01" -SecretValue $secretvalue

Создание секрета в PowerShell

Получение секрета

Используйте командлет Get-AzureKeyVaultSecret, чтобы считать секрет из хранилища ключей. Эта команда может возвращать все версии секрета или только конкретные версии.

Get-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01"

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

Авторизация приложения для использования ключа или секрета

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

В следующем примере хранилище имеет имя ContosoKeyVault. Вам нужно разрешить приложению с идентификатором клиента 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed обращаться к этому хранилищу. Для этого выполните следующую команду. Кроме того, вы можете предоставить разрешения пользователю, приложению или группе безопасности с помощью параметра PermissionsToKeys.

При использовании командлета для среды Azure Stack Hub, настроенной AD FS, необходимо указать параметр BypassObjectIdValidation.

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed -PermissionsToKeys decrypt,sign -BypassObjectIdValidation

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

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300 -PermissionsToKeys Get -BypassObjectIdValidation

Дальнейшие действия