19.5. ÐÑÑенÑиÑикаÑÐ¸Ñ password #
СÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко меÑодов аÑÑенÑиÑикаÑии по паÑолÑ. Ðни ÑабоÑаÑÑ Ð¿ÑимеÑно одинаково, но ÑазлиÑаÑÑÑÑ Ñем, как паÑоли полÑзоваÑелей Ñ ÑанÑÑÑÑ Ð½Ð° ÑеÑвеÑе и как паÑÐ¾Ð»Ñ Ð¿ÐµÑедаÑÑÑÑ Ð¾Ñ ÐºÐ»Ð¸ÐµÐ½Ñа по ÐºÐ°Ð½Ð°Ð»Ñ ÑвÑзи.
scram-sha-256С меÑодом
scram-sha-256вÑполнÑеÑÑÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ SCRAM-SHA-256, как опиÑано в RFC 7677. Ðна пÑоизводиÑÑÑ Ð¿Ð¾ ÑÑ ÐµÐ¼Ðµ вÑзов-оÑвеÑ, коÑоÑÐ°Ñ Ð¿ÑедоÑвÑаÑÐ°ÐµÑ Ð¿ÐµÑÐµÑ Ð²Ð°Ñ Ð¿Ð°Ñолей ÑеÑез недовеÑеннÑе ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸ поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ñ Ñанение паÑолей на ÑеÑвеÑе в виде кÑипÑогÑаÑиÑеÑкого Ñ ÐµÑа, ÑÑо ÑÑиÑаеÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм.ÐÑо наиболее безопаÑнÑй из ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð½Ð° даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¼ÐµÑодов, но он не поддеÑживаеÑÑÑ ÑÑаÑÑми клиенÑÑкими библиоÑеками.
md5ÐÐ»Ñ Ð¼ÐµÑода
md5Ñеализован менее безопаÑнÑй Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ вÑзов-оÑвеÑ. Ðн пÑедоÑвÑаÑÐ°ÐµÑ Ð¿ÐµÑÐµÑ Ð²Ð°Ñ Ð¿Ð°Ñолей и пÑедÑÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ñ Ñанение паÑолей на ÑеÑвеÑе в заÑиÑÑованном виде, но не заÑиÑÐ°ÐµÑ Ð² ÑлÑÑае Ð¿Ð¾Ñ Ð¸ÑÐµÐ½Ð¸Ñ Ñ ÐµÑей паÑолей Ñ ÑеÑвеÑа. ÐÑоме Ñого, алгоÑиÑм Ñ ÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ MD5 в наÑи дни Ñже Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ заÑиÑиÑÑ Ð¾Ñ ÑеленапÑавленнÑÑ Ð°Ñак.ÐеÑод
md5неÑовмеÑÑим Ñ ÑÑнкÑионалÑноÑÑÑÑ db_user_namespace.ÐÐ»Ñ Ð¾Ð±Ð»ÐµÐ³ÑÐµÐ½Ð¸Ñ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð° Ð¾Ñ Ð¼ÐµÑода
md5к более Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¼ÐµÑÐ¾Ð´Ñ SCRAM, еÑли в каÑеÑÑве меÑода аÑÑенÑиÑикаÑии вpg_hba.confÑказанmd5, но паÑÐ¾Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ð° ÑеÑвеÑе заÑиÑÑован Ð´Ð»Ñ SCRAM (Ñм. ниже), авÑомаÑиÑеÑки бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑÑÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ Ð½Ð° базе SCRAM.passwordС меÑодом
passwordпаÑÐ¾Ð»Ñ Ð¿ÐµÑедаÑÑÑÑ Ð² оÑкÑÑÑом виде и поÑÑÐ¾Ð¼Ñ ÑвлÑеÑÑÑ ÑÑзвимÑм Ð´Ð»Ñ Ð°Ñак Ñ Ð¿ÐµÑÐµÑ Ð²Ð°Ñом ÑÑаÑика. Ðго ÑледÑÐµÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ Ð²Ñегда, еÑли ÑÑо возможно. Ðднако еÑли подклÑÑение заÑиÑено SSL, меÑодpasswordÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñен. (ХоÑÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾ ÑеÑÑиÑикаÑÑ SSL Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»ÑÑÑим вÑбоÑом когда иÑполÑзÑеÑÑÑ SSL).
ÐаÑоли баз даннÑÑ
Postgres Pro оÑÐ´ÐµÐ»ÐµÐ½Ñ Ð¾Ñ Ð¿Ð°Ñолей полÑзоваÑелей опеÑаÑионной ÑиÑÑемÑ. ÐаÑоли вÑеÑ
полÑзоваÑелей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ñ
ÑанÑÑÑÑ Ð² ÑиÑÑемном каÑалоге pg_authid. УпÑавлÑÑÑ Ð¿Ð°ÑолÑми можно либо иÑполÑзÑÑ SQL-ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE ROLE и ALTER ROLE, напÑимеÑ, CREATE ROLE foo WITH LOGIN PASSWORD 'secret', либо Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ psql \password. ÐÑли паÑÐ¾Ð»Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ðµ задан, вмеÑÑо него Ñ
ÑаниÑÑÑ NULL, и пÑойÑи аÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾ паÑÐ¾Ð»Ñ ÑÑÐ¾Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ðµ ÑможеÑ.
ÐоÑÑÑпноÑÑÑ ÑазлиÑнÑÑ
меÑодов аÑÑенÑиÑикаÑии по паÑÐ¾Ð»Ñ Ð·Ð°Ð²Ð¸ÑÐ¸Ñ Ð¾Ñ Ñого, как паÑоли полÑзоваÑелей ÑиÑÑÑÑÑÑÑ Ð½Ð° ÑеÑвеÑе (или, говоÑÑ ÑоÑнее, Ñ
еÑиÑÑÑÑÑÑ). ÐÑо опÑеделÑеÑÑÑ Ð¿Ð°ÑамеÑÑом конÑигÑÑаÑии password_encryption в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð½Ð°Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑолÑ. ÐÑли паÑÐ¾Ð»Ñ ÑиÑÑÑеÑÑÑ Ð² Ñежиме scram-sha-256, его можно бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ Ð¼ÐµÑодов аÑÑенÑиÑикаÑии scram-sha-256 и password (но в поÑледнем ÑлÑÑае он бÑÐ´ÐµÑ Ð¿ÐµÑедаваÑÑÑÑ Ð¾ÑкÑÑÑÑм ÑекÑÑом). Ð ÑлÑÑае ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¼ÐµÑода аÑÑенÑиÑикаÑии md5 пÑи ÑÑом пÑоизойдÑÑ Ð°Ð²ÑомаÑиÑеÑкий пеÑеÑ
од к иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ scram-sha-256, как Ñказано вÑÑе, Ñак ÑÑо ÑÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ñоже бÑÐ´ÐµÑ ÑабоÑаÑÑ. ÐÑли паÑÐ¾Ð»Ñ ÑиÑÑÑеÑÑÑ Ð² Ñежиме md5, его можно бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ ÑолÑко Ð´Ð»Ñ Ð¼ÐµÑодов аÑÑенÑиÑикаÑии md5 и password (и в поÑледнем ÑлÑÑае он Ñак же бÑÐ´ÐµÑ Ð¿ÐµÑедаваÑÑÑÑ Ð¾ÑкÑÑÑÑм ÑекÑÑом). (Ранние веÑÑии Postgres Pro поддеÑживали Ñ
Ñанение паÑолей на ÑеÑвеÑе в оÑкÑÑÑом виде, но ÑепеÑÑ ÑÑо невозможно.) ЧÑÐ¾Ð±Ñ Ð¿ÑоÑмоÑÑеÑÑ Ñ
ÑанÑÑиеÑÑ Ð² ÐÐ Ñ
еÑи паÑолей, обÑаÑиÑеÑÑ Ðº ÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ñ pg_authid.
ÐÐ»Ñ Ð¿ÐµÑевода ÑÑÑеÑÑвÑÑÑей инÑÑаллÑÑии Ñ md5 на scram-sha-256, поÑле Ñого как вÑе клиенÑÑкие библиоÑеки бÑдÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð´Ð¾ веÑÑий, поддеÑживаÑÑиÑ
SCRAM, задайÑе password_encryption = 'scram-sha-256' в postgresql.conf, добейÑеÑÑ, ÑÑÐ¾Ð±Ñ Ð²Ñе полÑзоваÑели Ñменили Ñвои паÑоли, а заÑем поменÑйÑе ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¼ÐµÑода аÑÑенÑиÑикаÑии в pg_hba.conf на scram-sha-256.