Tous les produits
Search
Centre de documentation

MaxCompute:Grant permissions on federated external tables

Dernière mise à jour :Aug 10, 2026

Accorder des autorisations sur les tables externes fédérées

Le créateur d'un schéma externe en devient le propriétaire. Cette rubrique explique comment accorder des autorisations sur un schéma externe ou ses tables à d'autres utilisateurs RAM.

Important

MaxCompute ne conserve pas les métadonnées de la source de données en mode Lakehouse. Les politiques d'accès associent les autorisations au nom de la source de données. Si vous renommez une source de données, toutes les autorisations précédemment accordées deviennent invalides. Révoquez les anciennes autorisations à l'aide de la commande REVOKE ou supprimez la politique d'accès avant de renommer la source. Si vous ignorez cette étape, une nouvelle source de données créée avec le nom d'origine pourrait hériter des anciennes autorisations et accorder un accès involontaire à l'utilisateur RAM d'origine dans un projet externe.

Important

Si l'autorisation d'objet basée sur le locataire est activée pour un projet, montez le projet sur une source de données externe avant de créer un schéma externe. Sinon, une erreur se produit lors de la création du schéma externe.

Tous les exemples de cette rubrique utilisent le projet test_lakehouse_project.

Référence des autorisations

Le tableau ci-dessous présente l'autorisation requise pour chaque opération liée aux schémas externes. Accordez les autorisations à l'aide de la commande GRANT, comme indiqué dans chaque section.

Opération

Niveau de l'objet

Autorisations requises

Créer un schéma externe

Projet

CreateSchema ; Usage sur le serveur distant (requis uniquement si l'autorisation d'objet basée sur le locataire est activée)

Répertorier tous les schémas externes

Projet

CreateInstance, List

Décrire un schéma externe

Schéma

Describe

Modifier les propriétés d'un schéma externe

Non pris en charge

Supprimer un schéma externe

Schéma

Drop

Utiliser un schéma externe (modèle à trois niveaux)

Aucune autorisation requise

Utiliser un schéma externe (mis à niveau depuis le modèle à deux niveaux)

Schéma

Describe

Répertorier les tables d'un schéma externe

Schéma

List

Interroger une table d'un schéma externe

Table

Select

Importer des données depuis une table de schéma externe

Table + Projet

Select sur la table ; CreateTable, CreateInstance sur le projet

Créer un schéma externe

Autorisations requises : CreateSchema sur le projet. Si l'autorisation d'objet basée sur le locataire est activée, l'autorisation Usage sur le serveur distant est également nécessaire.

  1. Définissez le projet actuel et accordez l'autorisation CreateSchema.

    -- Set the current project.
    use test_lakehouse_project;
    
    -- Grant the CreateSchema permission on the project to a RAM user.
    GRANT CreateSchema ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;
  2. (Facultatif) Si l'autorisation d'objet basée sur le locataire est activée et que vous avez monté une source de données externe sur le projet, accordez à l'utilisateur RAM l'autorisation d'utiliser le serveur distant.

    -- Add the RAM account provider to the current project.
    ADD accountprovider ram;
    
    -- Add a RAM user.
    ADD USER `RAM$xxx@test.aliyunid.com:test_user`;
    
    -- Create a project role.
    CREATE role test_lakhouse_role;
    
    -- Add an access policy to the role to allow usage of the external data source.
    put policy D:\bin\allow.policy ON role test_lakhouse_role;
    
    -- Grant the role to the RAM user.
    GRANT role test_lakhouse_role TO `RAM$xxx@test.aliyunid.com:test_user`;

    Le fichier allow.policy doit contenir les éléments suivants :

    {
      "Version": "1",
      "Statement": [{
        "Action": "odps:Usage",
        "Effect": "Allow",
        "Resource": ["acs:odps:*:servers/fs_hive"]
      }]
    }
  3. Créez le schéma externe.

    CREATE EXTERNAL SCHEMA IF NOT EXISTS es_hive3
    with fs_hive
    ON 'default' ;

Répertorier tous les schémas externes

Autorisations requises : CreateInstance et List sur le projet.

  1. Accordez l'autorisation CreateInstance sur le projet.

    GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;
  2. Accordez l'autorisation List sur le projet.

    GRANT List ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;
  3. Répertoriez tous les schémas.

    SHOW schemas;

Décrire un schéma externe

Autorisations requises : Describe sur le schéma.

  1. Accordez l'autorisation Describe sur le schéma.

    GRANT DESCRIBE ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;
  2. Décrivez le schéma externe.

    DESC SCHEMA es_hive3;

Modifier les propriétés d'un schéma externe

La modification des propriétés d'un schéma externe n'est pas prise en charge.

Supprimer un schéma externe

Autorisations requises : Drop sur le schéma.

  1. Accordez l'autorisation Drop sur le schéma.

    GRANT DROP ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;
  2. Supprimez le schéma externe.

    DROP SCHEMA es_hive3;

Utiliser un schéma externe

L'autorisation requise dépend de la manière dont le projet a été créé :

  • Modèle à trois niveaux (natif) : aucune autorisation requise.

  • Mis à niveau du modèle à deux niveaux vers le modèle à trois niveaux : l'autorisation Describe sur le schéma est requise.

Définissez le schéma externe comme schéma actuel.

USE SCHEMA es_hive3;

Si le projet a été mis à niveau depuis le modèle à deux niveaux, accordez l'autorisation Describe avant d'exécuter USE SCHEMA.

GRANT DESCRIBE ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;

Répertorier les tables d'un schéma externe

Autorisations requises : List sur le schéma.

  1. Accordez l'autorisation List sur le schéma.

    GRANT List ON schema es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;
  2. Répertoriez les tables du schéma externe.

    SHOW tables IN es_hive3;

Interroger une table d'un schéma externe

Autorisations requises : Select sur la table.

  1. Accordez l'autorisation Select sur la table.

    GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user;
  2. Interrogez la table.

    SELECT * FROM es_hive3.t1;

Importer des données depuis une table de schéma externe

Autorisations requises : Select sur la table source ; CreateTable et CreateInstance sur le projet.

  1. Accordez l'autorisation CreateTable sur le projet.

    GRANT CreateTable ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;
  2. Accordez l'autorisation CreateInstance sur le projet.

    GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;
  3. Accordez l'autorisation Select sur la table source.

    GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user;
  4. Importez les données de la table du schéma externe dans une nouvelle table gérée.

    CREATE TABLE default.t1_copy_ram3 AS SELECT * FROM t1;