Важно: Данный раздел актуален для Платформы данных в Публичном облаке и On-Premise.
Apache Knox - это шлюз для обеспечения безопасного взаимодействия с Hadoop-кластерами через RESTful API. В Knox используется несколько файлов конфигурации для настройки различных аспектов шлюза.
Список файлов конфигурации Apache Knox:
Файл топологии (<topology-file.xml>) в Apache Knox определяет конфигурацию для работы с конкретной топологией или сервисом в кластере Hadoop. Этот файл содержит настройки аутентификации, авторизации, проксирования и другие параметры, специфичные для топологии. Ниже приведен список параметров в файле топологии:
<topology>
<!-- Имя топологии -->
<name>myTopology</name>
<!-- Параметры безопасности -->
<gateway>
<provider>
<role>authentication</role>
<name>ShiroProvider</name>
<enabled>true</enabled>
<param>
<name>main.ldapRealm</name>
<value>org.apache.knox.gateway.shirorealm.KnoxLdapRealm</value>
</param>
<!-- Другие параметры безопасности могут быть добавлены здесь -->
</provider>
</gateway>
<!-- Настройки сервиса -->
<service>
<role>KNOXSSO</role>
<param>
<name>knox.sso.providerurl</name>
<value>http://knox-sso-provider:port/knox/webssoutility</value>
</param>
<!-- Другие параметры сервиса могут быть добавлены здесь -->
</service>
<!-- Настройки для каждого шлюза (gateway) -->
<gateway>
<provider>
<role>federation</role>
<name>SSOCookieProvider</name>
<enabled>true</enabled>
<!-- Другие параметры шлюза могут быть добавлены здесь -->
</provider>
<!-- Другие настройки шлюза могут быть добавлены здесь -->
</gateway>
</topology>
Обратите внимание на следующие ключевые элементы:
Файл gateway-site.xml в Apache Knox используется для конфигурации общих параметров шлюза. Эти параметры могут включать настройки безопасности, конфигурацию шлюза, параметры авторизации и другие глобальные настройки.
Ниже приведен список параметров файла gateway-site.xml:
<?xml version="1.0"?>
<configuration>
<!-- Настройки безопасности -->
<property>
<name>gateway.signing.keystore.name</name>
<value>knox-keystore</value>
<description>Имя keystore для подписи запросов</description>
</property>
<property>
<name>gateway.signing.key.alias</name>
<value>knox-key</value>
<description>Alias ключа для подписи запросов</description>
</property>
<!-- Настройки аутентификации -->
<property>
<name>gateway.provider.config.users.url</name>
<value>classpath:users.ldif</value>
<description>URL для файла с информацией о пользователях</description>
</property>
<!-- Настройки проксирования -->
<property>
<name>gateway.hostmap.bundle</name>
<value>bundle</value>
<description>Название файла с хост-мэппингами</description>
</property>
<!-- Дополнительные параметры -->
<!-- ... -->
</configuration>
В этом примере:
Файл topologies/default.xml в Apache Knox представляет собой файл конфигурации топологии по умолчанию. Этот файл используется, когда не указан конкретный файл топологии при развертывании шлюза.
Ниже приведен список параметров, которые могут использоваться в файле topologies/default.xml:
<topology>
<!-- Имя топологии по умолчанию -->
<name>default</name>
<!-- Параметры безопасности -->
<gateway>
<provider>
<role>authentication</role>
<name>ShiroProvider</name>
<enabled>true</enabled>
<param>
<name>main.ldapRealm</name>
<value>org.apache.knox.gateway.shirorealm.KnoxLdapRealm</value>
</param>
<!-- Другие параметры безопасности могут быть добавлены здесь -->
</provider>
</gateway>
<!-- Настройки сервиса (пример: Knox SSO) -->
<service>
<role>KNOXSSO</role>
<param>
<name>knox.sso.providerurl</name>
<value>http://knox-sso-provider:port/knox/webssoutility</value>
</param>
<!-- Другие параметры сервиса могут быть добавлены здесь -->
</service>
<!-- Настройки для каждого шлюза (gateway) -->
<gateway>
<provider>
<role>federation</role>
<name>SSOCookieProvider</name>
<enabled>true</enabled>
<!-- Другие параметры шлюза могут быть добавлены здесь -->
</provider>
<!-- Другие настройки шлюза могут быть добавлены здесь -->
</gateway>
</topology>
В этом примере:
Файл gateway-log4j.properties используется для настройки системы логирования(Log4j) в Apache Knox. Этот файл определяет, какие сообщения будут записаны в лог-файлы, а также конфигурацию уровней логирования для различных компонентов Knox.
Список параметров, которые могут быть использованы в файле gateway-log4j.properties:
# Уровень логирования для корневого логгера (может быть INFO, DEBUG, ERROR и т. д.)
log4j.rootLogger=INFO, CONSOLE, FILE
# Конфигурация вывода на консоль
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Конфигурация вывода в файл
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=/var/log/knox/gateway.log
log4j.appender.FILE.MaxFileSize=10MB
log4j.appender.FILE.MaxBackupIndex=10
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Уровень логирования для определенных пакетов или классов
log4j.logger.org.apache.knox.gateway=DEBUG
log4j.logger.org.apache.hadoop=INFO
В этом примере:
Файл users-ldif.txt в Apache Knox используется для хранения информации о пользователях в формате LDIF (LDAP Data Interchange Format). Этот файл используется для настройки аутентификации Knox, особенно в сценариях интеграции с LDAP (Lightweight Directory Access Protocol). Пример содержимого файла users-ldif.txt может выглядеть следующим образом:
ldif
dn: uid=admin,ou=people,dc=hadoop,dc=apache,dc=org
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: admin
userPassword: {SHA}nU4TKAp1kmBZfeCOmvCp/G/6KtM=
dn: uid=user1,ou=people,dc=hadoop,dc=apache,dc=org
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: user1
userPassword: {SHA}nU4TKAp1kmBZfeCOmvCp/G/6KtM=
dn: uid=user2,ou=people,dc=hadoop,dc=apache,dc=org
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: user2
userPassword: {SHA}nU4TKAp1kmBZfeCOmvCp/G/6KtM=
В этом примере:
Примечание:
Файл gateway-client-trust.jks - это хранилище доверенных сертификатов (Java Keystore), используемое в Apache Knox для хранения сертификатов доверенных центров сертификации (CA) или самоподписанных сертификатов, которые могут быть использованы для проверки подлинности серверов, с которыми Knox взаимодействует.
В данном контексте, файл gateway-client-trust.jks может содержать сертификаты CA или сертификаты, которые представляют собой "доверенные" для Knox. Эти сертификаты используются Knox для проверки подлинности серверов, с которыми он общается.
Пример команды (bash) для добавления сертификата в Java Keystore:
keytool -import -trustcacerts -keystore gateway-client-trust.jks -storepass <password> -noprompt -file <certificate_file>
Где:
Если вы хотите узнать более подробную информацию о содержимом gateway-client-trust.jks, например, список сертификатов, вы можете использовать следующую команду (bash):
keytool -list -v -keystore gateway-client-trust.jks -storepass <password>
Где <password> - это пароль для доступа к хранилищу.
Файл gateway.jks - это еще одно Java Keystore-хранилище в Apache Knox. В отличие от gateway-client-trust.jks, gateway.jks обычно содержит сертификаты и закрытые ключи, используемые для подписи запросов, генерации SSL/TLS-сертификатов и других операций, связанных с безопасностью и аутентификацией.
Пример команды (bash) для добавления закрытого ключа и соответствующего ему сертификата в Java Keystore:
keytool -importkeystore -srckeystore <private_key_file> -srcstoretype PKCS12 -destkeystore gateway.jks -deststoretype JKS
Где:
Вы также можете добавлять сертификаты в gateway.jks с использованием команды keytool (bash), аналогичной той, которая предоставлена для gateway-client-trust.jks.
keytool -import -trustcacerts -keystore gateway.jks -storepass <password> -noprompt -file <certificate_file>
Где:
Оба эти файла: gateway.jks и gateway-client-trust.jks, играют важную роль в обеспечении безопасности Apache Knox, позволяя ему взаимодействовать с другими компонентами кластера Hadoop по защищенным каналам связи. Важно управлять их безопасностью, храня пароли в безопасном месте и обеспечивая ограниченный доступ к файлам.
Файл krb5.conf используется для настройки библиотеки Kerberos и определения параметров аутентификации в системе. В контексте Apache Knox и других компонентов, поддерживающих аутентификацию Kerberos, этот файл может использоваться для указания параметров, необходимых для взаимодействия с KDC (Key Distribution Center) и выполнения аутентификации Kerberos.
Пример содержимого файла krb5.conf:
ini
[libdefaults]
default_realm = EXAMPLE.COM
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_ccache_name = /tmp/krb5cc_%{uid}
[realms]
EXAMPLE.COM = {
kdc = kdc.example.com
admin_server = kdc.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
В этом примере:
В секции [realms] указываются KDC и административный сервер для каждой области.
В секции [domain_realm] устанавливаются соответствия между доменами и областями Kerberos.
Файл krb5.conf используется для настройки библиотеки Kerberos и определения параметров аутентификации в системе. В контексте Apache Knox и других компонентов, поддерживающих аутентификацию Kerberos, этот файл может использоваться для указания параметров, необходимых для взаимодействия с KDC (Key Distribution Center) и выполнения аутентификации Kerberos.
Пример содержимого файла krb5.conf:
ini
[libdefaults]
default_realm = EXAMPLE.COM
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_ccache_name = /tmp/krb5cc_%{uid}
[realms]
EXAMPLE.COM = {
kdc = kdc.example.com
admin_server = kdc.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
В этом примере:
В секции [realms] указываются KDC и административный сервер для каждой области.
В секции [domain_realm] устанавливаются соответствия между доменами и областями Kerberos.