Início Rápido: Definir e recuperar um segredo de Azure Key Vault usando um modelo do ARM

Azure Key Vault é um serviço de nuvem que fornece um repositório seguro para segredos, como chaves, senhas, certificados e outros segredos. Este tutorial rápido se concentra no processo de implantação de um modelo do Azure Resource Manager (ARM template) para criar um cofre de chaves e um segredo.

Um modelo Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do projeto. O modelo usa sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Se o ambiente atender aos pré-requisitos e você estiver familiarizado com o uso de modelos do ARM, selecione o botão Deploy para Azure. O modelo será aberto no portal Azure.

Button para implantar o modelo de Resource Manager em Azure.

Pré-requisitos

Para concluir este artigo:

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

Examinar o modelo

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "10998800669048245550"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "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."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretsObject": {
      "type": "secureObject",
      "metadata": {
        "description": "Specifies all secrets {\"secretName\":\"\",\"secretValue\":\"\"} wrapped in a secure object."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enableRbacAuthorization": true,
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "copy": {
        "name": "secrets",
        "count": "[length(parameters('secretsObject').secrets)]"
      },
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretsObject').secrets[copyIndex()].secretName)]",
      "properties": {
        "value": "[parameters('secretsObject').secrets[copyIndex()].secretValue]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

Dois recursos de Azure são definidos no modelo:

  • Microsoft.KeyVault/vaults: crie um cofre de chaves do Azure com a autorização RBAC do Azure habilitada (enableRbacAuthorization: true), a exclusão temporária e a proteção contra limpeza habilitadas.
  • Microsoft. KeyVault/vaults/secrets: crie um ou mais segredos do cofre de chaves, iterando sobre a matriz secretsObject.secrets passada para o modelo.

Como o cofre usa a RBAC do Azure para fins de autorização do plano de dados, você permite o acesso a segredos atribuindo uma função do Azure (em vez de configurar as políticas de acesso).

Mais exemplos de modelo Azure Key Vault podem ser encontrados em Azure Modelos de Início Rápido.

Implantar o modelo

  1. Selecione a imagem a seguir para entrar no Azure e abrir um modelo. O modelo cria um cofre de chaves e um segredo.

    Button para implantar o modelo de Resource Manager em Azure.

  2. Selecione ou insira os seguintes valores. A menos que seja especificado, use o valor padrão.

    • Subscription: selecione uma assinatura Azure.

    • Grupo de recursos: selecione Criar novo, insira um nome exclusivo para o grupo de recursos e selecione OK.

    • Região: selecione um local. Por exemplo, Centro dos EUA.

    • Key Vault Name: insira um nome para o key vault, que deve ser globalmente exclusivo no namespace vault.azure.net. Você precisa desse nome na próxima seção ao validar a implantação.

    • Nome do SKU: selecione padrão ou premium. O padrão é standard.

    • Objeto Segredos: forneça o(s) segredo(s) a ser(em) criado(s) como um objeto JSON com um matriz secrets. Por exemplo:

      {
        "secrets": [
          {
            "secretName": "adminpassword",
            "secretValue": "<your-secret-value>"
          }
        ]
      }
      

      Como o Objeto Segredos é um secureObject parâmetro, seu valor não é registrado ou ecoado novamente após a implantação.

  3. Selecione Examinar + criar e, em seguida, selecione Criar. Depois que o cofre de chaves e o segredo forem implantados com êxito, você receberá uma notificação.

Você também pode usar Azure PowerShell, o CLI do Azure ou a API REST para implantar o modelo. Para saber mais sobre outros métodos de implantação, confira Implantar modelos.

Atribuir uma função RBAC ao cofre de chaves

O cofre de chaves criado por esse modelo 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.

  1. Obtenha sua ID de objeto de usuário do Microsoft Entra:

    az ad signed-in-user show --query id -o tsv
    
  2. Atribua a função Responsável pelos Segredos do Cofre de Chaves a você mesmo no cofre de chaves:

    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)
    

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

Outras guias de início rápido e tutoriais do Key Vault se baseiam neste início rápido. Se você planeja continuar a trabalhar com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando não for mais necessário, exclua o grupo de recursos, que exclui o Key Vault e os recursos relacionados. Para excluir o grupo de recursos usando CLI do Azure ou Azure PowerShell:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

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 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 um modelo do Resource Manager e validou a implantação. Para saber mais sobre Key Vault e Azure Resource Manager, continue nos artigos abaixo.