Tous les produits
Search
Centre de documentation

Hologres:CREATE USER MAPPING

Dernière mise à jour :Aug 11, 2026

Hologres V3.0 et les versions ultérieures permettent de mapper des rôles RAM sur les comptes d'une instance. Cette fonctionnalité autorise un compte connecté à endosser un rôle RAM pour accéder à des systèmes externes depuis un autre compte. À ce jour, l'utilisation d'un rôle RAM est limitée aux sources de données DLF 2.5 et aux autres instances Hologres. Cette rubrique détaille l'utilisation et les conditions relatives à la commande CREATE USER MAPPING.

Informations générales

Un mappage d'utilisateur définit une relation entre un utilisateur connecté à Hologres et un compte Alibaba Cloud. Il permet à l'utilisateur Hologres actuel, y compris un utilisateur BASIC, d'accéder à des services externes inter-comptes via un mappage d'utilisateur. Parmi ces services figurent MaxCompute, DLF, OSS et les requêtes inter-bases de données dans Hologres. Pour plus d'informations, consultez la documentation PostgreSQL CREATE USER MAPPING.

Limites

  • Pour accorder des autorisations à un utilisateur standard, vous devez disposer des droits SuperUser sur l'instance Hologres ou des droits Owner sur le serveur distant. Un utilisateur bénéficiant des droits Foreign Server Usage peut également créer un mappage d'utilisateur pour lui-même.

  • Les sources de données MaxCompute et DLF 1.0 ne prennent pas en charge la configuration de mappages d'utilisateurs avec des rôles RAM.

Description de la syntaxe

Configuration pour une base de données externe

Source de données MaxCompute

  • Syntaxe

    CREATE USER MAPPING FOR "<user_name>"
    EXTERNAL DATABASE <ext_db_name>
    OPTIONS
    (
        access_id '<Access_id>',
        access_key '<Access_key>'
    );
  • Description des paramètres

    Nom du paramètre

    Description

    user_name

    Compte auquel les autorisations sont accordées. Il peut s'agir d'un autre utilisateur RAM, d'un compte interne Hologres (compte BASIC) ou de public pour un accès public à tous les utilisateurs. Utilisez public avec prudence.

    Access_id

    ID AccessKey du compte actuel. Pour obtenir l'ID AccessKey, accédez à la console Resource Access Management (RAM).

    Access_key

    Secret AccessKey du compte actuel.

Source de données DLF

  • Syntaxe

    CREATE USER MAPPING FOR "<user_name>"
    EXTERNAL DATABASE <ext_db_name>
    OPTIONS
    (
        -- For DLF 1.0
        [dlf_access_id 'LTxxxxxxxxxx',
        dlf_access_key 'y8xxxxxxxxxxxxx',
        oss_access_id 'LTxxxxxxxxxx',
        oss_access_key 'y8xxxxxxxxxxxxx'] 
        -- For DLF 2.5
        [dlf_access_id 'LTxxxxxxxxxx',
        dlf_access_key 'y8xxxxxxxxxxxxx'] | 
        [rolearn 'RoleARN']
    );
    Remarque

    Lorsque vous utilisez un RoleARN pour configurer un mappage d'utilisateur, vous devez configurer la stratégie d'accès hologram::GrantAssumeRole dans RAM. Hologres utilise cette stratégie pour vérifier si l'utilisateur actuel dispose de l'autorisation nécessaire pour créer le mappage d'utilisateur correspondant au RoleARN spécifié. Un utilisateur disposant de cette autorisation peut créer un mappage vers le RoleARN pour n'importe quel utilisateur dans Hologres. L'exemple suivant illustre cette stratégie :

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "hologram:GrantAssumeRole",
          "Resource": "<Role_ARN>"
        }
      ]
    }
  • Description des paramètres

    Nom du paramètre

    Description

    user_name

    Compte auquel les autorisations sont accordées. Il peut s'agir d'un autre utilisateur RAM, d'un compte interne Hologres (compte BASIC) ou de public pour un accès public à tous les utilisateurs. Utilisez public avec prudence.

    ext_db_name

    Base de données externe créée dans l'instance Hologres à l'aide de CREATE EXTERNAL DATABASE. Elle sert à charger les métadonnées de la source de données externe dans Hologres. Pour plus d'informations, consultez la rubrique CREATE EXTERNAL DATABASE.

    access_id

    ID AccessKey du compte actuel. Pour obtenir l'ID AccessKey, accédez à la console Resource Access Management (RAM).

    access_key

    Secret AccessKey du compte actuel.

    dlf_access_id

    ID AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur DLF.

    dlf_access_key

    Secret AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur DLF.

    oss_access_id

    ID AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur OSS.

    oss_access_key

    Secret AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur OSS.

    rolearn

    Alibaba Cloud Resource Name (ARN) du rôle. L'ARN constitue le descripteur global de la ressource pour le rôle et permet de le spécifier. Le format est acs:ram::<account-id>:role/<role-name>. La partie <role-name> est convertie en minuscules. Pour savoir comment afficher l'ARN d'un rôle, consultez la rubrique View a RAM role.

Interrogation des mappages d'utilisateurs configurés pour une base de données externe

SELECT
    datname,
    usename,
    eumoptions
FROM
    pg_holo_external_user_mappings;

Configuration pour un serveur distant

Source de données MaxCompute

  • Syntaxe

    CREATE USER MAPPING FOR "<user_name>"
    SERVER odps_server  -- Fixed server
    OPTIONS
    (  
       access_id '<access_id>', 
       access_key '<access_key>'
    );
  • Description des paramètres

    Nom du paramètre

    Description

    user_name

    Compte auquel les autorisations sont accordées. Il peut s'agir d'un autre utilisateur RAM, d'un compte interne Hologres (compte BASIC) ou de public pour un accès public à tous les utilisateurs. Utilisez public avec prudence.

    access_id

    ID AccessKey du compte actuel. Pour obtenir l'ID AccessKey, accédez à la console Resource Access Management (RAM).

    access_key

    Secret AccessKey du compte actuel.

Source de données DLF

  • Syntaxe

    CREATE USER MAPPING FOR "<user_name>"
    SERVER <server_name>
    OPTIONS
    (
        -- For DLF 1.0
        [dlf_access_id 'LTxxxxxxxxxx',
        dlf_access_key 'y8xxxxxxxxxxxxx',
        oss_access_id 'LTxxxxxxxxxx',
        oss_access_key 'y8xxxxxxxxxxxxx'] 
        -- For DLF 2.5
        [dlf_access_id 'LTxxxxxxxxxx',
        dlf_access_key 'y8xxxxxxxxxxxxx'] | 
        [rolearn 'RoleARN']
    );
  • Description des paramètres

    Nom du paramètre

    Description

    user_name

    Compte auquel les autorisations sont accordées. Il peut s'agir d'un autre utilisateur RAM, d'un compte interne Hologres (compte BASIC) ou de public pour un accès public à tous les utilisateurs. Utilisez public avec prudence.

    server_name

    Nom du serveur distant. Il s'agit du nom personnalisé que vous avez défini à l'étape précédente. Pour une source de données MaxCompute, le serveur correspond au serveur intégré fixe odps_server. Pour plus d'informations, consultez la rubrique Create a foreign server.

    access_id

    ID AccessKey du compte actuel. Pour obtenir l'ID AccessKey, accédez à la console Resource Access Management (RAM).

    access_key

    Secret AccessKey du compte actuel.

    dlf_access_id

    ID AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur DLF.

    dlf_access_key

    Secret AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur DLF.

    oss_access_id

    ID AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur OSS.

    oss_access_key

    Secret AccessKey d'un compte Alibaba Cloud ou d'un utilisateur RAM disposant des autorisations de lecture et d'écriture sur OSS.

    rolearn

    Alibaba Cloud Resource Name (ARN) du rôle. L'ARN constitue le descripteur global de la ressource pour le rôle et permet de le spécifier. Le format est acs:ram::<account-id>:role/<role-name>. La partie <role-name> est convertie en minuscules. Pour savoir comment afficher l'ARN d'un rôle, consultez la rubrique View a RAM role.

Source de données Hologres

  • Syntaxe

    CREATE USER MAPPING FOR "<user_name>"
    SERVER <server_name>
    OPTIONS (
      access_id '<access_id>', 
      access_key '<access_key>'
    );
  • Description des paramètres

    Nom du paramètre

    Description

    user_name

    Compte auquel les autorisations sont accordées. Il peut s'agir d'un autre utilisateur RAM, d'un compte interne Hologres (compte BASIC) ou de public pour un accès public à tous les utilisateurs. Utilisez public avec prudence.

    server_name

    Serveur créé dans Hologres pour effectuer des requêtes inter-bases de données. Pour plus d'informations, consultez la rubrique Cross-database queries (Beta).

    access_id

    ID AccessKey du compte actuel. Pour obtenir l'ID AccessKey, accédez à la console Resource Access Management (RAM).

    access_key

    Secret AccessKey du compte actuel.

Interrogation des mappages d'utilisateurs configurés pour une base de données interne

SELECT
    um.srvname AS "Server",
    um.usename AS "User name"
FROM
    pg_catalog.pg_user_mappings um
WHERE
    um.srvname != 'query_log_store_server'
ORDER BY 1, 2;

Exemples d'utilisation

Base de données externe (recommandé)

  1. Cet exemple utilise une source de données DLF 2.5. Commencez par créer une base de données externe associée à un catalogue Paimon sur DLF.

    CREATE EXTERNAL DATABASE ext_db_dlf
    WITH 
      metastore_type 'dlf-rest' 
      catalog_type 'paimon' 
      dlf_catalog 'paimon_catalog'; 
  2. Une fois la base de données externe créée, seul le superutilisateur de l'instance et le propriétaire de la base de données peuvent y accéder. Les autres comptes en sont exclus. Vous pouvez alors accorder des autorisations à un utilisateur RAM en créant un rôle RAM dans la console Resource Access Management (RAM) et en exécutant la commande CREATE USER MAPPING dans Hologres.

    1. Créez un rôle et configurez les stratégies dans RAM.

      1. Connectez-vous à la console RAM et cliquez sur Role > Create Role. Sélectionnez Alibaba Cloud Service comme type d'entité de confiance, choisissez Service Role comme type de rôle, saisissez un nom de rôle, définissez Select Trusted Service sur Interactive Analytics, puis cliquez sur Complete.

      2. Accédez à la page Permission Model. Cliquez sur Create Policy > Script Editor. Créez des stratégies distinctes pour les vérifications d'autorisations requises par Hologres et DLF. Les stratégies sont présentées ci-dessous.

        Stratégie de vérification des autorisations requise par Hologres.

        {
            "Version": "1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": "hologram:GrantAssumeRole",
                    "Resource": "acs:ram::xxx:role/testramrole"
                }
            ]
        }

        Stratégie de vérification des autorisations requise par DLF.

        {
            "Version": "1",
            "Statement": [
                {
                    "Action": "dlf:CheckPermissions",
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }
      3. Accédez à la page Role. Cliquez sur Grant Permission. Ajoutez les deux stratégies que vous avez créées.

    2. Dans Hologres, exécutez la commande CREATE USER MAPPING pour accorder à l'utilisateur RAM des autorisations sur la base de données ext_db_dlf.

      CREATE USER MAPPING FOR "p4_203535926287167253"
      EXTERNAL DATABASE ext_db_dlf
      OPTIONS
      (
          rolearn 'acs:ram::xxx:role/testramrole'
      );
  3. Connectez-vous à la console Hologres en tant qu'utilisateur RAM et exécutez une requête dans l'éditeur SQL.

    SELECT * FROM ext_db_dlf.dlf_db.paimon_table;

Serveur distant

Cet exemple utilise une source de données MaxCompute. Il explique comment accorder des autorisations à un compte BASIC Hologres pour accéder à une table distante MaxCompute.

  1. Créez un compte BASIC dans Hologres.

    CREATE USER basicuser;
  2. Accordez au compte BASIC les autorisations d'accès à odps_server.

    CREATE USER MAPPING
    FOR "basicuser"
    SERVER odps_server
    OPTIONS
    (
        access_id 'LTxxxxxxxxxx',
        access_key 'y8xxxxxxxxxxxxx'
    );