빠른 시작: ARM 템플릿을 사용하여 Azure 키 자격 증명 모음 및 키 만들기
Azure Key Vault는 키, 암호 및 인증서와 같은 비밀에 대한 보안 저장소를 제공하는 클라우드 서비스입니다. 이 빠른 시작에서는 키 자격 증명 모음 및 키를 만들기 위해 ARM 플랫폼(Azure Resource Manager 템플릿)을 배포하는 과정을 다루고 있습니다.
필수 조건
이 문서를 완료하려면 다음이 필요합니다.
- Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- 사용자에게 할당된 Azure 기본 제공 역할, 권장 역할 기여자가 있어야 합니다. 여기서 자세히 알아보세요.
템플릿 검토
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vaultName": {
"type": "string",
"metadata": {
"description": "The name of the key vault to be created."
}
},
"keyName": {
"type": "string",
"metadata": {
"description": "The name of the key to be created."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the resources"
}
},
"skuName": {
"type": "string",
"defaultValue": "standard",
"allowedValues": [
"standard",
"premium"
],
"metadata": {
"description": "The SKU of the vault to be created."
}
},
"keyType": {
"type": "string",
"defaultValue": "RSA",
"allowedValues": [
"EC",
"EC-HSM",
"RSA",
"RSA-HSM"
],
"metadata": {
"description": "The JsonWebKeyType of the key to be created."
}
},
"keyOps": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "The permitted JSON web key operations of the key to be created."
}
},
"keySize": {
"type": "int",
"defaultValue": 2048,
"metadata": {
"description": "The size in bits of the key to be created."
}
},
"curveName": {
"type": "string",
"defaultValue": "",
"allowedValues": [
"",
"P-256",
"P-256K",
"P-384",
"P-521"
],
"metadata": {
"description": "The JsonWebKeyCurveName of the key to be created."
}
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-11-01-preview",
"name": "[parameters('vaultName')]",
"location": "[parameters('location')]",
"properties": {
"accessPolicies": [],
"enableRbacAuthorization": true,
"enableSoftDelete": true,
"softDeleteRetentionInDays": "90",
"enabledForDeployment": false,
"enabledForDiskEncryption": false,
"enabledForTemplateDeployment": false,
"tenantId": "[subscription().tenantId]",
"sku": {
"name": "[parameters('skuName')]",
"family": "A"
},
"networkAcls": {
"defaultAction": "Allow",
"bypass": "AzureServices"
}
}
},
{
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2021-11-01-preview",
"name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
"properties": {
"kty": "[parameters('keyType')]",
"keyOps": "[parameters('keyOps')]",
"keySize": "[parameters('keySize')]",
"curveName": "[parameters('curveName')]"
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
]
}
],
"outputs": {
"proxyKey": {
"type": "object",
"value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]"
}
}
}
템플릿에 정의된 두 개의 리소스는 다음과 같습니다.
추가 Azure Key Vault 템플릿 샘플은 Azure 빠른 시작 템플릿에서 찾을 수 있습니다.
매개 변수 및 정의
매개 변수 | 정의 |
---|---|
keyOps | 키를 사용하여 수행할 수 있는 작업을 지정합니다. 이 매개 변수를 지정하지 않으면 모든 작업을 수행할 수 있습니다. 이 매개 변수에 허용되는 값은 JWK(JSON Web Key) 사양에 정의된 쉼표로 구분된 키 작업 목록입니다. ["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"] |
CurveName | EC 키 형식의 EC(타원 곡선) 이름입니다. JsonWebKeyCurveName을 참조하세요. |
Kty | 만들 키의 유형입니다. 유효한 값은 JsonWebKeyType을 참조하세요. |
태그 | 키-값 쌍 형태의 애플리케이션별 메타데이터입니다. |
nbf | 키를 사용할 수 없는 시간을 DateTime 개체로 지정합니다. 형식은 Unix 타임스탬프(UTC에서 1970년 1월 1일 Unix Epoch 이후의 초)입니다. |
exp | 만료 시간을 DateTime 개체로 지정합니다. 형식은 Unix 타임스탬프(UTC에서 1970년 1월 1일 Unix Epoch 이후의 초)입니다. |
템플릿 배포
Azure Portal, Azure PowerShell, Azure CLI 또는 REST API를 사용할 수 있습니다. 배포 방법에 대해 알아보려면 템플릿 배포를 참조하세요.
배포된 리소스 검토
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" RBAC(역할 기반 액세스 제어) 작업이 필요합니다. 기본 제공 "Key Vault 기여자" 역할은 "Microsoft.KeyVault/*" 패턴과 일치하는 모든 RBAC 작업 권한을 주기 때문에 충분합니다.
기존 API(데이터 평면을 통해 키 만들기)
- 새 키를 만들고, 기존 키를 업데이트하고, 기존 키의 새 버전을 만들 수 있습니다.
- 호출자는 이 API를 사용할 권한이 있어야 합니다. 자격 증명 모음에서 액세스 정책을 사용하는 경우 호출자에게 "create" 키 권한이 있어야 합니다. RBAC에 자격 증명 모음을 사용하도록 설정한 경우에는 호출자에게 "Microsoft.KeyVault/vaults/keys/create/action" 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 ..."
다음 단계
이 빠른 시작에서는 ARM 템플릿을 사용하여 키 자격 증명 모음 및 키를 만들고 배포의 유효성을 검사했습니다. Key Vault 및 Azure Resource Manager에 대한 자세한 내용은 다음 문서를 참조하세요.
- Azure Key Vault 개요 참조
- Azure Resource Manager에 대해 자세히 알아보기
- Azure Key Vault 보안 개요를 검토하세요.