CloudTrail userIdentity 元素 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CloudTrail userIdentity 元素

Amazon Identity and Access Management(IAM) 提供不同类型的身份。这些区域有:userIdentity元素包含有关发出请求的 IAM 身份的类型的详细信息,以及已使用的凭证。如果使用的是临时证书,则该元素显示证书是如何获取的。

Examples

userIdentity 使用 IAM 用户凭证

以下示例显示了userIdentity元素,即使用名为的 IAM 用户的证书发出的Alice

"userIdentity": { "type": "IAMUser", "principalId": "AIDAJ45Q7YFFAREXAMPLE", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "", "userName": "Alice" }

userIdentity 使用临时安全证书的

以下示例显示了一个userIdentity元素,用于使用通过担任 IAM 获取的临时安全凭证发出的请求。该元素包含有关为获取证书而担任的角色的其他详细信息。

"userIdentity": { "type": "AssumedRole", "principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName", "arn": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName", "accountId": "123456789012", "accessKeyId": "", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "20131102T010628Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIDPPEZS35WEXAMPLE", "arn": "arn:aws:iam::123456789012:role/RoleToBeAssumed", "accountId": "123456789012", "userName": "RoleToBeAssumed" } } }

Fields

以下字段可显示在 userIdentity 元素中。

type

身份的类型。以下是可能的值:

  • Root— 请求通过发出Amazon账户凭证。如果 userIdentity 类型为 Root,并且您为账户设置了别名,则 userName 字段包含您的账户别名。有关更多信息,请参阅 Amazon 账户 ID 及其别名

  • IAMUser— 已使用 IAM 用户的凭证发出请求。

  • AssumedRole— 已使用通过角色获取的临时安全凭证发出请求,即通过调用Amazon Security Token Service(Amazon STS)AssumeRoleAPI。这可以包括适用于 Amazon EC2 的角色跨账户 API 访问

  • FederatedUser— 已使用通过调用获取的临时安全凭证发出请求 Amazon STS GetFederationTokenAPI。这些区域有:sessionIssuer元素指示是使用根用户凭证还是 IAM 用户凭证调用了该 API。

    有关临时安全凭证的更多信息,请参阅临时安全凭证中的IAM 用户指南

  • Directory— 向目录服务发出请求,类型未知。目录服务包括以下内容:Amazon WorkDocs 和 Amazon QuickSight。

  • AWSAccount— 请求已由另一个Amazonaccount.

  • AWSService— 请求通过发出Amazon帐户属于Amazon服务。例如,Amazon Elastic Beanstalk担任账户中的 IAM 角色来调用其他Amazon代表您的服务。

  • Unknown— 使用 CloudTrail 无法确定的标识类型发出请求。

可选: False

AWSAccountAWSService出现的type当使用您拥有的 IAM 角色进行跨账户访问时,日志中将有。

例如:由另一个账户启动的跨账户访问Amazon账户

  1. 您在自己的账户中拥有一个 IAM 角色。

  2. 另一个 Amazon 账户将切换到该角色以代入您的账户的角色。

  3. 由于您拥有 IAM 角色,因此您将收到一个显示已代入此角色的其他账户的日志。typeAWSAccount。有关示例日志条目,请参阅Amazon STSCloudTrail 日志文件中的 API 事件

例如:由启动的跨账户访问Amazon服务

  1. 您在自己的账户中拥有一个 IAM 角色。

  2. Amazon 服务拥有的 Amazon 账户将代入此角色。

  3. 由于您拥有 IAM 角色,因此您将收到一个显示Amazon服务承担了该角色。typeAWSService

userName

已发出调用的身份的友好名称。userName 中显示的值基于 type 中的值。下表显示 typeuserName 之间的关系:

type userName 描述
Root(未设置别名) 不存在 如果您没有为 Amazon 账户设置别名,则 userName 字段不会出现。有关账户别名的更多信息,请参阅您的Amazon账户 ID 及其别名。请注意,userName 字段绝不包含 RootRoot,因为 是身份类型而不是用户名称。
Root(已设置别名) 账户别名 有关 Amazon 账户别名的更多信息,请参阅 Amazon 账户 ID 及其别名
IAMUser IAM 用户的用户名

AssumedRole

不存在 对于 AssumedRole 类型,您可在 sessionContext 中找到 userName 字段,它是 sessionIssuer 元素的组成部分。有关示例条目,请参阅Examples
FederatedUser 不存在 sessionContextsessionIssuer 部分包含有关已发出联合身份用户会话的身份的信息。
Directory 可以存在 例如,值可以是账户别名或关联的电子邮件地址Amazon账户 ID
AWSService 不存在
AWSAccount 不存在
Unknown 可以存在 例如,值可以是账户别名或关联的电子邮件地址Amazon账户 ID

可选: True

注意

这些区域有:userName字段包含字符串HIDDEN_DUE_TO_SECURITY_REASONS当记录的事件为由错误用户名称输入导致的控制台登录失败时。在此情况下,CloudTrail 不记录内容,因为文本可能包含敏感信息,如以下示例所示:

  • 用户不小心在用户名称字段中键入了密码。

  • 用户单击一个 Amazon 账户的登录页面链接,但键入了另一账户的账户号。

  • 用户意外键入了个人电子邮件账户的账户名称、银行登录标识符或某个其他私有 ID。

principalId

已发出调用的实体的唯一标识符。对于使用临时安全证书发出的请求,此值包括将传递到 AssumeRoleAssumeRoleWithWebIdentityGetFederationToken API 调用的会话名称。

可选: True

arn

已发出调用的委托人的亚马逊资源名称 (ARN)。arn 的最后一个部分包含已发出调用的用户或角色。

可选: True

accountId

拥有已授予请求权限的实体的账户。如果已使用临时安全凭证发出请求,则该账户为拥有已用于获取凭证的 IAM 用户或角色的账户。

可选: True

accessKeyId

用于对请求签名的 访问密钥 ID。如果已使用临时安全证书发出请求,则为临时证书的访问密钥 ID。出于安全原因,accessKeyId可能不存在,或者可能显示为空字符串。

可选: True

sessionContext

如果已使用临时安全凭证发出请求,则sessionContext提供有关已为这些凭证创建的会话的信息。在调用任何返回临时证书的 API 时创建会话。此外,当用户在控制台中工作以及当用户使用包括多重验证的 API 发出请求时创建会话。此元素的属性为:

  • creationDate— 颁发临时安全凭证时的日期和时间。用 ISO 8601 基本表示法表示。

  • mfaAuthenticated— 值为true如果已使用已用于请求的根用户或 IAM 用户还通过 MFA 设备进行身份验证,否则,false

  • sourceIdentity— 请参阅Amazon STS源标识在本主题中。这些区域有:sourceIdentity字段出现在用户担任 IAM 角色执行操作的事件中。sourceIdentity标识发出请求的原始用户身份,无论该用户的身份是 IAM 用户、IAM 角色、使用基于 SAML 的联合身份验证的用户,还是使用 OpenID Connect (OIDC) 兼容的 Web 联合身份验证的用户。有关如何配置Amazon STS以收集源身份信息,请参阅监控和控制使用担任角色执行的操作中的IAM 用户指南

可选: True

invokedBy

的名称Amazon服务,例如 Amazon EC2 Auto Scaling 或Amazon Elastic Beanstalk。

可选: True

sessionIssuer

如果已使用临时安全证书发出请求,则为提供有关证书获取方式的信息的元素。例如,如果已通过代入角色来获取临时安全证书,则此元素提供有关代入的角色的信息。如果已通过使用根或 IAM 用户凭证获取凭证来调用Amazon STS GetFederationToken,则此元素提供有关根账户或 IAM 用户的信息。此元素的属性为:

  • type— 临时安全凭证的源,例如RootIAMUser,或者Role

  • userName— 已发布会话的用户或角色的友好名称。显示的值取决于 sessionIssuer 身份 type。下表显示 sessionIssuer typeuserName 之间的关系:

    sessionIssuer 类型 userName 描述
    Root(未设置别名) 不存在 如果您未为账户设置别名,则 userName 字段不会出现。有关 Amazon 账户别名的更多信息,请参阅 Amazon 账户 ID 及其别名。请注意,userName 字段绝不包含 RootRoot,因为 是身份类型而不是用户名称。
    Root(已设置别名) 账户别名 有关 Amazon 账户别名的更多信息,请参阅 Amazon 账户 ID 及其别名
    IAMUser IAM 用户的用户名 这在联合身份用户使用由 IAMUser 发布的会话时也适用。
    Role 角色名称 IAM 用户担任的角色Amazon服务或角色会话中的 Web 联合身份用户。
  • principalId— 已用于获取凭证的实体的内部 ID。

  • arn— 已用于获取临时安全证书的源 (账户、IAM 用户或角色) 的 ARN。

  • accountId— 拥有已用于获取凭证的实体的账户。

可选: True

webIdFederationData

如果已使用通过 Web 联合身份验证获取的临时安全证书发出请求,则为列出有关身份提供商的信息的元素。此元素的属性为:

  • +federatedProvider – 身份提供商的委托人名称 (例如,适用于 Login with Amazon 的 www.amazon.com 或适用于 Google 的 accounts.google.com)。

  • attributes— 提供商报告的应用程序 ID 和用户 ID (例如,www.amazon.com:app_idwww.amazon.com:user_idLogin with Amazon)。有关更多信息,请参阅 。Web 联合身份验证的可用键中的IAM 用户指南

可选: True

用于 SAML 和 Web 联合身份验证的 Amazon STS API 的值

Amazon CloudTrail 支持记录用安全断言标记语言 (SAML) 和 Web 联合身份验证进行的 Amazon Security Token Service (Amazon STS) API 调用。当调用AssumeRoleWithSAMLAssumeRoleWithWebIdentityAPI 中,CloudTrail 记录该调用并将相应事件提交到您的 Amazon S3 存储桶。

这些 API 的 userIdentity 元素包含以下值。

type

身份类型。

  • SAMLUser— 已使用 SAML 断言发出请求。

  • WebIdentityUser— 已通过 Web 联合身份验证提供商发出请求。

principalId

已发出调用的实体的唯一标识符。

  • 对于 SAMLUser,这是 saml:namequalifiersaml:sub 密钥的组合。

  • 对于 WebIdentityUser,这是发布者、应用程序 ID 和用户 ID 的组合。

userName

已发出调用的身份的名称。

identityProvider

外部身份提供商的委托人名称。只有 SAMLUserWebIdentityUser 类型才显示此字段。

  • 对于 SAMLUser,这是 SAML 断言的 saml:namequalifier 密钥。

  • 对于 WebIdentityUser,这是 Web 联合身份验证提供商的发布者名称。它可以是您配置的提供商,如下所示:

    • cognito-identity.amazon.com适用于 Amazon Cognito

    • Login with Amazon 的 www.amazon.com

    • Google 的 accounts.google.com

    • Facebook 的 graph.facebook.com

下面是 AssumeRoleWithWebIdentity 操作的示例 userIdentity 元素。

"userIdentity": { "type": "WebIdentityUser", "principalId": "accounts.google.com:application-id.apps.googleusercontent.com:user-id", "userName": "user-id", "identityProvider": "accounts.google.com" }

有关 SAMLUserWebIdentityUser 类型的 userIdentity 元素如何显示的示例日志,请参阅使用 Amazon CloudTrail 记录 IAM 事件

Amazon STS源标识

IAM 管理员可以配置Amazon Security Token Service,要求用户在使用临时证书担任角色时指定其身份。这些区域有:sourceIdentity文件发生在用户担任 IAM 角色或使用代入角色执行任何操作的事件中。

这些区域有:sourceIdentity字段标识发出请求的原始用户身份,无论该用户的身份是 IAM 用户、IAM 角色、使用基于 SAML 的联合身份验证的用户还是使用 OpenID Connect (OIDC) 兼容的 Web 联合身份验证的用户。IAM 管理员配置Amazon STS、CloudTrail 日志sourceIdentity以下事件和事件记录中的位置中的信息:

  • 这些区域有:Amazon STS AssumeRoleAssumeRoleWithSAML,或者AssumeRoleWithWebIdentity用户身份在担任角色时进行的调用。sourceIdentity可以在requestParameters的数据块Amazon STS调用。

  • 这些区域有:Amazon STS AssumeRoleAssumeRoleWithSAML,或者AssumeRoleWithWebIdentity调用,如果用户身份使用角色担任另一个角色(称为角色链sourceIdentity可以在requestParameters的数据块Amazon STS调用。

  • 这些区域有:Amazon服务 API 调用,用户身份在担任角色并使用Amazon STS。在服务 API 事件中,sourceIdentity可以在sessionContext块。例如,如果用户身份创建新的 S3 存储桶,则sourceIdentity发生在sessionContext的数据块CreateBucketevent.

有关如何配置Amazon STS以收集源身份信息,请参阅监控和控制使用担任角色执行的操作中的IAM 用户指南。有关 的更多信息Amazon STS事件的详细信 CloudTrail 参阅记录 IAM 和Amazon STS使用 API 调用Amazon CloudTrail中的IAM 用户指南

以下是事件的示例片段,这些事件显示sourceIdentity字段。

示例requestParameters部分

在以下示例事件片段中,用户创建Amazon STS AssumeRole请求,并设置源标识,此处由源标识值集。用户承担由角色 ARN 表示的角色arn:aws:iam::123456789012:role/Assumed_Role。这些区域有:sourceIdentity字段位于requestParameters块。

"eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AIDAJ45Q7YFFAREXAMPLE", "accountId": "123456789012" }, "eventTime": "2020-04-02T18:20:53Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-1", "sourceIPAddress": "203.0.113.64", "userAgent": "aws-cli/1.16.96 Python/3.6.0 Windows/10 botocore/1.12.86", "requestParameters": { "roleArn": "arn:aws:iam::123456789012:role/Assumed_Role", "roleSessionName": "Test1", "sourceIdentity": "source-identity-value-set", },

示例responseElements部分

在以下示例事件片段中,用户创建Amazon STS AssumeRole请求担任名为的角色Developer_Role,并设置源标识Admin。用户承担由角色 ARN 表示的角色arn:aws:iam::111122223333:role/Developer_Role。这些区域有:sourceIdentity字段显示在requestParametersresponseElements事件块。用于代入角色的临时证书、会话令牌字符串以及代入的角色 ID、会话名称和会话 ARN 显示在responseElements块以及源标识。

"requestParameters": { "roleArn": "arn:aws:iam::111122223333:role/Developer_Role", "roleSessionName": "Session_Name", "sourceIdentity": "Admin" }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "expiration": "Jan 22, 2021 12:46:28 AM", "sessionToken": "XXYYaz... EXAMPLE_SESSION_TOKEN XXyYaZAz" }, "assumedRoleUser": { "assumedRoleId": "AROACKCEVSQ6C2EXAMPLE:Session_Name", "arn": "arn:aws:sts::111122223333:assumed-role/Developer_Role/Session_Name" }, "sourceIdentity": "Admin" } ...

示例sessionContext部分

在以下示例事件片段中,用户承担名为DevRole调用一个Amazon服务 API。用户设置源标识,此处由源标识值集。这些区域有:sourceIdentity字段位于sessionContext块中的userIdentity块。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAJ45Q7YFFAREXAMPLE: Dev1", "arn": "arn: aws: sts: : 123456789012: assumed-role/DevRole/Dev1", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAJ45Q7YFFAREXAMPLE", "arn": "arn: aws: iam: : 123456789012: role/DevRole", "accountId": "123456789012", "userName": "DevRole" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-02-21T23: 46: 28Z" }, "sourceIdentity": "source-identity-value-set" } } }