

# 使用 AWS CloudTrail 记录 IAM 和 AWS STS API 调用
<a name="cloudtrail-integration"></a>

IAM 和 AWS STS 与 AWS CloudTrail 集成，后者是记录 IAM 用户或角色所执行操作的服务。CloudTrail 将对 IAM 和 AWS STS 的所有 API 调用作为事件捕获，包括来自控制台的调用和 API 调用。如果您创建了跟踪，则可以使 CloudTrail 事件持续传送到 Amazon S3 存储桶。如果您不配置跟踪，则仍可在 CloudTrail 控制台中的**事件历史记录**中查看最新事件。可使用 CloudTrail 获取有关对 IAM 或 AWS STS 发出的请求的信息。例如，您可以查看发出请求的源 IP 地址、用户、时间以及其他详细信息。

要了解有关 CloudTrail 的更多信息，请参阅[《AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

**Topics**
+ [

## CloudTrail 中的 IAM 和 AWS STS 信息
](#iam-info-in-cloudtrail)
+ [

## 记录 IAM 和 AWS STS API 请求
](#cloudtrail-integration_apis)
+ [

## 将 API 请求记录到其他 AWS 服务
](#cloudtrail-integration_api-other-services)
+ [

## 记录用户登录事件
](#cloudtrail-integration_signin-users)
+ [

## 记录临时凭证的登录事件
](#cloudtrail-integration_signin-tempcreds)
+ [

## CloudTrail 日志中的 IAM API 事件示例
](#cloudtrail-integration_examples-iam-api)
+ [

## CloudTrail 日志中的 AWS STS API 事件示例
](#cloudtrail-integration_examples-sts-api)
+ [

## CloudTrail 日志中的登录事件示例
](#cloudtrail-integration_examples-signin)
+ [

## IAM 角色信任策略行为
](#cloudtrail-integration_role-trust-behavior)

## CloudTrail 中的 IAM 和 AWS STS 信息
<a name="iam-info-in-cloudtrail"></a>

在您创建 AWS 账户时，将在该账户上启用 CloudTrail。当 IAM 或 AWS STS 中发生活动时，该活动将记录在 CloudTrail 事件中，并与其他 AWS 服务事件一同保存在 **Event history**（事件历史记录）中。您可以在 AWS 账户 中查看、搜索和下载最新事件。有关更多信息，请参阅[使用 CloudTrail 事件历史记录查看事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

要持续记录 AWS 账户 中的事件（包括 IAM 和 AWS STS 的事件），请创建跟踪。通过跟踪，CloudTrail 可将日志文件传送至 Amazon S3 存储桶。预设情况下，在控制台中创建跟踪时，此跟踪应用于所有 区域。此跟踪记录在 AWS 分区中记录所有区域中的事件，并将日志文件传送至您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务，进一步分析在 CloudTrail 日志中收集的事件数据并采取行动。有关更多信息，请参阅：
+ [创建跟踪概述](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [为 CloudTrail 配置 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [从多个区域接收 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[从多个账户接收 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

所有 IAM 和 AWS STS 操作均由 CloudTrail 记录，并记录在了 [IAM API 参考](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html)和 [AWS Security Token Service API 参考](https://docs.aws.amazon.com/STS/latest/APIReference/API_Operations.html)中。

## 记录 IAM 和 AWS STS API 请求
<a name="cloudtrail-integration_apis"></a>

CloudTrail 将所有经过身份验证的 API 请求记录到 IAM 和 AWS STS API 操作。CloudTrail 还会将未经身份验证的请求记录到 AWS STS 操作、`AssumeRoleWithSAML` 和 `AssumeRoleWithWebIdentity`，并记录身份提供程序所提供的信息。但是，某些未经身份验证的 AWS STS 请求可能不会被记录，因为它们不符合最低期望，即其有效性不足以作为合法请求被信任。对于跨账户角色代入请求，CloudTrail 不会在目标账户的 CloudTrail 中记录被拒绝的 AWS STS 请求。

您可以使用记录的信息将由一个 OIDC 或 SAML 联合主体通过担任角色发出的调用映射回原始外部联合调用方。如果使用 `AssumeRole`，您可以将调用映射回到发出请求的 AWS; 服务或发出请求的用户的账户。CloudTrail 日志条目中 JSON 数据的 `userIdentity` 部分包含您将 AssumeRole\$1 请求与特定会话主体进行映射时所需的信息。有关更多信息，请参阅《AWS CloudTrail 用户指南》**中的 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

IAM 用户使用 MFA 登录时，AWS CloudTrail 日志将包含 MFA 信息。如果 IAM 用户代入某个 IAM 角色，CloudTrail 还将在利用代入角色执行操作的 `sessionContext` 属性中记录 `mfaAuthenticated: true`。但是，当使用代入角色的凭证进行 API 调用时，CloudTrail 日志记录与 IAM 要求的内容是分开的。有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

例如，IAM `CreateUser`、`DeleteRole`、`ListGroups` 调用和其他 API 操作全部都由 CloudTrail 记录。

本主题后面将会介绍有关此类日志条目的示例。

## 将 API 请求记录到其他 AWS 服务
<a name="cloudtrail-integration_api-other-services"></a>

对其他 AWS 服务 API 操作的经过身份验证的请求由 CloudTrail 记录，这些日志条目包含有关生成请求的人员的信息。

例如，假设您发出一个请求来列出 Amazon EC2 实例或创建 AWS CodeDeploy 部署组。有关发出该请求的人员或服务的详细信息将包含在该请求的日志条目中。此信息可帮助您确定发出该请求的是 AWS 账户根用户、IAM 用户、角色还是其他 AWS 服务。

有关 CloudTrail 日志条目中用户身份信息的详细信息，请参阅 *AWS CloudTrail 用户指南*中的 [userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/event_reference_user_identity.html)。

## 记录用户登录事件
<a name="cloudtrail-integration_signin-users"></a>

CloudTrail 会将登录事件记录到 AWS 管理控制台、AWS CLI 和 SDK 等本地开发工具、AWS 论坛以及 AWS Marketplace。CloudTrail 将为 IAM 用户、SAML 和 OIDC 联合主体，以及 AWS STS 联合用户主体记录成功和失败的登录尝试。

 要查看成功和不成功的根用户登录的 CloudTrail 事件示例，请参阅 *AWS CloudTrail 用户指南*中的[根用户的事件记录示例](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-aws-console-sign-in-events.html#cloudtrail-event-reference-aws-console-sign-in-events-root)。

作为最佳安全做法，当*用户名称不正确*导致登录故障时，AWS 不记录输入的 IAM 用户名称文本。用户名称文本将用 `HIDDEN_DUE_TO_SECURITY_REASONS` 值代替。有关示例，请参阅本主题后面的[用户名称不正确导致的登录失败事件示例](#hiddensecurity)。用户名称文本隐藏，因为此类错误可能是用户错误所导致。记录这些错误可能会泄露潜在的敏感信息。例如：
+ 您不小心在用户名框中键入了密码。
+ 您选择一个 AWS 账户 的登录页面的链接，但随后键入了另一 AWS 账户 的账号。
+ 您忘记了所登录的是哪个账户，不小心键入了个人电子邮件账户的账户名、银行登录标识符或某些其他私有 ID。

## 记录临时凭证的登录事件
<a name="cloudtrail-integration_signin-tempcreds"></a>

当主体请求临时凭证时，主体类型将决定 CloudTrail 记录事件的方式。当主体代入其他账户中的角色时，这会很复杂。有多个 API 调用执行与角色跨账户操作相关的操作。首先，主体调用 AWS STS API 来检索临时凭证。该操作记录到调用账户中以及执行 AWS STS 操作的账户中。然后，主体使用角色在代入角色的账户中执行其他 API 调用。

您可以在角色信任策略中使用 `sts:SourceIdentity` 条件键，以要求用户在代入角色时指定身份。例如，您可以要求 IAM 用户指定自己的用户名作为其源身份。这可以帮助您确定哪个用户在 AWS 中执行了具体的操作。有关更多信息，请参阅 [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity)。您可以使用 [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname)，以要求用户在代入角色时指定会话名称。这可以在您查看 AWS CloudTrail 日志时帮助您区分不同主体对角色使用的角色会话。

下表说明了 CloudTrail 如何为生成临时凭证的每个 AWS STS API 记录不同的用户标识信息。


****  

| 主体类型 | STS API | 发起人账户的 CloudTrail 日志中的用户身份 | 所代入角色的账户的 CloudTrail 日志中的用户身份 | 角色后续 API 调用的 CloudTrail 日志中的用户身份 | 
| --- | --- | --- | --- | --- | 
| AWS 账户根用户 凭证 | GetSessionToken | 根用户身份 | 角色所有者账户与调用账户相同 | 根用户身份 | 
| AWS 账户根用户 凭证 | AssumeRoot | 根用户会话 | 账号和主体 ID（如果是用户） | 根用户会话 | 
| IAM 用户 | GetSessionToken | IAM 用户身份。 | 角色所有者账户与调用账户相同 | IAM 用户身份。 | 
| IAM 用户 | GetFederationToken | IAM 用户身份。 | 角色所有者账户与调用账户相同 | IAM 用户身份。 | 
| IAM 用户 | AssumeRole | IAM 用户身份。 | 账号和主体 ID（如果是用户）或 AWS 服务主体 | 仅角色身份（无用户） | 
| 外部验证的用户 | AssumeRoleWithSAML | 不适用 | SAML 用户身份 | 仅角色身份（无用户） | 
| 外部验证的用户 | AssumeRoleWithWebIdentity | 不适用 | OIDC/Web 用户身份 | 仅角色身份（无用户） | 

如果某项操作对资源没有任何变异影响，那么 CloudTrail 会将其视为只读。当记录只读事件时，CloudTrail 会编辑日志中的 `responseElements` 信息。当 CloudTrail 记录非只读事件时，日志条目中会显示完整的 `responseElements`。对于 AWS STS API `AssumeRole`、`AssumeRoleWithSAML` 和 `AssumeRoleWithWebIdentity`，即使它们被记录为只读，CloudTrail 也会在这些 API 的日志中包含完整的 `responseElements`（`secretAccessKey` 除外）。

下表说明了 CloudTrail 如何为生成临时凭证的每个 AWS STS API 记录 `responseElements` 和 `readOnly` 信息。


****  

| STS API | 响应元素信息 | Read-only | 
| --- | --- | --- | 
| AssumeRole | 包含 | true | 
| AssumeRoleWithSAML | 包含 | true | 
| AssumeRoleWithWebIdentity | 包含 | true | 
| AssumeRoot | 包含 | false | 
| GetFederationToken | 包含 | false | 
| GetSessionToken | 包含 | false | 

## CloudTrail 日志中的 IAM API 事件示例
<a name="cloudtrail-integration_examples-iam-api"></a>

CloudTrail 日志文件包含的事件采用 JSON 格式。一个 API 事件表示一个 API 请求，并包括有关主体、所请求的操作、任意参数以及该操作日期和时间的信息。

### CloudTrail 日志文件中的 IAM API 事件示例
<a name="cloudtrail-integration-iam-api-events"></a>

以下示例说明了为进行 IAM `GetUserPolicy` 操作而发出的请求的 CloudTrail 日志条目。

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:Role-Session-Name",
        "arn": "arn:aws:sts::111122223333:assumed-role/Role-Name/Role-Session-Name",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "attributes": {
                "creationDate": "2024-09-09T17:50:16Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2024-09-09T17:51:44Z",
    "eventSource": "iam.amazonaws.com",
    "eventName": "GetUserPolicy",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.101",
    "userAgent": "aws-cli/1.16.96 Python/2.7.8 Linux/10 botocore/1.12.86",
    "requestParameters": {
        "userName": "ExampleIAMUserName",
        "policyName": "ExamplePoliccyName"
    },
    "responseElements": null,
    "requestID": "9EXAMPLE-0c68-11e4-a24e-d5e16EXAMPLE",
    "eventID": "cEXAMPLE-127e-4632-980d-505a4EXAMPLE",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "iam.amazonaws.com"
    }
}
```

通过此事件信息，您可以确定发出该请求的目的是为了获取用户 `ReadOnlyAccess-JaneDoe-201407151307` 的名为 `JaneDoe` 的用户策略，如 `requestParameters` 元素中所述。您还可以看到，该请求是由名为 `JaneDoe` 的 IAM 用户在 2014 年 7 月 15 日下午 9:40 (UTC) 发出的。在本示例中，请求源自 AWS 管理控制台，您可以从 `userAgent` 元素中判断出来。

## CloudTrail 日志中的 AWS STS API 事件示例
<a name="cloudtrail-integration_examples-sts-api"></a>

CloudTrail 日志文件包含的事件采用 JSON 格式。一个 API 事件表示一个 API 请求，并包括有关主体、所请求的操作、任意参数以及该操作日期和时间的信息。

### CloudTrail 日志文件中跨账户 AWS STS API 事件的示例
<a name="stscloudtrailexample"></a>

账户 777788889999 中名为 `John` 的 IAM 用户调用 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 操作来在账户 111122223333 中担任角色 `EC2-dev`。账户管理员要求用户在担任角色时设置与其用户名相同的源身份。用户传入 `John` 的源身份值。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDAQRSTUVWXYZEXAMPLE",
    "arn": "arn:aws:iam::777788889999:user/John",
    "accountId": "777788889999",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "John"
  },
  "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": "John-EC2-dev",
    "sourceIdentity": "John",
    "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:John-EC2-dev",
      "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/John-EC2-dev"
    },
  "sourceIdentity": "John"
  },
  "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"
}
```

第二个示例显示同一请求的代入角色账户 (111122223333) 的 CloudTrail 日志条目。

```
{ 
  "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": "John-EC2-dev",
    "sourceIdentity": "John",  
    "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:John-EC2-dev",     
      "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/John-EC2-dev"   
      },
  "sourceIdentity": "John"
  },
  "requestID": "4EXAMPLE-0e8d-11e4-96e4-e55c0EXAMPLE",
  "sharedEventID": "bEXAMPLE-efea-4a70-b951-19a88EXAMPLE",
  "eventID": "dEXAMPLE-ac7f-466c-a608-4ac8dEXAMPLE"
}
```

### CloudTrail 日志文件中 AWS STS 角色链接 API 事件示例
<a name="stscloudtrailexample-assumerole"></a>

以下示例演示账户 111111111111 中 John Doe 发出的请求的 CloudTrail 日志条目。John 之前使用自己的 `John` 用户代入 `JohnRole1` 角色。对于此请求，他使用来自该角色的凭证代入 `JohnRole2` 角色。这称为[角色链](id_roles.md#iam-term-role-chaining)。当他担任 `John1` 角色时设置的源身份将在担任 `JohnRole2` 的请求中继续存在。如果 John 尝试在担任角色时设置不同的源身份，请求将被拒绝。John 将两个[会话标签](id_session-tags.md)传递到请求中。他将这两个标签设置为可传递。请求继承 `Department` 标签作为可传递标签，因为 John 在代入 `JohnRole1` 时将其设置为可传递。更多有关源身份的信息，请参阅 [监控和控制使用所担任角色执行的操作](id_credentials_temp_control-access_monitor.md)。有关角色链中可传递键的更多信息，请参阅[使用会话标签链接角色](id_session-tags.md#id_session-tags_role-chaining)。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIN5ATK5U7KEXAMPLE:JohnRole1",
        "arn": "arn:aws:sts::111111111111:assumed-role/John/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": "John"
            },
            "sourceIdentity": "John"
        }
    },
    "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": "John",
        "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": "John"
    },
    "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"
}
```

### CloudTrail 日志文件中 AWS 服务 AWS STS API 事件的示例
<a name="stscloudtrailexample_service"></a>

以下示例显示由 AWS 服务使用服务角色中的权限调用其他服务 API 发出的请求的 CloudTrail 日志条目。它显示了在 777788889999 账户中发出的请求的 CloudTrail 日志条目。

```
{
  "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": "amzn-s3-demo-bucket"
  },
  "responseElements": null,
  "requestID": "EXAMPLE463D56D4C",
  "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE",
  "eventType": "AwsApiCall",
  "recipientAccountId": "777788889999"
}
```

### CloudTrail 日志文件中 SAML AWS STS API 事件的示例
<a name="stscloudtrailexample_saml"></a>

以下示例说明了为进行 AWS STS [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) 操作而发出的请求的 CloudTrail 日志条目。请求包括 SAML 属性 `CostCenter` 和 `Project`，这些属性作为[会话标签](id_session-tags.md)通过 SAML 断言传递。这些标签被设置为可传递标签，因此[在角色链场景中持续存在](id_session-tags.md#id_session-tags_role-chaining)。该请求包含可选的 API 参数 `DurationSeconds`，在 CloudTrail 日志中表示为 `durationSeconds`，并设置为 `1800` 秒。该请求还包含在 SAML 断言中传递的 SAML 属性 `sourceIdentity`。如果某人使用生成的角色会话凭证担任另一个角色，则此源身份将仍然存在。

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

### CloudTrail 日志文件中 OIDC AWS STS API 事件示例
<a name="stscloudtrailexample_web-identity"></a>

以下示例说明了为进行 AWS STS [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) 操作而发出的请求的 CloudTrail 日志条目。请求包括属性 `CostCenter` 和 `Project`，这些属性作为[会话标签](id_session-tags.md)通过 OpenID Connect（OIDC）身份提供商（IdP）令牌传递。这些标签被设置为可传递标签，因此[在角色链中持续存在](id_session-tags.md#id_session-tags_role-chaining)。请求包含身份提供程序令牌中的 `sourceIdentity` 属性。如果某人使用生成的角色会话凭证担任另一个角色，则此源身份将仍然存在。

CloudTrail 日志条目还包含一个带有 `identityProviderConnectionVerificationMethod` 属性的 `additionalEventData` 字段。此属性表示 AWS 用于验证与 OIDC 提供商的连接的方法。属性值将为 `IAMTrustStore` 或 `Thumbprint`。`IAMTrustStore` 值表示 AWS 使用我们的可信根凭证颁发机构（CA）库成功验证了与 OIDC IdP 的连接。`Thumbprint` 值表示 AWS 使用在 IdP 配置中设置的证书指纹来验证 OIDC IdP 服务器证书。

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "WebIdentityUser",
    "principalId": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>:<id of application>:<id of user>",
    "userName": "<id of user>",
    "identityProvider": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>"
  },
  "eventTime": "2024-07-09T15:41:37Z",
  "eventSource": "sts.amazonaws.com",
  "eventName": "AssumeRoleWithWebIdentity",
  "awsRegion": "us-east-2",
  "sourceIPAddress": "192.0.2.101",
  "userAgent": "aws-cli/2.13.29 Python/3.11.6 Windows/10 exe/AMD64 prompt/off command/sts.assume-role-with-web-identity",
  "requestParameters": {
    "roleArn": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole",
    "roleSessionName": "<assigned role session name>",
    "sourceIdentity": "MyWebIdentityUser",
    "durationSeconds": 3600,
    "principalTags": {
      "CostCenter": "24680",
      "Project": "Pegasus"
    },
    "transitiveTagKeys": [
      "CostCenter",
      "Project"
    ]
  },
  "responseElements": {
    "credentials": {
      "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
      "sessionToken": "<encoded session token blob>",
      "expiration": "Jul 9, 2024, 4:41:37 PM"
    },
    "subjectFromWebIdentityToken": "<id of user>",
    "sourceIdentity": "MyWebIdentityUser",
    "assumedRoleUser": {
      "assumedRoleId": "AROA123456789EXAMPLE:<assigned role session name>",
      "arn": "arn:aws:sts::444455556666:assumed-role/FederatedWebIdentityRole/<assigned role session name>"
    },
    "provider": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>",
    "audience": "<id of application>"
  },
  "additionalEventData": {
    "identityProviderConnectionVerificationMethod": "IAMTrustStore"
  },
  "requestID": "aEXAMPLE-0b26-40df-8973-c7012EXAMPLE",
  "eventID": "aEXAMPLE-ee29-4ac0-a0ed-3f5c5EXAMPLE",
  "readOnly": true,
  "resources": [
    {
      "accountId": "444455556666",
      "type": "AWS::IAM::Role",
      "ARN": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "recipientAccountId": "444455556666",
  "eventCategory": "Management",
  "tlsDetails": {
    "tlsVersion": "TLSv1.3",
    "cipherSuite": "TLS_AES_128_GCM_SHA256",
    "clientProvidedHostHeader": "sts.us-east-2.amazonaws.com"
  }
}
```

### CloudTrail 日志文件中使用全局端点的示例 AWS STS 事件
<a name="stscloudtrailexample-assumerole-sts-global-endpoint"></a>

对于向 AWS Security Token Service (AWS STS) 全局端点 (`https://sts.amazonaws.com`) 发出的请求，AWS STS 包括额外的 AWS CloudTrail 日志字段：`endpointType` 和 `awsServingRegion`。这些字段出现在 `addtionalEventData` `RequestDetails` 元素下，用于记录正在调用的服务 AWS 区域 区域和端点类型。`endpointType` 字段可以具有 `global` 或 `regional` 的值，以指示处理请求的全局端点的类型。有关 AWS STS 全局端点更改的更多信息，请参阅 [AWS STS 区域和端点](id_credentials_temp_region-endpoints.md)。

**注意**  
对 AWS STS 全局端点发出的请求的 AWS CloudTrail 日志将发送到美国东部（弗吉尼亚州北部）区域。由 AWS STS 区域端点处理的请求的 CloudTrail 日志将继续记录到 CloudTrail 中的相应区域。

以下示例显示了从欧洲地区（斯德哥尔摩）区域 eu-north-1 向全局端点 (`https://sts.amazonaws.com`) 发出的 AWS STS 请求的 CloudTrail 日志条目。`endpointType` 字段值为 `global` 表示 AWS STS 请求由欧洲地区（斯德哥尔摩）区域的全局端点节点处理。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:developer",
        "arn": "arn:aws:sts::777788889999:assumed-role/Admin/developer",
        "accountId": "777788889999",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::777788889999:role/Admin",
                "accountId": "777788889999",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2025-02-12T21:44:28Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2025-02-12T22:16:48Z",
    "eventSource": "sts.amazonaws.com",
    "eventName": "AssumeRole",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "aws-cli/2.15.33 Python/3.11.8 Linux/5.10.233-204.894.amzn2int.x86_64 exe/x86_64.amzn.2 prompt/off command/sts.assume-role",
    "requestParameters": {
        "roleArn": "arn:aws:iam::777788889999:role/test-role",
        "roleSessionName": "test-global-assume-role"
    },
    "responseElements": {
        "credentials": {
            "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
            "sessionToken": "<encoded session token blob>",
            "expiration": "Feb 12, 2025, 11:16:48 PM"
        },
        "assumedRoleUser": {
            "assumedRoleId": "AROA987654321EXAMPLE:test-global-assume-role",
            "arn": "arn:aws:sts::777788889999:assumed-role/test-role/test-global-assume-role"
        }
    },
    "additionalEventData": {
        "RequestDetails": {
            "awsServingRegion": "eu-north-1",
            "endpointType": "global"
        }
    },
    "requestID": "EXAMPLE7-2497-457a-9586-f21feEXAMPLE",
    "eventID": "EXAMPLEc-3d26-4c3a-9c94-722a9EXAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "777788889999",
            "type": "AWS::IAM::Role",
            "ARN": "arn:aws:iam::777788889999:role/test-role"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "777788889999",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "sts-global.eu-north-1.amazonaws.com"
    }
}
```

为了进行比较，以下示例显示了对区域端点 (`https://sts.us-west-2.amazonaws.com`) 发出的 AWS STS 请求的 CloudTrail 日志条目，该请求由欧洲地区（斯德哥尔摩）区域 eu-north-1 中的区域端点处理。`endpointType` 字段值为 `regional` 表示 AWS STS 请求由欧洲地区（斯德哥尔摩）区域的全局端点节点处理。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:developer",
        "arn": "arn:aws:sts::777788889999:assumed-role/Admin/developer",
        "accountId": "777788889999",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::777788889999:role/Admin",
                "accountId": "777788889999",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2025-02-12T21:44:28Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2025-02-12T22:16:30Z",
    "eventSource": "sts.amazonaws.com",
    "eventName": "AssumeRole",
    "awsRegion": "eu-north-1",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "aws-cli/2.15.33 Python/3.11.8 Linux/5.10.233-204.894.amzn2int.x86_64 exe/x86_64.amzn.2 prompt/off command/sts.assume-role",
    "requestParameters": {
        "roleArn": "arn:aws:iam::777788889999:role/test-role",
        "roleSessionName": "test-global-assume-role"
    },
    "responseElements": {
        "credentials": {
            "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
            "sessionToken": "<encoded session token blob>",
            "expiration": "Feb 12, 2025, 11:16:30 PM"
        },
        "assumedRoleUser": {
            "assumedRoleId": "AROA987654321EXAMPLE:test-global-assume-role",
            "arn": "arn:aws:sts::777788889999:assumed-role/test-role/test-global-assume-role"
        }
    },
    "additionalEventData": {
        "RequestDetails": {
            "endpointType": "regional",
            "awsServingRegion": "eu-north-1"
        }
    },
    "requestID": "EXAMPLEd-2116-4cd7-bd72-9f72fEXAMPLE",
    "eventID": "EXAMPLEd-219a-48ed-bc54-00e3cEXAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "777788889999",
            "type": "AWS::IAM::Role",
            "ARN": "arn:aws:iam::777788889999:role/test-role"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "777788889999",
    "eventCategory": "Management",
    "tlsDetails": {
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "sts.eu-north-1.amazonaws.com"
    }
}
```

## CloudTrail 日志中的登录事件示例
<a name="cloudtrail-integration_examples-signin"></a>

CloudTrail 日志文件包含的事件采用 JSON 格式。登录事件表示单个登录请求，并包括有关登录主体、区域以及操作的日期和事件的信息。

### CloudTrail 日志文件中的登录成功事件示例
<a name="cloudtrail-integration-signin-success"></a>

以下示例显示了一个成功的登录事件的 CloudTrail 日志条目。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE",
    "arn":"arn:aws:iam::111122223333:user/John",
    "accountId": "111122223333",
    "userName": "John"
  },
  "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/](https://console.aws.amazon.com/s3/)",
    "MFAUsed": "No"
  },
  "eventID": "3fcfb182-98f8-4744-bd45-10a395ab61cb"
}
```

以下示例显示一个成功授权码请求的 CloudTrail 日志条目。

```
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROATJHQDX737YZP72NTF:thesjain-Isengard",
"arn": "arn:aws:sts::225989345271:assumed-role/Admin/thesjain-Isengard",
"accountId": "225989345271",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROATJHQDX737YZP72NTF",
"arn": "arn:aws:iam::225989345271:role/Admin",
"accountId": "225989345271",
"userName": "Admin"
},
"attributes": {
"creationDate": "2025-11-17T22:50:14Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2025-11-17T22:51:32Z",
"eventSource": "signin.amazonaws.com",
"eventName": "AuthorizeOAuth2Access",
"awsRegion": "us-east-1",
"sourceIPAddress": "52.94.133.136",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"requestParameters": {
"scope": "openid",
"redirect_uri": "http://127.0.0.1:53037/oauth/callback",
"code_challenge_method": "SHA-256",
"client_id": "arn:aws:signin:::devtools/same-device"
},
"responseElements": null,
"additionalEventData": {
"success": "true",
"x-amzn-vpce-id": ""
},
"requestID": "e2854c76-1cba-4360-9fd1-5037b591466b",
"eventID": "59e1720d-3deb-44ff-933d-6828be2a860a",
"readOnly": true,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "225989345271",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "us-east-1.signin.aws.amazon.com"
}
}
```

以下示例显示一个成功 OAuth2 令牌创建请求的 CloudTrail 日志条目。

```
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROATJHQDX737YZP72NTF:jacobjoj-Isengard",
"arn": "arn:aws:sts::225989345271:assumed-role/Admin/jacobjoj-Isengard",
"accountId": "225989345271",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROATJHQDX737YZP72NTF",
"arn": "arn:aws:iam::225989345271:role/Admin",
"accountId": "225989345271",
"userName": "Admin"
},
"attributes": {
"creationDate": "2025-11-18T20:38:10Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2025-11-18T20:38:44Z",
"eventSource": "signin.amazonaws.com",
"eventName": "CreateOAuth2Token",
"awsRegion": "us-east-1",
"sourceIPAddress": "15.248.6.6",
"userAgent": "aws-cli/2.32.0 md/awscrt#0.28.4 ua/2.1 os/macos#24.6.0 md/arch#arm64 lang/python#3.13.9 md/pyimpl#CPython m/b,AA,Z,E cfg/retry-mode#standard md/installer#exe sid/35033f4ca1bd md/prompt#off md/command#login",
"requestParameters": {
"client_id": "arn:aws:signin:::devtools/same-device"
},
"responseElements": null,
"additionalEventData": {
"success": "true",
"x-amzn-vpce-id": ""
},
"requestID": "94562943-c85b-4dc1-bf72-43b0fd42d6de",
"eventID": "0b338fac-6a10-4740-b34d-1bb6923e799e",
"readOnly": true,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "225989345271",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "us-east-1.signin.aws.amazon.com"
}
}
```

有关 CloudTrail 日志文件中所包含信息的更多详细信息，请参阅 *AWS CloudTrail 用户指南*中的 [CloudTrail 事件参考](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html)。

### CloudTrail 日志文件中的登录失败事件示例
<a name="cloudtrail-integration-signin-failure"></a>

以下示例显示了一个失败的登录事件的 CloudTrail 日志条目。

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

从此信息，您可以确定此次登录尝试源自名为 `JaneDoe` 的 IAM 用户，如 `userIdentity` 元素中所示。您还可以发现此次登录尝试失败，如 `responseElements` 元素中所示。可以看出 `JaneDoe` 是在 2014 年 7 月 8 日下午 5:35 (UTC) 尝试登录 Amazon SNS 控制台的。

### 用户名称不正确导致的登录失败事件示例
<a name="hiddensecurity"></a>

以下示例显示了一个失败登录事件的 CloudTrail 日志条目，该事件是由于用户输入错误用户名导致的。AWS 用 `HIDDEN_DUE_TO_SECURITY_REASONS` 代替了 `userName` 文本以帮助防止泄露可能的敏感信息。

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

## IAM 角色信任策略行为
<a name="cloudtrail-integration_role-trust-behavior"></a>

2022 年 9 月 21 日，AWS 对 IAM 角色信任策略行为进行了更改，要求角色代入自己时在角色信任策略中显式允许。对于 `AssumeRole` 事件，旧行为允许列表中的 IAM 角色会有一个有关 explicitTrustGrant 的 additionalEventData 字段。当旧允许列表中的角色使用旧行为代入自己时，`explicitTrustGrant` 的值为 false。当旧允许列表中的角色代入自己，但角色信任策略行为已更新为显式允许该角色代入自己时，`explicitTrustGrant` 的值为 true。

只有极少数的 IAM 角色出现在旧行为的允许列表中，并且只有当这些角色代入自己时，此字段才会出现在其 CloudTrail 日志中。在大多数情况下，IAM 角色并不需要代入自己。AWS 建议通过更新进程、代码或配置来消除此行为，或者更新角色信任策略以显式允许这种行为。有关更多信息，请参阅 [Announcing an update to IAM role trust policy behavior](https://aws.amazon.com/blogs//security/announcing-an-update-to-iam-role-trust-policy-behavior/)。