앱이 Azure Stack 허브 Key Vault 비밀에 액세스 하도록 허용Allow apps to access Azure Stack Hub Key Vault secrets

이 문서의 단계에서는 Azure Stack Hub의 키 자격 증명 모음에서 키 및 암호를 검색 하는 샘플 앱 HelloKeyVault 를 실행 하는 방법을 설명 합니다.The steps in this article describe how to run the sample app HelloKeyVault that retrieves keys and secrets from a key vault in Azure Stack Hub.

전제 조건Prerequisites

Azure Stack Development Kit에서 또는 VPN을 통해 연결 된경우 Windows 기반 외부 클라이언트에서 다음 필수 구성 요소를 설치할 수 있습니다.You can install the following prerequisites from the Azure Stack Development Kit, or from a Windows-based external client if you're connected through VPN:

주요 자격 증명 모음 만들기 및 앱 등록Create a key vault and register an app

예제 응용 프로그램을 준비 하려면:To prepare for the sample application:

  • Azure Stack 허브에서 키 자격 증명 모음을 만듭니다.Create a key vault in Azure Stack Hub.
  • Azure Active Directory (Azure AD)에 앱을 등록 합니다.Register an app in Azure Active Directory (Azure AD).

Azure Portal 또는 PowerShell을 사용 하 여 샘플 앱을 준비 합니다.Use the Azure portal or PowerShell to prepare for the sample app.

참고

기본적으로 PowerShell 스크립트는 Active Directory에 새 앱을 만듭니다.By default, the PowerShell script creates a new app in Active Directory. 그러나 기존 응용 프로그램 중 하나를 등록할 수 있습니다.However, you can register one of your existing applications.

다음 스크립트를 실행 하기 전에 및 변수에 대 한 값을 제공 aadTenantName 해야 applicationPassword 합니다.Before running the following script, make sure you provide values for the aadTenantName and applicationPassword variables. 값을 지정 하지 않으면 applicationPassword 이 스크립트는 임의의 암호를 생성 합니다.If you don't specify a value for applicationPassword, this script generates a random password.

$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

다음 이미지는 주요 자격 증명 모음을 만드는 데 사용 되는 스크립트의 출력을 보여 줍니다.The following image shows the output from the script used to create the key vault:

키 자격 증명 모음에 액세스 키 사용

이전 스크립트에서 반환 된 VaultUrl, AuthclientidAuthClientSecret 값을 기록해 둡니다.Make a note of the VaultUrl, AuthClientId, and AuthClientSecret values returned by the previous script. 이러한 값을 사용 하 여 HelloKeyVault 응용 프로그램을 실행 합니다.You use these values to run the HelloKeyVault application.

샘플 응용 프로그램 다운로드 및 구성Download and configure the sample application

Azure Key Vault 클라이언트 샘플 페이지에서 key vault 샘플을 다운로드 합니다.Download the key vault sample from the Azure Key Vault client samples page. 개발 워크스테이션에서 .zip 파일의 콘텐츠를 추출 합니다.Extract the contents of the .zip file on your development workstation. Samples 폴더에는 두 개의 앱이 있습니다. 이 문서에서는 HelloKeyVault 를 사용 합니다.There are two apps in the samples folder; this article uses HelloKeyVault.

HelloKeyVault 샘플을 로드 하려면:To load the HelloKeyVault sample:

  1. > > HelloKeyVault 샘플 폴더를 찾아 이동 합니다.Browse to the Microsoft.Azure.KeyVault.Samples > samples > HelloKeyVault folder.
  2. Visual Studio에서 HelloKeyVault 앱을 엽니다.Open the HelloKeyVault app in Visual Studio.

샘플 애플리케이션 구성Configure the sample application

Visual Studio에서 다음을 수행합니다.In Visual Studio:

  1. HelloKeyVault\App.config 파일을 열고 요소를 찾습니다 <appSettings> .Open the HelloKeyVault\App.config file and find the <appSettings> element.

  2. 키 자격 증명 모음을 만들 때 반환 된 값으로 VaultUrl, Authclientidauthcertthumbprint 키를 업데이트 합니다.Update the VaultUrl, AuthClientId, and AuthCertThumbprint keys with the values returned when creating the key vault. 기본적으로 App.config 파일에는에 대 한 자리 표시 자가 AuthCertThumbprint 있습니다.By default, the App.config file has a placeholder for AuthCertThumbprint. 이 자리 표시자를로 바꿉니다 AuthClientSecret .Replace this placeholder with 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. 솔루션을 다시 빌드합니다.Rebuild the solution.

앱 실행Run the app

HelloKeyVault 를 실행 하면 앱이 Azure AD에 로그인 한 다음 토큰을 사용 하 여 AuthClientSecret Azure Stack Hub의 키 자격 증명 모음에 인증 합니다.When you run HelloKeyVault, the app signs in to Azure AD and then uses the AuthClientSecret token to authenticate to the key vault in Azure Stack Hub.

HelloKeyVault 샘플을 사용 하 여 다음을 수행할 수 있습니다.You can use the HelloKeyVault sample to:

  • 키와 비밀에 대 한 만들기, 암호화, 래핑 및 삭제와 같은 기본 작업을 수행 합니다.Perform basic operations such as create, encrypt, wrap, and delete on the keys and secrets.
  • 및와 같은 매개 변수를 encrypt decrypt HelloKeyVault 에 전달 하 고 지정 된 변경 내용을 키 자격 증명 모음에 적용 합니다.Pass parameters such as encrypt and decrypt to HelloKeyVault, and apply the specified changes to a key vault.

다음 단계Next steps