Accès à une base de données colocative à l'aide d'une intégration IAM

Les utilisateurs et les groupes d'une location peuvent accéder aux instances de base de données DBaaS d'une autre location si les stratégies des deux locations le permettent.

A propos de l'accès inter-location pour les utilisateurs IAM aux instances DBaaS

L'accès inter-locations à une instance DBaaS Oracle Cloud Infrastructure (OCI) est similaire à un scénario de location unique, à ceci près que les informations de location sont requises pour les mises en correspondance et les demandes de jeton et qu'une stratégie est requise dans les deux locations pour autoriser cet accès aux ressources de base de données inter-locations.

La figure suivante illustre le processus d'accès inter-locations à une instance OCI DBaaS.

Figure 3-1 Accès inter-location à une instance OCI DBaaS

Description de la figure 3-1
Description de la figure 3-1 Accès inter-location à une instance OCI DBaaS

Le processus inter-locations est le suivant :

  1. La stratégie est requise dans les deux locations pour approuver et admettre l'accès inter-location.
  2. Le principal IAM (utilisateur ou application) demande un jeton de base de données pour une ressource inter-location.
  3. db-token est renvoyé et est utilisé pour accéder à la base de données dans une autre location
  4. La base de données effectue une requête de groupe inter-locations pour les groupes de l'utilisateur et met en correspondance le principal avec le schéma global et les rôles globaux facultatifs.

Vous devez abonner la location utilisateur aux régions dans lesquelles se trouvent les bases de données. Par exemple, si les bases de données de la location de base de données se trouvent dans les régions PHX et IAD, vous devez abonner la location utilisateur à ces régions. Il ne s'agit pas de la région d'origine, mais uniquement des régions abonnées supplémentaires dans la location utilisateur.

Configuration des stratégies

Vous devez créer des stratégies à la fois dans la location utilisateur et dans la location de ressource de base de données pour autoriser l'accès à la base de données inter-locations.

Configuration de la location utilisateur source

Deux stratégies sont requises pour autoriser l'accès inter-location dans la location utilisateur.

La première stratégie consiste à autoriser un groupe de locations d'utilisateurs à accéder à une base de données dans une autre location. La deuxième stratégie permet à une base de données de la location de base de données d'interroger les informations de groupe dans la location d'utilisateur.
  1. Dans la console OCI, sélectionnez Identité et sécurité.
  2. Sous Identité, sélectionnez Stratégies.
  3. Cliquez sur Créer une stratégie et, dans le générateur de stratégies, sélectionnez Afficher l'éditeur manuel.
  4. Utilisez l'instruction DEFINE pour faciliter la lecture des stratégies réelles.
    Par exemple :
    DEFINE tenancy database_tenancy as ocid1.tenancy.OCID
  5. Endossez le groupe de locations domainA/xt_db_users pour utiliser database_connections dans la location database_tenancy.
    Cela permet aux utilisateurs du groupe xt_db_users dans domainA d'accéder à n'importe quelle base de données de la location database_tenancy.
    ENDORSE group domainA/xt_db_users to use database-connections in tenancy database_tenancy
  6. Utilisez l'instruction ADMIT pour créer une stratégie d'admission afin d'autoriser toute base de données de la location de base de données à interroger les informations de groupe pour des utilisateurs IAM spécifiques dans la location utilisateur.
    ADMIT any-user of tenancy database_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy

Configuration de la location de ressource de base de données cible

La location de base de données aura besoin de stratégies de mise en correspondance pour permettre l'accès aux utilisateurs à partir de la location d'utilisateur, ainsi que pour autoriser ses propres bases de données à interroger les informations de groupe dans la location d'utilisateur

  1. Dans la console OCI, sélectionnez Identité et sécurité.
  2. Sous Identité, sélectionnez Stratégies.
  3. Cliquez sur Créer une stratégie et, dans le générateur de stratégies, sélectionnez Afficher l'éditeur manuel.
  4. Utilisez DEFINE pour faciliter le dépannage et la lecture des stratégies.
    DEFINE tenancy user_tenancy as ocid1.tenancy.OCID
    DEFINE group xt_db_users as ocid1.group.defg
    
  5. Utilisez ADMIT pour créer une stratégie d'admission dans la location afin qu'elle corresponde à la stratégie d'approbation de la location utilisateur.
    La stratégie d'admission doit correspondre à la stratégie ENDORSE dans la location d'utilisateur afin de permettre aux utilisateurs de user_tenancy d'accéder aux bases de données de cette location.
    ADMIT group xt_db_users of tenancy user_tenancy to use database-connections in tenancy
  6. Créez une stratégie d'approbation, qui correspondra à la stratégie d'admission créée dans la location utilisateur.
    La stratégie d'approbation permet aux bases de données de la location de base de données d'interroger les informations de groupe à partir de user_tenancy.
    ENDORSE any-user to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy user_tenancy
Bien que l'utilisation de any-user facilite la compréhension des stratégies requises, Oracle recommande d'utiliser des contraintes plus fortes en plus ou au lieu d'utiliser any-user. L'option any-user permet à n'importe quel principal ou ressource d'interroger les groupes d'utilisateurs dans user_tenancy. Dans l'idéal, limitez cette option à autoriser uniquement les ressources de base de données (principaux de ressource) à effectuer des requêtes de groupe. Pour ce faire, ajoutez une clause WHERE aux stratégies ou ajoutez un groupe dynamique qui le limite aux membres du groupe dynamique. La définition de toutes les méthodes possibles pour spécifier des groupes dynamiques et des stratégies ne fait pas partie de cette rubrique. Pour plus d'informations, consultez les sources suivantes :

Exemples de stratégie pour l'accès inter-locations

Par exemple, l'utilisation d'une clause WHERE pour affiner la configuration inter-location et d'autres méthodes d'exécution de ce type de configuration.

Vous pouvez ajouter une clause WHERE pour limiter les ressources de base de données autorisées à effectuer la requête de groupe inter-locations :

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

Cette stratégie d'admission permet à tout service Base Database (type de ressource : dbsystem) dans db_tenancy d'interroger les informations de groupe d'un utilisateur à partir de la location d'utilisateur. Les noms de types de ressources figurent dans le tableau ci-dessous.

Une méthode similaire peut être effectuée en plaçant le même type de ressource dans un groupe dynamique :

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

Le groupe dynamique de l'exemple précédent inclut les instances de base de données pour Oracle Base Database Service (dbsystem), Oracle Exadata Cloud@Customer (vmcluster) et Oracle Exadata Database Service (cloudvmcluster).

Cet exemple utilise un groupe dynamique au lieu de any-user :

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

Vous pouvez également ajouter tous les principaux de ressource d'un compartiment à l'aide de resource.compartment.id. Toutefois, cela peut également permettre à d'autres principaux de ressource autres que de base de données d'effectuer la requête de groupe inter-locations. Le tableau suivant fournit une mise en correspondance des différents types de ressource avec le nom de plate-forme DBaaS :

DBaaS Nom de plate-forme Nom de type de ressource

ADB-S

autonomousdatabase

ADB-D (OPC)

cloudautonomousvmcluster*

DBS de base

dbsystem

ExaCS

cloudvmcluster

ExaCC

vmcluster

* Les anciennes instances ADBD peuvent toujours utiliser le type de ressource autonomousexainfrastructure.

Mise en correspondance de schémas et de rôles de base de données avec des utilisateurs et des groupes dans une autre location

Lorsque vous effectuez ce type de mise en correspondance, vous devez ajouter l'OCID de location aux informations de mise en correspondance afin que la base de données sache qu'il s'agit d'un accès inter-locations.

Utilisez le signe deux-points complet pour séparer l'OCID de location lorsque vous utilisez les instructions CREATE USER et CREATE ROLE dans SQL*Plus.
  • Pour utiliser l'instruction CREATE USER afin d'effectuer la mise en correspondance, procédez comme suit :
    Les exemples suivants présentent un mappage de schéma exclusif et partagé avec des principaux et des groupes dans les domaines par défaut et non par défaut. Lorsque vous utilisez des domaines par défaut, vous n'avez pas besoin d'inclure de nom de domaine.
    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;
  • Pour utiliser l'instruction CREATE ROLE afin d'effectuer la mise en correspondance, procédez comme suit :
    Les exemples suivants illustrent le mappage des rôles globaux avec des groupes dans des domaines par défaut et non par défaut. Lorsque vous utilisez des domaines par défaut, vous n'avez pas besoin d'inclure de nom de domaine.
    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';

Configuration des clients de base de données pour l'accès inter-location

Vous pouvez configurer directement certains clients de base de données.

La location de base de données doit être identifiée dans la chaîne de connexion ou dans sqlnet.ora si le client est configuré pour obtenir directement le jeton d'accès à partir d'OCI IAM. Consultez la documentation propre au client pour connaître les valeurs de paramètre spécifiques (JDBC-thin, ODP.NET-core, managed).

Demande de jetons inter-location à l'aide de l'interface de ligne de commande OCI

Vous devez ajouter le paramètre --scope à la commande d'interface de ligne de commande Oracle Cloud Infrastructure (OCI) afin d'obtenir un db-token pour une demande inter-locations. Si la base de données à laquelle vous accédez se trouve dans une région différente de la région d'origine de la location utilisateur, la région doit également être ajoutée à la commande d'interface de ligne de commande OCI à l'aide du paramètre --region.

Pour plus d'informations sur l'utilisation des paramètres facultatifs de la commande oci get, reportez-vous à la section Optional Parameters.

Vous pouvez la définir sur l'ensemble de la location ou la définir sur un compartiment ou une base de données de la location. Lors de la définition de la portée pour un compartiment ou une base de données inter-location, vous n'avez pas besoin d'ajouter également les informations de location car les OCID de compartiment et de base de données sont uniques dans OCI.

Certains clients peuvent demander les jetons directement auprès de MSEI. Reportez-vous à la documentation relative à la définition des paramètres pour obtenir les jetons d'accès MSEI OAuth2.