日誌記錄IAM和 AWS STS API通話與 AWS CloudTrail - AWS 身分和存取權管理

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

日誌記錄IAM和 AWS STS API通話與 AWS CloudTrail

IAM和 AWS STS 與整合 AWS CloudTrail,提供IAM使用者或角色所採取之動作記錄的服務。 CloudTrail 捕獲所有API呼叫IAM和 AWS STS 作為事件,包括來自控制台和來自API呼叫的呼叫。如果您建立追蹤,您可以啟用將 CloudTrail 事件持續傳遞到 Amazon S3 儲存貯體。如果您未設定追蹤,您仍然可以在 [事件歷程記錄] 中檢視 CloudTrail主控台中最近的事件。您可以使用 CloudTrail 來取得要求的相關資訊,IAM或 AWS STS。 例如,您可以檢視提出要求的 IP 位址、提出要求的人員、提出要求的時間以及其他詳細資訊。

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

IAM和 AWS STS 中的資訊 CloudTrail

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

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

全部IAM和 AWS STS 動作由記錄, CloudTrail 並將其記錄在「IAMAPI參考」和 AWS Security Token Service API參考

日誌記錄IAM和 AWS STS API請求

CloudTrail 將所有已驗證的API請求記錄到IAM和 AWS STS API操作。 CloudTrail 也會將未驗證的要求記錄到 AWS STS 處理行動AssumeRoleWithWebIdentityAssumeRoleWithSAML和記錄身分識別提供者所提供的資訊。但是,一些未經身份驗證 AWS STS 請求可能不會被記錄,因為它們不符合足夠有效以被信任為合法請求的最低期望。

您可以使用記錄的資訊,將具有假定角色的聯合使用者所發出的呼叫對應回原始外部聯合呼叫者。在的情況下AssumeRole,您可以將呼叫映射回來源 AWS 服務或原始使用者的帳戶。 CloudTrail 記錄項目中的資JSON料userIdentity區段包含對映所需的資訊 AssumeRole* 向特定聯合使用者提出要求。如需詳細資訊 CloudTrail userIdentity,請參閱 AWS CloudTrail 使用者指南

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

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

將API請求記錄到其他 AWS services

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

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

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

記錄使用者登入事件

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

若要檢視 root 使用者登入成功與失敗的範例 CloudTrail 事件,請參閱根使用者的範例事件記錄 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 日誌。

下表顯示了如何為每個 CloudTrail 記錄不同的用戶身份信息 AWS STS APIs生成臨時憑據。

主體類型 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/網頁用戶身份 僅限角色身分 (非使用者)

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

下表顯示 CloudTrail 記錄檔responseElementsreadOnly資訊的每個 AWS STS APIs生成臨時憑據。

STS API 回應元素資訊 唯讀
AssumeRole 已包含 true
AssumeRoleWithSAML 已包含 true
AssumeRoleWithWebIdentity 已包含 true
GetFederationToken 已包含 false
GetSessionToken 已包含 false

CloudTrail記錄檔中的IAMAPI事件範例

CloudTrail 記錄檔包含使用格式化的事件JSON。API事件代表單一API請求,其中包含有關主參與者、請求的動作、任何參數以及動作日期和時間的資訊。

CloudTrail 記錄檔中的範例IAMAPI事件

下列範例顯示針對IAMGetUserPolicy動作所發出之請求的 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 元素中所指定。您還可以看到該請求是由 2014 年 7 月 15 JaneDoe 日下午 9:40(UTC)命名的IAM用戶提出的。在這種情況下,請求源於 AWS Management Console,正如你可以從userAgent元素中看出來的那樣。

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

CloudTrail 記錄檔包含使用格式化的事件JSON。API事件代表單一API請求,其中包含有關主參與者、請求的動作、任何參數以及動作日期和時間的資訊。

跨帳戶範例 AWS STS API CloudTrail記錄檔中的事件

JohnDoe在帳戶中指定的IAM使用者呼叫 AWS STS AssumeRoleEC2-dev在帳戶 111122223333 中承擔該角色的動作。帳戶管理員會要求使用者在擔任角色時,將來源身分設定為等於其使用者名稱。使用者傳入 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" }

範例 AWS STS CloudTrail 記錄檔中的角色鏈結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" }

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

下列範例顯示由 CloudTrail AWS 使用服務角色的權限API來呼叫其他服務的服務。它顯示了在 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": "amzn-s3-demo-bucket" }, "responseElements": null, "requestID": "EXAMPLE463D56D4C", "eventID": "dEXAMPLE-265a-41e0-9352-4401bEXAMPLE", "eventType": "AwsApiCall", "recipientAccountId": "777788889999" }

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

下列範例顯示針對 CloudTrail AWS STS AssumeRoleWithSAML動作。該請求包括SAML屬性ProjectCostCenter並且通過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 記錄檔中的事件

下列範例顯示針對 CloudTrail AWS STS AssumeRoleWithWebIdentity動作。要求包含屬性,CostCenter並且Project會透過 OpenID Connect (OIDC) 身分識別提供者 (IdP) 權杖作為工作階段標記傳遞。這些標籤設為轉移,以便能在角色鏈接中繼續。請求包含從身分提供者權杖的 sourceIdentity 屬性。如果有人使用產生的角色工作階段憑證來擔任另一個角色,則此來源身分會持續存在。

記 CloudTrail 錄項目也包含具有identityProviderConnectionVerificationMethod屬性的additionalEventData欄位。此屬性指示方法 AWS 用於驗證與OIDC提供者的連線。屬性值將是IAMTrustStoreThumbprint。該IAMTrustStore值表示 AWS 使用我們受信任的根憑證授權單位程式庫 (CAs) 成功驗證與 OIDC IdP 的連線。該Thumbprint值表示 AWS 使用 IdP 組態中設定的憑證指紋來驗證 IdP 伺服OIDC器憑證。

{ "eventVersion": "1.08", "userIdentity": { "type": "WebIdentityUser", "principalId": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>:<id of application>:<id of user>", "userName": "<id of user>", "identityProvider": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>" }, "eventTime": "2024-07-09T15:41:37Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRoleWithWebIdentity", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.101", "userAgent": "aws-cli/2.13.29 Python/3.11.6 Windows/10 exe/AMD64 prompt/off command/sts.assume-role-with-web-identity", "requestParameters": { "roleArn": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole", "roleSessionName": "<assigned role session name>", "sourceIdentity": "MyWebIdentityUser", "durationSeconds": 3600, "principalTags": { "CostCenter": "24680", "Project": "Pegasus" }, "transitiveTagKeys": [ "CostCenter", "Project" ] }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionToken": "<encoded session token blob>", "expiration": "Jul 9, 2024, 4:41:37 PM" }, "subjectFromWebIdentityToken": "<id of user>", "sourceIdentity": "MyWebIdentityUser", "assumedRoleUser": { "assumedRoleId": "AROA123456789EXAMPLE:<assigned role session name>", "arn": "arn:aws:sts::444455556666:assumed-role/FederatedWebIdentityRole/<assigned role session name>" }, "provider": "arn:aws:iam::444455556666:oidc-provider/<issuer url of OIDC provider>", "audience": "<id of application>" }, "additionalEventData": { "identityProviderConnectionVerificationMethod": "IAMTrustStore" }, "requestID": "aEXAMPLE-0b26-40df-8973-c7012EXAMPLE", "eventID": "aEXAMPLE-ee29-4ac0-a0ed-3f5c5EXAMPLE", "readOnly": true, "resources": [ { "accountId": "444455556666", "type": "AWS::IAM::Role", "ARN": "arn:aws:iam::444455556666:role/FederatedWebIdentityRole" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "444455556666", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "sts.us-east-2.amazonaws.com" } }

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 記錄檔中所包含資訊的詳細資CloudTrail 訊,請參AWS 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" }

根據此資訊,您可以判斷登入嘗試是由名為的IAM使用者進行JaneDoe,如userIdentity元素所示。您還可以看到登入嘗試失敗,如 responseElements 元素所示。你可以看到,JaneDoe試圖在 5:35 下午(UTC)在 2014 年 7 月 8 日登錄 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角色信任原則行為

在二零二二年九月二十一日 AWS 將IAM角色信任原則行為變更為在角色假設自身時,需要在角色信任原則中明確允許。IAM舊版行為允許清單中的角色具有適用於AssumeRole事件 explicitTrustGrant 的 additionalEventData 欄位。當舊版允許清單上的角色假設自己使用舊版行為時,值為 false。explicitTrustGrant當舊版允許清單上的角色假設自己,但角色信任原則行為已更新為明確允許角色假設自己時,的值explicitTrustGrant為 true。

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