CloudTrail userIdentity 元素 - AWS CloudTrail

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CloudTrail userIdentity 元素

AWS Identity and Access Management (IAM)提供不同類型的身份。userIdentity元素包含發出要求的IAM識別類型,以及使用哪些認證的詳細資料。如果使用暫時性登入資料,此元素會說明登入資料的取得方式。

範例

使用 IAM 使用者登入資料的 userIdentity

下列範例會顯示IAM使用名為之使用者的認證所發出的簡單要求userIdentity元素Alice

"userIdentity": { "type": "IAMUser", "principalId": "AIDAJ45Q7YFFAREXAMPLE", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "", "userName": "Alice" }

使用暫時性安全登入資料的 userIdentity

下列範例顯示使用假設角色所取得之臨時安全性認證所發出之要求的userIdentity元IAM素。此元素包含為取得登入資料所擔任之角色的其他詳細資訊。

"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身分識別中心使用者提出的要求

下列範例顯示代表IAM身分識別中心使用者發出之要求的userIdentity元素。

"userIdentity": { "type": "IdentityCenterUser", "accountId": "123456789012", "onBehalfOf": { "userId": "544894e8-80c1-707f-60e3-3ba6510dfac1", "identityStoreArn": "arn:aws:identitystore::123456789012:identitystore/d-9067642ac7" }, "credentialId": "EXAMPLEVHULjJdTUdPJfofVa1sufHDoj7aYcOYcxFVllWR_Whr1fEXAMPLE" }

欄位

userIdentity 元素中可能會顯示下列欄位。

type

身分的類型。可能的值如下:

  • Root— 請求是使用您的 AWS 帳戶 憑據提出的。如果 userIdentity 類型為 Root,而且您為帳戶設定了別名,則 userName 欄位會包含您的帳戶別名。如需詳細資訊,請參閱您的 AWS 帳戶 ID 和其別名

  • IAMUser— IAM 使用使用者的認證提出要求。

  • AssumedRole— 要求是使用透過呼叫 the AWS Security Token Service (AWS STS) 以角色取得的臨時安全性登入資料所提出AssumeRoleAPI。這可能包括 Amazon 的角色EC2和跨帳戶API存取。

  • Role— 請求是使用具有特定權限的持久IAM身份提出的。角色工作階段的發起者永遠都是該角色。如需有關角色的詳細資訊,請參閱《IAM使用指南》中的「角色」術語和概念

  • FederatedUser— 請求是使用從呼叫獲得的臨時安全憑據提出的 AWS STS GetFederationTokenAPI. sessionIssuer元素會指出是使用根憑證還API是IAM使用者認證呼叫。

    如需有關臨時安全登入資料的詳細資訊,請參閱IAM使用者指南中的「暫時安全登入

  • Directory - 已對 Directory Service 提出請求,且類型未知。目錄服務包括以下內容:Amazon WorkDocs 和 Amazon QuickSight。

  • AWSAccount— 該請求是由另一個人提出 AWS 帳戶

  • AWSService— 請求 AWS 帳戶 是由屬於 AWS 服務. 例如, AWS Elastic Beanstalk 假設您帳戶中的IAM角色代表您打電話給其他 AWS 服務 人。

  • IdentityCenterUser— 請求是代表IAM身分識別中心使用者提出的。

  • Unknown— 請求是使用無法確定的 CloudTrail 身份類型提出的。

選用:False

AWSAccountAWSServicetype在使用您擁有的IAM角色進行跨帳戶訪問時顯示在日誌中。

範例:由其他 AWS 帳戶啟動的跨帳戶存取
  1. 您在自己的帳戶中擁有一個IAM角色。

  2. 另一個 AWS 帳戶會切換至該角色,以擔任您帳戶的角色。

  3. 由於您擁有該IAM角色,因此您會收到一份記錄,其中顯示擔任該角色的其他帳戶。typeAWSAccount。如需記錄項目範例,請參閱 CloudTrail 記錄檔中的AWS STS API事件

範例:由服務啟動的 AWS 跨帳戶存取
  1. 您在自己的帳戶中擁有一個IAM角色。

  2. AWS 服務所擁有的 AWS 帳戶會擔任該角色。

  3. 因為您擁有該IAM角色,因此您會收到一份記錄,其中顯示 AWS 服務擔任該角色。typeAWSService

userName

發出呼叫之身分的易記名稱。出現在 userName 中的值取決於 type 中的值。下表顯示 typeuserName 之間的關係:

type userName 描述
Root (未設定別名) 不存在 如果尚未為您設定別名 AWS 帳戶,則不會顯示該userName欄位。如需有關帳戶別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。請注意,userName 欄位不能包含 Root,因為 Root 是身分類型,不是使用者名稱。
Root (已設定別名) 帳戶別名 如需 AWS 帳戶 別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。
IAMUser 使用者的使用IAM者名稱

AssumedRole

不存在 對於AssumedRole類型,您可以在中找到userName欄位sessionContext做為sessionIssuer元素的一部分。如需範例項目,請參閱「範例」。

Role

使用者定義 sessionContextsessionIssuer 區段包含替角色發起工作階段之身分的相關資訊。
FederatedUser 不存在 sessionContextsessionIssuer 區段包含替聯合身分使用者發出工作階段之身分的相關資訊。
Directory 可以存在 例如,值可以是帳戶別名或相關聯 AWS 帳戶 ID 的電郵地址。
AWSService 不存在
AWSAccount 不存在
IdentityCenterUser 不存在 onBehalfOf區段包含ARN針對其進行呼叫的IAM身分識別中心使用者 ID 和識別身分存放區的相關資訊。如需有關IAM身分識別中心的詳細資訊,請參閱AWS IAM Identity Center 使用者指南
Unknown 可以存在 例如,值可以是帳戶別名或相關聯 AWS 帳戶 ID 的電郵地址。
注意

當記錄的事件是由不正確的使用者名稱輸入所造成的主控台登入失敗時,userName 欄位會包含字串 HIDDEN_DUE_TO_SECURITY_REASONS。CloudTrail 在此情況下不會記錄內容,因為文字可能包含敏感資訊,如下列範例所示:

  • 使用者不小心在使用者名稱欄位中輸入密碼。

  • 使用者按一下某個 AWS 帳戶登入頁面的連結,然後輸入另一個帳戶的帳號。

  • 使用者不小心輸入個人電子郵件帳戶的帳戶名稱、銀行登入識別符或其他一些私有 ID。

選用:True

principalId

發出呼叫之實體的唯一識別符。對於使用臨時安全登入資料發出的要求,此值包括傳遞至AssumeRoleAssumeRoleWithWebIdentity、或GetFederationTokenAPI呼叫的工作階段名稱。

選用:True

arn

進行呼叫的主體的 Amazon 資源名稱 (ARN)。ARN 的最後一個部分包含發出呼叫的使用者或角色。

選用:True

accountId

擁有授予許可給請求之實體的帳戶。如果要求是使用臨時安全登入資料提出的,則這是擁有用來取得認證之使用IAM者或角色的帳戶。

如果要求是使用 IAM Identity Center 授權的存取權杖提出,則此為擁有IAM身分識別中心執行個體的帳戶。

選用:True

accessKeyId

用來簽署請求的存取金鑰 ID。如果使用暫時性安全登入資料提出請求,則此為暫時性登入資料的存取金鑰 ID。基於安全理由,accessKeyId 可能不存在,或者可能顯示為空字符串。

選用:True

sessionContext

如果使用暫時性安全登入資料提出請求,sessionContext 會提供為這些登入資料所建立之工作階段的相關資訊。當您呼叫任何傳回暫時認證的工作階段時API,您會建立工作階段 使用者也會在主控台中工作時建立工作階段,並提出包含多重APIs要素驗證的要求。下列屬性可以顯示在中sessionContext

  • sessionIssuer— 如果使用者使用臨時安全登入資料提出要求,則會sessionIssuer提供使用者如何取得認證的相關資訊。例如,如果他們透過擔任角色取得暫時性安全登入資料,此元素會提供所擔任角色的相關資訊。如果他們取得具有 root 或IAM使用者認證的認證進行呼叫 AWS STS GetFederationToken,則該元素會提供有關根帳戶或IAM使用者的資訊。此元素具有下列屬性:

    • type - 暫時性安全登入資料的來源,例如 RootIAMUserRole

    • userName - 發出工作階段之使用者或角色的易記名稱。出現的值取決於 sessionIssuer 身分 type。下表顯示 sessionIssuer typeuserName 之間的關係:

      sessionIssuer 類型 userName 描述
      Root (未設定別名) 不存在 如果您尚未設定帳戶的別名,則不會顯示 userName 欄位。如需 AWS 帳戶 別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。請注意,userName 欄位不能包含 Root,因為 Root 是身分類型,不是使用者名稱。
      Root (已設定別名) 帳戶別名 如需 AWS 帳戶 別名的詳細資訊,請參閱您的 AWS 帳戶 ID 及其別名。
      IAMUser 使用者的使用IAM者名稱 這也適用於聯合身分使用者使用 IAMUser 所發出之工作階段的情況。
      Role 角色名稱 角色工作階段中的IAM使用者 AWS 服務、或 Web 身分聯合使用者所承擔的角色。
    • principalId - 用來取得登入資料之實體的內部 ID。

    • arn— 用來取得暫時安全性登入資料ARN的來源 (帳戶、使用IAM者或角色)。

    • 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_idwww.amazon.com:user_id)。

    注意

    遺漏此欄位或此欄位的值為空白,表示沒有身分識別提供者的相關資訊。

  • creationDate - 發出暫時性安全登入資料的日期和時間。以 ISO 8601 基本符號表示。

  • mfaAuthenticated— 此值是true如果使用其認證作為要求的 root 使用IAM者或使用者也透過MFA裝置驗證;否則,false

  • sourceIdentity – 參閱此主題中的 AWS STS 來源身分。當使用者擔任執行動作的IAM角色時,此sourceIdentity欄位會發生在事件中。 sourceIdentity標識發出請求的原始用戶身份,無論該用戶的身份是IAM用戶,IAM角色,通過SAML基於聯合身份驗證的用戶,還是通過 OpenID Connect(OIDC)兼容的 Web 身份聯合認證的用戶。如需有關設定為收集 AWS STS 來源身分識別資訊的詳細資訊,請參閱《IAM使用指南》中的監視和控制對假定角色所採取的動作。

  • ec2RoleDelivery1.0 如果登入資料是由 Amazon EC2 執行個體中繼資料服務版本 1 (IMDSv1) 提供的值。該值是2.0如果認證是使用新IMDS配置提供的。

    AWS Amazon EC2 執行個體中繼資料服務 (IMDS) 提供的登入資料包括 ec2: RoleDelivery IAM 內容金鑰。透過使用前後關聯索引鍵作為IAM原則、資源原則 service-by-service 或服務控制原則中的條件,此前後關聯索引鍵可讓您輕鬆強制執行新配置的使 AWS Organizations 用或 resource-by-resource 基礎。如需詳細資訊,請參閱 Amazon 使用者指南中的執行個體中繼資料和EC2使用者資料。

選用:True

invokedBy

發出請求 AWS 服務 的名稱,當請求是由 AWS 服務 如 Amazon EC2 Auto Scaling 或 AWS Elastic Beanstalk. 此欄位僅在由 AWS 服務. 這包括服務使用轉寄存取工作階段 (FAS)、 AWS 服務 主參與者、服務連結角色或. AWS 服務

選用:True

onBehalfOf

如果要求是由IAM身分識別中心呼叫者提出,則會onBehalfOf提供有關進行呼叫的IAM身分識別中心使用者識別碼和識別身分存放區ARN的資訊。此元素具有下列屬性:

  • userId— 代表呼叫的IAM身分中心使用者識別碼。

  • identityStoreArn— 代表呼叫ARN的IAM身分識別中心身分存放區。

選用:True

credentialId

用於請求的登入資料 ID。只有在呼叫者使用承載權杖 (例如IAM身分識別中心授權的存取權杖) 時才會設定此選項。

選用:True

AWS STS APIs使用SAML和 Web 身分同盟的值

AWS CloudTrail 支持使用安全斷言標記語言 AWS Security Token Service (AWS STS)和 Web 身份聯合進行的 log(SAML)API調用。當使用者呼叫和時,會 CloudTrail 記錄呼叫 AssumeRoleWithWebIdentityAPIs,AssumeRoleWithSAML並將事件傳送到您的 Amazon S3 儲存貯體。

這些userIdentity元素APIs包含以下值。

type

身分類型。

  • SAMLUser-請求是用SAML斷言提出的。

  • WebIdentityUser - 由 Web 聯合身分提供者提出請求。

principalId

發出呼叫之實體的唯一識別符。

  • 針對 SAMLUser,這是 saml:namequalifiersaml:sub 金鑰的組合。

  • 針對 WebIdentityUser,這是發行者、應用程式 ID 和使用者 ID 的組合。

userName

發出呼叫之身分的名稱。

  • 針對 SAMLUser,這是 saml:sub 金鑰。

  • 針對 WebIdentityUser,這是使用者 ID。

identityProvider

外部身分提供者的主體名稱。只有 SAMLUserWebIdentityUser 類型會顯示此欄位。

  • 對於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元素如何顯示SAMLUserWebIdentityUser類型的示例日誌,請參閱使用記錄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資訊:

  • 使用者身分在 AWS STS AssumeRole擔任角色時所進行的AssumeRoleWithSAML、或AssumeRoleWithWebIdentity呼叫。 sourceIdentity在 AWS STS 呼叫的requestParameters塊中找到。

  • 如果使用者身分使用角色來承擔另一個角色 (稱為角色鏈結),則會進行、或AssumeRoleWithWebIdentity呼叫。 AWS STS AssumeRole AssumeRoleWithSAML sourceIdentity在 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提出要求,並設定來源識別,此處以表示source-identity-value-set。使用者會擔任角色所代表的角色ARNarn:aws:iam::123456789012:role/Assumed_RolesourceIdentity 欄位位於事件的 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。使用者會擔任角色所代表的角色ARNarn:aws:iam::111122223333:role/Developer_RolesourceIdentity 欄位會顯示在事件的 requestParametersresponseElements 區塊。responseElements區塊中會顯示用來假設角色、工作階段 Token 字串以及假設的角色 ID、工作階段名稱和工作階段ARN的暫時認證,以及來源識別。

"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-setsourceIdentity欄位位於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" } } }