Início rápido: Crie um cofre de chaves no Azure e um segredo usando o Bicep

Azure Key Vault é um serviço na cloud que fornece um armazenamento seguro para segredos, como chaves, palavras-passe, certificados e outros segredos. Este quickstart foca-se no processo de implantar um ficheiro Bicep para criar um cofre de chaves e um segredo.

Bicep é uma linguagem específica de domínio (DSL) que utiliza sintaxe declarativa para implementar recursos Azure. Fornece uma sintaxe concisa, segurança de tipos confiável e suporte para reutilização de código. A Bicep oferece a melhor experiência de autoria para as suas soluções de infraestrutura como código no Azure.

Pré-requisitos

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

Revise o ficheiro Bicep

O modelo utilizado neste quickstart é do Azure Quickstart Templates.

@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 do Azure estão definidos no ficheiro Bicep:

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como main.bicep para o seu computador local.

  2. Crie um ficheiro 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 único dentro do vault.azure.net espaço de nomes. Substitui <your-secret-value> pelo valor secreto para armazenar. Como secretsObject é declarado como um secureObject, o seu valor não é registado nem ecoado de volta.

    Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.

Atribuir uma função RBAC do Key Vault

O cofre de chaves criado por este ficheiro Bicep usa o Azure RBAC para autorização. Para aceder a segredos através do plano de dados (por exemplo, usando a CLI do Azure ou Azure PowerShell), precisa de se atribuir um papel apropriado.

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ções podem demorar um ou dois minutos a ser propagadas.

Analisar os recursos implementados

Pode usar o portal do Azure para verificar o cofre de chaves e o segredo, ou usar o seguinte script CLI do Azure ou Azure PowerShell 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 ..."

Limpeza de recursos

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

az group delete --name myResourceGroup

Observação

Eliminar o grupo de recursos também elimina o cofre de chaves, mas o cofre entra então num estado de eliminação suave e permanece recuperável durante o período de retenção (90 dias por defeito). O nome do cofre permanece reservado globalmente durante esse período e, como a proteção contra purgas está ativada, o cofre não pode ser purgado antecipadamente. Para cofres de chaves padrão, os cofres eliminados temporariamente não incorrem em custos. Para mais informações, consulte Key Vault visão geral de apagamento suave.

Próximos passos

Neste quickstart, criaste um cofre de chaves e um segredo usando o Bicep e depois validaste a implementação. Para saber mais sobre Key Vault e Bicep, continue para os artigos abaixo.