Todos os produtos
Search
Central de documentação

Hologres:CREATE USER MAPPING

Última atualização: Jun 28, 2026

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

    Ao usar um RoleARN para configurar um mapeamento de usuário, defina a política de acesso hologram::GrantAssumeRole no 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)

  1. 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'; 
  2. 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.

    1. Crie uma função e configure as políticas no RAM.

      1. 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" .

      2. 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"
                }
            ]
        }
      3. Acesse a página Role. Clique em Grant Permission. Adicione as duas políticas criadas anteriormente.

    2. 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'
      );
  3. 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.

  1. Crie uma conta BASIC no Hologres.

    CREATE USER basicuser;
  2. 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'
    );