我的 PostgreSQL 實例是否支持 kerberos/gssapi 身份驗證?
我按照 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 身份驗證
如果您在 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 在對我最初問題的評論中讓我走上了正確的道路。