Postgresql

我的 PostgreSQL 實例是否支持 kerberos/gssapi 身份驗證?

  • May 10, 2021

我按照 digital Ocean how-to-install-postgresql-on-ubuntu-20-04-quickstart 的說明安裝了它:

% sudo apt install postgresql postgresql-contrib

krb_server_keyfile = /etc/krb5.keytab我還在 psql 中做了一個“全部顯示”,除了我在 postgresql.conf 中配置的之外,沒有看到任何暗示它的東西

這些是我在日誌中看到的錯誤:

2021-05-07 21:58:49.990 UTC [1434] postgres@postgres LOG:  accepting GSS security context failed
2021-05-07 21:58:49.990 UTC [1434] postgres@postgres DETAIL:  Unspecified GSS failure.  Minor code may provide more information: Key table entry not found
2021-05-07 21:58:49.990 UTC [1434] postgres@postgres FATAL:  GSSAPI authentication failed for user "postgres"
2021-05-07 21:58:49.990 UTC [1434] postgres@postgres DETAIL:  Connection matched pg_hba.conf line 114: "host postgres     postgres           172.31.93.176/24                              gs\
s include_realm=0"
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres LOG:  accepting GSS security context failed
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres DETAIL:  Unspecified GSS failure.  Minor code may provide more information: Key table entry not found
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres FATAL:  GSSAPI authentication failed for user "postgres"
2021-05-07 21:58:49.993 UTC [1435] postgres@postgres DETAIL:  Connection matched pg_hba.conf line 114: "host postgres     postgres           172.31.93.176/24                              gs\
s include_realm=0"

首先,讓我添加更多關於觀察到此問題的環境的描述。

這個優秀的系列文章描述了設置 kerberos 和 postgresql

使用 Kerberos 的 PostgreSQL GSSAPI 身份驗證

  1. 第1部分
  2. 第2部分
  3. 第 3 部分

如果您在 AWS 中執行此操作,您還應該設置彈性 IP 地址(以便您可以停止和啟動伺服器)。我還為主機名設置了 rt53,並將它們映射到您設置的彈性 IP 地址。

注意:就我而言,我使用的是 postgresql v13,在最初失敗後,我按照postgressql 上的這些說明安裝 postgresql。

你會認為這就足夠了。但是,如果您不調整 /etc/hosts 文件以便擁有伺服器條目(正如 David 在他的範例中所做的那樣,那是在“內部”硬體上),您會收到以下錯誤:

postgres@jl-krb5dev-client:~$ psql -U postgres -d postgres -h
jl-krb5dev-postgres.matlabonlineserver.com psql: error: could not
initiate GSSAPI security context: Unspecified GSS failure.  Minor code
may provide more information: Server
krbtgt/COMPUTE-1.AMAZONAWS.COM@MATLABONLINESERVER.COM not found in
Kerberos database FATAL:  no pg_hba.conf entry for host "52.70.13.95",
user "postgres", database "postgres", SSL on FATAL:  no pg_hba.conf
entry for host "52.70.13.95", user "postgres", database "postgres",
SSL off

但是,如果您在客戶端電腦上的 /etc/hosts 文件中為 kerberos 和 postgresql 電腦添加條目(使用您之前設置的彈性 IP 地址),一切正常。

注意:這確實需要您使用 keytab 文件正確配置 postgres。對於 postgresql 的 v13,我將其放入 /etc/postgresql/13/main/conf.d/krb5.keytab調整 postgresql.conf 文件(在 /etc/postgresql/13/main 中),使其具有類似的條目這:krb_server_keyfile = ‘文件:/etc/postgresql/13/main/conf.d/krb5.keytab

非常感謝@jjanes 在對我最初問題的評論中讓我走上了正確的道路。

引用自:https://dba.stackexchange.com/questions/291208