
En muchas ocasiones es necesario o aconsejable conectarte a la base de datos de manera rápida y sobre todo segura, sin que los detalles de conexión de la base de datos sean visibles. Un ejemplo, tal y como indica en su página Oracle, es cuando nos conectamos a la base de datos desde los scripts de Shell contenidos en el sistema de archivos. Si estos scripts contienen los detalles de conexión pueden ser un problema de seguridad bastante importante. Para este ejemplo u otros similares, podemos usar la autentificación propia del sistema operativo, pero a partir de Oracle 10g Release2, nos da la opción de usar un almacén de contraseñas externo seguro, guardando las credenciales de inicio de la sesión de Oracle en un wallet guardado en el lado del cliente. Para entenderlo, lo que se crea es un fichero con las credenciales para conectarnos a la base de datos guardados en el lado del cliente, que en la cadena de conexión indicará donde se encuentra este “fichero” para conectarnos. Esto permitirá al usuario conectarse siguiendo la sintaxis siguiente “/@alias”, siendo alias el nombre elegido para la conexión a la base de datos.
Настройка безопасного внешнего хранилища паролей
En primer lugar debemos elegir donde queremos guardar el Oracle wallet, es decir es el lugar donde se almacenará el fichero de wallet con los datos de conexión que Oracle leerá para conectarnos a la base de datos con la sintáxis siguiente “/@alias”.
Примечание: Местом расположения может быть общий каталог, к которому имеют доступ несколько пользователей для подключения к базе данных.
En nuestro caso, al tratarse de una prueba vamos a dejar el Oracle Wallet en el home de oracle de nuestra máquina cliente.
mkdir -p /home/oracle/wallet
Загружаем переменные окружения TNS_ADMIN, если вы не сделали этого ранее, указывая на файл tnsnames.ora, в котором мы укажем строку подключения к базе данных нашей клиентской машины.
export TNS_ADMIN=/u01/app/oracle/21.0.0/oracle/network/admin
Añadimos la entrada siguiente en el fichero sqlnet.ora, ubicado dentro de la ruta TNS_ADMIN, en nuestro caso “/u01/app/oracle/21.0.0/oracle/network/admin/sqlnet.ora”
В этом файле мы должны указать каталог, в котором находится созданный нами ранее файл Wallet.
Es importante añadir la entrada SQLNET.WALLET_OVERRIDE que permite anular cualquier configuración de autentificación del sistema operativo existente.
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /home/oracle/wallet)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0
En este punto ya podemos crear el wallet con la herramienta oracle mkstore con la opción -create. El wallet está protegido con contraseña, pero es definido con propiedad “Inicio de sesión automático” o «autologin» habilitada , de esta forma los usuarios que se conecten a la base de datos lo harán sin que se requiera una contraseña, que es en principio la meta que buscamos con la creación de “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]$
La password introducida con anterioridad es la del fichero wallet, es conveniente recordarla y/o guardarla a buen recaudo porque Oracle la pedirá para poder manipular la información que almacena. Oracle mkstore crea dos ficheros (cwallet.sso, ewallet.p12).
Кошелек создается с правами чтения/записи только для текущего пользователя, поэтому ни один другой пользователь не сможет его прочитать.
/home/oracle/wallet
[oracle@localhost wallet]$ ls -rlt
total 8
-rw——-. 1 oracle oracle 0 sep 27 19:16 ewallet.p12.lck
-rw——-. 1 oracle oracle 149 sep 27 19:16 ewallet.p12
-rw——-. 1 oracle oracle 0 sep 27 19:16 cwallet.sso.lck
-rw——-. 1 oracle oracle 194 sep 27 19:16 cwallet.sso
После создания кошелька его можно модифицировать с помощью команды "mkstore", описанной ниже.
Добавьте учетные данные пользователя/пароля в кошелек недавно с помощью опции -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))
)
La sentencia es la siguiente. Ubicación del wallet, entrada de la conexión a BBDD, usuario y password del usuario con el que se quiere realizar la conexión.
mkstore -wrl «/home/oracle/wallet» -createCredential TEST_EXTUSER test testpassword
Вывод команды выглядит следующим образом, она запросит пароль кошелька для создания учетных данных:
[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>
После того как кошелек сгенерирован, мы можем выполнить несколько действий с созданным кошельком:
Список текущих записей в нашем кошельке
Listar las entradas que hemos creado en el wallet. Para ello añadiremos la sintásis – listCredential apuntando a la ruta del wallet sobre el que queremos ver las credenciales, Oracle nos pedirá la password del Wallet.
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
Si queremos añadir una nueva conexión a nuestro Wallet para conectaros a la base de datos de forma externa usando “external Password”, simplemente añade el nuevo usuario o una nueva cadena de conexión que coincida con una nueva entrada en tu tnsnames.ora. Esta será la que utilices para realizar la conexión.
[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:
Si listamos ahora las entradas del wallet podremos ver la nueva entrada que hemos añadido, siendo RAUL_EXTUSER nuestra entrada del 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: Release 21.0.0.0.0 – Production on Sun Oct 2 18:34:07 2022
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Last Successful login time: Sun Oct 02 2022 18:26:16 -04:00
Connected to:
Oracle Database 21c Standard Edition 2 Release 21.0.0.0.0 – Production
Version 21.3.0.0.0
Изменение учетных данных кошелька
Учетные данные кошелька могут быть изменены, мы можем изменить пароль текущего кошелька просто с помощью команды sitaxis "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: Удаление учетных данных из кошелька
Учетные данные кошелька могут быть удалены с помощью следующей команды.
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]$ 




