OpenDistro Настраиваем авторизацию через LDAP

  • 29 November 2019
  • taku

Настраиваем авторизацию через LDAP
 
1) Конфигурируем securityconfig/config.yml для авторизации через LDAP
1.1) Правим конфигу на всех серверах OD(OpenDistro)
mcedit /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/config.yml

opendistro_security:
dynamic:
http:
anonymous_auth_enabled: false
xff:
enabled: false
internalProxies: '192\.168\.0\.10|192\.168\.0\.11' # regex pattern
remoteIpHeader: 'x-forwarded-for'
proxiesHeader: 'x-forwarded-by'
authc:
kerberos_auth_domain:
http_enabled: false
transport_enabled: false
order: 6
http_authenticator:
type: kerberos
challenge: true
config:
krb_debug: false
strip_realm_from_principal: true
authentication_backend:
type: noop
basic_internal_auth_domain:
http_enabled: true
transport_enabled: true
order: 4
http_authenticator:
type: basic
challenge: true
authentication_backend:
type: intern
proxy_auth_domain:
http_enabled: false
transport_enabled: false
order: 3
http_authenticator:
type: proxy
challenge: false
config:
user_header: "x-proxy-user"
roles_header: "x-proxy-roles"
authentication_backend:
type: noop
jwt_auth_domain:
http_enabled: false
transport_enabled: false
order: 0
http_authenticator:
type: jwt
challenge: false
config:
signing_key: "base64 encoded HMAC key or public RSA/ECDSA pem key"
jwt_header: "Authorization"
jwt_url_parameter: null
roles_key: null
subject_key: null
authentication_backend:
type: noop
clientcert_auth_domain:
http_enabled: false
transport_enabled: false
order: 2
http_authenticator:
type: clientcert
config:
username_attribute: cn #optional, if omitted DN becomes username
challenge: false
authentication_backend:
type: noop
ldap:
http_enabled: true
transport_enabled: false
order: 1
http_authenticator:
type: basic
challenge: false
authentication_backend:
# LDAP authentication backend (authenticate users against a LDAP or Active Directory)
type: ldap
config:
enable_ssl: false
enable_start_tls: false
enable_ssl_client_auth: false
verify_hostnames: true
hosts:
 - 10.120.30.1:389 # здесь прописываем LDAP соединения
 - 10.120.42.1:389 # здесь прописываем LDAP соединения
bind_dn: cn=adminbind,CN=Users,dc=xx,dc=yyy,dc=ru
password: Здесь Пароль от учетки
userbase: 'OU=CA_Users,OU=CA,dc=xx,dc=yyy,dc=ru'
# Filter to search for users (currently in the whole subtree beneath userbase)
# {0} is substituted with the username
usersearch: '(sAMAccountName={0})'
# Use this attribute from the user as username (if not set then DN is used)
username_attribute: "cn"
authz:
roles_from_myldap:
http_enabled: true
transport_enabled: false
authorization_backend:
# LDAP authorization backend (gather roles from a LDAP or Active Directory, you have to configure the above LDAP authentication backend settings too)
type: ldap
config:
enable_ssl: false
enable_start_tls: false
enable_ssl_client_auth: false
verify_hostnames: true
hosts:
 - 10.120.30.1:389 # здесь прописываем LDAP соединения
 - 10.120.42.1:389 # здесь прописываем LDAP соединения
bind_dn: "cn=adminbind,CN=Users,dc=xx,dc=yyy,dc=ru"
password: "Здесь Пароль от учетки"
rolebase: 'OU=CA_Groups,OU=Exch2003,dc=xx,dc=yyy,dc=ru'
# Filter to search for roles (currently in the whole subtree beneath rolebase)
# {0} is substituted with the DN of the user
# {1} is substituted with the username
# {2} is substituted with an attribute value from user's directory entry, of the authenticated user. Use userroleattribute to specify the name of the attribute
rolesearch: '(member={0})'
# Specify the name of the attribute which value should be substituted with {2} above
userroleattribute: null
# Roles as an attribute of the user entry
#userrolename: disabled
userrolename: memberOf
# The attribute in a role entry containing the name of that role, Default is "name".
# Can also be "dn" to use the full DN as rolename.
rolename: cn
# Resolve nested roles transitive (roles which are members of other roles and so on ...)
resolve_nested_roles: true
userbase: 'OU=CA_Users,OU=CA,dc=xx,dc=yyy,dc=ru'
# Filter to search for users (currently in the whole subtree beneath userbase)
# {0} is substituted with the username
usersearch: '(uid={0})'
# Skip users matching a user name, a wildcard or a regex pattern
#skip_users:
# - 'cn=Michael Jackson,ou*people,o=TEST'
# - '/\S*/'
roles_from_another_ldap:
enabled: false
authorization_backend:
type: ldap
#config goes here ...

Параметры для bind_dn: можно найти через LdapAdmin для этого создаем подключение сразу с учеткой от которой будет осуществляться подключение на ldap сервер в данном случае 10.120.30.1(это балансировщик)
 
Через поиск находим точный путь требуемого пользователя
Параметры для userbase: пользовательский каталог, находим месторасположение пользователей-по аналогии берем тестового пользователя и через поиск так же находим его с полным путем.
Параметры для rolebase: каталог групп пользователей для которых ниже создаем права

1.2) после обновляем конфигу security на сервера opendistro обновить нужно на всех серверах Elastic, где -h vm01 (адрес первого сервера в кластере)
/usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -icl -nhnv -cacert /etc/elasticsearch/root-ca.pem -cert /etc/elasticsearch/kirk.pem -key /etc/elasticsearch/kirk-key.pem -h vm01 -f /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/config.yml -t config
2) настраиваем разрешения
2.1) заходим под админом в кибану открываем Security раздел Roles
2.1.2) создаем Роль "RoleAS02" с необходимыми правами и разрешениями на Tenant
только для индексов системы AS02
 
2.2) заходим под админом в кибану открываем Security раздел Role Mappings
Создаем новый Role Mappings
выбираем ранее созданную RoleAS02
Раздел Backend roles, заполняем той группой доступ котороый требуется предоставить для индексов as02
 
ВАЖНО!Для создания группы администраторов ELK необходимо
добавить группу домена (Администраторы ELK и MegaAdmins) в фаил
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml
all_access:
readonly: true
backendroles:
- admin
- Администраторы ELK
- MegaAdmins
а потом запустить применение конфигурационных файлов ниже пример или коммандой выше с указанием конкретно node
sh /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig -cn ct01 -arc -nhnv -cacert /etc/elasticsearch/root-ca.pem -cert /etc/elasticsearch/kirk.pem -key /etc/elasticsearch/kirk-key.pem
Важно! при выполнении комманды применяются все конфигурационные файлы в securityconfig соответственно все перезапишется например пароль от логстеша даже если его меняли в индексе чере кибану, поэтому три пользователя admin, kibanaserver, logstash должны иметь валидный hash с паролем и hash должен храниться в
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml

Комментарии

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.