Início Rápido: Criar um cofre de chaves Azure e um certificado usando Bicep

O Azure Key Vault é um serviço de nuvem que fornece um repositório seguro para segredos, como chaves, senhas e certificados. Este guia rápido aborda o processo de implantação de um arquivo Bicep para criar um cofre de chaves e um certificado autoassinado.

Bicep é uma linguagem específica de domínio (DSL) que usa sintaxe declarativa para implantar recursos do Azure. Ele fornece sintaxe concisa, segurança de tipos confiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para suas soluções de infraestrutura como código no Azure.

Pré-requisitos

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Examinar o arquivo Bicep

O modelo usado neste início rápido é proveniente dos Modelos de Início Rápido do 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]

Há dois recursos do Azure definidos no arquivo Bicep:

  • Microsoft.KeyVault/vaults: criar um Azure Key Vault com a autorização RBAC do Azure habilitada (enableRbacAuthorization: true).
  • Microsoft.Resources/deployments: implantação aninhada que executa o módulo do registro create-kv-certificate para criar um certificado autoassinado no cofre. Os certificados são um recurso do plano de dados e não podem ser criados diretamente com um tipo de recurso ARM.

Implante o arquivo Bicep

  1. Salve o arquivo Bicep como main.bicep em seu computador local.

  2. Implante o arquivo Bicep usando a CLI do Azure ou o 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

    Substitua <vault-name> pelo nome do cofre de chaves, que deve ser globalmente exclusivo dentro do vault.azure.net namespace.

    Quando a implantação for concluída, você deverá ver uma mensagem indicando que a implantação foi bem-sucedida.

Atribuir uma função RBAC ao cofre de chaves

O cofre de chaves criado por esse arquivo Bicep usa Azure RBAC para autorização. Para acessar certificados por meio do plano de dados (por exemplo, usando o CLI do Azure ou Azure PowerShell), você precisa atribuir a si mesmo uma função apropriada.

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

As atribuições de função podem levar um ou dois minutos para serem propagadas.

Examinar os recursos implantados

Você pode usar o portal Azure para verificar o cofre de chaves e o certificado ou usar o seguinte CLI do Azure ou Azure PowerShell script para listar o certificado criado.

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

Limpar os recursos

Quando não for mais necessário, use o portal do Azure, a CLI do Azure ou o Azure PowerShell para excluir o grupo de recursos e seus recursos.

az group delete --name myResourceGroup

Note

Excluir o grupo de recursos também exclui o cofre de chaves, mas o cofre entra em estado de exclusão temporária e permanece recuperável durante o período de retenção (por padrão, 90 dias). O nome do cofre permanece reservado globalmente durante esse período e, como a proteção contra a limpeza está habilitada, não é possível fazer a limpeza do cofre antes do prazo. Para os cofres de chaves padrão, cofres de exclusão temporária não incorrem em encargos. Para obter mais informações, consulte Visão geral da exclusão temporária do cofre de chaves.

Próximas Etapas 

Neste guia rápido, você criou um cofre de chaves e um certificado usando o Bicep e, em seguida, validou a implantação. Para saber mais sobre o Key Vault e o Bicep, continue nos artigos abaixo.