Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración de la autenticación por token de portador
Antes de poder enviar los registros mediante la autenticación por token portador con cualquiera de los puntos de enlace de ingestión de HTTP, debe:
Cree un usuario de IAM con permisos de registro CloudWatch
Genere credenciales específicas del servicio (token de portador)
Cree un grupo de registros y un flujo de registros
Habilite la autenticación por token portador en el grupo de registros
importante
Siempre que sea posible, recomendamos utilizar la autenticación SigV4 con credenciales a corto plazo para todas las cargas de trabajo. SigV4 proporciona la postura de seguridad más sólida. Restrinja el uso de claves de API (símbolos portadores) a situaciones en las que la autenticación basada en credenciales a corto plazo no sea factible. Cuando esté preparado para incorporar los CloudWatch registros en aplicaciones con mayores requisitos de seguridad, debería cambiar a credenciales de corta duración. Para obtener más información, consulte Alternativas a las claves de acceso a largo plazo en la Guía del usuario de IAM.
Opción 1: Inicio rápido a utilizar la consola AWS
La consola AWS de administración proporciona un flujo de trabajo simplificado para generar claves de API para el acceso a los puntos de conexión HTTP.
Para configurar el acceso al punto final HTTP mediante la consola
Inicie sesión en la consola AWS de administración.
Vaya a CloudWatch> Configuración > Registros.
-
En la sección Claves de API, selecciona Generar clave de API.
-
Para Expiración de la clave de API, realice una de las siguientes acciones:
Selecciona una duración de caducidad de la clave de API de 1, 5, 30, 90 o 365 días.
Elija Duración personalizada para especificar una fecha de expiración personalizada de la clave de API.
Selecciona Nunca caduca (no se recomienda).
-
Seleccione Generar clave de API.
La consola automáticamente:
Crea un nuevo usuario de IAM con los permisos adecuados
Adjunta la política de CloudWatchLogsAPIKeyacceso gestionado (incluye
logs:PutLogEventsylogs:CallWithBearerTokenpermisos)Genera credenciales específicas del servicio (clave de API)
-
Copie y guarde de forma segura las credenciales mostradas:
ID de clave de API (ID de credencial específica del servicio)
Secreto de clave de API (token de portador)
importante
Guarde el secreto de la clave de la API inmediatamente. no la puede recuperar en otro momento. Si la pierdes, tendrás que generar una nueva clave de API.
-
Crea el grupo de registros y el flujo de registros donde se almacenarán tus registros:
# 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 -
Habilite la autenticación por token de portador en el grupo de registros:
aws logs put-bearer-token-authentication \ --log-group-identifier /aws/hlc-logs/my-application \ --bearer-token-authentication-enabled \ --region us-east-1Verifique la configuración:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Permisos incluidos: el usuario de IAM creado automáticamente tendrá los siguientes permisos:
logs:PutLogEvents— Enviar los eventos del registro a CloudWatch los registroslogs:CallWithBearerToken— Autenticarse con un token de portadorkms:Describe*,kms:GenerateDataKey*,kms:Decrypt— Acceda a grupos de registros cifrados con KMS (con la condición de que se limite al servicio de registros)
Opción 2: configuración manual
Si prefiere tener más control sobre la configuración de IAM o necesita personalizar los permisos, puede configurar el acceso al punto final HTTP de forma manual.
Paso 1: Crear un usuario de IAM
Cree un usuario de IAM que se utilizará para la ingesta de registros:
Inicie sesión en la consola de AWS administración y vaya a IAM.
En el panel de navegación izquierdo, elija Usuarios.
Seleccione la opción Crear un usuario.
Introduzca un nombre de usuario (por ejemplo,
cloudwatch-logs-hlc-user).Elija Siguiente.
-
Adjunte una de las siguientes políticas de IAM:
Opción A: utilizar la política gestionada (recomendada)
Adjunte la política de CloudWatchLogsAPIKeyacceso gestionado.
Opción B: crear una política personalizada
Cree y adjunte la siguiente política de 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/*" } ] } Seleccione Siguiente y, a continuación, Crear usuario.
nota
Los permisos de KMS son necesarios si planea enviar registros a grupos de registros cifrados con KMS. La condición restringe el acceso al KMS únicamente a las claves utilizadas a través CloudWatch del servicio de registros.
Paso 2: Generar credenciales específicas del servicio (clave de API)
Genere la clave CloudWatch de API de Logs mediante la CreateServiceSpecificCredentialAPI. También puede utilizar el comando create-service-specific-credential
Para generar una clave de API con una caducidad de 30 días:
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 30
La respuesta es un ServiceSpecificCredentialobjeto. El ServiceCredentialSecret valor es tu clave de API de CloudWatch Logs (token portador).
importante
Guarde el valor ServiceCredentialSecret de forma segura, ya que no podrá recuperarlo más tarde. Si lo pierdes, tendrás que generar una nueva clave de API.
Paso 3: Crear un grupo de registros y un flujo de registros
Cree el grupo de registros y el flujo de registros donde se almacenarán sus registros:
# 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
Paso 4: Habilite la autenticación por token portador
Habilite la autenticación por token portador en el 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 la configuración:
aws logs describe-log-groups \ --log-group-name-prefix /aws/hlc-logs/my-application \ --region us-east-1
Controle los permisos para generar y usar las claves de API CloudWatch de Logs
La generación y el uso de las claves de la API de CloudWatch Logs se controlan mediante claves de acción y condición tanto en los servicios de CloudWatch Logs como de IAM.
Controlar la generación de claves de API de CloudWatch Logs
La CreateServiceSpecificCredential acción iam: controla la generación de una clave específica del servicio (como una clave de API de CloudWatch Logs). Puede limitar esta acción a los usuarios de IAM como una forma de restringir el número de usuarios para los que se puede generar una clave.
Puede utilizar las siguientes claves de condición para imponer condiciones al permiso de la acción iam:CreateServiceSpecificCredential:
iam: ServiceSpecificCredentialAgeDays — Permite especificar, en esta condición, el tiempo de caducidad de la clave en días. Por ejemplo, puede utilizar esta clave de condición para permitir únicamente la creación de claves de API que caduquen en 90 días.
iam: ServiceSpecificCredentialServiceName — Permite especificar, en la condición, el nombre de un servicio. Por ejemplo, puedes usar esta clave de condición para permitir solo la creación de claves de API para CloudWatch los registros y no para otros servicios.
Controlar el uso de las claves de API de CloudWatch Logs
La logs:CallWithBearerToken acción controla el uso de una clave de API de CloudWatch Logs. Para evitar que una identidad utilice las claves de la API de CloudWatch Logs, adjunte una política que deniegue la logs:CallWithBearerToken acción al usuario de IAM asociado a la clave.
Ejemplos de políticas
Impida que una identidad genere y utilice las claves de la API CloudWatch de Logs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCWLAPIKeys", "Effect": "Deny", "Action": [ "iam:CreateServiceSpecificCredential", "logs:CallWithBearerToken" ], "Resource": "*" } ] }
aviso
Esta política impedirá la creación de credenciales para todos los AWS servicios que admiten la creación de credenciales específicas de un servicio. Para obtener más información, consulte Credenciales específicas del servicio para los usuarios de IAM.
Impida que una identidad utilice las claves de la API de CloudWatch Logs
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } ] }
Permita la creación de claves de CloudWatch registro solo si caducan en un plazo de 90 días
{ "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" } } } ] }
Claves de API rotativas
La rotación regular de las claves de API reduce el riesgo de acceso no autorizado. Te recomendamos establecer un programa de rotación que se ajuste a las políticas de seguridad de tu organización.
Proceso de rotación
Para rotar una clave de API sin interrumpir la entrega de registros, siga este procedimiento:
-
Cree una nueva credencial (secundaria) para el usuario de IAM:
aws iam create-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com \ --credential-age-days 90 (Opcional) Guarde la nueva credencial AWS Secrets Manager para recuperarla de forma segura y rotarla automáticamente.
Importe la nueva credencial al portal de su proveedor o actualice la configuración de la aplicación para usar la nueva clave de API.
-
Defina la credencial original como inactiva:
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive Compruebe que la entrega de registros no se vea afectada supervisando la
IncomingBytesmétrica de su grupo de registros. CloudWatch Para obtener más información, consulte Supervisión con CloudWatch métricas.-
Tras confirmar que la entrega se ha realizado correctamente con la nueva clave, elimine la credencial anterior:
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234
Supervisión del vencimiento de la clave
Para comprobar la fecha de creación y el estado de tus claves de API existentes, usa el list-service-specific-credentials
aws iam list-service-specific-credentials \ --user-name cloudwatch-logs-hlc-user \ --service-name logs.amazonaws.com
La respuesta incluye CreateDate y Status para cada credencial. Utilice esta información para identificar las claves que están a punto de caducar o que han estado activas durante más tiempo del permitido por su política de rotación.
Responder a una clave de API comprometida
Si sospechas que una clave de API se ha visto comprometida, sigue los siguientes pasos de inmediato:
-
Desactiva la clave inmediatamente para evitar que se siga utilizando sin autorización:
aws iam update-service-specific-credential \ --user-name cloudwatch-logs-hlc-user \ --service-specific-credential-id ACCA1234EXAMPLE1234 \ --status Inactive Revise CloudTrail los registros para determinar el alcance del acceso no autorizado. Consulte Registrar el uso de las claves de API con CloudTrail para saber cómo habilitar la auditoría del uso de las claves de API.
Cree una clave de reemplazo siguiendo el proceso de rotación descrito enProceso de rotación.
-
Elimine la clave dañada una vez que se haya realizado la sustitución:
aws iam delete-service-specific-credential \ --service-specific-credential-id ACCA1234EXAMPLE1234 Adjunta una política de denegación si necesitas bloquear inmediatamente todo acceso al token portador para el usuario de IAM mientras investigas:
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "logs:CallWithBearerToken", "Resource": "*" } }
nota
Para llevar a cabo estas acciones a través de la API, debes autenticarte con AWS credenciales y no con una clave de API de CloudWatch Logs.
También puedes utilizar las siguientes operaciones de la API de IAM para gestionar las claves comprometidas:
ResetServiceSpecificCredential— Restablezca la clave para generar una nueva contraseña sin eliminar la credencial. La clave no debe haber caducado.
Prácticas recomendadas de seguridad para las claves de API
Sigue estas prácticas recomendadas para proteger tus claves de API de CloudWatch Logs:
Nunca insertes claves de API en el código fuente. No codifique las claves de API en el código de la aplicación ni las consigne en los sistemas de control de versiones. Si una clave se guarda accidentalmente en un repositorio público, es posible que el escaneo AWS automático la señale y, por lo tanto, debes rotarla inmediatamente.
Usa un administrador de secretos. Almacene las claves de API en una solución de administración de secretos equivalente AWS Secrets Managero en una solución equivalente. Esto permite el control de acceso centralizado, el registro de auditorías y la rotación automática.
Establezca una caducidad para todas las claves. Especifique siempre un
--credential-age-daysvalor al crear las claves de API. Para garantizar una vida útil máxima de las claves en toda su organización, utilice la clave de condición deiam:ServiceSpecificCredentialAgeDaysIAM. Para ver un ejemplo, consulta Permita la creación de claves de CloudWatch registro solo si caducan en un plazo de 90 días.Aplica permisos con privilegios mínimos. Limite los permisos del usuario de IAM únicamente a los grupos de registros y las acciones necesarias. Utilice la política de CloudWatchLogsAPIKeyacceso gestionado como punto de partida y restrinja aún más según sea necesario.
Habilite CloudTrail el registro. Audite el uso de las claves de la API habilitando CloudTrail los eventos de datos para
AWS::Logs::LogGroupAuthorization. Consulte Registrar el uso de las claves de API con CloudTrail.Supervise con IAM Access Analyzer. Utilice IAM Access Analyzer para identificar las credenciales no utilizadas y las políticas excesivamente permisivas asociadas a los usuarios de IAM clave de la API.
Gire las claves con regularidad. Establezca un programa de rotación y siga el proceso descrito enClaves de API rotativas.
Registrar el uso de las claves de API con CloudTrail
Se puede utilizar AWS CloudTrail para registrar eventos de datos para el uso de la clave de la API de CloudWatch Logs. CloudWatch Los registros emiten eventos de AWS::Logs::LogGroupAuthorization datos para CallWithBearerToken las llamadas, lo que te permite auditar cuándo y cómo se utilizan las claves de API para enviar los registros.
Para habilitar el CloudTrail registro para el uso de las claves CloudWatch de la API de Logs:
nota
El bucket de S3 que especifique para la ruta debe tener una política de bucket que permita CloudTrail escribir archivos de registro en él. Para obtener más información, consulte la política de bucket de Amazon S3 para CloudTrail.
-
Cree una ruta:
aws cloudtrail create-trail \ --name cloudwatch-logs-api-key-audit \ --s3-bucket-name my-cloudtrail-bucket \ --region us-east-1 -
Configure selectores de eventos avanzados para capturar CloudWatch los eventos de autorización de grupos 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"] } ] }]' -
Inicie el registro de rutas:
aws cloudtrail start-logging \ --name cloudwatch-logs-api-key-audit \ --region us-east-1