Tillåt appar att komma åt Azure Stack Hub Key Vault hemligheter

Stegen i den här artikeln beskriver hur du kör exempelappen HelloKeyVault som hämtar nycklar och hemligheter från ett nyckelvalv i Azure Stack Hub.

Förutsättningar

Du kan installera följande krav från Azure Stack Development Kit eller från en Windows-baserad extern klient om du är ansluten via VPN:

Skapa ett nyckelvalv och registrera en app

Så här förbereder du för exempelprogrammet:

  • Skapa ett nyckelvalv i Azure Stack Hub.
  • Registrera en app i Microsoft Entra-ID.

Använd Azure Portal eller PowerShell för att förbereda för exempelappen.

Anteckning

Som standard skapar PowerShell-skriptet en ny app i Active Directory. Du kan dock registrera ett av dina befintliga program.

Kontrollera att du anger värden för variablerna aadTenantName och applicationPassword innan du kör följande skript. Om du inte anger något värde för applicationPasswordgenererar det här skriptet ett slumpmässigt lösenord.

$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

Följande bild visar utdata från skriptet som används för att skapa nyckelvalvet:

Nyckelvalv med åtkomstnycklar

Anteckna värdena VaultUrl, AuthClientId och AuthClientSecret som returnerades av föregående skript. Du använder dessa värden för att köra HelloKeyVault-programmet .

Ladda ned och konfigurera exempelprogrammet

Ladda ned nyckelvalvsexemplet från sidan med Azure Key Vault-klientexempel. Extrahera innehållet i .zip-filen på utvecklingsarbetsstationen. Det finns två appar i exempelmappen. i den här artikeln används HelloKeyVault.

Så här läser du in HelloKeyVault-exemplet :

  1. Bläddra till mappen Microsoft.Azure.KeyVault.Samples>HelloKeyVault>.
  2. Öppna HelloKeyVault-appen i Visual Studio.

Konfigurera exempelprogrammet

I Visual Studio:

  1. Öppna filen HelloKeyVault\App.config och leta reda på elementet <appSettings> .

  2. Uppdatera nycklarna VaultUrl, AuthClientId och AuthCertThumbprint med de värden som returneras när du skapar nyckelvalvet. Som standard har App.config-filen en platshållare för AuthCertThumbprint. Ersätt den här platshållaren med 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. Återskapa lösningen.

Kör appen

När du kör HelloKeyVault loggar appen in på Microsoft Entra-ID och använder sedan token för att autentisera AuthClientSecret till nyckelvalvet i Azure Stack Hub.

Du kan använda HelloKeyVault-exemplet för att:

  • Utför grundläggande åtgärder som att skapa, kryptera, omsluta och ta bort nycklar och hemligheter.
  • Skicka parametrar som encrypt och decrypt till HelloKeyVault och tillämpa de angivna ändringarna på ett nyckelvalv.

Nästa steg