Configurar autenticação do token do portador para Metrics
nota
Esta página aborda a autenticação do token do portador para o endpoint OTLP do CloudWatch Metrics. Para a autenticação do token do portador do CloudWatch Logs, consulte Como configurar a autenticação do token do portador para Logs no Guia do usuário do CloudWatch Logs.
Antes de enviar métricas usando a autenticação de token do portador com o endpoint OTLP do CloudWatch, você precisa:
-
Criar um usuário do IAM com as permissões do CloudWatch Metrics
-
Gerar credenciais específicas do serviço (chave de API)
Importante
Recomendamos usar a autenticação SigV4 com credenciais de curto prazo para todas as workloads, sempre que possível. O SigV4 fornece a postura de segurança mais forte. Restrinja o uso de chaves de API (tokens de portador) a cenários em que a autenticação de curto prazo baseada em credenciais não seja viável, como enviar métricas fora de ambientes da AWS, fornecedores terceirizados ou plataformas que não oferecem suporte ao SDK da AWS. Quando estiver pronto para incorporar o CloudWatch Metrics em aplicações com maiores requisitos de segurança, você deve mudar para credenciais de curto prazo. Para ter mais informações, consulte Alternativas para chaves de acesso de longo prazo no Guia do usuário do IAM.
Importante
O endpoint OTLP do CloudWatch requer TLS (HTTPS). As solicitações de token do portador enviadas por HTTP simples são rejeitadas. Sempre utilize https://monitoring. quando for configurar o seu cliente.AWS Region.amazonaws.com/v1/metrics
Opção 1: início rápido usando o console da AWS
O AWS Management Console disponibiliza um fluxo de trabalho simplificado para gerar chaves de API para acesso ao endpoint OTLP.
Para configurar o acesso ao endpoint OTLP usando o console
-
Faça login no Console de Gerenciamento AWS.
-
Navegue até CloudWatch > Configurações > Global.
-
Na seção Chaves de API, escolha Gerar chave de API.
-
Em Validade da chave de API, faça uma das seguintes opções:
-
Selecione a duração da validade da chave de API de 1, 5, 30, 90 ou 365 dias.
-
Escolha Duração personalizada para especificar uma data de validade personalizada para a chave de API.
-
Selecione Nunca expira (não recomendado).
-
-
Escolha Gerar chave de API.
O console automaticamente:
-
Cria um novo usuário do IAM com as permissões apropriadas
-
Anexa a política gerenciada do CloudWatchAPIKeyAccess (inclui permissões
cloudwatch:PutMetricDataecloudwatch:CallWithBearerToken) -
Gera credenciais específicas do serviço (chave da API)
Para salvar e verificar sua chave de API
-
Copie e salve com segurança as credenciais exibidas:
-
ID da chave de API (ID de credencial específica do serviço)
-
Segredo da chave da API (token do portador)
O console também oferece a opção de armazenar sua chave de API diretamente no AWS Secrets Manager durante a geração. Se você optar por armazenar no Secrets Manager, a chave será atualizada automaticamente na redefinição e excluída na exclusão da chave.
Importante
Salve o segredo da chave de API imediatamente. Não é possível recuperá-lo posteriormente. Se perdê-lo, será necessário gerar uma nova chave de API.
-
-
Envie uma métrica de teste para verificar sua configuração:
curl -X POST "https://monitoring.us-east-1.amazonaws.com/v1/metrics" \ -H "Content-Type: application/json" \ -H "Authorization: BearerYOUR_API_KEY" \ -d '{"resourceMetrics":[]}'
Opção 2: configuração manual
Se você preferir ter mais controle sobre a configuração do IAM ou precisar personalizar as permissões, você pode configurar o acesso ao endpoint OTLP manualmente.
Etapa 1: criar um usuário do IAM
Crie um usuário do IAM para ingestão de métricas:
Para criar um usuário do IAM para ingestão de métricas
-
Faça login no Console de Gerenciamento da AWS e navegue para o IAM.
-
No painel de navegação à esquerda, escolha Usuários.
-
Selecione Criar usuário.
-
Insira um nome de usuário (por exemplo,
cloudwatch-metrics-api-key-user). -
Escolha Próximo.
-
Anexe uma das seguintes políticas do IAM:
Opção A: usar a política gerenciada (recomendada)
Anexe a política gerenciada do CloudWatchAPIKeyAccess.
Opção B: criar uma política personalizada
Crie e anexe a seguinte política do IAM:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchMetricsAPIs", "Effect": "Allow", "Action": [ "cloudwatch:CallWithBearerToken", "cloudwatch:PutMetricData" ], "Resource": "*" }, { "Sid": "KMSDecryptForCMKDatasets", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Condition": { "StringLike": { "kms:ViaService": "cloudwatch.*.amazonaws.com", "kms:EncryptionContext:aws:cloudwatch:arn": "arn:aws:cloudwatch:*:*:dataset/*" } }, "Resource": "arn:aws:kms:*:*:key/*" } ] } -
Escolha Próximo e, em seguida, Criar usuário.
nota
As permissões do KMS são necessárias se você planeja enviar métricas para conjuntos de dados que usam chaves KMS gerenciadas pelo cliente (CMK). As condições restringem o acesso ao KMS somente às chaves usadas por meio do serviço CloudWatch para recursos do conjunto de dados.
Etapa 2: gerar credenciais específicas do serviço (chave de API)
Gere a chave da API CloudWatch Metrics usando a API CreateServiceSpecificCredential. Também é possível utilizar o comando da AWS CLI create-service-specific-credential
Para gerar uma chave de API com validade de 30 dias:
aws iam create-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 30
A resposta é um objeto ServiceSpecificCredential. O valor ServiceCredentialSecret é sua chave de API do CloudWatch Metrics (token do portador).
Importante
Armazene o valor ServiceCredentialSecret com segurança. Não é possível recuperá-lo posteriormente. Se perdê-lo, será necessário gerar uma nova chave de API.
Etapa 3: enviar métricas
Você pode enviar métricas imediatamente para o endpoint OTLP usando seu token do portador:
curl -X POST "https://monitoring.us-east-1.amazonaws.com/v1/metrics" \ -H "Content-Type: application/json" \ -H "Authorization: BearerYOUR_API_KEY" \ -d '{"resourceMetrics":[]}'
O endpoint aceita ambos os tipos de conteúdo application/json e application/x-protobuf.
Controlar as permissões para gerar e usar as chaves de API do CloudWatch Metrics
Controlar a geração de chaves de API do CloudWatch Metrics
A ação iam:CreateServiceSpecificCredential controla a geração de uma chave específica do serviço (como uma chave de API do CloudWatch Metrics). Você pode definir o escopo dessa ação para usuários do IAM como um recurso para limitar os usuários para os quais uma chave pode ser gerada.
É possível usar as seguintes chaves de condição para impor condições à permissão para a ação iam:CreateServiceSpecificCredential:
-
iam:ServiceSpecificCredentialAgeDays: permite especificar, na condição, o tempo de validade da chave em dias. -
iam:ServiceSpecificCredentialServiceName: permite especificar, na condição, o nome de um serviço.
Como controlar o uso de chaves de API do CloudWatch Metrics
A ação cloudwatch:CallWithBearerToken controla o uso de uma chave de API do CloudWatch Metrics. Para evitar que uma identidade use as chaves de API do CloudWatch Metrics, anexe uma política que negue a ação cloudwatch:CallWithBearerToken ao usuário do IAM associado à chave.
nota
Os tokens de portador do CloudWatch Metrics só podem ser usados com o endpoint de ingestão de métricas OTLP (https://monitoring.). Eles não podem ser utilizados para chamar nenhuma outra API ou endpoint do CloudWatch. Isso inclui as APIs de consulta (AWS Region.amazonaws.com/v1/metricsGetMetricData, ListMetrics, DescribeAlarms), o endpoint de consulta ProMQL, o endpoint de rastreamentos do OTLP e o endpoint de logs do OTLP.
Exemplo de política
Evite que uma identidade gere e use as chaves de API do CloudWatch Metrics:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWMetricsAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "cloudwatch:CallWithBearerToken" ], "Resource": "*" } ] }
Atenção
Essa política impede a criação de credenciais para todos os serviços da AWS que permitam a criação de credenciais específicas do serviço. Para mais informações, consulte Credenciais específicas do serviço para usuários do IAM no Guia do usuário do IAM.
Evite que uma identidade use as chaves de API do CloudWatch Metrics:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } ] }
Permita a criação de chaves do CloudWatch Metrics somente se elas expirarem dentro de 90 dias:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceSpecificCredential", "Resource": "arn:aws:iam::123456789012:user/username", "Condition": { "StringEquals": { "iam:ServiceSpecificCredentialServiceName": "cloudwatch.amazonaws.com" }, "NumericLessThanEquals": { "iam:ServiceSpecificCredentialAgeDays": "90" } } } ] }
Como usar tokens de portador com o OpenTelemetry Collector
Ao usar tokens de portador, você não precisa da extensão sigv4auth. Use a extensão bearertokenauth
extensions: bearertokenauth: filename: "/etc/otel/cw-api-key" exporters: otlphttp: tls: insecure: false endpoint: https://monitoring.us-east-1.amazonaws.com/v1/metrics auth: authenticator: bearertokenauth receivers: otlp: protocols: http: endpoint: 0.0.0.0:4318 processors: batch: send_batch_size: 200 timeout: 10s service: extensions: [bearertokenauth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
Como alternativa, você pode referenciar uma variável de ambiente em vez de um arquivo:
extensions: bearertokenauth: token: "${env:CW_API_KEY}"
Importante
Nunca codifique chaves de API diretamente nos arquivos de configuração do coletor. Os arquivos de configuração geralmente são comprometidos com o controle de versão ou armazenados em manifestos de implantação. Utilize filename para ler a partir de um segredo montado ou ${env:VAR} para ler a partir de uma variável de ambiente injetada pelo seu gerenciador de segredos.
nota
Com a autenticação do token do portador, você não precisa da extensão sigv4auth, dos arquivos de credenciais da AWS, dos perfis do IAM ou da configuração do IRSA. Isso torna a configuração do coletor portátil em qualquer ambiente: na AWS, on-premises ou outros provedores de nuvem.
Rotação de chaves de API
Rotacionar as chaves de API regularmente reduz o risco de acesso não autorizado. Recomendamos estabelecer um cronograma de rotação que se alinhe às políticas de segurança da sua organização.
Processo de rotação
Para rotacionar uma chave de API sem interromper a entrega da métrica, siga este procedimento:
Para rotacionar uma chave de API
-
Crie uma nova credencial (secundária) para o usuário do IAM:
aws iam create-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com \ --credential-age-days 90nota
O IAM permite no máximo 2 credenciais específicas do serviço por usuário do IAM por serviço. Exclua ou desative as credenciais antigas antes de criar novas, caso tenha atingido esse limite.
-
(Opcional) Armazene a nova credencial no AWS Secrets Manager para recuperação segura e rotação automatizada.
-
Atualize a configuração ou a aplicação do OpenTelemetry Collector para usar a nova chave de API.
-
Defina a credencial original como inativa:
aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-idACCA1234EXAMPLE1234\ --status Inactive -
Verifique se a entrega da métrica não foi afetada. Envie uma solicitação de teste usando a nova chave e confirme que você recebeu uma resposta HTTP 200. Você também pode monitorar as métricas existentes do CloudWatch da sua aplicação para confirmar que os dados continuam chegando.
-
Depois de confirmar a entrega bem-sucedida com a nova chave, exclua a credencial anterior:
aws iam delete-service-specific-credential \ --service-specific-credential-idACCA1234EXAMPLE1234
Monitoramento da validade das chaves
Para verificar a data de criação e o status de suas chaves de API existentes, use o comando list-service-specific-credentials
aws iam list-service-specific-credentials \ --user-name cloudwatch-metrics-api-key-user \ --service-name cloudwatch.amazonaws.com
A resposta inclui a CreateDate e o Status de cada credencial. Use essas informações para identificar chaves que estão prestes a expirar ou que estão ativas há mais tempo do que sua política de rotação permite.
Como responder a uma chave de API comprometida
Se você suspeitar que uma chave de API foi comprometida, execute as seguintes etapas imediatamente:
Para responder a uma chave de API comprometida
-
Desative a chave imediatamente para evitar mais uso não autorizado:
aws iam update-service-specific-credential \ --user-name cloudwatch-metrics-api-key-user \ --service-specific-credential-idACCA1234EXAMPLE1234\ --status Inactive -
Analise os logs do CloudTrail para determinar o escopo do acesso não autorizado. Consulte Como registrar em log o uso da chave de API com o CloudTrail sobre como habilitar a auditoria do uso da chave de API.
-
Crie uma chave de substituição seguindo o processo de rotação descrito em Processo de rotação.
-
Exclua a chave comprometida depois que a substituição estiver em vigor:
aws iam delete-service-specific-credential \ --service-specific-credential-idACCA1234EXAMPLE1234 -
Anexe uma política de negação se precisar bloquear imediatamente todo o acesso ao token de portador do usuário do IAM durante a investigação:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "cloudwatch:CallWithBearerToken", "Resource": "*" } }
nota
Para realizar essas ações por meio da API, você deve se autenticar com credenciais da AWS e não com uma chave de API do CloudWatch Metrics. Os tokens de portador só podem ser utilizados para ingestão de métricas, e não podem ser utilizados para operações de gerenciamento do IAM.
Também é possível utilizar as seguintes operações de API do IAM para gerenciar as chaves comprometidas:
-
ResetServiceSpecificCredential: redefina a chave para gerar uma nova senha sem excluir a credencial. A chave não deve ter expirado.
Práticas recomendadas de segurança para chaves de API
Siga estas práticas recomendadas para proteger as chaves de API do CloudWatch Metrics:
-
Nunca incorpore chaves de API no código-fonte. Não codifique chaves de API no código da aplicação, nos arquivos de configuração do coletor ou nos sistemas de controle de versão. Use a extensão
bearertokenauthcomfilenameou${env:VAR}para injetar segredos no runtime. -
Use um gerenciador de segredos. Armazene as chaves de API no AWS Secrets Manager ou em uma solução equivalente de gerenciamento de segredos. Isso permite controle de acesso centralizado, registro de auditoria em log e rotação automatizada.
-
Defina uma validade para todas as chaves. Sempre especifique um valor
--credential-age-daysao criar chaves de API. Para garantir uma vida útil máxima da chave em sua organização, utilize a chave de condiçãoiam:ServiceSpecificCredentialAgeDaysdo IAM. -
Aplique as permissões de privilégio mínimo. Use a política gerenciada do CloudWatchAPIKeyAccess como ponto de partida e restrinja ainda mais conforme necessário.
-
Habilite o registro em log do CloudTrail. Audite o uso da chave da API ativando eventos de dados do CloudTrail para
AWS::CloudWatch::Metric. Consulte Como registrar em log o uso da chave de API com o CloudTrail. -
Monitore com o IAM Access Analyzer. Use o IAM Access Analyzer para identificar credenciais não utilizadas e políticas excessivamente permissivas associadas aos usuários da chave de API do IAM.
-
Rotacione as chaves regularmente. Estabeleça um cronograma de rotação e siga o processo descrito em Rotação de chaves de API.
Como registrar em log o uso da chave de API com o CloudTrail
Você pode usar o AWS CloudTrail para registrar em log os eventos de dados para ingestão de OTLP do CloudWatch Metrics. O CloudWatch emite eventos de dados AWS::CloudWatch::Metric para chamadas para o endpoint OTLP, permitindo que você audite a atividade de ingestão de métricas, incluindo o uso da chave de API.
nota
O bucket do S3 definido por você para a trilha deve ter uma política de bucket que permita ao CloudTrail gravar arquivos de log nele. Para mais informações, consulte Política de bucket do Amazon S3 para CloudTrail no Guia do usuário do AWS CloudTrail.
Para habilitar o registro em log do CloudTrail para o uso da chave da API CloudWatch Metrics
-
Criar uma trilha:
aws cloudtrail create-trail \ --name cloudwatch-metrics-api-key-audit \ --s3-bucket-namemy-cloudtrail-bucket\ --region us-east-1 -
Configure seletores de eventos avançados para capturar eventos de dados de gravação (ingestão) do CloudWatch Metrics:
aws cloudtrail put-event-selectors \ --region us-east-1 \ --trail-name cloudwatch-metrics-api-key-audit \ --advanced-event-selectors '[{ "Name": "CloudWatch Metrics write data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::CloudWatch::Metric"] }, { "Field": "readOnly", "Equals": ["false"] } ] }]' -
Inicie o registro de trilhas em log:
aws cloudtrail start-logging \ --name cloudwatch-metrics-api-key-audit \ --region us-east-1
O filtro readOnly: false limita o registro em log às operações de gravação (PutMetricData), que inclui todas as chamadas de ingestão de OTLP. Para identificar o uso do token de portador entre esses eventos, consulte seus logs de trilhas (via Athena ou CloudTrail Lake) e filtre pelo nome de usuário do IAM associado à sua chave de API (por exemplo, cloudwatch-metrics-api-key-user). Os eventos da ingestão de OTLP incluem AdditionalEventData.protocol definido para OTLP na carga útil do evento, que você pode usar em consultas post-hoc para diferenciá-los das chamadas clássicas do SDK PutMetricData.