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

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

使用以下方式記錄 IAM 和 AWS STS API 呼叫 AWS CloudTrail

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 用者指南

IAM 和 AWS STS 資訊 CloudTrail

CloudTrail 在您創建帳戶 AWS 帳戶 時啟用。當活動發生在 IAM 中 AWS STS,或者,該活動會與事件歷史記錄中的其他 AWS 服務 CloudTrail 事件一起記錄在事件中。您可以查看,搜索和下載最近的事件 AWS 帳戶。如需詳細資訊,請參閱檢視具有事 CloudTrail 件記錄的事件

如需您的事件的持續記錄 AWS 帳戶,包括 IAM 的事件 AWS STS,並建立追蹤。追蹤可 CloudTrail 將日誌檔交付到 Amazon S3 儲存貯體。根據預設,當您在主控台建立線索時,線索會套用到所有 區域。追蹤記錄來自 AWS 分區中所有區域的事件,並將日誌檔傳送到您指定的 Amazon S3 儲存貯體。此外,您還可以設定其他 AWS 服務,以進一步分析 CloudTrail 記錄中收集的事件資料並採取行動。如需詳細資訊,請參閱:

所有 IAM 和 AWS STS 動作都會記錄在 IAM API 參考 CloudTrail 和 API 參考資料中,並記錄在AWS Security Token Service 其中。

記錄 IAM 和 AWS STS API 請求

CloudTrail 將所有經過驗證的 API 請求 (使用登入資料發出) 記錄到 IAM 和 AWS STS API 操作。 CloudTrail 也會將未驗證的要求記錄至 AWS STS 動作AssumeRoleWithWebIdentityAssumeRoleWithSAML並記錄身分識別提供者提供的資訊。您可以使用此資訊來對應呼叫,此呼叫由具有假設角色的聯合身分使用者發出並傳回到發起的外部聯合身分呼叫者。在的情況下AssumeRole,您可以將呼叫對應回原始 AWS 服務或原始使用者的帳戶。 CloudTrail 記錄項目中 JSON 資料的userIdentity區段包含您將 AssumeRole * 要求對應至特定同盟使用者所需的資訊。若要取得更多資訊,請參閱AWS CloudTrail 使用者指南中的使用者 CloudTrail userIdentity 元素

例如,對 IAM CreateUser DeleteRole ListGroups、和其他 API 操作的呼叫全部記錄 CloudTrail。

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

記錄其他 AWS 服務的 API 請求

其他 AWS 服務 API 作業的已驗證要求會由記錄 CloudTrail,而這些記錄項目包含產生要求者的相關資訊。

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

如需有關 CloudTrail 記錄項目中使用者身分資訊的詳細資訊,請參閱使AWS CloudTrail 用者指南中的使用者 userIdentity 元素

記錄使用者登入事件

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

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

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

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

  • 您可以選擇其中一個登入頁面的連結 AWS 帳戶,然後輸入其他帳號 AWS 帳戶。

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

記錄暫時憑證的登入事件

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

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

下表顯示如何為每個產生臨時認證的 AWS STS API CloudTrail 記錄不同的使用者身分資訊。

主體類型 STS API 來電者帳戶的 CloudTrail 日誌中的用戶身份 假定角色帳戶的 CloudTrail 記錄中的使用者身分 角色後續 API 呼叫的 CloudTrail 記錄檔中的使用者身分
AWS 帳戶根使用者 認證 GetSessionToken 根使用者身分 角色擁有者帳戶與呼叫帳戶相同 根使用者身分
IAM 使用者 GetSessionToken IAM 使用者身分 角色擁有者帳戶與呼叫帳戶相同 IAM 使用者身分
IAM 使用者 GetFederationToken IAM 使用者身分 角色擁有者帳戶與呼叫帳戶相同 IAM 使用者身分
IAM 使用者 AssumeRole IAM 使用者身分 帳戶號碼和主體 ID(如果是使用者),或 AWS 服務主體 僅限角色身分 (非使用者)
外部驗證的使用者 AssumeRoleWith薩姆爾 N/A SAML 使用者身分 僅限角色身分 (非使用者)
外部驗證的使用者 AssumeRoleWithWebIdentity N/A OIDC/Web 使用者身分 僅限角色身分 (非使用者)

CloudTrail 如果動作對資源沒有任何變異影響,則會將動作視為唯讀。記錄唯讀事件時,會 CloudTrail 標記記錄檔中的responseElements資訊。當 CloudTrail 記錄不是唯讀的事件時,完整的responseElements會顯示在記錄項目中。但是,對於 AWS STS APIAssumeRole,和 AssumeRoleWithSAMLAssumeRoleWithWebIdentity,即使它們以唯讀方式記錄,也 CloudTrail 會在這些 API 的日誌responseElements中包含完整內容。

下表顯示產生臨時認證之每個 AWS STS API 的 CloudTrail 記錄檔responseElementsreadOnly資訊的方式。

STS API 回應元素資訊 唯讀
AssumeRole 已包含 true
AssumeRoleWith薩姆爾 已包含 true
AssumeRoleWithWebIdentity 已包含 true
GetFederationToken 已包含 false
GetSessionToken 已包含 false

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 中指定的身分與存取權與存取權管理使用者會呼叫此 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": "AKIAIOSFODNN7EXAMPLE", "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": "ASIAI44QH8DHBEXAMPLE", "expiration": "Jul 18, 2023, 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": "ASIAI44QH8DHBEXAMPLE", "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 事件的範例

下列範例顯示 Doe 在帳戶 1111111111 中所提出之要求的 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": "ASIAIOSFODNN7EXAMPLE", "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": "ASIAI44QH8DHBEXAMPLE", "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 服務 API 的服務所發出之要求的 CloudTrail 記錄項目。它顯示了在 CloudTrail 帳戶 777788889999 中提出的請求的日誌條目。

{ "eventVersion": "1.04", "userIdentity": { "type": "AssumedRole", "principalId": "AROAQRSTUVWXYZEXAMPLE:devdsk", "arn": "arn:aws:sts::777788889999:assumed-role/AssumeNothing/devdsk", "accountId": "777788889999", "accessKeyId": "ASIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2016-11-14T17:25:26Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAQRSTUVWXYZEXAMPLE", "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 聲明以工作階段標籤的形式傳遞。這些標籤設為轉移,以便能在角色鏈接藍本中繼續。請求包括可選的 API 參數DurationSeconds,以 CloudTrail 日誌durationSeconds中的形式表示,並設置為1800秒。此請求亦包含 SAML 屬性 sourceIdentity,會在 SAML 聲明中傳遞。如果有人使用產生的角色工作階段憑證來擔任另一個角色,則此來源身分會持續存在。

{ "eventVersion": "1.08", "userIdentity": { "type": "SAMLUser", "principalId": "SampleUkh1i4+ExamplexL/jEvs=:SamlExample", "userName": "SamlExample", "identityProvider": "bdGOnTesti4+ExamplexL/jEvs=" }, "eventTime": "2023-08-28T18:30:58Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithSAML", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "aws-internal/3 aws-sdk-java/1.12.479 Linux/5.10.186-157.751.amzn2int.x86_64 OpenJDK_64-Bit_Server_VM/17.0.7+11 java/17.0.7 kotlin/1.3.72 vendor/Amazon.com_Inc. cfg/retry-mode/standard", "requestParameters": { "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE", "roleSessionName": "MyAssignedRoleSessionName", "sourceIdentity": "MySAMLUser", "principalTags": { "CostCenter": "987654", "Project": "Unicorn", "Department": "Engineering" }, "transitiveTagKeys": [ "CostCenter", "Project" ], "roleArn": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth", "principalArn": "arn:aws:iam::444455556666:saml-provider/Shibboleth", "durationSeconds": 1800 }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionToken": "<encoded session token blob>", "expiration": "Aug 28, 2023, 7:00:58 PM" }, "assumedRoleUser": { "assumedRoleId": "AROAD35QRSTUVWEXAMPLE:MyAssignedRoleSessionName", "arn": "arn:aws:sts::444455556666:assumed-role/SAMLTestRoleShibboleth/MyAssignedRoleSessionName" }, "packedPolicySize": 1, "subject": "SamlExample", "subjectType": "transient", "issuer": "https://server.example.com/idp/shibboleth", "audience": "https://signin.aws.amazon.com/saml", "nameQualifier": "bdGOnTesti4+ExamplexL/jEvs=", "sourceIdentity": "MySAMLUser" }, "requestID": "6EXAMPLE-e595-11e5-b2c7-c974fEXAMPLE", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "readOnly": true, "resources": [ { "accountId": "444455556666", "type": "AWS::IAM::Role", "ARN": "arn:aws:iam::444455556666:role/SAMLTestRoleShibboleth" }, { "accountId": "444455556666", "type": "AWS::IAM::SAMLProvider", "ARN": "arn:aws:iam::444455556666:saml-provider/test-saml-provider" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "444455556666", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.2", "cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256", "clientProvidedHostHeader": "sts.us-east-2.amazonaws.com" } }

記錄檔中的範例 OIDC AWS STS API 事件 CloudTrail

下列範例顯示針對 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": "ASIAIOSFODNN7EXAMPLE", "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 遮罩userName文字,HIDDEN_DUE_TO_SECURITY_REASONS以協助防止暴露潛在的敏感資訊。

{ "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" }

IAM 角色信任政策行為

2022 年 9 月 21 日,對 IAM 角色信任政策行為進行 AWS 了變更,以在角色擔任自身時要求角色信任政策中明確允許。舊版行為中的 IAM 角色允許清單具有適用於AssumeRole事件 explicitTrustGrant 的 additionalEventData 欄位。當舊版允許清單上的角色假設自己使用舊版行為時,值為 false。explicitTrustGrant當舊版允許清單上的角色假設自己,但角色信任原則行為已更新為明確允許角色假設自己時,的值explicitTrustGrant為 true。

舊版行為的允許清單中只有極少數 IAM 角色,而且只有這些角色假設自己時,此欄位才會出現在這些角色的 CloudTrail 記錄中。在大多數情況下,IAM 角色不需要假定自己。 AWS 建議您更新處理程序、程式碼或組態,以移除此行為,或更新角色信任原則以明確允許此行為。如需詳細資訊,請參閱宣告 IAM 角色信任政策行為的更新