Message Queue for Apache Kafka Professional Edition または Serverless インスタンスのアクセス制御リスト (ACL) 機能を使用すると、トピックやグループなどのリソースに対して SASL ユーザーに特定の操作権限を付与し、きめ細かなアクセス制御を実現できます。
背景情報
A 社は Message Queue for Apache Kafka を購入し、ユーザー A が Message Queue for Apache Kafka 内のすべてのトピックからメッセージを消費することのみを許可し、Message Queue for Apache Kafka のどのトピックにもメッセージを送信しないようにしたいと考えています。
注意事項
-
インターネットまたは VPC インスタンスの場合、Kafka にはすべてのトピックおよびグループに対する読み取り・書き込み権限を持つデフォルトの SASL ユーザーが用意されています。詳細な権限制御を行うには、ACL を有効化し、カスタム SASL ユーザーを作成して、必要に応じて Message Queue for Apache Kafka へのメッセージ送受信権限を付与してください。ACL を有効化すると、デフォルト SASL ユーザーの権限は無効になります。
-
ACL を有効化した後は、メッセージ送信によって自動的にトピックが作成されなくなります。
前提条件
ご利用の Message Queue for Apache Kafka インスタンスは、以下の要件を満たしている必要があります。
-
インスタンスは Professional Edition または Serverless Edition である必要があります。
-
インスタンスは、サービス中 ステータスです。
-
メジャーバージョンが 2.2.0 以降である必要があります。メジャーバージョンのアップグレード方法については、「バージョンのアップグレード」をご参照ください。
-
マイナーバージョンが最新である必要があります。マイナーバージョンのアップグレード方法については、「インスタンスバージョンのアップグレード」をご参照ください。
手順 1:ACL の有効化
マイナーバージョンをアップグレードした後、Message Queue for Apache Kafka コンソールでインスタンスの ACL を有効化します。
ApsaraMQ for Kafka コンソール にログインします。
概要 ページの リソースの分布 セクションでリージョンを選択します。
インスタンスリスト ページで、対象のインスタンス名をクリックします。
-
インスタンスの詳細 ページの 概要 セクション右上隅にある ACL の有効化 をクリックします。
-
ヒント ダイアログボックスで OK をクリックし、ページを手動でリフレッシュします。
ページをリフレッシュすると、インスタンスの詳細 ページの 基本情報 セクション内の ステータス が アップグレード中 に変化します。ステータス が サービス中 に変わると、処理が完了します。
重要アップグレードが完了した時点で ACL が有効化されます。その後、SASL ユーザーを作成し、権限を付与して SASL エンドポイントを使用してインスタンスに接続できるようになります。アップグレードには約 15~20 分かかります。
手順 2:SASL ユーザーの作成
インスタンスの ACL を有効化した後、ユーザー A 用の SASL ユーザーを作成します。
ApsaraMQ for Kafka コンソール にログインします。
概要 ページの リソースの分布 セクションでリージョンを選択します。
-
インスタンスリスト ページで、ACL を有効化済みのインスタンスを選択します。
-
インスタンスの詳細 ページで、SASL ユーザー管理 タブをクリックします。Serverless Edition インスタンスの場合は、左側のナビゲーションウィンドウで を選択します。
-
SASL ユーザー管理 ページで、SASL ユーザーの作成 をクリックします。
-
SASL ユーザーの作成 パネルで、SASL ユーザーのパラメーターを設定し、OK をクリックします。
パラメーター
説明
ユーザー名
SASL ユーザーの名前です。
ユーザータイプ
Message Queue for Apache Kafka は以下の SASL 認証方式をサポートしています。
-
PLAIN:シンプルなユーザー名とパスワードによる認証方式です。Message Queue for Apache Kafka では PLAIN 方式を最適化し、インスタンスを再起動せずに SASL ユーザーを動的に作成できるようにしています。
-
SCRAM:PLAIN よりも安全なユーザー名とパスワードによる認証方式です。Message Queue for Apache Kafka では、非 Serverless インスタンスは SCRAM-SHA-256 を使用します。Serverless インスタンスは SCRAM-SHA-512 をサポートしており、SCRAM のデフォルト構成となっています。
パスワード
SASL ユーザーのパスワードです。
パスワードの確認
パスワードを再度入力して確認します。
ユーザーが作成されると、SASL ユーザー管理 タブに表示されます。
-
SASL ユーザーのパスワードを変更するには、操作 列の パスワードの変更 をクリックします。SASL ユーザーパスワードの変更 パネルで、新しいパスワード と 新しいパスワードの確認 を設定し、OK をクリックします。
-
SASL ユーザーを削除するには、操作 列の 削除 をクリックします。
-
手順 3:SASL ユーザーへの権限付与
ユーザー A 用の SASL ユーザーを作成した後、トピックおよびコンシューマーグループからのメッセージ読み取り権限を付与します。
-
インスタンスの詳細 ページで、SASL 権限管理 タブをクリックします。
-
SASL 権限管理 タブで、権限の追加 をクリックします。
-
権限の追加 パネルで、以下のパラメーターを設定し、OK をクリックします。
パラメーター
説明
ユーザー名
SASL ユーザーの名前です。アスタリスク (*) ワイルドカードは、すべてのユーザー名を表します。
リソースタイプ
Message Queue for Apache Kafka は以下のリソースタイプの権限付与をサポートしています。
-
Topic:メッセージトピック。
-
Group:コンシューマーグループ。
-
Cluster:インスタンス。
-
Transactional ID:トランザクション ID。
照合方法
Message Queue for Apache Kafka は以下のマッチモードをサポートしています。
-
完全一致:入力したリソース名と完全に一致するリソースのみにマッチします。
-
プレフィックス一致:入力したプレフィックスで始まるすべてのリソースにマッチします。
リソース名
トピック、グループ、クラスターの名前、またはトランザクション ID です。アスタリスク (*) ワイルドカードは、すべてのリソース名を表します。
操作タイプ
Message Queue for Apache Kafka は以下の操作タイプをサポートしています。
-
書き込み
-
読み取り
-
冪等な書き込み
重要-
Group リソースタイプの場合、読み取り 操作のみがサポートされます。
-
クラスターリソースタイプの場合、冪等な書き込み のみがサポートされます。
Serverless Edition インスタンスの場合
パラメーター
説明
ユーザー名
SASL ユーザーの名前です。アスタリスク (*) ワイルドカードは、すべてのユーザー名を表します。
リソースタイプ
Message Queue for Apache Kafka は以下のリソースタイプの権限付与をサポートしています。
-
Topic:メッセージトピック。
-
Group:コンシューマーグループ。
-
Cluster:インスタンス。
-
Transactional ID:トランザクション ID。
照合方法
Message Queue for Apache Kafka は以下のマッチモードをサポートしています。
-
完全一致:入力したリソース名と完全に一致するリソースのみにマッチします。
-
プレフィックス一致:入力したプレフィックスで始まるすべてのリソースにマッチします。
リソース名
トピック、グループ、クラスターの名前、またはトランザクション ID です。アスタリスク (*) ワイルドカードは、すべてのリソース名を表します。
ソース IP
特定の IP アドレスまたは IP アドレス範囲からのアクセスを制限します。
権限タイプ
-
ALLOW:アクセスを許可します。
-
DENY:アクセスを拒否します。
操作タイプ
Message Queue for Apache Kafka は以下の操作タイプをサポートしています。
-
書き込み: 書き込み
-
READ:読み取り
-
CREATE:作成
-
DELETE:削除
-
DESCRIBE:メタデータおよびオフセット情報を表示
-
DESCRIBE_CONFIGS:構成情報を表示
-
IDEMPOTENT_WRITE:べき等性のある書き込み
重要-
バージョン 3.0 以降のクライアントでは、べき等性のある書き込みがデフォルトで有効になっています。メッセージを正常に送信するには、
enable.idempotence=trueを設定し、IDEMPOTENT_WRITE 権限を付与する必要があります。 -
WRITE、READ、DELETE、または ALTER 権限を付与する場合、DESCRIBE 権限がデフォルトで付与されます。
-
クラスターリソースタイプの場合、IDEMPOTENT_WRITE 操作のみがサポートされます。
構成が完了すると、SASL 権限管理 タブで作成されたユーザー権限を確認できます。リソースタイプ、照合方法、リソース名、および ユーザー名 で権限をフィルターし、クエリ をクリックできます。
-
関連操作
-
権限を付与した後、ユーザー A は SASL エンドポイントを使用して Message Queue for Apache Kafka インスタンスに接続し、SDK を使ってメッセージを消費できます。SDK を使用した接続方法については、「SDK の概要」をご参照ください。
-
API オペレーションを使用して SASL ユーザーに権限を付与する方法については、「SASL ユーザーの作成」および「ACL の作成」をご参照ください。
-
SASL エンドポイントの詳細については、「エンドポイントの比較」をご参照ください。