データのセキュリティを向上させるため、クライアントがブローカーに接続するときに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ベースの認証方法が使用されます。
Intelligent authenticationのプロセス (デフォルト設定)
インテリジェント認証方式が使用されている場合、仮想プライベートクラウド (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のユーザー名とパスワードを使用してクライアントのIDを認証する場合、クライアントが認証に合格した後にのみ、クライアントを使用してメッセージをトピックAに公開できます。
ユーザーを作成した後にACLユーザーに権限を付与しない場合、そのユーザーにはメッセージを公開またはサブスクライブする権限がありません。
アクセス制御の設定
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。 表示されるページで、アクセス制御タイプの横にある [編集] をクリックします。
表示されるダイアログボックスで、スマート認証 と ACL 認証 のいずれかの値を選択し、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
リソースのタイプ
トピック: ACLユーザーにトピックに対する権限を付与します。
GROUP: グループに対する権限をACLユーザーに付与します。
トピック
リソース名
ACLユーザーに権限を付与するトピックまたはグループの名前。 次のいずれかの方法を使用して、このパラメーターを設定できます。
特定のトピックまたはグループの名前を入力します。 この場合、ACLユーザーには、指定されたトピックまたはグループに対する権限が付与されます。
アスタリスク (*) ワイルドカード文字を入力して、すべてのトピックまたはグループに一致します。 この場合、ACLユーザーには、インスタンス上のすべてのトピックまたはグループに対する権限が付与されます。
特定のトピックまたはグループに一致するように、文字とアスタリスク (*) のワイルド文字を入力します。 この場合、ACLユーザーには、指定されたトピックまたはグループに対する権限が付与されます。
normal_topic
操作タイプ
リソースに対して実行できる操作。 リソースタイプパラメーターをGROUPに設定した場合、このパラメーターは読み取りにのみ設定できます。
書き込み: 指定したトピックにメッセージを公開する権限をACLユーザーに付与します。
読み取り: 指定されたトピックまたはグループからのメッセージをサブスクライブする権限をACLユーザーに付与します。
書き込み
IP アドレスホワイトリスト
リソースにアクセスできるIPアドレスまたはCIDRブロック。 複数のIPアドレスまたはCIDRブロックは、セミコロン (;) またはコンマ (,) で区切ります。
このパラメーターを空のままにすると、すべてのIPアドレスまたはCIDRブロックがリソースにアクセスできます。
192.168.xx.xx
デシジョン
許可: Actionパラメーターに指定した操作を許可します。
拒否: Actionパラメーターに指定した操作を拒否します。
説明特定のリソースへのアクセスを許可および拒否するルールが同時に存在する場合は、アクセスを拒否するルールが優先的に使用されます。
許可
上記の表のサンプル設定では、クライアントを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文字である必要があります。
Password
作成するACLユーザーのパスワード。
パスワードは3 ~ 64文字である必要があります。
AccountStatus
ユーザー名とパスワードのステータス。
ENABLE: 利用可能
DISABLE: 利用不可
次の表に、ACLユーザーテンプレートの例を示します。
ユーザー名
Password
AccountStatus
user1
xxx
ENABLE
user2
xxx
DISABLE
user3
xxx
ENABLE
テンプレートをエクスポートしてからテンプレートをインポートし、一括してACLユーザーに権限を付与できます。
アクセス制御 ページで、ACL 権限 タブをクリックします。
ACL 権限 タブで、ファイルのエクスポート または ファイルのインポート をクリックします。
ACLユーザーに権限が付与されていない場合は、ACL権限を作成してからテンプレートをエクスポートする必要があります。
一括してACLユーザーに権限を付与するテンプレートをインポートする前に、テンプレート内の他のACL権限に関する情報を指定します。
テンプレートをインポートするときに、既存の権限を上書きするかどうかを選択できます。 システムは、ユーザー名、リソースタイプ、およびリソース名に基づいて、権限レコードが存在するかどうかを判断します。
既存の権限上書き機能が無効になっていて、特定の権限レコードがすでに存在する場合、権限レコードのインポートに失敗し、システムは既存の権限レコードを変更しません。
既存の権限上書き機能が有効になっていて、特定の権限レコードがすでに存在する場合、システムはテンプレートに基づいて権限レコードを更新します。
次の表に、ACL権限テンプレートのパラメーターを示します。 詳細については、「ACLユーザーに権限を付与するためのパラメーター」をご参照ください。
パラメーター
説明
ユーザー名
権限を付与するACLユーザーのユーザー名。
入力するユーザー名は、既存のACLユーザーの名前である必要があります。
ResourceType
権限を付与するリソースのタイプ。
ResourceName
権限を付与するリソースの名前。
アクション
リソースに対して実行できる操作。
PUB: ACLユーザーにメッセージを公開する権限を付与します。
SUB: ACLユーザーにメッセージをサブスクライブする権限を付与します。
PUB | SUB: ACLユーザーに、メッセージを公開およびサブスクライブする権限を付与します。 この値は、ResourceTypeをTopicに設定した場合にのみ有効です。
SourceIps
リソースにアクセスできるIPアドレスまたはCIDRブロック。
決定
ACLユーザーがリソースに対して操作を実行できるようにするかどうかを指定します。
許可: ACLユーザーがリソースに対して操作を実行できるようにします。
拒否: ACLユーザーがリソースに対して操作を実行することを許可しません。
次の表に、ACL権限テンプレートの例を示します。
ユーザー名
ResourceType
ResourceName
アクション
SourceIps
決定
user1
トピック
topic_normal
パブ
0.0.0.0/0
許可
user2
トピック
*
PUB | SUB
0.0.0.0/0
許可
user3
グループ
Group_a
サブ
192.168.xx.xx
拒否
ACLユーザーのユーザー名とパスワードの取得
ACLベースの認証を使用してクライアントのIDを認証する場合、クライアントをインターネット経由でブローカーに接続するかVPC内で接続するかに関係なく、クライアントコードでACLユーザーのユーザー名とパスワードを指定する必要があります。
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。 表示されるページで、ACL ユーザー タブをクリックします。
ACL ユーザー タブで、ユーザーリストのACLユーザーのユーザー名を表示し、ACLユーザーのパスワードをコピーします。