Integrar o Active Directory ao AlloyDB Omni

Selecione uma versão da documentação:

Nesta página, descrevemos como integrar o AlloyDB Omni à sua implementação atual do Active Directory para que você possa usar seus nomes de usuário e senhas atuais para acessar o banco de dados do AlloyDB Omni. A integração do Active Directory fornece o Kerberos como o mecanismo de autenticação padrão para se comunicar com o AlloyDB Omni. Para mais informações, consulte Visão geral do Active Directory.

A configuração do Active Directory no AlloyDB Omni é opcional e fica desativada por padrão. Somente ambientes que usam o servidor do Active Directory para autenticação podem usar esse mecanismo de configuração.

Antes de começar

Ativar a autenticação do Active Directory

Para ativar a autenticação do Active Directory no AlloyDB Omni, siga estas etapas, que incluem a configuração da Generic Security Service Application Program Interface (GSSAPI), uma interface de programação de aplicativos que permite que os programas acessem serviços de segurança.

  1. Adicione as seguintes entradas ao arquivo /var/lib/postgresql/data/pg_hba.conf antes da entrada
    host all all all scram-sha-256.

    1. Execute o seguinte comando do Docker para adicionar gss dentro do contêiner:

      docker exec CONTAINER_NAME sed -i 's;^host all all all scram-sha-256$;hostgssenc all all 0.0.0.0/0 gss map=gssmap\n&;' /var/lib/postgresql/data/pg_hba.conf
      
    2. Execute o seguinte comando do Docker para verificar se o arquivo pg_hba.conf está dentro do contêiner:

      docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
      
    3. Verifique se a seguinte entrada está no arquivo:

      hostgssenc all all 0.0.0.0/0 gss map=gssmap
      

      Para mais informações, consulte o arquivo pg_hba.conf (em inglês).

  2. Copie o arquivo de guia de chave para o diretório de dados dentro da imagem do AlloyDB Omni.

    docker cp PATH TO KEYTAB FILE CONTAINER_NAME:/var/lib/postgresql/data/alloydb.keytab
    docker exec CONTAINER_NAME chmod 600 /var/lib/postgresql/data/alloydb.keytab
    docker exec CONTAINER_NAME chown postgres:postgres /var/lib/postgresql/data/alloydb.keytab
    

    O arquivo keytab é gerado pelo Kerberos para o servidor PostgreSQL. Para saber mais sobre autenticação, consulte Autenticação GSSAPI.

  3. Adicione uma entrada para o arquivo keytab ao arquivo /var/lib/postgresql/data/DATA_DIR/postgresql.conf.

    1. Execute o seguinte comando do Docker para adicionar a entrada no contêiner:

      docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
      
    2. Execute o seguinte comando do Docker para verificar o arquivo postgresql.conf no contêiner:

      docker exec CONTAINER_NAME tail  /var/lib/postgresql/data/postgresql.conf
      
    3. Verifique se a seguinte entrada está no arquivo:

      krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
      

      Para mais informações, consulte krb_server_keyfile.

  4. Opcional: adicione entradas ao arquivo /var/lib/postgresql/data/DATA_DIR/pg_ident.conf.

    Ao usar um sistema de autenticação externa, como GSSAPI, o nome do usuário do sistema operacional que iniciou a conexão pode não ser o mesmo do usuário (papel) do banco de dados que você quer usar.

    Nesse caso, especifique o mapeamento de usuário do sistema para usuário do PostgreSQL no arquivo /var/lib/postgresql/data/DATA_DIR/pg_ident.conf:

    docker exec -it CONTAINER_NAME bash
    $ echo -e "
    gssmap              /^(.*)@EXAMPLE\.COM$     \1
    gssmap              /^(.*)@example\.com$     \1
    " | column -t | tee -a /var/lib/postgresql/data/pg_ident.conf
    

    Para implementar o mapeamento de nomes de usuário, especifique map=gssmap no campo de opções do arquivo pg_hba.conf.

    Para mais informações sobre a autenticação baseada em identificador, consulte Mapas de identificador.

  5. Recarregue as configurações do PostgreSQL usando o seguinte comando:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
    psql (16.3)
    Type "help" for help.
    postgres=# select pg_reload_conf();
    

Testar a autenticação do Active Directory

Para verificar se a autenticação do Active Directory está funcionando, siga estas etapas:

  1. Faça login no Active Directory usando kinit.
  2. Execute o seguinte comando psql na máquina em que você costuma executar kinit:

    root@4f6414ad02ef:/# kinit AD_USER_NAME
    Password for user1@YOUR.REALM:
    
    root@4f6414ad02ef:/# psql --h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME
    psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3)
    GSSAPI-encrypted connection
    Type "help" for help.
    
    user1=#
    

Desativar a autenticação do Active Directory

Para desativar a autenticação do Active Directory no AlloyDB Omni, siga estas etapas, que desativam o GSSAPI:

  1. Remova as entradas no arquivo pg_hba.conf que apontam para o método de autenticação gss:

    docker exec CONTAINER_NAME sed -i '/hostgssenc all all 0.0.0.0\/0 gss map=gssmap/d' /var/lib/postgresql/data/pg_hba.conf
    
  2. Recarregue as configurações do PostgreSQL usando o seguinte comando:

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
    psql (16.3)
    Type "help" for help.
    postgres=# select pg_reload_conf();
    

A seguir