靜態加密 - Amazon Inspector

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

靜態加密

根據預設,Amazon Inspector 會使用 AWS 加密解決方案存放靜態資料。Amazon Inspector 會加密資料,如下所示:

  • 使用收集的資源庫存 AWS Systems Manager。

  • 從 Amazon 彈性容器登錄映像剖析的資源庫存

  • 使用 AWS 擁有的加密金鑰產生安全發現項目 AWS Key Management Service

您無法管理、使用或檢視 AWS 擁有的金鑰。不過,您不需要採取動作或變更程式來保護加密資料的金鑰。如需詳細資訊,請參閱AWS 擁有的金鑰

如果停用 Amazon Inspector,它會永久刪除為您存放或維護的所有資源,例如收集的庫存和安全發現項目。

靜態加密發現項目中的程式碼

對於亞馬遜檢查器 Lambda 代碼掃描,Amazon Inspector 與 CodeGuru 合作掃描您的代碼是否存在漏洞。偵測到弱點時,會 CodeGuru 擷取包含該弱點的程式碼片段,並儲存該程式碼,直到 Amazon Inspector 請求存取為止。依預設 CodeGuru 會使用 AWS 擁有的金鑰來加密擷取的程式碼,不過,您可以設定 Amazon Inspector 使用自己的客戶受管 AWS KMS 金鑰進行加密。

下列工作流程說明 Amazon Inspector 如何使用您設定的金鑰來加密程式碼:

  1. 您提供一個 AWS KMS 密鑰 Amazon Inspector 使用 Amazon Inspector UpdateEncryptionKeyAPI。

  2. Amazon Inspector 轉發關於你的 AWS KMS 密鑰的信息。 CodeGuru CodeGuru 儲存資訊以供 future 使用。

  3. CodeGuru 請求授予您在 Amazon Inspector 中設定的金鑰。 AWS KMS

  4. CodeGuru 從您的密鑰創建一個加密的數據密 AWS KMS 鑰並將其存儲。此資料金鑰可用來加密儲存的程式碼資料 CodeGuru。

  5. 每當 Amazon Inspector 從程式碼掃描請求資料時, CodeGuru 會使用授權來解密加密的資料金鑰,然後使用該金鑰解密資料以便擷取資料。

停用 Lambda 程式碼掃描時,會 CodeGuru 淘汰授權並刪除相關聯的資料金鑰。

使用客戶管理的金鑰進行程式碼加密的權限

若要使用加密,您必須擁有允許存取 AWS KMS 動作的政策,以及授予 Amazon Inspector 的陳述式,以及透過條件金鑰使用這些動作的 CodeGuru 權限。

如果您要設定、更新或重設帳戶的加密金鑰,則必須使用 Amazon Inspector 管理員政策,例如AWS 受管理的策略:AmazonInspector2FullAccess。您還需要將下列權限授與需要從發現項目或選擇用於加密之金鑰的相關資料擷取程式碼片段的唯讀使用者。

針對 KMS,原則必須允許您執行下列動作:

  • kms:CreateGrant

  • kms:Decrypt

  • kms:DescribeKey

  • kms:GenerateDataKeyWithoutPlainText

  • kms:Encrypt

  • kms:RetireGrant

確認您在政策中擁有正確的 AWS KMS 許可後,您必須附加允許 Amazon Inspector 的陳述式,並使 CodeGuru 用您的金鑰進行加密。附上以下政策聲明:

注意

將區域取代為您已啟用 Amazon Inspector Lambda 程式碼掃描的 AWS 區域。

{ "Sid": "allow CodeGuru Security to request a grant for a AWS KMS key", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "Encrypt", "Decrypt", "RetireGrant", "DescribeKey" ] }, "StringEquals": { "kms:ViaService": [ "codeguru-security.Region.amazonaws.com" ] } } }, { "Sid": "allow Amazon Inspector and CodeGuru Security to use your AWS KMS key", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:RetireGrant", "kms:DescribeKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "inspector2.Region.amazonaws.com", "codeguru-security.Region.amazonaws.com" ] } } }
注意

當您新增陳述式時,請確定語法有效。策略使用 JSON 格式。這表示您需要在陳述式之前或之後新增逗號,視您將陳述式新增至原則的位置而定。如果您將陳述式新增為最後一個陳述式,請在前述陳述式的右括號後加上逗號。如果您將它新增為第一個陳述式或兩個現有陳述式之間,請在陳述式的右括號後加上逗號。

使用客戶管理的金鑰設定加密

若要使用客戶受管金鑰為您的帳戶設定加密,您必須是 Amazon Inspector 管理員,並具有中所述許可使用客戶管理的金鑰進行程式碼加密的權限。此外,您需要在與發現項目相同的 AWS 區域中使用金 AWS KMS 鑰,或是多區域金鑰。您可以在帳戶中使用現有的對稱金鑰,或使用 AWS 管理主控台或 API 建立對稱的客戶管理金鑰。 AWS KMS 如需詳細資訊,請參閱 AWS KMS 使用指南中的建立對稱加密 AWS KMS 金鑰

使用 Amazon Inspector API 來設定加密

若要設定加密金鑰,請在以亞馬遜檢查器管理員身分登入時執行 Amazon Inspector API 的UpdateEncryptionKey操作。在 API 要求中,使用kmsKeyId欄位指定要使用之 AWS KMS 金鑰的 ARN。對於scanType輸入CODEresourceType輸入AWS_LAMBDA_FUNCTION

您可以使用 UpdateEncryptionKeyAPI 來檢查 Amazon Inspector 查器使用哪個 AWS KMS 金鑰進行加密。

注意

如果您嘗試在尚未設定客戶管理金鑰GetEncryptionKey時使用,則作業會傳回ResourceNotFoundException錯誤訊息,表示 AWS 擁有的金鑰正在用於加密。

如果您刪除或密鑰或更改它的政策是拒絕訪問 Amazon Inspector,否則 CodeGuru 您將無法訪問代碼漏洞發現的發現,並且 Lambda 代碼掃描將失敗您的帳戶。

您可以使用 AWS 擁有的金鑰ResetEncryptionKey來繼續使用,加密擷取為 Amazon Inspector 發現項目的一部分所擷取的程式碼。