CloudTrail userIdentity 元素
Amazon Identity and Access Management (IAM) 提供不同类型的身份。userIdentity 元素包含有关发出请求的 IAM 身份的类型的详细信息,以及使用了哪些凭证。如果使用的是临时证书,则该元素显示证书是如何获取的。
示例
userIdentity 与 IAM 用户凭证
以下示例显示使用名为 Alice 的 IAM 用户的证书发出的简单请求的 userIdentity 元素。
"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" } } }
代表 IAM Identity Center 用户发出的请求的 userIdentity
以下示例显示代表 IAM Identity Center 用户发出的请求的 userIdentity 元素。
"userIdentity": { "type": "IdentityCenterUser", "accountId": "123456789012", "onBehalfOf": { "userId": "544894e8-80c1-707f-60e3-3ba6510dfac1", "identityStoreArn": "arn:aws:identitystore::123456789012:identitystore/d-9067642ac7" }, "credentialId": "EXAMPLEVHULjJdTUdPJfofVa1sufHDoj7aYcOYcxFVllWR_Whr1fEXAMPLE" }
要详细了解如何使用 userId、identityStoreArn 和 credentialId,请参阅《IAM Identity Center 用户指南》中的 Identifying the user and session in IAM Identity Center user-initiated CloudTrail events。
Fields
以下字段可显示在 userIdentity 元素中。
type-
身份的类型。以下是可能的值:
-
Root– 已使用您的 Amazon Web Services 账户 凭证发出请求。如果userIdentity类型为Root,并且您为账户设置了别名,则userName字段包含您的账户别名。有关更多信息,请参阅您的 Amazon Web Services 账户 ID 及其别名。 -
IAMUser– 已使用 IAM 用户的凭证发出请求。 -
AssumedRole– 已使用角色通过调用 Amazon Security Token Service (Amazon STS)AssumeRoleAPI 获得的临时安全凭证发出请求。这可包括适用于 Amazon EC2 的角色和跨账户 API 访问。 -
Role– 已由具有特定权限的持久 IAM 身份发出请求。角色会话的发出者始终为角色。有关角色的更多信息,请参阅 IAM 用户指南中的角色术语和概念。 -
FederatedUser– 已使用通过调用 Amazon STSGetFederationTokenAPI 获取的临时安全凭证发出请求。sessionIssuer元素指示是使用根还是 IAM 用户凭证调用了该 API。有关临时安全凭证的更多信息,请参阅《IAM 用户指南》中的临时安全凭证。
-
Directory– 向目录服务发出了请求,类型未知。目录服务包括:Amazon WorkDocs 和 Amazon Quick Suite。 -
AWSAccount– 请求已由另一个 Amazon Web Services 账户 发出。 -
AWSService– 请求已由属于 Amazon Web Services 服务 的 Amazon Web Services 账户 发出。例如,Amazon Elastic Beanstalk 代入您账户中的 IAM 角色来代表您调用其他 Amazon Web Services 服务。 -
IdentityCenterUser– 代表 IAM Identity Center 用户发出的请求。 -
Unknown– 已使用 CloudTrail 无法确定的身份类型发出请求。
Optional (可选):False
当使用您拥有的 IAM 角色进行跨账户访问时,日志中将显示
type的AWSAccount和AWSService。示例:由另一个 Amazon 账户启动的跨账户访问
-
您在自己的账户中拥有一个 IAM 角色。
-
另一个 Amazon 账户将切换到该角色以代入您的账户的角色。
-
由于您拥有 IAM 角色,因此您将收到一个显示已代入此角色的其他账户的日志。
type为AWSAccount。有关示例日志条目,请参阅 CloudTrail 日志文件中的 Amazon STS API 事件。
示例:由 Amazon 服务启动的跨账户访问
-
您在自己的账户中拥有一个 IAM 角色。
-
Amazon 服务拥有的 Amazon 账户将代入此角色。
-
由于您拥有 IAM 角色,因此您将收到一个显示已代入此角色的 Amazon 服务的日志。
type为AWSService。
-
userName-
已发出调用的身份的友好名称。
userName中显示的值基于type中的值。下表显示type和userName之间的关系:typeuserName描述 Root(未设置别名)不存在 如果您没有为 Amazon Web Services 账户 设置别名,则不会出现 userName字段。有关账户别名的更多信息,请参阅您的 Amazon Web Services 账户 ID 及其别名。请注意,userName字段不能包含Root,因为Root是身份类型而不是用户名称。Root(已设置别名)账户别名 有关 Amazon Web Services 账户 别名的更多信息,请参阅您的 Amazon Web Services 账户 ID 及其别名。 IAMUserIAM 用户的用户名 AssumedRole不存在 对于 AssumedRole类型,您可以在 sessionIssuer 元素的sessionContext中找到userName字段。有关示例条目,请参阅示例。Role用户定义 sessionContext和sessionIssuer部分包含有关角色发出的会话的身份信息。FederatedUser不存在 sessionContext和sessionIssuer部分包含有关已发出联合身份用户会话的身份的信息。Directory可以存在 例如,值可以是账户别名或关联 Amazon Web Services 账户 ID 的电子邮件地址。 AWSService不存在 AWSAccount不存在 IdentityCenterUser不存在* onBehalfOf部分包含有关发出调用的 IAM Identity Center 用户 ID 和身份存储 ARN 的信息。要详细了解如何使用这两个字段,请参阅《IAM Identity Center 用户指南》中的 Identifying the user and session in IAM Identity Center user-initiated CloudTrail events。* IAM Identity Center 会在两个登录 CloudTrail 事件中的
additionalEventData元素下发出userName字段。有关更多信息,请参阅《IAM Identity Center 用户指南》中的 Username in sign-in CloudTrail events。Unknown可以存在 例如,值可以是账户别名或关联 Amazon Web Services 账户 ID 的电子邮件地址。 注意
userName字段包含当记录的事件为错误的用户名输入导致的控制台登录失败时产生的字符串HIDDEN_DUE_TO_SECURITY_REASONS。在这种情况下,CloudTrail 不记录内容,因为文本可能包含敏感信息,如以下示例中所示:-
用户不小心在用户名称字段中键入了密码。
-
用户单击一个 Amazon 账户的登录页面链接,但键入了另一账户的账户号。
-
用户意外键入了个人电子邮件账户的账户名称、银行登录标识符或某个其他私有 ID。
Optional (可选):True
-
principalId-
已发出调用的实体的唯一标识符。对于使用临时安全证书发出的请求,此值包括将传递到
AssumeRole、AssumeRoleWithWebIdentity或GetFederationTokenAPI 调用的会话名称。Optional (可选):True
arn-
已发出调用的委托人的 Amazon Resource Name (ARN)。arn 的最后一个部分包含已发出调用的用户或角色。
Optional (可选):True
accountId-
拥有已授予请求权限的实体的账户。如果已使用临时安全凭证发出请求,则该账户为拥有用于获取凭证的 IAM 用户或角色的账户。
如果已使用 IAM Identity Center 授权的访问令牌发出请求,则该账户为拥有 IAM Identity Center 实例的账户。
Optional (可选):True
accessKeyId-
已用于对请求签名的访问密钥 ID。如果已使用临时安全证书发出请求,则为临时证书的访问密钥 ID。出于安全原因,
accessKeyId可能不存在,也可能显示为空字符串。Optional (可选):True
sessionContext-
如果已使用临时安全凭证发出请求,
sessionContext会提供为这些凭证创建的会话的相关信息。当您调用任何返回临时凭证的 API 时,会创建会话。当用户在控制台中工作以及使用包含多重身份验证的 API 发出请求时,也会创建会话。以下属性可以出现在sessionContext中:-
sessionIssuer– 如果用户使用临时安全凭证发出请求,sessionIssuer会提供有关凭证获取方式的信息。例如,如果用户通过代入角色来获取临时安全凭证,则此元素提供有关所代入角色的信息。如果用户通过使用根或 IAM 用户凭证调用 Amazon STSGetFederationToken来获取凭证,则此元素提供有关根账户或 IAM 用户的信息。此元素具有以下属性:-
type– 临时安全凭证的源,例如Root、IAMUser或Role。 -
userName– 已发布会话的用户或角色的友好名称。显示的值取决于sessionIssuer身份type。下表显示sessionIssuer type和userName之间的关系:sessionIssuertypeuserName描述 Root(未设置别名)不存在 如果您未为账户设置别名,则 userName字段不会出现。有关 Amazon Web Services 账户 别名的更多信息,请参阅您的 Amazon Web Services 账户 ID 及其别名。请注意,userName字段不能包含Root,因为Root是身份类型而不是用户名称。Root(已设置别名)账户别名 有关 Amazon Web Services 账户 别名的更多信息,请参阅您的 Amazon 账户 ID 及其别名。 IAMUserIAM 用户的用户名 这在联合身份用户使用由 IAMUser发布的会话时也适用。Role角色名称 由角色会话中的 IAM 用户、Amazon Web Services 服务 或 Web 身份联合用户代入的角色。 -
principalId– 已用于获取凭证的实体的内部 ID。 -
arn– 已用于获取临时安全凭证的源(账户、IAM 用户或角色)的 ARN。 -
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_id和www.amazon.com:user_id)。
注意
省略此字段或存在此字段且值为空表示没有关于身份提供者的信息。
-
-
assumedRoot– 当管理账户或委派管理员调用 Amazon STSAssumedRoot时,临时会话的值为true。有关更多信息,请参阅《IAM 用户指南》中的在 CloudTrail 中跟踪特权任务。此为可选字段。 -
attributes– 会话的属性。-
creationDate– 颁发临时安全凭证时的日期和时间。用 ISO 8601 基本表示法表示。 -
mfaAuthenticated– 如果将凭证用于请求的根用户或 IAM 用户还通过 MFA 设备进行身份验证,则值为true;否则为false。
-
-
sourceIdentity– 请参阅本主题中的 Amazon STS 源身份。sourceIdentity字段出现在用户代入 IAM 角色执行操作的事件中。sourceIdentity识别发出请求的原始用户身份,无论该用户的身份是 IAM 用户、IAM 角色、通过基于 SAML 的联合身份验证进行身份验证的用户,还是通过符合 OpenID Connect(OIDC)的 Web 身份联合验证进行身份验证的用户。有关如何配置 Amazon STS 以收集源身份信息的详细说明,请参阅《IAM 用户指南》中的监控和控制使用所担任角色执行的操作。 -
ec2RoleDelivery- 如果凭证是由 Amazon EC2 实例元数据服务版本 1(IMDSv1)提供的,则该值为1.0。如果凭证是使用新的 IMDS 方案提供的,则值为2.0。由 Amazon EC2 实例元数据服务(IMDS)提供的 Amazon 凭证包括 ec2:RoleDelivery IAM 上下文键。通过将此上下文键用作 IAM policy、资源策略或 Amazon Organizations 服务控制策略中的条件,该上下文键可以轻松地在逐项服务或逐项资源的基础上强制使用新方案。有关更多信息,请参阅《Amazon EC2 用户指南》中的实例元数据和用户数据。
Optional (可选):True
-
invokedBy-
当请求由 Amazon Web Services 服务(例如 Amazon EC2 Auto Scaling 或 Amazon Elastic Beanstalk)发出时,发出请求的 Amazon Web Services 服务 的名称。仅当 Amazon Web Services 服务 发出请求时,此字段才会出现。这包括使用转发访问会话(FAS)的服务、Amazon Web Services 服务 主体、服务相关角色或 Amazon Web Services 服务 使用的服务角色所发出的请求。
Optional (可选):True
onBehalfOf-
如果请求由 IAM Identity Center 调用者发出,
onBehalfOf会提供有关发出调用的 IAM Identity Center 用户 ID 和身份存储 ARN 的信息。此元素具有以下属性:-
userId– 代表其发出调用的 IAM Identity Center 用户 ID。 -
identityStoreArn– 代表其发出调用的 IAM Identity Center 身份存储的 ARN。
Optional (可选):True
-
inScopeOf-
如果请求是在 Amazon Web Services 服务(例如 Lambda 或 Amazon ECS)的范围内发出的,则它提供有关与请求相关的资源或凭证的信息。此元素可以包含以下属性:
-
sourceArn– 调用服务到服务请求的资源的 ARN。 -
sourceAccount–sourceArn的所有者账户 ID。它与sourceArn一起出现。 -
issuerType–credentialsIssuedTo的资源类型。例如AWS::Lambda::Function。 -
credentialsIssuedTo– 与颁发凭证的环境相关的资源。
Optional (可选):True
-
credentialId-
请求的凭证 ID。只有当调用者使用持有者令牌(例如 IAM Identity Center 授权的访问令牌)时,才会设置此选项。
Optional (可选):True
用于 SAML 和 Web 联合身份验证的 Amazon STS API 的值
Amazon CloudTrail 支持记录用安全断言标记语言 (SAML) 和 Web 联合身份验证进行的 Amazon Security Token Service (Amazon STS) API 调用。在用户调用 AssumeRoleWithSAML 和 AssumeRoleWithWebIdentity API 时,CloudTrail 会记录该调用并将相应事件提交到您的 Amazon S3 存储桶。
这些 API 的 userIdentity 元素包含以下值。
type-
身份类型。
-
SAMLUser– 已使用 SAML 断言发出请求。 -
WebIdentityUser– 已通过 Web 联合身份提供商发出请求。
-
principalId-
已发出调用的实体的唯一标识符。
-
对于
SAMLUser,这是saml:namequalifier和saml:sub密钥的组合。 -
对于
WebIdentityUser,这是发布者、应用程序 ID 和用户 ID 的组合。
-
userName-
已发出调用的身份的名称。
-
对于
SAMLUser,这是saml:sub密钥。 -
对于
WebIdentityUser,这是用户 ID。
-
identityProvider-
外部身份提供商的委托人名称。只有
SAMLUser或WebIdentityUser类型才显示此字段。-
对于
SAMLUser,这是 SAML 断言的saml:namequalifier密钥。 -
对于
WebIdentityUser,这是 Web 联合身份验证提供商的发布者名称。它可以是您配置的提供商,如下所示:-
cognito-identity.amazon.comAmazon Cognito 的 -
www.amazon.comLogin with Amazon 的 -
accounts.google.comGoogle 的 -
graph.facebook.comFacebook 的
-
-
下面是 userIdentity 操作的示例 AssumeRoleWithWebIdentity 元素。
"userIdentity": { "type": "WebIdentityUser", "principalId": "accounts.google.com:application-id.apps.googleusercontent.com:user-id", "userName": "user-id", "identityProvider": "accounts.google.com" }
有关 SAMLUser 和 WebIdentityUser 类型的 userIdentity 元素如何显示的日志示例,请参阅使用 Amazon CloudTrail 记录 IAM 和 Amazon STS API 调用。
Amazon STS 源身份
IAM 管理员可以配置 Amazon Security Token Service,要求用户在使用临时凭证代入角色时指定其身份。sourceIdentity 字段出现在用户代入 IAM 角色或使用代入的角色执行任何操作的事件中。
sourceIdentity 字段识别发出请求的原始用户身份,无论该用户的身份是 IAM 用户、IAM 角色、使用基于 SAML 的联合身份进行身份验证的用户,还是使用符合 OpenID Connect (OIDC) 的 Web 联合身份进行身份验证的用户。在 IAM 管理员配置 Amazon STS 后,CloudTrail 在事件记录内的以下事件和位置记录 sourceIdentity 信息:
-
用户身份在代入角色时执行的 Amazon STS
AssumeRole、AssumeRoleWithSAML或AssumeRoleWithWebIdentity调用。sourceIdentity可以出现在 Amazon STS 调用的requestParameters的数据块中。 -
如果用户身份使用一个角色来代入另一个角色(称为角色链),则会调用 Amazon STS
AssumeRole、AssumeRoleWithSAML或AssumeRoleWithWebIdentity。sourceIdentity位于 Amazon STS 调用的requestParameters块中。 -
用户身份在代入角色并使用 Amazon STS 指定的临时凭证时进行的 Amazon 服务 API 调用。在服务 API 事件中,
sourceIdentity可以位于sessionContext数据块中。例如,如果用户身份创建新 S3 存储桶,则在CreateBucket事件的sessionContext数据块中会发生sourceIdentity。
有关如何配置 Amazon STS 以收集源身份信息的详细说明,请参阅 IAM 用户指南中的监测和控制使用所代入角色执行的操作。有关记录到 CloudTrail 的 Amazon STS 事件的更多信息,请参阅 IAM 用户指南中的使用 Amazon CloudTrail 记录 IAM 和 Amazon STS API 调用。
下面是事件的示例代码段,其中显示了 sourceIdentity 字段。
示例 requestParameters 部分
在以下示例事件代码段中,用户发出 Amazon STS AssumeRole 请求,并设置源身份,此处由 表示。用户代入由角色 ARN source-identity-value-setarn: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 字段显示在事件的 responseElements 和 requestParameters 数据块中。用于代入角色的临时证书、会话令牌字符串以及代入的角色 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。用户设置源身份,此处由 source-identity-value-set 表示。sourceIdentity 字段位于 userIdentity 数据块中,处在事件的 sessionContext 数据块内。
{ "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" } } }