本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CloudTrail 用户身份元素
AWS 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" }
要详细了解如何使用userIdidentityStoreArncredentialId、和,请参阅在 IAM Identity Center 用户发起的事件中识别用户 CloudTrail 和会话 在 IAM 身份中心用户指南中。
字段
以下字段可显示在 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 STSGetFederationTokenAPI 获得的临时安全证书发出的。sessionIssuer元素指示是使用根还是 IAM 用户凭证调用了该 API。有关临时安全凭证的更多信息,请参阅《IAM 用户指南》中的临时安全凭证。
-
Directory– 向目录服务发出了请求,类型未知。目录服务包括以下内容:Amazon WorkDocs 和 Amazon Quick Suite。 -
AWSAccount— 请求是由另一个人提出的 AWS 账户 -
AWSService— 该请求是由属于 AWS 账户 的提出的 AWS 服务。例如, AWS Elastic Beanstalk 在您的账户中扮演一个 IAM 角色来 AWS 服务 代表您呼叫其他人。 -
IdentityCenterUser– 代表 IAM Identity Center 用户发出的请求。 -
Unknown— 请求使用 CloudTrail 无法确定的身份类型发出。
Optional (可选):False
当使用您拥有的 IAM 角色进行跨账户访问时,日志中将显示
type的AWSAccount和AWSService。示例:由另一个 AWS 账户启动的跨账户访问
-
您在自己的账户中拥有一个 IAM 角色。
-
另一个 AWS 账户切换到该角色来代替您的账户的角色。
-
由于您拥有 IAM 角色,因此您将收到一个显示已代入此角色的其他账户的日志。
type为AWSAccount。有关日志条目的示例,请参阅 CloudTrail 日志文件中的AWS STS API 事件。
示例:服务发起的跨账户访问 AWS
-
您在自己的账户中拥有一个 IAM 角色。
-
AWS 服务拥有的 AWS 账户将扮演该角色。
-
由于您拥有 IAM 角色,因此您将收到一个显示已代入此角色的 AWS 服务的日志。
type为AWSService。
-
userName-
已发出调用的身份的友好名称。
userName中显示的值基于type中的值。下表显示type和userName之间的关系:typeuserName说明 Root(未设置别名)不存在 如果您尚未为自己设置别名 AWS 账户,则不会显示该 userName字段。有关账户别名的更多信息,请参阅您的 AWS 账户 身份证及其别名。请注意,userName字段不能包含Root,因为Root是身份类型而不是用户名称。Root(已设置别名)账户别名 有关 AWS 账户 别名的更多信息,请参阅您的 AWS 账户 身份证及其别名。 IAMUserIAM 用户的用户名 AssumedRole不存在 对于 AssumedRole类型,您可以在 sessionIssuer 元素的sessionContext中找到userName字段。有关示例条目,请参阅示例。Role用户定义 sessionContext和sessionIssuer部分包含有关角色发出的会话的身份信息。FederatedUser不存在 sessionContext和sessionIssuer部分包含有关已发出联合身份用户会话的身份的信息。Directory可以存在 例如,值可以是账户别名或关联 AWS 账户 ID 的电子邮件地址。 AWSService不存在 AWSAccount不存在 IdentityCenterUser不在场* onBehalfOf部分包含有关发出调用的 IAM Identity Center 用户 ID 和身份存储 ARN 的信息。要详细了解如何使用这两个字段,请参阅在 IAM Identity Center 用户发起的事件中识别用户 CloudTrail 和会话 在 IAM 身份中心用户指南中。* IAM Identity Center 会在两个登录事件 CloudTrail 中发出
additionalEventData元素下方的userName字段。有关更多信息,请参阅 IAM I dentity Center 用户指南中的登录 CloudTrail 事件中的用户名。Unknown可以存在 例如,值可以是账户别名或关联 AWS 账户 ID 的电子邮件地址。 注意
当记录的事件为由错误用户名称输入导致的控制台登录失败时,
userName字段包含字符串HIDDEN_DUE_TO_SECURITY_REASONS。在此情况下,CloudTrail 不记录内容,因为文本可能包含敏感信息,如以下示例所示:-
用户不小心在用户名称字段中键入了密码。
-
用户单击一个 AWS 账户登录页面的链接,然后键入另一个账户的账号。
-
用户意外键入了个人电子邮件账户的账户名称、银行登录标识符或某个其他私有 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 时,会创建会话。用户在控制台中工作时还会创建会话,并使用 APIs 包括多因素身份验证在内的请求发出请求。以下属性可以出现在sessionContext中:-
sessionIssuer– 如果用户使用临时安全凭证发出请求,sessionIssuer会提供有关凭证获取方式的信息。例如,如果用户通过代入角色来获取临时安全凭证,则此元素提供有关所代入角色的信息。如果用户通过使用根或 IAM 用户凭证调用 AWS STSGetFederationToken来获取凭证,则此元素提供有关根账户或 IAM 用户的信息。此元素具有以下属性:-
type– 临时安全凭证的源,例如Root、IAMUser或Role。 -
userName– 已发布会话的用户或角色的友好名称。显示的值取决于sessionIssuer身份type。下表显示sessionIssuer type和userName之间的关系:sessionIssuer类型userName说明 Root(未设置别名)不存在 如果您未为账户设置别名,则 userName字段不会出现。有关 AWS 账户 别名的更多信息,请参阅您的 AWS 账户 身份证及其别名。请注意,userName字段不能包含Root,因为Root是身份类型而不是用户名称。Root(已设置别名)账户别名 有关 AWS 账户 别名的更多信息,请参阅您的 AWS 账户 ID 及其别名。 IAMUserIAM 用户的用户名 这在联合身份用户使用由 IAMUser发布的会话时也适用。Role角色名称 由 IAM 用户或 Web 联合身份用户在角色会话中担任的角色。 AWS 服务 -
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— 该值true用于管理账户或委托管理员呼叫时的临时会话 AWS STSAssumedRoot。有关更多信息,请参阅 IAM 用户指南 CloudTrail中的跟踪特权任务。此为可选字段。 -
attributes— 会话的属性。-
creationDate– 颁发临时安全凭证时的日期和时间。用 ISO 8601 基本表示法表示。 -
mfaAuthenticated– 如果将凭证用于请求的根用户或 IAM 用户还通过 MFA 设备进行身份验证,则值为true;否则为false。
-
-
sourceIdentity– 请参阅本主题中的 AWS STS 来源身份。sourceIdentity字段出现在用户代入 IAM 角色执行操作的事件中。sourceIdentity识别发出请求的原始用户身份,无论该用户的身份是 IAM 用户、IAM 角色、通过基于 SAML 的联合身份验证进行身份验证的用户,还是通过符合 OpenID Connect(OIDC)的 Web 身份联合验证进行身份验证的用户。有关配置 AWS STS 以收集源身份信息的更多信息,请参阅 IAM 用户指南中的监控和控制使用代入角色执行的操作。 -
ec2RoleDelivery—1.0如果凭证是由亚马逊 EC2 实例元数据服务版本 1 (IMDSv1) 提供的,则该值为。如果凭证是使用新的 IMDS 方案提供的,则值为2.0。AWS 亚马逊 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 Identity Center 调用者发出,
onBehalfOf会提供有关发出调用的 IAM Identity Center 用户 ID 和身份存储 ARN 的信息。此元素具有以下属性:-
userId– 代表其发出调用的 IAM Identity Center 用户 ID。 -
identityStoreArn– 代表其发出调用的 IAM Identity Center 身份存储的 ARN。
Optional (可选):True
-
inScopeOf-
如果请求是在范围内(例如 Lambda 或 Amazon ECS)发出的,则它会提供与请求相关的资源或证书的相关信息。 AWS 服务此元素可以包含以下属性:
-
sourceArn— 调用请求的资源的 ARN。 service-to-service -
sourceAccount— 的所有者账户 IDsourceArn。它与... 一起出现sourceArn。 -
issuerType— 的资源类型credentialsIssuedTo。例如AWS::Lambda::Function。 -
credentialsIssuedTo— 与颁发证书的环境相关的资源。
Optional (可选):True
-
credentialId-
请求的凭证 ID。只有当调用者使用持有者令牌(例如 IAM Identity Center 授权的访问令牌)时,才会设置此选项。
Optional (可选):True
SAML 和 Web 联合身份验证的值 AWS STS APIs
AWS CloudTrail 支持使用安全断言标记语言 AWS Security Token Service (SAML AWS STS) 和 Web 联合身份验证进行的 logging () API 调用。当用户调用和时 AssumeRoleWithWebIdentity APIs,会 CloudTrail 记录该呼叫AssumeRoleWithSAML并将事件传送到您的 Amazon S3 存储桶。
这些userIdentity元素 APIs 包含以下值。
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 联合身份验证提供商的发布者名称。它可以是您配置的提供商,如下所示:-
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元素的显示方式SAMLUser和WebIdentityUser类型的日志示例,请参阅使用记录 IAM 和 AWS STS API 调用 AWS CloudTrail。
AWS STS 来源身份
IAM 管理员可以配置 AWS Security Token Service 为要求用户在使用临时证书代入角色时指定其身份。sourceIdentity 字段出现在用户代入 IAM 角色或使用代入的角色执行任何操作的事件中。
sourceIdentity 字段识别发出请求的原始用户身份,无论该用户的身份是 IAM 用户、IAM 角色、使用基于 SAML 的联合身份进行身份验证的用户,还是使用符合 OpenID Connect (OIDC) 的 Web 联合身份进行身份验证的用户。IAM 管理员配置后 AWS STS,在事件 CloudTrail 记录中的以下事件和位置中记录sourceIdentity信息:
-
用户身份代入角色时发出的
AssumeRoleWithSAML、或AssumeRoleWithWebIdentity调用。 AWS STSAssumeRolesourceIdentity可以在 AWS STS 通话requestParameters块中找到。 -
用户身份使用角色担任另一个角色时发出的
AssumeRoleWithSAML、或AssumeRoleWithWebIdentity调用,称为角色链。 AWS STSAssumeRolesourceIdentity可以在 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请求并设置源身份,此处用表示。用户代入由角色 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 部分
在以下示例事件片段中,用户 AWS 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来调用 AWS 服务 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" } } }