HTTP 基本認証¶
以下の Confluent Platform コンポーネントには HTTP 基本認証を追加できます。
Control Center REST API¶
ユーザーログインは JAAS を使用してプラグ可能な HTTP 基本認証を使用して提供されています。すべての構成オプションは、ここに記載 されています。
Control Center 認証を構成するには、以下の手順に従います。
control-center.properties
内に以下のオプションを指定します。confluent.controlcenter.rest.authentication.method=BASIC confluent.controlcenter.rest.authentication.realm=c3 confluent.controlcenter.rest.authentication.roles=Administrators,Restricted confluent.controlcenter.auth.restricted.roles=Restricted confluent.controlcenter.auth.session.expiration.ms=600000
重要
confluent.controlcenter.rest.authentication.roles
およびconfluent.controlcenter.auth.restricted.roles
というプロパティはいずれも グループ に適用されます。confluent.controlcenter.rest.authentication.roles
の値は<your_administrator_group>,<your_restricted_group>
、confluent.controlcenter.auth.restricted.roles
の値は<your_restricted_group>
です。以下のような JAAS ファイル(
propertyfile.jaas
)を作成します。認証レルムは Control Center (c3
)です。c3 { org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required file="/password.properties"; };
password.properties
にあるパスワードファイルは以下のような形式になっています。bob: <bob_password>,<your_administrator_group> alice: <alice_password>,<your_restricted_group>
JAAS 構成を使用するために Control Center を起動します。
CONTROL_CENTER_OPTS="-Djava.security.auth.login.config=/propertyfile.jaas" control-center-start /control-center.properties
Control Center へのアクセスを付与された後で、サインイン資格情報が要求されます。bob:<bob_password>
としてログインすると、読み取りおよび書き込みのアクセス権限が提供されます。alice:<alice_password>
としてログインすると、読み取り専用のアクセス権限が提供されます。
以下のメイン UI 要素およびオプションは、制限ユーザーには 表示されません。
- コネクターの追加、削除、一時停止、再開
- コネクターのブラウズ
- コネクター設定の表示
- コネクター構成のアップロード
- アラート(トリガーまたはアクション)の作成、削除、編集
- ライセンスの編集
- ブローカーの編集
- クラスター関連フォームでの送信の実行
- スキーマの編集、作成、削除
- データフロークエリの編集
- トピックの検査
- ksqlDB エディターへの入力
- ksqlDB クエリの実行または停止
- KSQL ストリームまたはテーブルの追加
注釈
ユーザーが管理者グループと制限グループの両方に属している場合は、読み取り専用 ユーザーと見なされます。
参考
この構成の動作例については、Confluent Platform デモ を参照してください。構成リファレンスについては、デモの docker-compose.yml ファイル を参照してください。
REST Proxy¶
「REST Proxy HTTP 基本認証」を参照してください。
Connect REST API¶
以下の構成を Connect ワーカープロパティファイル(
etc/kafka/connect-distributed.propertes
)に追加します。rest.extension.classes=org.apache.kafka.connect.rest.basic.auth.extension.BasicAuthSecurityRestExtension
JAAS の構成ファイルを作成します。認証レルムは
KafkaConnect
にハードコーディングされているため、JAAS は次のように記述する必要があります。KafkaConnect { org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required file="<path-to-confluent>/etc/kafka/connect.password"; };
JAAS の構成ファイルへのパスを使用して
KAFKA_OPTS
をエクスポートします。export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas-file>"
パスワードのプロパティファイル(
<path-to-confluent>/etc/kafka/connect.password
)を作成します。以下に例を示します。thisismyusername: thisismypass
ksqlDB¶
以下の構成を ksqlDB プロパティファイル(
etc/ksqldb/ksql-server.properties
)に追加します。authentication.method=BASIC authentication.roles=admin,developer,user,ksq-user authentication.realm=KsqlServer-Props
JAAS ファイル(
jaas_config.conf
)を作成します。KsqlServer-Props { org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required file="/path/to/password-file" debug="false"; };
パスワードのプロパティファイル(
<path-to-confluent>/etc/ksqldb/password-file
)を作成します。file パラメーターは、パスワードファイルの場所です。フォーマットは以下のとおりです。<username>: <password-hash>,<role1>[,<role2>,...]
以下に例を示します。
fred: OBF:1w8t1tvf1w261w8v1w1c1tvn1w8x,user,admin harry: changeme,user,developer tom: MD5:164c88b302622e17050af52c89945d44,user dick: CRYPT:adpexzg3FUZAk,admin,ksq-user
JAAS ファイルをエクスポートします。
export KSQL_OPTS=-Djava.security.auth.login.config=/path/to/the/jaas_config.conf
ksqlDB サーバーを起動します。
<path-to-confluent>/bin/ksql-server-start <path-to-confluent>/etc/ksqldb/ksql-server.properties
詳細については、「ksqlDB を HTTP 基本認証用に構成する」を参照してください。
スキーマレジストリ¶
Schema Registry を構成することにより、HTTP 基本認証メカニズムを介し、ユーザー名とパスワードを使用して認証するようユーザーに要求することができます。
注釈
基本認証を使用する場合、基本プロトコルでは資格情報がプレーンテキストで渡されるため、セキュアな通信用に HTTPS が使用されるようにスキーマレジストリを構成 することをお勧めします。
認証を要求するように Schema Registry を構成するには、次の設定を使用します。
authentication.method=BASIC
authentication.roles=<user-role1>,<user-role2>,...
authentication.realm=<section-in-jaas_config.conf>
authentication.roles
構成では、ユーザーロールのコンマ区切りリストを定義します。Schema Registry にアクセスするための認可を受けるには、認証されたユーザーがこれらのロールの 1 つ以上に属している必要があります。
たとえば、admin
、developer
、user
、sr-user
の各ロールを定義する場合、次の構成でこれらのロールを認証用に割り当てます。
authentication.roles=admin,developer,user,sr-user
authentication.realm
構成は、jaas_config.conf
内のセクションと一致する必要があります。これは、サーバーによるユーザーの認証方法を定義し、サーバーの起動時に JVM オプションとして渡されます。
export SCHEMA_REGISTRY_OPTS=-Djava.security.auth.login.config=/path/to/the/jaas_config.conf
<path-to-confluent>/bin/schema-registry-start <path-to-confluent>/etc/schema-registry/schema-registry.properties
jaas_config.conf
の例を以下に示します。
SchemaRegistry-Props {
org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required
file="/path/to/password-file"
debug="false";
};
SchemaRegistry-Props
セクションを authentication.realm
構成設定に割り当てます。
authentication.realm=SchemaRegistry-Props
上の jaas_config.conf
の例では、Jetty PropertyFileLoginModule
を使用して、パスワードファイル内の認証情報を確認することでユーザーを認証しています。
データベースから認証情報を読み取るために、LdapLoginModule
や JDBCLoginModule
など、Java の標準 LoginModule
インターフェイスの他の実装を使用することもできます。
file パラメーターは、パスワードファイルの場所です。フォーマットは以下のとおりです。
<username>: <password-hash>,<role1>[,<role2>,...]
以下に例を示します。
fred: OBF:1w8t1tvf1w261w8v1w1c1tvn1w8x,user,admin
barney: changeme,user,developer
betty: MD5:164c88b302622e17050af52c89945d44,user
wilma: CRYPT:adpexzg3FUZAk,admin,sr-user
org.eclipse.jetty.util.security.Password
ユーティリティを使用して、ユーザーのパスワードハッシュを取得します。
bin/schema-registry-run-class org.eclipse.jetty.util.security.Password fred letmein
出力は以下のようになります。
letmein
OBF:1w8t1tvf1w261w8v1w1c1tvn1w8x
MD5:0d107d09f5bbe40cade3de5c71e9e9b7
CRYPT:frd5btY/mvXo6
出力の各行は、プレーンテキストから始まり、さまざまなメカニズムを使用してパスワードを暗号化したものです。
基本認証が使用されるように Schema Registry を構成したら、適切かつ有効な資格情報を使用してクライアントを構成する必要があります。次に例を示します。
basic.auth.credentials.source=USER_INFO
basic.auth.user.info=fred:letmein
ちなみに
これらのプロパティの schema.registry
プレフィックス付きバージョンは、Confluent Platform 5.0 で非推奨になりました。
schema.registry.basic.auth.credentials.source
は非推奨となっています。schema.registry.basic.auth.user.info
は非推奨となっています。
詳細については、「Schema Registry のセキュリティの概要」を参照してください。