静态加密 - Amazon Inspector
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

静态加密

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 如何使用您配置的密钥来加密代码:

  1. 可以使用 Amazon Inspector UpdateEncryptionKey API 向 Amazon Inspector 提供 Amazon KMS 密钥。

  2. Amazon Inspector 会将有关 Amazon KMS 密钥的信息转发到 Amazon Q,Amazon Q 会存储这些信息,以备将来使用。

  3. Amazon Q 使用您通过密钥策略在 Amazon Inspector 中配置的 KMS 密钥。

  4. Amazon Q 根据您的 Amazon KMS 密钥创建加密的数据密钥并将其存储起来。此数据密钥用于加密由 Amazon Q 存储的代码数据。

  5. 当 Amazon Inspector 请求从代码扫描中获取数据时,Amazon Q 会使用 KMS 密钥来解密数据密钥。当禁用 Lambda 代码扫描时,Amazon Q 会删除关联的数据密钥。

使用客户托管密钥进行代码加密的权限

为了进行加密,您必须使用一个策略创建 KMS 密钥,Amazon Inspector 和 Amazon Q 可利用该策略中包含的语句执行以下操作。

  • kms:Decrypt

  • kms:DescribeKey

  • kms:Encrypt

  • kms:GenerateDataKey

  • kms:GenerateDataKeyWithoutPlainText

策略声明

创建 KMS 密钥时,您可以使用以下策略语句。

注意

account-id 替换为您的 12 位 Amazon Web Services 账户 ID。将 Region 替换为启用了 Amazon Inspector 和 Lambda 代码扫描的 Amazon Web Services 区域。将 role-ARN 替换为您的 IAM 角色的 Amazon 资源名称。

{ "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 API 创建客户托管对称密钥。有关更多信息,请参阅 Amazon KMS 用户指南中的创建对称加密 Amazon KMS 密钥

注意

自 2025 年 6 月 13 日起,在代码片段加密/解密期间,CloudTrail 日志所记录的 Amazon KMS 请求中的服务主体将从“codeguru-reviewer”更改为“q”。

使用 Amazon Inspector API 配置加密

要设置加密密钥,请在以 Amazon Inspector 管理员身份登录时使用 Amazon Inspector API 的 UpdateEncryptionKey 操作。在 API 请求中,使用 kmsKeyId 字段指定要使用的 Amazon KMS 密钥的 ARN。对于 scanType,请输入 CODE,对于 resourceType,请输入 AWS_LAMBDA_FUNCTION

可使用 UpdateEncryptionKey API 来查看 Amazon Inspector 使用哪个 Amazon KMS 密钥进行加密。

注意

如果您在未设置客户托管密钥的情况下使用 GetEncryptionKey,则操作会返回 ResourceNotFoundException 错误,这意味着正在使用 Amazon 自有密钥进行加密。

如果删除密钥或更改其策略以拒绝访问 Amazon Inspector 或 Amazon Q,您将无法访问代码漏洞扫描结果,并且您的账户的 Lambda 代码扫描将失败。

您可以使用 ResetEncryptionKey 恢复为使用 Amazon 自有密钥对作为 Amazon Inspector 调查发现一部分提取的代码进行加密。