NSX Advanced Load Balancer 支持 Amazon Simple Queue Service (SQS) 消息队列的服务器端加密 (Server-Side Encryption, SSE)。对队列进行加密不会加密积压的消息,禁用加密也不会从积压的消息中移除加密。在本文截稿时,仅 3 个 AWS 区域支持 SQS 队列加密:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)和美国西部(俄勒冈)。

必备条件

要使 NSX Advanced Load Balancer Controller 使用 Amazon Simple Notification Service (SNS) 的加密 SQS 队列和其他工件,使用其访问/私有密钥的用户或 AviController-Refined-Role 必须附加以下策略:

  • AviController-SQS-Policy

  • AviController-SNS-Policy

  • AviController-KMS-Policy

在轮询 SQS 队列时,AviController-Refined-Role 必须能够解密收到的消息。为此,必须更新 AviController-KMS-Policy 以在其中包含 kms:Decrypt 写入操作。在为 AWS 中的安装设置 IAM 角色一节中说明了该角色和策略的 JSON 文件。

客户托管客户主密钥

AWS 密钥管理服务中的主要资源是客户主密钥 (Customer Master Key, CMK)。客户托管 CMK 是用户创建、管理和使用的 CMK。它与 AWS 托管 CMK 相反,后者是由与 AWS KMS 集成的 AWS 服务代表用户创建、管理和使用的。

这包括启用和禁用 CMK,轮换其加密材料,设置控制 CMK 访问的 IAM 策略和密钥策略以及在加密操作中使用 CMK。

SQS 队列的 SSE 是使用客户托管 CMK 完成的,SNS 主题必须能够使用该加密密钥对它要发送到队列的消息进行加密/解密。为此,必须修改加密密钥的策略以允许 SNS 服务使用该密钥。

为客户托管 CMK 添加权限

登录到 AWS 管理控制台,然后打开 AWS Identity and Access Management (IAM) 控制台。按照下面提到的步骤进行操作:

  1. 在左侧导航窗格中,选择“加密密钥”。

  2. 对于“区域”,请选择相应的 AWS 区域。

  3. 选择要编辑密钥策略文档的 CMK 的别名。

  4. 在“密钥策略”行中,选择“切换到策略视图”。

  5. 在密钥策略中添加以下语句。

    {
         "Sid": "Allow SNS to use CMK",
         "Effect": "Allow",
         "Principal": {
           "Service": "sns.amazonaws.com"
         },
         "Action": [
           "kms:GenerateDataKey*",
           "kms:Decrypt"
         ],
         "Resource": "*"
        }

通过 NSX Advanced Load Balancer UI 启用 SQS 队列加密仅适用于以下 AWS 区域:

  • 美国东部(弗吉尼亚北部)

  • 美国东部(俄亥俄)

  • 美国西部(俄勒冈)

按照占位符中所述的步骤在 NSX Advanced Load Balancer 上配置 SNS-SQS 加密。