Key Vault에 저장 된 암호를 사용 하 여 Azure Stack 허브 VM 배포Deploy an Azure Stack Hub VM using a password stored in Key Vault

이 문서에서는 Azure Stack Hub Key Vault에 저장 된 암호를 사용 하 여 Windows Server VM (가상 머신)을 배포 하는 단계를 안내 합니다.This article steps through deploying a Windows Server virtual machine (VM) using a password stored in Azure Stack Hub Key Vault. 키 자격 증명 모음 암호를 사용 하면 일반 텍스트 암호를 전달 하는 것 보다 안전 합니다.Using a key vault password is more secure than passing a plain text password.

개요Overview

암호와 같은 값을 Azure Stack 허브 키 자격 증명 모음에 암호로 저장할 수 있습니다.You can store values such as a password as a secret in an Azure Stack Hub key vault. 비밀을 만든 후 Azure Resource Manager 템플릿에서 참조할 수 있습니다.After you create a secret, you can reference it in Azure Resource Manager templates. 리소스 관리자에서 암호를 사용 하면 다음과 같은 이점이 있습니다.Using secrets with Resource Manager provides the following benefits:

  • 리소스를 배포할 때마다 암호를 수동으로 입력 하지 않아도 됩니다.You don't have to manually enter secret each time you deploy a resource.
  • 암호에 액세스할 수 있는 사용자 또는 서비스 주체를 지정할 수 있습니다.You can specify which users or service principals can access a secret.

사전 요구 사항Prerequisites

다음 단계는 Key Vault에 저장 된 암호를 검색 하 여 VM을 만드는 데 필요한 프로세스를 설명 합니다.The following steps describe the process required to create a VM by retrieving the password stored in a Key Vault:

  1. Key Vault 비밀을 만듭니다.Create a Key Vault secret.
  2. 파일을 업데이트 azuredeploy.parameters.json 합니다.Update the azuredeploy.parameters.json file.
  3. 템플릿을 배포합니다.Deploy the template.

참고

VPN을 통해 연결 된 경우에는 Azure Stack Development Kit (ASDK) 또는 외부 클라이언트에서 이러한 단계를 사용할 수 있습니다.You can use these steps from the Azure Stack Development Kit (ASDK), or from an external client if you're connected through VPN.

Key Vault 비밀 만들기Create a Key Vault secret

다음 스크립트는 key vault를 만들고 비밀으로 키 자격 증명 모음에 암호를 저장 합니다.The following script creates a key vault and stores a password in the key vault as a secret. -EnabledForDeployment키 자격 증명 모음을 만들 때 매개 변수를 사용 합니다.Use the -EnabledForDeployment parameter when you're creating the key vault. 이 매개 변수를 사용 하면 Azure Resource Manager 템플릿에서 키 자격 증명 모음을 참조할 수 있습니다.This parameter makes sure that the key vault can be referenced from Azure Resource Manager templates.


$vaultName = "contosovault"
$resourceGroup = "contosovaultrg"
$location = "local"
$secretName = "MySecret"

New-AzResourceGroup `
  -Name $resourceGroup `
  -Location $location

New-AzKeyVault `
  -VaultName $vaultName `
  -ResourceGroupName $resourceGroup `
  -Location $location
  -EnabledForTemplateDeployment

$secretValue = ConvertTo-SecureString -String '<Password for your virtual machine>' -AsPlainText -Force

Set-AzureKeyVaultSecret `
  -VaultName $vaultName `
  -Name $secretName `
  -SecretValue $secretValue

이전 스크립트를 실행 하는 경우 출력에는 비밀 URI (Uniform Resource Identifier)가 포함 됩니다.When you run the previous script, the output includes the secret URI (Uniform Resource Identifier). 이 URI를 기록해 둡니다.Make a note of this URI. 키 자격 증명 모음에 암호를 사용 하 여 WINDOWS VM 배포 템플릿에서이를 참조 해야 합니다.You have to reference it in the Deploy Windows VM with password in key vault template. 개발 컴퓨터에 101-vm-secure-password 폴더를 다운로드 합니다.Download the 101-vm-secure-password folder onto your development computer. 이 폴더에는 azuredeploy.json azuredeploy.parameters.json 다음 단계에서 필요한 및 파일이 포함 되어 있습니다.This folder contains the azuredeploy.json and azuredeploy.parameters.json files, which you'll need in the next steps.

azuredeploy.parameters.json환경 값에 따라 파일을 수정 합니다.Modify the azuredeploy.parameters.json file according to your environment values. 특별 관심의 매개 변수는 자격 증명 모음 이름, 자격 증명 모음 리소스 그룹 및 암호 URI (이전 스크립트에 의해 생성 됨)입니다.The parameters of special interest are the vault name, the vault resource group, and the secret URI (as generated by the previous script). 다음 파일은 매개 변수 파일의 예입니다.The file below is an example of a parameter file.

파일의 azuredeploy.parameters.js업데이트Update the azuredeploy.parameters.json file

azuredeploy.parameters.json사용자 환경에 따라 VM 값의 KeyVault URI, secretName, adminUsername을 사용 하 여 파일을 업데이트 합니다.Update the azuredeploy.parameters.json file with the KeyVault URI, secretName, adminUsername of the VM values as per your environment. 다음 JSON 파일은 템플릿 매개 변수 파일의 예를 보여 줍니다.The following JSON file shows an example of the template parameters file:

{
    "$schema":  "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion":  "1.0.0.0",
    "parameters":  {
       "adminUsername":  {
         "value":  "demouser"
          },
       "adminPassword":  {
         "reference":  {
            "keyVault":  {
              "id":  "/subscriptions/xxxxxx/resourceGroups/RgKvPwd/providers/Microsoft.KeyVault/vaults/KvPwd"
              },
            "secretName":  "MySecret"
         }
       },
       "dnsLabelPrefix":  {
          "value":  "mydns123456"
        },
        "windowsOSVersion":  {
          "value":  "2016-Datacenter"
        }
    }
}

템플릿 배포Template deployment

이제 다음 PowerShell 스크립트를 사용 하 여 템플릿을 배포 합니다.Now deploy the template by using the following PowerShell script:

New-AzResourceGroupDeployment `
  -Name KVPwdDeployment `
  -ResourceGroupName $resourceGroup `
  -TemplateFile "<Fully qualified path to the azuredeploy.json file>" `
  -TemplateParameterFile "<Fully qualified path to the azuredeploy.parameters.json file>"

템플릿이 성공적으로 배포 되 면 다음과 같은 결과가 출력 됩니다.When the template is deployed successfully, it results in the following output:

배포 출력

다음 단계Next steps