View a markdown version of this page

RabbitMQ 配置中支持 ARN - Amazon MQ
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

RabbitMQ 配置中支持 ARN

适用于 RabbitMQ 的亚马逊 MQ 支持某些 RabbitMQ 配置设置值的 Amazon ARN。这是由 RabbitMQ 社区插件 rabbitmq-aws 启用的。该插件由亚马逊 MQ 开发和维护,也可以在非亚马逊 MQ 管理的自托管 RabbitMQ 代理中使用。

重要注意事项
  • aws 插件检索到的已解析的 ARN 值将在运行时直接传递给 RabbitMQ 进程。它们不会存储在 RabbitMQ 节点的其他地方。

  • 适用于 RabbitMQ 的 Amazon MQ 需要一个可以由亚马逊 MQ 代入的 IAM 角色才能访问已配置的 ARN。这是通过设置进行配置的aws.arns.assume_role_arn

  • 使用包含 IAM 角色的代理配置调用 or CreateBroker 或 UpdateBroker API 的用户必须拥有该角色的iam:PassRole权限。

  • IAM 角色必须与 RabbitMQ 代理存在于同一个 Amazon 账户中。配置中的所有 ARN 都必须与 RabbitMQ 代理位于同一 Amazon 区域。

  • Amazon MQ 在担任 IAM 角色aws:SourceArn时会添加 IAM 全局条件密钥aws:SourceAccount。这些值必须用于附加到该角色的 IAM 策略中,以实现混乱的副手保护

支持的密钥

必需的 IAM 角色
aws.arns.assume_role_arn

Amazon MQ 为访问其他资源而扮演的 IAM 角色 ARN。 Amazon 使用任何其他 ARN 配置时为必填项。

配置键 说明
aws.arns.ssl_options.cacertfile 用于 SSL/TLS 客户端连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。
配置键 说明
aws.arns.management.ssl.cacertfile 管理接口 SSL/TLS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。
配置键 说明
aws.arns.auth_oauth2.https.cacertfile OAuth 2.0 HTTPS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。
配置键 说明
aws.arns.auth_http.ssl_options.cacertfile 用于 HTTP 身份验证 SSL/TLS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。
aws.arns.auth_http.ssl_options.certfile 亚马逊 MQ 和 HTTP 身份验证服务器之间双向 TLS 连接的证书文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。
aws.arns.auth_http.ssl_options.keyfile 用于 Amazon MQ 和 HTTP 身份验证服务器之间双向 TLS 连接的私钥文件。亚马逊 MQ 需要使用 Amazon Secrets Manager 来存储私钥。
配置键 说明
aws.arns.auth_ldap.ssl_options.cacertfile LDAP SSL/TLS 连接的证书颁发机构文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。
aws.arns.auth_ldap.ssl_options.certfile 亚马逊 MQ 和 LDAP 服务器之间双向 TLS 连接的证书文件。亚马逊 MQ 需要使用亚马逊 S3 或来存储证书。
aws.arns.auth_ldap.ssl_options.keyfile 用于亚马逊 MQ 和 LDAP 服务器之间双向 TLS 连接的私钥文件。亚马逊 MQ 需要使用 Amazon Secrets Manager 来存储私钥。
aws.arns.auth_ldap.dn_lookup_bind.password LDAP DN 查找绑定的密码。Amazon MQ 要求使用 Amazon Secrets Manager 将密码存储为纯文本值。
aws.arns.auth_ldap.other_bind.password LDAP 其他绑定的密码。Amazon MQ 要求使用 Amazon Secrets Manager 将密码存储为纯文本值。

IAM 政策示例

有关包括代入角色策略文档和角色策略文档在内的 IAM 策略示例,请参阅 CDK 示例实现

使用 LDAP 身份验证和授权有关如何设置 Amazon Secrets Manager 和 Amazon S3 资源的步骤,请参阅。

相关经纪人隔离状态

有关与 ARN 支持问题相关的经纪人隔离状态的信息,请参阅:

示例方案

  • 代理b-f0fc695e-2f9c-486b-845a-988023a3e55b已配置为使用 IAM 角色<role>访问 Amazon Secrets Manager 密钥 <arn>

  • 如果提供给 Amazon MQ 的角色没有 Amazon Secrets Manager 密钥的读取权限,则 RabbitMQ 日志中将显示以下错误:

    [error] <0.254.0> aws_arn_config: {handle_assume_role,{error,{assume_role_failed,"Amazon service is unavailable"}}}

    此外,经纪人将进入INVALID_ASSUMEROLE隔离状态。有关更多信息,请参阅 INVALID _ASSUMEROLE。

  • LDAP 身份验证尝试将失败,并显示以下错误:

    [error] <0.254.0> LDAP bind failed: invalid_credentials
  • 使用适当的权限修复 IAM 角色