Todos los productos
Search
Centro de documentos

Hologres:CREATE USER MAPPING

Última actualización: Sep 05, 2026

Hologres V3.0 y versiones posteriores admiten la asignación de roles de RAM a cuentas en una instancia. Esto permite que una cuenta de inicio de sesión asuma un rol de RAM para acceder a sistemas externos entre cuentas. Actualmente, solo puede usar un rol de RAM para acceder a orígenes de datos de DLF 2.5 y a otras instancias de Hologres. Este tema describe el uso y las condiciones del comando CREATE USER MAPPING.

Contexto

Una asignación de usuario define una relación entre un usuario de inicio de sesión de Hologres y una cuenta de Alibaba Cloud. Permite que el usuario actual de Hologres, incluido un usuario BASIC, utilice dicha asignación para acceder a servicios externos entre cuentas. Estos servicios incluyen MaxCompute, DLF, OSS y consultas entre bases de datos en Hologres. Para obtener más información, consulte PostgreSQL CREATE USER MAPPING.

Límites

  • Para otorgar permisos a un usuario estándar, debe tener permisos de SuperUser en la instancia de Hologres o permisos de Owner en el servidor externo. Un usuario con permisos de uso de servidor externo también puede crear una asignación de usuario para sí mismo.

  • Los orígenes de datos de MaxCompute y DLF 1.0 no admiten la configuración de asignaciones de usuario con roles de RAM.

Descripción de la sintaxis

Configuración para una base de datos externa

Origen de datos de MaxCompute

  • Sintaxis

    CREATE USER MAPPING FOR "<user_name>"
    EXTERNAL DATABASE <ext_db_name>
    OPTIONS
    (
        access_id '<Access_id>',
        access_key '<Access_key>'
    );
  • Descripción de parámetros

    Nombre del parámetro

    Descripción

    user_name

    La cuenta a la que se le otorgarán permisos. Puede ser otro usuario de RAM, una cuenta interna de Hologres (cuenta BASIC) o public para acceso público a todos los usuarios. Utilice public con precaución.

    Access_id

    El AccessKey ID de la cuenta actual. Para obtener el AccessKey ID, vaya a la consola de Resource Access Management (RAM).

    Access_key

    El AccessKey secret de la cuenta actual.

Origen de datos de DLF

  • Sintaxis

    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']
    );
    Nota

    Cuando utiliza un RoleARN para configurar una asignación de usuario, debe configurar la política de acceso hologram::GrantAssumeRole en RAM. Hologres usa esta política para comprobar si el usuario actual tiene permiso para crear la asignación de usuario para el RoleARN especificado. Un usuario con este permiso puede crear una asignación de usuario hacia el RoleARN para cualquier usuario en Hologres. El siguiente ejemplo muestra la política:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "hologram:GrantAssumeRole",
          "Resource": "<Role_ARN>"
        }
      ]
    }
  • Descripción de parámetros

    Nombre del parámetro

    Descripción

    user_name

    La cuenta a la que se le otorgarán permisos. Puede ser otro usuario de RAM, una cuenta interna de Hologres (cuenta BASIC) o public para acceso público a todos los usuarios. Utilice public con precaución.

    ext_db_name

    La base de datos externa creada en la instancia de Hologres mediante CREATE EXTERNAL DATABASE. Se utiliza para cargar metadatos del origen de datos externo en Hologres. Para obtener más información, consulte CREATE EXTERNAL DATABASE.

    access_id

    El AccessKey ID de la cuenta actual. Para obtener el AccessKey ID, vaya a la consola de Resource Access Management (RAM).

    access_key

    El AccessKey secret de la cuenta actual.

    dlf_access_id

    El AccessKey ID de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en DLF.

    dlf_access_key

    El AccessKey secret de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en DLF.

    oss_access_id

    El AccessKey ID de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en OSS.

    oss_access_key

    El AccessKey secret de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en OSS.

    rolearn

    El Alibaba Cloud Resource Name (ARN) del rol. El ARN es el descriptor global de recursos del rol y se utiliza para especificarlo. El formato es acs:ram::<account-id>:role/<role-name>. La parte <role-name> se convierte a minúsculas. Para obtener información sobre cómo ver el ARN de un rol, consulte View a RAM role.

Consulta de asignaciones de usuario configuradas para una base de datos externa

SELECT
    datname,
    usename,
    eumoptions
FROM
    pg_holo_external_user_mappings;

Configuración para un servidor externo

Origen de datos de MaxCompute

  • Sintaxis

    CREATE USER MAPPING FOR "<user_name>"
    SERVER odps_server  -- Fixed server
    OPTIONS
    (  
       access_id '<access_id>', 
       access_key '<access_key>'
    );
  • Descripción de parámetros

    Nombre del parámetro

    Descripción

    user_name

    La cuenta a la que se le otorgarán permisos. Puede ser otro usuario de RAM, una cuenta interna de Hologres (cuenta BASIC) o public para acceso público a todos los usuarios. Utilice public con precaución.

    access_id

    El AccessKey ID de la cuenta actual. Para obtener el AccessKey ID, vaya a la consola de Resource Access Management (RAM).

    access_key

    El AccessKey secret de la cuenta actual.

Origen de datos de DLF

  • Sintaxis

    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']
    );
  • Descripción de parámetros

    Nombre del parámetro

    Descripción

    user_name

    La cuenta a la que se le otorgarán permisos. Puede ser otro usuario de RAM, una cuenta interna de Hologres (cuenta BASIC) o public para acceso público a todos los usuarios. Utilice public con precaución.

    server_name

    El nombre del servidor externo. Es el nombre personalizado que estableció en el paso anterior. Para un origen de datos de MaxCompute, el servidor es el servidor integrado fijo odps_server. Para obtener más información, consulte Create a foreign server.

    access_id

    El AccessKey ID de la cuenta actual. Para obtener el AccessKey ID, vaya a la consola de Resource Access Management (RAM).

    access_key

    El AccessKey secret de la cuenta actual.

    dlf_access_id

    El AccessKey ID de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en DLF.

    dlf_access_key

    El AccessKey secret de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en DLF.

    oss_access_id

    El AccessKey ID de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en OSS.

    oss_access_key

    El AccessKey secret de una cuenta de Alibaba Cloud o usuario de RAM que tenga permisos de lectura y escritura en OSS.

    rolearn

    El Alibaba Cloud Resource Name (ARN) del rol. El ARN es el descriptor global de recursos del rol y se utiliza para especificarlo. El formato es acs:ram::<account-id>:role/<role-name>. La parte <role-name> se convierte a minúsculas. Para obtener información sobre cómo ver el ARN de un rol, consulte View a RAM role.

Origen de datos de Hologres

  • Sintaxis

    CREATE USER MAPPING FOR "<user_name>"
    SERVER <server_name>
    OPTIONS (
      access_id '<access_id>', 
      access_key '<access_key>'
    );
  • Descripción de parámetros

    Nombre del parámetro

    Descripción

    user_name

    La cuenta a la que se le otorgarán permisos. Puede ser otro usuario de RAM, una cuenta interna de Hologres (cuenta BASIC) o public para acceso público a todos los usuarios. Utilice public con precaución.

    server_name

    El servidor creado en Hologres para realizar consultas entre bases de datos. Para obtener más información, consulte Cross-database queries (Beta).

    access_id

    El AccessKey ID de la cuenta actual. Para obtener el AccessKey ID, vaya a la consola de Resource Access Management (RAM).

    access_key

    El AccessKey secret de la cuenta actual.

Consulta de asignaciones de usuario configuradas para una base de datos interna

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;

Ejemplos de uso

Base de datos externa (recomendado)

  1. Este ejemplo utiliza un origen de datos de DLF 2.5. Primero, cree una base de datos externa para asociarla con un catálogo Paimon en DLF.

    CREATE EXTERNAL DATABASE ext_db_dlf
    WITH 
      metastore_type 'dlf-rest' 
      catalog_type 'paimon' 
      dlf_catalog 'paimon_catalog'; 
  2. Una vez creada la base de datos externa, solo el Superuser de la instancia y el DB Owner pueden acceder a ella; otras cuentas no tienen acceso. Posteriormente, puede otorgar permisos a un usuario de RAM creando un rol de RAM en la consola de Resource Access Management (RAM) y ejecutando el comando CREATE USER MAPPING en Hologres.

    1. Cree un rol y configure políticas en RAM.

      1. Inicie sesión en la consola de RAM y haga clic en Role uicontrol替换 修改时间:2026-02-03 01:23:30 原文:角色 修改后:conref="mcms_dita_hologres-console.dita#hologres-console/role" > Create Role. Seleccione Alibaba Cloud Service como tipo de entidad de confianza, seleccione Service Role como tipo de rol, introduzca un nombre de rol, establezca Select Trusted Service en Interactive Analytics y haga clic en Complete uicontrol替换 修改时间:2026-02-03 01:23:30 原文:完成 修改后:conref="mcms_dita_holoweb.dita#holoweb/complete" .

      2. Vaya a la página Permission Model. Haga clic en Create Policy > Script Editor. Cree políticas separadas para las comprobaciones de permisos requeridas por Hologres y DLF. Las políticas son las siguientes.

        Política de comprobación de permisos requerida por Hologres.

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

        Política de comprobación de permisos requerida por DLF.

        {
            "Version": "1",
            "Statement": [
                {
                    "Action": "dlf:CheckPermissions",
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }
      3. Vaya a la página Role. Haga clic en Grant Permission. Agregue las dos políticas que creó.

    2. En Hologres, ejecute el comando CREATE USER MAPPING para otorgar al usuario de RAM permisos sobre la base de datos ext_db_dlf.

      CREATE USER MAPPING FOR "p4_203535926287167253"
      EXTERNAL DATABASE ext_db_dlf
      OPTIONS
      (
          rolearn 'acs:ram::xxx:role/testramrole'
      );
  3. Inicie sesión en la consola de Hologres como el usuario de RAM y ejecute una consulta en el editor SQL.

    SELECT * FROM ext_db_dlf.dlf_db.paimon_table;

Servidor externo

Este ejemplo utiliza un origen de datos de MaxCompute. Muestra cómo otorgar permisos a una cuenta BASIC de Hologres para acceder a una tabla externa de MaxCompute.

  1. Cree una cuenta BASIC en Hologres.

    CREATE USER basicuser;
  2. Otorgue a la cuenta BASIC permisos de acceso a odps_server.

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