19.6. ÐÑÑенÑиÑикаÑÐ¸Ñ GSSAPI
GSSAPI â ÑÑандаÑÑизиÑованнÑй пÑоÑокол Ð´Ð»Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñной аÑÑенÑиÑикаÑии, опÑеделÑннÑй в RFC 2743. Postgres Pro поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ñименение GSSAPI Ð´Ð»Ñ Ð°ÑÑенÑиÑикаÑии или ÑиÑÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑоединениÑ, а Ñакже Ð´Ð»Ñ ÑиÑÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð°ÑÑенÑиÑикаÑией. GSSAPI обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð°Ð²ÑомаÑиÑеÑкÑÑ Ð¿ÑовеÑÐºÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑи (единÑй Ð²Ñ Ð¾Ð´) Ð´Ð»Ñ ÑиÑÑем, коÑоÑÑе ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ. ÐÑовеÑка подлинноÑÑи ÑеализÑеÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñно, но даннÑе, пеÑедаваемÑе ÑеÑез подклÑÑение к ÐÐ, бÑдÑÑ Ð·Ð°ÑиÑенÑ, ÑолÑко еÑли иÑполÑзÑеÑÑÑ ÑиÑÑование GSSAPI или SSL.
ÐоддеÑжка GSSAPI должна бÑÑÑ Ð²ÐºÐ»ÑÑена пÑи ÑбоÑке Postgres Pro.
ÐÑи ÑабоÑе Ñ Kerberos GSSAPI иÑполÑзÑÐµÑ ÑÑандаÑÑнÑе имена пÑинÑипалов ÑлÑжб (аÑÑенÑиÑикаÑионнÑе иденÑиÑикаÑоÑÑ) в ÑоÑмаÑе . ÐÐ¼Ñ Ð¿ÑинÑипала, иÑполÑзÑемое конкÑеÑнÑм ÑÑÑановленнÑм ÑкземплÑÑом Postgres Pro, не заÑиÑо в ÑеÑвеÑе ни в каком виде; оно задаÑÑÑÑ Ð² Ñайле keytab, пÑоÑиÑав коÑоÑÑй ÑеÑÐ²ÐµÑ Ð¾Ð¿ÑеделÑÐµÑ Ð½Ð°Ð·Ð½Ð°ÑеннÑй ÐµÐ¼Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑ. ÐÑли в данном Ñайле задано неÑколÑко пÑинÑипалов, ÑеÑÐ²ÐµÑ Ð²ÑбеÑÐµÑ Ð»Ñбой из ниÑ
. РкаÑеÑÑве облаÑÑи ÑеÑвеÑа вÑбиÑаеÑÑÑ Ð¿ÑедпоÑиÑÐ°ÐµÐ¼Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑÑ, Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð² доÑÑÑпнÑÑ
ÑеÑвеÑÑ ÑайлаÑ
конÑигÑÑаÑии Kerberos.имÑ_ÑлÑжбÑ/имÑ_ÑеÑвеÑа@облаÑÑÑ
ÐодклÑÑаÑÑийÑÑ Ðº ÑеÑвеÑÑ ÐºÐ»Ð¸ÐµÐ½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ знаÑÑ Ð¸Ð¼Ñ Ð¿ÑинÑипала данного ÑеÑвеÑа. ÐбÑÑно в компоненÑе имÑ_ÑлÑÐ¶Ð±Ñ Ð¿ÑинÑипала ÑигÑÑиÑÑÐµÑ postgres, но паÑамеÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ krbsrvname в libpq позволÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð¸ дÑÑгое знаÑение. РкомпоненÑе имÑ_ÑеÑвеÑа задаÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¾Ð¿ÑеделÑнное Ð¸Ð¼Ñ Ñзла, к коÑоÑÐ¾Ð¼Ñ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ libpq. РкаÑеÑÑве облаÑÑи вÑбиÑаеÑÑÑ Ð¿ÑедпоÑиÑÐ°ÐµÐ¼Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑÑ, Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð² доÑÑÑпнÑÑ
клиенÑÑ ÑайлаÑ
конÑигÑÑаÑии Kerberos.
У клиенÑа Ñакже должно бÑÑÑ Ð½Ð°Ð·Ð½Ð°Ñенное ÐµÐ¼Ñ Ð¸Ð¼Ñ Ð¿ÑинÑипала (и он должен имеÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑнÑй Ð±Ð¸Ð»ÐµÑ Ð´Ð»Ñ ÑÑого пÑинÑипала). ЧÑÐ¾Ð±Ñ GSSAPI пÑовеÑил подлинноÑÑÑ ÐºÐ»Ð¸ÐµÐ½Ñа, Ð¸Ð¼Ñ Ð¿ÑинÑипала клиенÑа должно бÑÑÑ ÑвÑзано Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ полÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ 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.
РазмеÑение Ñайла keytab на ÑеÑвеÑе задаÑÑÑÑ Ð¿Ð°ÑамеÑÑом конÑигÑÑаÑии krb_server_keyfile. Ðо ÑообÑажениÑм безопаÑноÑÑи ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¾ÑделÑнÑй Ñайл Ð´Ð»Ñ ÑеÑвеÑа Postgres Pro, а не ÑазÑеÑаÑÑ ÑеÑвеÑÑ ÑиÑаÑÑ ÑиÑÑемнÑй keytab. ÐÑедоÑÑавÑÑе полÑзоваÑелÑ, Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ коÑоÑого ÑабоÑÐ°ÐµÑ ÑеÑÐ²ÐµÑ Postgres Pro, пÑаво ÑÑÐµÐ½Ð¸Ñ ÑÑого Ñайла (пÑаво запиÑи даваÑÑ Ð½Ðµ нÑжно). (См. Ñакже Раздел 17.1.)
Файл ÑаблиÑÑ ÐºÐ»ÑÑей генеÑиÑÑеÑÑÑ Ñ Ð¸ÑполÑзованием ÐÐ Kerberos; подÑобнее ÑÑо опиÑано в докÑменÑаÑии Kerberos. СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑ, как его ÑгенеÑиÑоваÑÑ, иÑполÑзÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ kadmin в MIT-ÑовмеÑÑимой ÑеализаÑии Kerberos 5:
kadmin%addprinc -randkey postgres/server.my.domain.orgkadmin%ktadd -k krb5.keytab postgres/server.my.domain.org
ÐÐ»Ñ Ð¼ÐµÑода аÑÑенÑиÑикаÑии 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УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ, Ñ ÐºÐ¾ÑоÑой бÑдÑÑ ÑвеÑÑÑÑÑÑ Ð¸Ð¼ÐµÐ½Ð° пÑинÑипалов полÑзоваÑелей. ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°Ð½, подклÑÑаÑÑÑÑ ÑмогÑÑ ÑолÑко полÑзоваÑели из ÑÑой облаÑÑи. ÐÑли не задан, подклÑÑаÑÑÑÑ ÑмогÑÑ Ð¿Ð¾Ð»ÑзоваÑели из лÑбой облаÑÑи, в завиÑимоÑÑи Ð¾Ñ ÑÑÑановленного ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн полÑзоваÑелей.
Рдополнение к ÑÑим паÑамеÑÑам, коÑоÑÑе могÑÑ Ð±ÑÑÑ ÑазнÑми в ÑазнÑÑ
запиÑÑÑ
pg_hba.conf, ÑÑÑеÑÑвÑÐµÑ Ð¿Ð°ÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии krb_caseins_users, дейÑÑвÑÑÑий на ÑÑовне ÑеÑвеÑа. ÐÑли он Ñавен true, пÑинÑÐ¸Ð¿Ð°Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñов ÑопоÑÑавлÑÑÑÑÑ Ñ Ð·Ð°Ð¿Ð¸ÑÑми полÑзоваÑелей без ÑÑÑÑа ÑегиÑÑÑа. РзнаÑении krb_realm, еÑли оно задано, ÑегиÑÑÑ Ñимволов Ñоже не ÑÑиÑÑваеÑÑÑ.