Uygulamaların Azure Stack Hub Key Vault gizli dizilerine erişmesine izin verme
Bu makaledeki adımlarda, Azure Stack Hub'daki bir anahtar kasasından anahtarları ve gizli dizileri alan Örnek Uygulama HelloKeyVault'un nasıl çalıştırıldığı açıklanmaktadır.
Önkoşullar
Azure Stack Geliştirme Seti'nden veya VPN üzerinden bağlıysanız Windows tabanlı bir dış istemciden aşağıdaki önkoşulları yükleyebilirsiniz:
- Azure Stack Hub uyumlu Azure PowerShell modüllerini yükleyin.
- Azure Stack Hub ile çalışmak için gereken araçları indirin.
Anahtar kasası oluşturma ve uygulama kaydetme
Örnek uygulamaya hazırlanmak için:
- Azure Stack Hub'da bir anahtar kasası oluşturun.
- Bir uygulamayı Microsoft Entra kimliğine kaydedin.
Örnek uygulamaya hazırlanmak için Azure portal veya PowerShell'i kullanın.
Not
Varsayılan olarak, PowerShell betiği Active Directory'de yeni bir uygulama oluşturur. Ancak, mevcut uygulamalarınızdan birini kaydedebilirsiniz.
Aşağıdaki betiği çalıştırmadan önce ve applicationPassword
değişkenleri için aadTenantName
değerler sağladığınıza emin olun. için applicationPassword
bir değer belirtmezseniz, bu betik rastgele bir parola oluşturur.
$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
Aşağıdaki görüntüde anahtar kasasını oluşturmak için kullanılan betiğin çıkışı gösterilmektedir:
Önceki betik tarafından döndürülen VaultUrl, AuthClientId ve AuthClientSecret değerlerini not edin. HelloKeyVault uygulamasını çalıştırmak için bu değerleri kullanırsınız.
Örnek uygulamayı indirme ve yapılandırma
Azure Key Vault istemci örnekleri sayfasından anahtar kasası örneğini indirin. Geliştirme iş istasyonunuzdaki .zip dosyasının içeriğini ayıklayın. Samples klasöründe iki uygulama vardır; Bu makalede HelloKeyVault kullanılır.
HelloKeyVault örneğini yüklemek için:
- Microsoft.Azure.KeyVault.Samples>samples>HelloKeyVault klasörüne göz atın.
- Visual Studio'da HelloKeyVault uygulamasını açın.
Örnek uygulamayı yapılandırma
Visual Studio'da:
HelloKeyVault\App.config dosyasını açın ve öğesini bulun
<appSettings>
.VaultUrl, AuthClientId ve AuthCertThumbprint anahtarlarını anahtar kasası oluşturulurken döndürülen değerlerle güncelleştirin. Varsayılan olarak, App.config dosyasında için
AuthCertThumbprint
bir yer tutucu vardır. Bu yer tutucuyu ileAuthClientSecret
değiştirin.<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>
Çözümü yeniden derleyin.
Uygulamayı çalıştırma
HelloKeyVault'u çalıştırdığınızda uygulama Microsoft Entra kimliğinde oturum açar ve ardından belirteci kullanarak Azure Stack Hub'daki anahtar kasasında kimlik doğrulaması yaparAuthClientSecret
.
HelloKeyVault örneğini kullanarak aşağıdakileri yapabilirsiniz:
- Anahtarlar ve gizli diziler üzerinde oluşturma, şifreleme, sarmalama ve silme gibi temel işlemleri gerçekleştirin.
- ve
decrypt
gibiencrypt
parametreleri HelloKeyVault'a geçirin ve belirtilen değişiklikleri bir anahtar kasasına uygulayın.