ApsaraMQ for RabbitMQ は、vhost レベルでアクセスコントロールを行うために、オープンソースの RabbitMQ 認証と権限をサポートしています。
制限事項
-
オープンソース認証と権限管理は、新規に購入したインスタンスでのみ利用可能です。既存のインスタンスをこのモードに切り替えることはできません。サポートされているインスタンスタイプは次のとおりです:
-
[サーバレスシリーズ] (サーバーレスシリーズ):
-
[(専用) リザーブド + エラスティック]
-
-
サブスクリプションインスタンス:
-
[Platinum Edition]
-
[Enterprise Edition]
-
-
-
デフォルトのゲストアカウントは作成も管理もできません。
-
ユーザータグベースの権限管理はサポートされていません。コンソールまたは OpenAPI による権限管理の詳細については、「RAM アクセスコントロール」をご参照ください。
-
インスタンスを設定する際に、オープンソース認証または Alibaba Cloud の Resource Access Management (RAM) のいずれかを選択する必要があります。この選択は元に戻せません。
-
専用クラスターのサーバーレスインスタンスでオープンソース認証を有効にすると、共有インスタンスへのダウングレードができなくなります。
仕組み
ApsaraMQ for RabbitMQ は、vhost レベルでアクセスコントロールを行います。正規表現を使用して、エクスチェンジとキューに configure、write、read の権限を割り当てます:
-
.*は、すべてのリソースへのアクセスを許可します。 -
^$は空の文字列にマッチし、すべてのアクセスをブロックします。 -
'^(amq\.gen.*|amq\.default)$'は、システムリソースとデフォルトエクスチェンジへのアクセスを許可します。
次の表は、一般的な AMQP 0-9-1 操作がこれらの権限にどのようにマッピングされるかを示しています:
|
AMQP 0-9-1 操作 |
configure |
write |
read |
|
|
exchange.declare |
(passive=false) |
エクスチェンジ |
||
|
exchange.declare |
(passive=true) |
エクスチェンジ |
||
|
exchange.declare |
(AE を使用) |
エクスチェンジ |
エクスチェンジ (AE) |
エクスチェンジ |
|
exchange.delete |
エクスチェンジ |
|||
|
queue.declare |
(passive=false) |
キュー |
||
|
queue.declare |
(passive=true) |
キュー |
||
|
queue.declare |
(DLX を使用) |
キュー |
エクスチェンジ (DLX) |
キュー |
|
queue.delete |
キュー |
|||
|
exchange.bind |
エクスチェンジ (宛先) |
エクスチェンジ (送信元) |
||
|
exchange.unbind |
エクスチェンジ (宛先) |
エクスチェンジ (送信元) |
||
|
queue.bind |
キュー |
エクスチェンジ |
||
|
queue.unbind |
キュー |
エクスチェンジ |
||
|
basic.publish |
エクスチェンジ |
|||
|
basic.get |
キュー |
|||
|
basic.consume |
キュー |
|||
|
queue.purge |
キュー |
アクセスコントロールには 2 つのステージがあります:
-
Vhost アクセス:接続するクライアントは vhost を指定します。サーバーはユーザーがアクセス権を持っていることを確認し、持っていない場合は接続を拒否します。
-
リソース操作:サーバーは、ユーザーが各エクスチェンジまたはキューの操作に必要な権限を持っているかどうかを確認します。
ネットワークセキュリティ
オープンソース認証と権限管理を使用する場合、ApsaraMQ for RabbitMQ は次のようにセキュリティを強化します:
|
ネットワークタイプ |
ソリューション |
|
VPC |
オープンソース認証 + プライベートエンドポイント |
|
インターネット |
オープンソース認証 + パブリック IP ホワイトリスト + パブリックエンドポイント経由でのオープンソース認証インスタンスへのアクセス |
パブリック IP ホワイトリストを設定しても ApsaraMQ for RabbitMQ インスタンスへの接続が拒否される場合は、ホワイトリストが機能していないと結論付ける前に、次の点を確認してください:
-
ホワイトリストは、ICMP レイヤーではなく、AMQP プロトコルレイヤーで適用されます。インスタンスの IP アドレスへの ping が成功しても、ホワイトリストが機能していることを示すものではありません。AMQP 接続がブロックされている場合は、ping の結果に頼らず、ホワイトリストの設定を確認してください。
-
ホワイトリストのエントリは、
x.x.x.x/30のような CIDR ブロックとして指定する必要があります。システムは、単一の IP アドレスやx.x.x.x/32のエントリを受け付けません。 -
トラブルシューティングを行うには、コンソールのホワイトリストで IP エントリを確認し、正しい CIDR 形式が使用されていることを確認してください。
ユーザーと権限の管理
ApsaraMQ for RabbitMQ では、コンソールでユーザーを作成し、権限を管理できます。詳細な手順については、「権限」をご参照ください。