Разрешение подключений к базе данных Greenplum
Доступ и аутентификация клиентов базы данных Greenplum контролируется конфигурационным файлом pg_hba.conf.
В Greenplum файл главного экземпляра pg_hba.conf управляет доступом и аутентификацией клиентов к системе. Сегменты также имеют файлы pg_hba.conf, они настроены таким образом, чтобы разрешать клиентские соединения только с главного узла. Сегменты никогда не принимают внешних клиентских подключений, поэтому нет необходимости изменять файл pg_hba.conf на сегментах.
Общий формат файла pg_hba.conf представляет собой набор записей, по одной в строке. Пустые строки игнорируются, как и любой текст после символа #. Запись состоит из нескольких полей, которые разделяются между собой пробелами и/или табуляциями. Поля могут содержать пробелы, если значение поля заключено в кавычки. Записи не могут быть продолжены через строку. Каждая запись удаленного доступа клиента имеет следующий формат:
host database role CIDR-address authentication-method
Каждая запись доступа к сокету UNIX-домена имеет следующий формат:
local database role authentication-method
Значение полей:
local
Выбирает попытки подключения с использованием сокетов UNIX-домена. Без записи этого типа соединения с сокетами домена UNIX запрещены.
host
Сопоставляет попытки соединения, выполненные с помощью TCP/IP. Удаленные TCP/IP-соединения будут невозможны, если сервер не запущен со значением параметра конфигурации сервера listen_addresses.
hostssl
Сопоставляет попытки соединения, выполненные с помощью TCP/IP, но только в том случае, если соединение выполняется с использованием SSL-шифрования. При запуске сервера SSL должен быть включен путем установки параметра конфигурации ssl
hostnossl
Выявляет попытки соединения по TCP/IP, не использующие SSL.
database
Указывает, каким именам баз данных соответствует эта запись. Значение all указывает, что она соответствует всем базам данных. Можно указать несколько имен баз данных, разделяя их запятыми. Отдельный файл с именами баз данных указывается путем постановки символа @ перед именем файла.
role
Указывает, каким именам ролей базы данных соответствует эта запись. Значение all указывает, что она соответствует всем ролям. Если указанная роль является группой и вы хотите, чтобы в нее были включены все члены этой группы, поставьте перед именем роли знак +. Можно указать несколько имен ролей, разделяя их запятыми. Отдельный файл с именами ролей можно указать, путем постановки символа @ перед именем файла.
CIDR-address:
Указывает диапазон IP-адресов клиентских машин, которым соответствует данная запись. Он содержит IP-адрес в стандартной десятичной системе с точками и длину маски CIDR. IP-адреса могут быть указаны только в числовом виде, а не в виде имен доменов или хостов. Длина маски указывает на количество старших битов IP-адреса клиента, которые должны совпадать. Биты справа от этого значения должны быть нулевыми в данном IP-адресе. Между IP-адресом, символом / и длиной маски CIDR не должно быть пробелов.
Типичными примерами CIDR-адресов являются 172.20.143.89/32 для одного хоста,172.20.143.0/24 для небольшой сети или 10.6.0.0/16 для более крупной. Чтобы указать один хост, используйте маску CIDR, равную 32 для IPv4 или 128 для IPv6. В сетевом адресе в конце строки не опускайте нули.
IP-address
IP-mask
Эти поля можно использовать в качестве альтернативы нотации CIDR-адресов. Фактическая маска указывается в отдельном столбце. Например, 255.0.0.0 представляет собой маску IPv4 CIDR длиной 8, а 255.255.255.255 - маску CIDR длиной 32. Эти поля применяются только к записям host, hostssl и hostnossl.
authentication-method
Указывает метод аутентификации, который будет использоваться при подключении.
Редактирование файла pg_hba.conf
В этом примере показано, как отредактировать файл pg_hba.conf главного сервера так, чтобы разрешить удаленному клиенту доступ ко всем базам данных из всех ролей с использованием аутентификации по паролю с шифрованием md5.
Примечание: Для более безопасной системы рассмотрите возможность удаления всех соединений, использующих доверительную аутентификацию, из master pg_hba.conf. Доверительная аутентификация означает, что роли предоставляется доступ без какой-либо аутентификации, что позволяет обойти всю систему безопасности. Замените записи trust на ident-аутентификацию, если в Вашей системе доступна служба ident.
Редактирование pg_hba.conf
1.Откройте файл $MASTER_DATA_DIRECTORY/pg_hba.conf в текстовом редакторе.
2. Добавьте в файл строку по каждому типу соединения, которое Вы хотите разрешить. Записи считываются последовательно, поэтому порядок записей имеет значение. Как правило, более ранние записи будут иметь жесткие параметры соответствия соединения и более слабые методы аутентификации, а более поздние - более слабые параметры соответствия и более сильные методы аутентификации.
Например:
Предоставьте пользователю gpadmin локальный доступ ко всем базам данных, используя аутентификацию ident
local all gpadmin ident sameuser host all gpadmin 127.0.0.1/32 ident host all gpadmin ::1/128 ident
Предоставьте роли 'dba' доступ к любой базе данных с любого хоста с IP-адресом 192.168.x.x ,а для аутентификации пользователей используйте зашифрованные пароли md5
host all dba 192.168.0.0/32 md5
Предоставьте всем ролям доступ к любой базе данных с любого хоста и возможность использования ldap для аутентификации пользователя. Имена ролей Greenplum должны совпадать с общим именем LDAP.
host all all 192.168.0.0/32 ldap ldapserver=usldap1 ldapport=1389 ldapprefix="cn=" ldapsuffix=",ou=People,dc=company,dc=com"
3.Сохраните и закройте файл.
4.Перезагрузите файл конфигурации pg_hba.conf для того, чтобы изменения вступили в силу:
$ gpstop -u
Примечание: Обратите внимание на то, что Вы также можете контролировать доступ к базе данных, устанавливая привилегии объектов, как описано в разделе «Управление привилегиями объектов» на странице 33. Файл pg_hba.conf управляет тем, кто может инициировать сеанс работы с базой данных, и тем, как эти соединения аутентифицируются.
Подключение к Greenplum из Oracle с помощью DBLink
Все действия, описанные ниже, выполняются на сервере gplinuxsachi:
1. Установите драйвер postgres ODBC на gplinuxsachi
Остальные шаги предполагают, что каталог установки - /usr/lib64/psqlodbc.so
2. Найдите файл odbc.ini и добавьте в него следующую запись. При необходимости измените значение пароля.
[IPMGP] Debug = 1 CommLog = 1 ReadOnly = yes Driver = PostgreSQL Servername = gplinuxsachi FetchBufferSize = 99 Username = himanshu Password = <password> Port = 1587 Database = sachi
2a. Проверьте содержимое файла odbcinst.ini. Убедитесь в том, что имя драйвера соответствует записи ODBC.
[PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/psqlodbc.so Setup = /usr/lib/libodbcpsqlS.so Driver64 = /usr/lib64/psqlodbc.so Setup64 = /usr/lib64/libodbcpsqlS.so FileUsage = 1
3. Создайте файл $ORACLE_HOME/hs/admin/initIPMGP.ora со следующим содержимым. Убедитесь в том, что путь /usr/lib64/libodbc.so и odbc.ini действительны.
HS_FDS_CONNECT_INFO = IPMGP HS_FDS_TRACE_LEVEL = 0 HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so HS_LANGUAGE=american_america.we8mswin1252 HS_NLS_NCHAR=UCS2 set ODBCINI=/etc/odbc.ini
4. Добавьте в файл $ORACLE_HOME/network/admin/tnsnames.ora следующую запись, измените хост и порт по мере необходимости.
IPMGP = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) (CONNECT_DATA=(SID=SACHIGP)) (HS=OK) )
4a. Измените $ORACLE_HOME/network/admin/listener.ora, добавьте к имеющейся записи
SID_LIST_<>.
Измените каталог ORACLE_HOME=
SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=SACHIGP) (ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe) (PROGRAM=dg4odbc) ) )
5. Перезагрузите слушателя
lsnrctl reload LISTENER
6. От имени пользователя с привилегией create database link privilege выполните следующий SQL в базе данных SACHI_DEV. Получите пароль для пользователя «himanshu» на Greenplum.
create database link ora2gplink connect to «himanshu» identified by «<password>» using 'SACHIGP';




