本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
RabbitMQ 配置中支持 ARN
适用于 RabbitMQ 的亚马逊 MQ 支持某些 RabbitMQ 配置设置值的 AWS ARN。这是由 RabbitMQ 社区插件 rabbitmq-aws 启用的。
重要注意事项
-
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 角色