Share via


빠른 시작: ARM 템플릿을 사용하여 Azure 키 자격 증명 모음 및 키 만들기

Azure Key Vault는 키, 암호 및 인증서와 같은 비밀에 대한 보안 저장소를 제공하는 클라우드 서비스입니다. 이 빠른 시작에서는 키 자격 증명 모음 및 키를 만들기 위해 ARM 플랫폼(Azure Resource Manager 템플릿)을 배포하는 과정을 다루고 있습니다.

필수 조건

이 문서를 완료하려면 다음이 필요합니다.

템플릿 검토

{
  "$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 작업 권한을 주기 때문에 충분합니다.

    Create a key via ARM 1Create a key via ARM 2

기존 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에 대한 자세한 내용은 다음 문서를 참조하세요.