Aracılığıyla paylaş


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:

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 applicationPasswordbir 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:

Erişim anahtarlarıyla anahtar kasası

Ö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:

  1. Microsoft.Azure.KeyVault.Samples>samples>HelloKeyVault klasörüne göz atın.
  2. Visual Studio'da HelloKeyVault uygulamasını açın.

Örnek uygulamayı yapılandırma

Visual Studio'da:

  1. HelloKeyVault\App.config dosyasını açın ve öğesini bulun <appSettings> .

  2. 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 AuthCertThumbprintbir yer tutucu vardır. Bu yer tutucuyu ile AuthClientSecretdeğ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>
    
  3. Çö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 gibi encrypt parametreleri HelloKeyVault'a geçirin ve belirtilen değişiklikleri bir anahtar kasasına uygulayın.

Sonraki adımlar