

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurando a autenticação do token do portador
<a name="CWL_HTTP_Endpoints_BearerTokenAuth"></a>

Antes de enviar registros usando a autenticação de token do portador com qualquer um dos endpoints de ingestão HTTP, você precisa:
+ Crie um usuário do IAM com permissões CloudWatch de registros
+ Gere credenciais específicas do serviço (token do portador)
+ Crie um grupo de registros e um fluxo de registros
+ Ativar a autenticação do token do portador no grupo de registros

**Importante**  
Recomendamos usar a autenticação SigV4 com credenciais de curto prazo para todas as cargas de trabalho, sempre que possível. O SigV4 fornece a postura de segurança mais forte. Restrinja o uso de chaves de API (tokens portadores) a cenários em que a autenticação de curto prazo baseada em credenciais não seja viável. Quando estiver pronto para incorporar CloudWatch registros em aplicativos com maiores requisitos de segurança, você deve mudar para credenciais de curto prazo. Para obter mais informações, consulte [Alternativas às chaves de acesso de longo prazo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) no *Guia do usuário do IAM*.

## Opção 1: início rápido usando o AWS console
<a name="CWL_HTTP_Endpoints_Console_Setup"></a>

O AWS Management Console fornece um fluxo de trabalho simplificado para gerar chaves de API para acesso ao endpoint HTTP.

**Para configurar o acesso ao endpoint HTTP usando o console**

1. Faça login no AWS Management Console.

1. Navegue até **CloudWatch**> **Configurações** > **Registros**.

1. Na seção Chaves de API, escolha **Gerar chave de API**.

1. Em **Validade da chave de API**, faça uma das seguintes opções:
   + Selecione uma duração de expiração 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).

1. 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 [CloudWatchLogsAPIKeyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html) (inclusões `logs:PutLogEvents` e `logs:CallWithBearerToken` permissões)
   + Gera credenciais específicas do serviço (chave de API)

1. 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)
**Importante**  
Salve o segredo da chave de API imediatamente. Ela não poderá ser recuperada posteriormente. Se você a perder, precisará gerar uma nova chave de API.

1. Crie o grupo de registros e o fluxo de registros em que seus registros serão armazenados:

   ```
   # Create the log group
   aws logs create-log-group \
       --log-group-name /aws/hlc-logs/my-application \
       --region us-east-1
   
   # Create the log stream
   aws logs create-log-stream \
       --log-group-name /aws/hlc-logs/my-application \
       --log-stream-name application-stream-001 \
       --region us-east-1
   ```

1. Ative a autenticação do token do portador no grupo de registros:

   ```
   aws logs put-bearer-token-authentication \
       --log-group-identifier /aws/hlc-logs/my-application \
       --bearer-token-authentication-enabled \
       --region us-east-1
   ```

   Verifique a configuração:

   ```
   aws logs describe-log-groups \
       --log-group-name-prefix /aws/hlc-logs/my-application \
       --region us-east-1
   ```

**Permissões incluídas:** o usuário do IAM criado automaticamente terá as seguintes permissões:
+ `logs:PutLogEvents`— Enviar eventos de registro para CloudWatch Logs
+ `logs:CallWithBearerToken`— Autenticar usando o token do portador
+ `kms:Describe*`,`kms:GenerateDataKey*`, `kms:Decrypt` — Acesse grupos de registros criptografados pelo KMS (com condição restrita ao serviço de registros)

## Opção 2: configuração manual
<a name="CWL_HTTP_Endpoints_Manual_Setup"></a>

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 HTTP manualmente.

### Etapa 1: criar um usuário do IAM
<a name="CWL_HTTP_Endpoints_Manual_Step1"></a>

Crie um usuário do IAM que será usado para ingestão de registros:

1. Faça login no AWS Management Console e navegue até o IAM.

1. No painel de navegação à esquerda, escolha **Usuários**.

1. Selecione **Criar usuário**.

1. Insira um nome de usuário (por exemplo,`cloudwatch-logs-hlc-user`).

1. Escolha **Próximo**.

1. Anexe uma das seguintes políticas do IAM:

   **Opção A: usar a política gerenciada (recomendada)**

   Anexe a política gerenciada do [CloudWatchLogsAPIKeyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html).

   **Opção B: criar uma política personalizada**

   Crie e anexe a seguinte política do IAM:

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "LogsAPIs",
               "Effect": "Allow",
               "Action": [
                   "logs:CallWithBearerToken",
                   "logs:PutLogEvents"
               ],
               "Resource": "*"
           },
           {
               "Sid": "KMSAPIs",
               "Effect": "Allow",
               "Action": [
                   "kms:Describe*",
                   "kms:GenerateDataKey*",
                   "kms:Decrypt"
               ],
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": [
                           "logs.*.amazonaws.com"
                       ]
                   }
               },
               "Resource": "arn:aws:kms:*:*:key/*"
           }
       ]
   }
   ```

1. Escolha **Avançar** e, em seguida, **Criar usuário**.

**nota**  
As permissões do KMS são necessárias se você planeja enviar registros para grupos de registros criptografados pelo KMS. A condição restringe o acesso ao KMS somente às chaves usadas por meio do serviço de CloudWatch registros.

### Etapa 2: gerar credenciais específicas do serviço (chave de API)
<a name="CWL_HTTP_Endpoints_Manual_Step2"></a>

Gere a chave da API CloudWatch Logs usando a [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html)API. Você também pode usar o comando [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html)CLI. Para a idade da credencial, você pode especificar um valor entre 1 e 36600 dias. Se você não especificar o prazo de validade de uma credencial, a chave da API não expirará.

Para gerar uma chave de API com uma expiração de 30 dias:

```
aws iam create-service-specific-credential \
    --user-name cloudwatch-logs-hlc-user \
    --service-name logs.amazonaws.com \
    --credential-age-days 30
```

A resposta é um [ServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ServiceSpecificCredential.html)objeto. O `ServiceCredentialSecret` valor é sua chave da API CloudWatch Logs (token do portador).

**Importante**  
Armazene o valor `ServiceCredentialSecret` em segurança, pois não será possível recuperá-lo mais tarde. Se você a perder, precisará gerar uma nova chave de API.

### Etapa 3: criar um grupo de registros e um fluxo de registros
<a name="CWL_HTTP_Endpoints_Manual_Step3"></a>

Crie o grupo de registros e o fluxo de registros em que seus registros serão armazenados:

```
# Create the log group
aws logs create-log-group \
    --log-group-name /aws/hlc-logs/my-application \
    --region us-east-1

# Create the log stream
aws logs create-log-stream \
    --log-group-name /aws/hlc-logs/my-application \
    --log-stream-name application-stream-001 \
    --region us-east-1
```

### Etapa 4: ativar a autenticação do token do portador
<a name="CWL_HTTP_Endpoints_Manual_Step4"></a>

Ative a autenticação do token do portador no grupo de registros:

```
aws logs put-bearer-token-authentication \
    --log-group-identifier /aws/hlc-logs/my-application \
    --bearer-token-authentication-enabled \
    --region us-east-1
```

Verifique a configuração:

```
aws logs describe-log-groups \
    --log-group-name-prefix /aws/hlc-logs/my-application \
    --region us-east-1
```

## Controle as permissões para gerar e usar CloudWatch as chaves da API Logs
<a name="CWL_HTTP_Endpoints_API_Key_Permissions"></a>

A geração e o uso das chaves da API CloudWatch Logs são controlados por ações e chaves de condição nos serviços do CloudWatch Logs e do IAM.

### Controle da geração de chaves da API CloudWatch Logs
<a name="CWL_HTTP_Endpoints_Control_Generation"></a>

A CreateServiceSpecificCredential ação [iam:](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsidentityandaccessmanagementiam.html#awsidentityandaccessmanagementiam-actions-as-permissions) controla a geração de uma chave específica do serviço (como uma chave da API CloudWatch Logs). 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_ServiceSpecificCredentialAgeDays) — Permite especificar, na condição, o tempo de expiração da chave em dias. Por exemplo, é possível usar essa chave de condição para permitir somente a criação de chaves de API que expirem em noventa dias.
+ [iam: ServiceSpecificCredentialServiceName](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_ServiceSpecificCredentialAgeDays) — Permite especificar, na condição, o nome de um serviço. Por exemplo, você pode usar essa chave de condição para permitir somente a criação de chaves de API para CloudWatch Logs e não para outros serviços.

### Controle do uso das chaves da API CloudWatch Logs
<a name="CWL_HTTP_Endpoints_Control_Usage"></a>

A `logs:CallWithBearerToken` ação controla o uso de uma chave da API CloudWatch Logs. Para evitar que uma identidade use as chaves da API CloudWatch Logs, anexe uma política que negue a `logs:CallWithBearerToken` ação ao usuário do IAM associado à chave.

### Exemplo de política
<a name="CWL_HTTP_Endpoints_Permission_Examples"></a>

#### Impedir que uma identidade gere e use CloudWatch as chaves da API Logs
<a name="CWL_HTTP_Endpoints_Deny_Generation_And_Use"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyCWLAPIKeys",
            "Effect": "Deny",
            "Action": [
                "iam:CreateServiceSpecificCredential",
                "logs:CallWithBearerToken"
            ],
            "Resource": "*"
        }
    ]
}
```

**Atenção**  
Essa política impedirá a criação de credenciais para todos os AWS serviços que oferecem suporte à criação de credenciais específicas do serviço. Para ter mais informações, consulte [Credenciais específicas do serviço para usuários do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_service-specific-creds.html).

#### Impedir que uma identidade use CloudWatch as chaves da API Logs
<a name="CWL_HTTP_Endpoints_Deny_Use"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "logs:CallWithBearerToken",
            "Resource": "*"
        }
    ]
}
```

#### Permita a criação de chaves de CloudWatch registros somente se elas expirarem em 90 dias
<a name="CWL_HTTP_Endpoints_Allow_Expire_90"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceSpecificCredential",
            "Resource": "arn:aws:iam::123456789012:user/username",
            "Condition": {
                "StringEquals": {
                    "iam:ServiceSpecificCredentialServiceName": "logs.amazonaws.com"
                },
                "NumericLessThanEquals": {
                    "iam:ServiceSpecificCredentialAgeDays": "90"
                }
            }
        }
    ]
}
```

## Chaves de API rotativas
<a name="CWL_HTTP_Endpoints_Rotating_Keys"></a>

A rotação regular de suas chaves de API 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
<a name="CWL_HTTP_Endpoints_Rotation_Process"></a>

Para alternar uma chave de API sem interromper a entrega do registro, siga este procedimento:

1. Crie uma nova credencial (secundária) para o usuário do IAM:

   ```
   aws iam create-service-specific-credential \
       --user-name cloudwatch-logs-hlc-user \
       --service-name logs.amazonaws.com \
       --credential-age-days 90
   ```

1. (Opcional) Armazene a nova credencial AWS Secrets Manager para recuperação segura e rotação automatizada.

1. Importe a nova credencial para o portal do seu fornecedor ou atualize a configuração do seu aplicativo para usar a nova chave de API.

1. Defina a credencial original como inativa:

   ```
   aws iam update-service-specific-credential \
       --user-name cloudwatch-logs-hlc-user \
       --service-specific-credential-id ACCA1234EXAMPLE1234 \
       --status Inactive
   ```

1. Verifique se a entrega de registros não é afetada monitorando a `IncomingBytes` métrica do seu grupo de registros em CloudWatch. Para obter mais informações, consulte [Monitoramento com CloudWatch métricas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Monitoring-CloudWatch-Metrics.html).

1. Depois de confirmar a entrega bem-sucedida com a nova chave, exclua a credencial anterior:

   ```
   aws iam delete-service-specific-credential \
       --service-specific-credential-id ACCA1234EXAMPLE1234
   ```

### Monitorando a expiração da chave
<a name="CWL_HTTP_Endpoints_Monitor_Expiration"></a>

Para verificar a data de criação e o status de suas chaves de API existentes, use o [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html)comando:

```
aws iam list-service-specific-credentials \
    --user-name cloudwatch-logs-hlc-user \
    --service-name logs.amazonaws.com
```

A resposta inclui `CreateDate` e `Status` para 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.

## Respondendo a uma chave de API comprometida
<a name="CWL_HTTP_Endpoints_Compromised_Keys"></a>

Se você suspeitar que uma chave de API foi comprometida, execute as seguintes etapas imediatamente:

1. **Desative a chave imediatamente** para evitar mais uso não autorizado:

   ```
   aws iam update-service-specific-credential \
       --user-name cloudwatch-logs-hlc-user \
       --service-specific-credential-id ACCA1234EXAMPLE1234 \
       --status Inactive
   ```

1. **Analise CloudTrail os registros** para determinar o escopo do acesso não autorizado. Veja [Registrando o uso da chave de API com CloudTrail](#CWL_HTTP_Endpoints_CloudTrail_Logging) como habilitar a auditoria do uso da chave de API.

1. **Crie uma chave de substituição** seguindo o processo de rotação descrito em[Processo de rotação](#CWL_HTTP_Endpoints_Rotation_Process).

1. **Exclua a chave comprometida** depois que a substituição estiver em vigor:

   ```
   aws iam delete-service-specific-credential \
       --service-specific-credential-id ACCA1234EXAMPLE1234
   ```

1. **Anexe uma política de negação** se precisar bloquear imediatamente todo o acesso ao token portador do usuário do IAM durante a investigação:

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Deny",
           "Action": "logs:CallWithBearerToken",
           "Resource": "*"
       }
   }
   ```

**nota**  
Para realizar essas ações por meio da API, você deve se autenticar com AWS credenciais e não com uma chave da API CloudWatch Logs.

Você também pode usar as seguintes operações de API do IAM para gerenciar chaves comprometidas:
+ [ResetServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html)— 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
<a name="CWL_HTTP_Endpoints_Security_Best_Practices"></a>

Siga estas práticas recomendadas para proteger suas chaves da API CloudWatch Logs:
+ **Nunca incorpore chaves de API no código-fonte.** Não codifique as chaves de API no código do aplicativo nem as comprometa com sistemas de controle de versão. Se uma chave for transferida acidentalmente para um repositório público, o escaneamento AWS automático pode sinalizá-la e você deve girar a chave imediatamente.
+ **Use um gerenciador de segredos.** Armazene as chaves de API em [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)uma solução de gerenciamento de segredos equivalente. Isso permite controle de acesso centralizado, registro de auditoria e rotação automatizada.
+ **Defina uma expiração para todas as chaves.** Sempre especifique um `--credential-age-days` valor ao criar chaves de API. Para impor uma vida útil máxima da chave em sua organização, use a chave de condição `iam:ServiceSpecificCredentialAgeDays` do IAM. Para ver um exemplo, consulte [Permita a criação de chaves de CloudWatch registros somente se elas expirarem em 90 dias](#CWL_HTTP_Endpoints_Allow_Expire_90).
+ **Aplique permissões com privilégios mínimos.** Defina o escopo das permissões do usuário do IAM somente para os grupos de registros e as ações necessárias. Use a política de [CloudWatchLogsAPIKeyacesso](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchLogsAPIKeyAccess.html) gerenciado como ponto de partida e restrinja ainda mais conforme necessário.
+ **Ative o CloudTrail registro.** Audite o uso da chave da API ativando eventos de CloudTrail dados para`AWS::Logs::LogGroupAuthorization`. Consulte [Registrando o uso da chave de API com CloudTrail](#CWL_HTTP_Endpoints_CloudTrail_Logging).
+ **Monitore com o IAM Access Analyzer.** Use o [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para identificar credenciais não utilizadas e políticas excessivamente permissivas associadas aos usuários da chave de API do IAM.
+ **Gire as teclas regularmente.** Estabeleça um cronograma de rotação e siga o processo descrito em[Chaves de API rotativas](#CWL_HTTP_Endpoints_Rotating_Keys).

## Registrando o uso da chave de API com CloudTrail
<a name="CWL_HTTP_Endpoints_CloudTrail_Logging"></a>

Você pode usar AWS CloudTrail para registrar eventos de dados para o uso da chave da API CloudWatch Logs. CloudWatch O Logs emite eventos de `AWS::Logs::LogGroupAuthorization` dados para `CallWithBearerToken` chamadas, permitindo que você audite quando e como as chaves de API são usadas para enviar registros.

Para ativar o CloudTrail registro para o uso da chave da API CloudWatch Logs:

**nota**  
O bucket do S3 que você especifica para a trilha deve ter uma política de bucket que permita CloudTrail gravar arquivos de log nele. Para obter mais informações, consulte a [política de bucket do Amazon S3](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-s3-bucket-policy-for-cloudtrail.html) para. CloudTrail

1. Crie uma trilha:

   ```
   aws cloudtrail create-trail \
       --name cloudwatch-logs-api-key-audit \
       --s3-bucket-name my-cloudtrail-bucket \
       --region us-east-1
   ```

1. Configure seletores de eventos avançados para capturar eventos de autorização de grupos de CloudWatch registros de registros:

   ```
   aws cloudtrail put-event-selectors \
       --region us-east-1 \
       --trail-name cloudwatch-logs-api-key-audit \
       --advanced-event-selectors '[{
           "Name": "CloudWatch Logs API key authorization events",
           "FieldSelectors": [
               { "Field": "eventCategory", "Equals": ["Data"] },
               { "Field": "resources.type", "Equals": ["AWS::Logs::LogGroupAuthorization"] }
           ]
       }]'
   ```

1. Inicie o registro de trilhas:

   ```
   aws cloudtrail start-logging \
       --name cloudwatch-logs-api-key-audit \
       --region us-east-1
   ```