データのセキュリティを向上させるため、クライアントがブローカーに接続するときにApsaraMQ for RocketMQブローカーがIDを認証します。 クライアントが認証に合格した後にのみ、クライアントを使用してメッセージを送受信できます。 ApsaraMQ for RocketMQは、アクセス制御リスト (ACL) ベースの認証をサポートしています。 この方法を使用して、特定のACLユーザーに、特定のトピックまたはグループへのメッセージの発行またはメッセージのサブスクライブの権限を付与できます。 これにより、クライアントにきめ細かい権限制御を実装できます。
制限事項
従量課金またはサブスクリプションApsaraMQ for RocketMQインスタンスにユーザー認証機能を使用する場合は、 チケットを起票し、機能の有効化を申請します。 アクセス制御のエントリポイントは、申請が承認された後にのみ表示されます。
働くメカニズム
ApsaraMQ for RocketMQでは、アクセス制御にインテリジェント認証またはACLベースの認証を使用できます。 クライアントを認証するために、ApsaraMQ for RocketMQインスタンスのアクセス制御方法としていずれかの方法を指定する必要があります。 詳細については、「認証方法の設定」をご参照ください。
インテリジェント認証: クライアントがApsaraMQ for RocketMQインスタンスにアクセスすると、インスタンスはユーザー名とパスワードに基づいてクライアントを認証します。 クライアントが認証に合格した後にのみ、クライアントを使用してメッセージを送受信できます。 インテリジェント認証はデフォルトの認証方法です。
ACLベースの認証: 詳細なアクセス制御を実装する場合は、ApsaraMQ for RocketMQインスタンスのACLベースの認証を有効にできます。 この方法を使用して、クライアントIDを認証し、インスタンス上の特定のトピックまたはグループに対する権限制御を実装できます。
インテリジェント認証とACLベースの認証を同時に選択した場合、ApsaraMQ for RocketMQブローカーは、使用したユーザー名とパスワードに基づいて認証方法と自動的に一致します。 インスタンスに割り当てられたユーザー名とパスワードを使用する場合、インテリジェント認証が使用されます。 カスタムACLユーザーのユーザー名を使用する場合は、ACLベースの認証が使用されます。
(デフォルト) インテリジェント认证
次の図は、インテリジェント認証のプロセスを示しています。
インテリジェント認証方式が使用されている場合、仮想プライベートクラウド (VPC) でApsaraMQ for RocketMQインスタンスにクライアントを接続するときに、クライアントコードでユーザー名またはパスワードを指定する必要はありません。 システムは、クライアントが使用するVPCエンドポイントに基づいてクライアントを自動的に識別します。
インターネット経由でApsaraMQ for RocketMQインスタンスにクライアントを接続する場合、またはインスタンスのVPC機能で認証不要を無効にする場合は、クライアントコードでユーザー名とパスワードを指定する必要があります。
ApsaraMQ for RocketMQインスタンスが初期化されると、システムはインスタンスに一意のユーザー名とパスワードのペアを割り当てます。 インテリジェント認証を使用してクライアントのIDを認証する場合、クライアントコードでインスタンスに割り当てられたユーザー名とパスワードを指定する必要があります。 ApsaraMQ For RocketMQインスタンスに割り当てられたユーザー名とパスワードを取得する方法については、「インスタンスのユーザー名とパスワードの取得」をご参照ください。
ApsaraMQ for RocketMQインスタンスに割り当てられたユーザー名とパスワードを認証に使用する場合、クライアントが認証に合格した後、インスタンス上のすべてのトピックとグループにメッセージを発行したり、メッセージをサブスクライブしたりする権限があります。
ACLベースの認証
次の図は、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での認証不要の設定
VPCで認証不要が有効になっている場合、VPC内のApsaraMQ for RocketMQインスタンスにクライアントを接続するときに、クライアントコードでユーザー名またはパスワードを指定する必要はありません。 システムは、クライアントが使用するVPCエンドポイントに基づいてクライアントを自動的に識別します。 デフォルトでは、VPCの認証不要は有効になっています。
VPCで認証不要が無効になっている場合、クライアントがインターネット経由でインスタンスに接続するかVPC内で接続するかに関係なく、クライアントコードでユーザー名とパスワードを指定する必要があります。
手順
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。 表示されるページで、スマート認証 タブをクリックします。
イントラネット ID 認証の省略をオンまたはオフにします。
インスタンスのユーザー名とパスワードの取得
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ユーザーの作成
手順
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、インスタンス数 をクリックします。
上部のナビゲーションバーで、中国 (杭州) などのリージョンを選択します。 [インスタンス] ページで、管理するインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。 表示されるページで、ACL ユーザー タブをクリックします。
表示されるページで、[ACLユーザーの作成] をクリックします。 表示されるパネルで、画面の指示に従ってパラメータを設定します。
ACLユーザーの一括作成
テンプレートをエクスポートしてからテンプレートをインポートし、一括でACLユーザーを作成できます。
ApsaraMQ for RocketMQインスタンスにACLユーザーが作成されていない場合、ACLユーザーテンプレートをエクスポートすることはできません。 この場合、ACLユーザーを作成し、テンプレートをエクスポートし、テンプレート内の他のACLユーザーに関する情報を指定してから、テンプレートをインポートして一括でACLユーザーを作成できます。
テンプレートをインポートするときに、既存のユーザーを上書きするかどうかを選択できます。
既存のユーザーの上書き機能が無効になっていて、インポートするテンプレート内の特定のACLユーザーが既に存在する場合、ACLユーザーに関する情報はインポートされません。
既存のユーザーの上書き機能が有効になっていて、インポートするテンプレート内の特定のACLユーザーが既に存在する場合、テンプレートに基づいてACLユーザーに関する情報が更新されます。
次の表に、ACLユーザーテンプレートのパラメーターを示します。
パラメーター | 説明 | 有効値 |
ユーザー名 | 作成するACLユーザーのユーザー名。 |
|
Password | 作成するACLユーザーのパスワード。 | パスワードは3 ~ 64文字である必要があります。 |
AccountStatus | ユーザー名とパスワードのステータス。 |
|
次の表に、ACLユーザーテンプレートの例を示します。
ユーザー名 | Password | AccountStatus |
user1 | xxx | ENABLE |
user2 | xxx | DISABLE |
user3 | xxx | ENABLE |
手順
アクセス制御 ページで、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
デシジョン
許可
拒否
説明特定のリソースへのアクセスを許可および拒否するポリシーが同時に存在する場合は、アクセスを拒否するポリシーが優先的に使用されます。
許可
上記の表のサンプル設定では、クライアントをApsaraMQ for RocketMQインスタンスに接続するときに、user_mqという名前のACLユーザーのユーザー名とパスワードを認証に使用できることを示しています。 クライアントは、クライアントのIPアドレスが192.168.xx.xxの場合にのみ、メッセージングのためにインスタンスに接続できます。
クライアントが認証に合格した後、クライアントはnormal_topicという名前のトピックにのみメッセージを発行できます。
ACLユーザーへの一括アクセス許可の付与
テンプレートをエクスポートしてからテンプレートをインポートし、一括してACLユーザーに権限を付与できます。
ACLユーザーに権限が付与されていない場合、ACL権限テンプレートをエクスポートすることはできません。 この場合、ACLユーザーにアクセス許可を付与し、テンプレートをエクスポートし、テンプレート内の他のACLユーザーに関する情報を指定してから、テンプレートをインポートしてACLユーザーにアクセス許可を一括で付与できます。
テンプレートをインポートするときに、既存の権限を上書きするかどうかを選択できます。 システムは、ユーザー名、リソースタイプ、およびリソース名に基づいて、権限レコードが存在するかどうかを判断します。
既存のアクセス許可機能が無効になっていて、特定のアクセス許可レコードがすでに存在する場合、アクセス許可レコードのインポートに失敗し、システムは既存のアクセス許可レコードを変更しません。
既存のアクセス許可機能が有効になっていて、特定のアクセス許可レコードがすでに存在する場合、システムはテンプレートに基づいてアクセス許可レコードを更新します。
次の表に、ACL権限テンプレートのパラメーターを示します。 詳細については、「ACLユーザーに権限を付与するためのパラメーター」をご参照ください。
パラメーター | 説明 |
ユーザー名 | 権限を付与するACLユーザーのユーザー名。 入力するユーザー名は、既存のACLユーザーの名前である必要があります。 |
ResourceType | 権限を付与するリソースのタイプ。 |
ResourceName | 権限を付与するリソースの名前。 |
アクション | リソースに対して実行できる操作。
|
SourceIps | リソースにアクセスできるIPアドレスまたはCIDRブロック。 |
決定 | 権限ポリシー。
|
次の表に、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ユーザーのユーザー名とパスワードの取得
ACLベースの認証を使用してクライアントのIDを認証する場合、クライアントをインターネット経由でブローカーに接続するかVPC内で接続するかに関係なく、クライアントコードでACLユーザーのユーザー名とパスワードを指定する必要があります。
手順
左側のナビゲーションウィンドウで、アクセス制御 をクリックします。 表示されるページで、ACL ユーザー タブをクリックします。
表示されるページで、ユーザーリストのACLユーザーのユーザー名を表示し、ACLユーザーのパスワードをコピーします。