Integre o apoio técnico ao utilizador do 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

Antes de integrar o Active Directory, certifique-se de que cumpre os seguintes requisitos:

  • Certifique-se de que o Active Directory está configurado.
  • Obtenha o REALM do servidor Active Directory.
  • Obtenha o nome de anfitrião do centro de distribuição de chaves (KDC) do servidor Active Directory. O nome do anfitrião é armazenado nas imagens do Docker.
  • Obtenha o nome de anfitrião do servidor de administração do servidor Active Directory. Este nome de anfitrião está armazenado nas imagens do Docker.
  • Certifique-se de que tem acesso ao servidor do Active Directory para poder gerar um ficheiro .keytab.
  • Escolha um utilizador do Active Directory para usar nos testes e no início de sessão.
  • Obtenha um ficheiro .keytab do servidor Active Directory existente.

Obtenha um ficheiro .keytab do servidor Active Directory existente

Para obter um keytab do servidor Active Directory, siga estes passos:

  1. Inicie sessão como administrador no terminal do PowerShell do servidor Active Directory.
  2. Crie um utilizador denominado postgres executando o seguinte comando ou usando a interface do utilizador do Active Directory.
  3.   New-ADUser -Name "postgres" `
                   -SamAccountName "postgres" `
                   -UserPrincipalName "postgres@REALM" `
                   -Description "Service Account for AlloyDB Omni PostgreSQL Kerberos Authentication" `
                   -AccountPassword (Read-Host -AsSecureString "Set a strong password for the postgres service account") `
                   -Enabled $true `
                   -PasswordNeverExpires $true
      
  4. Gere um keytab principal de serviço que seja mapeado para este servidor do Active Directory.
  5.   ktpass /princ postgres/ALLOYDB_HOST_NAME@REALM /Pass ChangeMe123 /mapuser postgres /crypto ALL /ptype KRB5_NT_PRINCIPAL /mapOp set /out C:\Users\Public\postgres.keytab
      

    Em que <HOST> é o nome do domínio totalmente qualificado do servidor onde planeia implementar o AlloyDB Omni, por exemplo, alloydb-server.ad.example.com. Tem de configurar o mesmo anfitrião no ficheiro krb5.conf no mapeamento do domínio.

  6. Copie o ficheiro keytab para a sua máquina Linux.

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?