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:

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 Azure Active Directory (Azure AD).

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:

Key vault with access keys

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:

  1. Vaya a la carpeta Microsoft.Azure.KeyVault.Samples>ejemplos>HelloKeyVault.
  2. Abra la aplicación HelloKeyVault en Visual Studio.

Configurar la aplicación de ejemplo

En Visual Studio:

  1. Abra el archivo HelloKeyVault\App.config y busque el elemento <appSettings>.

  2. 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 por 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>
    
  3. Recompile la solución.

Ejecución la aplicación

Al ejecutar HelloKeyVault, la aplicación inicia sesión en Azure AD y, a continuación, usa el token de AuthClientSecret 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 y decrypt a HelloKeyVault y aplique los cambios específicos a un almacén de claves.

Pasos siguientes