Azure Key Vault 는 키, 암호 및 인증서와 같은 비밀에 대한 보안 저장소를 제공하는 클라우드 서비스입니다. 이 빠른 시작에서는 ARM 템플릿(Azure Resource Manager 템플릿)을 배포하여 키 자격 증명 모음 및 키를 만드는 프로세스에 중점을 둡니다.
Azure Resource Manager 템플릿은 프로젝트의 인프라 및 구성을 정의하는 JSON(JavaScript Object Notation) 파일입니다. 이 템플릿은 선언적 구문을 사용합니다. 배포를 만들기 위한 프로그래밍 명령의 시퀀스를 작성하지 않고 의도하는 배포를 설명합니다.
환경이 필수 조건을 충족하고 ARM 템플릿을 사용하는 데 익숙한 경우 Azure에 배포 단추를 선택합니다. 템플릿이 Azure 포털에서 열립니다.
필수 조건
이 문서를 완료하려면 다음을 수행합니다.
- Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
- 사용자에게 Azure 기본 제공 역할이 할당되어 있어야 하며, 권장되는 역할은 기여자입니다. 여기를 참조하세요.
템플릿 검토
이 빠른 시작에서 사용되는 템플릿은 Azure 빠른 시작 템플릿에서 나온 것입니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.42.1.51946",
"templateHash": "9113739717796369919"
}
},
"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": "2023-07-01",
"name": "[parameters('vaultName')]",
"location": "[parameters('location')]",
"properties": {
"enableRbacAuthorization": true,
"enableSoftDelete": true,
"softDeleteRetentionInDays": 90,
"enablePurgeProtection": true,
"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": "2023-07-01",
"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')), '2023-07-01')]"
},
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('vaultName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
}
}
}
템플릿에 다음 두 개의 리소스가 정의됩니다.
- Microsoft.KeyVault/vaults: Azure Key Vault를 만듭니다.
- Microsoft. KeyVault/vaults/keys: 키 자격 증명 모음 키를 만듭니다.
템플릿은 Azure RBAC 권한 부여를 사용하도록 설정한 키 자격 증명 모음을 생성합니다. 즉, 자격 증명 모음은 액세스 정책 대신 데이터 평면 권한 부여에 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용합니다.
Azure 빠른 시작 템플릿에서 더 많은 Azure Key Vault 템플릿 샘플을 찾을 수 있습니다.
템플릿 매개 변수
| 매개 변수 | Description |
|---|---|
| vaultName | 새 키 자격 증명 모음의 이름입니다. 네임스페이스 내에서 vault.azure.net 전역적으로 고유해야 합니다. |
| keyName | 자격 증명 모음에 생성할 키의 이름입니다. |
| 위치 | 리소스에 대한 Azure 지역입니다. 기본값은 리소스 그룹 위치입니다. |
| skuName | Vault SKU.
standard (기본값) 또는 premium. |
| keyType | 만들 키의 유형입니다.
RSA, RSA-HSM, EC, EC-HSM 중에 하나. 기본값은 RSA입니다.
JsonWebKeyType을 참조하세요. |
| Keysize | 키의 비트 크기(RSA에만 해당)입니다. 기본값은 2048입니다. |
| curveName | 타원 곡선 이름(EC 키에만 해당).
P-256, P-256K, P-384, P-521 중에 하나.
JsonWebKeyCurveName을 참조하세요. |
| keyOps | 키에 대해 허용되는 JSON 웹 키 작업 (예: ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"])입니다. 빈 배열(기본값)은 모든 작업을 허용합니다. |
템플릿 배포
다음 이미지를 선택하고 Azure에 로그인하여 템플릿을 엽니다. 템플릿은 키 볼트와 키를 만듭니다.
다음 값을 선택하거나 입력합니다. 지정하지 않는 한 기본값을 사용합니다.
- 구독: Azure 구독을 선택합니다.
- 리소스 그룹: 새로 만들기를 선택하고 리소스 그룹에 고유한 이름을 입력한 다음, 확인을 선택합니다.
- 지역: 위치를 선택합니다. 예: 미국 중부
-
키 자격 증명 모음 이름:
vault.azure.net네임스페이스 내에서 전역적으로 고유해야 하는 키 자격 증명 모음 이름을 입력합니다. - 키 이름: 키 저장소에 저장하는 키의 이름을 입력합니다.
- Sku 이름: 표준 또는 프리미엄을 선택합니다. 기본값은 표준입니다.
- 키 유형: 키 유형을 선택합니다. 기본값은 RSA입니다.
- 키 크기: 키 크기(RSA 키)를 입력합니다. 기본값은 2048입니다.
- 곡선 이름: EC 키의 경우 곡선을 선택합니다. RSA 키의 경우 비워 둡니다.
검토 + 생성를 선택한 다음, 생성를 선택합니다. 키 자격 증명 모음 및 키가 성공적으로 배포되면 알림이 표시됩니다.
Azure PowerShell, Azure CLI 또는 REST API를 사용하여 템플릿을 배포할 수도 있습니다. 다른 배포 방법을 알아보려면 템플릿 배포를 참조하세요.
Key Vault RBAC 역할 할당하기
이 템플릿에서 만든 키 자격 증명 모음은 권한 부여에 Azure RBAC를 사용합니다. 데이터 평면을 통해 키에 액세스하려면(예: Azure CLI 또는 Azure PowerShell 사용) 자신에게 적절한 역할을 할당해야 합니다.
Microsoft Entra 사용자 개체 ID를 가져옵니다.
az ad signed-in-user show --query id -o tsv키 자격 증명 모음에서 자신에게 Key Vault Crypto Officer 역할을 할당합니다:
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 작업에 권한을 부여하므로 충분합니다.
기존 API(데이터 평면을 통해 키 만들기)
- 새 키를 만들고, 기존 키를 업데이트하고, 새 버전의 기존 키를 만들 수 있습니다.
- 호출자에게 이 API를 사용할 수 있는 권한이 있어야 합니다. 볼트가 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 일시 삭제 개요 참조하세요.
다음 단계
이 빠른 시작에서는 ARM 템플릿을 사용하여 키 자격 증명 모음 및 키를 만들고 배포의 유효성을 검사했습니다. Key Vault 및 Azure Resource Manager에 대한 자세한 내용은 다음 문서를 참조하세요.
- Azure Key Vault 개요 참조
- Azure Resource Manager에 대해 자세히 알아보기
- Azure Key Vault 보안 개요를 검토하세요.