Uso de la autenticación de Identity and Access Management con Base Database Service
Puede configurar Oracle Database en Base Database Service de modo que utilice la autenticación y autorización de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) para permitir a los usuarios de IAM acceder a la base de datos con credenciales de IAM.
Note:
Oracle Database soporta la integración de Base Database Service para OCI IAM con dominios de identidad, así como IAM heredado, que no incluye dominios de identidad. Los usuarios y grupos de dominios por defecto y no por defecto están soportados al utilizar IAM con dominios de identidad.El soporte para dominios personalizados que no son por defecto solo está disponible con Oracle Database versión 19c, versión 19.21 y posteriores (pero no con Oracle Database versión 21c).
Temas relacionados
Acerca de la autenticación de IAM
La integración de OCI IAM con Base Database Service soporta la autenticación de verificador de contraseña de base de datos y la autenticación basada en token. Para obtener más información sobre la arquitectura para utilizar usuarios de IAM en Base Database Service, consulte Autenticación y autorización de usuarios de IAM para bases de datos Oracle DBaaS.
Autenticación de contraseña de base de datos de IAM
Puede activar una instancia de Oracle Database para permitir el acceso de usuario con una contraseña de base de datos de OCI IAM (con un verificador de contraseña).
Para el acceso a la base de datos del verificador de contraseñas, cree las asignaciones para usuarios de IAM y aplicaciones de OCI a la instancia de Oracle Database. Las propias cuentas de usuario de IAM se gestionan en IAM. Las cuentas de usuario y los grupos de usuarios pueden estar en el dominio por defecto o en un dominio personalizado no por defecto.
Note:
Se puede utilizar cualquier cliente de base de datos 12c o superior soportado para el acceso de contraseña de base de datos de IAM a Oracle Database.Una contraseña de base de datos de OCI IAM permite a un usuario de IAM conectarse a una instancia de base de datos, mientras que los usuarios de Oracle Database se suelen conectar con un nombre de usuario y una contraseña. El usuario introduce su nombre de usuario de IAM y la contraseña de base de datos de IAM. Una contraseña de base de datos de IAM es diferente a la contraseña de consola de OCI. Si utiliza un usuario de IAM con un verificador de contraseña, puede conectarse a la base de datos con cualquier cliente de base de datos soportado, siempre que el cliente de base de datos soporte los verificadores de contraseña de Oracle Database 12c.
Autenticación basada en token de conexión única de IAM
Puede activar una instancia de Oracle Database para utilizar tokens SSO de OCI IAM.
Para el acceso a la base de datos de token, cree las asignaciones para usuarios de IAM y aplicaciones de OCI a la instancia de Oracle Database. Las propias cuentas de usuario de IAM se gestionan en IAM. Las cuentas de usuario y los grupos de usuarios pueden estar en el dominio por defecto o en un dominio personalizado no por defecto.
Un cliente de base de datos puede obtener un token de base de datos de IAM de varias maneras:
- Una aplicación o una herramienta de cliente puede solicitar el token de base de datos de IAM para el usuario y puede transferir el token de base de datos a través de la API de cliente. El uso de la API para enviar el token sustituye otros valores en el cliente de base de datos. El uso de token de base de datos de IAM requiere el cliente de Oracle Database 19.16 y versiones superiores (no la 21c). Hay disponibles capacidades limitadas (no completas) de token de base de datos de IAM con algunos clientes de Oracle Database de la versión 21.5 y versiones posteriores.
- Si la aplicación o la herramienta no soporta la solicitud de un token de base de datos de IAM y su envío a la base de datos a través de la API de cliente, el usuario de IAM puede utilizar primero la interfaz de línea de comandos (CLI) de OCI para recuperar el token de base de datos de IAM y guardarlo en una ubicación de archivo. Por ejemplo, para utilizar SQL*Plus y otras aplicaciones y herramientas con este método de conexión, primero debe obtener el token de base de datos mediante la CLI de OCI. Si el cliente de base de datos está configurado para tokens de base de datos de IAM, cuando un usuario se conecta con el formulario de conexión de barra inclinada, el controlador de base de datos utiliza el token de base de datos IAM que se ha guardado en una ubicación de archivo por defecto o especificada.
- Una aplicación o una herramienta de cliente puede utilizar un principal de recurso o un principal de instancia de OCI IAM para obtener un token de base de datos de IAM y utilizar el token de base de datos de IAM para autenticarse en una instancia de base de datos.
- Los usuarios de IAM y las aplicaciones de OCI pueden solicitar un token de base de datos de IAM con varios métodos, incluido el uso de una clave de API.
Para obtener más información sobre la configuración de la conexión de cliente, consulte Configuración de una conexión de cliente para SQL*Plus que utilice un token de IAM. Para obtener más información sobre otros métodos, como el uso de un token de delegación dentro de OCI Cloud Shell, consulte Autenticación y autorización de usuarios de IAM para bases de datos Oracle DBaaS.
Si un usuario introduce un nombre de usuario y contraseña para conectarse, el controlador de base de datos utiliza el método de verificador de contraseña para acceder a la base de datos como método por defecto.
Requisitos
Se necesitan los siguientes requisitos para la autenticación de IAM en Base Database Service.
Valores de Red
Antes de utilizar la autenticación de IAM en las bases de datos, debe utilizar el servicio Networking para agregar un gateway de servicio, una regla de ruta y una regla de seguridad de salida a la red virtual en la nube (VCN) y las subredes en las que residen los recursos de base de datos.
- Cree un gateway de servicio en la VCN en la que residan los recursos de base de datos siguiendo las instrucciones de Creación del gateway de servicio.
- Después de crear el gateway de servicio, agregue una regla de ruta y una regla de seguridad de salida a cada subred (en la VCN) en la que residan los recursos de la base de datos para que estos recursos puedan utilizar el gateway para usar la autenticación de IAM:
- Vaya a la página Detalles de subred de la subred.
- En el separador Información de subred, haga clic en el nombre de la Tabla de rutas de la subred para mostrar su página Detalles de tabla de rutas.
- En la tabla de Reglas de ruta existentes, compruebe si ya hay una regla con las siguientes características:
- Destino: todos los servicios de IAD en Oracle Services Network
- Tipo de destino: gateway de servicio
- Destino: nombre del gateway de servicio que acaba de crear en la VCN
Si dicha regla no existe, haga clic en Agregar reglas de ruta y agregue una regla de ruta con estas características.
- Vuelva a la página Detalles de subred de la subred.
- En la tabla Listas de seguridad de la subred, haga clic en el nombre de la lista de seguridad de la subred para mostrar su página Detalles de lista de seguridad.
- En el menú lateral, en Recursos, haga clic en Reglas de salida.
- En la tabla de Reglas de salida existentes, compruebe si ya hay una regla con las siguientes características:
- Sin estado: No
- Destino: todos los servicios de IAD en Oracle Services Network
- Protocolo IP: TCP
- Rango de puertos de origen: Todo
- Rango de puertos de destino: 443
- Si dicha regla no existe, haga clic en Agregar reglas de salida y agregue una regla de salida con estas características.
Configuración del entorno
Compruebe si WALLET_ROOT está configurado o no:
show parameters wallet_root;
NAME TYPE VALUE
------------------ ----------- --------
wallet_root string
Si no se muestra una ubicación de directorio para WALLET_ROOT, no podrá configurar esta base de datos con IAM. WALLET_ROOT se debe definir la siguiente vez que se apliquen parches en la base de datos. Las nuevas bases de datos incluirán WALLET_ROOT definido.
Configuración de TLS
Al enviar tokens de IAM desde el cliente de base de datos al servidor de base de datos, se debe establecer una conexión TLS. Se debe almacenar la cartera de TLS con el certificado de base de datos para la instancia de Base DB Service en la ubicación WALLET_ROOT. Cree un directorio tls para que tenga el siguiente aspecto: WALLET_ROOT/<PDB GUID>/tls
Al configurar TLS entre el cliente y el servidor de base de datos, hay varias opciones que se deben tener en cuenta.
- Uso de un certificado de servidor de base de datos autofirmado frente a un certificado de servidor de base de datos firmado por una autoridad de certificación comúnmente conocida.
- TLS unidireccional (TLS) frente a TLS mutua o bidireccional (mTLS).
- Cliente con o sin cartera.
Certificado autofirmado: el uso de un certificado autofirmado es una práctica común para los recursos de TI internos, ya que puede crearlos usted mismo y de forma gratuita. El recurso (en nuestro caso, el servidor de base de datos) tendrá un certificado autofirmado para autenticarse en el cliente de base de datos. El certificado autofirmado y el certificado raíz se almacenarán en la cartera del servidor de base de datos. Para que el cliente de base de datos pueda reconocer el certificado del servidor de base de datos, también se necesitará una copia del certificado raíz en el cliente. Este certificado raíz creado automáticamente se puede almacenar en una cartera del cliente o se puede instalar en el almacén de certificados por defecto del sistema cliente (solo Windows y Linux). Cuando se establece la sesión, el cliente de base de datos comprobará que el certificado enviado por el servidor de base de datos ha sido firmado por el mismo certificado raíz.
Una autoridad de certificación conocida: el uso de una autoridad de certificación raíz conocida tiene algunas ventajas, ya que es muy probable que el certificado raíz ya esté almacenado en el almacén de certificados por defecto del sistema cliente. No hay ningún paso adicional necesario para que el cliente almacene el certificado raíz si es un certificado raíz común. La desventaja es que esto tiene normalmente un costo asociado.
TLS unidireccional: en la sesión TLS estándar, solo el servidor proporciona un certificado al cliente para autenticarse. El cliente no necesita tener un certificado de cliente independiente para autenticarse en el servidor (proceso similar a cómo se establecen las sesiones HTTPS). Aunque la base de datos necesita una cartera para almacenar el certificado del servidor, lo único que debe tener el cliente es el certificado raíz utilizado para firmar el certificado del servidor.
TLS bidireccional (también denominada TLS mutua, mTLS): en mTLS, tanto el cliente como el servidor tienen certificados de identidad que se presentan entre sí. En la mayoría de los casos, el mismo certificado raíz firmará ambos certificados, por lo que el mismo certificado raíz se puede utilizar con el servidor de base de datos y el cliente para autenticar el otro certificado. mTLS se utiliza a veces para autenticar al usuario, ya que el servidor de base de datos autentica la identidad del usuario mediante el certificado. Esto no es necesario para transferir tokens de IAM, pero se puede utilizar al transferir tokens de IAM.
Cliente con una cartera: es obligatoria una cartera de cliente cuando se utiliza mTLS para almacenar el certificado de cliente. Sin embargo, el certificado raíz se puede almacenar en la misma cartera o en el almacén de certificados por defecto del sistema.
- Se está configurando TLS unidireccional donde el cliente no tiene su propio certificado, y
- el certificado raíz que firmó el certificado del servidor de base de datos se almacena en el almacén de certificados por defecto del sistema. Es probable que el certificado raíz ya exista si el certificado de servidor está firmado por una autoridad de certificación común. Si se trata de un certificado autofirmado, el certificado raíz se deberá instalar en el almacén de certificados por defecto del sistema para evitar el uso de una cartera de cliente.
Para obtener información detallada sobre cómo configurar TLS entre el cliente de base de datos y el servidor de base de datos, incluidas las opciones descritas anteriormente, consulte Configuración de la autenticación de seguridad de capa de transporte.
Si decide utilizar certificados autofirmados y para conocer las tareas adicionales relacionadas con la cartera, consulte la guía de referencia de la interfaz de línea de comandos (CLI) de orapki
en la Guía de seguridad de la base de datos. Consulte Gestión de elementos de infraestructura de claves públicas (PKI).
Cambio de proveedores de identidad externos
En este tema se describen los pasos para cambiar el proveedor de identidad externo de Usuarios gestionados de forma centralizada (CMU, Centrally Managed Users) a la autenticación y autorización de OCI IAM, y viceversa, en Base Database Service.
Por defecto, la autenticación y autorización de OCI IAM para los usuarios no está activada para las bases de datos recién aprovisionadas. Otra opción para la autenticación externa es utilizar usuarios gestionados de manera centralizada con Active Directory (CMU-AD). Solo puede haber un esquema de autenticación externo activado en un momento determinado.
Activación de la autenticación y autorización de OCI IAM
Realice los siguientes pasos para activar la autenticación y autorización de OCI IAM.
- Active la autenticación y autorización de OCI IAM mediante el comando
ALTER SYSTEM
.ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=OCI_IAM SCOPE=BOTH;
- Verifique el valor del parámetro del sistema
IDENTITY_PROVIDER_TYPE
.SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
NAME VALUE ---------------------- ------- identity_provider_type OCI_IAM
- Compruebe si se ha definido el parámetro
IDENTITY_PROVIDER_CONFIG
.SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_config';
- Si se ha definido el parámetro
IDENTITY_PROVIDER_CONFIG
, restablezca este parámetro.ALTER SYSTEM RESET IDENTITY_PROVIDER_CONFIG SCOPE=BOTH;
Desactivación de la autenticación y autorización de OCI IAM
Realice el siguiente paso para desactivar la autenticación y autorización de OCI IAM.
- Desactive la integración de OCI IAM mediante el comando
ALTER SYSTEM
.ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;
Activación de CMU-AD
Realice los siguientes pasos para permitir a los usuarios de Active Directory (AD) conectarse a la base de datos mediante CMU:
- Desactive la integración de IAM como se describe en Desactivación de la autenticación y autorización de OCI IAM.
- Configure CMU-AD como se describe en la sección sobre configuración de usuarios gestionados de forma centralizada con Microsoft Active Directory.
Desactivación de CMU-AD
Realice el siguiente paso para desactivar CMU-AD:
- Desactive CMU-AD mediante el comando
ALTER SYSTEM
.ALTER SYSTEM SET LDAP_DIRECTORY_ACCESS = 'NONE';
Reactivación de la autenticación y autorización de OCI IAM
Realice los siguientes pasos para volver a activar los usuarios de IAM para conectarse a la base de datos mediante la autenticación y autorización de OCI IAM:
- Desactive CMU-AD como se describe en Desactivación de CMU-AD.
- Active la autenticación y autorización de OCI IAM como se describe en Activación de la autenticación y autorización de OCI IAM.
Creación de grupos y políticas de IAM para usuarios de IAM
En este tema se describen los pasos para escribir sentencias de política para un grupo de IAM a fin de permitir el acceso de usuario de IAM a los recursos de OCI y, en concreto, a las instancias de base de datos.
Una política es un grupo de sentencias que especifica quién puede acceder a determinados recursos y cómo. Se puede otorgar acceso a todo el arrendamiento, a las bases de datos de un compartimento o a bases de datos individuales. Esto significa que debe escribir una sentencia de política que otorgue a un grupo específico un tipo de acceso específico a un tipo específico de recurso dentro de un compartimento específico.
Note:
Es necesario definir una política para utilizar tokens de IAM para acceder a la base de datos. No es necesaria una política al utilizar contraseñas de base de datos de IAM para acceder a la base de datos.Para que la base de datos permita a los usuarios de IAM conectarse a la base de datos mediante tokens de IAM:
-
Para cumplir los requisitos de OCI IAM, cree un grupo y agregue usuarios al grupo.
Por ejemplo, cree el grupo
sales_dbusers
.Para obtener más información, consulte Gestión de Grupos.
-
Escriba sentencias de política para permitir el acceso a los recursos de OCI.
- En la consola de OCI, haga clic en Identidad y seguridad y en Políticas.
- Para una política de escritura, haga clic en Crear política e introduzca un nombre y una descripción.
-
Utilice el Creador de política para crear una política.
Por ejemplo, para crear una política que permita a los usuarios del grupo de IAM
DBUsers
acceder a cualquier base de datos de su arrendamiento:Allow group DBUsers to use database-connections in tenancy
Por ejemplo, para crear una política que limite a los miembros del grupo
DBUsers
el acceso a las bases de datos solo del compartimentotesting_compartment
:allow group DBUsers to use database-connections in compartment testing_compartment
Por ejemplo, para crear una política que limite el acceso del grupo a una única base de datos en un compartimento:
allow group DBUsers to use database-connections in compartment testing_compartment where target.database.id = 'ocid1.database.oc1.iad.aabbcc'
- Haga clic en Create.
Para obtener más información sobre políticas, consulte Gestión de Políticas.
Note:
Se necesita lo siguiente para crear políticas para su uso con usuarios de IAM en una base de datos de Base Database Service.
-
Las políticas pueden permitir a los usuarios de IAM acceder a instancias de base de datos en todo el arrendamiento o en un compartimento, o limitar el acceso a una única instancia de base de datos.
-
Puede utilizar el principal de instancia o el principal de recurso para recuperar tokens de base de datos a fin de establecer una conexión desde la aplicación a una instancia de base de datos. Si utiliza un principal de recurso o un principal de instancia, debe asignar un grupo dinámico. Por lo tanto, no se puede asignar exclusivamente principales de instancia y de recurso; solo se pueden asignar mediante una asignación compartida y colocando la instancia o la instancia de recurso en un grupo dinámico de IAM.
Puede crear grupos dinámicos y hacer referencia a grupos dinámicos en las políticas que cree para acceder a OCI.
Para obtener más información, consulte Gestión de grupos dinámicos.
Adición de usuarios de IAM
Para agregar usuarios de IAM para permitir el acceso a la base de datos, asigne usuarios globales de base de datos a grupos o usuarios de IAM con sentencias CREATE USER
o ALTER USER
(con la cláusula IDENTIFIED GLOBALLY AS
).
La autorización de usuarios de IAM a una instancia de base de datos funciona mediante la asignación de usuarios globales de base de datos (esquemas) a usuarios de IAM (asignación exclusiva) o grupos de IAM (asignación de esquema compartido).
Autorización de usuarios de IAM en una instancia de base de datos:
Realice los siguientes pasos para autorizar a los usuarios de IAM en una instancia de base de datos.
- Conéctese como usuario ADMIN a la base de datos que está activada para utilizar IAM (el usuario ADMIN tiene los privilegios del sistema
CREATE USER
yALTER USER
necesarios para estos pasos). -
Cree una asignación entre el usuario de base de datos (esquema) con sentencias
CREATE USER
oALTER USER
e incluya la cláusulaIDENTIFIED GLOBALLY AS
especificando el nombre del grupo de IAM.Utilice la siguiente sintaxis para asignar un usuario global a un grupo de IAM:
CREATE USER global_user IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_NAME';
Por ejemplo, para asignar un grupo de IAM denominado
db_sales_group
a un usuario global de base de datos compartida denominadosales_group
:CREATE USER sales_group IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=db_sales_group';
De este modo se crea una asignación de usuario global compartida. La asignación, con el usuario global
sales_group
, es efectiva para todos los usuarios del grupo de IAM. Por lo tanto, cualquier usuario dedb_sales_group
se puede conectar a la base de datos con sus credenciales de IAM (mediante la asignación compartida del usuario globalsales_group
).En el siguiente ejemplo, se muestra cómo realizar esto para un dominio no predeterminado,
sales_domain
:CREATE USER shared_sales_schema IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=sales_domain/db_sales_group';
- Si desea crear asignaciones de usuario globales adicionales para otros grupos o usuarios de IAM, siga estos pasos para cada grupo o usuario de IAM.
Note:
Los usuarios de base de datos que no seanIDENTIFIED GLOBALLY
pueden continuar con la conexión como antes, incluso cuando la base de datos está activada para la autenticación de IAM.
Asigne exclusivamente un usuario de IAM local a un usuario global de Oracle Database:
Realice los siguientes pasos para asignar de forma exclusiva un usuario de IAM local a un usuario global de Oracle Database.
- Conéctese como usuario ADMIN a la base de datos que está activada para utilizar IAM (el usuario ADMIN tiene los privilegios del sistema
CREATE USER
yALTER USER
necesarios para estos pasos). -
Cree una asignación entre el usuario de base de datos (esquema) con las sentencias
CREATE USER
oALTER USER
e incluya la cláusulaIDENTIFIED GLOBALLY AS
especificando el nombre de usuario de IAM local.Por ejemplo, para crear un nuevo usuario global de base de datos denominado
peter_fitch
y asignar este usuario a un usuario de IAM local existente denominadopeterfitch
:CREATE USER peter_fitch IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=peterfitch'
En el siguiente ejemplo, se muestra cómo crear el usuario especificando un dominio no predeterminado,
sales_domain
:CREATE USER peter_fitch2 IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=sales_domain/peterfitch';
Adición de roles de IAM
Si lo desea, puede crear roles globales para proporcionar roles y privilegios de base de datos adicionales a los usuarios de IAM cuando se asignen varios usuarios de IAM al mismo usuario global compartido.
La creación de roles globales es opcional para un usuario de IAM con una asignación de IAM exclusiva a un usuario de base de datos (esquema). Cuando la asignación de IAM se realiza a un esquema compartido, la creación de un rol global también es opcional. Por ejemplo, se pueden otorgar todos los privilegios y roles al esquema compartido, y a todos los usuarios de IAM que se asignen al esquema compartido se les otorgarán los privilegios y roles asignados al esquema compartido.
Utilice un rol global para diferenciar opcionalmente a los usuarios que utilizan el mismo esquema compartido. Por ejemplo, un juego de usuarios puede tener todos el mismo esquema compartido y el esquema compartido podría tener el privilegio CREATE SESSION
. A continuación, los roles globales se pueden utilizar para otorgar privilegios y roles diferenciados asignados a diferentes grupos de usuarios que utilizan el mismo esquema compartido.
El otorgamiento de roles adicionales a usuarios de IAM se lleva a cabo asignando roles globales de base de datos a grupos de IAM.
Asigne roles globales de base de datos a grupos de IAM:
Realice los siguientes pasos para asignar los roles globales de base de datos a grupos de IAM.
- Conéctese como usuario ADMIN a la base de datos que está activada para utilizar IAM (el usuario ADMIN tiene los privilegios del sistema
CREATE USER
yALTER USER
necesarios para estos pasos). -
Defina la autorización de base de datos para los roles de base de datos con las sentencias
CREATE ROLE
oALTER ROLE
e incluya la cláusulaIDENTIFIED GLOBALLY AS
especificando el nombre del grupo de IAM.Utilice la siguiente sintaxis para asignar un rol global a un grupo de IAM:
CREATE ROLE global_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_of_WHICH_the_IAM_USER_IS_a_MEMBER';
Por ejemplo, para asignar un grupo de IAM denominado
ExporterGroup
a un rol global de base de datos compartido denominadoexport_role
:CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=ExporterGroup';
En el siguiente ejemplo, se muestra cómo crear el rol especificando un dominio no predeterminado,
sales_domain
:CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=sales_domain/ExporterGroup';
Todos los miembros de
ExporterGroup
en el dominiosales_domain
se autorizarán con el rol global de base de datosexport_role
cuando se conecten a la base de datos. - Utilice las sentencias
GRANT
para otorgar los privilegios necesarios u otros roles al rol global.GRANT CREATE SESSION TO export_role; GRANT DWROLE TO export_role;
- Si desea asociar un rol de base de datos existente a un grupo de IAM, utilice la sentencia
ALTER ROLE
para modificar el rol de base de datos existente para asignar el rol a un grupo de IAM. Utilice la siguiente sintaxis para modificar un rol de base de datos existente para asignarlo a un grupo de IAM:ALTER ROLE existing_database_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_Group_Name';
Si desea agregar asignaciones de roles globales adicionales para otros grupos de IAM, siga los pasos anteriores para cada grupo de IAM.
Creación de contraseña de base de datos de IAM para usuarios de IAM
Para agregar un usuario de IAM y permitir al usuario de IAM conectarse a la base de datos proporcionando un nombre de usuario y una contraseña, debe crear una contraseña de base de datos de IAM. El nombre de usuario de IAM y la contraseña de base de datos de IAM se pueden utilizar de dos formas.
- El usuario de IAM puede introducir el nombre de usuario de IAM y la contraseña de base de datos de IAM al acceder a la base de datos. Por defecto, el cliente de base de datos seguirá el mecanismo de autenticación de contraseña normal con la base de datos y la base de datos recuperará el verificador de contraseña de base de datos de IAM desde IAM.
- El cliente de base de datos se puede configurar para obtener un token de base de datos de IAM utilizando el nombre de usuario de IAM y la contraseña de base de datos de IAM. El cliente de la base de datos enviará este token de base de datos a la base de datos para el acceso de usuario.
Para obtener más información sobre cómo obtener un token de base de datos de IAM utilizando el nombre de usuario de IAM y la contraseña de base de datos de IAM, consulte la sección sobre configuración de IAM para Oracle DBaaS.
Para obtener más información sobre las contraseñas de base de datos de IAM, consulte Trabajar con nombres de usuario y contraseñas de base de datos de IAM en Gestión de credenciales de usuario.
Conexión a base de datos con autenticación de IAM
Una vez que el usuario ADMIN de base de datos ha asignado usuarios globales y roles globales a usuarios de IAM y grupos de IAM, los usuarios se conectan a la instancia de base de datos utilizando sus credenciales de OCI IAM o acceden a la base de datos mediante un token de base de datos de OCI IAM.
Puede seguir conectándose a la base de datos con el nombre de usuario y la contraseña de la cuenta de base de datos local (cuenta de usuario de base de datos no global).
Puede utilizar un cliente de base de datos para acceder a una instancia de base de datos como usuario de OCI IAM. Para utilizar un cliente con credenciales de nombre de usuario y contraseña de OCI IAM y un verificador de contraseñas, el cliente de base de datos debe ser de la versión 12c o posterior.
El uso de token de base de datos de IAM requiere el cliente de Oracle Database 19.16 y versiones superiores (no la 21c). Hay disponibles capacidades limitadas (no completas) de token de base de datos de IAM con algunos clientes de Oracle Database de la versión 21.5 y versiones posteriores.
Note:
Si la instancia de base de datos está en modo restringido, solo se podrán conectar a la base de datos los usuarios con el privilegioRESTRICTED SESSION
, como ADMIN.
Acerca de la conexión a una instancia de base de datos mediante IAM
Los usuarios de IAM se pueden conectar a la instancia de base de datos mediante un verificador de contraseña de base de datos de IAM o un token de IAM.
El uso del verificador de contraseña de base de datos de IAM es similar al proceso de autenticación de contraseña de base de datos. Sin embargo, en lugar de almacenar el verificador de contraseña (hash cifrado de la contraseña) en la base de datos, el verificador se almacena como parte del perfil de usuario de OCI IAM.
El segundo método de conexión utiliza un token de IAM para la base de datos. El uso del acceso basado en token es una opción más adecuada para recursos en la nube tales como las instancias de Oracle Database en Base Database Service. El token se basa en la seguridad que puede aplicar el punto final de IAM. Puede ser una autenticación multifactor, que es más segura que el uso únicamente de contraseñas. Otra ventaja del uso de tokens es que el verificador de contraseña (que se considera confidencial) nunca se almacena ni está disponible en la memoria. Se necesita una conexión TCPS (TLS) al utilizar tokens para el acceso a la base de datos.
Note:
No puede configurar el cifrado de red nativo al transferir un token de IAM. Solo se admite la seguridad de capa de transporte (TLS) por sí misma, no el cifrado de red nativo ni el cifrado de red nativo con TLS.Conexiones de cliente que utilizan un verificador de contraseña de base de datos de IAM
Una vez que haya configurado la autorización necesaria para el usuario de IAM, este usuario se puede conectar mediante la aplicación cliente existente, como SQL*Plus o SQLcl, sin configuración adicional.
El usuario de IAM introduce el nombre de usuario de IAM y la contraseña de base de datos de IAM (no la contraseña de la consola de OCI) mediante cualquier cliente de base de datos soportado actualmente. La única restricción es que la versión de cliente de base de datos sea Oracle Database versión 12.1.0.2 o posterior para utilizar contraseñas de Oracle Database 12c. El cliente de base de datos debe poder utilizar el verificador de contraseña 12c. El uso del cifrado del verificador 11g no está soportado con IAM. No se necesita ninguna configuración especial de cliente o herramienta para que el usuario de IAM se conecte a la base de datos.
El cliente de base de datos también puede solicitar un token directamente desde IAM utilizando el nombre de usuario de IAM y la contraseña de base de datos de IAM. Para obtener más información sobre la configuración del cliente para obtener un token, consulte Conexiones de cliente que utilizan un token solicitado por un nombre de usuario y una contraseña de base de datos de IAM.
Conexiones de cliente que utilizan un token
Para el acceso de token de IAM a la base de datos, la aplicación o herramienta de cliente solicita un token de base de datos de IAM para el usuario de IAM.
La aplicación cliente transferirá el token de base de datos directamente al cliente de base de datos a través de la API de cliente de base de datos.
Si la aplicación o herramienta no se ha actualizado para que solicite un token de IAM, el usuario de IAM puede utilizar la interfaz de línea de comandos de OCI para solicitar y almacenar el token de base de datos. Puede solicitar un token de acceso a la base de datos (db-token
) con las siguientes credenciales:
- Tokens de seguridad (con autenticación de IAM), tokens de delegación (en OCI Cloud Shell) y
API-keys
, que son credenciales que representan al usuario de IAM para activar la autenticación. - Nombre de usuario de IAM y contraseña de base de datos de IAM, que puede utilizar el cliente de base de datos para recuperar un token de base de datos de IAM directamente cuando esté configurado para hacerlo.
- Tokens de principal de instancia, que permiten que las instancias sean actores (o principales) autorizados para realizar acciones en recursos de servicio después de la autenticación.
- Token principal de recurso, que es una credencial que permite a la aplicación autenticarse en otros servicios de OCI.
- Uso de un nombre de usuario de IAM y una contraseña de base de datos de IAM (que solo puede solicitar el cliente de base de datos).
Cuando los usuarios de IAM se conectan al cliente con una barra inclinada /
y se configura el parámetro OCI_IAM
(sqlnet.ora
, tnsnames.ora
o como parte de una cadena de conexión), el cliente de base de datos recupera el token de base de datos de un archivo. Si el usuario de IAM envía un nombre de usuario y una contraseña, la conexión utilizará el acceso del verificador de base de datos de IAM descrito para las conexiones de cliente que utilizan verificadores de contraseña de base de datos de IAM, a menos que el cliente de base de datos esté configurado para recuperar un token de base de datos desde IAM con el nombre de usuario de IAM y la contraseña de base de datos de IAM. En las instrucciones de este tema se muestra cómo utilizar la CLI de OCI como ayuda para el token de base de datos. Si la aplicación o la herramienta se ha actualizado para que funcione con IAM, siga las instrucciones de la aplicación o la herramienta. Algunos casos de uso habituales son: SQL*Plus local, SQLcl local, SQL*Plus en Cloud Shell o aplicaciones que utilizan carteras SEP.
En los siguientes temas se explica cómo:
Configuración de una conexión de cliente para SQL*Plus que utilice una contraseña de base de datos de IAM
Puede configurar SQL*Plus para que utilice una contraseña de base de datos de IAM.
Como usuario de IAM, conéctese a la base de datos utilizando la siguiente sintaxis:
CONNECT user_name@db_connect_string
Enter password: password
En esta especificación, user_name
es el nombre de usuario de IAM. Hay un límite de 128 bytes para la combinación de domain_name/user_name
.
En el siguiente ejemplo se muestra cómo el usuario de IAM peter_fitch
puede conectarse a una instancia de base de datos.
sqlplus /nolog
connect peter_fitch@db_connect_string
Enter password: password
Algunos caracteres especiales requerirán que user_name
y password
vayan entre comillas dobles. Por ejemplo:
"peter_fitch@example.com"@db_connect_string
"IAM database password"
Configuración de una conexión de cliente para que SQL*Plus utilice un token de IAM
Realice los siguientes pasos para configurar una conexión de cliente para SQL*Plus que utilice un token de IAM.
- Asegúrese de que tiene una cuenta de usuario de IAM.
- Compruebe con un administrador de IAM y un administrador de base de datos que tiene una política que le permite acceder a la base de datos en el compartimento o su arrendamiento, y que está asignado a un esquema global en la base de datos.
- Si la aplicación o la herramienta no soporta la integración directa con IAM, descargue, instale y configure la CLI de OCI. Para obtener más información sobre la instalación y la configuración de la CLI de OCI, consulte Inicio rápido.
- Configure una clave de API como parte de la configuración de la CLI de OCI y seleccione los valores por defecto.
- Configure el acceso de clave de API para el usuario de IAM.
- Recupere
db-token
. Por ejemplo:- Recuperación de
db-token
conAPI-key
mediante la CLI de OCI:oci iam db-token get
- Recuperación de
db-token
con un token de seguridad (o sesión):oci iam db-token get --auth security_token
Si el token de seguridad ha caducado, aparecerá una ventana para que el usuario pueda volver a conectarse a OCI. Esto genera el token de seguridad para el usuario. La CLI de OCI utilizará este token refrescado para obtener
db-token
. - Recuperación de
db-token
con un token de delegación: al conectarse a Cloud Shell, el token de delegación se genera automáticamente y se ubica en el directorio/etc
. Para obtener este token, ejecute el siguiente comando en la interfaz de línea de comandos de OCI:oci iam db-token get
- Recuperación de un token de instancia mediante la CLI de OCI:
oci iam db-token get --auth instance_principal
- Recuperación de
Para obtener más información, consulte Claves y OCID necesarios.
- Esta configuración solo funciona con el cliente de Oracle Database 19c. Asegúrese de utilizar las actualizaciones de versiones más recientes para este cliente.
Note:
La versión 21c del cliente de Oracle Database ofrece funciones de token de IAM limitadas. - Siga el proceso existente para descargar la cartera de la base de datos y, a continuación, siga las instrucciones para configurarla para su uso con SQL*Plus.
- Confirme que la coincidencia de DN está activada buscando
SSL_SERVER_DN_MATCH=ON
ensqlnet.ora
. - Configure el cliente de base de datos para que utilice el token de IAM agregando
TOKEN_AUTH=OCI_TOKEN
al archivosqlnet.ora
. Puesto que utilizará las ubicaciones por defecto para el archivo de token de base de datos, no es necesario incluir la ubicación del token.
Los valoresTOKEN_AUTH
yTOKEN_LOCATION
en las cadenas de conexión detnsnames.ora
tienen prioridad sobre la configuración desqlnet.ora
de esa conexión. Por ejemplo, para la cadena de conexión, suponiendo que el token está en la ubicación por defecto (~/.oci/db-token
para Linux):(description= (retry_count=20)(retry_delay=3) (address=(protocol=tcps)(port=1522) (host=example.us-phoenix-1.oraclecloud.com)) (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com)) (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, OU=Oracle BMCS US, O=Example Corporation, L=Redwood City, ST=California, C=US") (TOKEN_AUTH=OCI_TOKEN)))
- Confirme que la coincidencia de DN está activada buscando
Después de que se actualice la cadena de conexión con el parámetro TOKEN_AUTH
, el usuario de IAM se puede conectar a la instancia de base de datos ejecutando el siguiente comando para iniciar SQL*Plus. Puede incluir el propio descriptor de conexión o utilizar el nombre del descriptor del archivo tnsnames.ora
.
connect /@exampledb_high
o:
connect /@(description=
(retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)
(host=example.us-phoenix-1.oraclecloud.com))
(connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
(security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com,
OU=Oracle BMCS US, O=Example Corporation,
L=Redwood City, ST=California, C=US")
(TOKEN_AUTH=OCI_TOKEN)))
El cliente de base de datos ya está configurado para obtener db-token
porque TOKEN_AUTH
ya está definido, ya sea mediante el archivo sqlnet.ora
o en una cadena de conexión. El cliente de base de datos obtiene db-token
y lo firma mediante la clave privada y, a continuación, envía el token a la base de datos. Si se ha especificado un nombre de usuario de IAM y una contraseña de base de datos de IAM en lugar de una barra inclinada /
, el cliente de base de datos se conectará utilizando la contraseña en lugar de db-token
a menos que se especifique otro parámetro: PASSWORD_AUTH = OCI_TOKEN
. Esto indica al cliente de base de datos que obtenga el token de IAM utilizando el nombre de usuario de IAM y la contraseña de base de datos de IAM. Además de definir PASSWORD_AUTH,
, también tendrá que definir OCI_IAM_URL
, OCI_TENANCY
y, opcionalmente, OCI_COMPARTMENT
y OCI_DATABASE
.
Uso del principal de instancia para acceder a la base de datos con autenticación de IAM
Una vez que el usuario ADMIN ha activado OCI IAM en la base de datos, una aplicación puede acceder a la base de datos a través de un token de base de datos de OCI IAM mediante un principal de instancia.
Para obtener más información, consulte Acceso a la API de Oracle Cloud Infrastructure con principales de instancia.
Configuración de autenticación de proxy
La autenticación de proxy permite a un usuario de IAM conectarse mediante proxy a un esquema de base de datos para tareas como el mantenimiento de la aplicación.
La autenticación de proxy se suele utilizar para autenticar al usuario real y, a continuación, autorizarlo a utilizar un esquema de base de datos con los privilegios y los roles de esquema para gestionar una aplicación. Alternativas como el uso compartido de la contraseña del esquema de la aplicación se consideran inseguras e impiden auditar qué usuario real ha realizado una acción.
Un caso de uso puede ser un entorno en el que un usuario de IAM con nombre que sea administrador de la base de datos de la aplicación pueda autenticarse mediante sus credenciales y, a continuación, conectarse mediante proxy a un usuario de esquema de base de datos (por ejemplo, hrapp
). Esta autenticación permite al administrador de IAM utilizar los privilegios y los de roles hrapp
como usuario hrapp
para realizar el mantenimiento de la aplicación, y seguir utilizando sus credenciales de IAM para la autenticación. El administrador de base de datos de una aplicación se puede conectar a la base de datos y, a continuación, conectarse mediante proxy a un esquema de aplicación para gestionar este esquema.
Puede configurar la autenticación de proxy para los métodos de autenticación de contraseña y de token.
Configuración de autenticación de proxy para el usuario de IAM
Para configurar la autenticación de proxy para un usuario de IAM, el usuario de IAM ya debe tener una asignación a un esquema global (asignación exclusiva o compartida). También debe estar disponible un esquema de base de datos independiente para que el usuario de IAM pueda conectarse a este mediante proxy.
Después de asegurarse de que tiene este tipo de usuario, modifique el usuario de base de datos para permitir que el usuario de IAM pueda conectarse a este mediante proxy.
- Conéctese a la instancia de base de datos como un usuario que tenga los privilegios del sistema
ALTER USER
. - Otorgue permiso al usuario de IAM para que realice la autenticación de proxy en la cuenta de usuario de la base de datos local. No se puede hacer referencia a un usuario de IAM en el comando, por lo que se debe crear el proxy entre el usuario global de la base de datos (asignado al usuario de IAM) y el usuario de la base de datos de destino. En el siguiente ejemplo,
hrapp
es el esquema de base de datos al que se realizará la conexión mediante proxy, ypeterfitch_schema
es el usuario global de base de datos asignado exclusivamente al usuariopeterfitch
.ALTER USER hrapp GRANT CONNECT THROUGH peterfitch_schema;
En esta etapa, el usuario de IAM se puede conectar a la instancia de base de datos mediante el proxy. Por ejemplo:
Para conectarse mediante un verificador de contraseña:
CONNECT peterfitch[hrapp]@connect_string
Enter password: password
Para conectarse mediante un token:
CONNECT [hrapp]/@connect_string
Validación de la autenticación de proxy del usuario de IAM
Puede validar la configuración del proxy de usuario de IAM para métodos de autenticación de contraseña y token.
- Conéctese a la instancia de base de datos como un usuario que tiene los privilegios del sistema
CREATE USER
yALTER USER
. - Conéctese al usuario de IAM y ejecute los comandos
SHOW USER
ySELECT SYS_CONTEXT
. Por ejemplo, supongamos que desea comprobar la autenticación de proxy del usuario de IAMpeterfitch
cuando se conecta mediante proxy al usuario de base de datoshrapp
. Tendrá que conectarse a la base de datos utilizando los diferentes tipos de métodos de autenticación que se muestran aquí, pero la salida de los comandos que ejecute será la misma para todos los tipos.- Para la autenticación de contraseña, suponiendo que el usuario de IAM esté en el dominio por defecto:
CONNECT peterfitch[hrapp]/password\!@connect_string SHOW USER; --The output should be USER is "HRAPP" SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL; --The output should be "PASSWORD_GLOBAL_PROXY" SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL; --The output should be "PETERFITCH_SCHEMA" SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL; --The output should be "HRAPP"
- Para la autenticación de token, para un usuario que está en un dominio no por defecto,
sales_domain
:CONNECT [hrapp]/@connect_string SHOW USER; --The output should be USER is "HRAPP " SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL; --The output should be "TOKEN_GLOBAL_PROXY" SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL; --The output should be "PETERFITCH_SCHEMA" SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL; --The output should be "HRAPP"
- Para la autenticación de contraseña, suponiendo que el usuario de IAM esté en el dominio por defecto:
Uso de un enlace de base de datos con usuarios autenticados de IAM
Puede utilizar un enlace de base de datos para conectarse desde una instancia de base de datos a otra como usuario de OCI IAM.
Puede utilizar un usuario conectado o un enlace de base de datos de usuario fijo para conectarse a una base de datos como usuario de OCI IAM.
Note:
El enlace de base de datos de usuario actual no está soportado para la conexión a una base de datos de Base Database Service como usuario de OCI IAM.-
Enlace de base de datos de usuario conectado: para un enlace de base de datos de usuario conectado, un usuario de IAM debe estar asignado a un esquema en la base de datos de origen y en la de destino conectado mediante un enlace de base de datos. Puede utilizar un verificador de contraseña de base de datos o un token de base de datos de IAM para utilizar un enlace de base de datos de usuario conectado.
-
Enlace de base de datos de usuario fijo: se puede crear un enlace de base de datos de usuario fijo mediante un usuario de base de datos o un usuario de IAM. Al utilizar un usuario de IAM como enlace de base de datos de usuario fijo, el usuario de IAM debe tener una asignación de esquema en la base de datos de destino. El usuario de IAM para un enlace de base de datos solo se puede configurar con un verificador de contraseña.
Desactivación de la autenticación de IAM
Puede desactivar el acceso de usuario de IAM en la instancia de base de datos mediante el comando ALTER SYSTEM
, como se muestra a continuación:
ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;
Si también desea actualizar el acceso a IAM desde el recurso, puede que deba eliminar o modificar el grupo de IAM y las políticas que configure para permitir el acceso a IAM desde esos recursos.