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

Registro de llamadas a IAM y a la API de AWS STS 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 en la consola de CloudTrail en el 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 más información sobre 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 se crea la cuenta. 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 eventos recientes en su Cuenta de AWS. Para obtener más información, consulte Ver eventos con el historial de eventos de CloudTrail.

Para mantener un registro continuo de los eventos de la cuenta de 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 manera predeterminada, cuando crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones. 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 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. Sin embargo, es posible que algunas solicitudes de AWS STS no autenticadas no se registren porque no cumplen con la expectativa mínima de ser lo suficientemente válidas como para considerarlas solicitudes legítimas.

Puede usar la información registrada 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.

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 permite determinar si la solicitud se hizo mediante el Usuario raíz de la 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 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.

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

  • 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 siguiente tabla se muestra cómo CloudTrail registra información de identidad de usuarios diferente para cada una de las API de AWS STS que generan credenciales temporales.

Tipo de elemento principal API de 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
Credenciales de Usuario raíz de la cuenta de AWS GetSessionToken Identidad de usuario raíz La cuenta propietaria del rol es la misma cuenta que realiza la llamada Identidad de usuario raíz
Usuario de IAM GetSessionToken Identidad de usuario de IAM La cuenta propietaria del rol es la misma cuenta que realiza la llamada Identidad de usuario de IAM
Usuario de IAM GetFederationToken Identidad de usuario de IAM La cuenta propietaria del rol es la misma cuenta que realiza la llamada 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)

CloudTrail considera que una acción es de solo lectura si no tiene ningún efecto de cambio en un recurso. Al registrar un evento de solo lectura, CloudTrail omite la información de los responseElements en el registro. Cuando CloudTrail registra un evento que no es de solo lectura, muestra los responseElements completos en la entrada del registro. Sin embargo, para las API AssumeRole, AssumeRoleWithSAML y AssumeRoleWithWebIdentity de AWS STS aunque se registren como de solo lectura, CloudTrail incluirá los responseElements completos en el registro para estas API.

En la siguiente tabla se muestra cómo CloudTrail registra la información de responseElements y readOnly para cada una de las API de AWS STS que generan credenciales temporales.

API de STS Información de elementos de respuesta Solo lectura
AssumeRole Incluido true
AssumeRoleWithSAML Incluido true
AssumeRoleWithWebIdentity Incluido true
GetFederationToken Incluido false
GetSessionToken Incluido false

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, cualquier parámetro 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, cualquier parámetro 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": "AKIAIOSFODNN7EXAMPLE", "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": "ASIAI44QH8DHBEXAMPLE", "expiration": "Jul 18, 2023, 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": "ASIAI44QH8DHBEXAMPLE", "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": "ASIAIOSFODNN7EXAMPLE", "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": "ASIAI44QH8DHBEXAMPLE", "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": "AROAQRSTUVWXYZEXAMPLE:devdsk", "arn": "arn:aws:sts::777788889999:assumed-role/AssumeNothing/devdsk", "accountId": "777788889999", "accessKeyId": "ASIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2016-11-14T17:25:26Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAQRSTUVWXYZEXAMPLE", "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 parámetro de API opcional DurationSeconds, representado como durationSeconds en el registro de CloudTrail, y configurado en 1800 segundos. La solicitud también 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.08", "userIdentity": { "type": "SAMLUser", "principalId": "SampleUkh1i4+ExamplexL/jEvs=:SamlExample", "userName": "SamlExample", "identityProvider": "bdGOnTesti4+ExamplexL/jEvs=" }, "eventTime": "2023-08-28T18:30:58Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithSAML", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "aws-internal/3 aws-sdk-java/1.12.479 Linux/5.10.186-157.751.amzn2int.x86_64 OpenJDK_64-Bit_Server_VM/17.0.7+11 java/17.0.7 kotlin/1.3.72 vendor/Amazon.com_Inc. cfg/retry-mode/standard", "requestParameters": { "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE", "roleSessionName": "MyAssignedRoleSessionName", "sourceIdentity": "MySAMLUser", "principalTags": { "CostCenter": "987654", "Project": "Unicorn", "Department": "Engineering" }, "transitiveTagKeys": [ "CostCenter", "Project" ], "roleArn": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth", "principalArn": "arn:aws:iam::444455556666:saml-provider/Shibboleth", "durationSeconds": 1800 }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionToken": "<encoded session token blob>", "expiration": "Aug 28, 2023, 7:00:58 PM" }, "assumedRoleUser": { "assumedRoleId": "AROAD35QRSTUVWEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/SAMLTestRoleShibboleth/MyAssignedRoleSessionName" }, "packedPolicySize": 1, "subject": "SamlExample", "subjectType": "transient", "issuer": "https://server.example.com/idp/shibboleth", "audience": "https://signin.aws.amazon.com/saml", "nameQualifier": "bdGOnTesti4+ExamplexL/jEvs=", "sourceIdentity": "MySAMLUser" }, "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "readOnly": true, "resources": [ { "accountId": "444455556666", "type": "AWS::IAM::Role", "ARN": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth" }, { "accountId": "444455556666", "type": "AWS::IAM::SAMLProvider", "ARN": "arn:aws:iam::444455556666:saml-provider/test-saml-provider" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "444455556666", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.2", "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256", "clientProvidedHostHeader": "sts.us-east-2.amazonaws.com" } }

Ejemplo de evento de OIDC de AWS STS API 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 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": "ASIAIOSFODNN7EXAMPLE", "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" }

Política de confianza del rol de IAM

El 21 de septiembre de 2022, AWS introdujo cambios en el comportamiento de la política de confianza de roles de la IAM para exigir que se permita explícitamente incluir en una política de confianza de roles cuando un rol se asume a sí mismo. Los roles de IAM de la lista heredada de comportamientos permitidos tienen un campo de additionalEventData para explicitTrustGrant para eventos AssumeRole. El valor de explicitTrustGrant es falso cuando un rol de la lista heredada de permitidos asume que utiliza el comportamiento heredado. Cuando un rol de la lista heredada de roles permitidos se asume a sí mismo, pero el comportamiento de la política de confianza del rol se actualizó para permitir explícitamente que el rol se asuma por sí mismo, el valor de explicitTrustGrant es verdadero.

Solo un número muy reducido de funciones de IAM figuran en la lista de funciones permitidas para el comportamiento heredado y este campo solo está presente en los registros de CloudTrail de estas funciones cuando se asumen por sí mismas. En la mayoría de los casos, no es necesario que un rol de IAM se asuma a sí mismo. AWS recomienda actualizar los procesos, los códigos o las configuraciones para eliminar este comportamiento o actualizar las políticas de confianza de rol para permitir este comportamiento explícitamente. Para más información, consulte Anuncio de una actualización del comportamiento de la política de confianza en los roles de IAM.