Configurez l'authentification Lightweight Directory Access Protocol (LDAP) pour une instance Alibaba Cloud Elasticsearch afin que les utilisateurs LDAP disposant de rôles attribués puissent y accéder.
Prérequis
Assurez-vous d'avoir rempli les conditions suivantes :
-
Vous avez créé une instance Alibaba Cloud Elasticsearch. Cette rubrique utilise une instance de version 6,7 à titre d'exemple.
Pour plus d'informations, consultez la page Créer une instance Alibaba Cloud Elasticsearch.
-
Vous avez configuré un service LDAP et des données utilisateur dans le même VPC que votre instance Alibaba Cloud Elasticsearch. Cette rubrique utilise OpenLDAP 2.4.44 à titre d'exemple.
Pour plus de détails, consultez la documentation officielle LDAP. Exemple de données LDAP : lorsqu'elles sont consultées via phpLDAPadmin, le nœud racine de l'arborescence de répertoire est
dc=yaobili,dc=com, qui contient plusieurs unités organisationnelles (ou) et entrées utilisateur (cn).La configuration par unité organisationnelle (ou) n'est pas prise en charge. Seuls les attributs cn et group sont pris en charge.
Notes d'utilisation
Depuis octobre 2020, Alibaba Cloud Elasticsearch a ajusté son architecture réseau dans certaines régions, ce qui affecte les instances nouvellement créées :
Pour les instances créées sur l'ancienne architecture réseau, vous pouvez utiliser SNAT ou un proxy NGINX géré par vos soins pour accéder à Internet.
Pour les instances créées sur la nouvelle architecture réseau, des restrictions réseau s'appliquent à la fonctionnalité LDAP. Vous pouvez utiliser PrivateLink pour établir une connexion privée entre les VPC. Pour savoir comment configurer PrivateLink, consultez la page Configurer une connexion privée pour une instance. Si vous devez accéder à Internet, vous devez configurer un proxy NGINX pour transférer les requêtes.
Pour les instances créées sur l'ancienne architecture réseau, Alibaba Cloud Elasticsearch prend en charge l'authentification LDAP uniquement dans une seule zone de disponibilité.
Pour plus d'informations sur l'architecture réseau, consultez la page [[Avis] Ajustement de l'architecture réseau](t2521816.xdita#).
Procédure
Étape 1 : Obtenir un nom de domaine de point de terminaison (facultatif)
Les clusters Elasticsearch créés en octobre 2020 ou ultérieurement sont déployés sur la nouvelle architecture réseau. Ces clusters Elasticsearch résident dans le VPC du compte de service Elasticsearch. Si votre cluster Elasticsearch est déployé sur la nouvelle architecture réseau, vous devez utiliser le service PrivateLink pour établir une connexion privée entre le VPC et votre propre VPC. Ensuite, obtenez le nom de domaine du point de terminaison associé pour une utilisation ultérieure. Pour obtenir le nom de domaine d'un point de terminaison, procédez comme suit :
-
Créez une instance Classic Load Balancer (CLB) qui prend en charge le service PrivateLink et réside dans le même VPC que le cluster Elasticsearch créé.
Pour plus d'informations, consultez la section Configurer une connexion PrivateLink.
-
Configurez l'instance d'équilibreur de charge.
Lors de la configuration de l'instance, définissez le serveur qui héberge votre service LDAP comme serveur backend et le port d'écoute sur 389.
Pour plus d'informations, consultez la section Configurer une connexion PrivateLink.
-
Créez un service de point de terminaison.
Pour plus d'informations, consultez la section Configurer une connexion PrivateLink.
-
Configurez une connexion privée au cluster Elasticsearch.
Pour plus d'informations, consultez la section Configurer une connexion PrivateLink.
-
Obtenez le nom de domaine du point de terminaison utilisé pour accéder au service de point de terminaison.
Pour plus d'informations, consultez la section Configurer une connexion PrivateLink.
RemarqueNotez le nom de domaine obtenu, car il sera utilisé dans les configurations ultérieures.
Étape 2 : Configurer l'authentification LDAP
X-Pack prend en charge les modes d'authentification LDAP suivants :
Mode de recherche d'utilisateur
Mode de modèle DN
Le mode de recherche d'utilisateur est la méthode la plus courante. Dans ce mode, un utilisateur privilégié recherche le nom distinctif (DN) de l'utilisateur en cours d'authentification dans l'annuaire LDAP, en se basant sur le nom d'utilisateur et un filtre d'attribut LDAP. Une fois le DN trouvé, X-Pack se lie à l'annuaire avec le DN et le mot de passe pour terminer l'authentification. Pour plus d'informations, consultez la page Configurer un domaine LDAP.
Ajoutez la configuration suivante au fichier YML d'Elasticsearch. Pour plus d'informations, consultez la page Configurer les paramètres YML. La configuration varie selon la version de l'instance.
-
Version 6,7
xpack.security.authc.realms.ldap1.type: ldap xpack.security.authc.realms.ldap1.order: 2 xpack.security.authc.realms.ldap1.url: "ldap://ep-bp1dhpobznlgjhj9****-cn-hangzhou-i.epsrv-bp1q8tcj2jjt5dwr****.cn-hangzhou.privatelink.aliyuncs.com:389" xpack.security.authc.realms.ldap1.bind_dn: "admin@yaobili.com" xpack.security.authc.realms.ldap1.bind_password: "yourPassword" xpack.security.authc.realms.ldap1.user_search.base_dn: "dc=yaobili,dc=com" xpack.security.authc.realms.ldap1.user_search.filter: "(cn={0})" xpack.security.authc.realms.ldap1.group_search.base_dn: "dc=yaobili,dc=com" xpack.security.authc.realms.ldap1.unmapped_groups_as_roles: false -
Version 7.10 et ultérieures
xpack.security.authc.realms.ldap.ldap1.order: 2 xpack.security.authc.realms.ldap.ldap1.url: "ldap://ep-bp1dhpobznlgjhj9****-cn-hangzhou-i.epsrv-bp1q8tcj2jjt5dwr****.cn-hangzhou.privatelink.aliyuncs.com:389" xpack.security.authc.realms.ldap.ldap1.bind_dn: "admin@yaobili.com" xpack.security.authc.realms.ldap.ldap1.bind_password: "yourPassword" xpack.security.authc.realms.ldap.ldap1.user_search.base_dn: "dc=yaobili,dc=com" xpack.security.authc.realms.ldap.ldap1.user_search.filter: "(cn={0})" xpack.security.authc.realms.ldap.ldap1.group_search.base_dn: "dc=yaobili,dc=com" xpack.security.authc.realms.ldap.ldap1.unmapped_groups_as_roles: false
|
Paramètre |
Description |
|
type |
Le type de domaine. Ce paramètre doit être défini sur ldap. |
|
order |
La priorité du domaine. Une valeur plus faible indique une priorité plus élevée. Si vous configurez plusieurs domaines, nous vous recommandons de définir ce paramètre pour contrôler l'ordre d'évaluation. Remarque
Pour la version 8.x, la valeur order doit être unique. Nous vous recommandons de définir la valeur sur 2. |
|
url |
L'URL et le port du serveur LDAP. Le protocole ldap indique une connexion standard sur le port 389. Le protocole ldaps indique une connexion sécurisée via SSL sur le port 636. Important
Pour la nouvelle architecture réseau, vous devez définir ce paramètre sur nom de domaine du point de terminaison:port. Vous pouvez obtenir le endpoint domain name à l'Étape 1 : Obtenir un nom de domaine de point de terminaison (facultatif). Cette rubrique utilise |
|
bind_dn |
Le DN de l'utilisateur utilisé pour se lier à LDAP et effectuer des recherches. Ce paramètre s'applique uniquement au mode de recherche d'utilisateur. |
|
bind_password |
Le mot de passe de l'utilisateur utilisé pour se lier à l'annuaire LDAP. |
|
user_search.base_dn |
Le DN du conteneur pour les recherches d'utilisateurs. |
|
group_search.base_dn |
Le DN du conteneur utilisé pour rechercher les groupes auxquels appartient un utilisateur. Si ce paramètre n'est pas spécifié, Elasticsearch recherche l'attribut spécifié par user_group_attribute pour déterminer l'appartenance au groupe. |
|
unmapped_groups_as_roles |
La valeur par défaut est false. Si ce paramètre est défini sur true, les noms de tous les groupes LDAP non mappés sont utilisés comme noms de rôles et attribués à l'utilisateur. |
Pour plus d'informations sur les paramètres, consultez la page Paramètres de sécurité dans Elasticsearch.
Étape 3 : Mapper les comptes d'utilisateurs LDAP aux rôles
-
Connectez-vous à la console Kibana de votre cluster Elasticsearch.
Pour obtenir des instructions, consultez la page Se connecter à la console Kibana.
RemarqueLes exemples présentés ici utilisent Elasticsearch V6.7.0. Les opérations peuvent varier légèrement pour d'autres versions.
Dans le volet de navigation de gauche, cliquez sur Developer Tools.
-
Dans la Console, exécutez la commande suivante pour mapper les utilisateurs LDAP correspondant à
zhang*au rôlesuperuser.Version 8.x
POST _security/role_mapping/ldap_super_user1?pretty { "roles": [ "superuser" ], "enabled": true, "rules": { "any": [ { "field": { "username": "zhang*" } } ] } }Autres versions
POST _xpack/security/role_mapping/ldap_super_user1?pretty { "roles": [ "superuser" ], "enabled": true, "rules": { "any": [ { "field": { "username": "zhang*" } } ] } }Pour plus d'informations, consultez la documentation relative à votre version Elasticsearch.
Étape 4 : Vérifier les résultats
Connectez-vous à la console Kibana de votre instance Alibaba Cloud Elasticsearch en tant qu'utilisateur
zhang*autorisé.Dans le volet de navigation de gauche, cliquez sur Developer Tools.
-
Dans la Console, exécutez la commande suivante pour vérifier que l'utilisateur
zhang*dispose des autorisations nécessaires pour modifier les paramètres du cluster.PUT _cluster/settings { "persistent": { "action.auto_create_index": true } }En cas de succès, la commande renvoie la réponse suivante :
{ "acknowledged" : true, "persistent" : { "action" : { "auto_create_index" : "true" } }, "transient" : { } }