データセキュリティを向上させるため、ApsaraMQ for RocketMQ ブローカーは、クライアントがブローカーに接続するときに ID を認証します。クライアントが認証に合格した後にのみ、クライアントを使用してメッセージを送受信できます。ApsaraMQ for RocketMQ は、アクセス制御リスト(ACL)ベースの認証をサポートしています。この方法を使用すると、特定の ACL ユーザーに、特定のトピックまたはグループにメッセージをパブリッシュしたり、特定のトピックまたはグループからメッセージをサブスクライブしたりするための権限を付与できます。これにより、クライアントに対してきめ細かい権限制御を実装できます。
制限
ApsaraMQ for RocketMQ インスタンスでユーザー認証機能が有効になっていない場合は、チケットを送信することで、機能を有効にするように申請してください。アクセス制御のエントリポイントは、アプリケーションが承認された後にのみ表示されます。
動作メカニズム
ApsaraMQ for RocketMQ では、アクセス制御にインテリジェント認証または ACL ベースの認証を使用できます。クライアントを認証するには、ApsaraMQ for RocketMQ インスタンスのアクセス制御方法として、いずれかの方法を指定する必要があります。詳細については、「アクセス制御を構成する」をご参照ください。
インテリジェント認証:デフォルトの認証方式です。クライアントが ApsaraMQ for RocketMQ インスタンスにアクセスすると、インスタンスはユーザー名とパスワードに基づいてクライアントを認証します。クライアントが認証に合格した後にのみ、クライアントを使用してメッセージを送受信できます。
ACL ベースの認証:よりきめ細かいアクセス制御を提供する方式です。この方法を使用すると、クライアント ID を認証し、インスタンス上の特定のトピックまたはグループに対する権限制御を実装できます。
組み合わせ認証:インテリジェント認証と ACL ベースの認証を同時に選択した場合、システムはクライアントコードで指定されたユーザー名とパスワードに基づいて認証方式を自動的に照合します。インスタンスのデフォルトのユーザー名とパスワードがクライアントコードで指定されている場合は、インテリジェント認証方式が使用されます。ACL ユーザーのカスタムユーザー名とパスワードがクライアントコードで指定されている場合は、ACL ベースの認証方式が使用されます。
インテリジェント認証(デフォルト構成)のプロセス
インテリジェント認証方式を使用する場合、仮想プライベートクラウド(VPC)内の ApsaraMQ for RocketMQ インスタンスにクライアントを接続するときに、クライアントコードでユーザー名またはパスワードを指定する必要はありません。システムは、クライアントが使用する VPC エンドポイントに基づいてクライアントを自動的に識別します。
インターネット経由で ApsaraMQ for RocketMQ インスタンスにクライアントを接続する場合、またはインスタンスの VPC での認証不要機能を無効にする場合は、クライアントコードでユーザー名とパスワードを指定する必要があります。
ApsaraMQ for RocketMQ インスタンスが初期化されると、システムはインスタンスに一意のユーザー名とパスワードのペアを割り当てます。インテリジェント認証を使用してクライアントの ID を認証する場合は、クライアントコードでインスタンスに割り当てられたユーザー名とパスワードを指定する必要があります。 ApsaraMQ for RocketMQ インスタンスに割り当てられたユーザー名とパスワードを取得する方法については、「インスタンスのユーザー名とパスワードを取得する」をご参照ください。
認証に ApsaraMQ for RocketMQ インスタンスに割り当てられたユーザー名とパスワードを使用する場合、クライアントが認証に合格した後、インスタンス上のすべてのトピックおよびグループに対してメッセージをパブリッシュおよびサブスクライブする権限があります。
ACL ベースの認証のプロセス
ACL ベースの認証は、ACL ユーザーに基づいて実行されます。この方法を使用してクライアントの ID を認証する場合は、特定のリソースに権限を付与する前に、ACL ユーザーを作成する必要があります。詳細については、「ACL ユーザーを作成する」および「ACL ユーザーに権限を付与する」をご参照ください。
ACL ベースの認証を使用してクライアントの ID を認証する場合は、クライアントコードで ACL ユーザーのユーザー名とパスワードを指定する必要があります。クライアントが認証に合格した後、特定の権限が付与されているリソースに対してのみ、クライアントを使用して操作を実行できます。
たとえば、ユーザー 1 には、トピック A にメッセージをパブリッシュする権限が付与されています。ユーザー 1 のユーザー名とパスワードを使用してクライアントの ID を認証する場合、クライアントが認証に合格した後、クライアントを使用してトピック A にのみメッセージをパブリッシュできます。
ACL ユーザーを作成した後に権限を付与しない場合、ユーザーはメッセージをパブリッシュまたはサブスクライブする権限を持ちません。
アクセス制御を構成する
ApsaraMQ for RocketMQ コンソール にログオンします。左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。[インスタンス] ページで、管理するインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。表示されるページで、[アクセス制御タイプ] の横にある [編集] をクリックします。
表示されるダイアログボックスで、スマート認証 と ACL 認証 の値の少なくとも 1 つを選択し、OK をクリックします。
インテリジェント認証
インテリジェント認証を構成するためのエントリポイントは、スマート認証 を選択した後にのみ、ApsaraMQ for RocketMQ コンソールに表示されます。
ApsaraMQ for RocketMQ インスタンスに割り当てられたユーザー名とパスワードを変更すると、インスタンスのユーザー名とパスワードを使用するクライアントはインスタンスに接続できなくなります。操作を実行する際は注意してください。
VPC での認証不要を構成する
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。表示されるページで、スマート認証 タブをクリックします。
イントラネット ID 認証の省略 をオンまたはオフにします。
VPC での認証不要が有効になっている場合、VPC 内の ApsaraMQ for RocketMQ インスタンスにクライアントを接続するときに、クライアントコードでユーザー名またはパスワードを指定する必要はありません。システムは、クライアントが使用する VPC エンドポイントに基づいてクライアントを自動的に識別します。
VPC での認証不要が無効になっている場合、クライアントがインターネット経由でインスタンスに接続するか、VPC 内で接続するかに関係なく、クライアントコードでユーザー名とパスワードを指定する必要があります。デフォルトでは、VPC での認証不要は無効になっています。
インスタンスのユーザー名とパスワードを取得する
アクセス制御方法としてインテリジェント認証を指定し、ApsaraMQ for RocketMQ インスタンスの VPC での認証不要を無効にする場合は、インターネット経由または VPC 内でクライアントをインスタンスに接続するときに、クライアントコードでインスタンスのユーザー名とパスワードを指定する必要があります。
アクセス制御 ページで、スマート認証 タブをクリックします。
ユーザー名リストでインスタンスのユーザー名を表示し、インスタンスのパスワードをコピーします。
ACL ベースの認証
アクセス制御方法として ACL ベースの認証を指定する場合は、ACL ユーザーを作成し、特定のリソースに対する権限をユーザーに付与する必要があります。デフォルトでは、新しい ACL ユーザーには権限がありません。
メッセージングのためにクライアントを ApsaraMQ for RocketMQ インスタンスに接続する場合は、クライアントコードで、作成して承認した ACL ユーザーのユーザー名とパスワードを指定する必要があります。クライアントが認証に合格した後、ACL 権限範囲内で指定されたリソースに対してのみ、クライアントを使用してメッセージをパブリッシュまたはサブスクライブできます。
ACL ユーザーを作成し、ACL 権限を付与するためのエントリポイントは、ACL 認証 を選択した後にのみ、ApsaraMQ for RocketMQ コンソールに表示されます。
ACL ユーザーを無効化または削除すると、ACL ユーザー名とパスワードを使用するクライアントは ApsaraMQ for RocketMQ インスタンスに接続できなくなります。この操作を実行する際は注意してください。
ACL ユーザーを管理する
ACL ユーザーを作成する
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。表示されるページで、ACL ユーザー タブをクリックします。
ACL ユーザー タブで、[ACL ユーザーの作成] をクリックします。表示されるパネルで、画面の指示に従ってパラメーターを構成します。
ACL ユーザーに権限を付与する
アクセス制御 ページで、ACL 権限 タブをクリックし、権限の追加 をクリックします。
権限の追加 パネルで、パラメーターを構成し、OK をクリックします。次の表にパラメーターを示します。
ACL ユーザーに権限を付与するためのパラメーター
パラメーター
説明
例
ユーザー名
権限を付与する ACL ユーザー。ドロップダウンリストから作成済みの ACL ユーザーを選択します。
user_mq
リソースのタイプ
TOPIC:ACL ユーザーにトピックに対する権限を付与します。
GROUP:ACL ユーザーにグループに対する権限を付与します。
TOPIC
リソース名
ACL ユーザーに権限を付与するトピックまたはグループの名前。次のいずれかの方法を使用して、このパラメーターを構成できます。
特定のトピックまたはグループの名前を入力します。この場合、ACL ユーザーには、指定されたトピックまたはグループに対する権限が付与されます。
アスタリスク (*) ワイルドカード文字を入力して、すべてのトピックまたはグループと一致させます。この場合、ACL ユーザーには、インスタンス上のすべてのトピックまたはグループに対する権限が付与されます。
文字とアスタリスク (*) ワイルドカード文字を入力して、特定のトピックまたはグループと一致させます。この場合、ACL ユーザーには、指定されたトピックまたはグループに対する権限が付与されます。
normal_topic
操作タイプ
[リソースタイプ] パラメーターを GROUP に設定した場合、このパラメーターは 読み取り にのみ設定できます。
書き込み:ACL ユーザーに、指定されたトピックにメッセージをパブリッシュする権限を付与します。
読み取り:ACL ユーザーに、指定されたトピックまたはグループからメッセージをサブスクライブする権限を付与します。
書き込み
IP アドレスホワイトリスト
リソースにアクセスできる IP アドレスまたは CIDR ブロック。複数の IP アドレスまたは CIDR ブロックはセミコロン (;) またはコンマ (,) で区切ります。
このパラメーターを空のままにすると、すべての IP アドレスまたは CIDR ブロックがリソースにアクセスできます。
192.168.xx.xx
デシジョン
許可: [アクション] パラメーターに指定した操作を許可します。
拒否: [アクション] パラメーターに指定した操作を拒否します。
説明特定のリソースへのアクセスを許可および拒否するルールが同時に存在する場合、アクセスを拒否するルールが優先的に使用されます。
許可
上記の表のサンプル構成は、ApsaraMQ for RocketMQ インスタンスにクライアントを接続するときに、user_mq という名前の ACL ユーザーのユーザー名とパスワードを認証に使用できることを示しています。クライアントは、クライアントの IP アドレスが
192.168.xx.xxの場合にのみ、インスタンスに接続してメッセージを送受信できます。クライアントが認証に合格した後、クライアントは normal_topic という名前のトピックにのみメッセージをパブリッシュできます。
ACL ユーザーを一括管理する
テンプレートをエクスポートしてからインポートして、ACL ユーザーを一括作成できます。
アクセス制御 ページで、ACL ユーザー タブをクリックします。
ACL ユーザー タブで、ファイルのエクスポート または ファイルのインポート をクリックします。
ACL ユーザーが作成されていない場合は、ACL ユーザーを作成してからテンプレートをエクスポートする必要があります。
テンプレートをインポートして ACL ユーザーを一括作成する前に、テンプレートに他の ACL ユーザーに関する情報を指定します。
テンプレートをインポートするときに、既存のユーザーを上書きするかどうかを選択できます。
既存のユーザーの上書き機能が無効になっていて、インポートするテンプレート内の特定の ACL ユーザーが既に存在する場合、ACL ユーザーに関する情報はインポートに失敗します。
既存のユーザーの上書き機能が有効になっていて、インポートするテンプレート内の特定の ACL ユーザーが既に存在する場合、システムはテンプレートに基づいて ACL ユーザーに関する情報を更新します。
次の表に、ACL ユーザーテンプレートのパラメーターを示します。
パラメーター
説明
有効な値
ユーザー名
作成する ACL ユーザーのユーザー名。
ユーザー名は文字で始まる必要があります。
ユーザー名には、文字、数字、ハイフン (-)、およびアンダースコア (_) のみを含めることができます。
ユーザー名は 3 ~ 64 文字の長さである必要があります。
パスワード
作成する ACL ユーザーのパスワード。
パスワードは 3 ~ 64 文字の長さである必要があります。
AccountStatus
ユーザー名とパスワードのステータス。
ENABLE:使用可能
DISABLE:使用不可
次の表に、ACL ユーザーテンプレートの例を示します。
ユーザー名
パスワード
AccountStatus
user1
xxx
ENABLE
user2
xxx
DISABLE
user3
xxx
ENABLE
テンプレートをエクスポートしてからインポートして、ACL ユーザーに権限を一括付与できます。
アクセス制御 ページで、ACL 権限 タブをクリックします。
ACL 権限 タブで、ファイルのエクスポート または ファイルのインポート をクリックします。
ACL ユーザーに権限が付与されていない場合は、ACL 権限を作成してからテンプレートをエクスポートする必要があります。
テンプレートをインポートして ACL ユーザーに権限を一括付与する前に、テンプレートに他の ACL 権限に関する情報を指定します。
テンプレートをインポートするときに、既存の権限を上書きするかどうかを選択できます。システムは、ユーザー名、リソースタイプ、およびリソース名に基づいて権限レコードが存在するかどうかを判断します。
既存の権限の上書き機能が無効になっていて、特定の権限レコードが既に存在する場合、権限レコードはインポートに失敗し、システムは既存の権限レコードを変更しません。
既存の権限の上書き機能が有効になっていて、特定の権限レコードが既に存在する場合、システムはテンプレートに基づいて権限レコードを更新します。
次の表に、ACL 権限テンプレートのパラメーターを示します。詳細については、「ACL ユーザーに権限を付与するためのパラメーター」をご参照ください。
パラメーター
説明
ユーザー名
権限を付与する ACL ユーザーのユーザー名。
入力するユーザー名は、既存の ACL ユーザーの名前である必要があります。
ResourceType
権限を付与するリソースのタイプ。
ResourceName
権限を付与するリソースの名前。
Actions
リソースに対して実行できる操作。
PUB:ACL ユーザーにメッセージをパブリッシュする権限を付与します。
SUB:ACL ユーザーにメッセージをサブスクライブする権限を付与します。
PUB|SUB:ACL ユーザーにメッセージをパブリッシュおよびサブスクライブする権限を付与します。この値は、ResourceType を Topic に設定した場合にのみ有効です。
SourceIps
リソースにアクセスできる IP アドレスまたは CIDR ブロック。
Decision
ACL ユーザーがリソースに対して操作を実行することを許可するかどうかを指定します。
許可:ACL ユーザーがリソースに対して操作を実行することを許可します。
拒否:ACL ユーザーがリソースに対して操作を実行することを許可しません。
次の表に、ACL 権限テンプレートの例を示します。
ユーザー名
ResourceType
ResourceName
Actions
SourceIps
Decision
user1
TOPIC
topic_normal
PUB
0.0.0.0/0
Allow
user2
TOPIC
*
PUB|SUB
0.0.0.0/0
Allow
user3
GROUP
Group_a
SUB
192.168.xx.xx
Deny
ACL ユーザーのユーザー名とパスワードを取得する
ACL ベースの認証を使用してクライアントの ID を認証する場合は、インターネット経由でブローカーにクライアントを接続するか、VPC 内で接続するかに関係なく、クライアントコードで ACL ユーザーのユーザー名とパスワードを指定する必要があります。
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。表示されるページで、ACL ユーザー タブをクリックします。
ACL ユーザー タブで、ユーザーリストに ACL ユーザーのユーザー名を表示し、ACL ユーザーのパスワードをコピーします。