RabbitMQ 組態中的 ARN 支援 - Amazon MQ

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

RabbitMQ 組態中的 ARN 支援

Amazon MQ for RabbitMQ 支援某些 RabbitMQ 組態設定值的 AWS ARNs。這是由 RabbitMQ 社群外掛程式 Detectormq-aws 啟用。此外掛程式由 Amazon MQ 開發和維護,也可用於非由 Amazon MQ 管理的自我託管 RabbitMQ 代理程式。 Amazon MQ

重要考量
  • aws 外掛程式擷取的已解析 ARN 值會在執行時間直接傳遞至 RabbitMQ 程序。它們不會存放在 RabbitMQ 節點的其他位置。

  • Amazon MQ for RabbitMQ 需要 IAM 角色,Amazon MQ 可以擔任該角色來存取設定的 ARNs。這是透過設定 來設定aws.arns.assume_role_arn

  • 使用包含 IAM 角色的代理程式組態呼叫 CreateBroker 或 UpdateBroker APIs 的使用者必須具有該角色的 iam:PassRole 許可。

  • IAM 角色必須存在於與 RabbitMQ 代理程式相同的 AWS 帳戶中。組態中的所有 ARNs 必須與 RabbitMQ 代理程式位於相同的 AWS 區域中。

  • Amazon MQ 會在擔任 IAM 角色aws:SourceArn時新增 IAM 全域條件式金鑰aws:SourceAccount和 。這些值必須用於連接到角色的 IAM 政策中,以進行混淆代理人保護

支援的金鑰

必要的 IAM 角色
aws.arns.assume_role_arn

Amazon MQ 擔任以存取其他 AWS 資源的 IAM 角色 ARN。使用任何其他 ARN 組態時為必要。

組態金鑰 Description
aws.arns.ssl_options.cacertfile SSL/TLS 用戶端連線的憑證授權機構檔案。Amazon MQ 需要使用 Amazon S3 或 來存放憑證。
組態金鑰 Description
aws.arns.management.ssl.cacertfile 管理介面 SSL/TLS 連線的憑證授權機構檔案。Amazon MQ 需要使用 Amazon S3 或 來存放憑證。
組態金鑰 Description
aws.arns.auth_oauth2.https.cacertfile OAuth 2.0 HTTPS 連線的憑證授權機構檔案。Amazon MQ 需要使用 Amazon S3 或 來存放憑證。
組態金鑰 Description
aws.arns.auth_http.ssl_options.cacertfile HTTP 身分驗證 SSL/TLS 連線的憑證授權機構檔案。Amazon MQ 需要使用 Amazon S3 或 來存放憑證。
aws.arns.auth_http.ssl_options.certfile Amazon MQ 與 HTTP 身分驗證伺服器之間交互 TLS 連線的憑證檔案。Amazon MQ 需要使用 Amazon S3 或 來存放憑證。
aws.arns.auth_http.ssl_options.keyfile Amazon MQ 與 HTTP 身分驗證伺服器之間交互 TLS 連線的私有金鑰檔案。Amazon MQ 需要使用 AWS Secrets Manager 來存放私有金鑰。
組態金鑰 Description
aws.arns.auth_ldap.ssl_options.cacertfile LDAP SSL/TLS 連線的憑證授權機構檔案。Amazon MQ 需要使用 Amazon S3 或 來存放憑證。
aws.arns.auth_ldap.ssl_options.certfile Amazon MQ 與 LDAP 伺服器之間交互 TLS 連線的憑證檔案。Amazon MQ 需要使用 Amazon S3 或 來存放憑證。
aws.arns.auth_ldap.ssl_options.keyfile Amazon MQ 與 LDAP 伺服器之間交互 TLS 連線的私有金鑰檔案。Amazon 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 範例實作

如需如何設定 AWS Secrets Manager 和 Amazon S3 資源的步驟使用 LDAP 身分驗證和授權,請參閱 。

存取驗證

為了疑難排解無法擷取 ARN 值的情況,aws 外掛程式支援 RabbitMQ 管理 API 端點,可呼叫該端點來檢查 Amazon MQ 是否能夠成功擔任角色和 AWS ARNs。這不需要更新代理程式組態、使用新的組態修訂版更新代理程式,以及重新啟動代理程式以測試組態變更。

注意

使用此 API 需要現有的 RabbitMQ 管理員使用者。除了其他存取方法之外,Amazon MQ 還建議使用內部使用者建立測試代理程式。請參閱啟用 OAuth 2.0 和簡單 (內部) 身分驗證。然後,此使用者可以用來存取驗證 API。

注意

雖然 aws 外掛程式支援將新角色做為輸入傳遞至驗證 API,但 Amazon MQ 不支援此參數。用於驗證的 IAM 角色應與代理程式組態aws.arns.assume_role_arn中的 值相符。

相關中介裝置隔離狀態

如需 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 角色

  • 呼叫驗證端點以驗證 RabbitMQ 現在是否能夠存取秘密:

    curl -4su 'guest:guest' -XPUT -H 'content-type: application/json' <broker-endpoint>/api/aws/arn/validate -d '{"assume_role_arn":"arn:aws:iam::<account-id>:role/<role-name>","arns":["arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>"]}' | jq '.'