本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用程式碼簽署來驗證 Lambda 的程式碼完整性
的程式碼簽署 AWS Lambda 有助於確保只有信任的程式碼在您的 Lambda 函數中執行。啟用函數的程式碼簽署時,Lambda 會檢查每個程式碼部署,並確認程式碼套件是由受信任的來源簽署。
注意
定義為容器映像的函數不支援程式碼簽署。
若要驗證程式碼完整性,請使用 AWS Signer 為函數和 Layer 建立數位簽署的程式碼套件。若使用者嘗試部署程式碼套件時,Lambda 會對程式碼套件執行驗證檢查,然後再接受部署。因為程式碼簽署驗證檢查會在部署時執行,因此不會影響函數執行的效能。
您也可以使用 AWS Signer 建立簽署設定檔。您可以使用簽署描述檔來建立簽署的程式碼套件。使用 AWS Identity and Access Management (IAM) 控制誰可以簽署程式碼套件並建立簽署設定檔。如需詳細資訊,請參閱《AWS Signer 開發人員指南》中的驗證與存取控制。
Lambda 層會遵循與函數程式碼套件相同的已簽署程式碼套件格式。將層新增至已啟用程式碼簽署的函數時,Lambda 會檢查該層是否由允許的簽署描述檔簽署。若您啟用函數的程式碼簽署,新增至函數的所有 Layer 也必須由其中一個允許的簽署描述檔來簽署。
您可以設定程式碼簽署以記錄 AWS CloudTrail的變更。函數的成功部署和受阻部署會記錄至 CloudTrail,包含簽章和驗證檢查的相關資訊。
使用 AWS Signer 或程式碼簽署無需額外費用 AWS Lambda。
簽署驗證
在您將已簽署的程式碼套件部署至函數時,Lambda 會執行下列驗證檢查:
-
完整性 - 驗證程式碼套件自簽署後尚未修改。Lambda 將套件的雜湊與簽章中的雜湊作比較。
-
過期 - 驗證程式碼套件的簽章尚未過期。
-
不相符 - 驗證程式碼套件是否使用其中一個允許的 Lambda 函數的簽署描述檔來進行簽署。如果簽署不存在,也會發生不相符情況。
-
撤銷 - 驗證程式碼套件的簽章尚未被叫用。
如果任何驗證檢查失敗,程式碼簽署組態中定義的簽章驗證政策將確定 Lambda 會採取下列哪些動作:
-
警告 — Lambda 允許部署程式碼套件,但會發出警告。Lambda 會發出新的 Amazon CloudWatch 指標,還會將警告存放在 CloudTrail 記錄中。
-
強制 - Lambda 發出警告 (與「警告」動作相同) 並阻止程式碼套件的部署。
您可以設定到期、不相符和撤銷驗證檢查的政策。請注意,您無法設定完整性檢查的政策。如果完整性檢查失敗,Lambda 會阻止部署。
使用 Lambda API 來設定程式碼簽署
若要使用 AWS CLI 或 AWS SDK 管理程式碼簽署組態,請使用下列 API 操作:
若要管理函數的程式碼簽署組態,請使用下列 API 操作: