Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail - AWS Identity and Access Management

Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail

O IAM e o AWS STS são integrados ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário ou uma função do IAM. O CloudTrail captura todas as chamadas de API do IAM e do AWS STS como eventos, incluindo chamadas do console e de chamadas de API. Se você criar uma trilha, poderá habilitar a entrega contínua de eventos do CloudTrail para um bucket do Amazon S3. Se você não configurar uma trilha, ainda poderá visualizar os eventos mais recentes no console do CloudTrail em Histórico de eventos. Você pode usar o CloudTrail para obter informações sobre a solicitação que foi feita ao IAM ou ao AWS STS. Por exemplo, você pode visualizar o endereço IP de origem do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita e detalhes adicionais.

Para saber mais sobre o CloudTrail, consulte o Guia do usuário do AWS CloudTrail.

Informações do IAM e do AWS STS no CloudTrail

O CloudTrail é habilitado em sua Conta da AWS quando ela é criada. Quando ocorre uma atividade no IAM ou no AWS STS, essa atividade é registrada em um evento do CloudTrail junto com outros eventos de produtos da AWS em Event history (Histórico de eventos). Você pode exibir, pesquisar e baixar eventos recentes em sua Conta da AWS. Para obter mais informações, consulte Visualizar eventos com o histórico de eventos do CloudTrail.

Para obter um registro contínuo de eventos na sua Conta da AWS, incluindo eventos do IAM e do AWS STS, crie uma trilha. Uma trilha permite que o CloudTrail entregue arquivos de log a um bucket Amazon S3. Por padrão, quando você cria uma trilha no console, ela é aplicada a todas as Regiões da . A trilha registra em log eventos de todas as Regiões na partição da AWS e entrega os arquivos de log para o bucket do Amazon S3 especificado por você. Além disso, é possível configurar outros serviços da AWS para analisar mais ainda mais e agir com base nos dados de eventos coletados nos logs do CloudTrail. Para obter mais informações, consulte:

Todas as ações do IAM e do AWS STS são registradas pelo CloudTrail e documentadas na Referência da API do IAM e na Referência da API do AWS Security Token Service.

Registrar em log solicitações de API do IAM e do AWS STS

O CloudTrail registra todas as solicitações de API autenticadas (feitas com credenciais) para o IAM e operações de API do AWS STS. O CloudTrail também registra solicitações não autenticadas para as ações do AWS STS, AssumeRoleWithSAML e AssumeRoleWithWebIdentity e registra informações fornecidas pelo provedor de identidade. Você pode usar essas informações para mapear chamadas feitas por um usuário federado com uma função assumida de volta para o chamador federado externo de origem. No caso de AssumeRole, você pode mapear as chamadas de retorno feitas ao serviço AWS de origem ou à conta do usuário-fonte. A seção userIdentity dos dados JSON no registro em log do CloudTrail contém as informações de que você precisa para mapear a solicitação AssumeRole* com um determinado usuário federado. Para obter mais informações, consulte o Elemento userIdentity do CloudTrail no Guia do usuário do AWS CloudTrail.

Por exemplo, as chamadas para o IAM CreateUser, DeleteRole, ListGroups e outras operações de API são todas registradas pelo CloudTrail.

Exemplos desse tipo de entrada de log são apresentados mais adiante neste tópico.

Registrar em log solicitações de API em outros serviços da AWS

Solicitações autenticadas a outras operações de API de produtos da AWS são registradas em log pelo CloudTrail, e esses regisros em log contêm informações sobre quem gerou a solicitação.

Por exemplo, suponha que você tenha feito uma solicitação para listar instâncias do Amazon EC2 ou para criar um grupo de implantação do AWS CodeDeploy. Há detalhes sobre a pessoa ou o serviço que fez a solicitação na entrada de log da solicitação. Essas informações ajudam a determinar se a solicitação foi feita pelo Usuário raiz da conta da AWS, por um usuário do IAM, por um perfil ou por outro serviço da AWS.

Para obter mais detalhes sobre as informações de identidade do usuário nos registros em log do CloudTrail, consulte o elemento userIdentity no Guia do usuário do AWS CloudTrail.

Registrar em log eventos de login de usuário

O CloudTrail registra eventos de login no AWS Management Console, nos fóruns de discussão da AWS e no AWS Marketplace. O CloudTrail registra tentativas de login bem-sucedidas e malsucedidas para usuários e usuários federados do IAM.

Para visualizar exemplos de eventos do CloudTrail para logins de usuário raiz bem-sucedidos e malsucedidos, consulte Exemplo de registros de eventos de usuários raiz no Guia do usuário do AWS CloudTrail.

Como prática recomendada de segurança, a AWS não registra em log o texto do nome de usuário do IAM inserido quando a falha de login é causada por um nome de usuário incorreto. O texto do nome do usuário é mascarado pelo valor HIDDEN_DUE_TO_SECURITY_REASONS. Para obter um exemplo disso, consulte Exemplo de evento de falha no login causado por nome de usuário incorreto mais adiante neste tópico. O texto do nome do usuário é obscurecido porque essas falhas talvez foram causadas por erros do usuário. Registrar em log esses erros pode expor informações confidenciais. Por exemplo:

  • Você digita acidentalmente sua senha na caixa de nome do usuário.

  • Você escolhe o link da página de login de uma Conta da AWS, mas digita o número de outra Conta da AWS.

  • Você se esquece da conta na qual está fazendo login e acidentalmente digita o nome da sua conta de e-mail pessoal, o identificador de login de seu banco ou algum outro ID privado.

Registrar em log eventos de login de credenciais temporárias

Quando uma entidade de segurança solicita credenciais temporárias, o tipo de entidade de segurança determina como o CloudTrail registra o evento. Isso pode ser complicado quando um principal assume uma função em outra conta. Há várias chamadas de API para executar operações relacionadas a operações entre contas da função. Primeiro, o principal chama uma API do AWS STS para recuperar as credenciais temporárias. Essa operação está registrada na conta da chamada e na conta onde a operação do AWS STS é realizada. Depois disso, o principal usa a função para executar outras chamadas de API na conta da função assumida.

Você pode usar a chave de condição sts:SourceIdentity na política de confiança da função para exigir que os usuários especifiquem uma identidade quando assumirem uma função. Por exemplo, você pode exigir que os usuários do IAM especifiquem seu próprio nome de usuário como a identidade-fonte. Isso pode ajudar você a determinar qual usuário executou uma ação específica na AWS. Para ter mais informações, consulte sts:SourceIdentity. Você também pode usar sts:RoleSessionName para exigir que os usuários especifiquem um nome de sessão quando assumirem uma função. Isso pode ajudar você a diferenciar entre as sessões de função para uma função que é usada por diferentes entidades de segurança ao revisar os logs AWS CloudTrail.

A tabela a seguir mostra como o CloudTrail registra informações diferentes de identidade de usuário para cada uma das APIs AWS STS que geram credenciais temporárias.

Tipo da entidade principal API DO STS Identidade do usuário no log do CloudTrail da conta do chamador Identidade do usuário no log do CloudTrail da conta da função assumida Identidade do usuário no log do CloudTrail das chamadas de API subsequentes da função
Credenciais do Usuário raiz da conta da AWS GetSessionToken Identidade do usuário raiz A conta do proprietário da função é a mesma que a conta de chamada Identidade do usuário raiz
IAM user (Usuário do IAM) GetSessionToken Identidade do usuário do IAM A conta do proprietário da função é a mesma que a conta de chamada Identidade do usuário do IAM
IAM user (Usuário do IAM) GetFederationToken Identidade do usuário do IAM A conta do proprietário da função é a mesma que a conta de chamada Identidade do usuário do IAM
IAM user (Usuário do IAM) AssumeRole Identidade do usuário do IAM Número da conta e ID principal (se for um usuário) ou serviço principal da AWS Somente identidade da função (nenhum usuário)
Usuário autenticado externamente AssumeRoleWithSAML n/a Identidade do usuário do SAML Somente identidade da função (nenhum usuário)
Usuário autenticado externamente AssumeRoleWithWebIdentity n/a Identidade do usuário da web/OIDC Somente identidade da função (nenhum usuário)

O CloudTrail considera uma ação somente leitura se ela não tiver nenhum efeito mutante em um recurso. Ao registrar um evento somente leitura, o CloudTrail edita as informações do responseElements no log. Quando o CloudTrail registra um evento que não é somente leitura, o responseElements completo é mostrado na entrada do log. No entanto, para as APIs AWS STS AssumeRole, AssumeRoleWithSAML e AssumeRoleWithWebIdentity, mesmo que estejam registradas como somente leitura, o CloudTrail incluirá o responseElements completo no log dessas APIs.

A tabela a seguir mostra como o CloudTrail registra responseElements e informações readOnly para cada uma das APIs AWS STS que geram credenciais temporárias.

API DO STS Informações dos elementos de resposta Somente leitura
AssumeRole Incluído verdadeiro
AssumeRoleWithSAML Incluído verdadeiro
AssumeRoleWithWebIdentity Incluído verdadeiro
GetFederationToken Incluído false
GetSessionToken Incluído false

Exemplo de eventos de API do IAM no log do CloudTrail

Os arquivos de log do CloudTrail contêm eventos que são formatados com JSON. Um evento de API representa uma única solicitação de API e inclui informações sobre o principal, a ação solicitada, quaisquer parâmetros e a data e hora da ação.

Exemplo de evento de API do IAM no arquivo de log do CloudTrail

O exemplo a seguir mostra um registro em log do CloudTrail para uma solicitação pela ação GetUserPolicy do IAM.

{ "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 dessas informações de evento, você pode determinar se a solicitação foi feita para obter uma política de usuário denominada ReadOnlyAccess-JaneDoe-201407151307 para o usuário JaneDoe, como especificado no elemento requestParameters. Você também pode ver que a solicitação foi feita por uma usuária do IAM chamada JaneDoe em 15 de julho de 2014, às 21h40 (UTC). Nesse caso, a solicitação foi originada no AWS Management Console, como você pode observar no elemento userAgent.

Exemplo de eventos de API do AWS STS no log do CloudTrail

Os arquivos de log do CloudTrail contêm eventos que são formatados com JSON. Um evento de API representa uma única solicitação de API e inclui informações sobre o principal, a ação solicitada, quaisquer parâmetros e a data e hora da ação.

Exemplo de eventos de API do AWS STS entre contas em arquivos de log do CloudTrail

O usuário do IAM chamado JohnDoe na conta 777788889999 chama a ação AssumeRole do AWS STS para assumir a função EC2-dev na conta 111122223333. O administrador da conta exige que os usuários definam uma identidade-fonte igual ao nome de usuário ao assumir a função. O usuário informa o valor de identidade-fonte 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" }

O segundo exemplo mostra o registro em log do CloudTrail da conta da função assumida (111122223333) para a mesma solicitação.

{ "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" }

Exemplo de evento de API de encadeamento de funções do AWS STS no arquivo de log do CloudTrail

O exemplo a seguir mostra um registro em log do CloudTrail para uma solicitação feita por John Doe na conta 111111111111. John usou anteriormente seu usuário JohnDoe para assumir a função JohnRole1. Para essa solicitação, ele usa as credenciais dessa função para assumir a função JohnRole2. Isso é conhecido como encadeamento de funções. A identidade-fonte que ele definiu quando assumiu a função JohnDoe1 persiste na solicitação para assumir JohnRole2. Se John tentar definir uma identidade-fonte diferente ao assumir a função, a solicitação será negada. John passa duas tags de sessão para a solicitação. Ele define essas duas tags como transitivas. A solicitação herda a tag Department como transitiva porque John a definiu como transitiva quando ele assumiu JohnRole1. Para obter mais informações sobre identidade-fonte, consulte Monitorar e controlar ações realizadas com funções assumidas. Para obter mais informações sobre chaves transitivas em cadeias de funções, consulte Encadeamento de funções com tags de sessão.

{ "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" }

Exemplo de evento de API do AWS STS de produto da AWS no arquivo de log do CloudTrail

O exemplo a seguir mostra um registro em log do CloudTrail para uma solicitação feita por um produto da AWS que chama outra API de serviço que usa as permissões de uma função de serviço. Ele mostra o registro em log do CloudTrail para a solicitação feita na conta 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" }

Exemplo de evento de API SAML do AWS STS no arquivo de log do CloudTrail

O exemplo a seguir mostra um registro de log do CloudTrail para uma solicitação pela ação AssumeRoleWithSAML do AWS STS. A solicitação inclui os atributos SAML CostCenter e Project que são passados por meio da declaração do SAML como tags de sessão. Essas tags são definidas como transitivas para que persistam em cenários de encadeamento de funções. A solicitação inclui o parâmetro DurationSeconds opcional da API, que é representado como durationSeconds no log do CloudTrail e é definido como 1800 segundos. A solicitação também inclui o atributo SAML sourceIdentity, que é passado na declaração SAML. Se alguém usar as credenciais de sessão de função resultantes para assumir outra função, essa identidade-fonte persistirá.

{ "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" } }

Exemplo de evento da API AWS STS do OIDC no arquivo de log do CloudTrail

O exemplo a seguir mostra um registro de log do CloudTrail para uma solicitação pela ação AssumeRoleWithWebIdentity do AWS STS. A solicitação inclui os atributos CostCenter e Project que são passados por meio do token de provedor de identidade como tags de sessão. Essas etiquetas são definidas como transitivas para que persistam em caso de encadeamento de funções. A solicitação inclui o atributo sourceIdentity do token do provedor de identidade. Se alguém usar as credenciais de sessão de função resultantes para assumir outra função, essa identidade-fonte persistirá.

{ "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" }

Exemplo de eventos de login no log do CloudTrail

Os arquivos de log do CloudTrail contêm eventos que são formatados com JSON. Um evento de login representa uma única solicitação de login e inclui informações sobre o principal de login, a região e a data e hora da ação.

Exemplo de evento de login bem-sucedido no arquivo de log do CloudTrail

O exemplo a seguir mostra um registro em log do CloudTrail para um evento de login bem-sucedido.

{ "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 obter mais detalhes sobre as informações contidas nos arquivos de log do CloudTrail, consulte Referência de evento do CloudTrail no Guia do usuário do AWS CloudTrail.

Exemplo de evento de falha no login no arquivo de log do CloudTrail

O exemplo a seguir mostra um registro em log do CloudTrail para um evento de falha no login.

{ "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" }

Com base nessas informações, é possível determinar que a tentativa de login foi feita por uma usuária do IAM chamada JaneDoe, conforme mostrado no elemento userIdentity. Você também pode ver que houve falha nas tentativas de login, como mostrado no elemento responseElements. É possível ver que JaneDoe tentou fazer login no console do Amazon SNS às 17h35 (UTC) no dia 8 de julho de 2014.

Exemplo de evento de falha no login causado por nome de usuário incorreto

O exemplo a seguir mostra um registro em log do CloudTrail para um evento de login malsucedido causado pela digitação incorreta do nome do usuário. A AWS mascara o texto userName com HIDDEN_DUE_TO_SECURITY_REASONS para ajudar a impedir a exposição de informações potencialmente confidenciais.

{ "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" }

Comportamento da política de confiança de perfil do IAM

Em 21 de setembro de 2022, a AWS fez alterações no comportamento da política de confiança de perfil do IAM para exigir permissões explícitas em uma política de segurança de perfil quando um perfil assume a si mesmo. Os perfis do IAM na lista de permissões de comportamento legadas têm um campo additionalEventData em explicitTrustGrant para eventos de AssumeRole. O valor de explicitTrustGrant é falso quando um perfil na lista de permissões legadas assume a si mesmo usando o comportamento legado. Quando um perfil na lista de permissões legadas assume a si mesmo, mas o comportamento da política de confiança de perfil foi atualizado para permitir explicitamente que o perfil assuma a si mesmo, o valor de explicitTrustGrant é verdadeiro.

Apenas um número muito pequeno de perfis do IAM está na lista de permissões para o comportamento legado, e esse campo só aparece nos logs do CloudTrail para esses perfis quando eles assumem a si mesmos. Na maioria dos casos, não é necessário que um perfil do IAM assuma a si mesmo. A AWS recomenda atualizar os processos, códigos ou configurações para remover esse comportamento ou atualizar as políticas de confiança de perfil para permitir explicitamente esse comportamento. Para obter mais informações, consulte Announcing an update to IAM role trust policy behavior.