使用 AWS CloudTrail 記錄 IAM 和 AWS STS API 呼叫 - AWS Identity and Access Management

使用 AWS CloudTrail 記錄 IAM 和 AWS STS API 呼叫

IAM 和 AWS STS 整合了 AWS CloudTrail,這是一種服務,提供由 IAM 使用者或角色採取之動作的記錄。CloudTrail 會將 IAM 和 AWS STS 的所有 API 呼叫擷取為事件,包括來自主控台的呼叫以及 API 的呼叫。若您建立追蹤,便可將 CloudTrail 事件持續交付至 Amazon S3 儲存貯體,包括 的事件。即使您未設定追蹤,依然可以透過 CloudTrail 主控台中的 Event history (事件歷史記錄) 檢視最新事件。您可以使用 CloudTrail 取得向 IAM 或 AWS STS 發出的請求相關資訊。例如,您可以檢視發出請求的 IP 地址、發出請求的人員及時間,以及其他詳細資訊。

若要進一步了解 CloudTrail,請參閱《AWS CloudTrail 使用者指南》。

CloudTrail 中的 IAM 和 AWS STS 資訊

當您建立帳戶時,系統即會在 AWS 帳戶中啟用 CloudTrail。當活動發生於 IAM 或 AWS STS 中時,系統便會將該活動記錄於 CloudTrail 事件,並將其他 AWS 服務事件記錄至 Event history (事件歷史) 中。您可以檢視、搜尋和下載 AWS 帳戶的最新事件。如需詳細資訊,請參閱使用 CloudTrail 事件歷史記錄檢視事件

若要持續記錄 AWS 帳戶中的事件 (包括 IAM 和 AWS STS 事件),請建立追蹤。追蹤能讓 CloudTrail 將日誌檔案交付至 Amazon S3 儲存貯體。根據預設,當您在主控台建立追蹤記錄時,追蹤記錄會套用到所有區域。該追蹤會記錄來自 AWS 分割區中所有區域的事件,並將日誌檔案交付到您指定的 Amazon S3 儲存貯體。此外,您可以設定其他 AWS 服務,以進一步分析和處理 CloudTrail 日誌中所收集的事件資料。如需詳細資訊,請參閱:

CloudTrail 會記錄所有 IAM 和 AWS STS 動作,列在 IAM API 參考AWS Security Token Service API 參考

記錄 IAM 和 AWS STS API 請求

CloudTrail 將所有經過身分驗證的 API 請求 (使用憑證建立) 記錄到 IAM 和AWS STSAPI 操作。CloudTrail 還將未經身分驗證的請求記錄到 AWS STS 動作、AssumeRoleWithSAMLAssumeRoleWithWebIdentity,並記錄身分提供者所提供的資訊。您可以使用此資訊來對應呼叫,此呼叫由具有假設角色的聯合身分使用者發出並傳回到發起的外部聯合身分呼叫者。若是 AssumeRole,您可以將呼叫映射回原始 AWS 服務或原始使用者的帳戶。CloudTrail 日誌項目中 JSON 資料的 userIdentity 部分包含將 AssumeRole* 請求映射到特定聯合身分使用者所需的資訊。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的 CloudTrail userIdentity 元素

例如,對 IAM CreateUserDeleteRoleListGroups 和其他 API 操作的呼叫都是由 CloudTrail 記錄。

本主題稍後會提供此類日誌項目的範例。

重要

若您在預設全域端點之外的區域中啟用 AWS STS 端點,您也必須在那些區域中開啟 CloudTrail 記錄日誌。這是記錄那些區域中發出 AWS STS API 呼叫的必要步驟。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的在其他區域開啟 CloudTrail

記錄其他 AWS 服務的 API 請求

CloudTrail 會記錄其他 AWS 服務 API 操作經過驗證的請求,且這些日誌項目會包含請求產生人的資訊。

例如:假設您發出請求,要求列出 Amazon EC2 執行個體或建立 AWS CodeDeploy 部署群組。發出請求的人員或服務相關詳細資訊都會包含在該請求的日誌項目中。這項資訊可協助您判斷請求是否是由 AWS 帳戶 根使用者、IAM 使用者、角色,或其他 AWS 服務所發出。

有關 CloudTrail 日誌項目中使用者身分資訊的更多詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的 userIdentity 元素

記錄區域登入事件

若您啟用 CloudTrail 將登入事件記錄到您的日誌,您需要注意 CloudTrail 如何選擇記錄事件日誌的地方。

  • 如果您的使用者直接登入到主控台,它們會被重新引導到全域登入或區域登入端點。端點取決於所選服務主控台是否支援區域。例如,主要的主控台首頁支援區域。如果登入 https://alias.signin.aws.amazon.com/console,您會被重新引導至區域登入端點,如 https://us-east-2.signin.aws.amazon.com。此重新引導會在使用者區域的日誌中建立區域性 CloudTrail 日誌項目。

    另一方面,Amazon S3 主控台不支援區域,因此若您登入 https://alias.signin.aws.amazon.com/console/s3,AWS 便會將您重新引導至位於 https://signin.aws.amazon.com 的全域登入端點。此重新引導會建立全域 CloudTrail 日誌項目。

  • 您可以手動請求特定區域登入端點,只要使用如 https://alias.signin.aws.amazon.com/console?region=ap-southeast-1 的 URL,即可登入啟用區域的主要主控台首頁。在這情況下,AWS 會將您重新引導至 ap-southeast-1 區域登入端點,並在該區域產生區域 CloudTrail 日誌事件。

登入事件是否被視為區域事件或全域事件取決於使用者正在登入的主控台,以及使用者如何建構登入 URL。

  • 服務主控台是否區域化? 若是如此,則登入請求會自動重新引導到區域登入端點,並且該事件將記錄在該區域的 CloudTrail 日誌中。例如,若您登入 https://別名.signin.aws.amazon.com/console,由於該服務已啟用區域,因此您便會重新引導至您區域中的登入端點,例如 https://us-east-2.signin.aws.amazon.com。事件會記錄在該區域的日誌中。

    但是,有些服務尚未區域化。例如,Amazon S3 服務目前尚未區域化。如果登入 https://別名.signin.aws.amazon.com/console/s3,您會被重新引導至位在 https://signin.aws.amazon.com 的全域登入端點。此重新引導會在您的全域日誌中建立事件。

  • 您也可以使用 URL,例如 https://alias.signin.aws.amazon.com/console?region=ap-southeast-1,手動請求特定的區域登入端點。此 URL 會重新引導至 ap-southeast-1 區域登入端點。此重新引導會在區域日誌中產生事件。

防止重複的區域日誌項目

CloudTrail 會在每個區域中建立不同的線索。這些線索包含的資訊,涵括發生在這些區域中的事件,以及全球事件和非特定區域事件。範例包括 IAM API 呼叫、對全球端點的 AWS STS 呼叫,以及 AWS 登入事件。例如,假設您有兩個線索,每個線索都位於不同區域。若您接著建立新的 IAM 使用者,CreateUser 事件便會新增到兩個區域的日誌檔案中,建立重複的日誌項目。

AWS Security Token Service (STS) 是一項全球服務,僅有一個位於 https://sts.amazonaws.com 的全球端點。對此端點的呼叫都會記錄為對全球服務的呼叫。但是,由於此端點實際位於美國東部 (維吉尼亞北部) 區域,因此您的日誌會將 us-east-1 列為事件區域。CloudTrail 不會將這些日誌寫入美國東部 (俄亥俄州) 區域,除非您選擇在該區域中包含全域服務日誌。AWS STS 也允許呼叫區域端點,例如 sts.eu-central-1.amazonaws.com。CloudTrail 將所有區域端點的呼叫寫入到其各自的區域。例如,對 sts.us-east-2.amazonaws.com 的呼叫會發佈到美國東部 (俄亥俄) 區域。對 sts.eu-central-1.amazonaws.com 的呼叫則會發佈於歐洲 (法蘭克福) 區域日誌。

如需有關多個區域及 AWS STS 的詳細資訊,請參閱 在 AWS STS 區域中管理 AWS

下表列出區域,以及 CloudTrail 在每個區域記錄 AWS STS 請求日誌的方式。「位置」欄會指出 CloudTrail 寫入的日誌。「全域」是指該事件的日誌會記錄在您所選擇包括全域服務日誌的任何區域中。「區域」表示只在端點所在的區域中記錄事件。最後一欄表示如何在日誌項目中識別請求區域。

區域名稱 CloudTrail 日誌中的區域身分 端點 CloudTrail 日誌的位置
n/a - 全球 us-east-1 sts.amazonaws.com 全球服務
美國東部 (俄亥俄) us-east-2 sts.us-east-2.amazonaws.com 區域
美國東部 (維吉尼亞北部) us-east-1 sts.us-east-1.amazonaws.com 區域
美國西部 (加利佛尼亞北部) us-west-1 sts.us-west-1.amazonaws.com 區域
美國西部 (奧勒岡) us-west-2 sts.us-west-2.amazonaws.com 區域
加拿大 (中部) ca-central-1 sts.ca-central-1.amazonaws.com 區域
歐洲 (法蘭克福) eu-central-1 sts.eu-central-1.amazonaws.com 區域
歐洲 (愛爾蘭) eu-west-1 sts.eu-west-1.amazonaws.com 區域
歐洲 (倫敦) eu-west-2 sts.eu-west-2.amazonaws.com 區域
亞太區域 (東京) ap-northeast-1 sts.ap-northeast-1.amazonaws.com 區域
亞太區域 (首爾) ap-northeast-2 sts.ap-northeast-2.amazonaws.com 區域
亞太區域 (孟買) ap-south-1 sts.ap-south-1.amazonaws.com 區域
亞太區域 (新加坡) ap-southeast-1 sts.ap-southeast-1.amazonaws.com 區域
亞太區域 (雪梨) ap-southeast-2 sts.ap-southeast-2.amazonaws.com 區域
南美洲 (聖保羅) sa-east-1 sts.sa-east-1.amazonaws.com 區域

當您設定 CloudTrail 從您帳戶中的多個區域,將追蹤資訊彙整至單一 Amazon S3 儲存貯體時,IAM 事件便會在日誌中重複。換句話說,每個區域的追蹤都會將相同的 IAM 事件寫入彙整日誌。若要防止此重複,您可以選擇性地包含全球事件。一般是在一個線索中啟用全球事件。然後,停用所有寫入同一 Amazon S3 儲存貯體之其他線索中的全球事件。以此方式就只寫入一組全球事件。

如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的彙整日誌

記錄使用者登入事件

CloudTrail 會將登入事件記錄到 AWS Management Console、AWS 開發論壇及 AWS Marketplace。CloudTrail 會記錄 IAM 使用者和聯合身分使用者的成功和失敗登入嘗試。

若要檢視成功和失敗根使用者登入的 CloudTrail 事件範例,請參閱《AWS CloudTrail 使用者指南》中的根使用者的範例事件記錄

作為安全最佳實務,AWS 不會在因使用者名稱不正確而造成登入失敗時記錄輸入的 IAM 使用者名稱文字。使用者名稱文字是由值 HIDDEN_DUE_TO_SECURITY_REASONS 遮蓋的。如需此範例,請參閱本主題後述的因使用者名稱不正確以致登入失敗的事件範例。因為這類失敗可能是使用者錯誤所造成,所以會隱蔽使用者名稱文字。記錄這些錯誤可能會公開潛在的敏感資訊。例如:

  • 您不小心在使用者名稱方塊中輸入密碼。

  • 您選擇了某個 AWS 帳戶的登入頁面連結,但輸入不同帳戶的帳號。

  • 您忘記了正在登入的帳戶,並且無意中輸入了您的個人電子郵件帳戶的帳戶名稱,銀行登入識別碼或其他私有 ID。

記錄暫時憑證的登入事件

當委託人請求暫時憑證時,委託人類型會決定 CloudTrail 記錄事件的方式。當委託人擔任另一個帳戶中的角色時,情況會很複雜。有多個 API 呼叫會執行與角色跨帳戶操作相關的操作。首先,委託人呼叫 AWS STS API 以擷取暫時憑證。該操作會記錄在發起呼叫的帳戶以及執行 AWS STS 操作的帳戶中。然後,委託人會使用該角色,在擔任角色的帳戶中執行其他 API 呼叫。

您可以使用角色信任政策中的 sts:SourceIdentity 條件索引鍵,請求使用者在擔任角色時指定身分。例如,您可以請求 IAM 使用者將自己的使用者名稱指定為其來源身分。這可以協助您判斷哪位使用者在 AWS 中執行了特定動作。如需詳細資訊,請參閱 sts:SourceIdentity。您亦可以使用 sts:RoleSessionName,請求使用者在擔任角色時指定工作階段名稱。當您檢閱 AWS CloudTrail 日誌時,這可協助您區分由不同委託人所使用之角色的角色工作階段。

下表顯示了 CloudTrail 如何為產生臨時憑證的每個 API 呼叫記錄不同的資訊。

委託人類型 STS API 呼叫者帳戶 CloudTrail 日誌中的使用者身分 所擔任角色帳戶 CloudTrail 日誌中的使用者身分 角色後續 API 呼叫之 CloudTrail 日誌中的使用者身分
AWS 帳戶根使用者憑證 GetSessionToken 根使用者身分 角色擁有者帳戶與呼叫帳戶相同 根使用者身分
IAM 使用者 GetSessionToken IAM 使用者身分 角色擁有者帳戶與呼叫帳戶相同 IAM 使用者身分
IAM 使用者 GetFederationToken IAM 使用者身分 角色擁有者帳戶與呼叫帳戶相同 IAM 使用者身分
IAM 使用者 AssumeRole IAM 使用者身分 帳戶和委託人 ID (若為使用者),或是 AWS 服務委託人 僅限角色身分 (非使用者)
外部驗證的使用者 AssumeRoleWithSAML N/A SAML 使用者身分 僅限角色身分 (非使用者)
外部驗證的使用者 AssumeRoleWithWebIdentity N/A OIDC/Web 使用者身分 僅限角色身分 (非使用者)

CloudTrail 日誌中的 IAM API 事件範例

CloudTrail 日誌檔案包含使用 JSON 格式化的事件。一個 API 事件代表單一 API 請求,並包含委託人、請求動作、任何參數以及動作的日期和時間等資訊。

CloudTrail 日誌檔案中的 IAM API 事件範例

以下範例顯示針對 IAM GetUserPolicy 動作發出請求的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/JaneDoe", "accountId": "444455556666", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "JaneDoe", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-07-15T21:39:40Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-07-15T21:40:14Z", "eventSource": "iam.amazonaws.com", "eventName": "GetUserPolicy", "awsRegion": "us-east-2", "sourceIPAddress": "signin.amazonaws.com", "userAgent": "signin.amazonaws.com", "requestParameters": { "userName": "JaneDoe", "policyName": "ReadOnlyAccess-JaneDoe-201407151307" }, "responseElements": null, "requestID": "9EXAMPLE-0c68-11e4-a24e-d5e16EXAMPLE", "eventID": "cEXAMPLE-127e-4632-980d-505a4EXAMPLE" }

從這個事件資訊,您可以判斷提出請求是為了取得使用者 ReadOnlyAccess-JaneDoe-201407151307 的一個名為 JaneDoe 的使用者政策,如 requestParameters 元素中所指定。您也可以看到該請求由名為 JaneDoe 的 IAM 使用者於 2014 年 7 月 15 日下午 9:40 (UTC) 提出。在這情況下,請求源自 AWS Management Console,您可以從 userAgent 元素中獲知。

CloudTrail 日誌中的 AWS STS API 事件範例

CloudTrail 日誌檔案包含使用 JSON 格式化的事件。一個 API 事件代表單一 API 請求,並包含委託人、請求動作、任何參數以及動作的日期和時間等資訊。

CloudTrail 日誌檔案中的範例跨帳戶 AWS STS API 事件

帳戶 777788889999 中名為 JohnDoe 的 IAM 使用者呼叫 AWS STS AssumeRole 動作來擔任帳戶 111122223333 中的角色 EC2-dev。帳戶管理員會要求使用者在擔任角色時,將來源身分設定為等於其使用者名稱。使用者傳入 JohnDoe 的來源身分值。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "arn": "arn:aws:iam::777788889999:user/JohnDoe", "accountId": "777788889999", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "userName": "JohnDoe" }, "eventTime": "2014-07-18T15:07:39Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67", "requestParameters": { "roleArn": "arn:aws:iam::111122223333:role/EC2-dev", "roleSessionName": "JohnDoe-EC2-dev", "sourceIdentity": "JohnDoe", "serialNumber": "arn:aws:iam::777788889999:mfa" }, "responseElements": { "credentials": { "sessionToken": "<encoded session token blob>", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "expiration": "Jul 18, 2014 4:07:39 PM" }, "assumedRoleUser": { "assumedRoleId": "AIDAQRSTUVWXYZEXAMPLE:JohnDoe-EC2-dev", "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/JohnDoe-EC2-dev" }, "sourceIdentity": "JohnDoe" }, "resources": [ { "ARN": "arn:aws:iam::111122223333:role/EC2-dev", "accountId": "111122223333", "type": "AWS::IAM::Role" } ], "requestID": "4EXAMPLE-0e8d-11e4-96e4-e55c0EXAMPLE", "sharedEventID": "bEXAMPLE-efea-4a70-b951-19a88EXAMPLE", "eventID": "dEXAMPLE-ac7f-466c-a608-4ac8dEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }

第二個範例顯示所擔任角色帳戶 (111122223333) 相同請求的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSAccount", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "accountId": "777788889999" }, "eventTime": "2014-07-18T15:07:39Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67", "requestParameters": { "roleArn": "arn:aws:iam::111122223333:role/EC2-dev", "roleSessionName": "JohnDoe-EC2-dev", "sourceIdentity": "JohnDoe", "serialNumber": "arn:aws:iam::777788889999:mfa" }, "responseElements": { "credentials": { "sessionToken": "<encoded session token blob>", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "expiration": "Jul 18, 2014 4:07:39 PM" }, "assumedRoleUser": { "assumedRoleId": "AIDAQRSTUVWXYZEXAMPLE:JohnDoe-EC2-dev", "arn": "arn:aws:sts::111122223333:assumed-role/EC2-dev/JohnDoe-EC2-dev" }, "sourceIdentity": "JohnDoe" }, "requestID": "4EXAMPLE-0e8d-11e4-96e4-e55c0EXAMPLE", "sharedEventID": "bEXAMPLE-efea-4a70-b951-19a88EXAMPLE", "eventID": "dEXAMPLE-ac7f-466c-a608-4ac8dEXAMPLE" }

CloudTrail 日誌檔案中的範例 AWS STS 角色鏈接 API 事件

以下範例顯示 John Doe 在帳戶 111111111111 中請求的 CloudTrail 日誌項目。John 以前用過他的 JohnDoe 使用者擔任 JohnRole1 角色。對此請求而言,他使用該角色的憑證擔任 JohnRole2 角色。這就是所謂的角色鏈接。他在擔任 JohnDoe1 角色時所設定的來源身分將保留在請求中以擔任 JohnRole2。如果 John 嘗試在擔任角色時設定不同的來源身分,則請求將會遭到拒絕。John 將兩個工作階段標籤傳遞給請求。並將這兩個標籤設為轉移。因為 John 在擔任 Department 時將其設為轉移,所以此請求繼承 JohnRole1 標籤也為轉移。如需有關來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作。如需有關角色鏈結中轉移索引鍵的詳細資訊,請參閱 使用工作階段標籤鏈結角色

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIN5ATK5U7KEXAMPLE:JohnRole1", "arn": "arn:aws:sts::111111111111:assumed-role/JohnDoe/JohnRole1", "accountId": "111111111111", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-10-02T21:50:54Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIN5ATK5U7KEXAMPLE", "arn": "arn:aws:iam::111111111111:role/JohnRole1", "accountId": "111111111111", "userName": "JohnDoe" }, "sourceIdentity": "JohnDoe" } }, "eventTime": "2019-10-02T22:12:29Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "us-east-2", "sourceIPAddress": "123.145.67.89", "userAgent": "aws-cli/1.16.248 Python/3.4.7 Linux/4.9.184-0.1.ac.235.83.329.metal1.x86_64 botocore/1.12.239", "requestParameters": { "incomingTransitiveTags": { "Department": "Engineering" }, "tags": [ { "value": "johndoe@example.com", "key": "Email" }, { "value": "12345", "key": "CostCenter" } ], "roleArn": "arn:aws:iam::111111111111:role/JohnRole2", "roleSessionName": "Role2WithTags", "sourceIdentity": "JohnDoe", "transitiveTagKeys": [ "Email", "CostCenter" ], "durationSeconds": 3600 }, "responseElements": { "credentials": { "accessKeyId": "ASIAWHOJDLGPOEXAMPLE", "expiration": "Oct 2, 2019 11:12:29 PM", "sessionToken": "AgoJb3JpZ2luX2VjEB4aCXVzLXdlc3QtMSJHMEXAMPLETOKEN+//rJb8Lo30mFc5MlhFCEbubZvEj0wHB/mDMwIgSEe9gk/Zjr09tZV7F1HDTMhmEXAMPLETOKEN/iEJ/rkqngII9///////////ARABGgw0MjgzMDc4NjM5NjYiDLZjZFKwP4qxQG5sFCryASO4UPz5qE97wPPH1eLMvs7CgSDBSWfonmRTCfokm2FN1+hWUdQQH6adjbbrVLFL8c3jSsBhQ383AvxpwK5YRuDE1AI/+C+WKFZb701eiv9J5La2EXAMPLETOKEN/c7S5Iro1WUJ0q3Cxuo/8HUoSxVhQHM7zF7mWWLhXLEQ52ivL+F6q5dpXu4aTFedpMfnJa8JtkWwG9x1Axj0Ypy2ok8v5unpQGWych1vwdvj6ez1Dm8Xg1+qIzXILiEXAMPLETOKEN/vQGqu8H+nxp3kabcrtOvTFTvxX6vsc8OGwUfHhzAfYGEXAMPLETOKEN/L6v1yMM3B1OwFOrQBno1HEjf1oNI8RnQiMNFdUOtwYj7HUZIOCZmjfN8PPHq77N7GJl9lzvIZKQA0Owcjg+mc78zHCj8y0siY8C96paEXAMPLETOKEN/E3cpksxWdgs91HRzJWScjN2+r2LTGjYhyPqcmFzzo2mCE7mBNEXAMPLETOKEN/oJy+2o83YNW5tOiDmczgDzJZ4UKR84yGYOMfSnF4XcEJrDgAJ3OJFwmTcTQICAlSwLEXAMPLETOKEN" }, "assumedRoleUser": { "assumedRoleId": "AROAIFR7WHDTSOYQYHFUE:Role2WithTags", "arn": "arn:aws:sts::111111111111:assumed-role/test-role/Role2WithTags" }, "sourceIdentity": "JohnDoe" }, "requestID": "b96b0e4e-e561-11e9-8b3f-7b396EXAMPLE", "eventID": "1917948f-3042-46ec-98e2-62865EXAMPLE", "resources": [ { "ARN": "arn:aws:iam::111111111111:role/JohnRole2", "accountId": "111111111111", "type": "AWS::IAM::Role" } ], "eventType": "AwsApiCall", "recipientAccountId": "111111111111" }

CloudTrail 日誌檔案中的範例 AWS 服務 AWS STS API 事件

以下範例顯示 AWS 服務的請求 CloudTrail 日誌項目,此服務使用服務角色的許可呼叫另一項服務的 API。它會顯示帳戶 777788889999 所提出請求的 CloudTrail 日誌項目。

{ "eventVersion": "1.04", "userIdentity": { "type": "AssumedRole", "principalId": "AIDAQRSTUVWXYZEXAMPLE:devdsk", "arn": "arn:aws:sts::777788889999:assumed-role/AssumeNothing/devdsk", "accountId": "777788889999", "accessKeyId": "AKIAQRSTUVWXYZEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2016-11-14T17:25:26Z" }, "sessionIssuer": { "type": "Role", "principalId": "AIDAQRSTUVWXYZEXAMPLE", "arn": "arn:aws:iam::777788889999:role/AssumeNothing", "accountId": "777788889999", "userName": "AssumeNothing" } } }, "eventTime": "2016-11-14T17:25:45Z", "eventSource": "s3.amazonaws.com", "eventName": "DeleteBucket", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.1", "userAgent": "[aws-cli/1.11.10 Python/2.7.8 Linux/3.2.45-0.6.wd.865.49.315.metal1.x86_64 botocore/1.4.67]", "requestParameters": { "bucketName": "my-test-bucket-cross-account" }, "responseElements": null, "requestID": "EXAMPLE463D56D4C", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "777788889999" }

CloudTrail 日誌檔案中的 SAML AWS STS API 事件範例

以下範例顯示針對 AWS STS AssumeRoleWithSAML 動作發出請求的 CloudTrail 日誌項目。此請求包含 SAML 屬性 CostCenterProject,這些屬性透過 SAML 聲明以工作階段標籤的形式傳遞。這些標籤設為轉移,以便能在角色鏈接藍本中繼續。此請求包含 SAML 屬性 sourceIdentity,會在 SAML 聲明中傳遞。如果有人使用產生的角色工作階段憑證來擔任另一個角色,則此來源身分會持續存在。

{ "eventVersion": "1.05", "userIdentity": { "type": "SAMLUser", "principalId": "SampleUkh1i4+ExamplexL/jEvs=:SamlExample", "userName": "SamlExample", "identityProvider": "bdGOnTesti4+ExamplexL/jEvs=" }, "eventTime": "2019-11-01T19:14:36Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithSAML", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.16.263 Python/3.4.7 Linux/4.9.184-0.1.ac.235.83.329.metal1.x86_64 botocore/1.12.253", "requestParameters": { "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE", "roleSessionName": "MyAssignedRoleSessionName", "sourceIdentity": "MySAMLUser", "principalTags": { "CostCenter": "987654", "Project": "Unicorn", "Department": "Engineering" }, "transitiveTagKeys": [ "CostCenter", "Project" ], "durationSeconds": 3600, "roleArn": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth", "principalArn": "arn:aws:iam::444455556666:saml-provider/Shibboleth" }, "responseElements": { "subjectType": "transient", "issuer": "https://server.example.com/idp/shibboleth", "sourceIdentity": "MySAMLUser" "credentials": { "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "expiration": "Mar 23, 2016 2:39:57 AM", "sessionToken": "<encoded session token blob>" }, "nameQualifier": "bdGOnTesti4+ExamplexL/jEvs=", "assumedRoleUser": { "assumedRoleId": "AROAD35QRSTUVWEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/SAMLTestRoleShibboleth/MyAssignedRoleSessionName" }, "subject": "SamlExample", "audience": "https://signin.aws.amazon.com/saml" }, "resources": [ { "ARN": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth", "accountId": "444455556666", "type": "AWS::IAM::Role" }, { "ARN": "arn:aws:iam::444455556666:saml-provider/test-saml-provider", "accountId": "444455556666", "type": "AWS::IAM::SAMLProvider" } ], "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "444455556666" }

CloudTrail 日誌檔案中的範例 Web 身分 AWS STS API 事件

以下範例顯示針對 AWS STS AssumeRoleWithWebIdentity 動作發出請求的 CloudTrail 日誌項目。此請求包含屬性 CostCenterProject,這些屬性透過身分提供者權杖以工作階段標籤的形式傳遞。這些標籤設為轉移,以便能在角色鏈接中繼續。請求包含從身分提供者權杖的 sourceIdentity 屬性。如果有人使用產生的角色工作階段憑證來擔任另一個角色,則此來源身分會持續存在。

{ "eventVersion": "1.05", "userIdentity": { "type": "WebIdentityUser", "principalId": "accounts.google.com:<id-of-application>.apps.googleusercontent.com:<id-of-user>", "userName": "<id of user>", "identityProvider": "accounts.google.com" }, "eventTime": "2016-03-23T01:39:51Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithWebIdentity", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/1.3.23 Python/2.7.6 Linux/2.6.18-164.el5", "requestParameters": { "sourceIdentity": "MyWebIdentityUser", "durationSeconds": 3600, "roleArn": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "roleSessionName": "MyAssignedRoleSessionName" "principalTags": { "CostCenter": "24680", "Project": "Pegasus" }, "transitiveTagKeys": [ "CostCenter", "Project" ], }, "responseElements": { "provider": "accounts.google.com", "subjectFromWebIdentityToken": "<id of user>", "sourceIdentity": "MyWebIdentityUser", "audience": "<id of application>.apps.googleusercontent.com", "credentials": { "accessKeyId": "ASIACQRSTUVWRAOEXAMPLE", "expiration": "Mar 23, 2016 2:39:51 AM", "sessionToken": "<encoded session token blob>" }, "assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/FederatedWebIdentityRole/MyAssignedRoleSessionName" } }, "resources": [ { "ARN": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "accountId": "444455556666", "type": "AWS::IAM::Role" } ], "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "bEXAMPLE-0b30-4246-b28c-e3da3EXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "444455556666" }

CloudTrail 日誌中的範例登入事件

CloudTrail 日誌檔案包含使用 JSON 格式化的事件。登入事件代表單一登入請求,並包含登入委託人、區域以及動作的日期和時間等資訊。

CloudTrail 日誌檔案中的範例登入成功事件

以下範例顯示成功登入事件的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::111122223333:user/JohnDoe", "accountId": "111122223333", "userName": "JohnDoe" }, "eventTime": "2014-07-16T15:49:27Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.110", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "requestParameters": null, "responseElements": { "ConsoleLogin": "Success" }, "additionalEventData": { "MobileVersion": "No", "LoginTo": "https://console.aws.amazon.com/s3/", "MFAUsed": "No" }, "eventID": "3fcfb182-98f8-4744-bd45-10a395ab61cb" }

如需有關 CloudTrail 日誌檔案中包含資訊的詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的 CloudTrail 事件參考

CloudTrail 日誌檔案中的登入失敗事件範例

以下範例顯示失敗登入事件的 CloudTrail 日誌項目。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::111122223333:user/JaneDoe", "accountId": "111122223333", "userName": "JaneDoe" }, "eventTime": "2014-07-08T17:35:27Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.100", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "errorMessage": "Failed authentication", "requestParameters": null, "responseElements": { "ConsoleLogin": "Failure" }, "additionalEventData": { "MobileVersion": "No", "LoginTo": "https://console.aws.amazon.com/sns", "MFAUsed": "No" }, "eventID": "11ea990b-4678-4bcd-8fbe-62509088b7cf" }

根據此資訊,您可以判斷嘗試登入的人是名為 JaneDoe 的 IAM 使用者 ,如 userIdentity 元素所示。您還可以看到登入嘗試失敗,如 responseElements 元素所示。您可以看到 JaneDoe 於 UTC 時間 2014 年 7 月 8 日下午 5:35 嘗試登入 Amazon SNS 主控台。

因使用者名稱不正確以致登入失敗的事件範例

以下範例顯示因使用者輸入不正確使用者名稱,所造成不成功登入事件的 CloudTrail 日誌項目。AWS 會使用 HIDDEN_DUE_TO_SECURITY_REASONS 遮罩 userName 文字,協助避免將潛在敏感性資訊公開。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "accountId": "123456789012", "accessKeyId": "", "userName": "HIDDEN_DUE_TO_SECURITY_REASONS" }, "eventTime": "2015-03-31T22:20:42Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", "errorMessage": "No username found in supplied account", "requestParameters": null, "responseElements": { "ConsoleLogin": "Failure" }, "additionalEventData": { "LoginTo": "https://console.aws.amazon.com/console/home?state=hashArgs%23&isauthcode=true", "MobileVersion": "No", "MFAUsed": "No" }, "eventID": "a7654656-0417-45c6-9386-ea8231385051", "eventType": "AwsConsoleSignin", "recipientAccountId": "123456789012" }