本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAM 和 AWS STS 與 整合 AWS CloudTrail,此服務提供 IAM 使用者或角色所採取動作的記錄。CloudTrail 會將 IAM 和 的所有 API 呼叫擷取 AWS STS 為事件,包括來自主控台和 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 事件。您可以在 中檢視、搜尋和下載最近的事件 AWS 帳戶。如需詳細資訊,請參閱《使用 CloudTrail 事件歷史記錄檢視事件》https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html。
若要持續記錄 中的事件 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 STS API 操作。CloudTrail 也會將未驗證的請求記錄到 AWS STS 動作 AssumeRoleWithSAML
和 AssumeRoleWithWebIdentity
,並記錄身分提供者提供的資訊。不過,某些未驗證的 AWS STS 請求可能無法記錄,因為它們不符合充分有效以信任為合法請求的最低期望。對於跨帳戶角色假設請求,CloudTrail 不會在目標帳戶的 CloudTrail 中記錄拒絕的 AWS STS 請求。
您可以使用記錄的資訊來對應呼叫,此呼叫由具有假設角色的聯合身分使用者發出並傳回到發起的外部聯合身分呼叫者。如果是 AssumeRole
,您可以將呼叫對應回原始 AWS 服務或原始使用者的帳戶。CloudTrail 日誌項目中 JSON 資料的 userIdentity
部分包含將 AssumeRole* 請求映射到特定聯合身分使用者所需的資訊。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的 CloudTrail userIdentity 元素。
AWS CloudTrail 當 IAM 使用者使用 MFA 登入時, 日誌將包含 MFA 資訊。如果 IAM 使用者擔任 IAM 角色,CloudTrail 也會mfaAuthenticated: true
登入使用擔任角色執行之動作的sessionContext
屬性。不過,CloudTrail 記錄與使用擔任角色的登入資料進行 API 呼叫時 IAM 所需的記錄不同。如需詳細資訊,請參閱 CloudTrail userIdentity 元素。
例如,對 IAM CreateUser
、DeleteRole
、ListGroups
和其他 API 操作的呼叫都是由 CloudTrail 記錄。
本主題稍後會提供此類日誌項目的範例。
記錄其他 AWS 服務的 API 請求
CloudTrail 會記錄對其他服務 AWS API 操作的已驗證請求,這些日誌項目包含產生請求的人員相關資訊。
例如:假設您發出請求,要求列出 Amazon EC2 執行個體或建立 AWS CodeDeploy 部署群組。發出請求的人員或服務相關詳細資訊都會包含在該請求的日誌項目中。此資訊可協助您判斷請求是由 AWS 帳戶根使用者、IAM 使用者、角色或其他 AWS 服務提出。
有關 CloudTrail 日誌項目中使用者身分資訊的更多詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的 userIdentity 元素。
記錄使用者登入事件
CloudTrail 會將登入事件記錄到 AWS Management Console、 AWS 討論論壇和 AWS Marketplace。CloudTrail 會記錄 IAM 使用者和聯合身分使用者的成功和失敗登入嘗試。
若要檢視成功和失敗根使用者登入的 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 | 根使用者身分 | 角色擁有者帳戶與呼叫帳戶相同 | 根使用者身分 |
AWS 帳戶根使用者 登入資料 | AssumeRoot | 根使用者工作階段 | 帳號和主體 ID (若為使用者) | 根使用者工作階段 |
IAM 使用者 | GetSessionToken | IAM 使用者身分 | 角色擁有者帳戶與呼叫帳戶相同 | IAM 使用者身分 |
IAM 使用者 | GetFederationToken | IAM 使用者身分 | 角色擁有者帳戶與呼叫帳戶相同 | IAM 使用者身分 |
IAM 使用者 | AssumeRole | IAM 使用者身分 | 帳號和委託人 ID (如果是使用者) 或服務 AWS 委託人 | 僅限角色身分 (非使用者) |
外部驗證的使用者 | AssumeRoleWithSAML | N/A | SAML 使用者身分 | 僅限角色身分 (非使用者) |
外部驗證的使用者 | AssumeRoleWithWebIdentity | N/A | OIDC/Web 使用者身分 | 僅限角色身分 (非使用者) |
如果動作對資源沒有任何變異效果,CloudTrail 會將其視為唯讀動作。記錄唯讀事件時,CloudTrail 會修訂日誌中的 responseElements
資訊。當 CloudTrail 記錄非唯讀的事件時,日誌項目中會顯示完整的 responseElements
。不過,對於 AWS STS APIs AssumeRole
、 AssumeRoleWithSAML
和 AssumeRoleWithWebIdentity
,即使它們記錄為唯讀,CloudTrail 仍會在這些 APIs的日誌responseElements
中包含完整 。
下表顯示 CloudTrail 如何記錄responseElements
和產生臨時憑證的每個 AWS STS APIsreadOnly
的資訊。
STS API | 回應元素資訊 | 唯讀 |
---|---|---|
AssumeRole | 包含 | true |
AssumeRoleWithSAML | 包含 | true |
AssumeRoleWithWebIdentity | 包含 | true |
AssumeRoot | 包含 | false |
GetFederationToken | 包含 | false |
GetSessionToken | 包含 | false |
CloudTrail 日誌中的 IAM API 事件範例
CloudTrail 日誌檔案包含使用 JSON 格式化的事件。一個 API 事件代表單一 API 請求,並包含主體、請求動作、任何參數以及動作的日期和時間等資訊。
CloudTrail 日誌檔案中的 IAM API 事件範例
以下範例顯示針對 IAM GetUserPolicy
動作發出請求的 CloudTrail 日誌項目。
{
"eventVersion": "1.09",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AIDACKCEVSQ6C2EXAMPLE:Role-Session-Name",
"arn": "arn:aws:sts::111122223333:assumed-role/Role-Name/Role-Session-Name",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AIDACKCEVSQ6C2EXAMPLE",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "111122223333",
"userName": "Admin"
},
"attributes": {
"creationDate": "2024-09-09T17:50:16Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2024-09-09T17:51:44Z",
"eventSource": "iam.amazonaws.com",
"eventName": "GetUserPolicy",
"awsRegion": "us-east-1",
"sourceIPAddress": "192.0.2.101",
"userAgent": "aws-cli/1.16.96 Python/2.7.8 Linux/10 botocore/1.12.86",
"requestParameters": {
"userName": "ExampleIAMUserName",
"policyName": "ExamplePoliccyName"
},
"responseElements": null,
"requestID": "9EXAMPLE-0c68-11e4-a24e-d5e16EXAMPLE",
"eventID": "cEXAMPLE-127e-4632-980d-505a4EXAMPLE",
"readOnly": true,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "iam.amazonaws.com"
}
}
從這個事件資訊,您可以判斷提出請求是為了取得使用者 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": "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 事件範例
以下範例顯示 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": "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 日誌項目。它會顯示帳戶 777788889999 所提出請求的 CloudTrail 日誌項目。
{
"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"
}
CloudTrail 日誌檔案中的範例 SAML AWS STS API 事件
下列範例顯示針對 AWS STS AssumeRoleWithSAML 動作提出之請求的 CloudTrail 日誌項目。此請求包含 SAML 屬性 CostCenter
和 Project
,這些屬性透過 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"
}
}
CloudTrail 日誌檔案中的範例 OIDC AWS STS API 事件
下列範例顯示針對 AWS STS AssumeRoleWithWebIdentity 動作提出之請求的 CloudTrail 日誌項目。此請求包含屬性 CostCenter
和 Project
,這些屬性透過 OpenID Connect (OIDC) 身分提供者 (IdP) 權杖以工作階段標籤的形式傳遞。這些標籤設為轉移,以便能在角色鏈接中繼續。請求包含從身分提供者權杖的 sourceIdentity
屬性。如果有人使用產生的角色工作階段憑證來擔任另一個角色,則此來源身分會持續存在。
CloudTrail 日誌項目也包含具有 identityProviderConnectionVerificationMethod
屬性的 additionalEventData
欄位。此屬性表示 AWS 用來驗證與 OIDC 提供者連線的方法。該屬性值將為 IAMTrustStore
或 Thumbprint
。此IAMTrustStore
值表示 AWS 已成功使用信任根憑證授權單位 (CA) 程式庫驗證與 OIDC IdP 的連線。 CAs Thumbprint
值表示 AWS 使用 IdP 組態中設定的憑證指紋來驗證 OIDC IdP 伺服器憑證。
{
"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 日誌檔案中全域端點的範例 AWS STS API 事件
從 2025 年初開始, AWS 會變更 AWS Security Token Service (AWS STS) 全域端點 (https://sts.amazonaws.com
),以增強其彈性和效能。在這些變更中, AWS STS 會開始在 RequestDetails
元素awsServingRegion
下包含其他 AWS CloudTrail 日誌欄位endpointType
和 ,以記錄元素下呼叫的服務 AWS 區域 和端點類型addtionalEventData
。endpointType
欄位的值可以是 global
或 regional
,以指出提供請求的全域端點類型。如需 AWS STS 全域端點變更的詳細資訊,請參閱 AWS STS 區域和端點。
注意
AWS CloudTrail 向 AWS STS 全球端點提出請求的 日誌將傳送至美國東部 (維吉尼亞北部) 區域。 AWS STS 區域端點所服務的請求的 CloudTrail 日誌將繼續記錄到 CloudTrail 中各自的區域。
下列範例顯示對源自歐洲 (斯德哥爾摩https://sts.amazonaws.com
) 區域 - eu-north-1 的全域端點 () 提出 AWS STS 請求的 CloudTrail 日誌項目。endpointType
欄位值 global
表示 AWS STS 請求是由歐洲 (斯德哥爾摩) 區域中的全域端點提供服務。
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROA123456789EXAMPLE:developer",
"arn": "arn:aws:sts::777788889999:assumed-role/Admin/developer",
"accountId": "777788889999",
"accessKeyId": "ASIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROA123456789EXAMPLE",
"arn": "arn:aws:iam::777788889999:role/Admin",
"accountId": "777788889999",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2025-02-12T21:44:28Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2025-02-12T22:16:48Z",
"eventSource": "sts.amazonaws.com",
"eventName": "AssumeRole",
"awsRegion": "us-east-1",
"sourceIPAddress": "192.0.2.0",
"userAgent": "aws-cli/2.15.33 Python/3.11.8 Linux/5.10.233-204.894.amzn2int.x86_64 exe/x86_64.amzn.2 prompt/off command/sts.assume-role",
"requestParameters": {
"roleArn": "arn:aws:iam::777788889999:role/test-role",
"roleSessionName": "test-global-assume-role"
},
"responseElements": {
"credentials": {
"accessKeyId": "ASIAIOSFODNN7EXAMPLE",
"sessionToken": "<encoded session token blob>
",
"expiration": "Feb 12, 2025, 11:16:48 PM"
},
"assumedRoleUser": {
"assumedRoleId": "AROA987654321EXAMPLE:test-global-assume-role",
"arn": "arn:aws:sts::777788889999:assumed-role/test-role/test-global-assume-role"
}
},
"additionalEventData": {
"RequestDetails": {
"awsServingRegion": "eu-north-1",
"endpointType": "global"
}
},
"requestID": "EXAMPLE7-2497-457a-9586-f21feEXAMPLE",
"eventID": "EXAMPLEc-3d26-4c3a-9c94-722a9EXAMPLE",
"readOnly": true,
"resources": [
{
"accountId": "777788889999",
"type": "AWS::IAM::Role",
"ARN": "arn:aws:iam::777788889999:role/test-role"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "777788889999",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "sts-global.eu-north-1.amazonaws.com"
}
}
為了進行比較,以下範例顯示對歐洲 (斯德哥爾摩https://sts.us-west-2.amazonaws.com
) 區域端點 - eu-north-1 提供的區域端點 () 提出 AWS STS 請求的 CloudTrail 日誌項目。endpointType
欄位值 regional
表示 AWS STS 請求是由歐洲 (斯德哥爾摩) 區域中的全域端點提供。
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:developer", "arn": "arn:aws:sts::777788889999:assumed-role/Admin/developer", "accountId": "777788889999", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::777788889999:role/Admin", "accountId": "777788889999", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2025-02-12T21:44:28Z", "mfaAuthenticated": "false" } } }, "eventTime": "2025-02-12T22:16:30Z", "eventSource": "sts.amazonaws.com", "eventName": "AssumeRole", "awsRegion": "eu-north-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/2.15.33 Python/3.11.8 Linux/5.10.233-204.894.amzn2int.x86_64 exe/x86_64.amzn.2 prompt/off command/sts.assume-role", "requestParameters": { "roleArn": "arn:aws:iam::777788889999:role/test-role", "roleSessionName": "test-global-assume-role" }, "responseElements": { "credentials": { "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionToken": "
<encoded session token blob>
", "expiration": "Feb 12, 2025, 11:16:30 PM" }, "assumedRoleUser": { "assumedRoleId": "AROA987654321EXAMPLE:test-global-assume-role", "arn": "arn:aws:sts::777788889999:assumed-role/test-role/test-global-assume-role" } }, "additionalEventData": { "RequestDetails": { "endpointType": "regional", "awsServingRegion": "eu-north-1" } }, "requestID": "EXAMPLEd-2116-4cd7-bd72-9f72fEXAMPLE", "eventID": "EXAMPLEd-219a-48ed-bc54-00e3cEXAMPLE", "readOnly": true, "resources": [ { "accountId": "777788889999", "type": "AWS::IAM::Role", "ARN": "arn:aws:iam::777788889999:role/test-role" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "777788889999", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_128_GCM_SHA256", "clientProvidedHostHeader": "sts.eu-north-1.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 日誌檔案中包含資訊的詳細資訊,請參閱《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 欄位。當舊版允許清單上的角色使用舊版行為擔任自己時,explicitTrustGrant
的值為 false。當舊版允許清單上的角色擔任自己,但角色信任政策行為已更新為明確允許角色擔任自己時,explicitTrustGrant
的值為 true。
只有極少數的 IAM 角色位於舊版行為的允許清單上,並且此欄位只有當角色擔任自己時,才會出現在相應的 CloudTrail 日誌中。在大多數情況下,IAM 角色不需要擔任本身。 AWS 建議更新您的程序、程式碼或組態,以移除此行為或更新您的角色信任政策,以明確允許此行為。如需詳細資訊,請參閱 Announcing an update to IAM role trust policy behavior