View a markdown version of this page

RabbitMQ 配置中支持 ARN - Amazon MQ

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

RabbitMQ 配置中支持 ARN

适用于 RabbitMQ 的亚马逊 MQ 支持某些 RabbitMQ 配置设置值的 AWS 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 代理存在于同一个 AWS 账户中。配置中的所有 ARN 都必须与 RabbitMQ 代理位于同一 AWS 区域。

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

支持的密钥

必需的 IAM 角色
aws.arns.assume_role_arn

Amazon MQ 为访问其他资源而扮演的 IAM 角色 ARN。 AWS 使用任何其他 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 需要使用 AWS 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 需要使用 AWS Secrets Manager 来存储私钥。
aws.arns.auth_ldap.dn_lookup_bind.password LDAP DN 查找绑定的密码。Amazon MQ 要求使用 AWS Secrets Manager 将密码存储为纯文本值。
aws.arns.auth_ldap.other_bind.password LDAP 其他绑定的密码。Amazon MQ 要求使用 AWS Secrets Manager 将密码存储为纯文本值。

IAM 政策示例

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

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

相关经纪人隔离状态

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

示例方案

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

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

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

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

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

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