すべてのプロダクト
Search
ドキュメントセンター

Hologres:CREATE USER MAPPING

最終更新日:Jun 22, 2026

Hologres V3.0 以降のバージョンでは、インスタンス内のアカウントへの RAM ロールのマッピングをサポートしています。これにより、ログインアカウントは RAM ロールを偽装して、外部システムへのクロスアカウントアクセスが可能になります。現在、RAM ロールを使用してアクセスできるのは、DLF 2.5 データソースと他の Hologres インスタンスのみです。このトピックでは、CREATE USER MAPPING コマンドの使用方法と条件について説明します。

背景情報

ユーザーマッピングは、Hologres のログインユーザーと Alibaba Cloud アカウントとの間のリレーションシップを定義します。これにより、現在の Hologres ユーザー (BASIC ユーザーを含む) は、ユーザーマッピングを使用して、アカウントをまたいで外部サービスにアクセスできます。これらのサービスには、MaxCompute、DLF、OSS、および Hologres でのデータベース間クエリが含まれます。詳細については、「PostgreSQL CREATE USER MAPPING」をご参照ください。

制限事項

  • 一般ユーザーに権限を付与するには、Hologres インスタンスに対する SuperUser 権限、または外部サーバーに対する Owner 権限が必要です。外部サーバーの使用権限を持つユーザーは、自分自身のためにユーザーマッピングを作成することもできます。

  • MaxCompute データソースと DLF 1.0 は、RAM ロールを使用したユーザーマッピングの設定をサポートしていません。

構文の説明

外部データベースの設定

MaxCompute データソース

  • 構文

    CREATE USER MAPPING FOR "<user_name>"
    EXTERNAL DATABASE <ext_db_name>
    OPTIONS
    (
        access_id '<Access_id>',
        access_key '<Access_key>'
    );
  • パラメーターの説明

    パラメーター名

    説明

    user_name

    権限を付与するアカウント。これは、別の RAM ユーザー、Hologres 内部アカウント (BASIC アカウント)、またはすべてのユーザーにパブリックアクセスを許可する public にすることができます。public の使用には注意が必要です。

    Access_id

    現在のアカウントの AccessKey ID。AccessKey ID を取得するには、Resource Access Management (RAM) コンソールに移動します。

    Access_key

    現在のアカウントの AccessKey Secret。

DLF データソース

  • 構文

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

    RoleARN を使用してユーザーマッピングを設定する場合、RAM で hologram::GrantAssumeRole アクセスポリシーを設定する必要があります。Hologres はこのポリシーを使用して、現在のユーザーが指定された RoleARN のユーザーマッピングを作成する権限を持っているかどうかを確認します。この権限を持つユーザーは、Hologres 内の任意のユーザーに対して、その RoleARN へのユーザーマッピングを作成できます。次の例は、そのポリシーを示しています。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "hologram:GrantAssumeRole",
          "Resource": "<Role_ARN>"
        }
      ]
    }
  • パラメーターの説明

    パラメーター名

    説明

    user_name

    権限を付与するアカウント。これは、別の RAM ユーザー、Hologres 内部アカウント (BASIC アカウント)、またはすべてのユーザーにパブリックアクセスを許可する public にすることができます。public の使用には注意が必要です。

    ext_db_name

    CREATE EXTERNAL DATABASE を使用して Hologres インスタンスに作成された外部データベース。外部データソースから Hologres にメタデータをロードするために使用されます。詳細については、「CREATE EXTERNAL DATABASE」をご参照ください。

    access_id

    現在のアカウントの AccessKey ID。AccessKey ID を取得するには、Resource Access Management (RAM) コンソールに移動します。

    access_key

    現在のアカウントの AccessKey Secret。

    dlf_access_id

    DLF に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

    dlf_access_key

    DLF に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。

    oss_access_id

    OSS に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

    oss_access_key

    OSS に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。

    rolearn

    ロールの Alibaba Cloud リソース名 (ARN)。ARN は、ロールのグローバルリソース記述子であり、ロールを指定するために使用されます。フォーマットは acs:ram::<account-id>:role/<role-name> です。<role-name> 部分は小文字に変換されます。ロールの ARN を表示する方法については、「RAM ロールの表示」をご参照ください。

外部データベースに設定されたユーザーマッピングのクエリ

SELECT
    datname,
    usename,
    eumoptions
FROM
    pg_holo_external_user_mappings;

外部サーバーの設定

MaxCompute データソース

  • 構文

    CREATE USER MAPPING FOR "<user_name>"
    SERVER odps_server  -- Fixed server
    OPTIONS
    (  
       access_id '<access_id>', 
       access_key '<access_key>'
    );
  • パラメーターの説明

    パラメーター名

    説明

    user_name

    権限を付与するアカウント。これは、別の RAM ユーザー、Hologres 内部アカウント (BASIC アカウント)、またはすべてのユーザーにパブリックアクセスを許可する public にすることができます。public の使用には注意が必要です。

    access_id

    現在のアカウントの AccessKey ID。AccessKey ID を取得するには、Resource Access Management (RAM) コンソールに移動します。

    access_key

    現在のアカウントの AccessKey Secret。

DLF データソース

  • 構文

    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']
    );
  • パラメーターの説明

    パラメーター名

    説明

    user_name

    権限を付与するアカウント。これは、別の RAM ユーザー、Hologres 内部アカウント (BASIC アカウント)、またはすべてのユーザーにパブリックアクセスを許可する public にすることができます。public の使用には注意が必要です。

    server_name

    外部サーバーの名前。これは、前のステップで設定したカスタム名です。MaxCompute データソースの場合、サーバーは固定の組み込みサーバー odps_server です。詳細については、「外部サーバーの作成」をご参照ください。

    access_id

    現在のアカウントの AccessKey ID。AccessKey ID を取得するには、Resource Access Management (RAM) コンソールに移動します。

    access_key

    現在のアカウントの AccessKey Secret。

    dlf_access_id

    DLF に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

    dlf_access_key

    DLF に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。

    oss_access_id

    OSS に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

    oss_access_key

    OSS に対する読み取りおよび書き込み権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。

    rolearn

    ロールの Alibaba Cloud リソース名 (ARN)。ARN は、ロールのグローバルリソース記述子であり、ロールを指定するために使用されます。フォーマットは acs:ram::<account-id>:role/<role-name> です。<role-name> 部分は小文字に変換されます。ロールの ARN を表示する方法については、「RAM ロールの表示」をご参照ください。

Hologres データソース

  • 構文

    CREATE USER MAPPING FOR "<user_name>"
    SERVER <server_name>
    OPTIONS (
      access_id '<access_id>', 
      access_key '<access_key>'
    );
  • パラメーターの説明

    パラメーター名

    説明

    user_name

    権限を付与するアカウント。これは、別の RAM ユーザー、Hologres 内部アカウント (BASIC アカウント)、またはすべてのユーザーにパブリックアクセスを許可する public にすることができます。public の使用には注意が必要です。

    server_name

    データベース間クエリを実行するために Hologres で作成されたサーバー。詳細については、「データベース間クエリ (ベータ版)」をご参照ください。

    access_id

    現在のアカウントの AccessKey ID。AccessKey ID を取得するには、Resource Access Management (RAM) コンソールに移動します。

    access_key

    現在のアカウントの AccessKey Secret。

内部データベースに設定されたユーザーマッピングのクエリ

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;

使用例

外部データベース (推奨)

  1. この例では、DLF 2.5 データソースを使用します。まず、外部データベースを作成して、DLF 上の Paimon カタログに関連付けます。

    CREATE EXTERNAL DATABASE ext_db_dlf
    WITH 
      metastore_type 'dlf-rest' 
      catalog_type 'paimon' 
      dlf_catalog 'paimon_catalog'; 
  2. 外部データベースが作成された後、アクセスできるのはインスタンスの Superuser と DB Owner のみです。他のアカウントはアクセスできません。その後、Resource Access Management (RAM) コンソールで RAM ロールを作成し、Hologres で CREATE USER MAPPING コマンドを実行することで、RAM ユーザーに権限を付与できます。

    1. RAM でロールを作成し、ポリシーを設定します。

      1. RAM コンソールにログインし、Role > [ロールの作成] をクリックします。信頼できるエンティティタイプとして [Alibaba Cloud サービス] を選択し、ロールタイプとして [サービスロール] を選択し、ロール名を入力し、[信頼できるサービスの選択][インタラクティブ分析] に設定して、Complete をクリックします。

      2. Permission Model ページに移動します。[ポリシーの作成] > [スクリプトエディター] をクリックします。Hologres と DLF で必要な権限チェックのために、個別のポリシーを作成します。ポリシーは次のとおりです。

        Hologres で必要な権限チェックポリシー。

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

        DLF で必要な権限チェックポリシー。

        {
            "Version": "1",
            "Statement": [
                {
                    "Action": "dlf:CheckPermissions",
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }
      3. Role ページに移動します。Grant Permission をクリックします。作成した 2 つのポリシーを追加します。

    2. Hologres で、CREATE USER MAPPING コマンドを実行して、RAM ユーザーに ext_db_dlf データベースに対する権限を付与します。

      CREATE USER MAPPING FOR "p4_203535926287167253"
      EXTERNAL DATABASE ext_db_dlf
      OPTIONS
      (
          rolearn 'acs:ram::xxx:role/testramrole'
      );
  3. RAM ユーザーとして Hologres コンソールにログインし、SQL エディターでクエリを実行します。

    SELECT * FROM ext_db_dlf.dlf_db.paimon_table;

外部サーバー

この例では、MaxCompute データソースを使用します。Hologres の BASIC アカウントに MaxCompute の外部テーブルへのアクセス権限を付与する方法を示します。

  1. Hologres で BASIC アカウントを作成します。

    CREATE USER basicuser;
  2. BASIC アカウントに odps_server へのアクセス権限を付与します。

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