Zugriff auf Azure Stack Hub-Key Vault-Geheimnisse durch Apps zulassen
In den Schritten in diesem Artikel wird beschrieben, wie Sie die Beispiel-App HelloKeyVault ausführen, die Schlüssel und Geheimnisse aus einem Schlüsseltresor in Azure Stack Hub abruft.
Voraussetzungen
Sie können die folgenden erforderlichen Komponenten über das Azure Stack Development Kit oder einen Windows-basierten externen Client installieren, sofern eine VPN-Verbindung besteht:
- Installieren Sie mit Azure Stack Hub kompatible Azure PowerShell-Module.
- Laden Sie die Tools herunter, die für die Arbeit mit Azure Stack Hub benötigt werden.
Erstellen eines Schlüsseltresors und Registrieren einer App
Bereiten Sie die Beispielanwendung wie folgt vor:
- Erstellen Sie einen Schlüsseltresor in Azure Stack Hub.
- Registrieren Sie eine App in Microsoft Entra ID.
Verwenden Sie das Azure-Portal oder PowerShell, um die Vorbereitungen für die Beispiel-App durchzuführen.
Hinweis
Standardmäßig wird mit dem PowerShell-Skript eine neue App in Active Directory erstellt. Sie können aber auch eine Ihrer vorhandenen Anwendungen registrieren.
Stellen Sie vor dem Ausführen des folgenden Skripts sicher, dass Sie Werte für die Variablen aadTenantName
und applicationPassword
angeben. Wenn Sie keinen Wert für applicationPassword
angeben, generiert dieses Skript ein zufälliges Kennwort.
$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
Die folgende Abbildung zeigt die Ausgabe des Skripts, das zum Erstellen des Schlüsseltresors verwendet wird:
Notieren Sie die vom Skript zurückgegeben Werte für VaultUrl, AuthClientId und AuthClientSecret. Diese Werte verwenden Sie zum Ausführen der Anwendung HelloKeyVault.
Herunterladen und Konfigurieren der Beispielanwendung
Laden Sie den Beispielschlüsseltresor von der Seite mit den Azure Key Vault-Clientbeispielen herunter. Extrahieren Sie den Inhalt der ZIP-Datei auf Ihrer Entwicklungsarbeitsstation. Der Ordner „samples“ enthält zwei Apps, von denen in diesem Artikel HelloKeyVault verwendet wird.
So laden Sie das HelloKeyVault-Beispiel:
- Navigieren Sie zum Ordner Microsoft.Azure.KeyVault.Samples>samples>HelloKeyVault.
- Öffnen Sie die App HelloKeyVault in Visual Studio.
Konfigurieren der Beispielanwendung
In Visual Studio:
Öffnen Sie die Datei „HelloKeyVault\App.config“, und suchen Sie nach dem Element
<appSettings>
.Aktualisieren Sie die Schlüssel VaultUrl, AuthClientId und AuthCertThumbprint mit den beim Erstellen des Schlüsseltresors zurückgegebenen Werten. Standardmäßig enthält die Datei „App.config“ einen Platzhalter für
AuthCertThumbprint
. Ersetzen Sie diesen Platzhalter durchAuthClientSecret
.<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>
Erstellen Sie die Projektmappe neu.
Ausführen der App
Wenn Sie HelloKeyVault ausführen, meldet sich die App bei Microsoft Entra-ID an und verwendet das AuthClientSecret
Token dann zur Authentifizierung beim Schlüsseltresor in Azure Stack Hub.
Sie können das Beispiel HelloKeyVault für folgende Zwecke verwenden:
- Führen Sie grundlegende Vorgänge wie das Erstellen, Verschlüsseln, Umschließen und Löschen der Schlüssel und Geheimnisse durch.
- Übergeben Sie Parameter (z.B.
encrypt
unddecrypt
) an HelloKeyVault, und wenden Sie die angegebenen Änderungen auf einen Schlüsseltresor an.