ApsaraMQ for RabbitMQ は、オープンソース RabbitMQ の認証および権限モデルを利用して、そのリソースへのアクセスを制御します。
制限事項
この機能は、新規に購入された専用クラスタータイプのサーバーレスインスタンスでのみ利用可能です。既存のインスタンスはサポートされていません。
デフォルトの guest アカウントの作成と権限管理は許可されていません。
ユーザータグベースの権限管理はサポートされていません。コンソールまたは OpenAPI を介した権限管理の詳細については、「RAM を使用したアクセスの制御」をご参照ください。
インスタンスを設定する際に、オープンソースの認証と権限管理、または Alibaba Cloud Resource Access Management (RAM) のいずれかを選択する必要があります。この選択は元に戻せません。
専用クラスタータイプのサーバーレスインスタンスでオープンソースの認証と権限管理を有効にすると、共有インスタンスにスペックダウンすることはできません。
仕組み
ApsaraMQ for RabbitMQ は vhost レベルで詳細なアクセスの制御を提供し、exchange や queue などのリソースに configure、write、read の権限を割り当てることができます。権限は正規表現を使用して定義され、パターンは次のとおりです:
.*は、すべてのリソースへのアクセスを許可します。^$は空の文字列にのみ一致し、事実上すべてのアクセスをブロックします。'^(amq\.gen.*|amq\.default)$'は、システムリソースとデフォルトの exchange へのアクセスを許可します。
次の表では、一般的な AMQP 0-9-1 操作がこれらの権限にどのようにマッピングされるかについて説明します:
AMQP 0-9-1 操作 | configure | write | read | |
exchange.declare | (passive=false) | exchange | ||
exchange.declare | (passive=true) | |||
exchange.declare | (AE あり) | exchange | exchange (AE) | exchange |
exchange.delete | exchange | |||
queue.declare | (passive=false) | queue | ||
queue.declare | (passive=true) | |||
queue.declare | (DLX あり) | queue | exchange (DLX) | queue |
queue.delete | queue | |||
exchange.bind | exchange (宛先) | exchange (ソース) | ||
exchange.unbind | exchange (宛先) | exchange (ソース) | ||
queue.bind | queue | exchange | ||
queue.unbind | queue | exchange | ||
basic.publish | exchange | |||
basic.get | queue | |||
basic.consume | queue | |||
queue.purge | queue |
ApsaraMQ for RabbitMQ でのアクセスの制御は、2 つのステージで構成されます:
Vhost アクセス: RabbitMQ クライアントが接続すると、vhost を指定します。サーバーは、ユーザーがその vhost へのアクセス権を持っているかどうかを確認します。権限が不十分な場合、接続は拒否されます。
リソース操作: exchange または queue で操作を実行する場合、サーバーは、ユーザーがその操作に対して適切な権限を持っているかどうかを評価します。
セキュリティ
オープンソースの認証と権限管理を使用する場合、ApsaraMQ for RabbitMQ は次のようにセキュリティを強化します:
ネットワークタイプ | ソリューション |
VPC | オープンソース認証 + 非公開エンドポイント |
インターネット | オープンソース認証 + パブリック IP ホワイトリスト |
操作
ApsaraMQ for RabbitMQ では、コンソールでユーザーを作成し、権限を管理できます。詳細な手順については、「ユーザーと権限の管理」をご参照ください。