O Vault é um sistema de gestão de encriptação e segredos baseado na identidade. Esta integração recolhe os registos de auditoria do Vault. A integração também recolhe métricas de tokens, memória e armazenamento.
Para mais informações sobre o Vault, consulte a documentação do Hashicorp Vault.
Pré-requisitos
Para recolher telemetria do Vault, tem de instalar o agente de operações:
- Para métricas, instale a versão 2.18.2 ou superior.
- Para registos, instale a versão 2.18.1 ou superior.
Esta integração suporta o Vault versão 1.6 e superior.
Configure a sua instância do Vault
Para recolher telemetria da sua instância do Vault, tem de definir o campo prometheus_retention_time
para um valor diferente de zero no seu ficheiro de configuração do Vault HCL ou JSON.
Full configuration options can be found at https://www.vaultproject.io/docs/configuration telemetry { prometheus_retention_time = "10m" disable_hostname = false }
Além disso, é necessário um utilizador raiz para ativar a recolha de registos de auditoria e para
criar uma política de ACL de métricas do Prometheus.
Um token de raiz é usado para adicionar uma política que tem capacidades de leitura ao ponto final /sys/metrics
.
Esta política é usada para criar um token do Vault com autorização suficiente para recolher métricas do Vault.
Se estiver a inicializar o Vault pela primeira vez, pode usar o seguinte script para gerar um token de raiz. Caso contrário, consulte o artigo Gerar tokens raiz com chaves de anulação da selagem para obter informações sobre como gerar um token raiz.
export VAULT_ADDR=http://localhost:8200
# Create simple Vault initialization with 1 key share and a key threshold of 1.
vault operator init -key-shares=1 -key-threshold=1 | head -n3 | cat > .vault-init
VAULT_KEY=$(grep 'Unseal Key 1' .vault-init | awk '{print $NF}')
VAULT_TOKEN=$(grep 'Initial Root Token:' .vault-init | awk '{print $NF}')
export VAULT_TOKEN
vault operator unseal $VAULT_KEY
# Enable audit logs.
vault audit enable file file_path=/var/log/vault_audit.log
# Create Prometheus ACL policy to access metrics endpoint.
vault policy write prometheus-metrics - << EOF
path "/sys/metrics" {
capabilities = ["read"]
}
EOF
# Create an example token with the prometheus-metrics policy to access Vault metrics.
# This token is used as `$VAULT_TOKEN` in your Ops Agent configuration for Vault.
vault token create -field=token -policy prometheus-metrics > prometheus-token
Configure o agente de operações para o Vault
Seguindo o guia para configurar o Ops Agent, adicione os elementos necessários para recolher telemetria de instâncias do Vault e reinicie o agente.
Exemplo de configuração
Os seguintes comandos criam a configuração para recolher e carregar telemetria para o Vault:
Para que estas alterações entrem em vigor, tem de reiniciar o agente de operações:
Linux
- Para reiniciar o agente, execute o seguinte comando na sua instância:
sudo systemctl restart google-cloud-ops-agent
- Para confirmar que o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente de registo" foram iniciados:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- Estabeleça ligação à sua instância através do RDP ou de uma ferramenta semelhante e inicie sessão no Windows.
- Abra um terminal do PowerShell com privilégios de administrador: clique com o botão direito do rato no ícone do PowerShell e selecione Executar como administrador
- Para reiniciar o agente, execute o seguinte comando do PowerShell:
Restart-Service google-cloud-ops-agent -Force
- Para confirmar que o agente foi reiniciado, execute o seguinte comando e
verifique se os componentes "Agente de métricas" e "Agente de registo" foram iniciados:
Get-Service google-cloud-ops-agent*
Configure a recolha de registos
Para carregar registos do Vault, tem de criar um recetor para os registos produzidos pelo Vault e, em seguida, criar um pipeline para o novo recetor.
Para configurar um recetor para os seus registos vault_audit
, especifique os seguintes campos:
Campo | Predefinição | Descrição |
---|---|---|
exclude_paths |
Uma lista de padrões de caminhos do sistema de ficheiros a excluir do conjunto correspondente a include_paths . |
|
include_paths |
Uma lista de caminhos do sistema de ficheiros a ler através da análise detalhada de cada ficheiro. Pode usar um caráter universal (* ) nos caminhos. |
|
record_log_file_path |
false |
Se estiver definido como true , o caminho para o ficheiro específico a partir do qual o registo de registo foi obtido aparece na entrada de registo de saída como o valor da etiqueta agent.googleapis.com/log_file_path . Quando usa um caráter universal, apenas é registado o caminho do ficheiro a partir do qual o registo foi obtido. |
type |
O valor tem de ser vault_audit . |
|
wildcard_refresh_interval |
60s |
O intervalo no qual os caminhos de ficheiros com carateres universais em include_paths são atualizados. Indicado como uma duração, por exemplo, 30s ou 2m . Esta propriedade pode ser útil em débitos de registo elevados, em que os ficheiros de registo são rodados mais rapidamente do que o intervalo predefinido. |
O que é registado
O logName
é derivado dos IDs dos recetores especificados na configuração. Os campos detalhados no interior de
LogEntry
são os seguintes.
Os registos vault_audit
contêm os seguintes campos em LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
jsonPayload.auth |
struct | |
jsonPayload.auth.accessor |
de string | Este é um HMAC do acessor do token do cliente. |
jsonPayload.auth.client_token |
de string | Este é um HMAC do ID do token do cliente. |
jsonPayload.auth.display_name |
de string | Este é o nome a apresentar definido pela função do método de autenticação ou explicitamente no momento da criação do segredo. |
jsonPayload.auth.entity_id |
de string | Este é um identificador de entidade de token. |
jsonPayload.auth.metadata |
objeto | Esta variável contém uma lista de pares de chave/valor de metadados associados ao client_token. |
jsonPayload.auth.policies |
objeto | Esta resposta contém uma lista de políticas associadas ao client_token. |
jsonPayload.auth.token_type |
de string | |
jsonPayload.error |
de string | Se ocorreu um erro com o pedido, a mensagem de erro é incluída no valor deste campo. |
jsonPayload.request |
struct | |
jsonPayload.request.client_token |
de string | Este é um HMAC do ID do token do cliente. |
jsonPayload.request.client_token_accessor |
de string | Este é um HMAC do acessor do token do cliente. |
jsonPayload.request.data |
objeto | O objeto de dados vai conter dados secretos em pares de chave/valor. |
jsonPayload.request.headers |
objeto | Cabeçalhos HTTP adicionais especificados pelo cliente como parte do pedido. |
jsonPayload.request.id |
de string | Este é o identificador exclusivo do pedido. |
jsonPayload.request.namespace.id |
de string | |
jsonPayload.request.operation |
de string | Este é o tipo de operação que corresponde às capacidades do caminho e deve ser um dos seguintes: create , read , update , delete ou list . |
jsonPayload.request.path |
de string | O caminho do Vault pedido para a operação. |
jsonPayload.request.policy_override |
booleano | Isto acontece true quando foi pedida uma substituição de política obrigatória flexível. |
jsonPayload.request.remote_address |
de string | O endereço IP do cliente que está a fazer o pedido. |
jsonPayload.request.wrap_ttl |
de string | Se o token estiver envolvido, apresenta o valor de TTL envolvido configurado como uma string numérica. |
jsonPayload.response |
struct | |
jsonPayload.response.data.accessor |
de string | Este é um HMAC do acessor do token do cliente. |
jsonPayload.response.data.creation_time |
de string | Data/hora no formato RFC 3339 da criação do token. |
jsonPayload.response.data.creation_ttl |
de string | TTL de criação de tokens em segundos. |
jsonPayload.response.data.display_name |
de string | Este é o nome a apresentar definido pela função do método de autenticação ou explicitamente no momento da criação do segredo. |
jsonPayload.response.data.entity_id |
de string | Este é um identificador de entidade de token. |
jsonPayload.response.data.expire_time |
de string | Data/hora no formato RFC 3339 que representa o momento em que este token vai expirar. |
jsonPayload.response.data.explicit_max_ttl |
de string | Valor de TTL máximo do token explícito em segundos ("0" quando não definido). |
jsonPayload.response.data.id |
de string | Este é o identificador exclusivo da resposta. |
jsonPayload.response.data.issue_time |
de string | Data/hora no formato RFC 3339. |
jsonPayload.response.data.num_uses |
número | Se o token estiver limitado a um número de utilizações, esse valor é representado aqui. |
jsonPayload.response.data.orphan |
booleano | Valor booleano que representa se o token é órfão. |
jsonPayload.response.data.path |
de string | O caminho do Vault pedido para a operação. |
jsonPayload.response.data.policies |
objeto | Esta resposta contém uma lista de políticas associadas ao client_token. |
jsonPayload.response.data.renewable |
booleano | Valor booleano que representa se o token é órfão. |
jsonPayload.type |
de string | O tipo de registo de auditoria. |
severity |
string (LogSeverity ) |
Nível de entrada de registo (traduzido). |
Configure a recolha de métricas
Para carregar métricas do Vault, tem de criar um recetor para as métricas produzidas pelo Vault e, em seguida, criar um pipeline para o novo recetor.
Este recetor não suporta a utilização de várias instâncias na configuração, por exemplo, para monitorizar vários pontos finais. Todas essas instâncias escrevem na mesma série cronológica e o Cloud Monitoring não tem forma de as distinguir.
Para configurar um destinatário para as suas métricas vault
, especifique os seguintes campos:
Campo | Predefinição | Descrição |
---|---|---|
ca_file |
Caminho para o certificado da AC. Como cliente, isto valida o certificado do servidor. Se estiver vazio, o destinatário usa a AC de raiz do sistema. | |
cert_file |
Caminho para o certificado TLS a usar para ligações que requerem mTLS. | |
collection_interval |
60s |
Um valor de duração, como 30s ou 5m . |
endpoint |
localhost:8200 |
O "hostname:port" usado pelo Vault. |
insecure |
true |
Define se deve ou não usar uma ligação TLS segura. Se estiver definida como false , o TLS está ativado. |
insecure_skip_verify |
false |
Define se a validação do certificado deve ou não ser ignorada. Se insecure estiver definido como true , o valor insecure_skip_verify não é usado. |
key_file |
Caminho para a chave TLS a usar para ligações que requerem mTLS. | |
metrics_path |
/v1/sys/metrics |
O caminho para a recolha de métricas. |
token |
localhost:8200 |
Token usado para autenticação. |
type |
Este valor tem de ser vault . |
O que é monitorizado
A tabela seguinte apresenta a lista de métricas que o agente de operações recolhe da instância do Vault.
Tipo de métrica | |
---|---|
Tipo, Tipo Recursos monitorizados |
Etiquetas |
workload.googleapis.com/vault.audit.request.failed
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/vault.audit.response.failed
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/vault.core.leader.duration
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/vault.core.request.count
|
|
GAUGE , INT64 gce_instance |
cluster
|
workload.googleapis.com/vault.memory.usage
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/vault.storage.operation.delete.count
|
|
CUMULATIVE , INT64 gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.delete.time
|
|
CUMULATIVE , DOUBLE gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.get.count
|
|
CUMULATIVE , INT64 gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.get.time
|
|
CUMULATIVE , DOUBLE gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.list.count
|
|
CUMULATIVE , INT64 gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.list.time
|
|
CUMULATIVE , DOUBLE gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.put.count
|
|
CUMULATIVE , INT64 gce_instance |
storage
|
workload.googleapis.com/vault.storage.operation.put.time
|
|
CUMULATIVE , DOUBLE gce_instance |
storage
|
workload.googleapis.com/vault.token.count
|
|
GAUGE , INT64 gce_instance |
cluster namespace
|
workload.googleapis.com/vault.token.lease.count
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/vault.token.renew.time
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/vault.token.revoke.time
|
|
GAUGE , INT64 gce_instance |
Valide a configuração
Esta secção descreve como verificar se configurou corretamente o recetor do Vault. O agente de operações pode demorar um ou dois minutos a começar a recolher telemetria.
Para verificar se os registos do Vault estão a ser enviados para o Cloud Logging, faça o seguinte:
-
Na Google Cloud consola, aceda à página Explorador de registos:
Aceda ao Explorador de registos
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda é Registo.
- Introduza a seguinte consulta no editor e, de seguida, clique em Executar consulta:
resource.type="gce_instance" log_id("vault_audit")
Para verificar se as métricas do Vault estão a ser enviadas para o Cloud Monitoring, faça o seguinte:
-
Na Google Cloud consola, aceda à página leaderboard Explorador de métricas:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Na barra de ferramentas do painel do criador de consultas, selecione o botão cujo nome é code MQL ou code PromQL.
- Verifique se a opção PromQL está selecionada no botão Idioma. O botão para alternar o idioma encontra-se na mesma barra de ferramentas que lhe permite formatar a consulta.
- Introduza a seguinte consulta no editor e, de seguida, clique em Executar consulta:
{"workload.googleapis.com/vault.memory.usage", monitored_resource="gce_instance"}
Ver o painel de controlo
Para ver as métricas do Vault, tem de ter um gráfico ou um painel de controlo configurado. A integração do Vault inclui um ou mais painéis de controlo para si. Todos os painéis de controlo são instalados automaticamente depois de configurar a integração e o agente de operações começar a recolher dados de métricas.
Também pode ver pré-visualizações estáticas de painéis de controlo sem instalar a integração.
Para ver um painel de controlo instalado, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Selecione o separador Lista de painéis de controlo e, de seguida, escolha a categoria Integrações.
- Clique no nome do painel de controlo que quer ver.
Se configurou uma integração, mas o painel de controlo não foi instalado, verifique se o agente de operações está em execução. Quando não existem dados de métricas para um gráfico no painel de controlo, a instalação do painel de controlo falha. Depois de o agente de operações começar a recolher métricas, o painel de controlo é instalado para si.
Para ver uma pré-visualização estática do painel de controlo, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Integrações:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Clique no filtro da plataforma de implementação Compute Engine.
- Localize a entrada para Vault e clique em Ver detalhes.
- Selecione o separador Painéis de controlo para ver uma pré-visualização estática. Se o painel de controlo estiver instalado, pode navegar até ele clicando em Ver painel de controlo.
Para mais informações acerca dos painéis de controlo no Cloud Monitoring, consulte o artigo Painéis de controlo e gráficos.
Para mais informações sobre como usar a página Integrações, consulte o artigo Gerir integrações.
Instale políticas de alerta
As políticas de alerta indicam ao Cloud Monitoring que lhe envie uma notificação quando ocorrerem condições especificadas. A integração do Vault inclui uma ou mais políticas de alerta para sua utilização. Pode ver e instalar estas políticas de alerta na página Integrações em Monitorização.
Para ver as descrições das políticas de alerta disponíveis e instalá-las, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Integrações:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Localize a entrada para Vault e clique em Ver detalhes.
- Selecione o separador Alertas. Este separador apresenta descrições das políticas de alerta disponíveis e uma interface para as instalar.
- Instale políticas de alerta. As políticas de alerta precisam de saber para onde enviar notificações de que o alerta foi acionado, pelo que requerem informações suas para a instalação.
Para instalar políticas de alerta, faça o seguinte:
- Na lista de políticas de alerta disponíveis, selecione as que quer instalar.
Na secção Configurar notificações, selecione um ou mais canais de notificação. Tem a opção de desativar a utilização de canais de notificação, mas, se o fizer, as suas políticas de alerta são acionadas silenciosamente. Pode verificar o respetivo estado em Monitorização, mas não recebe notificações.
Para mais informações sobre os canais de notificação, consulte o artigo Faça a gestão dos canais de notificação.
- Clique em Criar políticas.
Para mais informações sobre as políticas de alerta no Cloud Monitoring, consulte o artigo Introdução aos alertas.
Para mais informações sobre como usar a página Integrações, consulte o artigo Gerir integrações.
O que se segue?
Para ver um passo a passo sobre como usar o Ansible para instalar o agente de operações, configurar uma aplicação de terceiros e instalar um painel de controlo de exemplo, consulte o vídeo Instale o agente de operações para resolver problemas de aplicações de terceiros.