блог Oracle на испанском языке

Secure External Password Store

Зачастую возникает необходимость или целесообразно подключиться к базе данных быстро и, прежде всего, безопасно, при этом не раскрывая данные для подключения к базе данных. Примером, как указано на сайте Oracle, может служить ситуация, когда мы подключаемся к базе данных с помощью скриптов Shell, хранящихся в файловой системе. Если эти скрипты содержат данные для подключения, это может стать довольно серьезной проблемой безопасности. Для этого и других подобных примеров можно использовать встроенную в операционную систему аутентификацию, однако начиная с Oracle 10g Release 2 у нас появляется возможность использовать безопасное внешнее хранилище паролей, в котором учетные данные для входа в Oracle хранятся в «кошельке» на стороне клиента. Чтобы понять принцип работы: создаётся файл с учетными данными для подключения к базе данных, хранящийся на стороне клиента, а в строке подключения указывается, где находится этот «файл» для подключения. Это позволит пользователю подключаться, используя следующий синтаксис: «/@alias», где alias — это имя, выбранное для подключения к базе данных.

Настройка Secure External Password Store

Прежде всего, нам нужно выбрать, где мы хотим сохранить кошелек Oracle, то есть место, в котором будет храниться файл кошелька с данными подключения, которые Oracle будет считывать для подключения к базе данных по следующему синтаксису: «/@alias».

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

В нашем случае, поскольку речь идет о тестировании, мы разместим Oracle Wallet в домашнем каталоге пользователя oracle на нашем клиентском компьютере.

mkdir -p /home/oracle/wallet

Загружаем переменные окружения TNS_ADMIN, если вы не сделали этого ранее, указав на файл tnsnames.ora, где мы укажем строку подключения к базе данных нашей клиентской машины.

export TNS_ADMIN=/u01/app/oracle/21.0.0/oracle/network/admin

Добавляем статье в файл sqlnet.ora, расположенный в каталоге TNS_ADMIN, в нашем случае «/u01/app/oracle/21.0.0/oracle/network/admin/sqlnet.ora»

В этом файле мы должны указать каталог, где находится файл Wallet, который мы создали ранее.

Важно добавить статье .WALLET_OVERRIDE, который позволяет переопределить любые существующие настройки аутентификации операционной системы.

WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /home/oracle/wallet)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0

На этом этапе мы уже можем создать кошелек с помощью инструмента oracle mkstore с опцией -create. Кошелек защищён паролем, но для него включена опция «Автоматический вход» (autologin). Таким образом, пользователи, подключающиеся к базе данных, смогут делать это без ввода пароля, что, в принципе, и является нашей целью при создании «secure external password».

[oracle@localhost bin]$ mkstore -wrl «/home/oracle/wallet» -create
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña:  
Volver a Introducir Contraseña:  
[oracle@localhost bin]$

После создания wallet его можно изменить с помощью команды “mkstore”, которая описана ниже.

Добавьте учетные данные пользователя/пароля в недавно созданный wallet, используя опцию -createCredential. Проще говоря, на этом этапе нужно указать учетные данные, необходимые для подключения к базе данных, которые будут храниться в файле паролей.

En nuestro caso vamos a realizar una conexión, siguiendo esta entrada del tnsnames.ora con el usuario test.

TEST_EXTUSER =
     (DESCRIPTION =
     (ADDRESS =
    (PROTOCOL = TCP)
  (HOST = localhost)
  (PORT = 1521)
      )
(CONNECT_DATA = (server=dedicated) (service_name = srv_testing))
   )

Команда выглядит следующим образом. Путь к кошельку, статье БД, имя пользователя и пароль того пользователя, под которым необходимо установить соединение.

mkstore -wrl «/home/oracle/wallet» -createCredential TEST_EXTUSER test testpassword

Вывод команды следующий, он запросит пароль wallet для создания учетных данных:

[oracle@localhost bin]$ mkstore -wrl «/home/oracle/wallet» -createCredential TEST_EXTUSER test testpassword
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:  

Una vez generado el wallet ya nos podemos conectar a la base de datos con la cartera generada anteriormente. Para conectarnos utilizaremos la siguiente sintáxis “/@db_alias» , donde db_alias es la referencia a la entrada de la cartera que hemos añadido y que tenemos configurada en nuestro fichero tnsnames, en  nuestro caso: /@TEST_EXTUSER

[oracle@localhost admin]$ sqlplus /@TEST_EXTUSER
SQL*Plus: Release 21.0.0.0.0 – Production on Sun Oct 2 17:48:52 2022
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle.  All rights reserved.
Last Successful login time: Sun Oct 02 2022 17:47:12 -04:00
Connected to:
Oracle Database 21c Standard Edition 2 Release 21.0.0.0.0 – Production
Version 21.3.0.0.0
SQL>

После создания Wallet мы можем выполнять различные действия с созданным кошельком:

Список текущих записей в нашем Wallet

Вывести список записей, которые мы создали в кошельке. Для этого добавим синтаксис – listCredential, указав путь к кошельку, учетные данные которого мы хотим просмотреть; Oracle запросит у нас пароль кошелька.

oracle@localhost admin]$  mkstore -wrl «/home/oracle/wallet» -listCredential
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:  
List credential (index: connect_string username)
1: TEST_EXTUSER test
[oracle@localhost admin]$

Добавление нового пользовательского соединения в Wallet, созданный ранее

Если вы хотите добавить новое подключение в ваш Wallet для внешнего подключения к базе данных с использованием «external Password», просто добавьте нового пользователя или новую строку подключения, соответствующую новой статье файле tnsnames.ora. Именно её вы будете использовать для установления подключения.

[oracle@localhost admin]$ mkstore -wrl «/home/oracle/wallet» -createCredential RAUL_EXTUSER raul testpassword
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:  

Если мы теперь просмотрим записи кошелька, то увидим новую статье мы добавили, причем RAUL_EXTUSER — это наша статье tnsnames.ora

[oracle@localhost admin]$  mkstore -wrl «/home/oracle/wallet» -listCredential
Oracle Secret Store Tool Release 21.0.0.0.0 – Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:  
List credential (index: connect_string username)
2: RAUL_EXTUSER raul
1: TEST_EXTUSER test

Мы можем протестировать соединение.

[oracle@localhost admin]$ sqlplus /@RAUL_EXTUSER
SQL*Plus: Версия 21.0.0.0.0 – Производственная версия, выпущена 2 октября 2022 г., воскресенье, 18:34:07
Версия 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. Все права защищены.
Время последнего успешного входа: воскресенье, 2 октября 2022 г., 18:26:16 -04:00
Подключено к:
Oracle Database 21c Standard Edition 2, версия 21.0.0.0.0 – Производственная среда
Версия 21.3.0.0.0

Изменение учетных данных Wallet

Учетные данные кошелька могут быть изменены, мы можем изменить пароль текущего кошелька просто с помощью синтаксиса “modifyCredential”

[oracle@localhost admin]$  mkstore -wrl "/home/oracle/wallet" -modifyCredential RAUL_EXTUSER raul raulnewpassword
Oracle Secret Store Tool Release 21.0.0.0.0 - Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:   

Удаление учетных данных из Wallet

Учетные данные кошелька могут быть удалены с помощью следующей команды.

mkstore -wrl <wallet_location> -deleteCredential <db_alias>
[oracle@localhost admin]$ mkstore -wrl "/home/oracle/wallet" -deleteCredential RAUL_EXTUSER
Oracle Secret Store Tool Release 21.0.0.0.0 - Production
21.3.0.0.0: Versión {1}
Copyright (c) 2004, 2021, Oracle y/o sus subsidiarias. Todos los Derechos Reservados.
Introducir Contraseña de Cartera:  
[oracle@localhost admin]$  
Oracle ACE