本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CloudTrail userIdentity 元素
AWS Identity and Access Management (IAM) 提供不同類型的身分。userIdentity 元素包含提出請求之 IAM 身分類型及所使用之登入資料的詳細資訊。如果使用暫時性登入資料,此元素會說明登入資料的取得方式。
範例
具有 IAM 使用者憑證的 userIdentity
下列範例顯示使用名為 userIdentity 的 IAM 使用者登入資料提出之簡單請求的 Alice 元素。
"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 使用者指南》中的在 IAM Identity Center 使用者起始的 CloudTrail 事件中識別使用者和工作階段。
userIdentity 使用產品提供者起始的請求
產品提供者使用暫時委派存取執行的所有動作都會自動記錄在 CloudTrail 中。這可讓您帳戶中產品提供者活動的完整可見性和可稽核性 AWS 。您可以識別產品提供者所採取的動作、發生的時間,以及執行這些動作的產品提供者帳戶。
為了協助您區分您自己的 IAM 主體所採取的動作,以及具有委派存取權的產品提供者所採取的動作,CloudTrail 事件會在 userIdentity元素invokedByDelegate下包含名為 的新欄位。此欄位包含產品提供者 AWS 的帳戶 ID,讓您輕鬆篩選和稽核所有委派的動作。
下列範例顯示產品提供者使用暫時委派存取所執行動作的 userIdentity 元素。
"userIdentity": { "type": "AssumedRole", "principalId": "AROAI...", "arn": "arn:aws:sts::123456789012:assumed-role/Alice/Session", "accountId": "123456789012", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAI...", "arn": "arn:aws:iam::123456789012:role/Alice", "accountId": "123456789012", "userName": "Alice" }, "attributes": { "mfaAuthenticated": "false", "creationDate": "20131102T010628Z" } }, "invokedByDelegate": { "accountId": "999999999999" } }
invokedByDelegate 欄位包含使用委派存取執行動作之產品提供者 AWS 的帳戶 ID。在此範例中,帳戶 999999999999 (產品提供者) 在帳戶 123456789012 (客戶帳戶) 中執行動作。
欄位
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– 使用從呼叫 API 取得的 AWS STSGetFederationToken臨時安全登入資料提出請求。sessionIssuer元素指出 API 是以超級或 IAM 使用者登入資料來呼叫。如需暫時安全登入資料的詳細資訊,請參閱《IAM 使用者指南》中的暫時安全登入資料。
-
Directory- 已對 Directory Service 提出請求,且類型未知。目錄服務包括下列項目:Amazon WorkDocs 和 Amazon Quick Suite。 -
AWSAccount– 請求是由另一個 提出 AWS 帳戶 -
AWSService– 請求是由屬於 AWS 帳戶 的 提出 AWS 服務。例如, AWS Elastic Beanstalk 假設您帳戶中的 IAM 角色 AWS 服務 代表您呼叫其他 。 -
IdentityCenterUser– 代表 IAM Identity Center 使用者提出請求。 -
Unknown– 使用 CloudTrail 無法判斷的身分類型提出請求。
選用: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之間的關係:typeuserNameDescription Root(未設定別名)不存在 如果您尚未設定 的別名 AWS 帳戶,則不會顯示 userName欄位。如需帳戶別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。請注意,userName欄位不能包含Root,因為Root是身分類型,不是使用者名稱。Root(已設定別名)帳戶別名 如需 AWS 帳戶 別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。 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 Identity Center 使用者指南中的 。* IAM Identity Center 會在兩個登入 CloudTrail 事件的
additionalEventData元素下發出userName欄位。如需詳細資訊,請參閱《IAM Identity Center 使用者指南》中的登入 CloudTrail 事件中的使用者名稱。Unknown可以存在 例如,值可以是帳戶別名或相關聯 AWS 帳戶 ID 的電郵地址。 注意
當記錄的事件是由不正確的使用者名稱輸入所造成的主控台登入失敗時,
userName欄位會包含字串HIDDEN_DUE_TO_SECURITY_REASONS。在此情況下,CloudTrail 不會記錄內容,因為文字可能包含敏感資訊,如下列範例所示:-
使用者不小心在使用者名稱欄位中輸入密碼。
-
使用者按一下某個 AWS 帳戶登入頁面的連結,然後輸入另一個帳戶的帳號。
-
使用者不小心輸入個人電子郵件帳戶的帳戶名稱、銀行登入識別符或其他一些私有 ID。
選用:True
-
principalId-
發出呼叫之實體的唯一識別符。針對使用暫時性安全登入資料提出的請求,這個值會包含傳遞到
AssumeRole、AssumeRoleWithWebIdentity或GetFederationTokenAPI 呼叫的工作階段名稱。選用: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 以傳回暫時性登入資料時,您會建立工作階段。當使用者在主控台中工作,並且使用包含多重驗證的 API 提出請求時,也會建立工作階段。下列屬性可能會出現在 中sessionContext:-
sessionIssuer– 如果使用者使用臨時安全登入資料提出請求,sessionIssuer會提供使用者如何取得登入資料的相關資訊。例如,如果他們透過擔任角色取得暫時性安全登入資料,此元素會提供所擔任角色的相關資訊。如果他們使用根或 IAM 使用者登入資料呼叫 AWS STSGetFederationToken而取得登入資料,此元素會提供根帳戶或 IAM 使用者的相關資訊。此元素具有下列屬性:-
type- 暫時性安全登入資料的來源,例如Root、IAMUser或Role。 -
userName- 發出工作階段之使用者或角色的易記名稱。出現的值取決於sessionIssuer身分type。下表顯示sessionIssuer type與userName之間的關係:sessionIssuer類型userNameDescription Root(未設定別名)不存在 如果您尚未設定帳戶的別名,則不會顯示 userName欄位。如需 AWS 帳戶 別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。請注意,userName欄位不能包含Root,因為Root是身分類型,不是使用者名稱。Root(已設定別名)帳戶別名 如需 AWS 帳戶 別名的詳細資訊,請參閱AWS 您的帳戶 ID 及其別名。 IAMUserIAM 使用者的使用者名稱 這也適用於聯合身分使用者使用 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)。
注意
省略此欄位,或存在具有空值的此欄位,表示沒有身分提供者的相關資訊。
-
-
assumedRoot– 值true適用於管理帳戶或委派管理員呼叫時的暫時工作階段 AWS STSAssumedRoot。如需詳細資訊,請參閱《IAM 使用者指南》中的在 CloudTrail 中追蹤特殊權限任務。此為選用欄位。 -
attributes– 工作階段的屬性。-
creationDate- 發出暫時性安全登入資料的日期和時間。以 ISO 8601 基本表示法來表示。 -
mfaAuthenticated- 如果其登入資料用於請求的根使用者或 IAM 使用者也會向 MFA 裝置進行身分驗證,則此值為true;否則為false。
-
-
sourceIdentity– 參閱此主題中的 AWS STS 來源身分。在使用者擔任 IAM 角色執行動作時,sourceIdentity欄位會出現在事件中。sourceIdentity識別提出請求的原始使用者身分,無論該使用者身分是 IAM 使用者、IAM 角色、使用 SAML 型聯合驗證的使用者,還是使用 OpenID Connect (OIDC) 相容的網頁聯合身分驗證的使用者。如需設定 AWS STS 以收集來源身分資訊的詳細資訊,請參閱《IAM 使用者指南》中的監控和控制使用擔任角色採取的動作。 -
ec2RoleDelivery– 如果憑證由 Amazon EC2 Instance Metadata Service Version 1 (IMDSv1) 提供,此值為1.0。如果使用新的 IMDS 結構描述提供憑證,此值為2.0。AWS Amazon EC2 執行個體中繼資料服務 (IMDS) 提供的憑證包含 ec2:RoleDelivery IAM 內容金鑰。此內容索引鍵可讓您在 IAM 政策、資源政策或服務 AWS Organizations 控制政策中使用內容索引鍵做為條件,輕鬆地在service-by-service逐項資源的基礎上強制使用新方案。 resource-by-resource 如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的執行個體中繼資料與使用者資料。
選用:True
-
invokedBy-
AWS 服務 發出請求的 名稱,當 發出請求時, AWS 服務 例如 Amazon EC2 Auto Scaling 或 AWS Elastic Beanstalk。只有在 提出請求時,才會出現此欄位 AWS 服務。這包括 服務使用轉送存取工作階段 (FAS)、 AWS 服務 委託人、服務連結角色或 使用的服務角色提出的請求 AWS 服務。
選用:True
invokedByDelegate-
追蹤產品提供者在您 AWS 帳戶中使用暫時委派存取提出的請求。只有在產品提供者使用委派許可啟動 API 請求時,才會顯示此欄位。如果存在,
invokedByDelegate會提供發出請求之產品提供者帳戶的相關資訊。此元素具有下列屬性:-
accountId– 啟動請求之產品提供者 AWS 的帳戶 ID。
如需 CloudTrail 事件中委派存取的詳細資訊和 JSON 範例,請參閱《IAM 使用者指南》中的暫時安全登入資料的 CloudTrail 項目。
選用:True
-
onBehalfOf-
如果由 IAM Identity Center 呼叫者提出請求,
onBehalfOf會提供呼叫的 IAM Identity Center 使用者 ID 和身分存放區 ARN 的相關資訊。此元素具有下列屬性:-
userId— 被代表執行呼叫之 IAM Identity Center 使用者的 ID。 -
identityStoreArn— 被代表執行呼叫之 IAM Identity Center 身分存放區的 ARN。
選用:True
-
inScopeOf-
如果請求是在 範圍內提出 AWS 服務,例如 Lambda 或 Amazon 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 支援使用安全性聲明標記語言 (SAML AWS STS) 和 Web 聯合身分進行的 logging AWS Security Token Service () 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.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) 相容的網頁聯合身分驗證的使用者。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 事件中,
sessionContext區塊中找到sourceIdentity。例如,如果使用者身分識別建立新的 S3 儲存貯體,則CreateBucket事件的sessionContext區塊中會發生sourceIdentity。
如需如何設定 AWS STS 以收集來源身分資訊的詳細資訊,請參閱《IAM 使用者指南》中的監控和控制使用擔任角色採取的動作。如需記錄到 CloudTrail AWS STS 之事件的詳細資訊,請參閱《IAM 使用者指南》中的使用 記錄 IAM 和 AWS STS API 呼叫 AWS CloudTrail。
以下是事件的範例片段,其中顯示 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 欄位會顯示在事件的 requestParameters 和 responseElements 區塊。用來擔任角色、工作階段 Token 字串以及擔任的角色 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" } } }