2023-07-26 18:55:24 +03:00
|
|
|
|
---
|
|
|
|
|
title: Аутентификация в Postgres Pro с помощью Kerberos
|
|
|
|
|
description: Используя протокол GSSAPI
|
|
|
|
|
date: 2022-11-29T16:21:00+05:00
|
|
|
|
|
tags: [linux, postgres, krb5]
|
|
|
|
|
---
|
|
|
|
|
## Установка Kerberos и Postgres Pro
|
|
|
|
|
Для начала, необходимо установить [Postgres Pro](//fruw.org/posts/postgres-pro-astra-se) и [Kerberos](//fruw.org/posts/linux-krb5).
|
|
|
|
|
На машину с Postgres Pro Kerberos устанавливается также, как и на клиента.
|
|
|
|
|
|
|
|
|
|
## Конфигурация сервера Kerberos
|
|
|
|
|
|
|
|
|
|
### Добавление принципиала Postgres Pro
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
kadmin.local
|
|
|
|
|
addprinc <username>
|
|
|
|
|
addprinc postgres
|
|
|
|
|
addprinc postgres/<pg-hostname>
|
|
|
|
|
q
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Экспорт субъекта-службы
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
ktutil
|
|
|
|
|
add_entry -password -p postgres/<pg-hostname>@<DOMAIN.NAME> -k 1 -e aes256-cts-hmac-sha1-96
|
|
|
|
|
wkt postgres.keytab
|
|
|
|
|
q
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Перенос субъекта-службы на сервер Postgres Pro
|
|
|
|
|
Перенести keytab можно как угодно, главное, чтобы он находился в папке с конфигурационными файлами Postgres Pro.
|
|
|
|
|
Я перенесу с помощью команды scp:
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
scp postgres.keytab postgres@<pg-hostname>:/var/lib/pgpro/std-13/data/
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Конфигурация сервера Postgres Pro
|
|
|
|
|
|
|
|
|
|
### Включение ранее перенесённого keytab
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
ktutil
|
|
|
|
|
read_kt postgres.keytab
|
|
|
|
|
q
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Изменение конфигруационного файла Postgres Pro
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
krb_server_keyfile = 'postgres.keytab'
|
|
|
|
|
listen_addresses = 'localhost, <pg-ip>'
|
|
|
|
|
|
|
|
|
|
# /var/lib/pgpro/std-13/data/postgresql.conf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Разрешение подключения
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
hostgssenc all postgres localhost/32 gss include_realm=0
|
|
|
|
|
hostgssenc <database> <username> <client-ip>/32 gss include_realm=0
|
|
|
|
|
|
|
|
|
|
# /var/lib/pgpro/std-13/data/pg_hba.conf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Получение тикета от Kerberos
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
kinit postgres
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Конфигурация клиента
|
|
|
|
|
|
|
|
|
|
### Получение тикета от Kerberos
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
kinit <username>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Подключение к Postgres Pro
|
2023-09-24 18:58:33 +03:00
|
|
|
|
```shell
|
2023-07-26 18:55:24 +03:00
|
|
|
|
psql -d <database> -h <pg-hostname> -U <username>
|
|
|
|
|
```
|