19.6. ÐÑÑенÑиÑикаÑÐ¸Ñ GSSAPI
GSSAPI ÑвлÑеÑÑÑ Ð¿ÑоÑоколом оÑÑаÑлевого ÑÑандаÑÑа Ð´Ð»Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñной авÑоÑизаÑии, опÑеделÑннÑм в RFC 2743. Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ GSSAPI Ñ Kerberos аÑÑенÑиÑикаÑией Ñ ÑооÑвеÑÑÑвии Ñ RFC 1964. GSSAPI обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð°Ð²ÑомаÑиÑеÑкÑÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ (single sign-on), Ð´Ð»Ñ ÑиÑÑем, коÑоÑÑе ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ. Сама по Ñебе аÑÑенÑиÑикаÑÐ¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñна, но даннÑе, оÑÑÑлаемÑе в Ñ Ð¾Ð´Ðµ подклÑÑÐµÐ½Ð¸Ñ Ðº базе даннÑÑ , не заÑиÑенÑ, еÑли не иÑполÑзÑеÑÑÑ SSL.
ÐоддеÑжка GSSAPI должна бÑÑÑ Ð²ÐºÐ»ÑÑена пÑи ÑбоÑке Postgres Pro.
ÐÑи ÑабоÑе Ñ Kerberos GSSAPI иÑполÑзÑÐµÑ ÑÑандаÑÑнÑе ÑÑÑÑнÑе запиÑи в ÑоÑмаÑе . СеÑÐ²ÐµÑ Postgres Pro пÑÐ¸Ð¼ÐµÑ Ð»Ñбого пÑинÑипала, вклÑÑÑнного в иÑполÑзÑемÑй ÑеÑвеÑом Ñайл ÑаблиÑÑ ÐºÐ»ÑÑей, но необÑ
одимо пÑоÑвиÑÑ Ð¾ÑÑоÑожноÑÑÑ Ð² Ñказании коÑÑекÑнÑÑ
деÑалей пÑинÑипала в Ñ
оде ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÐºÐ»Ð¸ÐµÐ½Ñом, пÑименÑÑÑим паÑамеÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ servicename/hostname@realmkrbsrvname. (См. Ñакже ÐодÑаздел 32.1.2.) ÐнаÑение имени ÑеÑвиÑа по ÑмолÑÐ°Ð½Ð¸Ñ postgres Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾ во вÑÐµÐ¼Ñ ÑбоÑки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ./configure --with-krb-srvnam=whatever. РболÑÑинÑÑве ÑÑед изменÑÑÑ Ð´Ð°Ð½Ð½Ñй паÑамеÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ. Ðднако некоÑоÑÑе ÑеализаÑии Kerberos могÑÑ Ð¿Ð¾ÑÑебоваÑÑ Ð¸Ð½Ð¾Ð³Ð¾ имени ÑеÑвиÑа, напÑимеÑ, Microsoft Active Directory ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ð¸Ð¼Ñ ÑеÑвиÑа бÑло набÑано заглавнÑми бÑквами (POSTGRES).
hostname здеÑÑ â ÑÑо полное доменное Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑа, где ÑабоÑÐ°ÐµÑ ÑеÑвеÑ. ÐблаÑÑÑÑ ÑÑбÑекÑа-ÑлÑÐ¶Ð±Ñ ÑвлÑеÑÑÑ Ð¿ÑедпоÑиÑÐ°ÐµÐ¼Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑÑ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ компÑÑÑеÑа.
ÐÑинÑÐ¸Ð¿Ð°Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñов могÑÑ Ð±ÑÑÑ ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ñ ÑазлиÑнÑми именами полÑзоваÑелей баз даннÑÑ
Postgres Pro в pg_ident.conf. ÐапÑимеÑ, пÑинÑÐ¸Ð¿Ð°Ð»Ñ pgusername@realm Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑопоÑÑавлено пÑоÑÑо pgusername. Так же возможно иÑполÑзоваÑÑ Ð² каÑеÑÑве имени Ñоли в Postgres Pro полное Ð¸Ð¼Ñ Ð¿ÑинÑипала username@realm без какого-либо ÑопоÑÑавлениÑ.
Postgres Pro Ñакже поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑбиÑаÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¸Ð· имени пÑинÑипала. ÐÑа возможноÑÑÑ Ð¾ÑÑавлена Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи и иÑполÑзоваÑÑ ÐµÑ ÐºÑайне нежелаÑелÑно, Ñак как пÑи ÑÑом оказÑваеÑÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑазлиÑиÑÑ ÑазнÑÑ
полÑзоваÑелей, имеÑÑиÑ
одинаковÑе имена, но пÑиÑ
одÑÑиÑ
из ÑазнÑÑ
облаÑÑей. ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ ÐµÑ, ÑÑÑановиÑе Ð´Ð»Ñ include_realm знаÑение 0. РпÑоÑÑÑÑ
конÑигÑÑаÑиÑÑ
Ñ Ð¾Ð´Ð½Ð¾Ð¹ облаÑÑÑÑ Ð¸ÑклÑÑение облаÑÑи в ÑоÑеÑании Ñ Ð¿Ð°ÑамеÑÑом krb_realm (коÑоÑÑй позволÑÐµÑ Ð¾Ð³ÑаниÑиÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¾Ð´Ð½Ð¸Ð¼ знаÑением, заданнÑм в krb_realm parameter) бÑÐ´ÐµÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм, но менее гибким ваÑианÑом по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑвнÑм опиÑанием ÑопоÑÑавлений в pg_ident.conf.
УбедиÑеÑÑ, ÑÑо Ñайл клÑÑей ваÑего ÑеÑвеÑа доÑÑÑпен Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ (и желаÑелÑно недоÑÑÑпен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи) ÑÑÑÑной запиÑи ÑеÑвеÑа Postgres Pro. (См. Ñакже Раздел 17.1.) РаÑположение ÑÑого Ñайла клÑÑей ÑказÑваеÑÑÑ Ð¿Ð°ÑамеÑÑом krb_server_keyfile. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо /usr/local/pgsql/etc/krb5.keytab (каÑалог Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´ÑÑгим, в завиÑимоÑÑи Ð¾Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ sysconfdir пÑи ÑбоÑке). Ðз ÑообÑажений безопаÑноÑÑи ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¾ÑделÑнÑй Ñайл keytab Ð´Ð»Ñ ÑеÑвеÑа Postgres Pro, а не оÑкÑÑваÑÑ Ð´Ð¾ÑÑÑп к обÑеÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑайлÑ.
Файл ÑаблиÑÑ ÐºÐ»ÑÑей генеÑиÑÑеÑÑÑ Ð¿ÑогÑаммнÑм обеÑпеÑением Kerberos; подÑобнее ÑÑо опиÑано в докÑменÑаÑии Kerberos. СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ MIT-ÑовмеÑÑимÑÑ ÑеализаÑий Kerberos 5:
kadmin%ank -randkey postgres/server.my.domain.orgkadmin%ktadd -k krb5.keytab postgres/server.my.domain.org
ÐÑи подклÑÑении к базе даннÑÑ
ÑбедиÑеÑÑ, ÑÑо Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑазÑеÑение на ÑопоÑÑавление пÑинÑипала Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ полÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐапÑимеÑ, Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ полÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
fred, пÑинÑипал fred@EXAMPLE.COM ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ. ЧÑÐ¾Ð±Ñ Ð´Ð°ÑÑ ÑазÑеÑение на подклÑÑение пÑинÑÐ¸Ð¿Ð°Ð»Ñ fred/users.example.com@EXAMPLE.COM, иÑполÑзÑйÑе Ñайл ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн полÑзоваÑелей, как опиÑано в Разделе 19.2.
ÐÐ»Ñ Ð¼ÐµÑода GSSAPI доÑÑÑÐ¿Ð½Ñ ÑледÑÑÑие паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии:
include_realmÐогда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ñавен 0, из пÑинÑипала аÑÑенÑиÑиÑиÑованного полÑзоваÑÐµÐ»Ñ ÑбиÑаеÑÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ, и оÑÑавÑееÑÑ Ð¸Ð¼Ñ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¸Ñ ÑопоÑÑавление имÑн (Ñм. Раздел 19.2). ÐÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð½Ðµ ÑекомендÑеÑÑÑ Ð¸ поддеÑживаеÑÑÑ Ð² оÑновном Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи, Ñак как он небезопаÑен в окÑÑжениÑÑ Ñ Ð½ÐµÑколÑкими облаÑÑÑми, еÑли ÑолÑко дополниÑелÑно не задаÑÑÑÑ
krb_realm. Ðолее пÑедпоÑÑиÑелÑнÑй ваÑÐ¸Ð°Ð½Ñ â оÑÑавиÑÑ Ð·Ð½Ð°Ñениеinclude_realmпо ÑмолÑÐ°Ð½Ð¸Ñ (1) и задаÑÑ Ð²pg_ident.confÑвное ÑопоÑÑавление Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼Ñн пÑинÑипалов в имена полÑзоваÑелей Postgres Pro.mapРазÑеÑÐ°ÐµÑ ÑопоÑÑавление имÑн полÑзоваÑелей ÑиÑÑÐµÐ¼Ñ Ð¸ полÑзоваÑелей баз даннÑÑ . Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº РазделÑ 19.2. ÐÐ»Ñ Ð¿ÑинÑипала GSSAPI/Kerberos, Ñакого как
username@EXAMPLE.COM(или более Ñедкогоusername/hostbased@EXAMPLE.COM), именем полÑзоваÑÐµÐ»Ñ Ð² ÑопоÑÑавлении бÑдеÑusername@EXAMPLE.COM(илиusername/hostbased@EXAMPLE.COM, ÑооÑвеÑÑÑвенно), еÑлиinclude_realmне Ñавно 0; в пÑоÑивном ÑлÑÑае именем ÑиÑÑемного полÑзоваÑÐµÐ»Ñ Ð² ÑопоÑÑавлении бÑдеÑusername(илиusername/hostbased).krb_realmУÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ, Ñ ÐºÐ¾ÑоÑой бÑдÑÑ ÑвеÑÑÑÑÑÑ Ð¸Ð¼ÐµÐ½Ð° пÑинÑипалов полÑзоваÑелей. ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°Ð½, подклÑÑаÑÑÑÑ ÑмогÑÑ ÑолÑко полÑзоваÑели из ÑÑой облаÑÑи. ÐÑли не задан, подклÑÑаÑÑÑÑ ÑмогÑÑ Ð¿Ð¾Ð»ÑзоваÑели из лÑбой облаÑÑи, в завиÑимоÑÑи Ð¾Ñ ÑÑÑановленного ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн полÑзоваÑелей.