Authentification LDAP dans la recherche avec OpenSearch

Découvrez comment utiliser un fournisseur LDAP avec OCI Search avec OpenSearch.

Vous pouvez utiliser un fournisseur d'identités LDAP (Lightweight Directory Access Protocol) pour authentifier et autoriser les utilisateurs à contrôler l'accès aux clusters OpenSearch et aux tableaux de bord OpenSearch. La recherche avec OpenSearch prend en charge LDAP v1 et LDAP v2.

Prérequis

  • Fournisseur LDAP.
  • Cluster OpenSearch existant. Si le cluster a été créé à l'aide de l'interface de ligne de commande ou de l'API, vous devez également activer le contrôle d'accès basé sur les rôles pour le cluster, le mode de sécurité étant défini sur Enforcement.
  • Le sous-réseau sur lequel se trouve le cluster est configuré avec une règle sortante pour autoriser le trafic réseau vers le sous-réseau sur lequel se trouve le serveur LDAP.
  • Mot de passe du module d'extension de sécurité stocké en tant que clé secrète de coffre. Pour plus d'informations, reportez-vous à Gestion des coffres et à Gestion des clés secrètes. Vous devez configurer une stratégie pour autoriser le cluster OpenSearch à accéder à la clé secrète Vault dans laquelle le mot de passe est stocké, comme indiqué dans l'exemple de stratégie suivant :
    ALLOW ANY-USER TO use secret-family IN TENANCY WHERE ALL
     {request.principal.type='opensearchcluster', request.resource.compartment.id = '<customer_cluster_compartment_id>', target.secret.id = '<target-secret-ocid>'}

Obtention de l'adresse IP Nat du serveur LDAP

Pour configurer le fournisseur LDAP du cluster, vous avez besoin de l'adresse IP Nat que le cluster doit utiliser pour se connecter au serveur LDAP. Pour obtenir cette adresse, vous devez ajouter une adresse externe au cluster. Vous spécifiez l'adresse IP du serveur LDAP lorsque vous ajoutez cette connexion, et Search with OpenSearch renvoie l'adresse IP Nat.

  1. Sur la page de liste Clusters, recherchez le cluster avec lequel vous voulez travailler. Si vous avez besoin d'aide pour trouver la page de liste ou le cluster, reportez-vous à Liste des clusters OpenSearch.
  2. Dans la liste Clusters, cliquez sur le nom du cluster pour lequel vous souhaitez configurer LDAP.
  3. Sur la page de détails du cluster, cliquez sur Actions supplémentaires, puis sélectionnez Ajouter des adresses externes.
  4. Entrez l'adresse IP du serveur LDAP et cliquez sur Soumettre.
  5. Dans la section Ressources, cliquez sur Adresses externes.
  6. Copiez la valeur de la colonne Adresse IP nat de l'adresse externe que vous avez ajoutée. Il s'agit de l'adresse que vous indiquez dans l'attribut hosts de la configuration du fournisseur LDAP du cluster.

Configuration du fournisseur LDAP

Utilisez l'API de configuration du module d'extension de sécurité OpenSearch pour configurer le fournisseur LDAP. Reportez-vous à la section Connection settings pour le format de configuration LDAP.

Spécifiez l'adresse IP Nat copiée dans la section précédente pour l'attribut hosts de la configuration.

L'exemple suivant met à jour la configuration pour prendre en charge LDAP :

PUT {<cluster_endpoint>}/_plugins/_security/api/securityconfig/config
{
  "dynamic": {
    "security_mode": "ENFORCING",
    "http": {
      "anonymous_auth_enabled": false,
      "xff": {
        "enabled": false
      }
    },
    "authc": {
      "basic_internal_auth_domain": {
        "description": "Authenticate via HTTP Basic against internal users database",
        "http_enabled": true,
        "transport_enabled": true,
        "order": 1,
        "http_authenticator": {
          "type": "basic",
          "challenge": true
        },
        "authentication_backend": {
          "type": "intern"
        }
      },
      "openid_auth_domain": {
        "description": "Authenticate using OpenId connect",
        "http_enabled": true,
        "transport_enabled": true,
        "order": 0,
        "http_authenticator": {
          "type": "openid",
          "challenge": false,
          "config": {
            "subject_key": "sub",
            "roles_key": "userAppRoles",
            "openid_connect_url": "<openid_url>"
          }
        },
        "authentication_backend": {
          "type": "noop"
        }
      },          
      "ldap_auth_domain": {
        "order": 1,
        "description": "LDAP provider",
        "http_enabled": true,
        "transport_enabled": true,
        "http_authenticator": {
            "type": "basic",
            "challenge": true
        },
        "authentication_backend": {
            "type": "ldap",
            "config": {
                "hosts": ["<NAT_IPs>:389"],
                "bind_dn": "cn=admin,dc=example,dc=org",
                "passwordSercetLocation": {
                  secreteOcid: "ocid1.secret.oc1.iad.<unique_ID>",
                  secretVersion: <secret_version>
                },
                "usersearch": "(uid={0})",
                "userbase": "ou=people,dc=example,dc=org",
                "username_attribute": "uid",
                "rolebase": "ou=groups,dc=example,dc=org",
                "rolesearch": "(memberUid={1})",
                "rolename": "cn"
            }
        }
      }
    },
    "authz": {
        "ldap": {
            "http_enabled": true,
            "transport_enabled": true,
            "authorization_backend": {
                "type": "ldap",
                "config": {
                    "hosts": ["<NAT_IPs>:389"],
                    "bind_dn": "cn=admin,dc=example,dc=org",
                    "passwordSercetLocation": {
                      secreteOcid: "ocid1.secret.oc1.iad.<unique_ID>",
                      secretVersion: <secret_version>
                    },
                    "usersearch": "(uid={0})",
                    "userbase": "ou=people,dc=example,dc=org",
                    "username_attribute": "uid",
                    "rolebase": "ou=groups,dc=example,dc=org",
                    "rolesearch": "(memberUid={1})",
                    "rolename": "cn"
                }
            }
        }
    }
  }
}