LDAP-Authentifizierung in der Suche mit OpenSearch
Erfahren Sie, wie Sie einen LDAP-Provider mit OCI Search mit OpenSearch verwenden.
Mit einem Lightweight Directory Access Protocol-(LDAP-)Identitätsprovider können Sie Benutzer authentifizieren und autorisieren, um den Zugriff auf OpenSearch-Cluster und OpenSearch-Dashboards zu kontrollieren. Die Suche mit OpenSearch unterstützt LDAP v1 und LDAP v2.
Voraussetzungen
- Ein LDAP-Provider.
- Ein vorhandenes OpenSearch-Cluster. Wenn das Cluster mit der CLI oder API erstellt wurde, müssen Sie auch die rollenbasierte Zugriffskontrolle für das Cluster aktivieren, wobei der Sicherheitsmodus auf "Erzwingen" gesetzt ist.
- Das Subnetz, in dem sich das Cluster befindet, ist mit einer Egress-Regel konfiguriert, die den Netzwerktraffic zu dem Subnetz zulässt, in dem sich der LDAP-Server befindet.
- Das Kennwort für das als Vault Secret gespeicherte Sicherheits-Plug-in. Weitere Informationen finden Sie unter Vaults verwalten und Secrets verwalten. Sie müssen eine Policy konfigurieren, damit das Cluster OpenSearch auf das Vault Secret zugreifen kann, in dem das Kennwort gespeichert ist, wie im folgenden Policy-Beispiel dargestellt:
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>'}
Nat-IP-Adresse für den LDAP-Server abrufen
Um den LDAP-Provider für das Cluster zu konfigurieren, benötigen Sie die Nat-IP-Adresse, mit der das Cluster eine Verbindung zum LDAP-Server herstellen kann. Um diese Adresse abzurufen, müssen Sie dem Cluster einen externen Endpunkt hinzufügen. Wenn Sie diese Verbindung hinzufügen, geben Sie die IP-Adresse für den LDAP-Server an, und "Suchen mit OpenSearch" gibt die Nat-IP zurück.
- Suchen Sie auf der Listenseite Cluster das Cluster, mit dem Sie arbeiten möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter OpenSearch-Cluster auflisten.
- Klicken Sie in der Liste Cluster auf den Namen des Clusters, für das Sie LDAP konfigurieren möchten.
- Klicken Sie auf der Seite "Clusterdetails" auf Weitere Aktionen, und wählen Sie Externe Endpunkte hinzufügen aus.
- Geben Sie die IP-Adresse für den LDAP-Server ein, und klicken Sie auf Weiterleiten.
- Klicken Sie im Abschnitt Ressourcen auf Externe Endpunkte.
- Kopieren Sie den Wert in die Spalte Keine IP für den hinzugefügten externen Endpunkt. Dies ist die Adresse, die Sie im hosts-Attribut der LDAP-Providerkonfiguration für das Cluster angeben.
LDAP-Provider konfigurieren
Verwenden Sie die Konfigurations-API des Sicherheits-Plug-ins OpenSearch, um den LDAP-Provider zu konfigurieren. Das LDAP-Konfigurationsformat finden Sie unter Verbindungseinstellungen.
Geben Sie die Nat-IP-Adresse an, die im vorherigen Abschnitt für das Attribut hosts in der Konfiguration kopiert wurde.
Im folgenden Beispiel wird die Konfiguration aktualisiert, um LDAP zu unterstützen:
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"
}
}
}
}
}
}