本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用授權 ID 對存取遭拒錯誤訊息進行故障診斷 (預覽)
重要
存取故障診斷程式處於公開預覽狀態。
概觀
當 AWS 拒絕支援 API 的請求時,存取遭拒錯誤回應通常包含授權 ID。此 ID 參考拒絕請求的授權評估。若要擷取評估的詳細資訊並識別拒絕的原因,請向 GetRequestAuthorizationDetails API 提出請求並提供授權 ID,或開啟錯誤訊息中的連結。這可讓您在單一呼叫中識別拒絕請求的原因,而不是一次解決拒絕。
注意
AWS 不保證每個拒絕請求的授權 ID。請參閱本文件當您未收到授權 ID 時中的 。
下列範例顯示存取遭拒錯誤訊息,其中包含政策 ARN、 AWS 管理主控台
User: arn:aws:iam::123456789012:user/janedoe is not authorized to perform: iam:CreateInstanceProfile on resource: arn:aws:iam::123456789012:instance-profile/my-instance-profile with an explicit deny in an identity-based policy: arn:aws:iam::123456789012:policy/ExampleDenyPolicy. Go to https://us-east-1.console.aws.amazon.com/iam/home?region=us-east-1#/authorization-details/EXAMPLE1a2b3c4d5e6f7g8h9i0j for complete details, or call the GetRequestAuthorizationDetails API with the following authorization id: EXAMPLE1a2b3c4d5e6f7g8h9i0j
概念和定義
-
授權詳細資訊。授權詳細資訊包括請求內容、執行的評估,以及評估的政策。
-
授權 ID。支援存取遭拒錯誤回應中包含的唯一識別符。它參考拒絕請求的授權評估,而 是您傳遞至 AWS 管理主控台
連結或 GetRequestAuthorizationDetailsAPI 的值。 -
請求內容。為請求評估的條件內容索引鍵值。這包括全域條件內容索引鍵和服務特定條件內容索引鍵。
-
評估。對於請求中的每個動作/資源對,套用的條件內容金鑰和評估結果:
ALLOW、EXPLICIT_DENY(政策明確拒絕動作) 或IMPLICIT_DENY(政策不允許該動作),以及符合動作/資源對的每個政策和陳述式的參考。每個參考都是在整個回應中重複使用的政策 ARN (適用於受管政策) 或 URI (適用於內嵌和其他非受管政策)。 -
授權期間評估的政策。 AWS 考慮請求的政策,包括不符合動作/資源對的政策。每個項目都會提供政策類型 (例如,身分型、資源型、SCP、RCP、許可界限或工作階段政策) 和評估中使用的相同 ARN (適用於受管政策) 或 URI (適用於內嵌和其他非受管政策)。使用 ARN 或 URI 將政策比對回參考它的評估。「連接至」欄位會顯示評估政策所連接之委託人的委託人 ARN。
將這些結果一起使用,以識別哪些政策拒絕存取及其原因。評估會反映拒絕時的政策。自那時起,政策可能已變更。
AWS 會自動在支援 APIs 的存取遭拒錯誤回應中包含授權 ID,但無法保證授權 IDs。在某些情況下, AWS 不會記錄拒絕的授權詳細資訊,而且錯誤回應不包含授權 ID。記錄詳細資訊時,可能無法立即使用,因為 會以非同步方式 AWS 記錄詳細資訊。如果呼叫 GetRequestAuthorizationDetails傳回找不到的回應,請等待一會兒,然後再試一次。 會在拒絕後 AWS 保留授權詳細資訊 24 小時。
使用 AWS 管理主控台 進行故障診斷
選擇存取遭拒錯誤訊息中的連結,以在存取疑難排解程式主控台中開啟授權詳細資訊。
-
要尋找的內容。存取故障診斷程式主控台會顯示請求中每個動作/資源對的評估、每個動作/資源對的結果 (
Allow、 或Implicit deny)Explicit deny,以及考慮的政策。尋找遭拒的配對,以及造成拒絕的政策。請參閱下列螢幕擷取範例:
-
判斷是否打算拒絕。變更政策之前,請檢閱評估。拒絕可能是正確的,原因有時是請求內容,而不是政策。例如,請求可能缺少預期的工作階段標籤,或來自非預期的網路路徑。
-
如何解決拒絕。找到對應的政策並加以更新,以解決存取問題。對於明確拒絕,請移除或縮小 動作的
Deny陳述式。對於隱含拒絕,請為 動作新增Allow陳述式。如需詳細資訊,請參閱編輯 IAM 政策。
誰可以存取授權詳細資訊。對於單一帳戶或單一組織中的請求,有權存取 的任何人iam:GetRequestAuthorizationDetails都可以存取請求的詳細資訊。對於跨越多個組織的請求,指定組織中的使用者只能檢視與其自身組織相關的詳細資訊。
使用 AWS API 或 進行故障診斷 AWS CLI
若要使用 AWS API 或 對拒絕進行疑難排解 AWS CLI:
-
在存取遭拒錯誤回應中尋找授權 ID。
-
在發生拒絕的相同 AWS 區域 中,
GetRequestAuthorizationDetails使用授權 ID 呼叫 。下列範例顯示 AWS CLI 命令:aws iam-toolbox get-request-authorization-details \ --region us-east-1 \ --authorization-id EXAMPLE1a2b3c4d5e6f7g8h9i0j -
檢閱評估結果,以識別哪些政策拒絕存取,以及拒絕的原因。
-
更新已識別的政策以解決存取問題。如需詳細資訊,請參閱編輯 IAM 政策。
當您未收到授權 ID 時
AWS 在下列情況下, 不會傳回授權 ID:
-
授權太大,無法記錄。當請求涉及大量政策時, AWS 可能會決定不記錄請求。
-
尚不支援此服務。請參閱 支援的服務。
-
不支援 API。受支援服務中的某些 APIs 不會傳回授權 ID。
-
不支援請求類型。這包括服務代表您提出的請求和匿名請求。
如果您沒有收到授權 ID,請參閱 對拒絕存取錯誤訊息進行疑難排解 以取得診斷拒絕的其他方法。
其他考量
必要的許可。若要呼叫 GetRequestAuthorizationDetails,您必須擁有 iam:GetRequestAuthorizationDetails動作的許可。
區域 API。 GetRequestAuthorizationDetails 是區域 API。在產生存取遭拒錯誤和授權 ID 的相同 AWS 區域 中呼叫它。
跨組織請求。當拒絕的請求涉及多個組織時, 只會GetRequestAuthorizationDetails傳回屬於您自己的組織的詳細資訊。這適用於兩個方向:如果您在拒絕發起人的組織中,則只會看到與該組織相關的詳細資訊。如果您在拒絕資源的組織中,則只會看到與該組織相關的詳細資訊。不會傳回其他組織擁有的詳細資訊,例如該組織的政策或內容索引鍵值。
如果您從尚未包含授權 ID 的 API、服務或區域收到存取遭拒錯誤,請參閱 對拒絕存取錯誤訊息進行疑難排解。
支援的服務
的支援GetRequestAuthorizationDetails正在跨 AWS APIs和 逐漸推出 AWS 區域。下列 (服務) 支援 GetRequestAuthorizationDetails:
-
IAM 中的大多數 APIs