本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudTrail userIdentity 元素
AWS Identity and Access Management (IAM) 提供不同類型的身分。userIdentity
元素包含提出請求之 IAM 身分類型及所使用之登入資料的詳細資訊。如果使用暫時性登入資料,此元素會說明登入資料的取得方式。
範例
使用 IAM 使用者登入資料的 userIdentity
下列範例顯示使用名為 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" ) } }
userIdentity
代表 IAM Identity Center 使用者提出的請求
下列範例顯示代表 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 使用者起始 CloudTrail 事件中識別使用者和工作階段
IAM 身分中心使用者指南中的 。
欄位
userIdentity
元素中可能會顯示下列欄位。
type
-
身分的類型。可能的值如下:
-
Root
– 請求是使用您的 AWS 帳戶 登入資料提出。如果userIdentity
類型為Root
,而且您為帳戶設定了別名,則userName
欄位會包含您的帳戶別名。如需詳細資訊,請參閱您的 AWS 帳戶 ID 和其別名。 -
IAMUser
- 使用 IAM 使用者的登入資料提出請求。 -
AssumedRole
– 請求是使用透過 角色呼叫 AWS Security Token Service (AWS STS)AssumeRole
取得的臨時安全登入資料提出API。這可以包含 Amazon 和跨帳戶存取的角色EC2。 API -
Role
– 請求是以具有特定許可的持久IAM性身分提出。角色工作階段的發起者永遠都是該角色。如需角色的詳細資訊,請參閱IAM《 使用者指南》中的角色術語和概念。 -
FederatedUser
– 請求是透過呼叫 取得的 AWS STSGetFederationToken
臨時安全登入資料提出API。sessionIssuer
元素會指出 API 是使用根登入資料還是IAM使用者登入資料呼叫。如需臨時安全登入資料的詳細資訊,請參閱IAM《 使用者指南》中的臨時安全登入資料。
-
Directory
- 已對 Directory Service 提出請求,且類型未知。目錄服務包括下列項目:Amazon WorkDocs 和 Amazon QuickSight。 -
AWSAccount
– 請求是由另一個 提出 AWS 帳戶 -
AWSService
– 請求是由屬於 AWS 帳戶 的 提出 AWS 服務。例如, AWS Elastic Beanstalk 假設帳戶中的角色 AWS 服務 代表您呼叫其他 IAM 。 -
IdentityCenterUser
– 請求是代表 IAM Identity Center 使用者提出。 -
Unknown
– 請求是以 CloudTrail 無法判斷的身分類型提出。
選用:False
如果有使用您擁有之 IAM 角色的跨帳戶存取,您日誌中的
type
會顯示AWSAccount
和AWSService
。範例:由其他 AWS 帳戶啟動的跨帳戶存取
-
您在帳戶中擁有 IAM 角色。
-
另一個 AWS 帳戶會切換到該角色,以擔任您帳戶的角色。
-
由於您擁有 IAM 角色,因此會收到日誌,顯示其他帳戶擔任該角色。
type
為AWSAccount
。如需日誌項目範例,請參閱AWS STS API CloudTrail 日誌檔案中的事件。
範例:由 AWS 服務啟動的跨帳戶存取
-
您在帳戶中擁有 IAM 角色。
-
AWS 服務擁有 AWS 的帳戶會擔任該角色。
-
由於您擁有 IAM 角色,因此會收到日誌,顯示 AWS 服務擔任該角色。
type
為AWSService
。
-
userName
-
發出呼叫之身分的易記名稱。出現在
userName
中的值取決於type
中的值。下表顯示type
與userName
之間的關係:type
userName
描述 Root
(未設定別名)不存在 如果您尚未為 設定別名 AWS 帳戶,則不會顯示 userName
欄位。如需帳戶別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。請注意,userName
欄位不能包含Root
,因為Root
是身分類型,不是使用者名稱。Root
(已設定別名)帳戶別名 如需 AWS 帳戶 別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。 IAMUser
IAM 使用者的使用者名稱 AssumedRole
不存在 針對 AssumedRole
類型,您可以在sessionContext
中找到屬於 sessionIssuer 元素一部分的userName
欄位。如需範例項目,請參閱「範例」。Role
使用者定義 sessionContext
和sessionIssuer
區段包含替角色發起工作階段之身分的相關資訊。FederatedUser
不存在 sessionContext
和sessionIssuer
區段包含替聯合身分使用者發出工作階段之身分的相關資訊。Directory
可以存在 例如,值可以是帳戶別名或相關聯 AWS 帳戶 ID 的電郵地址。 AWSService
不存在 AWSAccount
不存在 IdentityCenterUser
不存在 onBehalfOf
本節包含有關進行呼叫之 IAM Identity Center ARN 使用者 ID 和身分存放區的資訊。若要進一步了解如何使用這兩個欄位,請參閱IAM在 Identity Center 使用者起始 CloudTrail 事件中識別使用者和工作階段 IAM 身分中心使用者指南中的 。Unknown
可以存在 例如,值可以是帳戶別名或相關聯 AWS 帳戶 ID 的電郵地址。 注意
當紀錄的事件為輸入不正確使用者名稱而導致主控台登入失敗時,
userName
欄位包含字串HIDDEN_DUE_TO_SECURITY_REASONS
。在此情況下,CloudTrail 不會記錄內容,因為文字可能包含敏感資訊,如以下範例:-
使用者不小心在使用者名稱欄位中輸入密碼。
-
使用者按一下某個 AWS 帳戶登入頁面的連結,然後輸入另一個帳戶的帳號。
-
使用者不小心輸入個人電子郵件帳戶的帳戶名稱、銀行登入識別符或其他一些私有 ID。
選用:True
-
principalId
-
發出呼叫之實體的唯一識別符。對於使用臨時安全登入資料提出的請求,此值包含傳遞給
AssumeRole
、AssumeRoleWithWebIdentity
或GetFederationToken
API呼叫的工作階段名稱。選用:True
arn
-
進行呼叫之主體的 Amazon Resource Name (ARN)。ARN 的最後一個部分包含發出呼叫的使用者或角色。
選用:True
accountId
-
擁有授予許可給請求之實體的帳戶。如果使用臨時安全登入資料提出請求,則這是擁有用於取得登入資料之IAM使用者或角色的帳戶。
如果請求是使用 IAM Identity Center 授權的存取權杖提出,則這是擁有 IAM Identity Center 執行個體的帳戶。
選用:True
accessKeyId
-
用來簽署請求的存取金鑰 ID。如果使用暫時性安全登入資料提出請求,則此為暫時性登入資料的存取金鑰 ID。基於安全理由,
accessKeyId
可能不存在,或者可能顯示為空字符串。選用: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 帳戶 ID 及其別名。請注意,userName
欄位不能包含Root
,因為Root
是身分類型,不是使用者名稱。Root
(已設定別名)帳戶別名 如需 AWS 帳戶 別名的詳細資訊,請參閱AWS 您的帳戶 ID 及其別名。 IAMUser
IAM 使用者的使用者名稱 這也適用於聯合身分使用者使用 IAMUser
所發出之工作階段的情況。Role
角色名稱 在角色工作階段中由IAM使用者 AWS 服務或 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
)。
注意
此欄位的省略或此欄位的存在,其值為空表示沒有身分提供者的相關資訊。
-
-
attributes
– 工作階段的屬性。-
assumedRoot
– 值true
適用於管理帳戶或委派管理員呼叫時的臨時工作階段 AWS STSAssumedRoot
。如需詳細資訊,請參閱IAM《 使用者指南》中的追蹤 中的特殊權限任務 CloudTrail。 -
creationDate
- 發出暫時性安全登入資料的日期和時間。以 ISO 8601 基本表示法表示。 -
mfaAuthenticated
– 值是true
,如果使用其登入資料進行請求的根使用者或IAM使用者也使用 MFA 裝置進行身分驗證,否則,false
。
-
-
sourceIdentity
– 參閱此主題中的 AWS STS 來源身分。當使用者擔任IAM角色來執行 動作時,sourceIdentity
欄位會出現在事件中。 會sourceIdentity
識別發出請求的原始使用者身分,無論該使用者身分是IAM使用者、IAM角色、透過 SAML型聯合身分驗證的使用者,還是透過 OpenID Connect (OIDC) 相容 Web 身分聯合身分驗證的使用者。如需設定 AWS STS 以收集來源身分資訊的詳細資訊,請參閱IAM《 使用者指南》中的監控和控制使用擔任角色採取的動作。 -
ec2RoleDelivery
– 值是1.0
Amazon EC2 Instance Metadata Service 第 1 版 (IMDSv1) 提供的登入資料。如果2.0
登入資料是使用新IMDS配置提供,則值為 。AWS Amazon EC2 Instance Metadata Service (IMDS) 提供的憑證包含 ec2:RoleDelivery IAM 內容金鑰。此內容金鑰可讓您輕鬆地在 service-by-service或 resource-by-resource 基礎上強制執行新方案,方法是使用內容金鑰做為IAM政策、資源政策 AWS Organizations 或服務控制政策中的條件。如需詳細資訊,請參閱《Amazon EC2使用者指南》中的執行個體中繼資料和使用者資料。
選用:True
-
invokedBy
-
當 AWS 服務 提出請求時, AWS 服務 例如 Amazon EC2 Auto Scaling 或 的 名稱 AWS Elastic Beanstalk。只有在 提出請求時,才會出現此欄位 AWS 服務。這包括 服務使用轉送存取工作階段 (FAS)、 AWS 服務 原則、服務連結角色或 使用的服務角色所提出的請求 AWS 服務。
選用:True
onBehalfOf
-
如果請求是由 IAM Identity Center 發起人提出,
onBehalfOf
會提供與進行呼叫ARN之 IAM Identity Center 使用者 ID 和身分存放區相關的資訊。此元素具有下列屬性:-
userId
– 代表其進行呼叫的 IAM Identity Center 使用者的 ID。 -
identityStoreArn
– 代表進行呼叫ARN的 IAM Identity Center 身分存放區的 。
選用:True
-
inScopeOf
-
如果請求是在 Lambda 或 Amazon AWS 服務等 範圍內提出ECS,則會提供與請求相關的資源或登入資料的相關資訊。此元素可以包含下列屬性:
-
sourceArn
– 叫 service-to-service用請求的資源ARN的 。 -
sourceAccount
– 的擁有者帳戶 IDsourceArn
。它與 一起顯示sourceArn
。 -
issuerType
– 的資源類型credentialsIssuedTo
。例如:AWS::Lambda::Function
。 -
credentialsIssuedTo
– 與發出登入資料的環境相關的資源。
選用:True
-
credentialId
-
用於請求的登入資料 ID。只有在呼叫者使用承載字符時才會設定,例如 IAM Identity Center 授權的存取字符。
選用:True
使用 SAML和 Web 聯合身分的值 AWS STS APIs
AWS CloudTrail 支援使用安全聲明標記語言 AWS Security Token Service (AWS STS) 和 Web 身分聯合進行 logging(SAML) API呼叫。當使用者呼叫 AssumeRoleWithSAML
和 AssumeRoleWithWebIdentity
時APIs, 會 CloudTrail 記錄呼叫並將事件交付到您的 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 聯合身分提供者的發行者名稱。這可以是您設定的供應商,例如:-
cognito-identity.amazon.com
適用於 Amazon Cognito -
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 ,要求使用者在使用臨時登入資料擔任角色時指定身分。當使用者擔任IAM角色或使用擔任的角色執行任何動作時, sourceIdentity
欄位會出現在事件中。
sourceIdentity
欄位識別發出請求的原始使用者身分,無論該使用者身分是IAM使用者、IAM角色、使用 SAML型聯合身分驗證的使用者,還是使用 OpenID Connect (OIDC) 相容 Web 身分聯合身分驗證的使用者。IAM 管理員設定 之後 AWS STS, CloudTrail 會在事件記錄中記錄下列事件和位置中sourceIdentity
的資訊:
-
使用者身分在擔任角色時發出的
AssumeRoleWithSAML
、 AWS STSAssumeRole
或AssumeRoleWithWebIdentity
呼叫。sourceIdentity
位於 AWS STS 呼叫的requestParameters
區塊中。 -
如果使用者身分使用角色擔任另一個角色,稱為角色鏈結 AWS STS
AssumeRole
,則使用者身分所發出的AssumeRoleWithSAML
、 或AssumeRoleWithWebIdentity
呼叫。sourceIdentity
位於 AWS STS 呼叫的requestParameters
區塊中。 -
AWS 服務API呼叫使用者身分在擔任 角色並使用 指派的臨時登入資料時發出的 AWS STS。在服務API事件中,
sourceIdentity
位於sessionContext
區塊。例如,如果使用者身分識別建立新的 S3 儲存貯體,則CreateBucket
事件的sessionContext
區塊中會發生sourceIdentity
。
如需如何設定 AWS STS 以收集來源身分資訊的詳細資訊,請參閱IAM《 使用者指南》中的監控和控制使用擔任的角色所採取的動作。如需記錄到 AWS STS 之事件的詳細資訊 CloudTrail,請參閱IAM《 使用者指南》中的使用 記錄IAM和 AWS STS API呼叫 AWS CloudTrail。
以下是事件的範例片段,其中顯示 sourceIdentity
欄位。
範例 requestParameters
區段
在下列範例事件程式碼片段中,使用者會發出 AWS STS AssumeRole
請求,並設定來源身分,由 表示
。使用者擔任由角色 ARN 代表的角色source-identity-value-set
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
區段
在下列範例事件程式碼片段中,使用者會 AWS STS AssumeRole
提出請求,以擔任名為 的角色Developer_Role
,並設定來源身分 Admin
。使用者擔任由角色 ARN 代表的角色arn:aws:iam::111122223333:role/Developer_Role
。sourceIdentity
欄位會顯示在事件的 requestParameters
和 responseElements
區塊。用於擔任角色、工作階段字符字串和擔任角色 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
" } } }