Acceso a un arrendamiento cruzado de base de datos mediante una integración de IAM

Los usuarios y los grupos de un arrendamiento pueden acceder a las instancias de base de datos DBaaS de otro arrendamiento si las políticas de ambos arrendamientos lo permiten.

Acerca del acceso entre arrendamientos para usuarios de IAM a instancias de DBaaS

El acceso entre arrendamientos a una instancia de Oracle Cloud Infrastructure (OCI) DBaaS es similar a un único escenario de arrendamiento, excepto que la información de arrendamiento es necesaria para asignaciones y solicitudes de token y que se necesita una política en ambos arrendamientos para permitir el acceso a este recurso de base de datos entre arrendamientos.

En la siguiente figura, se ilustra el proceso para un acceso entre arrendamientos a una instancia DBaaS de OCI.

Figura 3-1 Acceso entre arrendamientos a una instancia DBaaS de OCI

A continuación se muestra la descripción de la Figura 3-1
Descripción de la "Figura 3-1 Acceso entre arrendamientos a una instancia DBaaS de OCI"

El proceso entre arrendamientos es el siguiente:

  1. La política es necesaria en ambos arrendamientos para aprobar y admitir el acceso entre arrendamientos.
  2. El principal de IAM (usuario o aplicación) solicita un token de base de datos para un recurso entre arrendamientos.
  3. Se devuelve db-token y se utiliza para acceder a la base de datos en un arrendamiento diferente
  4. La base de datos realizará una consulta de grupo entre arrendamientos para los grupos del usuario y asignará el principal al esquema global y los roles globales opcionales.

Debe suscribir el arrendamiento de usuario a las mismas regiones en las que se encuentran las bases de datos. Por ejemplo, si las bases de datos del arrendamiento de base de datos están en las regiones PHX y IAD, debe suscribir el arrendamiento de usuario a estas regiones. Esta no es la región principal, solo las regiones suscritas adicionales en el arrendamiento del usuario.

Configuración de Políticas

Debe crear políticas tanto en el arrendamiento de usuario como en el arrendamiento de recursos de base de datos para permitir el acceso a la base de datos entre arrendamientos.

Configuración del arrendamiento del usuario de origen

Se necesitan dos políticas para permitir el acceso entre arrendamientos en el arrendamiento del usuario.

La primera política es permitir que un grupo de arrendamiento de usuario acceda a una base de datos en un arrendamiento diferente. La segunda política permite a una base de datos en el arrendamiento de base de datos consultar la información del grupo en el arrendamiento de usuario.
  1. En la consola de OCI, seleccione Identidad y seguridad.
  2. En Identidad, seleccione Políticas.
  3. Haga clic en Crear política y, en Policy Builder, seleccione Mostrar editor manual.
  4. Utilice la sentencia DEFINE para facilitar la lectura de las políticas reales.
    Por ejemplo:
    DEFINE tenancy database_tenancy as ocid1.tenancy.OCID
  5. Apruebe el grupo de arrendamiento domainA/xt_db_users para utilizar database_connections en el arrendamiento database_tenancy.
    Esto permite a los usuarios del grupo xt_db_users en domainA acceder a cualquier base de datos del arrendamiento database_tenancy.
    ENDORSE group domainA/xt_db_users to use database-connections in tenancy database_tenancy
  6. Utilice la sentencia ADMIT para crear una política de admisión que permita a cualquier base de datos del arrendamiento de base de datos consultar información de grupo para usuarios de IAM específicos del arrendamiento de usuario.
    ADMIT any-user of tenancy database_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy

Configuración del arrendamiento de recursos de la base de datos de destino

El arrendamiento de base de datos necesitará políticas coincidentes para permitir el acceso a los usuarios desde el arrendamiento de usuario, así como permitir que sus propias bases de datos consulten información del grupo en el arrendamiento de usuario

  1. En la consola de OCI, seleccione Identidad y seguridad.
  2. En Identidad, seleccione Políticas.
  3. Haga clic en Crear política y, en Policy Builder, seleccione Mostrar editor manual.
  4. Utilice DEFINE para facilitar la resolución de problemas y la lectura de las políticas.
    DEFINE tenancy user_tenancy as ocid1.tenancy.OCID
    DEFINE group xt_db_users as ocid1.group.defg
    
  5. Utilice ADMIT para crear una política de admisión en el arrendamiento para que coincida con la política de aprobación del arrendamiento de usuario.
    La política de admisión debe coincidir con la política ENDORSE del arrendamiento de usuario para que pueda permitir a los usuarios de user_tenancy acceder a las bases de datos de este arrendamiento.
    ADMIT group xt_db_users of tenancy user_tenancy to use database-connections in tenancy
  6. Cree una política de aprobación que coincida con la política de admisión creada en el arrendamiento de usuario.
    La política Endorse permitirá que las bases de datos del arrendamiento de la base de datos consulten información del grupo desde user_tenancy.
    ENDORSE any-user to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy user_tenancy
Si bien el uso de any-user facilita la comprensión de las políticas necesarias, Oracle recomienda utilizar restricciones más estrictas además de utilizar any-user o en lugar de hacerlo. La opción any-user permitirá que cualquier entidad o recurso consulte grupos de usuarios en user_tenancy. Idealmente, debería limitar esto a permitir que los recursos de la base de datos (principales de recursos) realicen las consultas de grupo. Para ello, agregue una cláusula WHERE a las políticas o agregue un grupo dinámico que lo limite a los miembros del grupo dinámico. La definición de todas las formas posibles de especificar políticas y grupos dinámicos está fuera del ámbito de este tema. Puede encontrar más información de estas fuentes:

Ejemplos de políticas para el acceso entre arrendamientos

Entre los ejemplos se incluye el uso de una cláusula WHERE para acotar la configuración entre arrendamientos y otros métodos para realizar este tipo de configuración.

Puede agregar una cláusula WHERE para limitar los recursos de base de datos que pueden realizar la consulta de grupo entre arrendamientos:

ADMIT any-user of tenancy db_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy where request.principal.type = 'dbsystem'

Esta política de admisión permite a cualquier servicio de base de datos base (tipo de recurso: dbsystem) en db_tenancy consultar la información de grupo de un usuario desde el arrendamiento del usuario. Los nombres de tipo de recurso se encuentran en la siguiente tabla.

Se puede realizar un método similar colocando el mismo tipo de recurso en un grupo dinámico:

dynamic group: db_principals
any {resource.type = 'dbsystem', resource.type = 'vmcluster', resource.type = 'cloudvmcluster'}

El grupo dinámico del ejemplo anterior incluye instancias de base de datos para Oracle Base Database Service (dbsystem), Oracle Exadata Cloud@Customer (vmcluster) y Oracle Exadata Database Service (cloudvmcluster).

En este ejemplo se utiliza un grupo dinámico en lugar de any-user:

ADMIT dynamic group db_principals of tenancy db_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy

También puede agregar todos los principales de recursos en un compartimento mediante resource.compartment.id. Sin embargo, esto también puede permitir que otros principales de recursos no de base de datos realicen la consulta de grupo entre arrendamientos. En la siguiente tabla se proporciona una asignación de los distintos tipos de recursos con el nombre de plataforma DBaaS:

DBaaS Nombre de la Plataforma Nombre del tipo de recurso

ADB-S

autonomousdatabase

ADB-D (OPC)

cloudautonomousvmcluster*

EDT base

dbsystem

ExaCS

cloudvmcluster

ExaCC

vmcluster

* Las instancias de ADBD más antiguas pueden seguir utilizando el tipo de recurso autonomousexainfrastructure.

Asignación de Esquemas y Roles de Base de Datos a Usuarios y Grupos en Otro Arrendamiento

Al realizar este tipo de asignación, debe agregar el OCID de arrendamiento a la información de asignación para que la base de datos sepa que es acceso entre arrendamientos.

Utilice dos puntos completos para separar el OCID del arrendamiento cuando utilice las sentencias CREATE USER y CREATE ROLE en SQL*Plus.
  • Para utilizar la sentencia CREATE USER para realizar la asignación:
    Los siguientes ejemplos muestran la asignación de esquemas compartidos y exclusivos con principales y grupos en dominios por defecto y no por defecto. Al utilizar dominios predeterminados, no es necesario incluir un nombre de dominio.
    CREATE USER schema1 IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_NAME=ocid1.tenancy.OCID:example_domain/peter.fitch@oracle.com';
    
    CREATE USER schema2 IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_NAME=ocid1.tenancy.OCID:peter.fitch@oracle.com';
    
    CREATE USER qa_db_user_group IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.OCID:example_domain/xt_db_users';
    
    CREATE USER qa_sales_user_group IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.OCID:sales_users';
    
    CREATE USER xt_ip_user IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_OCID=ocid1.instance.region1.sea.OCID';
    GRANT CREATE SESSION TO xt_ip_user;
    
    CREATE USER xt_iam_dg IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.region1.OCID:sales_principals';
    GRANT CREATE SESSION TO xt_iam_dg;
  • Para utilizar la sentencia CREATE ROLE para realizar la asignación:
    Los siguientes ejemplos muestran la asignación de roles globales con grupos en dominios predeterminados y no predeterminados. Al utilizar dominios predeterminados, no es necesario incluir un nombre de dominio.
    CREATE ROLE globalrole1 IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.abcdef:example_domain/xt_db_users';
    
    CREATE ROLE globalrole2 IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.abcdef:sales_users';

Configuración de Clientes de Base de Datos para el Acceso entre Arrendamientos

Puede configurar algunos clientes de base de datos directamente.

El arrendamiento de base de datos se debe identificar en la cadena de conexión o en sqlnet.ora si el cliente está configurado para obtener directamente el token de acceso de OCI IAM. Revise la documentación específica del cliente para conocer los valores de parámetros específicos (JDBC-thin, ODP.NET-core, gestionado).

Solicitud de tokens entre arrendamientos mediante la interfaz de línea de comandos de OCI

Debe agregar el parámetro --scope al comando de la interfaz de línea de comandos de Oracle Cloud Infrastructure (OCI) para obtener un db-token para una solicitud entre arrendamientos. Si la base de datos a la que está accediendo está en una región diferente a la región principal del arrendamiento de usuario, la región también se debe agregar al comando de la CLI de OCI mediante el parámetro --region.

Consulte Optional Parameters para obtener más información sobre el uso de los parámetros opcionales del comando oci get.

Puede definir el ámbito de todo el arrendamiento o definirlo en un compartimento o base de datos del arrendamiento. Al definir el ámbito para el compartimento o la base de datos entre arrendamientos, no es necesario agregar también la información del arrendamiento porque los OCID del compartimento y la base de datos son únicos en OCI.

Algunos clientes pueden solicitar los tokens directamente desde MSEI. Consulte su documentación sobre la configuración de los parámetros para obtener los tokens de acceso OAuth2 de MSEI.