빠른 시작: Bicep을 사용하여 Azure Key Vault 및 키 만들기

Azure Key Vault 는 키, 암호 및 인증서와 같은 비밀에 대한 보안 저장소를 제공하는 클라우드 서비스입니다. 이 빠른 시작 가이드는 키 볼트 및 키를 만들기 위해 Bicep 파일을 배포하는 과정에 중점을 둡니다.

Bicep은 선언적 구문을 사용하여 Azure 리소스를 배포하는 DSL(도메인 특정 언어)입니다. 간결한 구문, 신뢰할 수 있는 형식 안전성 및 코드 재사용 지원을 제공합니다. Bicep은 Azure에서 코드형 인프라 솔루션에 대한 최고의 제작 환경을 제공합니다.

필수 조건

이 문서를 완료하려면 다음을 수행합니다.

  • Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
  • 사용자에게 Azure 기본 제공 역할이 할당되어 있어야 하며, 권장되는 역할은 기여자입니다. 여기를 참조하세요.

Bicep 파일을 검토하십시오

이 빠른 시작에서 사용되는 템플릿은 Azure 빠른 시작 템플릿에서 나온 것입니다.

@description('The name of the key vault to be created.')
param vaultName string

@description('The name of the key to be created.')
param keyName string

@description('The location of the resources.')
param location string = resourceGroup().location

@description('The SKU of the vault to be created.')
@allowed([
  'standard'
  'premium'
])
param skuName string = 'standard'

@description('The JsonWebKeyType of the key to be created.')
@allowed([
  'EC'
  'EC-HSM'
  'RSA'
  'RSA-HSM'
])
param keyType string = 'RSA'

@description('The permitted JSON web key operations of the key to be created.')
param keyOps array = []

@description('The size in bits of the key to be created.')
param keySize int = 2048

@description('The JsonWebKeyCurveName of the key to be created.')
@allowed([
  ''
  'P-256'
  'P-256K'
  'P-384'
  'P-521'
])
param curveName string = ''

resource vault 'Microsoft.KeyVault/vaults@2023-07-01' = {
  name: vaultName
  location: location
  properties: {
    enableRbacAuthorization: true
    enableSoftDelete: true
    softDeleteRetentionInDays: 90
    enablePurgeProtection: true
    enabledForDeployment: false
    enabledForDiskEncryption: false
    enabledForTemplateDeployment: false
    tenantId: subscription().tenantId
    sku: {
      name: skuName
      family: 'A'
    }
    networkAcls: {
      defaultAction: 'Allow'
      bypass: 'AzureServices'
    }
  }
}

resource key 'Microsoft.KeyVault/vaults/keys@2023-07-01' = {
  parent: vault
  name: keyName
  properties: {
    kty: keyType
    keyOps: keyOps
    keySize: keySize
    curveName: curveName
  }
}

output proxyKey object = key.properties
output location string = location
output name string = vault.name
output resourceGroupName string = resourceGroup().name
output resourceId string = vault.id

Bicep 파일에는 다음 두 개의 리소스가 정의됩니다.

Azure 빠른 시작 템플릿에서 더 많은 Azure Key Vault 템플릿 샘플을 찾을 수 있습니다.

매개 변수 및 정의

매개 변수 Definition
keyOps 키를 사용하여 수행할 수 있는 작업을 지정합니다. 이 매개 변수를 지정하지 않으면 모든 작업을 수행할 수 있습니다. 이 매개 변수에 허용되는 값은 JWK(JSON 웹 키) 사양에 정의된 대로 쉼표로 구분된 키 작업 목록입니다.
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName EC 키 형식의 EC(타원 곡선) 이름입니다. JsonWebKeyCurveName 참조
Kty 만들 키의 유형입니다. 유효한 값은 JsonWebKeyType을 참조하세요.
태그 키-값 쌍 형태의 애플리케이션별 메타데이터입니다.
nbf 키를 사용할 수 없는 시간을 DateTime 개체로 지정합니다. 형식은 Unix 타임스탬프입니다. 이는 UTC 기준으로 1970년 1월 1일의 Unix Epoch 이후 경과한 시간(초 수)을 나타냅니다.
특급 만료 시간을 DateTime 개체로 지정합니다. 형식은 Unix 타임스탬프입니다. 이는 UTC 기준으로 1970년 1월 1일의 Unix Epoch 이후 경과한 시간(초 수)을 나타냅니다.

Bicep 파일을 배포하십시오.

  1. Bicep 파일을 main.bicep으로 로컬 컴퓨터에 저장합니다.

  2. Azure CLI 또는 Azure PowerShell을 사용하여 Bicep 파일을 배포합니다.

    az group create --name exampleRG --location eastus
    az deployment group create --resource-group exampleRG --template-file main.bicep --parameters vaultName=<vault-name> keyName=<key-name>
    

    비고

    키 보관소의 이름으로 <vault-name>를 바꾸세요. <vault-name>로 키 자격 증명 모음의 이름을 변경한 뒤, 키 이름 역시 <key-name>로 수정해 주시기 바랍니다.

    배포가 완료되면 배포가 성공했음을 나타내는 메시지가 표시됩니다.

Key Vault RBAC 역할 할당하기

이 Bicep 파일로 생성된 Key Vault는 권한 부여에 Azure RBAC를 사용합니다. 데이터 평면을 통해 키에 액세스하려면(예: Azure CLI 또는 Azure PowerShell 사용) 자신에게 적절한 역할을 할당해야 합니다.

echo "Enter your key vault name:" &&
read keyVaultName &&
az role assignment create --role "Key Vault Crypto Officer" \
    --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
    --scope $(az keyvault show --name $keyVaultName --query id -o tsv)

비고

역할 할당이 전파되는 데 1~2분 정도 걸릴 수 있습니다.

배포된 리소스 검토

Azure Portal을 사용하여 키 자격 증명 모음 및 키를 확인할 수 있습니다. 또는 다음 Azure CLI 또는 Azure PowerShell 스크립트를 사용하여 만든 키를 나열합니다.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault key list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

ARM 템플릿을 사용하여 키를 만드는 것은 데이터 평면을 통해 키를 만드는 경우와 다릅니다.

ARM을 통해 키 만들기

  • 키를 만들 때만 가능합니다. 기존 키를 업데이트하거나 새 버전의 기존 키를 만들 수 없습니다. 키가 이미 있는 경우 기존 키가 스토리지에서 검색되어 사용됩니다(쓰기 작업이 발생하지 않음).

  • 이 API를 사용할 수 있는 권한이 부여되려면 호출자에게 "Microsoft.KeyVault/vaults/keys/write" Azure RBAC(역할 기반 액세스 제어) 작업이 있어야 합니다. 기본 제공 "Key Vault 기여자" 역할은 "Microsoft.KeyVault/*" 패턴과 일치하는 모든 Azure RBAC 작업에 권한을 부여하므로 충분합니다.

    ARM 1을 통해 키 생성 ARM 2를 통해 키 생성

기존 API(데이터 평면을 통해 키 만들기)

  • 새 키를 만들고, 기존 키를 업데이트하고, 새 버전의 기존 키를 만들 수 있습니다.
  • 호출자에게 이 API를 사용할 수 있는 권한이 있어야 합니다. 자격 증명 모음에서 액세스 정책을 사용하는 경우 호출자에게 "create" 키 권한이 있어야 합니다. Azure RBAC에 자격 증명 모음을 사용하도록 설정한 경우에는 호출자에게 "Microsoft.KeyVault/vaults/keys/create/action" Azure RBAC DataAction이 있어야 합니다.

자원을 정리하세요

다른 Key Vault 빠른 시작 및 자습서는 이 빠른 시작을 기반으로 합니다. 이후의 빠른 시작 및 자습서를 계속 진행하려는 경우 이러한 리소스를 유지하는 것이 좋습니다. 더 이상 필요하지 않은 경우 Key Vault 및 관련 리소스를 삭제하는 리소스 그룹을 삭제합니다. Azure CLI 또는 Azure PowerShell을 사용하여 리소스 그룹을 삭제하려면 다음을 수행합니다.

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

비고

리소스 그룹을 삭제하면 키 자격 증명 모음도 삭제되지만, 자격 증명 모음은 일시 삭제 상태가 되어 보존 기간(기본값: 90일) 동안 복구할 수 있는 상태로 유지됩니다. 자격 증명 모음 이름은 해당 기간 동안 전역에서 예약된 상태로 유지되며, 영구 삭제 방지가 사용하도록 설정되어 있으므로 기간이 끝나기 전에 자격 증명 모음을 영구 삭제할 수 없습니다. 표준 키 자격 증명 모음의 경우 일시 삭제된 자격 증명 모음에는 요금이 청구되지 않습니다. 자세한 내용은 Key Vault 일시 삭제 개요 참조하세요.

다음 단계

이 빠른 시작에서는 Bicep 파일을 사용하여 키 자격 증명 모음 및 키를 만들고 배포의 유효성을 검사했습니다. Key Vault 및 Azure Resource Manager에 대한 자세한 내용은 다음 문서를 참조하세요.