TLS, мрежни приступ и SQL привилегије одговарају на различита питања
Шифровање везе, пуштање извора и давање табеле су три одлуке. Прођите их редом пре него што питате да ли TLS може да замени VPN.
Неко предлаже да се клијенту да PostgreSQL пријава како би захтев за трошак путовао шифрован од почетка до краја. Администратору базе података потребна је права SQL сесија, а неко други уместо тога предлаже веб образац. Оба предлога решавају погрешан проблем, јер ниједан није почео од операције коју клијент заиста извршава. Прођите три одлуке редом и питање да ли TLS може да замени VPN само ће се одговорити.
Почните од операције која је клијенту потребна
Запишите шта клијент треба да постигне. Подношење захтева, читање једног реда извештаја и покретање тренутног упита три су различите операције са три различита профила ризика.
Затим запишите ко подноси захтев. Клијент, агент подршке и администратор нису заменљиви чак и када додирују исту табелу. Разлика одређује колико језика упита клијент уопште треба да види.
Пар одговора одређује интерфејс. Све после тога је имплементација, а већина расправа о шифровању су заправо расправе о томе који је интерфејс изабран.
Три контроле, три одлуке
Аутентификовани TLS штити везу и одређује који се TLS идентитети прихватају. Мрежни приступ одређује који извори уопште могу да стигну до слушаоца. Ауторизација у бази података одређује које објекте и радње улога сме да користи.
Ниједна од три не замењује остале, што табела показује експлицитно.
| Control | What it decides | What it leaves open |
|---|---|---|
| Authenticated TLS | Connection protection and which TLS identities are accepted | Which tables a database user may touch |
| Restricted network entry | Which sources reach the listener | Whether an authenticated user should run a given statement |
| Database authorization | Which objects and actions a role may use | Whether the connection arrived by an approved path |
Прочитајте ред на који се ослањате пре него што уклоните други. Већина ових пројеката пропада јер је контрола претпостављена, а не конфигурисана.
Директни SQL оставља политику базе података одговорном
Са одобреном директном везом задржите и проверу идентитета услуге и предвиђену политику приступа. Укључивање TLS-а чини шифроване везе доступним; оно не одбија нешифроване осим ако конфигурација приступа то не захтева кроз hostssl записе.
Ту разлику вреди проверити у конфигурацији која ради, а не у шаблону. Сервер који нуди TLS и прихвата отворени текст није пројекат за који већина мисли да га је применила. Прочитајте правила приступа и погледајте који записи то заиста захтевају. Та једна провера раздваја сервер способан за шифровање од сервера само са шифровањем.
Користите улоге само са привилегијама које посао захтева и прегледајте власништво, наслеђено чланство и широко додељене дозволе. Модел привилегија PostgreSQL-а је граница овлашћења за објекте базе података.
VPN може да ограничи које уређаје стижу до услуге пре него што се догоди аутентификација у бази, а приступни гејтвеј може да уради нешто слично. Ниједно не уклања потребу да се одржава изложена компонента, управља акредитивима и ограничава коришћење ресурса.
Клијентски сертификати су акредитив, а не ACL
Клијентски сертификат може да дода захтев при повезивању. Подешавање clientcert може да захтева поуздан сертификат и, у строжем режиму, везу између имена сертификата и корисника базе података.
То је јачи акредитив. То није листа ауторизације и не чини сервер невидљивим, јер компонента која прихвата везу и даље обрађује мрежни саобраћај и руковање. Третирање сертификата као листе приступа оставља стварне дозволе нетакнутим. Такође има тенденцију да прошири дистрибуцију сертификата, што ствара следећи проблем.
Јак сертификат прикључен на улогу са прекомерним привилегијама даје добро аутентификованог администратора. Проверите улогу пре него што прославите сертификат.
Изаберите ужи интерфејс када одговара
За захтев за трошак, крајња тачка апликације која прихвата захтев, спроводи пословна правила и враћа дозвољени резултат тог корисника представља операцију боље од општег SQL налога.
Затим апликација користи сопствени ограничени идентитет у бази, а клијент никада не добија језик упита као функцију. То је мања површина са мање начина да се погреши.
Ово је опција дизајна, а не тврдња да је код апликације аутоматски безбеднији. Тај код мора да аутентификује своје позиваоце, ауторизује сваку радњу и валидира свој улаз, а његове сопствене дозволе у бази и даље су важне.
Директни SQL остаје тачан за људе и алате чији одобрени посао то захтева. Ограничите тај дизајн улогама, мрежним обухватом и оперативним границама, а осталим клијентима оставите ужи интерфејс. Мешање две популације у једној улози је место где почињу расправе.