Consentire alle app di accedere ai segreti dell'hub di Azure Stack Key Vault

I passaggi descritti in questo articolo descrivono come eseguire l'app di esempio HelloKeyVault che recupera chiavi e segreti da un insieme di credenziali delle chiavi nell'hub di Azure Stack.

Prerequisiti

È possibile installare i prerequisiti seguenti da Azure Stack Development Kit o da un client esterno basato su Windows se si è connessi tramite VPN:

Creare un insieme di credenziali delle chiavi e registrare un'app

Per prepararsi per l'applicazione di esempio:

  • Creare un insieme di credenziali delle chiavi nell'hub di Azure Stack.
  • Registrare un'app in Microsoft Entra ID.

Usare il portale di Azure o PowerShell per preparare l'app di esempio.

Nota

Per impostazione predefinita, lo script di PowerShell crea una nuova app in Active Directory. Tuttavia, è possibile registrare una delle applicazioni esistenti.

Prima di eseguire lo script seguente, assicurarsi di specificare i valori per le aadTenantName variabili e applicationPassword . Se non si specifica un valore per applicationPassword, questo script genera una password casuale.

$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

L'immagine seguente mostra l'output dello script usato per creare l'insieme di credenziali delle chiavi:

Insieme di credenziali delle chiavi con chiavi di accesso

Prendere nota dei valori VaultUrl, AuthClientId e AuthClientSecret restituiti dallo script precedente. Questi valori vengono usati per eseguire l'applicazione HelloKeyVault .

Scaricare e configurare l'applicazione di esempio

Scaricare l'esempio dell'insieme di credenziali delle chiavi dalla pagina degli esempi client di Azure Key Vault. Estrarre il contenuto del file .zip nella workstation di sviluppo. Nella cartella samples sono presenti due app; questo articolo usa HelloKeyVault.

Per caricare l'esempio HelloKeyVault :

  1. Passare alla cartella Microsoft.Azure.KeyVault.Samples>HelloKeyVault.>
  2. Aprire l'app HelloKeyVault in Visual Studio.

Configurare l'applicazione di esempio

In Visual Studio:

  1. Aprire il file HelloKeyVault\App.config e trovare l'elemento <appSettings> .

  2. Aggiornare le chiavi VaultUrl, AuthClientId e AuthCertThumbprint con i valori restituiti durante la creazione dell'insieme di credenziali delle chiavi. Per impostazione predefinita, il file di App.config ha un segnaposto per AuthCertThumbprint. Sostituire questo segnaposto con 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. Ricompilare la soluzione.

Eseguire l'app

Quando si esegue HelloKeyVault, l'app accede a Microsoft Entra ID e quindi usa il token per eseguire l'autenticazione AuthClientSecret all'insieme di credenziali delle chiavi nell'hub di Azure Stack.

È possibile usare l'esempio HelloKeyVault per:

  • Eseguire operazioni di base, ad esempio creare, crittografare, eseguire il wrapping ed eliminare le chiavi e i segreti.
  • Passare parametri come encrypt e decrypt a HelloKeyVault e applicare le modifiche specificate a un insieme di credenziali delle chiavi.

Passaggi successivi