LDAP user and group synchronization#
You can configure SEP to synchronize users and groups from an LDAP directory.
Starburst recommends LDAP provisioning instead of LDAP group mapping for synchronizing group membership.
Note
To synchronize identities using the SCIM protocol instead, see SCIM user and group synchronization.
Configuration#
To configure LDAP user and group synchronization, complete the following steps:
Configure an internal group provider in SEP
Enable LDAP user provisioning
Configure LDAP user provisioning properties
Configure an internal group provider#
SEP requires a group provider configuration to handle imported users and
groups internally. Create an etc/group-provider.properties configuration
file on the coordinator with the following contents:
group-provider.name=starburst
The SEP group provider includes an optional cache for user and group lookups, which is enabled by default. Disable the cache with the following property:
starburst-group-provider.cache.enabled=false
When you enable caching, the following optional properties are also available:
starburst-group-provider.cache.ttl=10s
starburst-group-provider.cache.maximum-size=1024
Enable LDAP user provisioning#
To enable LDAP user provisioning, add the following property to your
coordinator’s config.properties file:
starburst.users.provisioning.type=LDAP
Configure LDAP user provisioning properties#
Set all LDAP user provisioning configuration properties in your
config.properties file.
Configure the LDAP client connection using the same properties as the Trino
LDAP password
authenticator,
but with the ldap-user-provisioning. prefix.
The following configuration properties are available:
Property |
Description |
Required |
Notes |
|---|---|---|---|
|
The base distinguished name (DN) for user searches |
Yes |
|
|
The LDAP search filter for locating user entries |
Yes |
For example, |
|
The LDAP attribute that contains the username |
Yes |
For example, |
|
The LDAP attribute that contains a unique identifier for each user |
No |
For example, |
|
The base distinguished name (DN) for group searches |
Yes |
|
|
The LDAP search filter for locating group entries |
Yes |
For example, |
|
The LDAP attribute that contains the group name |
Yes |
For example, |
|
The LDAP attribute that contains a unique identifier for each group |
No |
For example, |
|
The LDAP attribute on a group entry that lists its members |
Yes |
For example, |
|
The frequency of synchronization. Defaults to |
No |
Examples#
The following examples show complete config.properties configurations for
LDAP user provisioning.
Secure LDAP connection (LDAPS)#
The following example configures LDAP user provisioning over a secure TLS connection:
starburst.users.provisioning.type=LDAP
ldap-user-provisioning.ldap.url=ldaps://ldapserver:636
ldap-user-provisioning.ldap.ssl.keystore.path=/etc/openldap/certs/trino-coordinator-for-ldap.pem
ldap-user-provisioning.ldap.ssl.truststore.path=/etc/openldap/certs/openldap-certificate.pem
ldap-user-provisioning.ldap.bind-user=cn=admin,dc=trino,dc=testldap,dc=com
ldap-user-provisioning.ldap.bind-password=admin
ldap-user-provisioning.user-search-base=dc=trino,dc=testldap,dc=com
ldap-user-provisioning.user-search-filter=(objectClass=inetOrgPerson)
ldap-user-provisioning.user-name-attribute=cn
ldap-user-provisioning.group-search-base=dc=trino,dc=testldap,dc=com
ldap-user-provisioning.group-search-filter=(objectClass=groupOfNames)
ldap-user-provisioning.group-name-attribute=cn
ldap-user-provisioning.group-membership-attribute=member
Insecure LDAP connection#
The following example configures LDAP user provisioning over an insecure connection. Only use this configuration for testing or development environments:
starburst.users.provisioning.type=LDAP
ldap-user-provisioning.ldap.allow-insecure=true
ldap-user-provisioning.ldap.url=ldap://ldapserver:389
ldap-user-provisioning.ldap.bind-user=cn=admin,dc=trino,dc=testldap,dc=com
ldap-user-provisioning.ldap.bind-password=admin
ldap-user-provisioning.user-search-base=dc=trino,dc=testldap,dc=com
ldap-user-provisioning.user-search-filter=(objectClass=inetOrgPerson)
ldap-user-provisioning.user-name-attribute=cn
ldap-user-provisioning.group-search-base=dc=trino,dc=testldap,dc=com
ldap-user-provisioning.group-search-filter=(objectClass=groupOfNames)
ldap-user-provisioning.group-name-attribute=cn
ldap-user-provisioning.group-membership-attribute=member
ldap-user-provisioning.sync-interval=30m