Concesión de permiso a las aplicaciones para acceder a los secretos de Key Vault de Azure Stack Hub
En los pasos de este artículo se indica cómo ejecutar la aplicación de ejemplo HelloKeyVault que recupera las claves y los secretos de un almacén de claves en Azure Stack Hub.
Requisitos previos
Puede instalar los siguientes requisitos previos con el Kit de desarrollo de Azure Stack, o con un cliente externo basado en Windows si está conectado a través de VPN:
- Instale los módulos de Azure PowerShell compatibles con Azure Stack Hub.
- Descargue las herramientas necesarias para trabajar con Azure Stack Hub.
Creación de un almacén de claves y registro de una aplicación
Para preparar la aplicación de ejemplo:
- Cree un almacén de claves en Azure Stack Hub.
- Registre una aplicación en Microsoft Entra id.
Use Azure Portal o PowerShell para los preparativos para la aplicación de ejemplo.
Nota
De forma predeterminada, el script de PowerShell crea una aplicación nueva en Active Directory. Sin embargo, también puede registrar una de las aplicaciones existentes.
Antes de ejecutar el siguiente script, asegúrese de proporcionar valores para las variables aadTenantName
y applicationPassword
. Si no especifica ningún valor para applicationPassword
, este script genera una contraseña aleatoria.
$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
En la imagen siguiente se muestra la salida del script usado para crear el almacén de claves:
Tome nota de los valores de VaultUrl, AuthClientId y AuthClientSecret que devolvió el script anterior. Para ejecutar la aplicación HelloKeyVault, utilizará estos valores.
Descarga y configuración de la aplicación de ejemplo
Descargue el ejemplo de almacén de claves de la página de Azure Key vault client samples (ejemplos de cliente del almacén de claves). Extraiga el contenido del archivo .zip en la estación de trabajo de desarrollo. Hay dos aplicaciones en la carpeta de ejemplos, en este artículo se usa HelloKeyVault.
Para cargar el ejemplo HelloKeyVault:
- Vaya a la carpeta Microsoft.Azure.KeyVault.Samples>ejemplos>HelloKeyVault.
- Abra la aplicación HelloKeyVault en Visual Studio.
Configurar la aplicación de ejemplo
En Visual Studio:
Abra el archivo HelloKeyVault\App.config y busque el elemento
<appSettings>
.Actualice las claves VaultUrl, AuthClientId y AuthCertThumbprint con los valores devueltos al crear el almacén de claves. De forma predeterminada, el archivo App.config tiene un marcador de posición para
AuthCertThumbprint
. Reemplace este marcador de posición 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>
Recompile la solución.
Ejecución la aplicación
Al ejecutar HelloKeyVault, la aplicación inicia sesión en Microsoft Entra id. y, a continuación, usa el AuthClientSecret
token para autenticarse en el almacén de claves de Azure Stack Hub.
Puede usar el ejemplo HelloKeyVault para:
- Realizar operaciones básicas, como crear, cifrar, ajustar y eliminar, en las claves y secretos.
- Pase parámetros como
encrypt
ydecrypt
a HelloKeyVault y aplique los cambios específicos a un almacén de claves.