本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
静态加密
默认情况下,Amazon Inspector 使用 Amazon 加密解决方案存储静态数据。Amazon Inspector 对以下内容等数据进行加密:
-
使用收集的资源清单 Amazon Systems Manager。
-
从 Amazon Elastic Container Registry 映像解析的资源清单
-
使用 Amazon 自有的加密密钥生成安全调查结果 Amazon Key Management Service
您无法管理、使用或查看 Amazon 拥有的密钥。但是无需执行任何操作或更改任何计划即可保护用于加密数据的密钥。有关更多信息,请参阅 Amazon 拥有的密钥。
如果您禁用 Amazon Inspector,它将永久删除自己为您存储或维护的所有资源,例如收集的清单和安全调查发现。
对调查发现中的代码进行静态加密
要扫描 Amazon Inspector Lambda 代码,Amazon Inspector 与 Amazon Q 合作,扫描您的代码中是否存在漏洞。当检测到漏洞时,Amazon Q 会提取包含该漏洞的代码片段并存储该代码,直到 Amazon Inspector 请求访问为止。默认情况下,Amazon Q 使用 Amazon 自有密钥对提取的代码进行加密。但是,您可以将 Amazon Inspector 配置为使用您自己的客户管理的 Amazon KMS 密钥进行加密。
以下工作流程说明了 Amazon Inspector 如何使用您配置的密钥来加密您的代码:
-
您可以使用 Amazon Inspector UpdateEncryptionKeyAPI 向亚马逊 Inspector 提供 Amazon KMS 密钥。
-
Amazon Inspector 会将有关您的 Amazon KMS 密钥的信息转发给 Amazon Q,然后 Amazon Q 会存储这些信息以备将来使用。
-
Amazon Q 使用你通过密钥策略在 Amazon Inspector 中配置的 KMS 密钥。
-
Amazon Q 会根据您的密钥创建加密数据 Amazon KMS 密钥并将其存储。此数据密钥用于加密由 Amazon Q 存储的您的代码数据。
-
当 Amazon Inspector 从代码扫描中请求数据时,Amazon Q 使用 KMS 密钥解密数据密钥。当您禁用 Lambda 代码扫描时,Amazon Q 会删除关联的数据密钥。
使用客户托管密钥进行代码加密的权限
要进行加密,您必须使用包含允许 Amazon In spector 和 Amazon Q 执行以下操作的声明的策略创建 KMS 密钥。
-
kms:Decrypt
-
kms:DescribeKey
-
kms:Encrypt
-
kms:GenerateDataKey
-
kms:GenerateDataKeyWithoutPlainText
策略声明
创建 KMS 密钥时,您可以使用以下策略声明。
注意
替换为您的 12 位数 Amazon Web Services 账户 身份证。account-id
替换为您启用 Amazon Inspector 和 Lambda 代码扫描 Amazon Web Services 区域 的位置。Region
替换为您的 IAM 角色的 Amazon 资源名称。role-ARN
{ "Effect": "Allow", "Principal": { "Service": "q.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:qdeveloper:lambda-codescan-scope": "
account-id
" }, "StringEquals": { "aws:SourceAccount": "account-id
" }, "ArnLike": { "aws:SourceArn": "arn:aws:qdeveloper:Region
:account-id
:scans/*" } } }, { "Effect": "Allow", "Principal": { "Service": "q.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id
" }, "ArnLike": { "aws:SourceArn": "arn:aws:qdeveloper:Region
:account-id
:scans/*" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKey" ], "Principal": { "AWS": "role-ARN
" }, "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "inspector2.Region
.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:qdeveloper:lambda-codescan-scope": "account-id
" } } }, { "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Principal": { "AWS": "role-ARN
" }, "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "inspector2.Region
.amazonaws.com" } } }
政策声明采用 JSON 格式。添加声明后,请查看策略以确保语法有效。如果该语句是策略中的最后一条语句,则在前一语句的右大括号后面加一个逗号。如果该语句是策略中的第一个语句或两个现有语句之间,则在该语句的右大括号后面加一个逗号。
注意
Amazon Inspector 不再支持对从包中提取的代码片段进行加密的授权。如果您使用的是基于拨款的政策,您仍然可以访问您的调查结果。但是,如果您更新或重置您的 KMS 密钥或禁用 Lambda 代码扫描,则需要使用本节中描述的 KMS 密钥策略。
如果您设置、更新或重置账户的加密密钥,则必须使用 Amazon Inspector 管理员策略,例如 Amazon 托管策略AmazonInspector2FullAccess
。
使用客户托管密钥配置加密
要使用客户托管密钥为您的账户配置加密,您必须是具有 使用客户托管密钥进行代码加密的权限 中列出的权限的 Amazon Inspector 管理员。此外,您还需要一个与您的发现位于同一 Amazon 区域的 Amazon KMS 密钥,或者一个多区域密钥。您可以使用账户中现有的对称密钥,也可以使用 Amazon 管理控制台创建对称客户托管密钥,或者。 Amazon KMS APIs有关更多信息,请参阅 Amazon KMS 用户指南中的创建对称加密 Amazon KMS 密钥。
注意
自 2025 年 6 月 13 日起,在代码片段 CloudTrail 期间登录的 Amazon KMS 请求中的服务主体将从 “codeguru-reviewer” 更改 encryption/decryption 为 “q”。
使用 Amazon Inspector API 配置加密
要设置加密密钥,请在以亚马逊 Inspector 管理员身份登录时UpdateEncryptionKey运行 Amazon Inspector API。在 API 请求中,使用kmsKeyId
字段指定要使用的 Amazon KMS 密钥的 ARN。对于 scanType
,请输入 CODE
,对于 resourceType
,请输入 AWS_LAMBDA_FUNCTION
。
你可以使用 UpdateEncryptionKeyAPI 来查看 Amazon Inspector 正在使用哪个 Amazon KMS 密钥进行加密。
注意
如果您在未设置客户托管密钥GetEncryptionKey
的情况下尝试使用,则操作会返回ResourceNotFoundException
错误,这意味着正在使用 Amazon 自有密钥进行加密。
如果您删除密钥或将其政策更改为拒绝访问 Amazon Inspector 或 Amazon Q,您将无法访问您的代码漏洞发现,并且您的账户的 Lambda 代码扫描将失败。
您可以使用恢复使用 Amazon 自有密钥ResetEncryptionKey
对作为 Amazon Inspector 调查结果一部分提取的代码进行加密。