HTTP 基本認証¶
HTTP 基本認証 を以下の Confluent Platform コンポーネントに追加することができます。
注釈
すべてのコンポーネントのセキュリティをサポートするために、ロールベースアクセス制御(RBAC) を使用することができます。詳細については、「Kafka Connect と RBAC」を参照してください。
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¶
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 のセキュリティの概要」を参照してください。
Control Center¶
Java Authentication and Authorization Service(JAAS)を使用して HTTP 基本認証を構成すると、ユーザーに Control Center へのログインを要求できます。JAAS は、実行時に指定された詳細に基づいて、プラグ可能なモデルを提供します。すべての構成オプションの詳細については、「UI 認証設定」を参照してください。
Control Center 認証を構成するには、以下の手順に従います。
適切な Control Center プロパティファイル で以下のオプションを指定します。
confluent.controlcenter.rest.authentication.roles
およびconfluent.controlcenter.auth.restricted.roles
を使用して、管理者(読み取りおよび書き込みのフルアクセスが許可されている)と制限ユーザー(読み取りアクセスのみ許可されている)のいずれかのユーザーのグループを作成します。confluent.controlcenter.rest.authentication.roles
の値を<administrator_group_name>,<restricted_group_name>
の形式で指定します。restricted の値は、制限グループの名前です。
confluent.controlcenter.auth.restricted.roles
は<restricted_group_name>
です。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
以下のような JAAS ファイル(
propertyfile.jaas
)を作成します。ファイルで、認証レルムを Control Center (c3
)として指定し、Control Center のユーザーとパスワードを含めるパスワードファイルの名前を指定します。c3 { org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required file="/path/to/password.properties"; };
password.properties
のパスワードファイルは、ユーザー名の後ろにパスワードとそのユーザーのグループ(管理者グループまたは制限グループ)を続けて指定して、以下のような内容にする必要があります。注釈
複数グループのメンバーシップを持つユーザーは、最も限定されたアクセス権限のみ許可されます。たとえば、ユーザーが
admin
とreadonly
の 2 つのグループのメンバーであり、readonly
が限定されたロールである場合、ユーザーはreadonly
グループの権限のみ許可されます。admin: <admin-password>,<administrator_group_name> bob: <bob-password>,<administrator_group_name> alice: <alice-password>,<your_restricted_group>
JAAS 構成を使用するための引数を渡して Control Center を起動し、HTTP 基本認証設定を含むプロパティファイルを指定します。
CONTROL_CENTER_OPTS="-Djava.security.auth.login.config=/path/to/propertyfile.jaas" \ control-center-start ./etc/confluent-control-center/control-center.properties
ユーザーが Control Center にアクセスする場合は、サインイン認証情報が要求されます。この例では、bob:<bob_password>
としてログインすると、読み取りおよび書き込みのアクセス権限が付与されます。alice:<alice_password>
としてログインすると、読み取り専用のアクセス権限が提供されます。
制限ユーザー¶
限定ロール(読み取り専用)のユーザーは、以下のユーザーインターフェイス(UI)の機能とオプションは使用できず、表示もされません。
- Connect 構成のアップロード
- コネクターのブラウズ
- コネクターの追加、削除、一時停止、再開
- コネクター設定の表示
- アラート(トリガーまたはアクション) の作成、削除、編集
- ライセンスの編集
- ブローカー の編集
- クラスター関連フォーム での送信の実行
- スキーマの編集、作成、削除
- トピックの検査
- ksqlDB クエリの実行または停止
- ksqlDB エディターへの入力
- ksqlDB ストリームまたはテーブルの追加
参考
この構成の動作例については、Confluent Platform デモ を参照してください。構成リファレンスについては、デモの docker-compose.yml ファイル を参照してください。