Szybki start: tworzenie magazynu kluczy Azure i certyfikatu przy użyciu Bicep

Azure Key Vault to usługa w chmurze, która zapewnia bezpieczny magazyn wpisów tajnych, takich jak klucze, hasła i certyfikaty. Ten przewodnik omawia proces wdrażania pliku Bicep w celu utworzenia magazynu kluczy oraz certyfikatu z podpisem własnym.

Bicep to język specyficzny dla domeny (DSL), który używa składni deklaratywnej do wdrażania zasobów platformy Azure. Zapewnia zwięzłą składnię, niezawodne bezpieczeństwo typów i obsługę ponownego użycia kodu. Bicep oferuje najlepsze środowisko do tworzenia rozwiązań typu infrastruktura jako kod w Azure.

Wymagania wstępne

  • Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.

Przejrzyj plik Bicep

Szablon użyty w tym szybkim starcie pochodzi z szablonów szybkiego startu platformy Azure.

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

@description('The name of the certificate to be created.')
param certificateName 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 common name (subject) for the self-signed certificate. Defaults to the certificate name.')
param certificateCommonName string = certificateName

@description('The validity of the certificate in months.')
@minValue(1)
@maxValue(1200)
param validityInMonths int = 12

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'
    }
  }
}

// Key Vault certificates are a data-plane concept and cannot be created
// directly through ARM. Use the public Bicep registry module which wraps
// `az keyvault certificate create` in a deployment script (it provisions a
// user-assigned managed identity with the Key Vault Certificate Officer
// role on the vault for the duration of the deployment).
module certificate 'br/public:deployment-scripts/create-kv-certificate:3.4.2' = {
  name: 'create-${certificateName}'
  params: {
    akvName: vault.name
    location: location
    certificateNames: [certificateName]
    certificateCommonNames: [certificateCommonName]
    validity: validityInMonths
  }
}

output location string = location
output name string = vault.name
output resourceGroupName string = resourceGroup().name
output resourceId string = vault.id
output certificateSecretId string = certificate.outputs.certificateSecretIds[0][0]
output certificateThumbprint string = certificate.outputs.certificateThumbprintHexs[0][0]

Dwa zasoby platformy Azure są zdefiniowane w pliku Bicep:

  • Microsoft. KeyVault/vaults: utwórz magazyn kluczy Azure z włączoną autoryzacją RBAC Azure (enableRbacAuthorization: true).
  • Microsoft.Resources/deployments: zagnieżdżone wdrożenie, które uruchamia moduł rejestru create-kv-certificate w celu utworzenia certyfikatu z podpisem własnym w magazynie. Certyfikaty są zasobem płaszczyzny danych i nie można ich utworzyć bezpośrednio przy użyciu typu zasobu ARM.

Wdróż plik Bicep

  1. Zapisz plik Bicep jako main.bicep na komputerze lokalnym.

  2. Wdróż plik Bicep przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.

    az group create --name myResourceGroup --location eastus
    az deployment group create --resource-group myResourceGroup --template-file main.bicep --parameters vaultName=<vault-name> certificateName=myCert
    

    Note

    Zastąp <vault-name> nazwą magazynu kluczy, która musi być globalnie unikatowa w przestrzeni nazw vault.azure.net.

    Po zakończeniu wdrażania powinien zostać wyświetlony komunikat informujący o pomyślnym wdrożeniu.

Przypisz rolę RBAC usługi Key Vault

Magazyn kluczy utworzony przez ten plik Bicep używa mechanizmu Azure RBAC do autoryzacji. Aby uzyskać dostęp do certyfikatów za pośrednictwem płaszczyzny danych (na przykład przy użyciu Azure CLI lub Azure PowerShell), musisz przypisać sobie odpowiednią rolę.

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

Note

Propagacja przypisań ról może potrwać minutę lub dwie.

Przeglądanie wdrożonych zasobów

Możesz użyć portalu Azure do sprawdzenia magazynu kluczy i certyfikatu lub użyć następującego skryptu Azure CLI lub Azure PowerShell, aby wyświetlić listę utworzonych certyfikatów.

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

Uprzątnij zasoby

Gdy grupa zasobów i jej zasoby nie będą już potrzebne, użyj portalu Azure, Azure CLI lub Azure PowerShell.

az group delete --name myResourceGroup

Note

Usunięcie grupy zasobów powoduje również usunięcie magazynu kluczy, ale magazyn przechodzi następnie w stan usunięcia miękkiego i można go odzyskać przez okres przechowywania (domyślnie 90 dni). Nazwa magazynu pozostaje zarezerwowana globalnie w tym okresie i ponieważ włączono ochronę przed przeczyszczeniem, nie można wcześniej przeczyścić magazynu. W przypadku standardowych magazynów kluczy nie są naliczane opłaty za magazyny kluczy po usunięciu nietrwałym. Aby uzyskać więcej informacji, zobacz Omówienie usuwania nieostatecznego w usłudze Key Vault.

Następne kroki

W tym przewodniku Szybki start utworzono magazyn kluczy i certyfikat za pomocą Bicep, a następnie zweryfikowano wdrożenie. Aby dowiedzieć się więcej o usłudze Key Vault i usłudze Bicep, przejdź do poniższych artykułów.