Estou tentando configurar kerberos auth entre meu laboratório RHEL PSQL 13 e meu AD com algum sucesso, a menos que eu tente configurar mapas de usuário em pg_ident.conf conforme documentado .
Meu usuário psql é user
e meu usuário AD é [email protected]
. O último é usado para conectar pelos usuários e o primeiro é como os usuários são definidos no banco de dados. Eu preciso remover o domínio para corresponder corretamente com os usuários do psql.
O usuário do AD tem o SPN da máquina configurado e o keytab foi definido na configuração do psql.
pg_hba.conf
Arquivo:
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 gss include_realm=1 krb_realm=DOMAIN.COM map=ad
pg_ident.conf
Arquivo:
# MAPNAME SYSTEM-USERNAME PG-USERNAME
ad /^(.*)@DOMAIN\.COM$ \1
ad /^(.*)@domain\.com$ \1
Agora, quando tento conectar usando kerberos auth com [email protected]
, no pgAdmin4, por exemplo, ele falha com o seguinte nos logs do psql:
LOG: no match in usermap "ad" for user "[email protected]" authenticated as "[email protected]"
FATAL: GSSAPI authentication failed for user "[email protected]"
DETAIL: Connection matched pg_hba.conf line 99: "host all all 0.0.0.0/0 gss include_realm=1 krb_realm=DOMAIN.COM map=ad"
Se eu configurar pg_hba.conf
como abaixo e conectar usando user
sem o domínio, posso me conectar bem.
pg_hba.conf
Arquivo:
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 gss include_realm=0 krb_realm=DOMAIN.COM
O que eu estou fazendo errado aqui? Por que os usuários não estão mapeando? Estou no RHEL8 executando o PSQL 13.
Esta questão é o mesmo problema.
A terceira coluna
pg_ident.conf
deve corresponder ao nome de usuário com o qual você está efetuando login no banco de dados. No seu caso, faça login no banco de dados/PgAdmin4 apenas comouser
, não como o[email protected]
.Ok, acontece que a configuração funciona como pretendido em outros clientes quando não especifica o nome de usuário, pois leva o do kerberos ticket, também conhecido como sAMAccountName. Por exemplo, o cliente psql no Windows funcionará sem especificar um nome de usuário.
Se eu colocar o sAMAccountName no campo de nome de usuário pgAdmin, ele funcionará. No meu caso, o UPN não corresponde ao sAMAccountName + REALM, mas na maioria dos casos eles corresponderiam, portanto, é seguro usar o lado esquerdo do UPN como igual à propriedade sAMAccountName.
No entanto, ainda não sei por que o pg_ident.conf não remove o nome de domínio se eu fornecer um...