Integre o Active Directory com o AlloyDB Omni

Selecione uma versão da documentação:

Esta página descreve como integrar o AlloyDB Omni com a sua implementação do Active Directory existente para que possa usar os seus nomes de utilizador e palavras-passe existentes para aceder à sua base de dados do AlloyDB Omni. A integração do Active Directory fornece o Kerberos como o mecanismo de autenticação predefinido para comunicar com o AlloyDB Omni. Para mais informações, consulte o artigo Vista geral do Active Directory.

A configuração do Active Directory no AlloyDB Omni é opcional e está desativada por predefinição. Apenas os ambientes que usam o servidor do Active Directory para autenticação podem usar este mecanismo de configuração.

Antes de começar

Ative a autenticação do Active Directory

Para ativar a autenticação do Active Directory no AlloyDB Omni, siga estes passos, que incluem a configuração da interface do programa de aplicação de serviço de segurança genérica (GSSAPI), que é uma interface de programação de aplicações que permite aos programas aceder a serviços de segurança.

  1. Adicione as seguintes entradas ao ficheiro /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 o gss no contentor:

      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 ficheiro pg_hba.conf está no contentor:

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

      hostgssenc all all 0.0.0.0/0 gss map=gssmap
      

      Para mais informações, consulte o artigo O ficheiro pg_hba.conf.

  2. Copie o ficheiro de separador de chaves para o diretório de dados na 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 ficheiro keytab é gerado pelo Kerberos para o servidor PostgreSQL. Para saber mais acerca da autenticação, consulte o artigo Autenticação GSSAPI.

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

    1. Execute o seguinte comando do Docker para adicionar a entrada no contentor:

      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 ficheiro postgresql.conf no contentor:

      docker exec CONTAINER_NAME tail  /var/lib/postgresql/data/postgresql.conf
      
    3. Certifique-se de que a seguinte entrada está no ficheiro:

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

      Para mais informações, consulte o artigo krb_server_keyfile.

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

    Quando usa um sistema de autenticação externo, como GSSAPI, o nome do utilizador do sistema operativo que iniciou a ligação pode não ser o mesmo que o utilizador (função) da base de dados que quer usar.

    Neste caso, especifique o mapeamento do utilizador do sistema para o utilizador do PostgreSQL no ficheiro /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 utilizador, especifique map=gssmap no campo de opções no ficheiro pg_hba.conf.

    Para mais informações sobre a autenticação baseada em ident, consulte os mapas de ident.

  5. Recarregue as configurações do PostgreSQL com 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();
    

Teste a autenticação do Active Directory

Para verificar se a autenticação do Active Directory está a funcionar, siga estes passos:

  1. Inicie sessão no Active Directory através do kinit.
  2. Execute o seguinte comando psql a partir da máquina onde costuma executar o comando 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=#
    

Desative a autenticação do Active Directory

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

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

    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 com 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();
    

O que se segue?