Files
tf_provider/artifacts/api-meta/dev/operations/116/169.json
T
2026-06-30 15:46:41 +04:00

1 line
15 KiB
JSON

{"queryDurationMs":56,"svcOperation":{"svcOperationId":169,"operation":"modify_user","url":"https://jenkins-master1.adl.nubes.ru/job/cloudServicesDev/job/k8s/job/Kafka/job/modify_user/job/","descr":null,"man":"# Инструкция по управлению пользователями Apache Kafka.<br/><br/>---<br/><br/>## 1. Общая информация<br/><br/>Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру.<br/>Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам.<br/>Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры создания пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 3. Параметры модификации пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при модификации пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 4. Параметры удалении пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при удалении пользователя:<br/><br/>* **Имя пользователя**<br/> Имя удаляемого пользователя.<br/> Пример: `username-admin`<br/><br/>## 5. Выходные параметры<br/><br/>После успешного создания пользователя платформа возвращает параметры, необходимые для подключения:<br/><br/>* **ca.crt**<br/> Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении.<br/> Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **ca.p12**<br/> PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **ca.password**<br/> Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>* **user.crt**<br/> Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka.<br/> Используется совместно с приватным ключом `user.key` для аутентификации.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **user.key**<br/> Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo '&lt;содержание поля&gt;' | base64 -d &gt; &lt;название&gt;.key<br/> ```<br/><br/>* **user.p12**<br/> PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo &quot;&lt;содержание поля&gt;&quot; | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **user.password**<br/> Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>Эти параметры используются для настройки TLS-подключения.<br/><br/>---<br/><br/>## 6. Пример конфигурации клиента внутри кластера<br/><br/>Пример пода:<br/><br/>```yaml<br/>apiVersion: v1<br/>kind: Pod<br/>metadata:<br/> name: kafka-4<br/>spec:<br/> volumes:<br/> - name: work<br/> emptyDir: {}<br/> containers:<br/> - name: kcat<br/> image: quay.io/strimzi/kafka:latest-kafka-4.0.0<br/> command: [&quot;sleep&quot;, &quot;5600&quot;]<br/> volumeMounts:<br/> - name: work<br/> mountPath: /work<br/> restartPolicy: Never<br/>```<br/><br/>Создаём под и сохраняем сертификаты:<br/><br/>```bash<br/>kubectl cp user.p12 kafka-4:/work/<br/>kubectl cp ca.p12 kafka-4:/work/<br/>```<br/><br/>Создаём файлы конфигурации:<br/><br/>```bash<br/>cat &gt; /work/user-read.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>```bash<br/>cat &gt; /work/user-write.properties &lt;&lt;'EOF'<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user-write.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>Листинг доступных топиков:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-topics.sh \\<br/> --bootstrap-server kafkak8s-bootstrap-external:9093 \\<br/> --command-config /work/user-read.properties \\<br/> --list<br/>```<br/><br/>Запись сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-producer.sh \\<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \\<br/> --topic &lt;topic&gt; \\<br/> --producer.config /work/user-write.properties<br/>```<br/><br/>Чтение сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-consumer.sh \\<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \\<br/> --topic &lt;topic&gt; \\<br/> --from-beginning \\<br/> --group &lt;group&gt; \\<br/> --consumer.config /work/user-read.properties \\<br/> --max-messages 50<br/>```<br/><br/>---<br/><br/>## 7. Пример внешнего подключения с использованием **kcat**<br/><br/>**Листинг топиков**<br/><br/>```bash<br/>kcat -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \\<br/> -L \\<br/> -X security.protocol=SSL \\<br/> -X ssl.ca.location=./ca.crt \\<br/> -X ssl.certificate.location=./user-read.crt \\<br/> -X ssl.key.location=./user-read.key \\<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Запись сообщения**<br/><br/>```bash<br/> echo &quot;hello from kcat&quot; | kcat -P \\<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \\<br/> -t write-test \\<br/> -X security.protocol=SSL \\<br/> -X ssl.ca.location=./ca.crt \\<br/> -X ssl.certificate.location=./user-write.crt \\<br/> -X ssl.key.location=./user-write.key \\<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Чтение сообщений**<br/><br/>```bash<br/>kcat -C \\<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \\<br/> -t write-test \\<br/> -o beginning \\<br/> -q \\<br/> -X security.protocol=SSL \\<br/> -X ssl.ca.location=./ca.crt \\<br/> -X ssl.certificate.location=./user-read.crt \\<br/> -X ssl.key.location=./user-read.key \\<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>---<br/><br/><br/>## 9. Рекомендации<br/><br/>* Минимизируйте набор разрешённых операций для повышения безопасности.<br/>* Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов.<br/>* Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**.<br/>* После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам.<br/><br/>---","cfsParams":[{"svcOperationCfsParamId":539,"svcOperationCfsParam":"username","label":"Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав","dataType":"string","valueList":null,"refSvcId":null,"isRequired":true,"defaultValue":null,"defaultCompute":null,"func":null,"regex":null,"uniqueScope":null,"maxlength":null,"minlength":null,"maxvalue":null,"minvalue":null,"descr":"Пример: `username-admin`","man":null,"sort":10,"dependsOnCfsParams":null,"isModifiable":null,"isSensitive":false},{"svcOperationCfsParamId":535,"svcOperationCfsParam":"nameTopic","label":"Название топика (topic), к которому будут назначены права для указанного пользователя","dataType":"string","valueList":null,"refSvcId":null,"isRequired":false,"defaultValue":null,"defaultCompute":null,"func":null,"regex":null,"uniqueScope":null,"maxlength":null,"minlength":null,"maxvalue":null,"minvalue":null,"descr":"Пример: `orders-events`. Использовать маску нельзя(`orders*`), только полное название или `*`","man":null,"sort":null,"dependsOnCfsParams":null,"isModifiable":null,"isSensitive":false},{"svcOperationCfsParamId":536,"svcOperationCfsParam":"operations","label":"Список операций, которые разрешены пользователю на топике","dataType":"string","valueList":null,"refSvcId":null,"isRequired":false,"defaultValue":null,"defaultCompute":null,"func":null,"regex":null,"uniqueScope":null,"maxlength":null,"minlength":null,"maxvalue":null,"minvalue":null,"descr":"Пример: `Create, Describe, Read, Write`","man":null,"sort":null,"dependsOnCfsParams":null,"isModifiable":null,"isSensitive":false},{"svcOperationCfsParamId":537,"svcOperationCfsParam":"group","label":"Группа, которым разрешён доступ","dataType":"string","valueList":null,"refSvcId":null,"isRequired":false,"defaultValue":null,"defaultCompute":null,"func":null,"regex":null,"uniqueScope":null,"maxlength":null,"minlength":null,"maxvalue":null,"minvalue":null,"descr":"Пример: `order-consumers` или `*`","man":null,"sort":null,"dependsOnCfsParams":null,"isModifiable":null,"isSensitive":false},{"svcOperationCfsParamId":538,"svcOperationCfsParam":"accessHosts","label":"Список хостов, с которых разрешено подключение к Kafka","dataType":"string","valueList":null,"refSvcId":null,"isRequired":false,"defaultValue":null,"defaultCompute":null,"func":null,"regex":null,"uniqueScope":null,"maxlength":null,"minlength":null,"maxvalue":null,"minvalue":null,"descr":"Пример: `192.168.1.0/24` или `*`","man":null,"sort":null,"dependsOnCfsParams":null,"isModifiable":null,"isSensitive":false}]},"runDurationMs":56}