Para mais informações, consulte Visão geral do Active Directory.
Este documento pressupõe que você já sabe como aplicar arquivos de manifesto do Kubernetes e usar a ferramenta de linha de comando kubectl. Para mais informações, consulte Ferramenta de linha de comando (kubectl).
Antes de começar
Para ativar a integração do Active Directory, você precisa ter o seguinte:
- Um cluster do AlloyDB Omni implantado em um ambiente do Kubernetes
- Um keytab do servidor do Active Directory
Migrar do operador AlloyDB Omni no Kubernetes 1.4.0 para 1.5.0
Se você estiver usando a integração do Active Directory na versão 1.4.0 ou anterior do operador do AlloyDB Omni, migre para a versão 1.5.0.
Para migrar para a versão 1.5.0 do operador do AlloyDB Omni, siga estas etapas:
- Faça upgrade do operador do AlloyDB Omni para a versão 1.5.0.
- Crie um recurso de autenticação definido pelo usuário.
- Crie um novo manifesto de recurso UserDefinedAuthentication.
- Preencha
spec.dbclusterRef
com o nome do DBCluster de destino. - Preencha
spec.keytabSecretRef
com o nome do secret do keytab. - Copie as regras
pg_hba.conf
relevantes para a autenticação do Active Directory e do Kerberos no campospec.pgHbaEntries
. - Copie o
pg_ident.conf rules
atual (se houver) no campospec.pgIdentEntries
. - Aplique esse novo manifesto, por exemplo,
kubectl apply -f user-auth-crd.yaml
.
- Remova a configuração de prévia e reimplante o cluster.
- Na definição do recurso DBCluster, remova todas as anotações que você usou anteriormente para configurar a integração do Active Directory, por exemplo, regras de autenticação baseada em host (HBA), regras de identificação e anotação de arquivo keytab.
- Exclua os ConfigMaps
pg_hba
epg_ident
que você criou. - Reaplique o manifesto atualizado do DBCluster.
Configurar o suporte do Active Directory
Crie e aplique um secret com a keytab:
apiVersion: v1 kind: Secret metadata: name: KEYTAB_SECRET_NAME namespace: DB_CLUSTER_NAMESPACE type: Opaque data: krb5.keytab: | KEYTAB_FILE_CONTENT
Confira a seguir um exemplo de comando que gera um keytab no servidor do Active Directory:
ktpass /princ postgres/DBCLUSTER_HOST@REALM /Pass PASSWORD /mapuser postgres /crypto ALL /ptype KRB5_NT_Principal /out OUTPUT_PATH
ALLOYDB_HOST
é o host que aponta para o DBCluster ou o endereço IP do DBCluster.Aplique o seguinte manifesto de recurso personalizado de autenticação definida pelo usuário:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: UserDefinedAuthentication metadata: name: USER_DEFINED_AUTHENTICATION_NAME namespace: DB_CLUSTER_NAMESPACE spec: dbclusterRef: name: DB_CLUSTER_NAME keytabSecretRef: name: KEYTAB_SECRET_NAME pgHbaEntries: PG_HBA_ENTRIES pgIdentEntries: PG_IDENT_ENTRIES
Substitua:
USER_DEFINED_AUTHENTICATION_NAME
: o nome do UserDefinedConfiguration. Por exemplo,DB_CLUSTER_NAME-ad-auth
.DB_CLUSTER_NAMESPACE
: o namespace do Kubernetes para este plano de backup. O namespace precisa corresponder ao do cluster de banco de dados.DB_CLUSTER_NAME
: o nome do cluster de banco de dados, que você atribuiu ao criá-lo.KEYTAB_SECRET_NAME
: o nome do keytab que você criou.PG_HBA_ENTRIES
: entradaspg_hba.conf
como uma lista de strings. Essas entradas substituem as entradas padrão empg_hba.conf
. Se você adicionar uma configuração inválida, os usuários não poderão fazer login.No exemplo anterior, você adicionou entradas para autenticação baseada em GSS seguida da autenticação baseada em senha. Isso significa que o usuário está conectado usando a API GSS. Se essa abordagem de login falhar, a autenticação com base em senha será usada como alternativa.
Para mais informações, consulte o arquivo pg_hba.conf (em inglês).
PG_IDENT_ENTRIES
: entradaspg_ident.conf
como uma lista de strings. Para implementar o mapeamento de nomes de usuário, especifiquemap=
no campo de opções do arquivopg_hba.conf
. Para mais informações, consulte Mapas de identificação.Veja o exemplo a seguir:
apiVersion: v1 kind: Secret metadata: name: db-keytab-dbcluster-sample type: Opaque data: krb5.keytab: | DUMMY_KEYTAB --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: UserDefinedAuthentication metadata: name: dbcluster-sample-ad-auth spec: dbclusterRef: name: dbcluster-sample keytabSecretRef: name: db-keytab-dbcluster-sample pgHbaEntries: - hostgssenc all all 0.0.0.0/0 gss - hostgssenc all all ::1/128 gss - hostssl all all 0.0.0.0/0 scram-sha-256 - hostssl all all ::/0 scram-sha-256 pgIdentEntries: - usermap active_directory_user postgres_user
Criar funções de banco de dados como um usuário do Active Directory
Crie uma função no banco de dados que corresponda ao usuário do Active Directory. Para criar uma função para seu usuário do Active Directory, conecte-se ao cluster e execute os seguintes comandos:
username=# CREATE ROLE "USERNAME@REALM" WITH LOGIN;
Faça login no banco de dados usando o usuário do Active Directory. É necessário ativar o
kinit
no cliente em que você está se conectando. Neste exemplo, o podpostgres-client
tem o kinit e o psql instalados e está configurado para se conectar ao cluster do AlloyDB Omni usando o cliente psql.kubectl exec -it postgres-client -n DB_CLUSTER_NAMESPACE -- bash root:/# kinit USERNAME Password for USERNAME@REALM: root:/# psql -h HOSTNAME -d DB_NAME -U USERNAME@REALM psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help.
Executar consultas SQL.
username=# select * from TABLE_NAME;
Desativar a autenticação do Active Directory
Para desativar a autenticação do Active Directory, execute o seguinte comando do Helm:
helm upgrade alloydbomni-operator PATH_TO_CHART -n alloydb-omni-system --set userDefinedAuthentication.enabled=false
O comando retorna a seguinte saída:
Release "alloydbomni-operator" has been upgraded. Happy Helming! NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 2 TEST SUITE: None
A seguir
- Integrar o suporte a usuários do Active Directory ao AlloyDB Omni.
- Integrar o suporte a grupos do Active Directory com o AlloyDB Omni.
- Integrar o suporte a grupos do Active Directory no Kubernetes.
- Resolver problemas de integração do Active Directory no AlloyDB Omni.