本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CloudTrail 用户身份元素
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" }
要详细了解如何使用userIdidentityStoreArncredentialId、和,请参阅在 IAM Identity Center 用户发起的事件中识别用户 CloudTrail 和会话 在 IAM 身份中心用户指南中。
字段
以下字段可显示在 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 账户 身份证及其别名。请注意,userName字段不能包含Root,因为Root是身份类型而不是用户名称。Root(已设置别名)账户别名 有关 Amazon Web Services 账户 别名的更多信息,请参阅您的 Amazon Web Services 账户 身份证及其别名。 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 用户发起的事件中识别用户 CloudTrail 和会话 在 IAM 身份中心用户指南中。* IAM Identity Center 会在两个登录事件 CloudTrail 中发出
additionalEventData元素下方的userName字段。有关更多信息,请参阅 IAM I dentity Center 用户指南中的登录 CloudTrail 事件中的用户名。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 时,会创建会话。用户在控制台中工作时还会创建会话,并使用 APIs 包括多因素身份验证在内的请求发出请求。以下属性可以出现在sessionContext中:-
sessionIssuer– 如果用户使用临时安全凭证发出请求,sessionIssuer会提供有关凭证获取方式的信息。例如,如果用户通过代入角色来获取临时安全凭证,则此元素提供有关所代入角色的信息。如果用户通过使用根或 IAM 用户凭证调用 Amazon STSGetFederationToken来获取凭证,则此元素提供有关根账户或 IAM 用户的信息。此元素具有以下属性:-
type– 临时安全凭证的源,例如Root、IAMUser或Role。 -
userName– 已发布会话的用户或角色的友好名称。显示的值取决于sessionIssuer身份type。下表显示sessionIssuer type和userName之间的关系:sessionIssuer类型userName说明 Root(未设置别名)不存在 如果您未为账户设置别名,则 userName字段不会出现。有关 Amazon Web Services 账户 别名的更多信息,请参阅您的 Amazon Web Services 账户 身份证及其别名。请注意,userName字段不能包含Root,因为Root是身份类型而不是用户名称。Root(已设置别名)账户别名 有关 Amazon Web Services 账户 别名的更多信息,请参阅您的 Amazon 账户 ID 及其别名。 IAMUserIAM 用户的用户名 这在联合身份用户使用由 IAMUser发布的会话时也适用。Role角色名称 由 IAM 用户或 Web 联合身份用户在角色会话中担任的角色。 Amazon Web Services 服务 -
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用于管理账户或委托管理员呼叫时的临时会话 Amazon STSAssumedRoot。有关更多信息,请参阅 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—1.0如果凭证是由亚马逊 EC2 实例元数据服务版本 1 (IMDSv1) 提供的,则该值为。如果凭证是使用新的 IMDS 方案提供的,则值为2.0。Amazon 亚马逊 EC2 实例元数据服务 (IMDS) 提供的凭证包括 ec2: RoleDelivery IAM 上下文密钥。通过在 IAM 策略、资源策略 service-by-service或 Amazon Organizations 服务控制策略中使用上下文密钥作为条件,此上下文密钥便于在或 resource-by-resource的基础上强制使用新方案。有关更多信息,请参阅 Amazon 用户指南中的实例元数据和 EC2 用户数据。
Optional (可选):True
-
invokedBy-
当请求是由诸如 Amazon A EC2 uto Scaling 或之 Amazon Web Services 服务 类的公司提出请求时,发出请求的人的姓名 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-
如果请求是在范围内(例如 Lambda 或 Amazon ECS)发出的,则它会提供与请求相关的资源或证书的相关信息。 Amazon Web Services 服务此元素可以包含以下属性:
-
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 联合身份验证的值 Amazon STS APIs
Amazon CloudTrail 支持使用安全断言标记语言 Amazon Security Token Service (SAML Amazon 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 和 Amazon STS API 调用 Amazon CloudTrail。
Amazon STS 来源身份
IAM 管理员可以配置 Amazon Security Token Service 为要求用户在使用临时证书代入角色时指定其身份。sourceIdentity 字段出现在用户代入 IAM 角色或使用代入的角色执行任何操作的事件中。
sourceIdentity 字段识别发出请求的原始用户身份,无论该用户的身份是 IAM 用户、IAM 角色、使用基于 SAML 的联合身份进行身份验证的用户,还是使用符合 OpenID Connect (OIDC) 的 Web 联合身份进行身份验证的用户。IAM 管理员配置后 Amazon STS,在事件 CloudTrail 记录中的以下事件和位置中记录sourceIdentity信息:
-
用户身份代入角色时发出的
AssumeRoleWithSAML、或AssumeRoleWithWebIdentity调用。 Amazon STSAssumeRolesourceIdentity可以在 Amazon STS 通话requestParameters块中找到。 -
用户身份使用角色担任另一个角色时发出的
AssumeRoleWithSAML、或AssumeRoleWithWebIdentity调用,称为角色链。 Amazon STSAssumeRolesourceIdentity可以在 Amazon STS 通话requestParameters块中找到。 -
Amazon 服务 API 调用是用户身份在担任角色并使用分配的临时证书时进行的 Amazon STS。在服务 API 事件中,
sourceIdentity可以位于sessionContext数据块中。例如,如果用户身份创建新 S3 存储桶,则在CreateBucket事件的sessionContext数据块中会发生sourceIdentity。
有关如何进行配置 Amazon STS 以收集源身份信息的更多信息,请参阅 IAM 用户指南中的监控和控制使用代入角色执行的操作。有关记录到 Amazon STS 的事件的更多信息 CloudTrail,请参阅 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" } } }