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

Azure Key Vault é um serviço de nuvem que fornece um repositório seguro para segredos, como chaves, senhas, certificados e outros segredos. Este Início Rápido concentra-se no processo de implantação de um arquivo Bicep para criar um cofre de chaves e um segredo.

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

Pré-requisitos

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

Examinar o arquivo Bicep

O modelo usado neste início rápido é de Azure Modelos de Início Rápido.

@description('Specifies the name of the key vault.')
param keyVaultName string

@description('Specifies the Azure location where the key vault should be created.')
param location string = resourceGroup().location

@description('Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.')
param enabledForDeployment bool = false

@description('Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.')
param enabledForDiskEncryption bool = false

@description('Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.')
param enabledForTemplateDeployment bool = false

@description('Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.')
param tenantId string = subscription().tenantId

@description('Specifies whether the key vault is a standard vault or a premium vault.')
@allowed([
  'standard'
  'premium'
])
param skuName string = 'standard'

@description('Specifies all secrets {"secretName":"","secretValue":""} wrapped in a secure object.')
@secure()
param secretsObject object

resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = {
  name: keyVaultName
  location: location
  properties: {
    enabledForDeployment: enabledForDeployment
    enabledForTemplateDeployment: enabledForTemplateDeployment
    enabledForDiskEncryption: enabledForDiskEncryption
    enableRbacAuthorization: true
    tenantId: tenantId
    enableSoftDelete: true
    softDeleteRetentionInDays: 90
    enablePurgeProtection: true
    sku: {
      name: skuName
      family: 'A'
    }
    networkAcls: {
      defaultAction: 'Allow'
      bypass: 'AzureServices'
    }
  }
}

resource secrets 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = [for secret in secretsObject.secrets: {
  name: secret.secretName
  parent: kv
  properties: {
    value: secret.secretValue
  }
}]

output location string = location
output name string = kv.name
output resourceGroupName string = resourceGroup().name
output resourceId string = kv.id

Dois recursos Azure são definidos no arquivo Bicep:

Implantar o arquivo de Bicep

  1. Salve o arquivo Bicep como main.bicep ao computador local.

  2. Crie um arquivo de parâmetros (por exemplo, main.parameters.json) que forneça o secretsObject valor:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "keyVaultName": { "value": "<vault-name>" },
        "secretsObject": {
          "value": {
            "secrets": [
              { "secretName": "adminpassword", "secretValue": "<your-secret-value>" }
            ]
          }
        }
      }
    }
    
  3. 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 @main.parameters.json
    

    Observação

    Substitua <vault-name> pelo nome do cofre de chaves, que deve ser globalmente exclusivo dentro do vault.azure.net namespace. Substitua <your-secret-value> pelo valor do segredo a ser armazenado. Como secretsObject é declarado como um secureObject, seu valor não é registrado ou ecoado novamente.

    Quando a implantação for concluída, você deverá ver uma mensagem indicando que ela 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 segredos 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 Secrets Officer" \
    --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
    --scope $(az keyvault show --name $keyVaultName --query id -o tsv)

Observação

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 segredo ou usar o seguinte CLI do Azure ou Azure PowerShell script para listar o segredo criado.

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

Limpar os recursos

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

az group delete --name myResourceGroup

Observação

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 d 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 de início rápido, você criou um cofre de chaves e um segredo usando o Bicep e, em seguida, validou a implantação. Para saber mais sobre Key Vault e Bicep, continue nos artigos abaixo.