Autenticazione LDAP nella ricerca con OpenSearch

Scopri come utilizzare un provider LDAP con OCI Search con OpenSearch.

È possibile utilizzare un provider di identità LDAP (Lightweight Directory Access Protocol) per autenticare e autorizzare gli utenti per controllare l'accesso ai cluster OpenSearch e ai dashboard OpenSearch. La ricerca con OpenSearch supporta LDAP v1 e LDAP v2.

Requisiti indispensabili

  • Provider LDAP.
  • Un cluster OpenSearch esistente. Se il cluster è stato creato utilizzando l'interfaccia CLI o l'API, è necessario abilitare anche il controllo dell'accesso basato sui ruoli per il cluster, con la modalità di sicurezza impostata per l'applicazione.
  • La subnet in cui si trova il cluster è configurata con una regola di uscita per consentire il traffico di rete alla subnet in cui si trova il server LDAP.
  • La password per il plugin Sicurezza memorizzata come segreto del vault. Per ulteriori informazioni, vedere Gestione dei vault e Gestione dei segreti. È necessario configurare un criterio per consentire al cluster OpenSearch di accedere al segreto vault in cui è memorizzata la password, come mostrato nell'esempio di criteri riportato di seguito.
    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>'}

Recupero dell'indirizzo IP Nat per il server LDAP

Per configurare il provider LDAP per il cluster, è necessario disporre dell'indirizzo IP Nat per consentire al cluster di connettersi al server LDAP. Per ottenere questo indirizzo, è necessario aggiungere un endpoint esterno al cluster. È possibile specificare l'indirizzo IP per il server LDAP quando si aggiunge questa connessione e Search with OpenSearch restituisce l'IP NAT.

  1. Nella pagina elenco Cluster, individuare il cluster OpenSearch da utilizzare. Se è necessaria assistenza per trovare la pagina della lista o il cluster, vedere Elenca cluster OpenSearch.
  2. Nella lista Cluster fare clic sul nome del cluster per il quale si desidera configurare LDAP.
  3. Nella pagina dei dettagli del cluster fare clic su Altre azioni, quindi selezionare Aggiungi endpoint esterni.
  4. Immettere l'indirizzo IP per il server LDAP e fare clic su Sottometti.
  5. Nella sezione Risorse fare clic su Endpoint esterni.
  6. Copiare il valore nella colonna IP NAT per l'endpoint esterno aggiunto. Questo è l'indirizzo specificato nell'attributo hosts della configurazione del provider LDAP per il cluster.

Configurare il provider LDAP

Utilizzare l'API di configurazione del plugin di sicurezza OpenSearch per configurare il provider LDAP. Per il formato di configurazione LDAP, vedere Impostazioni di connessione.

Specificare l'indirizzo IP Nat copiato nella sezione precedente per l'attributo hosts nella configurazione.

L'esempio seguente aggiorna la configurazione per supportare 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"
                }
            }
        }
    }
  }
}