자습서: Resource Manager 템플릿 배포에 Azure Key Vault 통합Tutorial: Integrate Azure Key Vault in your Resource Manager template deployment

Azure Key Vault에서 비밀을 검색하여 Azure Resource Manager를 배포할 때 비밀을 매개 변수로 전달하는 방법을 알아봅니다.Learn how to retrieve secrets from an Azure key vault and pass the secrets as parameters when you deploy Azure Resource Manager. 이 매개 변수 값은 해당 Key Vault ID만 참조하기 때문에 절대 노출되지 않습니다.The parameter value is never exposed, because you reference only its key vault ID. 자세한 내용은 Azure Key Vault를 사용하여 배포 중에 보안 매개 변수 값 전달을 참조하세요.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.

리소스 배포 순서 설정 자습서에서는 VM(가상 머신)을 만듭니다.In the Set resource deployment order tutorial, you create a virtual machine (VM). VM 관리자 사용자 이름과 암호를 제공해야 합니다.You need to provide the VM administrator username and password. 암호를 제공하는 대신, Azure Key Vault에 암호를 미리 저장한 다음, 배포 중에 키 자격 증명 모음에서 암호를 검색하도록 템플릿을 사용자 지정할 수 있습니다.Instead of providing the password, you can pre-store the password in an Azure key vault and then customize the template to retrieve the password from the key vault during the deployment.

키 자격 증명 모음과 Resource Manager 템플릿의 통합을 표시하는 다이어그램

이 자습서에서 다루는 작업은 다음과 같습니다.This tutorial covers the following tasks:

  • 키 자격 증명 모음 준비Prepare a key vault
  • 빠른 시작 템플릿 열기Open a quickstart template
  • 매개 변수 파일 편집Edit the parameters file
  • 템플릿 배포Deploy the template
  • 배포 유효성 검사Validate the deployment
  • 리소스 정리Clean up resources

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account before you begin.

참고

이 문서는 새 Azure PowerShell Az 모듈을 사용하도록 업데이트되었습니다.This article has been updated to use the new Azure PowerShell Az module. AzureRM 모듈은 적어도 2020년 12월까지 버그 수정을 수신할 예정이므로 계속 사용하셔도 됩니다.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. 새 Az 모듈 및 AzureRM 호환성에 대한 자세한 내용은 새 Azure PowerShell Az 모듈 소개를 참조하세요.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az 모듈 설치 지침은 Azure PowerShell 설치를 참조하세요.For Az module installation instructions, see Install Azure PowerShell.

필수 조건Prerequisites

이 문서를 완료하려면 다음이 필요합니다.To complete this article, you need:

키 자격 증명 모음 준비Prepare a key vault

이 섹션에서는 템플릿을 배포할 때 비밀을 검색할 수 있도록 키 자격 증명 모음을 만들고 비밀을 키 자격 증명 모음에 추가합니다.In this section, you create a key vault and add a secret to it, so that you can retrieve the secret when you deploy your template. 키 자격 증명 모음을 만드는 여러 가지 방법이 있습니다.There are many ways to create a key vault. 이 자습서에서는 Azure PowerShell을 사용하여 Resource Manager 템플릿을 배포합니다.In this tutorial, you use Azure PowerShell to deploy a Resource Manager template. 이 템플릿은 다음을 수행합니다.This template does the following:

  • enabledForTemplateDeployment 속성이 활성화된 키 자격 증명 모음을 만듭니다.Creates a key vault with the enabledForTemplateDeployment property enabled. 이 속성이 true여야 템플릿 배포 프로세스가 이 키 자격 증명 모음에 정의된 비밀에 액세스할 수 있습니다.This property must be true before the template deployment process can access the secrets that are defined in the key vault.
  • 키 자격 증명 모음에 비밀을 추가합니다.Adds a secret to the key vault. 비밀에는 VM 관리자 암호가 저장됩니다.The secret stores the VM administrator password.

참고

가상 머신 템플릿을 배포하는 사용자가 키 자격 증명 모음의 소유자나 기여자가 아닌 경우에는 소유자나 기여자가 키 자격 증명 모음의 Microsoft.KeyVault/vaults/deploy/action에 대한 액세스 권한을 해당 사용자에게 부여해야 합니다.As the user who's deploying the virtual machine template, if you're not the Owner of or a Contributor to the key vault, the Owner or a Contributor must grant you access to the Microsoft.KeyVault/vaults/deploy/action permission for the key vault. 자세한 내용은 Azure Key Vault를 사용하여 배포 중에 보안 매개 변수 값 전달을 참조하세요.For more information, see Use Azure Key Vault to pass a secure parameter value during deployment.

다음 Azure PowerShell 스크립트를 실행하려면 사용해 보세요를 선택하여 Azure Cloud Shell을 엽니다.To run the following Azure PowerShell script, select Try it to open Azure Cloud Shell. 스크립트를 붙여넣으려면 마우스 오른쪽 단추로 셸 창을 클릭한 다음, 붙여넣기를 선택합니다.To paste the script, right-click the shell pane, and then select Paste.

$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$upn = Read-Host -Prompt "Enter your user principal name (email address) used to sign in to Azure"
$secretValue = Read-Host -Prompt "Enter the virtual machine administrator password" -AsSecureString

$resourceGroupName = "${projectName}rg"
$keyVaultName = $projectName
$adUserId = (Get-AzADUser -UserPrincipalName $upn).Id
$templateUri = "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorials-use-key-vault/CreateKeyVault.json"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -keyVaultName $keyVaultName -adUserId $adUserId -secretValue $secretValue

중요

  • 리소스 그룹 이름은 rg가 추가된 프로젝트 이름입니다.The resource group name is the project name, but with rg appended to it. 이 자습서에서 만든 리소스를 더 쉽게 정리하려면 다음 템플릿을 배포할 때 동일한 프로젝트 이름과 리소스 그룹 이름을 사용하세요.To make it easier to clean up the resources that you created in this tutorial, use the same project name and resource group name when you deploy the next template.
  • 비밀의 기본 이름은 vmAdminPassword입니다.The default name for the secret is vmAdminPassword. 이 이름은 템플릿에 하드 코드되어 있습니다.It's hardcoded in the template.
  • 템플릿에서 비밀을 검색할 수 있도록 하려면 키 자격 증명 모음에 템플릿 배포를 위해 Azure Resource Manager에 대한 액세스 사용이라는 액세스 정책을 사용하도록 설정해야 합니다.To enable the template to retrieve the secret, you must enable an access policy called "Enable access to Azure Resource Manager for template deployment" for the key vault. 이 정책은 템플릿에서 사용하도록 설정됩니다.This policy is enabled in the template. 이 액세스 정책에 대한 자세한 내용은 키 자격 증명 모음 및 비밀 배포를 참조하세요.For more information about the access policy, see Deploy key vaults and secrets.

템플릿에는 keyVaultId라는 하나의 출력 값이 있습니다.The template has one output value, called keyVaultId. 가상 머신을 배포할 때 나중에 사용할 ID 값을 적어 둡니다.Write down the ID value for later use, when you deploy the virtual machine. 리소스 ID 형식은 다음과 같습니다.The resource ID format is:

/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>

ID를 복사하여 붙여넣으면 ID가 여러 줄로 분할될 수 있습니다.When you copy and paste the ID, it might be broken into multiple lines. 줄을 병합하고 여분의 공백을 제거하세요.Merge the lines and trim the extra spaces.

배포의 유효성을 검사하려면 동일한 셸 창에서 다음 PowerShell 명령을 실행하여 비밀을 일반 텍스트로 검색합니다.To validate the deployment, run the following PowerShell command in the same shell pane to retrieve the secret in clear text. 이 명령은 이전 PowerShell 스크립트에 정의된 $keyVaultName 변수를 사용하므로 동일한 셸 세션에서만 작동합니다.The command works only in the same shell session, because it uses the variable $keyVaultName, which is defined in the preceding PowerShell script.

(Get-AzKeyVaultSecret -vaultName $keyVaultName  -name "vmAdminPassword").SecretValueText

이제 키 자격 증명 모음 및 비밀이 준비되었습니다.Now you've prepared a key vault and a secret. 다음 섹션에서는 배포 중에 비밀을 검색하도록 기존 템플릿을 사용자 지정하는 방법을 보여줍니다.The following sections show you how to customize an existing template to retrieve the secret during the deployment.

빠른 시작 템플릿 열기Open a quickstart template

Azure 빠른 시작 템플릿은 Resource Manager 템플릿용 리포지토리입니다.Azure Quickstart Templates is a repository for Resource Manager templates. 템플릿을 처음부터 새로 만드는 대신 샘플 템플릿을 찾아서 사용자 지정할 수 있습니다.Instead of creating a template from scratch, you can find a sample template and customize it. 이 자습서에 사용되는 템플릿의 이름은 Deploy a simple Windows VM입니다.The template that's used in this tutorial is called Deploy a simple Windows VM.

  1. Visual Studio Code에서 파일 > 파일 열기를 차례로 선택합니다.In Visual Studio Code, select File > Open File.

  2. 파일 이름 상자에 다음 URL을 붙여넣습니다.In the File name box, paste the following URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-windows/azuredeploy.json
    
  3. 열기를 선택하여 파일을 엽니다.Select Open to open the file. 자습서: 종속 리소스가 있는 Azure Resource Manager 템플릿 만들기에서 사용한 대로 Cloud Shell 배포 방법을 사용합니다.The scenario is the same as the one that's used in Tutorial: Create Azure Resource Manager templates with dependent resources. 템플릿은 5개의 리소스를 정의합니다.The template defines five resources:

    템플릿을 사용자 지정하기 전에 템플릿의 몇 가지 기본적인 내용을 이해하면 유용합니다.It's helpful to have some basic understanding of the template before you customize it.

  4. 파일 > 다른 이름으로 저장을 선택하여 파일 복사본을 로컬 컴퓨터에 azuredeploy.json이라는 이름으로 저장합니다.Select File > Save As, and then save a copy of the file to your local computer with the name azuredeploy.json.

  5. 1~3단계를 반복하여 다음 URL을 연 다음, 파일을 azuredeploy.parameters.json으로 저장합니다.Repeat steps 1-3 to open the following URL, and then save the file as azuredeploy.parameters.json.

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-windows/azuredeploy.parameters.json
    

매개 변수 파일 편집Edit the parameters file

템플릿 파일은 변경하지 않아도 됩니다.You don't need to make any changes to the template file.

  1. 열려 있지 않은 경우 Visual Studio Code에서 azuredeploy.parameters.json을 엽니다.In Visual Studio Code, open azuredeploy.parameters.json if it's not already open.

  2. adminPassword 매개 변수를 다음과 같이 업데이트합니다.Update the adminPassword parameter to:

    "adminPassword": {
        "reference": {
            "keyVault": {
            "id": "/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>"
            },
            "secretName": "vmAdminPassword"
        }
    },
    

    중요

    id의 값을 이전 절차에서 만든 키 자격 증명 모음의 리소스 ID로 바꿉니다.Replace the value for id with the resource ID of the key vault that you created in the previous procedure.

    키 자격 증명 모음과 Resource Manager 템플릿 가상 머신 배포 매개 변수 파일 통합

  3. 다음 값을 업데이트합니다.Update the following values:

    • adminUsername: 가상 머신 관리자 계정의 이름입니다.adminUsername: The name of the virtual machine administrator account.
    • dnsLabelPrefix: dnsLabelPrefix 값의 이름을 지정합니다.dnsLabelPrefix: Name the dnsLabelPrefix value.

    이름의 예는 이전의 이미지를 참조하세요.For examples of names, see the preceding image.

  4. 변경 내용을 저장합니다.Save the changes.

템플릿 배포Deploy the template

템플릿 배포의 지침을 따릅니다.Follow the instructions in Deploy the template. azuredeploy.jsonazuredeploy.parameters.json을 모두 Cloud Shell에 업로드한 후 다음 PowerShell 스크립트를 사용하여 템플릿을 배포합니다.Upload both azuredeploy.json and azuredeploy.parameters.json to Cloud Shell, and then use the following PowerShell script to deploy the template:

$projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
$location = Read-Host -Prompt "Enter the same location that is used for creating the key vault (i.e. centralus)"
$resourceGroupName = "${projectName}rg"

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile "$HOME/azuredeploy.json" `
    -TemplateParameterFile "$HOME/azuredeploy.parameters.json"

템플릿을 배포할 때는 키 자격 증명 모음에서 사용한 것과 동일한 리소스 그룹을 사용합니다.When you deploy the template, use the same resource group that you used in the key vault. 이 접근 방식을 사용하면 리소스 그룹 2개를 삭제하지 않고 1개만 삭제하면 되므로 리소스를 더 쉽게 정리할 수 있습니다.This approach makes it easier for you to clean up the resources, because you need to delete only one resource group instead of two.

배포 유효성 검사Validate the deployment

가상 머신 배포에 성공한 후에는 키 자격 증명 모음에 저장된 암호를 사용하여 로그인 자격 증명을 테스트합니다.After you've successfully deployed the virtual machine, test the sign-in credentials by using the password that's stored in the key vault.

  1. Azure Portal을 엽니다.Open the Azure portal.

  2. 리소스 그룹 > <YourResourceGroupName> > simpleWinVM을 선택합니다.Select Resource groups > <YourResourceGroupName> > simpleWinVM.

  3. 위쪽에 있는 연결을 선택합니다.Select connect at the top.

  4. RDP 파일 다운로드를 선택한 다음, 지침에 따라 키 자격 증명 모음에 저장된 암호를 사용하여 가상 머신에 로그인합니다.Select Download RDP File, and then follow the instructions to sign in to the virtual machine by using the password that's stored in the key vault.

리소스 정리Clean up resources

Azure 리소스가 더 이상 필요하지 않은 경우 리소스 그룹을 삭제하여 배포된 리소스를 정리합니다.When you no longer need your Azure resources, clean up the resources that you deployed by deleting the resource group.

$projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
$resourceGroupName = "${projectName}rg"

Remove-AzResourceGroup -Name $resourceGroupName

다음 단계Next steps

이 자습서에서는 Azure Key Vault에서 비밀을 검색했습니다.In this tutorial, you retrieved a secret from your Azure key vault. 그런 다음, 템플릿 배포에 비밀을 사용했습니다.You then used the secret in your template deployment. 연결된 템플릿을 만드는 방법을 알아보려면 다음을 참조하세요.To learn how to create linked templates, see: