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

Los usuarios y grupos de un arrendamiento pueden acceder a instancias de Autonomous Database en otro arrendamiento si las políticas de ambos arrendamientos lo permiten.

Acerca del acceso entre arrendamientos para usuarios de IAM a Autonomous Database

El acceso entre arrendamientos a una instancia de Autonomous Database es similar a un escenario de arrendamiento único, excepto que la información de arrendamiento es necesaria para las asignaciones y las solicitudes de token, y 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 muestra el proceso de acceso entre arrendamientos a una instancia de Autonomous Database.

A continuación se muestra la descripción de db_cross_tenancy.eps

El proceso de arrendamiento cruzado 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.

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 de usuario de origen

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

La primera política consiste en 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 del arrendamiento de base de datos consultar información de 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 el creador de políticas, 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 de 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 para permitir que cualquier base de datos del arrendamiento de base de datos consulte información de grupo para usuarios de IAM específicos en el 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 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 el creador de políticas, 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 Endorse del arrendamiento del 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á a las bases de datos del arrendamiento de la base de datos consultar la 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 que utilice restricciones más estrictas además de o en lugar de utilizar any-user. La opción any-user permitirá que cualquier principal 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, puede agregar una cláusula WHERE a las políticas o agregar un grupo dinámico que lo limite a los miembros del grupo dinámico. La definición de todas las formas posibles de especificar grupos dinámicos y políticas 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 que cualquier servicio de base de datos base (tipo de recurso: dbsystem) de db_tenancy consulte la información de grupo de un usuario desde el arrendamiento de usuario. Los nombres de tipos de recursos se encuentran en la siguiente tabla.

Un método similar para crear una política es agregar el tipo de recurso para Autonomous Database a un grupo dinámico:

dynamic group: db_principals any {resource.type = ‘autonomousdatabase’}

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 recurso en un compartimento mediante resource.compartment.id. Sin embargo, esto también puede permitir que otros principales de recursos que no sean de base de datos realicen la consulta de grupo entre arrendamientos.

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 de arrendamiento al utilizar 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 exclusivos y compartidos 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 obtener valores de parámetros específicos (JDBC-thin, ODP.NET-core, managed).

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

Debe agregar el parámetro --scope al comando de interfaz de línea de comandos de Oracle Cloud Infrastructure (OCI) para obtener un valor db-token para una solicitud entre arrendamientos.

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

Puede limitarlo a todo el arrendamiento o a 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 que también agregue la información del arrendamiento porque el compartimento y los OCID de base de datos son únicos en OCI.

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