本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
RabbitMQ 組態中的 ARN 支援
Amazon MQ for RabbitMQ 支援某些 RabbitMQ 組態設定值的 AWS ARNs。這是由 RabbitMQ 社群外掛程式 Detectormq-aws
重要考量
-
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 端點
注意
使用此 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 '.'