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'] );NotaCuando utiliza un RoleARN para configurar una asignación de usuario, debe configurar la política de acceso
hologram::GrantAssumeRoleen 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)
-
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'; -
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.
-
Cree un rol y configure políticas en RAM.
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" .
-
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" } ] } Vaya a la página Role. Haga clic en Grant Permission. Agregue las dos políticas que creó.
-
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' );
-
-
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.
-
Cree una cuenta BASIC en Hologres.
CREATE USER basicuser; -
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' );