設定程式碼簽章 AWS Lambda - AWS Lambda

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

設定程式碼簽章 AWS Lambda

的程式碼簽章 AWS Lambda 有助於確保只有受信任的程式碼才能在 Lambda 函數中執行。啟用函數的程式碼簽署時,Lambda 會檢查每個程式碼部署,並確認程式碼套件是由受信任的來源簽署。

注意

定義為容器映像的函數不支援程式碼簽署。

若要驗證程式碼完整性,請使用 AWS Signer 為函數和 Layer 建立數位簽署的程式碼套件。若使用者嘗試部署程式碼套件時,Lambda 會對程式碼套件執行驗證檢查,然後再接受部署。因為程式碼簽署驗證檢查會在部署時執行,因此不會影響函數執行的效能。

您也可以使用 AWS 簽署者建立簽署設定檔。您可以使用簽署描述檔來建立簽署的程式碼套件。使用 AWS Identity and Access Management (IAM) 控制誰可以簽署程式碼套件並建立簽署設定檔。如需詳細資訊,請參閱《AWS Signer 開發人員指南》中的驗證與存取控制

若要啟用函數的程式碼簽署,您可以建立程式碼簽署組態並將其附加至函數。程式碼簽署組態會定義允許簽署描述檔的清單,以及在任何驗證檢查失敗時要採取的政策動作。

Lambda 層會遵循與函數程式碼套件相同的已簽署程式碼套件格式。將層新增至已啟用程式碼簽署的函數時,Lambda 會檢查該層是否由允許的簽署描述檔簽署。若您啟用函數的程式碼簽署,新增至函數的所有 Layer 也必須由其中一個允許的簽署描述檔來簽署。

使用 IAM 來控制誰可以建立程式碼簽署組態。通常,僅允許特定的管理使用者擁有此功能。此外,您可以設定 IAM 政策,來強制只有開發人員可建立已啟用程式碼簽署的函數。

您可以設定程式碼簽署以記錄 AWS CloudTrail的變更。對功能的成功部署和封鎖部署會記錄到,並提 CloudTrail 供有關簽章和驗證檢查的資訊。

您可以使用 Lambda 主控台 () 和 AWS Command Line Interface (AWS CLI) 設定函數的程式碼簽章。 AWS CloudFormation AWS Serverless Application Model AWS SAM

使用簽署 AWS 者或程式碼簽章無須額外付費。 AWS Lambda

簽署驗證

在您將已簽署的程式碼套件部署至函數時,Lambda 會執行下列驗證檢查:

  1. 完整性 - 驗證程式碼套件自簽署後尚未修改。Lambda 將套件的雜湊與簽章中的雜湊作比較。

  2. 過期 - 驗證程式碼套件的簽章尚未過期。

  3. 不相符 - 驗證程式碼套件是否使用其中一個允許的 Lambda 函數的簽署描述檔來進行簽署。如果簽署不存在,也會發生不相符情況。

  4. 撤銷 - 驗證程式碼套件的簽章尚未被叫用。

如果任何驗證檢查失敗,程式碼簽署組態中定義的簽章驗證政策將確定 Lambda 會採取下列哪些動作:

  • 警告 — Lambda 允許部署程式碼套件,但會發出警告。Lambda 會發出新的 Amazon CloudWatch 指標,並將警告儲存在 CloudTrail 日誌中。

  • 強制 - Lambda 發出警告 (與「警告」動作相同) 並阻止程式碼套件的部署。

您可以設定到期、不相符和撤銷驗證檢查的政策。請注意,您無法設定完整性檢查的政策。如果完整性檢查失敗,Lambda 會阻止部署。

組態先決條件

在您可以設定 Lambda 函數的程式碼簽章之前,請先使用 AWS 簽署者執行下列動作:

  • 建立一個或多個簽署描述檔。

  • 使用簽署描述檔為您的函數建立簽署的程式碼套件。

如需詳細資訊,請參閱《AWS Signer 開發人員指南 》中的建立簽署描述檔 (主控台)

建立程式碼簽署組態

程式碼簽署組態會定義允許的簽署描述檔和簽署驗證政策。

建立程式碼簽署組態 (主控台)
  1. 開啟 Lambda 主控台中的 Code signing configurations (程式碼簽署組態) 頁面。

  2. 選擇建立組態

  3. 針對 Description (描述),輸入組態的描述性名稱。

  4. Signing profiles (簽署描述檔) 下,可將多達 20 個簽署描述檔新增至組態。

    1. 針對 Signing profile version ARN (簽署描述檔版本 ARN),選擇描述檔版本的 Amazon Resource Name (ARN),或輸入 ARN。

    2. 若要新增額外的簽署描述檔,選擇 Add signing profiles (新增簽署描述檔)

  5. Signature validation policy (簽署驗證政策) 下,選擇 Warn (警告)Enforce (強制)

  6. 選擇建立組態

更新程式碼簽署組態

若更新程式碼簽署組態,變更會影響已附加程式碼簽署組態的函數的未來部署。

更新程式碼簽署組態 (主控台)
  1. 開啟 Lambda 主控台中的 Code signing configurations (程式碼簽署組態) 頁面。

  2. 選取要更新的程式碼簽署組態,然後選擇 Edit (編輯)

  3. 針對 Description (描述),輸入組態的描述性名稱。

  4. Signing profiles (簽署描述檔) 下,可將多達 20 個簽署描述檔新增至組態。

    1. 針對 Signing profile version ARN (簽署描述檔版本 ARN),選擇描述檔版本的 Amazon Resource Name (ARN),或輸入 ARN。

    2. 若要新增額外的簽署描述檔,選擇 Add signing profiles (新增簽署描述檔)

  5. Signature validation policy (簽署驗證政策) 下,選擇 Warn (警告)Enforce (強制)

  6. 選擇儲存變更

刪除程式碼簽署組態

只有在沒有任何函數使用的情況下,才能刪除程式碼簽署組態。

刪除程式碼簽署組態 (主控台)
  1. 開啟 Lambda 主控台中的 Code signing configurations (程式碼簽署組態) 頁面。

  2. 選取要刪除的程式碼簽署組態,然後選擇 Delete (刪除)

  3. 若要確認,再次選擇 Delete (刪除)

啟用函數的程式碼簽署

若要啟用函數的程式碼簽署,請將程式碼簽署組態與函數建立關聯。

將程式碼簽署組態與函數 (主控台) 關聯
  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇您要啟用程式碼簽署的函數。

  3. 開啟 Configuration (組態) 索引標籤。

  4. 向下捲動並選擇 [程式碼簽章]。

  5. 選擇編輯

  6. Edit code signing (編輯程式碼簽署) 中,選擇此函數的程式碼簽署組態。

  7. 選擇儲存

設定 IAM 政策

若要授予使用者存取程式碼簽署 API 操作的許可,請將一個或多個政策陳述式附加至使用者政策。如需使用者政策的詳細資訊,請參閱Lambda 適用的身分型 IAM 政策

下列範例政策陳述式會授予建立、更新及擷取程式碼簽署組態的許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CreateCodeSigningConfig", "lambda:UpdateCodeSigningConfig", "lambda:GetCodeSigningConfig" ], "Resource": "*" } ] }

管理員可以使用 CodeSigningConfigArn 條件金鑰,來指定開發人員必須用於建立或更新函數的程式碼簽署組態。

下列範例政策陳述式會授予建立函數的許可。政策聲明包括 lambda:CodeSigningConfigArn 條件以指定允許的程式碼簽署組態。Lambda 會阻止任何 CreateFunction API 請求,前提是如果其 CodeSigningConfigArn 參數遺失或不符合條件中的值。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReferencingCodeSigningConfig", "Effect": "Allow", "Action": [ "lambda:CreateFunction", ], "Resource": "*", "Condition": { "StringEquals": { "lambda:CodeSigningConfigArn": “arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0d4518bd353a0a7c6” } } } ] }

使用 Lambda API 來設定程式碼簽署

若要使用 AWS CLI 或 AWS SDK 管理程式碼簽章設定,請使用下列 API 作業:

若要管理函數的程式碼簽署組態,請使用下列 API 操作: