Permitir que os aplicativos acessem segredos de Key Vault do Azure Stack Hub
As etapas neste artigo descrevem como executar o aplicativo de exemplo HelloKeyVault que recupera chaves e segredos de um cofre de chaves no Azure Stack Hub.
Pré-requisitos
Você pode instalar os seguintes pré-requisitos do Kit de Desenvolvimento do Azure Stack ou de um cliente externo baseado no Windows se estiver conectado por meio de VPN:
- Instale módulos de Azure PowerShell compatíveis com o Azure Stack Hub.
- Baixe as ferramentas necessárias para trabalhar com o Azure Stack Hub.
Criar um cofre de chaves e registrar um aplicativo
Para se preparar para o aplicativo de exemplo:
- Crie um cofre de chaves no Azure Stack Hub.
- Registre um aplicativo em Microsoft Entra ID.
Use o portal do Azure ou o PowerShell para se preparar para o aplicativo de exemplo.
Observação
Por padrão, o script do PowerShell cria um novo aplicativo no Active Directory. No entanto, você pode registrar um de seus aplicativos existentes.
Antes de executar o script a seguir, certifique-se de fornecer valores para as aadTenantName
variáveis e applicationPassword
. Se você não especificar um valor para applicationPassword
, esse script gerará uma senha aleatória.
$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
A imagem a seguir mostra a saída do script usado para criar o cofre de chaves:
Anote os valores VaultUrl, AuthClientId e AuthClientSecret retornados pelo script anterior. Use esses valores para executar o aplicativo HelloKeyVault .
Baixar e configurar o aplicativo de exemplo
Baixe o exemplo do cofre de chaves na página de exemplos do cliente do Azure Key Vault. Extraia o conteúdo do arquivo .zip em sua estação de trabalho de desenvolvimento. Há dois aplicativos na pasta de exemplos; este artigo usa HelloKeyVault.
Para carregar o exemplo HelloKeyVault :
- Navegue até a pastaHelloKeyVault de exemplos do Microsoft.Azure.KeyVault.Samples>>.
- Abra o aplicativo HelloKeyVault no Visual Studio.
Configurar o aplicativo de exemplo
No Visual Studio:
Abra o arquivo HelloKeyVault\App.config e localize o
<appSettings>
elemento .Atualize as chaves VaultUrl, AuthClientId e AuthCertThumbprint com os valores retornados ao criar o cofre de chaves. Por padrão, o arquivo App.config tem um espaço reservado para
AuthCertThumbprint
. Substitua esse espaço reservado porAuthClientSecret
.<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>
Recriar a solução.
Execute o aplicativo
Quando você executa o HelloKeyVault, o aplicativo entra no Microsoft Entra ID e, em seguida, usa o AuthClientSecret
token para autenticar no cofre de chaves no Azure Stack Hub.
Você pode usar o exemplo HelloKeyVault para:
- Execute operações básicas, como criar, criptografar, encapsular e excluir nas chaves e segredos.
- Passe parâmetros como
encrypt
edecrypt
para HelloKeyVault e aplique as alterações especificadas a um cofre de chaves.