Autenticação LDAP na Pesquisa com OpenSearch

Saiba como usar um provedor LDAP com o OCI Search com o OpenSearch.

Você pode usar um provedor de identidades Lightweight Directory Access Protocol (LDAP) para autenticar e autorizar usuários a controlar o acesso a clusters OpenSearch e Painéis de Controle OpenSearch. A pesquisa com OpenSearch suporta LDAP v1 e LDAP v2.

Pré-requisitos

  • Um provedor LDAP.
  • Um cluster OpenSearch existente. Se o cluster tiver sido criado usando a CLI ou a API, você também deverá ativar o controle de acesso baseado em atribuição para o cluster, com o modo de segurança definido para impor.
  • A sub-rede na qual o cluster está localizado é configurada com uma regra de saída para permitir o tráfego de rede para a sub-rede na qual o servidor LDAP está localizado.
  • A senha do plug-in de Segurança armazenado como segredo do Vault. Para obter mais informações, consulte Gerenciando Vaults e Gerenciando Segredos. Configure uma política para permitir que o cluster OpenSearch acesse o segredo do Vault no qual a senha está armazenada, conforme mostrado no seguinte exemplo 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>'}

Obtendo o Endereço IP Nat do Servidor LDAP

Para configurar o provedor LDAP para o cluster, você precisa do endereço IP Nat para o cluster usar para se conectar ao servidor LDAP. Para obter esse endereço, você precisa adicionar um ponto final externo ao cluster. Você especifica o endereço IP do servidor LDAP quando adiciona essa conexão e Pesquisar com OpenSearch retorna o IP Nat.

  1. Na página de lista Clusters, localize o cluster OpenSearch com o qual você deseja trabalhar. Se precisar de ajuda para localizar a página de lista ou o cluster, consulte Listando Clusters OpenSearch.
  2. Na lista Clusters, clique no nome do cluster para o qual deseja configurar o LDAP.
  3. Na página de detalhes do cluster, clique em Mais ações e selecione Adicionar pontos finais externos.
  4. Informe o endereço IP do servidor LDAP e clique em Submeter.
  5. Na seção Recursos, clique em Pontos finais externos.
  6. Copie o valor na coluna IP NAT do ponto final externo que você adicionou. Este é o endereço especificado no atributo de hosts da configuração do provedor LDAP para o cluster.

Configurar Provedor LDAP

Use a API de Configuração do plug-in de Segurança do OpenSearch para configurar o provedor LDAP. Consulte Definições de conexão para obter o formato de configuração LDAP.

Especifique o endereço IP Nat copiado na seção anterior para o atributo hosts na configuração.

O seguinte exemplo atualiza a configuração para suportar 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"
                }
            }
        }
    }
  }
}