RBAC の例¶
このサンプルでは、Confluent Platform 全体で role-based access control (RBAC) を有効にする方法を示します。これは、ローカルホストに Confluent Platform を ダウンロード しているユーザー向けです。
参考
Kafka イベントストリーミングアプリケーションの実際のデプロイをよりよく表している RBAC のサンプルについては、 Confluent Platform のデモ(cp-demo) を参照してください。これは、RBAC およびその他の Confluent Platform セキュリティ機能と LDAP 統合を含む Docker ベースのサンプルです。
ローカルにインストールされた Confluent Platform でのサンプルの実行¶
警告¶
- わかりやすくするためにこのサンプルでは LDAP を使用せず、代わりに静的に定義されたユーザー/パスワードのハッシュログインサービスを使用します。サンプルを拡張して LDAP サーバーに接続する場合は、追加の構成が必要になります。
- このサンプルの RBAC 構成およびロールバインディングは包括的なものではなく、Confluent Platform のすべてのサービスにわたって最小限の RBAC 機能がセットアップされます。包括的な構成と本稼働環境のガイダンスについては、RBAC のドキュメント を参照してください。
前提条件¶
Confluent Platform は、さまざまなオペレーティングシステムおよびソフトウェアバージョンでサポートされています(詳細については「サポートされているバージョンおよび相互運用性」を参照)。このサンプルは、以下に説明する特定の構成で検証されています。この例の Windows での実行は正式にサポートされていませんが、GitHub のサンプルコードを変更して symlink .env
を config.env の内容で置き換えると、Windows でも動作する可能性があります。
- macOS 10.15.3
- Confluent Platform 6.1.5
- Java 11.0.6 2020-01-14 LTS
- bash バージョン 3.2.57
- jq 1.6
- (Docker ベースのサンプル)Docker バージョン 19.03.8
- (Docker ベースのサンプル)Docker Compose docker-compose バージョン 1.25.4
サンプルの実行¶
confluentinc/examples GitHub リポジトリのクローンを作成し、
6.1.5-post
ブランチをチェックアウトします。git clone https://github.com/confluentinc/examples.git cd examples git checkout 6.1.5-post
security/rbac/scripts
ディレクトリに移動します。cd security/rbac/scripts
サンプルを実行する場合は、2 つのオプションがあります。
オプション 1: すべてのサービスについてエンドツーエンドでサンプルを実行する
./run.sh
オプション 2: 一度に 1 つずつのサービスについてサンプルを実行する
./init.sh ./enable-rbac-broker.sh ./enable-rbac-schema-registry.sh ./enable-rbac-connect.sh ./enable-rbac-rest-proxy.sh ./enable-rbac-ksqldb-server.sh ./enable-rbac-control-center.sh
サンプルを実行した後、構成ファイルを表示します。
# The original configuration bundled with Confluent Platform ls /tmp/original_configs/
# Configurations added to each service's properties file ls ../delta_configs/
# The modified configuration = original + delta ls /tmp/rbac_configs/
サンプルを実行した後、各サービスのログファイルを表示します。このサンプルでは Confluent CLI を使用するため、すべてのログは、
confluent local current
で指定された一時ディレクトリに保存されています。ls `confluent local current | tail -1`
このディレクトリで、各サービスについて構成のプロパティを設定できます。
connect control-center kafka kafka-rest ksql-server schema-registry zookeeper
このサンプルでは、メタデータサービス(MDS)のログが一時ディレクトリに保存されます。
cat `confluent local current | tail -1`/kafka/logs/metadata-service.log
構成とロールバインディングの要約¶
以下は、デルタ構成と、サービスごとに必要なロールバインディングの要約です。
注釈
わかりやすくするために、このサンプルでは、LDAP の代わりにハッシュログインサービスを使用します。お使いの環境で LDAP を使用している場合は、追加の構成が必要です。
ブローカー¶
server.properties に必要なその他の RBAC 構成
# Confluent Authorizer Settings # Semi-colon separated list of super users in the format <principalType>:<principalName> # For example super.users=User:admin;User:mds super.users=User:ANONYMOUS;User:mds # MDS Server Settings confluent.metadata.topic.replication.factor=1 # MDS Token Service Settings confluent.metadata.server.token.key.path=/tmp/tokenKeypair.pem # Configure the RBAC Metadata Service authorizer authorizer.class.name=io.confluent.kafka.security.authorizer.ConfluentServerAuthorizer confluent.authorizer.access.rule.providers=CONFLUENT,ZK_ACL # Bind Metadata Service HTTP service to port 8090 confluent.metadata.server.listeners=http://0.0.0.0:8090 # Configure HTTP service advertised hostname. Set this to http://127.0.0.1:8090 if running locally. confluent.metadata.server.advertised.listeners=http://127.0.0.1:8090 # HashLoginService Initializer confluent.metadata.server.authentication.method=BEARER confluent.metadata.server.user.store=FILE confluent.metadata.server.user.store.file.path=/tmp/login.properties # Add named listener TOKEN to existing listeners and advertised.listeners listeners=TOKEN://:9092,PLAINTEXT://:9093 advertised.listeners=TOKEN://localhost:9092,PLAINTEXT://localhost:9093 # Add protocol mapping for newly added named listener TOKEN listener.security.protocol.map=PLAINTEXT:PLAINTEXT,TOKEN:SASL_PLAINTEXT listener.name.token.sasl.enabled.mechanisms=OAUTHBEARER # Configure the public key used to verify tokens # Note: username, password and metadataServerUrls must be set if used for inter-broker communication listener.name.token.oauthbearer.sasl.jaas.config= \ org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \ publicKeyPath="/tmp/tokenPublicKey.pem"; # Set SASL callback handler for verifying authentication token signatures listener.name.token.oauthbearer.sasl.server.callback.handler.class=io.confluent.kafka.server.plugins.auth.token.TokenBearerValidatorCallbackHandler # Set SASL callback handler for handling tokens on login. This is essentially a noop if not used for inter-broker communication. listener.name.token.oauthbearer.sasl.login.callback.handler.class=io.confluent.kafka.server.plugins.auth.token.TokenBearerServerLoginCallbackHandler # Settings for Self-Balancing Clusters confluent.balancer.topic.replication.factor=1 # Settings for Audit Logging confluent.security.event.logger.exporter.kafka.topic.replicas=1
ロールバインディング:
# Broker Admin confluent iam rolebinding create --principal User:$USER_ADMIN_SYSTEM --role SystemAdmin --kafka-cluster-id $KAFKA_CLUSTER_ID # Producer/Consumer confluent iam rolebinding create --principal User:$USER_CLIENT_A --role ResourceOwner --resource Topic:$TOPIC1 --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_CLIENT_A --role DeveloperRead --resource Group:console-consumer- --prefix --kafka-cluster-id $KAFKA_CLUSTER_ID
Schema Registry¶
schema-registry.properties に必要なその他の RBAC 構成
kafkastore.bootstrap.servers=localhost:9092 kafkastore.security.protocol=SASL_PLAINTEXT kafkastore.sasl.mechanism=OAUTHBEARER kafkastore.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler kafkastore.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username="sr" password="sr1" metadataServerUrls="http://localhost:8090"; # Schema Registry group id, which is the cluster id schema.registry.group.id=schema-registry-demo # These properties install the Schema Registry security plugin, and configure it to use RBAC for authorization and OAuth for authentication schema.registry.resource.extension.class=io.confluent.kafka.schemaregistry.security.SchemaRegistrySecurityResourceExtension confluent.schema.registry.authorizer.class=io.confluent.kafka.schemaregistry.security.authorizer.rbac.RbacAuthorizer rest.servlet.initializor.classes=io.confluent.common.security.jetty.initializer.InstallBearerOrBasicSecurityHandler # The location of a running metadata service; used to verify that requests are authorized by the users that make them confluent.metadata.bootstrap.server.urls=http://localhost:8090 # Credentials to use when communicating with the MDS; these should usually match the ones used for communicating with Kafka confluent.metadata.basic.auth.user.info=sr:sr1 confluent.metadata.http.auth.credentials.provider=BASIC # The path to public keys that should be used to verify json web tokens during authentication public.key.path=/tmp/tokenPublicKey.pem # This enables anonymous access with a principal of User:ANONYMOUS confluent.schema.registry.anonymous.principal=true authentication.skip.paths=/*
ロールバインディング:
# Schema Registry Admin confluent iam rolebinding create --principal User:$USER_ADMIN_SCHEMA_REGISTRY --role ResourceOwner --resource Topic:_schemas --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_SCHEMA_REGISTRY --role SecurityAdmin --kafka-cluster-id $KAFKA_CLUSTER_ID --schema-registry-cluster-id $SCHEMA_REGISTRY_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_SCHEMA_REGISTRY --role ResourceOwner --resource Group:$SCHEMA_REGISTRY_CLUSTER_ID --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_SCHEMA_REGISTRY --role DeveloperRead --resource Topic:$LICENSE_TOPIC --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_SCHEMA_REGISTRY --role DeveloperWrite --resource Topic:$LICENSE_TOPIC --kafka-cluster-id $KAFKA_CLUSTER_ID # Client connecting to Schema Registry confluent iam rolebinding create --principal User:$USER_CLIENT_A --role ResourceOwner --resource Subject:$SUBJECT --kafka-cluster-id $KAFKA_CLUSTER_ID --schema-registry-cluster-id $SCHEMA_REGISTRY_CLUSTER_ID
Connect¶
connect-avro-distributed.properties に必要なその他の RBAC 構成
bootstrap.servers=localhost:9092 security.protocol=SASL_PLAINTEXT sasl.mechanism=OAUTHBEARER sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username="connect" password="connect1" metadataServerUrls="http://localhost:8090"; ## Connector client (producer, consumer, admin client) properties ## # Allow producer/consumer/admin client overrides (this enables per-connector principals) connector.client.config.override.policy=All producer.security.protocol=SASL_PLAINTEXT producer.sasl.mechanism=OAUTHBEARER producer.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler # Intentionally omitting `producer.sasl.jaas.config` to force connectors to use their own consumer.security.protocol=SASL_PLAINTEXT consumer.sasl.mechanism=OAUTHBEARER consumer.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler # Intentionally omitting `consumer.sasl.jaas.config` to force connectors to use their own admin.security.protocol=SASL_PLAINTEXT admin.sasl.mechanism=OAUTHBEARER admin.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler # Intentionally omitting `admin.sasl.jaas.config` to force connectors to use their own ## REST extensions: RBAC and Secret Registry ## # Installs the RBAC and Secret Registry REST extensions rest.extension.classes=io.confluent.connect.security.ConnectSecurityExtension,io.confluent.connect.secretregistry.ConnectSecretRegistryExtension ## RBAC Authentication ## # Enables basic and bearer authentication for requests made to the worker rest.servlet.initializor.classes=io.confluent.common.security.jetty.initializer.InstallBearerOrBasicSecurityHandler # The path to a directory containing public keys that should be used to verify json web tokens during authentication public.key.path=/tmp/tokenPublicKey.pem ## RBAC Authorization ## # The location of a running metadata service; used to verify that requests are authorized by the users that make them confluent.metadata.bootstrap.server.urls=http://localhost:8090 # Credentials to use when communicating with the MDS; these should usually match the ones used for communicating with Kafka confluent.metadata.basic.auth.user.info=connect:connect1 confluent.metadata.http.auth.credentials.provider=BASIC ## Secret Registry Secret Provider ## config.providers=secret config.providers.secret.class=io.confluent.connect.secretregistry.rbac.config.provider.InternalSecretConfigProvider config.providers.secret.param.master.encryption.key=password1234 config.providers.secret.param.kafkastore.bootstrap.servers=localhost:9092 config.providers.secret.param.kafkastore.security.protocol=SASL_PLAINTEXT config.providers.secret.param.kafkastore.sasl.mechanism=OAUTHBEARER config.providers.secret.param.kafkastore.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler config.providers.secret.param.kafkastore.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username="connect" password="connect1" metadataServerUrls="http://localhost:8090";
ソースコネクター に必要なその他の RBAC 構成
producer.override.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username="connector" password="connector1" metadataServerUrls="http://localhost:8090";
シンクコネクター に必要なその他の RBAC 構成
consumer.override.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username="connector" password="connector1" metadataServerUrls="http://localhost:8090";
ロールバインディング:
# Connect Admin confluent iam rolebinding create --principal User:$USER_ADMIN_CONNECT --role ResourceOwner --resource Topic:connect-configs --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_CONNECT --role ResourceOwner --resource Topic:connect-offsets --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_CONNECT --role ResourceOwner --resource Topic:connect-statuses --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_CONNECT --role ResourceOwner --resource Group:connect-cluster --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_CONNECT --role ResourceOwner --resource Topic:_confluent-secrets --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_CONNECT --role ResourceOwner --resource Group:secret-registry --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_CONNECT --role SecurityAdmin --kafka-cluster-id $KAFKA_CLUSTER_ID --connect-cluster-id $CONNECT_CLUSTER_ID # Connector Submitter confluent iam rolebinding create --principal User:$USER_CONNECTOR_SUBMITTER --role ResourceOwner --resource Connector:$CONNECTOR_NAME --kafka-cluster-id $KAFKA_CLUSTER_ID --connect-cluster-id $CONNECT_CLUSTER_ID # Connector confluent iam rolebinding create --principal User:$USER_CONNECTOR --role ResourceOwner --resource Topic:$TOPIC2_AVRO --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_CONNECTOR --role ResourceOwner --resource Subject:${TOPIC2_AVRO}-value --kafka-cluster-id $KAFKA_CLUSTER_ID --schema-registry-cluster-id $SCHEMA_REGISTRY_CLUSTER_ID
REST Proxy¶
kafka-rest.properties に必要なその他の RBAC 構成
# Configure connections to other Confluent Platform services bootstrap.servers=localhost:9092 schema.registry.url=http://localhost:8081 client.security.protocol=SASL_PLAINTEXT client.sasl.mechanism=OAUTHBEARER client.security.protocol=SASL_PLAINTEXT client.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler client.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username="clientrp" password="clientrp1" metadataServerUrls="http://localhost:8090"; kafka.rest.resource.extension.class=io.confluent.kafkarest.security.KafkaRestSecurityResourceExtension rest.servlet.initializor.classes=io.confluent.common.security.jetty.initializer.InstallBearerOrBasicSecurityHandler public.key.path=/tmp/tokenPublicKey.pem # Credentials to use with the MDS confluent.metadata.bootstrap.server.urls=http://localhost:8090 confluent.metadata.basic.auth.user.info=rp:rp1 confluent.metadata.http.auth.credentials.provider=BASIC
ロールバインディング:
# REST Proxy Admin: role bindings for license management, no additional administrative rolebindings required because REST Proxy just does impersonation confluent iam rolebinding create --principal User:$USER_CLIENT_RP --role DeveloperRead --resource Topic:$LICENSE_TOPIC --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_CLIENT_RP --role DeveloperWrite --resource Topic:$LICENSE_TOPIC --kafka-cluster-id $KAFKA_CLUSTER_ID # Producer/Consumer confluent iam rolebinding create --principal User:$USER_CLIENT_RP --role ResourceOwner --resource Topic:$TOPIC3 --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_CLIENT_RP --role DeveloperRead --resource Group:$CONSUMER_GROUP --kafka-cluster-id $KAFKA_CLUSTER_ID
ksqlDB¶
ksql-server.properties に必要なその他の RBAC 構成
bootstrap.servers=localhost:9092 security.protocol=SASL_PLAINTEXT sasl.mechanism=OAUTHBEARER sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required username="ksqlDBserver" password="ksqlDBserver1" metadataServerUrls="http://localhost:8090"; # Specify KSQL service id used to bind user/roles to this cluster ksql.service.id=rbac-ksql # Enable KSQL authorization and impersonation ksql.security.extension.class=io.confluent.ksql.security.KsqlConfluentSecurityExtension # Enable KSQL Basic+Bearer authentication ksql.authentication.plugin.class=io.confluent.ksql.security.VertxBearerOrBasicAuthenticationPlugin public.key.path=/tmp/tokenPublicKey.pem # Metadata URL and access credentials confluent.metadata.bootstrap.server.urls=http://localhost:8090 confluent.metadata.http.auth.credentials.provider=BASIC confluent.metadata.basic.auth.user.info=ksqlDBserver:ksqlDBserver1 # Credentials for Schema Registry access ksql.schema.registry.url=http://localhost:8081 ksql.schema.registry.basic.auth.user.info=ksqlDBserver:ksqlDBserver1
ロールバインディング:
# ksqlDB Server Admin confluent iam rolebinding create --principal User:$USER_ADMIN_KSQLDB --role ResourceOwner --resource Topic:_confluent-ksql-${KSQL_SERVICE_ID}_command_topic --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_KSQLDB --role ResourceOwner --resource Topic:${KSQL_SERVICE_ID}ksql_processing_log --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_ADMIN_KSQLDB --role SecurityAdmin --kafka-cluster-id $KAFKA_CLUSTER_ID --ksql-cluster-id $KSQL_SERVICE_ID confluent iam rolebinding create --principal User:$USER_ADMIN_KSQLDB --role ResourceOwner --resource KsqlCluster:ksql-cluster --kafka-cluster-id $KAFKA_CLUSTER_ID --ksql-cluster-id $KSQL_SERVICE_ID # ksqlDB CLI queries confluent iam rolebinding create --principal User:${USER_KSQLDB} --role DeveloperWrite --resource KsqlCluster:ksql-cluster --kafka-cluster-id $KAFKA_CLUSTER_ID --ksql-cluster-id $KSQL_SERVICE_ID confluent iam rolebinding create --principal User:${USER_KSQLDB} --role DeveloperRead --resource Topic:$TOPIC1 --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_KSQLDB} --role DeveloperRead --resource Group:_confluent-ksql-${KSQL_SERVICE_ID} --prefix --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_KSQLDB} --role DeveloperRead --resource Topic:${KSQL_SERVICE_ID}ksql_processing_log --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_ADMIN_KSQLDB} --role DeveloperRead --resource Group:_confluent-ksql-${KSQL_SERVICE_ID} --prefix --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_ADMIN_KSQLDB} --role DeveloperRead --resource Topic:$TOPIC1 --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_ADMIN_KSQLDB} --role ResourceOwner --resource TransactionalId:${KSQL_SERVICE_ID} --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_KSQLDB} --role ResourceOwner --resource Topic:_confluent-ksql-${KSQL_SERVICE_ID}transient --prefix --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_ADMIN_KSQLDB} --role ResourceOwner --resource Topic:_confluent-ksql-${KSQL_SERVICE_ID}transient --prefix --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_KSQLDB} --role ResourceOwner --resource Topic:${CSAS_STREAM1} --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_ADMIN_KSQLDB} --role ResourceOwner --resource Topic:${CSAS_STREAM1} --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_KSQLDB} --role ResourceOwner --resource Topic:${CTAS_TABLE1} --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_ADMIN_KSQLDB} --role ResourceOwner --resource Topic:${CTAS_TABLE1} --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:${USER_ADMIN_KSQLDB} --role ResourceOwner --resource Topic:_confluent-ksql-${KSQL_SERVICE_ID} --prefix --kafka-cluster-id $KAFKA_CLUSTER_ID
Control Center¶
control-center-dev.properties に必要なその他の RBAC 構成
confluent.controlcenter.rest.authentication.method=BEARER confluent.controlcenter.streams.security.protocol=SASL_PLAINTEXT public.key.path=/tmp/tokenPublicKey.pem confluent.metadata.basic.auth.user.info=c3:c31 confluent.metadata.bootstrap.server.urls=http://localhost:8090
ロールバインディング:
# Control Center Admin confluent iam rolebinding create --principal User:$USER_ADMIN_C3 --role SystemAdmin --kafka-cluster-id $KAFKA_CLUSTER_ID # Control Center user confluent iam rolebinding create --principal User:$USER_CLIENT_C --role DeveloperRead --resource Topic:$TOPIC1 --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_CLIENT_C --role DeveloperRead --resource Topic:$TOPIC2_AVRO --kafka-cluster-id $KAFKA_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_CLIENT_C --role DeveloperRead --resource Subject:${TOPIC2_AVRO}-value --kafka-cluster-id $KAFKA_CLUSTER_ID --schema-registry-cluster-id $SCHEMA_REGISTRY_CLUSTER_ID confluent iam rolebinding create --principal User:$USER_CLIENT_C --role DeveloperRead --resource Connector:$CONNECTOR_NAME --kafka-cluster-id $KAFKA_CLUSTER_ID --connect-cluster-id $CONNECT_CLUSTER_ID
一般的なロールバインディング構文¶
一般的なロールバインディング構文は、次のとおりです。
confluent iam rolebinding create --role [role name] --principal User:[username] --resource [resource type]:[resource name] --[cluster type]-cluster-id [insert cluster id]
使用可能なロールタイプとアクセス許可については、 こちら を参照してください。
リソースタイプには、Cluster、Group、Subject、Connector、TransactionalId、Topic があります。
ユーザー向けのロールのリスト¶
一般的なリスト作成構文は、次のとおりです。
confluent iam rolebinding list User:[username] [clusters and resources you want to view their roles on]
たとえば、Kafka クラスター KAFKA_CLUSTER_ID
上の User:bender
のリストを作成します。
confluent iam rolebinding list --principal User:bender --kafka-cluster-id $KAFKA_CLUSTER_ID
Docker でのサンプルの実行¶
Docker ベースの RBAC サンプルは Confluent Platform のデモ(cp-demo) です。Kafka イベントストリーミングアプリケーションの実際のデプロイを表しており、RBAC と、その他の Confluent Platform セキュリティ機能と LDAP 統合を備えています。