CloudTrail userIdentity 元素 - AWS CloudTrail

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

CloudTrail userIdentity 元素

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

示例

使用 IAM 用户凭证的 userIdentity

以下示例显示了使用名为的IAM用户的凭据发出的简单请求的userIdentity元素Alice

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

使用临时安全证书的 userIdentity

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

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

userIdentity代表IAM身份中心用户提出的请求

以下示例显示了代表IAM身份中心用户提出的请求的userIdentity元素。

"userIdentity": { "type": "IdentityCenterUser", "accountId": "123456789012", "onBehalfOf": { "userId": "544894e8-80c1-707f-60e3-3ba6510dfac1", "identityStoreArn": "arn:aws:identitystore::123456789012:identitystore/d-9067642ac7" }, "credentialId": "EXAMPLEVHULjJdTUdPJfofVa1sufHDoj7aYcOYcxFVllWR_Whr1fEXAMPLE" }

字段

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

type

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

  • Root— 请求是使用您的 AWS 账户 凭据提出的。如果 userIdentity 类型为 Root,并且您为账户设置了别名,则 userName 字段包含您的账户别名。有关更多信息,请参阅您的 AWS 账户 ID 及其别名

  • IAMUser— 该请求是使用IAM用户的凭据提出的。

  • AssumedRole— 请求是使用临时安全证书发出的,这些证书是通过调用 AWS Security Token Service (AWS STS) 通过角色获得的AssumeRoleAPI。这可能包括适用于 Amazon 的角色EC2和跨账户API访问权限。

  • Role— 请求是使用具有特定权限的永久IAM身份发出的。角色会话的发出者始终为角色。有关角色的更多信息,请参阅IAM用户指南中的角色术语和概念

  • FederatedUser— 该请求是使用通过调用获得的临时安全证书发出的 AWS STS GetFederationTokenAPI。sessionIssuer元素表示API是使用根凭证还是IAM用户凭据调用的。

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

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

  • AWSAccount— 请求是由另一个人提出的 AWS 账户

  • AWSService— 该请求是由属于 AWS 账户 的提出的 AWS 服务。例如, AWS Elastic Beanstalk 在您的账户中IAM扮演一个角色来 AWS 服务 代表您呼叫其他人。

  • IdentityCenterUser— 该请求是代表IAM身份中心用户提出的。

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

Optional (可选):False

AWSAccount并在使用您拥有的typeIAM角色进行跨账户访问时AWSService出现在您的日志中。

示例:由另一个 AWS 账户启动的跨账户访问
  1. 您在自己的账户中拥有一个IAM角色。

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

  3. 由于您拥有该IAM角色,因此您会收到一条日志,显示另一个账户担任了该角色。typeAWSAccount。有关日志条目的示例,请参阅 CloudTrail 日志文件中的AWS STS API事件

示例:服务发起的跨账户访问 AWS
  1. 您在自己的账户中拥有一个IAM角色。

  2. AWS 服务拥有的 AWS 账户将扮演该角色。

  3. 由于您拥有该IAM角色,因此您会收到一条日志,显示该 AWS 服务担任了该角色。typeAWSService

userName

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

type userName 描述
Root(未设置别名) 不存在 如果您尚未为自己设置别名 AWS 账户,则不会显示该userName字段。有关账户别名的更多信息,请参阅您的 AWS 账户 身份证及其别名。请注意,userName 字段不能包含 Root,因为 Root 是身份类型而不是用户名称。
Root(已设置别名) 账户别名 有关 AWS 账户 别名的更多信息,请参阅您的 AWS 账户 身份证及其别名
IAMUser 用户的用户名 IAM

AssumedRole

不存在 对于AssumedRole类型,可以在中找到sessionContext作为sessionIssuer元素一部分的userName字段。有关示例条目,请参阅示例

Role

用户定义 sessionContextsessionIssuer 部分包含有关角色发出的会话的身份信息。
FederatedUser 不存在 sessionContextsessionIssuer 部分包含有关已发出联合身份用户会话的身份的信息。
Directory 可以存在 例如,值可以是账户别名或关联 AWS 账户 ID 的电子邮件地址。
AWSService 不存在
AWSAccount 不存在
IdentityCenterUser 不存在 onBehalfOf部分包含有关发出呼叫的 IAM Identity Center 用户 ID 和身份存储ARN的信息。有关 Ident IAM ity Center 的更多信息,请参阅《AWS IAM Identity Center 用户指南》
Unknown 可以存在 例如,值可以是账户别名或关联 AWS 账户 ID 的电子邮件地址。
注意

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

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

  • 用户单击一个 AWS 账户登录页面的链接,然后键入另一个账户的账号。

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

Optional (可选):True

principalId

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

Optional (可选):True

arn

拨打电话的委托人的 Amazon 资源名称 (ARN)。arn 的最后一个部分包含已发出调用的用户或角色。

Optional (可选):True

accountId

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

如果请求是使用IAM身份中心授权的访问令牌发出的,则该账户拥有IAM身份中心实例。

Optional (可选):True

accessKeyId

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

Optional (可选):True

sessionContext

如果已使用临时安全凭证发出请求,sessionContext 会提供为这些凭证创建的会话的相关信息。当你调用任何返回临时证书的会话时API,你就会创建一个会话。用户在控制台中工作时还会创建会话,并使用APIs包括多因素身份验证在内的请求发出请求。以下属性可能出现在中sessionContext

  • sessionIssuer— 如果用户使用临时安全证书发出请求,则sessionIssuer提供有关用户如何获取证书的信息。例如,如果用户通过代入角色来获取临时安全凭证,则此元素提供有关所代入角色的信息。如果他们获得了带有根或IAM用户凭证的凭据可供调用 AWS STS GetFederationToken,则该元素会提供有关根账户或IAM用户的信息。此元素具有以下属性:

    • type – 临时安全凭证的源,例如 RootIAMUserRole

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

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

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

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

  • webIdFederationData— 如果请求是使用由 Web 联合身份验证获得的临时安全证书发出的,则会webIdFederationData列出有关身份提供者的信息。

    此元素具有以下属性:

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

    • attributes – 提供商报告的应用程序 ID 和用户 ID (例如,适用于 Login with Amazon 的 www.amazon.com:app_idwww.amazon.com:user_id)。

    注意

    省略此字段或该字段的值为空表示不存在有关身份提供者的信息。

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

  • mfaAuthenticated— 该值为 root IAM 用户或使用其凭证进行请求的用户true是否也使用MFA设备进行了身份验证;否则,则为false

  • sourceIdentity – 请参阅本主题中的 AWS STS 来源身份。当用户扮演IAM角色来执行某项操作时,会出现该sourceIdentity字段。 sourceIdentity标识发出请求的原始用户身份,无论该用户的身份是用户、IAM角色、通过SAML基于联合身份IAM验证的用户,还是通过符合 OpenID Connect (OIDC) 的 Web 联合身份验证进行身份验证的用户。有关配置 AWS STS 以收集源身份信息的更多信息,请参阅《IAM用户指南》中的监控和控制以代入角色执行的操作

  • ec2RoleDelivery1.0 如果凭证是由亚马逊EC2实例元数据服务版本 1 (IMDSv1) 提供的,则该值为。2.0如果证书是使用新IMDS方案提供的,则该值为。

    AWS Amazon EC2 实例元数据服务 (IMDS) 提供的凭证包括 ec2: RoleDelivery IAM 上下文密钥。使用此上下文密钥作为IAM策略、资源策略 service-by-service 或 AWS Organizations 服务控制策略中的条件,可以轻松地在或 resource-by-resource 的基础上强制使用新方案。有关更多信息,请参阅 Amazon 用户指南中的实例元数据和EC2用户数据。

Optional (可选):True

invokedBy

当请求是由诸如 Amazon A EC2 uto Scaling 或之 AWS 服务 类的公司提出请求时,发出请求的人的姓名 AWS Elastic Beanstalk。 AWS 服务 只有在发出请求时,才会出现此字段 AWS 服务。这包括服务使用转发访问会话 (FAS)、 AWS 服务 委托人、服务相关角色或使用的服务角色发出的请求。 AWS 服务

Optional (可选):True

onBehalfOf

如果请求是由IAM身份中心呼叫者发出的,则onBehalfOf提供有关发出呼叫的 Identity Center 用户 ID 和身份存储ARN的信息。IAM此元素具有以下属性:

  • userId— 代表其拨打电话的IAM身份中心用户的 ID。

  • identityStoreArn— ARN 代表拨打呼叫的IAM身份中心身份存储库。

Optional (可选):True

credentialId

请求的凭证 ID。只有当呼叫者使用不记名令牌(例如 Ident IAM ity Center 授权的访问令牌)时,才会设置此选项。

Optional (可选):True

with AWS STS APIs SAML 和 Web 联合身份验证的值

AWS CloudTrail 支持使用安全断言标记语言 AWS Security Token Service (AWS STS) 和 Web 联合身份验证进行的 logging (SAML) API 调用。当用户调用和时 AssumeRoleWithWebIdentityAPIs,会 CloudTrail 记录该呼叫AssumeRoleWithSAML并将事件传送到您的 Amazon S3 存储桶。

这些userIdentity元素APIs包含以下值。

type

身份类型。

  • SAMLUser— 该请求是在SAML断言的情况下提出的。

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

principalId

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

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

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

userName

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

  • 对于 SAMLUser,这是 saml:sub 密钥。

  • 对于 WebIdentityUser,这是用户 ID。

identityProvider

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

  • 因为SAMLUser,这是SAML断言的saml:namequalifier关键。

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

    • Amazon Cognito 的 cognito-identity.amazon.com

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

有关userIdentity元素的显示方式SAMLUserWebIdentityUser类型的日志示例,请参阅使用记录IAM和 AWS STS API调用 AWS CloudTrail

AWS STS 来源身份

IAM管理员可以配置 AWS Security Token Service 为要求用户在使用临时证书担任角色时指定其身份。当用户扮演IAM角色或使用代入的角色执行任何操作时,该sourceIdentity字段就会出现。

sourceIdentity字段标识发出请求的原始用户身份,该用户的身份是用户、IAM角色、使用SAML基于联合身份IAM验证的用户,还是使用符合 OpenID Connect (OIDC) 的 Web 联合身份验证进行身份验证的用户。IAM管理员配置后 AWS STS,在事件 CloudTrail 记录中的以下事件和位置中记录sourceIdentity信息:

  • 用户身份代入角色时发出的AssumeRoleWithSAML、或AssumeRoleWithWebIdentity调用。 AWS STS AssumeRole sourceIdentity可以在 AWS STS 通话requestParameters块中找到。

  • 用户身份使用角色担任另一个角色时发出的AssumeRoleWithSAML、或AssumeRoleWithWebIdentity调用,称为角色链。 AWS STS AssumeRole sourceIdentity可以在 AWS STS 通话requestParameters块中找到。

  • 用户身份在担任角色并使用分配的临时证书时发出的 AWS 服务API调用 AWS STS。在服务API事件中sourceIdentity,可以在sessionContext方块中找到。例如,如果用户身份创建新 S3 存储桶,则在 CreateBucket 事件的 sessionContext 数据块中会发生 sourceIdentity

有关如何进行配置 AWS STS 以收集源身份信息的更多信息,请参阅《IAM用户指南》中的监控和控制以代入角色执行的操作。有关记录到 AWS STS 的事件的更多信息 CloudTrail,请参阅《IAM用户指南》 AWS CloudTrail中的使用记录IAM和 AWS STS API呼叫

下面是事件的示例代码段,其中显示了 sourceIdentity 字段。

示例 requestParameters 部分

在以下示例事件片段中,用户发出 AWS STS AssumeRole请求并设置源身份,此处用source-identity-value-set表示。用户扮演由该角色所代表的角色ARNarn:aws:iam::123456789012:role/Assumed_RolesourceIdentity 字段位于事件的 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 部分

在以下示例事件片段中,用户 AWS STS AssumeRole请求代入名为Developer_Role的角色并设置源身份。Admin用户扮演由该角色所代表的角色ARNarn:aws:iam::111122223333:role/Developer_RolesourceIdentity 字段显示在事件的 responseElementsrequestParameters 数据块中。用于代入角色的临时证书、会话令牌字符串以及代入的角色 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来调用 AWS 服务API。用户设置源身份,此处表示为 source-identity-value-set。 该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" } } }