Authentification LDAP dans la recherche avec OpenSearch

Voyez comment utiliser un fournisseur LDAP avec la recherche OCI à l'aide de 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 grappes OpenSearch et aux tableaux de bord OpenSearch. La recherche avec OpenSearch prend en charge LDAP v1 et LDAP v2.

Préalables

  • Fournisseur LDAP.
  • Grappe OpenSearch existante. Si la grappe a été créée à 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 la grappe, le mode de sécurité étant réglé à Application.
  • Le sous-réseau où se trouve la grappe est configuré avec une règle de trafic sortant pour autoriser le trafic réseau vers le sous-réseau où se trouve le serveur LDAP.
  • Mot de passe du plugiciel de sécurité stocké en tant que clé secrète du service de chambre forte. Pour plus d'informations, voir Gestion des chambres fortes et Gestion des clés secrètes. Vous devez configurer une politique pour permettre à la grappe OpenSearch d'accéder à la clé secrète de la chambre forte où le mot de passe est stocké, comme illustré dans l'exemple de politique 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 pour le serveur LDAP

Pour configurer le fournisseur LDAP pour le cluster, vous devez utiliser l'adresse IP Nat pour le cluster afin de vous connecter au serveur LDAP. Pour obtenir cette adresse, vous devez ajouter un point d'extrémité externe à la grappe. Vous spécifiez l'adresse IP du serveur LDAP lorsque vous ajoutez cette connexion, et Search with OpenSearch retourne l'adresse IP Nat.

  1. Dans la page de liste Grappes, recherchez la grappe OpenSearch avec laquelle vous voulez travailler. Si vous avez besoin d'aide pour trouver la page de liste ou la grappe, voir Liste des grappes OpenSearch.
  2. Dans la liste Grappes, cliquez sur le nom de la grappe pour laquelle vous voulez configurer LDAP.
  3. Dans la page des détails de la grappe, cliquez sur Actions supplémentaires, puis sélectionnez Ajouter des points d'extrémité externes.
  4. Entrez l'adresse IP du serveur LDAP et cliquez sur Soumettre.
  5. Dans la section Ressources, cliquez sur Points d'extrémité externes.
  6. Copiez la valeur dans la colonne Nat IP pour le point d'extrémité externe que vous avez ajouté. Il s'agit de l'adresse que vous spécifiez dans l'attribut hosts de la configuration du fournisseur LDAP pour la grappe.

Configurer le fournisseur LDAP

Utilisez l'API de configuration du plugiciel de sécurité OpenSearch pour configurer le fournisseur LDAP. Voir Paramètres de connexion pour le format de configuration LDAP.

Spécifiez l'adresse IP nationale copiée dans la section précédente pour l'attribut hosts dans 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"
                }
            }
        }
    }
  }
}