база данных — Соедините Oracle с PHP, используя SSH Connection

Это требование моего клиента для защиты соединения нашего приложения с базой данных Oracle. В настоящее время мы используем PHP-библиотеку OCI8 (oci_connect) для подключения к Oracle с использованием учетных данных, которые мы имеем в файле конфигурации (вид обычного текста) — где мы сохраняем все наши учетные данные.

Теперь они хотят улучшить безопасность, внедрив какое-то безопасное соединение с использованием SSH, чтобы обеспечить связь между приложением и БД. Я прочитал в интернете, что это возможно.

Моя проблема в том, что я не знаю, как добиться этого с помощью библиотеки PHP OCI, даже если наш администратор реализует аутентификацию на основе SSH между сервером приложений и сервером БД, поскольку библиотека OCI использует имя пользователя и пароль для соединения с сервером БД.

Я пытаюсь понять, есть ли какой-нибудь способ, которым мы можем достигнуть этого типа аутентификационных соединений от PHP до Oracle.

Любая помощь / предложения будут оценены.

FYI. Я использую Oracle 12c Enterprise Edition.

0

Решение

Ответить на вторую часть — Установление безопасного соединения с использованием SSH. Мы можем попробовать использовать Oracle Wallets. Поэтому нам не нужно сохранять какой-либо простой текстовый пароль на сервере приложений.

Попробуйте подключиться из PHP к базе данных Oracle с помощью Oracle Wallet, используя следующие шаги

1 — Создать кошелек (https://docs.oracle.com/cd/B19306_01/network.102/b14266/cnctslsh.htm#g1033548)

2 — Разместите Oracle-клиент Oracle и файлы кошелька где-нибудь на сервере с PHP (например, / opt / instantclient и / opt / wallet)

3 — Запустите Apache со следующими переменными:

ORACLE_HOME=/opt/instantclient
LD_LIBRARY_PATH=/opt/instantclient
TNS_ADMIN=/opt/wallet

4 — В / opt / wallet создайте файлы tnsnames.ora с таким содержимым:

WALLET_NAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DB_IP)(PORT = DB_PORT))
(CONNECT_DATA = (SID = DB_SID))
)

где WALLET_NAME — это имя кошелька, выбранного при создании кошелька, DB_IP — это IP-адрес базы данных или имя хоста, DB_PORT — это порт db, а DB_SID — это sid базы данных.

5 — В / opt / wallet создайте файлы sqlnet.ora с таким содержимым:

WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /opt/wallet)
)
)

SQLNET.WALLET_OVERRIDE = TRUE

6 — Перезапустите Apache

Со стороны PHP-кода теперь вы можете подключиться к базе данных, открыв соединение с помощью следующего кода:

$conn = oci_connect("/", "", "WALLET_NAME", null, OCI_CRED_EXT);

OCI_CRED_EXT Это говорит Oracle использовать внешнюю аутентификацию или аутентификацию ОС, которая должна быть настроена в базе данных. Флаг OCI_CRED_EXT может использоваться только с именем пользователя «/» и пустым паролем.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]