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": { "attributes": { "mfaAuthenticated": "false", "creationDate": "20131102T010628Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIDPPEZS35WEXAMPLE", "arn": "arn:aws:iam::123456789012:role/RoleToBeAssumed", "accountId": "123456789012", "userName": "RoleToBeAssumed" } } }
字段
以下字段可显示在 userIdentity
元素中。
type
-
身份的类型。以下是可能的值:
-
Root
– 已使用您的 Amazon 账户凭证发出请求。如果userIdentity
类型为Root
,并且您为账户设置了别名,则userName
字段包含您的账户别名。有关更多信息,请参阅 Amazon 账户 ID 及其别名。 -
IAMUser
– 已使用 IAM 用户的凭证发出请求。 -
AssumedRole
– 已使用角色通过调用 Amazon Security Token Service (Amazon STS)AssumeRole
API 获得的临时安全凭证发出请求。这可包括适用于 Amazon EC2 的角色和跨账户 API 访问。 -
Role
– 已由具有特定权限的持久 IAM 身份发出请求。角色会话的发出者始终为角色。有关角色的更多信息,请参阅 IAM 用户指南中的角色术语和概念。 -
FederatedUser
– 已使用通过调用 Amazon STSGetFederationToken
API 获取的临时安全凭证发出请求。sessionIssuer
元素指示是使用根还是 IAM 用户凭证调用了该 API。有关临时安全凭证的更多信息,请参阅《IAM 用户指南》中的临时安全凭证。
-
Directory
– 向目录服务发出了请求,类型未知。目录服务包括以下内容:Amazon WorkDocs 和 Amazon QuickSight。 -
AWSAccount
– 请求已由另一个 Amazon 账户发出。 -
AWSService
– 请求已由属于 Amazon 服务的 Amazon 账户发出。例如,Amazon Elastic Beanstalk 代入您的账户中的 IAM 角色来代表您调用其他 Amazon 服务。 -
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
之间的关系:type
userName
描述 Root
(未设置别名)不存在 如果您没有为 Amazon 账户设置别名,则 userName
字段不会出现。有关账户别名的更多信息,请参阅 Amazon 账户 ID 及其别名。请注意,userName
字段绝不包含Root
Root
,因为 是身份类型而不是用户名称。Root
(已设置别名)账户别名 有关 Amazon 账户别名的更多信息,请参阅 Amazon 账户 ID 及其别名。 IAMUser
IAM 用户的用户名 AssumedRole
不存在 对于 AssumedRole
类型,您可在sessionContext
中找到userName
字段,它是 sessionIssuer 元素的组成部分。有关示例条目,请参阅示例。Role
用户定义 sessionContext
和sessionIssuer
部分包含有关角色发出的会话的身份信息。FederatedUser
不存在 sessionContext
和sessionIssuer
部分包含有关已发出联合身份用户会话的身份的信息。Directory
可以存在 例如,值可以是账户别名或关联 Amazon账户 ID 的电子邮件地址。 AWSService
不存在 AWSAccount
不存在 Unknown
可以存在 例如,值可以是账户别名或关联 Amazon账户 ID 的电子邮件地址。 Optional (可选):True
注意
userName
字段包含当记录的事件为错误的用户名输入导致的控制台登录失败时产生的字符串HIDDEN_DUE_TO_SECURITY_REASONS
。在这种情况下,CloudTrail 不记录内容,因为文本可能包含敏感信息,如以下示例中所示:-
用户不小心在用户名称字段中键入了密码。
-
用户单击一个 Amazon 账户的登录页面链接,但键入了另一账户的账户号。
-
用户意外键入了个人电子邮件账户的账户名称、银行登录标识符或某个其他私有 ID。
-
principalId
-
已发出调用的实体的唯一标识符。对于使用临时安全证书发出的请求,此值包括将传递到
AssumeRole
、AssumeRoleWithWebIdentity
或GetFederationToken
API 调用的会话名称。Optional (可选):True
arn
-
已发出调用的委托人的 Amazon Resource Name (ARN)。arn 的最后一个部分包含已发出调用的用户或角色。
Optional (可选):True
accountId
-
拥有已授予请求权限的实体的账户。如果已使用临时安全凭证发出请求,则该账户为拥有已用于获取凭证的 IAM 用户或角色的账户。
Optional (可选):True
accessKeyId
-
用于对请求签名的 访问密钥 ID。如果已使用临时安全证书发出请求,则为临时证书的访问密钥 ID。出于安全原因,
accessKeyId
可能不存在,也可能显示为空字符串。Optional (可选):True
sessionContext
-
如果已使用临时安全证书发出请求,则
sessionContext
提供为这些证书创建的会话的相关信息。在调用任何返回临时证书的 API 时创建会话。此外,当用户在控制台中工作以及当用户使用包括多重验证的 API 发出请求时创建会话。此元素的属性为:
-
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 服务控制策略中的条件,该上下文键可以轻松地在逐项服务或逐项资源的基础上强制使用新方案。有关更多信息,请参阅适用于 Linux 的 Amazon EC2 用户指南 中的实例元数据和用户数据。
Optional (可选):True
-
invokedBy
-
发出请求的 Amazon 服务的名称,例如 Amazon EC2 Auto Scaling 或 Amazon Elastic Beanstalk。
Optional (可选):True
sessionIssuer
-
如果已使用临时安全证书发出请求,则为提供有关证书获取方式的信息的元素。例如,如果已通过代入角色来获取临时安全证书,则此元素提供有关代入的角色的信息。如果已通过使用根或 IAM 用户凭证调用 Amazon STS
GetFederationToken
来获取凭证,则此元素提供有关根账户或 IAM 用户的信息。此元素的属性为:-
type
– 临时安全凭证的源,例如Root
、IAMUser
或Role
。 -
userName
– 已发布会话的用户或角色的友好名称。显示的值取决于sessionIssuer
身份type
。下表显示sessionIssuer type
和userName
之间的关系:sessionIssuer
类型userName
描述 Root
(未设置别名)不存在 如果您未为账户设置别名,则 userName
字段不会出现。有关 Amazon 账户别名的更多信息,请参阅 Amazon 账户 ID 及其别名。请注意,userName
字段绝不包含Root
Root
,因为 是身份类型而不是用户名称。Root
(已设置别名)账户别名 有关 Amazon 账户别名的更多信息,请参阅 Amazon 账户 ID 及其别名。 IAMUser
IAM 用户的用户名 这在联合身份用户使用由 IAMUser
发布的会话时也适用。Role
角色名称 由角色会话中的 IAM 用户、Amazon 服务或 Web 联合身份用户代入的角色。 -
principalId
– 已用于获取凭证的实体的内部 ID。 -
arn
– 已用于获取临时安全凭证的源(账户、IAM 用户或角色)的 ARN。 -
accountId
– 拥有已用于获取凭证的实体的账户。
Optional (可选):True
-
webIdFederationData
-
如果已使用通过 Web 联合身份验证获取的临时安全证书发出请求,则为列出有关身份提供商的信息的元素。此元素的属性为:
-
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
)。有关更多信息,请参阅 IAM 用户指南中的可用于 Web 联合身份的密钥。
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
密钥。请参阅基于 SAML 的联合的可用密钥。 -
对于
WebIdentityUser
,这是用户 ID。请参阅Web 联合身份验证的可用密钥。
-
identityProvider
-
外部身份提供商的委托人名称。只有
SAMLUser
或WebIdentityUser
类型才显示此字段。-
对于
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" }
有关 SAMLUser
和 WebIdentityUser
类型的 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
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
请求,并设置源身份,此处由 source-identity-value-set
表示。用户代入由角色 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
字段显示在事件的 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
" } } }