O Hologres V3.0 e versões posteriores permitem mapear funções do RAM para contas em uma instância. Esse recurso possibilita que uma conta de logon assuma uma função do RAM para acessar sistemas externos entre contas. Atualmente, as funções do RAM dão suporte apenas ao acesso a fontes de dados do DLF 2.5 e a outras instâncias do Hologres. Este tópico descreve o uso e as condições do comando CREATE USER MAPPING.
Informações básicas
Um mapeamento de usuário estabelece a relação entre um usuário de logon do Hologres e uma conta da Alibaba Cloud. Essa configuração permite que o usuário atual do Hologres, inclusive usuários BASIC, utilize o mapeamento para acessar serviços externos entre contas. Os serviços compatíveis incluem MaxCompute, DLF, OSS e consultas entre bancos de dados no Hologres. Para mais informações, consulte PostgreSQL CREATE USER MAPPING.
Limites
Para conceder permissões a um usuário comum, você deve ter permissões de SuperUser na instância do Hologres ou permissões de Owner no servidor externo. Usuários com permissões de Uso de Servidor Externo também podem criar um mapeamento de usuário para si mesmos.
Fontes de dados do MaxCompute e DLF 1.0 não oferecem suporte à configuração de mapeamentos de usuário com funções do RAM.
Descrição da sintaxe
Configuração para um banco de dados externo
Fonte de dados do MaxCompute
-
Sintaxe
CREATE USER MAPPING FOR "<user_name>" EXTERNAL DATABASE <ext_db_name> OPTIONS ( access_id '<Access_id>', access_key '<Access_key>' ); -
Descrição dos parâmetros
Nome do parâmetro
Descrição
user_name
Conta que receberá as permissões. Pode ser outro usuário do RAM, uma conta interna do Hologres (conta BASIC) ou public para acesso público a todos os usuários. Use public com cautela.
Access_id
AccessKey ID da conta atual. Para obter o AccessKey ID, acesse o console do Resource Access Management (RAM).
Access_key
AccessKey secret da conta atual.
Fonte de dados do DLF
-
Sintaxe
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'] );NotaAo usar um RoleARN para configurar um mapeamento de usuário, defina a política de acesso
hologram::GrantAssumeRoleno RAM. O Hologres usa essa política para verificar se o usuário atual tem permissão para criar o mapeamento para o RoleARN especificado. Quem possui essa permissão pode criar um mapeamento de usuário para o RoleARN destinado a qualquer usuário no Hologres. O exemplo abaixo ilustra a política:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "<Role_ARN>" } ] } -
Descrição dos parâmetros
Nome do parâmetro
Descrição
user_name
Conta que receberá as permissões. Pode ser outro usuário do RAM, uma conta interna do Hologres (conta BASIC) ou public para acesso público a todos os usuários. Use public com cautela.
ext_db_name
Banco de dados externo criado na instância do Hologres por meio do comando CREATE EXTERNAL DATABASE. Serve para carregar metadados da fonte de dados externa para o Hologres. Para mais informações, consulte CREATE EXTERNAL DATABASE.
access_id
AccessKey ID da conta atual. Para obter o AccessKey ID, acesse o console do Resource Access Management (RAM).
access_key
AccessKey secret da conta atual.
dlf_access_id
AccessKey ID de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no DLF.
dlf_access_key
AccessKey secret de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no DLF.
oss_access_id
AccessKey ID de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no OSS.
oss_access_key
AccessKey secret de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no OSS.
rolearn
Alibaba Cloud Resource Name (ARN) da função. O ARN atua como descritor global de recursos da função e serve para especificá-la. O formato é
acs:ram::<account-id>:role/<role-name>. A parte<role-name>é convertida para letras minúsculas. Para saber como visualizar o ARN de uma função, consulte Visualizar uma função do RAM.
Consultar mapeamentos de usuário configurados para um banco de dados externo
SELECT
datname,
usename,
eumoptions
FROM
pg_holo_external_user_mappings;
Configuração para um servidor externo
Fonte de dados do MaxCompute
-
Sintaxe
CREATE USER MAPPING FOR "<user_name>" SERVER odps_server -- Fixed server OPTIONS ( access_id '<access_id>', access_key '<access_key>' ); -
Descrição dos parâmetros
Nome do parâmetro
Descrição
user_name
Conta que receberá as permissões. Pode ser outro usuário do RAM, uma conta interna do Hologres (conta BASIC) ou public para acesso público a todos os usuários. Use public com cautela.
access_id
AccessKey ID da conta atual. Para obter o AccessKey ID, acesse o console do Resource Access Management (RAM).
access_key
AccessKey secret da conta atual.
Fonte de dados do DLF
-
Sintaxe
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'] ); -
Descrição dos parâmetros
Nome do parâmetro
Descrição
user_name
Conta que receberá as permissões. Pode ser outro usuário do RAM, uma conta interna do Hologres (conta BASIC) ou public para acesso público a todos os usuários. Use public com cautela.
server_name
Nome do servidor externo. Refere-se ao nome personalizado definido na etapa anterior. Para fontes de dados do MaxCompute, o servidor é o servidor interno fixo odps_server. Para mais informações, consulte Criar um servidor externo.
access_id
AccessKey ID da conta atual. Para obter o AccessKey ID, acesse o console do Resource Access Management (RAM).
access_key
AccessKey secret da conta atual.
dlf_access_id
AccessKey ID de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no DLF.
dlf_access_key
AccessKey secret de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no DLF.
oss_access_id
AccessKey ID de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no OSS.
oss_access_key
AccessKey secret de uma conta da Alibaba Cloud ou usuário do RAM com permissões de leitura e gravação no OSS.
rolearn
Alibaba Cloud Resource Name (ARN) da função. O ARN atua como descritor global de recursos da função e serve para especificá-la. O formato é
acs:ram::<account-id>:role/<role-name>. A parte<role-name>é convertida para letras minúsculas. Para saber como visualizar o ARN de uma função, consulte Visualizar uma função do RAM.
Fonte de dados do Hologres
-
Sintaxe
CREATE USER MAPPING FOR "<user_name>" SERVER <server_name> OPTIONS ( access_id '<access_id>', access_key '<access_key>' ); -
Descrição dos parâmetros
Nome do parâmetro
Descrição
user_name
Conta que receberá as permissões. Pode ser outro usuário do RAM, uma conta interna do Hologres (conta BASIC) ou public para acesso público a todos os usuários. Use public com cautela.
server_name
Servidor criado no Hologres para executar consultas entre bancos de dados. Para mais informações, consulte Consultas entre bancos de dados (Beta).
access_id
AccessKey ID da conta atual. Para obter o AccessKey ID, acesse o console do Resource Access Management (RAM).
access_key
AccessKey secret da conta atual.
Consultar mapeamentos de usuário configurados para um banco de dados interno
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;
Exemplos de uso
Banco de dados externo (Recomendado)
-
Este exemplo utiliza uma fonte de dados do DLF 2.5. Primeiro, crie um banco de dados externo para associá-lo a um catálogo Paimon no DLF.
CREATE EXTERNAL DATABASE ext_db_dlf WITH metastore_type 'dlf-rest' catalog_type 'paimon' dlf_catalog 'paimon_catalog'; -
Após a criação do banco de dados externo, apenas o Superuser da instância e o DB Owner têm acesso a ele; outras contas ficam bloqueadas. Em seguida, conceda permissões a um usuário do RAM criando uma função do RAM no console do Resource Access Management (RAM) e executando o comando CREATE USER MAPPING no Hologres.
-
Crie uma função e configure as políticas no RAM.
Faça logon no console do RAM e clique em Role uicontrol替换 修改时间:2026-02-03 01:23:30 原文:角色 修改后:conref="mcms_dita_hologres-console.dita#hologres-console/role" > Create Role. Selecione Alibaba Cloud Service como tipo de entidade confiável, escolha Service Role como tipo de função, insira um nome para a função, defina Select Trusted Service como Interactive Analytics e clique em Complete uicontrol替换 修改时间:2026-02-03 01:23:30 原文:完成 修改后:conref="mcms_dita_holoweb.dita#holoweb/complete" .
-
Acesse a página Permission Model. Clique em Create Policy > Script Editor. Crie políticas separadas para as verificações de permissão exigidas pelo Hologres e pelo DLF. As políticas são as seguintes.
Política de verificação de permissão exigida pelo Hologres.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "acs:ram::xxx:role/testramrole" } ] }Política de verificação de permissão exigida pelo DLF.
{ "Version": "1", "Statement": [ { "Action": "dlf:CheckPermissions", "Resource": "*", "Effect": "Allow" } ] } Acesse a página Role. Clique em Grant Permission. Adicione as duas políticas criadas anteriormente.
-
No Hologres, execute o comando CREATE USER MAPPING para conceder ao usuário do RAM permissões no banco de dados
ext_db_dlf.CREATE USER MAPPING FOR "p4_203535926287167253" EXTERNAL DATABASE ext_db_dlf OPTIONS ( rolearn 'acs:ram::xxx:role/testramrole' );
-
-
Faça logon no console do Hologres como o usuário do RAM e execute uma consulta no editor SQL.
SELECT * FROM ext_db_dlf.dlf_db.paimon_table;
Servidor externo
Este exemplo utiliza uma fonte de dados do MaxCompute e demonstra como conceder permissões a uma conta BASIC do Hologres para acessar uma tabela externa do MaxCompute.
-
Crie uma conta BASIC no Hologres.
CREATE USER basicuser; -
Conceda à conta BASIC permissões de acesso ao
odps_server.CREATE USER MAPPING FOR "basicuser" SERVER odps_server OPTIONS ( access_id 'LTxxxxxxxxxx', access_key 'y8xxxxxxxxxxxxx' );