> ## Content Index
> Fetch the complete content index at: https://www.azurebrasil.cloud/llms.txt
> Use this file to discover other available public pages before exploring further.

# Gerenciando o ciclo de vida de secrets no Azure Key Vault: rotação, expiração e automação
- URL: https://www.azurebrasil.cloud/blog/gerenciando-o-ciclo-de-vida-de-secrets-no-azure-key-vault-rotacao-expiracao-e-automacao/
- Published: 2025-09-23T19:49:36.000Z
- Updated: 2025-09-24T18:25:07.000Z
- Author: Ricardo Martins

# 

## Introdução

Em ambientes modernos e distribuídos, a gestão segura de **segredos, chaves e certificados** é essencial para garantir a integridade e confidencialidade das aplicações. O **Azure Key Vault** é a solução nativa do Azure para armazenar e controlar o ciclo de vida desses segredos.

Neste artigo, vamos abordar como:

- Armazenar e proteger secrets no Key Vault
- Configurar **alertas de expiração**
- Implementar **rotação automática de segredos**
- Integrar com serviços como **App Service**, **AKS**, **Azure Arc**, entre outros
- Auditar o uso e acesso aos segredos
- Aplicar governança com **RBAC** e **Azure Policy**

## O que é o Azure Key Vault?

O **Azure Key Vault** é um cofre seguro para armazenar:

- **Secrets**: tokens, strings de conexão, senhas
- **Keys**: chaves criptográficas para proteção de dados
- **Certificates**: SSL/TLS, integrados com CAs públicas

> 🔗 [Documentação oficial – Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/general/overview?ref=azurebrasil.cloud)

## Armazenando secrets com controle de acesso

### Exemplo via CLI:

```bash
az keyvault create --name meuCofre --resource-group rg-segurança --location brazilsouth

az keyvault secret set --vault-name meuCofre --name "DbConnectionString" --value "Server=db;User=admin;Pwd=123!"
```

### Controle de acesso:

- **RBAC (recomendado)** – Gerenciado pelo Azure AD
- **ACLs (legacy)** – Políticas próprias do Key Vault

> Use RBAC para alinhar com identidade centralizada, PIM e logs centralizados.

## Gerenciando expiração de secrets

Você pode definir a **data de expiração (expiry)** no momento da criação de um secret:

```bash
az keyvault secret set --vault-name meuCofre \
  --name "DbPassword" \
  --value "Senha@123" \
  --expires "2025-01-01T00:00:00Z"

```

### Ativando alertas de expiração

1. Ative **Azure Monitor diagnostic settings** no Key Vault
2. Envie logs para **Log Analytics**
3. Crie **alertas** para identificar secrets expirando em 30 dias:

```kql
AzureDiagnostics
| where ResourceType == "VAULTS" and OperationName == "SecretGet"
| extend expiration = parse_datetime(parse_json(Properties).attributes.exp)
| where expiration < now() + 30d

```

## Rotação automática de secrets

Existem duas abordagens principais:

1. Automação personalizada (Event Grid + Function)

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2025/09/mermaid-diagram-2025-09-23-132400.png)

1. Rotação automática de certificados (nativa)

Para certificados gerenciados por CA:

```bash
az keyvault certificate create \
  --vault-name meuCofre \
  --name "cert-prod" \
  --policy "@policy.json"

```

Você define:

- Emissor (CA)
- Período de validade
- Intervalo de renovação

## Integrações nativas

| Serviço                 | Integração com Key Vault                        |
| ----------------------- | ----------------------------------------------- |
| **App Service**         | Referência direta a secrets no app settings     |
| **Azure Functions**     | Igual ao App Service                            |
| **AKS**                 | Secrets via CSI driver                          |
| **Azure Arc**           | Workload on-prem pode acessar secrets via token |
| **Logic Apps / DevOps** | Acesso por managed identity                     |

### Exemplo – App Service com referência a secret:

```bash
@Microsoft.KeyVault(SecretUri=https://meucofre.vault.azure.net/secrets/DbPassword/...)

```

## Auditoria e governança

### Logs de acesso:

- Ative **diagnostic settings**
- Envie para Log Analytics ou SIEM
- Consulte:

```kql
AzureDiagnostics
| where ResourceType == "VAULTS" and OperationName == "SecretGet"
| summarize contagem = count() by Identity, Resource
```

### Políticas de governança:

- Use **Azure Policy** para:
  - Exigir que secrets estejam no Key Vault
  - Impedir secrets hardcoded em App Service
  - Verificar expiração configurada

## Boas práticas

| Recomendação                          | Motivo                                     |
| ------------------------------------- | ------------------------------------------ |
| Use RBAC + PIM                        | Controle de identidade + acesso temporário |
| Defina expires em todos os secrets    | Segurança e auditoria de ciclo de vida     |
| Use integração com Event Grid         | Automatização reativa e sem pooling        |
| Tenha um processo de rotação validado | Evita downtime e falhas de acesso          |
| Audite acessos frequentemente         | Detecção de anomalias e acessos indevidos  |

## Conclusão

O Azure Key Vault vai muito além de simplesmente armazenar secrets — ele permite implementar uma **gestão completa de ciclo de vida com segurança, automação, auditoria e conformidade**. Adotar práticas de rotação, expiração controlada e integração com infraestrutura como código é essencial para manter a saúde e segurança de aplicações modernas.