Разрешение приложениям получать доступ к секретам из хранилища ключей Azure Stack Hub
В этой статье описывается, как запустить пример приложения HelloKeyVault, который извлекает ключи и секреты из хранилища ключей в Azure Stack Hub.
Предварительные требования
Вы можете установить следующие обязательные компоненты из Пакета средств разработки Azure Stack или из внешнего клиента Windows, если вы используете VPN-подключение:
- Установите совместимые с Azure Stack Hub модули Azure PowerShell.
- Скачайте средства, необходимые для работы с Azure Stack Hub.
Создание хранилища ключей и регистрация приложения
Чтобы подготовить пример приложения, выполните следующие действия:
- Создайте хранилище ключей в Azure Stack Hub.
- Зарегистрируйте приложение в Microsoft Entra идентификаторе.
С помощью портала Azure или PowerShell выполните действия для подготовки к установке примера приложения.
Примечание
По умолчанию скрипт PowerShell создает новое приложение в Active Directory. Но его можно использовать и для регистрации существующего приложения.
Прежде чем запускать приведенный ниже скрипт, не забудьте предоставить значения для переменных aadTenantName
и applicationPassword
. Если вы не укажете значение для переменной applicationPassword
, скрипт создаст случайный пароль.
$vaultName = 'myVault'
$resourceGroupName = 'myResourceGroup'
$applicationName = 'myApp'
$location = 'local'
# Password for the application. If not specified, this script generates a random password during app creation.
$applicationPassword = ''
# Function to generate a random password for the application.
Function GenerateSymmetricKey()
{
$key = New-Object byte[](32)
$rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::Create()
$rng.GetBytes($key)
return [System.Convert]::ToBase64String($key)
}
Write-Host 'Please log into your Azure Stack Hub user environment' -foregroundcolor Green
$tenantARM = "https://management.local.azurestack.external"
$aadTenantName = "FILL THIS IN WITH YOUR AAD TENANT NAME. FOR EXAMPLE: myazurestack.onmicrosoft.com"
# Configure the Azure Stack Hub operator's PowerShell environment.
Add-AzEnvironment `
-Name "AzureStackUser" `
-ArmEndpoint $tenantARM
$TenantID = Get-AzsDirectoryTenantId `
-AADTenantName $aadTenantName `
-EnvironmentName AzureStackUser
# Sign in to the user portal.
Connect-AzAccount `
-EnvironmentName "AzureStackUser" `
-TenantId $TenantID `
$now = [System.DateTime]::Now
$oneYearFromNow = $now.AddYears(1)
$applicationPassword = GenerateSymmetricKey
# Create a new Azure AD application.
$identifierUri = [string]::Format("http://localhost:8080/{0}",[Guid]::NewGuid().ToString("N"))
$homePage = "https://contoso.com"
Write-Host "Creating a new AAD Application"
$ADApp = New-AzADApplication `
-DisplayName $applicationName `
-HomePage $homePage `
-IdentifierUris $identifierUri `
-StartDate $now `
-EndDate $oneYearFromNow `
-Password $applicationPassword
Write-Host "Creating a new AAD service principal"
$servicePrincipal = New-AzADServicePrincipal `
-ApplicationId $ADApp.ApplicationId
# Create a new resource group and a key vault in that resource group.
New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
Write-Host "Creating vault $vaultName"
$vault = New-AzKeyVault -VaultName $vaultName `
-ResourceGroupName $resourceGroupName `
-Sku standard `
-Location $location
# Specify full privileges to the vault for the application.
Write-Host "Setting access policy"
Set-AzKeyVaultAccessPolicy -VaultName $vaultName `
-ObjectId $servicePrincipal.Id `
-PermissionsToKeys all `
-PermissionsToSecrets all
Write-Host "Paste the following settings into the app.config file for the HelloKeyVault project:"
'<add key="VaultUrl" value="' + $vault.VaultUri + '"/>'
'<add key="AuthClientId" value="' + $servicePrincipal.ApplicationId + '"/>'
'<add key="AuthClientSecret" value="' + $applicationPassword + '"/>'
Write-Host
На следующем изображении показаны выходные данные скрипта, используемого для создания хранилища ключей.
Запишите значения VaultUrl, AuthClientId и AuthClientSecret, возвращенные предыдущим скриптом. Используйте их для запуска приложения HelloKeyVault.
Скачивание и настройка примера приложения
Скачайте пример хранилища ключей со страницы примеров клиентов хранилища ключей Azure. Извлеките содержимое ZIP-файла на рабочей станции разработки. Будет создана папка samples с двумя приложениями. В этой статье мы используем только HelloKeyVault.
Чтобы применить пример HelloKeyVault, выполните следующие действия.
- Перейдите к папке Microsoft.Azure.KeyVault.Samples>samples>HelloKeyVault.
- Откройте приложение HelloKeyVault в Visual Studio.
Настройка примера приложения
В Visual Studio:
Откройте файл HelloKeyVault\App.config и найдите элемент
<appSettings>
.Обновите ключи VaultUrl, AuthClientId и AuthCertThumbprint с помощью значений, которые были возвращены при создании хранилища ключей. По умолчанию файл App.config содержит заполнитель для
AuthCertThumbprint
. Замените его наAuthClientSecret
.<appSettings> <!-- Update these settings for your test environment --> <add key="VaultUrl" value="URL to your Vault" /> <add key="AuthClientId" value="Client Id of your Service Principal" /> <add key="AuthCertThumbprint" value="Thumbprint of the certificate used for authentication" /> <add key="TracingEnabled" value="false" /> </appSettings>
Повторно создайте решение.
Запустите приложение
При запуске HelloKeyVault приложение входит в Microsoft Entra идентификатор, а затем использует AuthClientSecret
маркер для проверки подлинности в хранилище ключей в Azure Stack Hub.
Пример HelloKeyVault позволяет выполнить следующие действия:
- запустить основные операции, например создание, шифрование, заключение в оболочку или удаление ключей и секретных данных;
- передать приложению HelloKeyVault параметры, например
encrypt
иdecrypt
, чтобы применить указанные изменения к хранилищу ключей.
Дальнейшие действия
- Развертывание виртуальной машины с помощью пароля из хранилища ключей
- Create a virtual machine and include certificate retrieved from a key vault (Создание виртуальной машины с сертификатом хранилища ключей)