View a markdown version of this page

Amazon MQ 中的数据保护 - Amazon MQ

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon MQ 中的数据保护

分 AWS 担责任模型适用于亚马逊 MQ 中的数据保护。如本模型所述 AWS ,负责保护运行所有网络的全球基础设施 AWS Cloud。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息,请参阅数据隐私常见问题。有关欧洲数据保护的信息,请参阅通用数据保护条例(GDPR)中心。

出于数据保护的目的,我们建议您保护 AWS 账户 证书并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样,每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据:

  • 对每个账户使用多重身份验证(MFA)。

  • 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2,建议使用 TLS 1.3。

  • 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息,请参阅AWS CloudTrail 用户指南中的使用跟 CloudTrail 踪。

  • 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。

  • 使用高级托管安全服务(例如 Amazon Macie),它有助于发现和保护存储在 Amazon S3 中的敏感数据。

  • 如果在 AWS 通过命令行接口或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块,请使用 FIPS 终端节点。有关可用的 FIPS 端点的更多信息,请参阅《美国联邦信息处理标准(FIPS)第 140-3 版》https://aws.amazon.com/compliance/fips/。

强烈建议您切勿将机密信息或敏感信息(如您客户的电子邮件地址)放入标签或自由格式文本字段(如名称字段)。这包括当您使用控制台、API 或 AWS 软件开发工具包 AWS 服务 使用 Amazon MQ 或其他 AWS CLI设备时。在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL,强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。

对于 Amazon MQ for ActiveMQ 和 Amazon MQ for RabbitMQ 代理,在通过代理 Web 控制台或 Amazon MQ API 创建资源时,请勿使用任何个人身份信息 (PII) 或其他机密或敏感信息作为代理名称或用户名。其他 AWS 服务(包括 CloudWatch 日志)可以访问经纪人名称和用户名。代理用户名不适合用于私有或敏感数据。

重要

TLS 1.3 不适用于 RabbitMQ 代理。

加密

Amazon MQ 中存储的用户数据进行静态加密。Amazon MQ 静态加密通过使用存储在 AWS Key Management Service (KMS)中的加密密钥来对数据加密,提供了增强的安全性。此服务可以帮助减少在保护敏感数据时涉及的操作负担和复杂性。通过静态加密,您可以构建符合加密合规性和法规要求的安全敏感型应用程序。

Amazon MQ 代理之间的所有连接都使用传输层安全性(TLS)在传输过程中提供加密。

Amazon MQ 使用其管理和安全存储的加密密钥对静态和传输中的消息进行加密。有关更多信息,请参见AWS Encryption SDK 开发人员指南。

静态加密

Amazon MQ 与 AWS Key Management Service (KMS) 集成以提供透明的服务器端加密。Amazon MQ 始终加密您的静态数据。

当您为 ActiveMQ 代理创建 Amazon MQ 代理或为 RabbitMQ 代理创建亚马逊 MQ 代理时,您可以指定您 AWS KMS key 希望亚马逊 MQ 使用哪个来加密您的静态数据。如果您未指定 KMS 密钥,Amazon MQ 会为您创建 AWS 自有的 KMS 密钥并代表您使用该密钥。Amazon MQ 目前支持对称 KMS 密钥。有关 KMS 密钥的更多信息,请参阅 AWS KMS keys。

创建代理时,您可以通过选择以下选项之一来配置 Amazon MQ 用于加密密钥的内容。

  • Amazon MQ owned KMS key (default) [Amazon MQ 拥有的 KMS 密钥(原定设置)] – 密钥归 Amazon MQ 拥有和管理,且不在您的账户中。

  • AWS 托管 KMS 密钥 — AWS 托管 KMS 密钥 (aws/mq) 是您账户中的 KMS 密钥,由 Amazon MQ 代表您创建、管理和使用。

  • 选择现有的客户托管式 KMS 密钥 – 客户托管式 CMK 由您在 AWS Key Management Service (KMS) 中创建和管理。

重要
  • 撤消授权的操作无法撤消。删除代理以撤销访问权限。

  • 对于使用 Amazon Elastic File System (EFS) 存储消息数据的 Amazon MQ for ActiveMQ 代理,在采取必要操作后,撤销使用您账户中 KMS 密钥的权限可能需要几个小时。

  • 对于使用 EBS 存储消息数据的 Amazon MQ for RabbitMQ 和 Amazon MQ for ActiveMQ 代理,如果您禁用、计划删除或撤消授予 Amazon EBS 在您的账户中使用 KMS 密钥的权限,Amazon MQ 将无法维护您的代理,且可能更改为降级状态。

  • 如果您已停用密钥或计划要删除的密钥,则可以重新激活密钥或取消密钥删除并维护您的代理。

  • 在采取必要操作后,停用密钥或撤销授权可能需要几个小时。

  • 要加密或解密 CloudWatch 日志,您无法配置 Amazon MQ 使用什么作为加密密钥。 CloudWatch 日志使用加密保护静态数据,日志组经过加密。默认情况下, CloudWatch 日志服务管理服务器端加密。有关如何加密日志组的更多信息,请参阅 Amazon CloudWatch Logs 用户指南。

使用适用于 RabbitMQ 的 KMS 密钥创建单实例代理程序时,您将看到 AWS CloudTrail中记录了两个 CreateGrant 事件。第一个事件是 Amazon MQ 为 KMS 密钥创建授权。第二个事件是 EBS 创建授权供 EBS 使用。

mq_grant
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/AmazonMqConsole", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/AmazonMqConsole", "accountId": "111122223333", "userName": "AmazonMqConsole" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-02-23T18:59:10Z", "mfaAuthenticated": "false" } }, "invokedBy": "mq.amazonaws.com" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "amazonmq.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "203.0.113.0", "userAgent": "PostmanRuntime/7.1.5", "requestParameters": { "granteePrincipal": "mq.amazonaws.com", "keyId": "arn:aws:kms:us-east-1:316438333700:key/bdbe42ae-f825-4e78-a8a1-828d411c4be2", "retiringPrincipal": "mq.amazonaws.com", "operations": [ "CreateGrant", "Decrypt", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "DescribeKey" ] }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
EBS grant creation

您将看到一个创建 EBS 授权的事件。

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "mq.amazonaws.com" }, "eventTime": "2023-02-23T19:09:40Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "mq.amazonaws.com", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "granteePrincipal": "mq.amazonaws.com", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "constraints": { "encryptionContextSubset": { "aws:ebs:id": "vol-0b670f00f7d5417c0" } }, "operations": [ "Decrypt" ], "retiringPrincipal": "ec2.us-east-1.amazonaws.com" }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventCategory": "Management" }

使用适用于 RabbitMQ 的 KMS 密钥创建集群部署时,您将看到 AWS CloudTrail中记录了五个 CreateGrant 事件。前两个事件是为 Amazon MQ 创建授权。接下来的三个事件是 EBS 创建的供 EBS 使用的授权。

mq_grant
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/AmazonMqConsole", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/AmazonMqConsole", "accountId": "111122223333", "userName": "AmazonMqConsole" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-02-23T18:59:10Z", "mfaAuthenticated": "false" } }, "invokedBy": "mq.amazonaws.com" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "amazonmq.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "203.0.113.0", "userAgent": "PostmanRuntime/7.1.5", "requestParameters": { "granteePrincipal": "mq.amazonaws.com", "keyId": "arn:aws:kms:us-east-1:316438333700:key/bdbe42ae-f825-4e78-a8a1-828d411c4be2", "retiringPrincipal": "mq.amazonaws.com", "operations": [ "CreateGrant", "Encrypt", "Decrypt", "ReEncryptFrom", "ReEncryptTo", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "DescribeKey" ] }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
mq_rabbit_grant
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/AmazonMqConsole", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/AmazonMqConsole", "accountId": "111122223333", "userName": "AmazonMqConsole" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-02-23T18:59:10Z", "mfaAuthenticated": "false" } }, "invokedBy": "mq.amazonaws.com" }, "eventTime": "2018-06-28T22:23:46Z", "eventSource": "amazonmq.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "203.0.113.0", "userAgent": "PostmanRuntime/7.1.5", "requestParameters": { "granteePrincipal": "mq.amazonaws.com", "retiringPrincipal": "mq.amazonaws.com", "operations": [ "DescribeKey" ], "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
EBS grant creation

您将看到有关创建 EBS 授权的三个事件。

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "mq.amazonaws.com" }, "eventTime": "2023-02-23T19:09:40Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "mq.amazonaws.com", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "granteePrincipal": "mq.amazonaws.com", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "constraints": { "encryptionContextSubset": { "aws:ebs:id": "vol-0b670f00f7d5417c0" } }, "operations": [ "Decrypt" ], "retiringPrincipal": "ec2.us-east-1.amazonaws.com" }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventCategory": "Management" }

有关 KMS 密钥的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的 AWS KMS keys。

传输中加密

Amazon MQ for ActiveMQ:Amazon MQ for ActiveMQ 需要强大的传输层安全性协议(TLS),并对 Amazon MQ 部署的代理之间的传输中数据进行加密。在 Amazon MQ 代理之间传递的所有数据均使用强大的传输层安全性协议(TLS)进行加密。这适用于所有可用的协议。

Amazon MQ for RabbitMQ:Amazon MQ for RabbitMQ 要求对所有客户端连接使用强大的传输层安全性协议(TLS)。RabbitMQ 集群复制流量仅传输您的代理的 VPC, AWS 数据中心之间的所有网络流量在物理层均经过透明加密。适用于 RabbitMQ 集群代理的 Amazon MQ 目前不支持Inter-node 对集群复制进行加密。要了解有关传输中数据的更多信息,请参阅加密 Data-at-Rest 和传输中。

验证代理 TLS 服务器证书

Amazon MQ 经纪人提供服务器证书,该证书通过其完全限定域名 (FQDN) 识别经纪人。您的客户端负责在建立 TLS 连接时验证此证书。

FQDN 示例:

b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9.mq.ap-southeast-2.amazonaws.com

我们建议您按照 RFC 9525 “TLS 中的服务身份” 中所述配置客户端,以验证代理证书。当您的客户连接到 Amazon MQ 经纪人时,它应该执行以下操作:

  • 使用代理端点 FQDN 作为参考标识符。使用DescribeBroker操作返回的经纪终端节点中的 FQDN,或显示在 Amazon MQ 控制台的经纪人详细信息页面上。请勿从 IP 地址或您自己的 DNS 别名派生标识符。

  • 根据subjectAltName扩展名验证标识符。将代理 FQDN 与证书 subjectAltName (SAN) 扩展中的dNSName条目进行匹配。

  • 请勿使用通用名称 (CN)。CN 无法识别经纪商,也不能包含经纪商 FQDN。仅匹配 CN 或需要 CN 中特定值的客户端可能无法连接。

重要

不要禁用证书验证,也不要固定个人经纪人证书或特定的证书主题。Amazon MQ 轮换经纪人证书,证书主题的内容可能会更改。在证书轮换后,固定证书或主题值的客户端可能无法连接。

注意

当您提供代理端点主机名时,大多数 TLS 客户端库默认会根据subjectAltName扩展名验证代理 FQDN。如果您的客户端覆盖了验证主机名或提供了自己的验证回调,请确保它使用经纪商 FQDN 并与之匹配。subjectAltName

有关亚马逊 MQ 经纪人证书的更多信息,包括 Amazon MQ 颁发的证书类型和每种证书的带注释的示例,请参阅。亚马逊 MQ 经纪商 TLS 证书

Amazon MQ for ActiveMQ 协议

您可以使用以下启用 TLS 的协议来访问 ActiveMQ 代理:

Amazon MQ 上的 ActiveMQ 支持以下密码套件:

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA256

  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA

  • TLS_RSA_WITH_AES_256_GCM_SHA384

  • TLS_RSA_WITH_AES_256_CBC_SHA256

  • TLS_RSA_WITH_AES_256_CBC_SHA

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256

  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA

  • TLS_RSA_WITH_AES_128_GCM_SHA256

  • TLS_RSA_WITH_AES_128_CBC_SHA256

  • TLS_RSA_WITH_AES_128_CBC_SHA

Amazon MQ for RabbitMQ 协议

您可以使用以下启用 TLS 的协议访问您的 RabbitMQ 代理:

Amazon MQ 上的 RabbitMQ 支持以下密码套件:

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256