Registro de llamadas a la API de AWS STS y de IAM con AWS CloudTrail - AWS Identity and Access Management

Registro de llamadas a la API de AWS STS y de IAM con AWS CloudTrail

IAM y AWS STS se integran con AWS CloudTrail, un servicio que proporciona un registro de las medidas adoptadas por un usuario o un rol de IAM. CloudTrail captura todas las llamadas a la API de IAM y AWS STS como eventos, incluidas las llamadas procedentes de la consola y de llamadas a la API. Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3. Si no configura un registro de seguimiento, puede ver los eventos más recientes de la consola de CloudTrail en el Event history (Historial de eventos). Puede utilizar CloudTrail para obtener información acerca de la solicitud que se realizó a IAM o AWS STS. Por ejemplo, puede ver la dirección IP desde la que se realizó la solicitud, quién realizó la solicitud, cuándo se realizó y otros detalles adicionales.

Para obtener más información acerca de CloudTrail, consulte la Guía del usuario de AWS CloudTrail.

Información de IAM y AWS STS en CloudTrail

CloudTrail se habilita en su cuenta de AWS cuando la crea. Cuando se produce actividad en IAM o AWS STS, esta se registra en un evento de CloudTrail junto con otros eventos de servicio de AWS en el Historial de eventos. Puede ver, buscar y descargar los últimos eventos de la cuenta de AWS. Para obtener más información, consulte Visualización de eventos con el historial de CloudTrail Event.

Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos de IAM y AWS STS, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones de . El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. También es posible configurar otros servicios de AWS para analizar en profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más información, consulte:

Todas las acciones de IAM y AWS STS las registra CloudTrail y se documentan en la Referencia de la API de IAM y la Referencia de API de AWS Security Token Service.

Registro de solicitudes de IAM y API de AWS STS

CloudTrail registra todas las solicitudes de API autenticadas (realizadas con credenciales) en IAM y operaciones de API de AWS STS. CloudTrail también registra solicitudes no autenticadas a las acciones de AWS STS, AssumeRoleWithSAML y AssumeRoleWithWebIdentity, y registra información proporcionada por el proveedor de identidad. Puede utilizar esta información para asignar llamadas realizadas por un usuario federado con un rol asumido al intermediario federado externo de origen. En el caso de AssumeRole, puede asignar llamadas al servicio de AWS de origen o a la cuenta del usuario de origen. La sección userIdentity de los datos JSON en la entrada de registro de CloudTrail incluye la información que necesita para asignar la solicitud AssumeRole* a un determinado usuario federado. Para obtener más información, consulte Elemento userIdentity de CloudTrail en la Guía del usuario de AWS CloudTrail.

Por ejemplo, las llamadas a CreateUser, DeleteRole y ListGroups de IAM y otras operaciones de API quedan registradas en CloudTrail.

Más adelante en este tema se incluyen ejemplos de este tipo de entrada de log.

importante

Si activa puntos de enlace de AWS STS en otras regiones que no sean el punto de enlace global predeterminado, debe también activar el registro de CloudTrail en dichas regiones. Esto es necesario para registrar cualquier llamada a la API de AWS STS realizada en estas regiones. Para obtener más información, consulte Activación de CloudTrail en regiones adicionales en la Guía del usuario de AWS CloudTrail.

Registro de solicitudes de API a otros servicios de AWS

Las solicitudes autenticadas a las operaciones de la API de otros servicios AWS son registradas por CloudTrail, y estas entradas de registro contienen información sobre quién generó la solicitud.

Por ejemplo, supongamos que ha realizado una solicitud para enumerar las instancias de Amazon EC2 o crear un grupo de implementaciones de AWS CodeDeploy. Los detalles de la persona o servicio que ha realizado la solicitud se incluyen en la entrada de registro de dicha solicitud. Esta información le ayudará a determinar si la solicitud se hizo mediante el usuario raíz Cuenta de AWS, un usuario de IAM, un rol u otro servicio de AWS.

Para obtener más información sobre la información de identidad del usuario en las entradas de registro de CloudTrail, consulte el Elemento userIdentity en la Guía del usuario de AWS CloudTrail.

Registro de eventos de inicio de sesión regionales

Si habilita CloudTrail para registrar los eventos de inicio de sesión en los registros, sea consciente del modo en que CloudTrail elige dónde registrar los eventos.

  • Si los usuarios inician sesión directamente en una consola, se les redirige a un punto de enlace de inicio de sesión global o regional. El punto de enlace depende de si la consola de servicio seleccionada admite regiones. Por ejemplo, la página de inicio de la consola principal admite regiones. Si inicia sesión en https://alias.signin.aws.amazon.com/console, se le redirigirá a un punto de enlace de inicio de sesión regional como https://us-east-2.signin.aws.amazon.com. Este redireccionamiento crea una entrada de registro de CloudTrail regional en el registro de la región del usuario.

    Por otra parte, la consola de Amazon S3 no admite las regiones, por lo que si inicia sesión con https://alias.signin.aws.amazon.com/console/s3, AWS le redirige el punto de enlace de inicio de sesión global en https://signin.aws.amazon.com. Este redireccionamiento crea una entrada de registro de CloudTrail global.

  • Puede solicitar manualmente un determinado punto de enlace de inicio de sesión regional iniciando sesión en la página de inicio principal de la consola habilitada para regiones, mediante una URL como https://alias.signin.aws.amazon.com/console?region=ap-southeast-1. En este caso, AWS le redirige el punto de enlace de inicio de sesión regional ap-southeast-1 lo que se traduce en un evento de registro de CloudTrail regional.

Si el evento de inicio de sesión se considera regional o global depende de la consola en la que el usuario inicia sesión y de cómo el usuario crea la URL de inicio de sesión.

  • ¿La consola del servicio está regionalizada? De ser así, la solicitud de inicio de sesión se redirige automáticamente a un punto de enlace de inicio de sesión regional y el evento se registra en el registro de CloudTrail de dicha región. Por ejemplo, si inicia sesión en https://alias.signin.aws.amazon.com/console, que está regionalizada, se le redirige automáticamente a un punto de enlace de inicio de sesión de su región, como https://us-east-2.signin.aws.amazon.com. El evento se registra en el log de dicha región.

    Sin embargo, algunos servicios aún no están regionalizados. Por ejemplo, el servicio Amazon S3 no está regionalizado actualmente. Si inicia sesión en https://alias.signin.aws.amazon.com/console/s3, se le redirigirá al punto de enlace de inicio de sesión global en https://signin.aws.amazon.com. Este redireccionamiento crea un evento en su registro global.

  • También puede solicitar manualmente un punto de enlace de inicio de sesión regional específico utilizando una URL como https://alias.signin.aws.amazon.com/console?region=ap-southeast-1. Esta URL le redirige al punto de enlace de inicio de sesión regional ap-southeast-1. Este redireccionamiento se traduce en un evento en el log regional.

Prevención de entradas de registro regionales duplicadas

CloudTrail crea registros de seguimiento independientes en cada región. Estos registros de seguimiento incluyen información sobre eventos que se producen en dichas regiones, además de eventos globales y eventos que no son específicos de la región. Entre los ejemplos se incluyen llamadas a la API de IAM, llamadas de AWS STS al punto de enlace global y eventos de inicio de sesión de AWS. Por ejemplo, suponga que tiene dos registros de seguimiento, cada uno en una región diferente. Si, a continuación, crea un nuevo usuario de IAM, el evento CreateUser se añade a los archivos de registro en ambas regiones, lo que crea una entrada de registro duplicada.

AWS Security Token Service (STS) es un servicio con un único punto de enlace global en https://sts.amazonaws.com. Las llamadas a este punto de enlace se registran como llamadas a un servicio global. Sin embargo, dado que este punto de enlace se encuentra físicamente en la región EE. UU. Este (Norte de Virginia), los registros indican us-east-1 como la región del evento. CloudTrail no escribe estos registros en la región EE. UU. Este (Ohio) a no ser que decida incluir registros de servicios globales en dicha región. AWS STS también permite llamadas a puntos de enlace regionales, como sts.eu-central-1.amazonaws.com. CloudTrail escribe llamadas a todos los puntos de enlace regionales en sus respectivas regiones. Por ejemplo, las llamadas a sts.us-east-2.amazonaws.com se publican en la región EE. UU. Este (Ohio). Las llamadas a sts.eu-central-1.amazonaws.com se publican en los registros de la región Europe (Frankfurt).

Para obtener más información sobre varias regiones y AWS STS, consulte Administración de AWS STS en una región de AWS.

En la siguiente tabla se muestran las regiones y cómo CloudTrail registra las solicitudes de AWS STS en cada región. La columna "Ubicación" indica los registros en los que escribe CloudTrail. "Global" hace referencia al evento registrado en una región en la que desea incluir logs de servicios globales. "Región" hace referencia al evento registrado únicamente en la región donde se encuentra el punto de enlace. La última columna indica cómo se identifica la región de la solicitud en la entrada de log.

Nombre de la región Identidad de región en el registro CloudTrail Punto de enlace Ubicación de los registros de CloudTrail
n/a: global us-east-1 sts.amazonaws.com Global
US East (Ohio) us-east-2 sts.us-east-2.amazonaws.com Región
US East (N. Virginia) us-east-1 sts.us-east-1.amazonaws.com Región
EE. UU. Oeste (Norte de California) us-west-1 sts.us-west-1.amazonaws.com Región
EE. UU. Oeste (Oregon) us-west-2 sts.us-west-2.amazonaws.com Región
Canada (Central) ca-central-1 sts.ca-central-1.amazonaws.com Región
Europe (Frankfurt) eu-central-1 sts.eu-central-1.amazonaws.com Región
Europe (Ireland) eu-west-1 sts.eu-west-1.amazonaws.com Región
Europe (London) eu-west-2 sts.eu-west-2.amazonaws.com Región
Asia Pacífico (Tokio) ap-northeast-1 sts.ap-northeast-1.amazonaws.com Región
Asia Pacífico (Seúl) ap-northeast-2 sts.ap-northeast-2.amazonaws.com Región
Asia Pacífico (Mumbai) ap-south-1 sts.ap-south-1.amazonaws.com Región
Asia Pacífico (Singapur) ap-southeast-1 sts.ap-southeast-1.amazonaws.com Región
Asia Pacífico (Sídney) ap-southeast-2 sts.ap-southeast-2.amazonaws.com Región
South America (São Paulo) sa-east-1 sts.sa-east-1.amazonaws.com Región

Cuando se configura CloudTrail para agregar información de registro de seguimiento de varias regiones de una cuenta a un único bucket de Amazon S3, los eventos de IAM se duplican en los registros. En otras palabras, el registro de seguimiento de cada región escribe el mismo evento de IAM al registro agregado. Para evitar esta duplicación, puede incluir los eventos globales de forma selectiva. Un enfoque típico es habilitar eventos globales en un registro de seguimiento. A continuación, deshabilite los eventos globales en todos los demás registros de seguimiento que escriben en el mismo bucket de Amazon S3. De esta forma solo se escribe un conjunto de eventos globales.

Para obtener más información, consulte Agregado de registros en la Guía del usuario de AWS CloudTrail.

Registro de eventos de inicio de sesión de usuarios

CloudTrail registra los eventos de inicio de sesión en la AWS Management Console, los foros de debate de AWS, y AWS Marketplace. CloudTrail registra los intentos de inicio de sesión correctos y fallidos de usuarios de IAM y usuarios federados.

Para ver ejemplos de eventos de CloudTrail para los inicios de sesión de usuario raíz correctos y fallidos, consulte Ejemplo de registros de eventos para usuarios raíz en la Guía del usuario de AWS CloudTrail.

Como práctica recomendada de seguridad, AWS no registra el texto del nombre de usuario de IAM introducido si el error de inicio de sesión se ha producido por un nombre de usuario incorrecto. El texto del nombre de usuario está enmascarado por el valor HIDDEN_DUE_TO_SECURITY_REASONS. Para obtener un ejemplo, consulte Ejemplo de evento de error de inicio de sesión provocado por un nombre de usuario incorrecto, más adelante en este tema. El texto del nombre de usuario está oculto, ya que estos errores pueden deberse a errores de usuario. El registro de estos errores podría exponer información potencialmente confidencial. Por ejemplo:

  • Se escribe por error una contraseña en el cuadro de nombre de usuario.

  • Se elige el enlace de una página de inicio de sesión de una cuenta de AWS pero se escribe el número de una cuenta diferente.

  • Se olvida la cuenta en la que se ha iniciado sesión y se escribe por error el nombre de una cuenta de correo electrónico personal, un identificador de inicio de sesión en un banco u otro ID privado.

Registro de eventos de inicio de sesión para credenciales temporales

Cuando una entidad principal solicita credenciales temporales, el tipo de entidad principal determina cómo CloudTrail registra el evento. Esto puede ser complicado cuando una entidad principal asume un rol en otra cuenta. Existen varias llamadas a la API para realizar operaciones relacionadas con las operaciones de roles entre cuentas. En primer lugar, la entidad principal llama a una API de AWS STS para recuperar las credenciales temporales. Dicha operación se registra en la cuenta que realiza la llamada y en la cuenta donde se realiza la operación de AWS STS. A continuación, la entidad principal utiliza el rol para realizar otras llamadas a la API en la cuenta del rol asumido.

Puede utilizar la clave de condición de sts:SourceIdentity en la política de confianza de rol para exigir a los usuarios que especifiquen una identidad cuando asuman un rol. Por ejemplo, puede requerir que los usuarios de IAM especifiquen su propio nombre de usuario como su identidad de origen. Esto puede ayudarle a determinar qué usuario realizó una acción específica en AWS. Para obtener más información, consulte sts:SourceIdentity. También puede utilizar sts:RoleSessionName para exigir a los usuarios que especifiquen un nombre de sesión cuando asuman un rol. Esto puede ayudarle a diferenciar entre sesiones de rol para un rol que utilizan diferentes entidades principales cuando revisa los registros de AWS CloudTrail.

En la tabla siguiente se muestra cómo CloudTrail registra distinta información para las llamadas API que generan credenciales temporales.

Tipo de elemento principal API STS Identidad de usuario en el registro de CloudTrail para la cuenta del intermediario Identidad de usuario en el registro de CloudTrail para la cuenta del rol asumido Identidad de usuario en el registro de CloudTrail para llamadas a la API posteriores del rol
Cuenta de AWSCredenciales de usuario raíz de GetSessionToken Identidad de usuario raíz La cuenta propietaria del rol es la misma que la cuenta a la que se llama Identidad de usuario raíz
Usuario de IAM GetSessionToken Identidad de usuario de IAM La cuenta propietaria del rol es la misma que la cuenta a la que se llama Identidad de usuario de IAM
Usuario de IAM GetFederationToken Identidad de usuario de IAM La cuenta propietaria del rol es la misma que la cuenta a la que se llama Identidad de usuario de IAM
Usuario de IAM AssumeRole Identidad de usuario de IAM Número de cuenta e ID principal (si se trata de un usuario) o elemento principal del servicio de AWS Solo identidad de rol (ningún usuario)
Usuario autenticado externamente AssumeRoleWithSAML n/a Identidad de usuario de SAML Solo identidad de rol (ningún usuario)
Usuario autenticado externamente AssumeRoleWithWebIdentity n/a Identidad de usuario web o de OIDC Solo identidad de rol (ningún usuario)

Ejemplo de eventos API de IAM en el registro de CloudTrail

Los archivos de registro de CloudTrail incluyen eventos con formato JSON. Un evento de API representa una solicitud de API única e incluye información sobre la entidad principal, la acción solicitada, los parámetros y la fecha y la hora de la acción.

Ejemplo de evento API de IAM en el archivo de registros de CloudTrail

En el ejemplo siguiente se muestra una entrada de registro de CloudTrail para una solicitud realizada para la acción IAM de GetUserPolicy.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/JaneDoe", "accountId": "444455556666", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "JaneDoe", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-07-15T21:39:40Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-07-15T21:40:14Z", "eventSource": "iam.amazonaws.com", "eventName": "GetUserPolicy", "awsRegion": "us-east-2", "sourceIPAddress": "signin.amazonaws.com", "userAgent": "signin.amazonaws.com", "requestParameters": { "userName": "JaneDoe", "policyName": "ReadOnlyAccess-JaneDoe-201407151307" }, "responseElements": null, "requestID": "9EXAMPLE-0c68-11e4-a24e-d5e16EXAMPLE", "eventID": "cEXAMPLE-127e-4632-980d-505a4EXAMPLE" }

A partir de la información de este evento, puede determinar que la solicitud se realizó para obtener una política de usuario denominada ReadOnlyAccess-JaneDoe-201407151307 para el usuario JaneDoe, tal y como se especifica en el elemento requestParameters. También puede ver que la solicitud fue realizada por un usuario de IAM denominado JaneDoe el 15 de julio de 2014 a las 21:40 h (UTC). En este caso, la solicitud se originó en la AWS Management Console, tal y como puede observar en el elemento userAgent.

Ejemplo de evento API de AWS STS en el archivo de registros de CloudTrail

Los archivos de registro de CloudTrail incluyen eventos con formato JSON. Un evento de API representa una solicitud de API única e incluye información sobre la entidad principal, la acción solicitada, los parámetros y la fecha y la hora de la acción.

Ejemplo de eventos de API AWS STS entre cuentas en archivos de registro de CloudTrail

El usuario de IAM llamado JohnDoe en la cuenta 777788889999 llama a la acción AWS STS AssumeRole para asumir el rol EC2-dev en la cuenta 111122223333. El administrador de cuenta requiere que los usuarios establezcan una identidad de origen igual a su nombre de usuario cuando asuman el rol. El usuario pasa el valor de identidad de origen de JohnDoe.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "arn": "arn:aws:iam::777788889999:user/JohnDoe", "accountId": "777788889999", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "userName": "JohnDoe" }, "eventTime": "2014-07-18T15:07:39Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67", "requestParameters": { "roleArn": "arn:aws:iam::111122223333:role/EC2-dev", "roleSessionName": "JohnDoe-EC2-dev", "sourceIdentity": "JohnDoe", "serialNumber": "arn:aws:iam::777788889999:mfa" }, "responseElements": { "credentials": { "sessionToken": "<encoded session token blob>", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "expiration": "Jul 18, 2014 4:07:39 PM" }, "assumedRoleUser": { "assumedRoleId": "AIDAQRSTUVWXYZEXAMPLE:JohnDoe-EC2-dev", "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/JohnDoe-EC2-dev" }, "sourceIdentity": "JohnDoe" }, "resources": [ { "ARN": "arn:aws:iam::111122223333:role/EC2-dev", "accountId": "111122223333", "type": "AWS::IAM::Role" } ], "requestID": "4EXAMPLE-0e8d-11e4-96e4-e55c0EXAMPLE", "sharedEventID": "bEXAMPLE-efea-4a70-b951-19a88EXAMPLE", "eventID": "dEXAMPLE-ac7f-466c-a608-4ac8dEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }

En el segundo ejemplo se muestra la entrada de registro de CloudTrail (111122223333) de la cuenta del rol asumido para la misma solicitud.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "accountId": "777788889999" }, "eventTime": "2014-07-18T15:07:39Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67", "requestParameters": { "roleArn": "arn:aws:iam:: 111122223333:role/EC2-dev", "roleSessionName": "JohnDoe-EC2-dev", "sourceIdentity": "JohnDoe", "serialNumber": "arn:aws:iam::777788889999:mfa" }, "responseElements": { "credentials": { "sessionToken": "<encoded session token blob>", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "expiration": "Jul 18, 2014 4:07:39 PM" }, "assumedRoleUser": { "assumedRoleId": "AIDAQRSTUVWXYZEXAMPLE:JohnDoe-EC2-dev", "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/JohnDoe-EC2-dev" }, "sourceIdentity": "JohnDoe" }, "requestID": "4EXAMPLE-0e8d-11e4-96e4-e55c0EXAMPLE", "sharedEventID": "bEXAMPLE-efea-4a70-b951-19a88EXAMPLE", "eventID": "dEXAMPLE-ac7f-466c-a608-4ac8dEXAMPLE" }

Ejemplo de evento de API de encadenamiento de roles AWS STS en el archivo de registro de CloudTrail

En el ejemplo siguiente se muestra una entrada de registro CloudTrail para una solicitud realizada por John Doe en la cuenta 111111111111. John utilizó previamente su usuario JohnDoe para asumir el rol JohnRole1. Para esta solicitud, utiliza las credenciales de ese rol para asumir el rol JohnRole2. Esto se conoce como encadenamiento de roles. La identidad de origen que estableció cuando asumió el rol JohnDoe1 persiste en la solicitud de asumir JohnRole2. Si John intenta establecer una identidad de origen diferente al asumir el rol, se deniega la solicitud. John pasa dos etiquetas de sesión en la solicitud. Establece esas dos etiquetas como transitivas. La solicitud hereda la etiqueta Department como transitiva porque John la estableció como transitiva cuando asumió JohnRole1. Para obtener más información acerca de las identidades de fuente, consulte Monitorear y controlar las acciones realizadas con roles asumidos. Para obtener más información acerca de las claves transitivas en las cadenas de roles, consulte Encadenamiento de roles con etiquetas de sesión.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIN5ATK5U7KEXAMPLE:JohnRole1", "arn": "arn:aws:sts::111111111111:assumed-role/JohnDoe/JohnRole1", "accountId": "111111111111", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-10-02T21:50:54Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIN5ATK5U7KEXAMPLE", "arn": "arn:aws:iam::111111111111:role/JohnRole1", "accountId": "111111111111", "userName": "JohnDoe" }, "sourceIdentity": "JohnDoe" } }, "eventTime": "2019-10-02T22:12:29Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "123.145.67.89", "userAgent": "aws-cli/1.16.248 Python/3.4.7 Linux/4.9.184-0.1.ac.235.83.329.metal1.x86_64 botocore/1.12.239", "requestParameters": { "incomingTransitiveTags": { "Department": "Engineering" }, "tags": [ { "value": "johndoe@example.com", "key": "Email" }, { "value": "12345", "key": "CostCenter" } ], "roleArn": "arn:aws:iam::111111111111:role/JohnRole2", "roleSessionName": "Role2WithTags", "sourceIdentity": "JohnDoe", "transitiveTagKeys": [ "Email", "CostCenter" ], "durationSeconds": 3600 }, "responseElements": { "credentials": { "accessKeyId": "ASIAWHOJDLGPOEXAMPLE", "expiration": "Oct 2, 2019 11:12:29 PM", "sessionToken": "AgoJb3JpZ2luX2VjEB4aCXVzLXdlc3QtMSJHMEXAMPLETOKEN+//rJb8Lo30mFc5MlhFCEbubZvEj0wHB/mDMwIgSEe9gk/Zjr09tZV7F1HDTMhmEXAMPLETOKEN/iEJ/rkqngII9///////////ARABGgw0MjgzMDc4NjM5NjYiDLZjZFKwP4qxQG5sFCryASO4UPz5qE97wPPH1eLMvs7CgSDBSWfonmRTCfokm2FN1+hWUdQQH6adjbbrVLFL8c3jSsBhQ383AvxpwK5YRuDE1AI/+C+WKFZb701eiv9J5La2EXAMPLETOKEN/c7S5Iro1WUJ0q3Cxuo/8HUoSxVhQHM7zF7mWWLhXLEQ52ivL+F6q5dpXu4aTFedpMfnJa8JtkWwG9x1Axj0Ypy2ok8v5unpQGWych1vwdvj6ez1Dm8Xg1+qIzXILiEXAMPLETOKEN/vQGqu8H+nxp3kabcrtOvTFTvxX6vsc8OGwUfHhzAfYGEXAMPLETOKEN/L6v1yMM3B1OwFOrQBno1HEjf1oNI8RnQiMNFdUOtwYj7HUZIOCZmjfN8PPHq77N7GJl9lzvIZKQA0Owcjg+mc78zHCj8y0siY8C96paEXAMPLETOKEN/E3cpksxWdgs91HRzJWScjN2+r2LTGjYhyPqcmFzzo2mCE7mBNEXAMPLETOKEN/oJy+2o83YNW5tOiDmczgDzJZ4UKR84yGYOMfSnF4XcEJrDgAJ3OJFwmTcTQICAlSwLEXAMPLETOKEN" }, "assumedRoleUser": { "assumedRoleId": "AROAIFR7WHDTSOYQYHFUE:Role2WithTags", "arn": "arn:aws:sts::111111111111:assumed-role/test-role/Role2WithTags" }, "sourceIdentity": "JohnDoe" }, "requestID": "b96b0e4e-e561-11e9-8b3f-7b396EXAMPLE", "eventID": "1917948f-3042-46ec-98e2-62865EXAMPLE", "resources": [ { "ARN": "arn:aws:iam::111111111111:role/JohnRole2", "accountId": "111111111111", "type": "AWS::IAM::Role" } ], "eventType": "AwsApiCall", "recipientAccountId": "111111111111" }

Ejemplo de evento de API AWS STS de servicio de AWS en un archivo de registro de CloudTrail

En el siguiente ejemplo se muestra una entrada de registro de CloudTrail para una solicitud realizada por un servicio de AWS que llama otra API de servicio con los permisos de una función de servicio. Muestra la entrada de registro de CloudTrail de la solicitud realizada en la cuenta 777788889999.

{ "eventVersion": "1.04", "userIdentity": { "type": "AssumedRole", "principalId": "AIDAQRSTUVWXYZEXAMPLE:devdsk", "arn": "arn:aws:sts::777788889999:assumed-role/AssumeNothing/devdsk", "accountId": "777788889999", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2016-11-14T17:25:26Z" }, "sessionIssuer": { "type": "Role", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "arn": "arn:aws:iam::777788889999:role/AssumeNothing", "accountId": "777788889999", "userName": "AssumeNothing" } } }, "eventTime": "2016-11-14T17:25:45Z", "eventSource": "s3.amazonaws.com", "eventName": "DeleteBucket", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.1", "userAgent": "[aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67]", "requestParameters": { "bucketName": "my-test-bucket-cross-account" }, "responseElements": null, "requestID": "EXAMPLE463D56D4C", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "777788889999" }

Ejemplo de evento API de AWS STS SAML en el archivo de registros de CloudTrail

En el ejemplo siguiente se muestra una entrada de registro de CloudTrail para una solicitud realizada para la acción AWS STSde AssumeRoleWithSAML. La solicitud incluye los atributos de SAML CostCenter y Project que se pasan a través de la aserción SAML como etiquetas de sesión. Esas etiquetas se establecen como transitivas para que persistan en escenarios de encadenamiento de roles. La solicitud incluye el atributo SAML sourceIdentity, que se pasa en la aserción SAML. Si alguien utiliza las credenciales de sesión de rol resultantes para asumir otro rol, esta identidad de origen persiste.

{ "eventVersion": "1.05", "userIdentity": { "type": "SAMLUser", "principalId": "SampleUkh1i4+ExamplexL/jEvs=:SamlExample", "userName": "SamlExample", "identityProvider": "bdGOnTesti4+ExamplexL/jEvs=" }, "eventTime": "2019-11-01T19:14:36Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithSAML", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.16.263 Python/3.4.7 Linux/4.9.184-0.1.ac.235.83.329.metal1.x86_64 botocore/1.12.253", "requestParameters": { "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE", "roleSessionName": "MyAssignedRoleSessionName", "sourceIdentity": "MySAMLUser", "principalTags": { "CostCenter": "987654", "Project": "Unicorn", "Department": "Engineering" }, "transitiveTagKeys": [ "CostCenter", "Project" ], "durationSeconds": 3600, "roleArn": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth", "principalArn": "arn:aws:iam::444455556666:saml-provider/Shibboleth" }, "responseElements": { "subjectType": "transient", "issuer": "https://server.example.com/idp/shibboleth", "sourceIdentity": "MySAMLUser" "credentials": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "expiration": "Mar 23, 2016 2:39:57 AM", "sessionToken": "<encoded session token blob>" }, "nameQualifier": "bdGOnTesti4+ExamplexL/jEvs=", "assumedRoleUser": { "assumedRoleId": "AROAD35QRSTUVWEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/SAMLTestRoleShibboleth/MyAssignedRoleSessionName" }, "subject": "SamlExample", "audience": "https://signin.aws.amazon.com/saml" }, "resources": [ { "ARN": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth", "accountId": "444455556666", "type": "AWS::IAM::Role" }, { "ARN": "arn:aws:iam::444455556666:saml-provider/test-saml-provider", "accountId": "444455556666", "type": "AWS::IAM::SAMLProvider" } ], "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "444455556666" }

Ejemplo de evento de API AWS STS de identidad web en un archivo de registro de CloudTrail

En el ejemplo siguiente se muestra una entrada de registro de CloudTrail para una solicitud realizada para la acción AWS STSde AssumeRoleWithWebIdentity. La solicitud incluye los atributos CostCenter y Project que se pasan a través del token de proveedor de identidad como etiquetas de sesión. Esas etiquetas se establecen como transitivas para que persistan en encadenamiento de roles. La solicitud incluye el atributo sourceIdentity del token del proveedor de identidades. Si alguien utiliza las credenciales de sesión de rol resultantes para asumir otro rol, esta identidad de origen persiste.

{ "eventVersion": "1.05", "userIdentity": { "type": "WebIdentityUser", "principalId": "accounts.google.com:<id-of-application>.apps.googleusercontent.com:<id-of-user>", "userName": "<id of user>", "identityProvider": "accounts.google.com" }, "eventTime": "2016-03-23T01:39:51Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithWebIdentity", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.3.23 Python/2.7.6 Linux/2.6.18-164.el5", "requestParameters": { "sourceIdentity": "MyWebIdentityUser", "durationSeconds": 3600, "roleArn": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "roleSessionName": "MyAssignedRoleSessionName" "principalTags": { "CostCenter": "24680", "Project": "Pegasus" }, "transitiveTagKeys": [ "CostCenter", "Project" ], }, "responseElements": { "provider": "accounts.google.com", "subjectFromWebIdentityToken": "<id of user>", "sourceIdentity": "MyWebIdentityUser", "audience": "<id of application>.apps.googleusercontent.com", "credentials": { "accessKeyId": "ASIACQRSTUVWRAOEXAMPLE", "expiration": "Mar 23, 2016 2:39:51 AM", "sessionToken": "<encoded session token blob>" }, "assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/FederatedWebIdentityRole/MyAssignedRoleSessionName" } }, "resources": [ { "ARN": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "accountId": "444455556666", "type": "AWS::IAM::Role" } ], "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "bEXAMPLE-0b30-4246-b28c-e3da3EXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "444455556666" }

Ejemplo de eventos de inicio de sesión en el registro de CloudTrail

Los archivos de registro de CloudTrail incluyen eventos con formato JSON. Un evento de inicio de sesión representa una única solicitud de inicio de sesión e incluye información sobre el principal de inicio de sesión, la región y la fecha y la hora de la acción.

Ejemplo de evento de inicio de sesión correcto en un archivo de registro de CloudTrail

En el ejemplo siguiente se muestra una entrada de registro de CloudTrail para un evento de inicio de sesión correcto.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::111122223333:user/JohnDoe", "accountId": "111122223333", "userName": "JohnDoe" }, "eventTime": "2014-07-16T15:49:27Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.110", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": null, "responseElements": { "ConsoleLogin": "Success" }, "additionalEventData": { "MobileVersion": "No", "LoginTo": "https://console.aws.amazon.com/s3/", "MFAUsed": "No" }, "eventID": "3fcfb182-98f8-4744-bd45-10a395ab61cb" }

Para obtener más información sobre la información incluida en los archivos de sesión de CloudTrail, consulte Referencia de eventos de CloudTrail en la Guía del usuario de AWS CloudTrail.

Ejemplo de evento de error de inicio de sesión en un archivo de registro de CloudTrail

En el ejemplo siguiente se muestra una entrada de registro de CloudTrail para un evento de inicio de sesión incorrecto.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::111122223333:user/JaneDoe", "accountId": "111122223333", "userName": "JaneDoe" }, "eventTime": "2014-07-08T17:35:27Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.100", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "errorMessage": "Failed authentication", "requestParameters": null, "responseElements": { "ConsoleLogin": "Failure" }, "additionalEventData": { "MobileVersion": "No", "LoginTo": "https://console.aws.amazon.com/sns", "MFAUsed": "No" }, "eventID": "11ea990b-4678-4bcd-8fbe-62509088b7cf" }

A partir de esta información, puede determinar que el intento de inicio de sesión fue realizado por un usuario de IAM denominado JaneDoe, tal y como se muestra en el elemento userIdentity. También puede ver que se ha producido un error en el intento de inicio de sesión, tal y como se muestra en el elemento responseElements. Puede ver que JaneDoe intentó iniciar sesión en la consola de Amazon SNS el 8 de julio de 2014 a las 17:35 h (UTC).

Ejemplo de evento de error de inicio de sesión provocado por un nombre de usuario incorrecto

En el siguiente ejemplo se muestra una entrada de registro de CloudTrail para un evento de inicio de sesión incorrecto que el usuario ha provocado al introducir un nombre de usuario incorrecto. AWS enmascara el texto de userName con HIDDEN_DUE_TO_SECURITY_REASONS para evitar la revelación de información potencialmente confidencial.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "accountId": "123456789012", "accessKeyId": "", "userName": "HIDDEN_DUE_TO_SECURITY_REASONS" }, "eventTime": "2015-03-31T22:20:42Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "errorMessage": "No username found in supplied account", "requestParameters": null, "responseElements": { "ConsoleLogin": "Failure" }, "additionalEventData": { "LoginTo": "https://console.aws.amazon.com/console/home?state=hashArgs%23&isauthcode=true", "MobileVersion": "No", "MFAUsed": "No" }, "eventID": "a7654656-0417-45c6-9386-ea8231385051", "eventType": "AwsConsoleSignin", "recipientAccountId": "123456789012" }