Autenticación de LDAP en Búsqueda con OpenSearch
Descubra cómo utilizar un proveedor LDAP con OCI Search con OpenSearch.
Puede utilizar un proveedor de identidad Lightweight Directory Access Protocol (LDAP) para autenticar y autorizar a los usuarios para controlar el acceso a los clusters OpenSearch y los paneles de control OpenSearch. La búsqueda con OpenSearch admite LDAP v1 y LDAP v2.
Requisitos
- Un proveedor LDAP.
- Un cluster OpenSearch existente. Si el cluster se creó mediante la CLI o la API, también debe activar el control de acceso basado en roles para el cluster, con el modo de seguridad configurado para aplicar.
- La subred donde se encuentra el cluster se configura con una regla de salida para permitir el tráfico de red a la subred donde se encuentra el servidor LDAP.
- La contraseña para el plugin de seguridad almacenado como secreto de almacén. Para obtener más información, consulte Gestión de almacenes y Gestión de secretos. Debe configurar una política para permitir que el cluster OpenSearch acceda al secreto de almacén donde se almacena la contraseña, como se muestra en el siguiente ejemplo de política:
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>'}
Obtención de la dirección IP Nat para el servidor LDAP
Para configurar el proveedor LDAP para el cluster, necesita la dirección IP Nat para que el cluster la utilice para conectarse al servidor LDAP. Para obtener esta dirección, debe agregar un punto final externo al cluster. Especifique la dirección IP para el servidor LDAP al agregar esta conexión y la búsqueda con OpenSearch devuelve la IP Nat.
- En la página de lista Clusters, busque el cluster OpenSearch con el que desea trabajar. Si necesita ayuda para buscar la página de lista o el cluster, consulte Lista de clusters OpenSearch.
- En la lista Clusters, haga clic en el nombre del cluster para el que desea configurar LDAP.
- En la página de detalles del cluster, haga clic en Más acciones y, a continuación, seleccione Agregar puntos finales externos.
- Introduzca la dirección IP del servidor LDAP y haga clic en Submit (Enviar).
- En la sección Recursos, haga clic en Puntos finales externos.
- Copie el valor de la columna IP NAT para el punto final externo que ha agregado. Esta es la dirección que especifica en el atributo hosts de la configuración del proveedor LDAP para el cluster.
Configurar el proveedor LDAP
Utilice la API de configuración del plugin de seguridad OpenSearch para configurar el proveedor LDAP. Consulte Connection settings para obtener el formato de configuración de LDAP.
Especifique la dirección IP Nat copiada en la sección anterior para el atributo hosts en la configuración.
En el siguiente ejemplo, se actualiza la configuración para admitir 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"
}
}
}
}
}
}