AWS API請求的簽章第 4 版 - AWS Identity and Access Management

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

AWS API請求的簽章第 4 版

重要

如果您使用 AWS SDK(請參閱範例程式碼和程式庫 ) 或 AWS Command Line Interface (AWS CLI) 工具將API請求傳送至 AWS,您可以略過簽章程序,因為 SDK和 CLI用戶端會使用您提供的存取金鑰來驗證您的請求。除非您有適當的理由拒絕,否則我們建議您一律使用 SDK或 CLI。

在支援多個簽章版本的區域中,手動簽章請求表示您必須指定要使用的簽章版本。當您向多區域存取點提供請求時, SDKs CLI會自動切換到使用 Signature 第 4A 版,而不需要其他組態。

您在請求中傳送的身分驗證資訊必須包含簽章。 AWS Signature 第 4 版 (SigV4) 是將身分驗證資訊 AWS API新增至請求的 AWS 簽署通訊協定。

您不會使用秘密存取金鑰簽署API請求。而是使用 SigV4 簽署程序。簽署請求涉及:

  1. 根據請求詳細資訊建立正式請求。

  2. 使用您的 AWS 憑證計算簽章。

  3. 將此簽章新增至請求作為授權標頭。

AWS 然後複寫此程序,並驗證簽章、授予或拒絕相應存取。

對稱 SigV4 會要求您在特定日期,將範圍限定為單一 AWS 服務的金鑰衍生到單一 AWS 服務。這使得每個區域的金鑰和計算的簽章不同,這表示您必須知道簽章的目的地區域。

非對稱簽章第 4 版 SigV4a) 是支援使用新演算法簽署的延伸,並產生可在多個 AWS 區域中驗證的個別簽章。透過 SigV4a ,您可以簽署多個區域的請求,並在區域之間無縫路由和容錯移轉。當您使用 AWS SDK或 AWS CLI 叫用需要多區域簽署的功能時,簽章類型會自動變更為使用 SigV4a 。如需詳細資訊,請參閱 AWS SigV4a 的運作方式

AWS SigV4 的運作方式

下列步驟說明使用 SigV4 運算簽章的一般程序:

  1. 要簽署的字串取決於請求類型。例如,當您使用HTTP授權標頭或查詢參數進行身分驗證時,您可以使用請求元素的組合來建立要簽署的字串。對於HTTPPOST請求,請求中的POST政策是您簽署的字串。

  2. 簽署金鑰是一系列的計算,每個步驟的結果都會輸入下一個步驟。最後的步驟是簽署金鑰。

  3. 當 AWS 服務收到已驗證的請求時,它會使用請求中包含的驗證資訊重新建立簽章。如果簽章相符,則服務會處理請求。否則,它會拒絕請求。

如需詳細資訊,請參閱請求簽章的 AWS API元素

AWS SigV4a 的運作方式

SigV4a 使用以公有私有金鑰密碼編譯為基礎的非對稱簽章。SIGv4a 除了 Sigv4a 使用相同的金鑰來簽署所有請求SIGv4,而不需要根據日期、服務和區域衍生不同的簽署金鑰,會經歷與 類似的範圍憑證衍生程序。橢圓曲線數位簽章演算法 (ECDSA) 金鑰對可以從您現有的 AWS 秘密存取金鑰衍生。

系統使用非對稱密碼編譯來驗證多區域簽章,因此 AWS 只需要存放您的公有金鑰。公有金鑰不是秘密,無法用來簽署請求。多區域API請求需要非對稱簽章,例如使用 Amazon S3 多區域存取點。

下列步驟說明使用 SigV4a 運算簽章的一般程序:

  1. 要簽署的字串取決於請求類型。例如,當您使用HTTP授權標頭或查詢參數進行身分驗證時,您可以使用請求元素的組合來建立要簽署的字串。對於HTTPPOST請求,請求中的POST政策是您簽署的字串。

  2. 簽署金鑰是透過一系列計算從 AWS 秘密存取金鑰衍生而來,每個步驟的結果都會饋送至下一個步驟。最後一個步驟會產生金鑰對。

  3. 當 AWS 服務收到使用 Sigv4a 簽署的請求時, 只會使用金鑰對的公有半數 AWS 來驗證簽章。如果簽章有效,則會驗證請求,然後服務會處理請求。具有無效簽章的請求會遭到拒絕。

如需多區域API請求的 SigV4a 詳細資訊,請參閱上的 sigv4a-signing-examples 專案 GitHub。

簽署請求的時機

當您編寫將API請求傳送至 的自訂程式碼時 AWS,您必須包含簽署請求的程式碼。您可能會因為以下原因編寫自訂程式碼:

  • 您正在使用沒有 AWS 的程式設計語言SDK。

  • 您需要完全控制將請求傳送至 的方式 AWS。

使用 AWS SigV4 API AWS CLI 請求驗證存取, AWS SDKs並使用您提供的存取金鑰驗證您的請求。如需使用 AWS SDKs 和 進行身分驗證的詳細資訊 AWS CLI,請參閱 其他資源

為什麼要簽署請求

簽署程序有助於以下列方式保護請求的安全:

  • 驗證請求者的身分

    經過驗證的請求需要您使用存取金鑰 (存取金鑰 ID、私密存取金鑰) 建立的簽章。如果您使用暫時安全憑證,則簽章計算還需要安全字符。如需詳細資訊,請參閱 AWS 安全憑證程式設計存取權

  • 保護傳輸中的資料

    為了防止傳送中的請求遭到竄改,有些請求元素可用來計算請求的雜湊 (摘要),而產生的雜湊值會包含在請求中。當 AWS 服務 收到請求時,它會使用相同的資訊來計算雜湊,並將其與請求中的雜湊值進行比對。如果值不相符, 會 AWS 拒絕請求。

  • 抵禦潛在重播攻擊的侵害

    在大多數情況下,請求必須在請求中時間戳記的五分鐘 AWS 內到達。否則, 會 AWS 拒絕請求。

AWS SigV4 可以在HTTP授權標頭中表達,也可以在 中表達為查詢字串URL。如需詳細資訊,請參閱身分驗證方法

其他資源