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.
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.
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 |
|
|
Répertorier tous les schémas externes |
Projet |
|
|
Décrire un schéma externe |
Schéma |
|
|
Modifier les propriétés d'un schéma externe |
— |
Non pris en charge |
|
Supprimer un schéma externe |
Schéma |
|
|
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 |
|
|
Répertorier les tables d'un schéma externe |
Schéma |
|
|
Interroger une table d'un schéma externe |
Table |
|
|
Importer des données depuis une table de schéma externe |
Table + 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.
-
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; -
(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.policydoit contenir les éléments suivants :{ "Version": "1", "Statement": [{ "Action": "odps:Usage", "Effect": "Allow", "Resource": ["acs:odps:*:servers/fs_hive"] }] } -
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.
-
Accordez l'autorisation
CreateInstancesur le projet.GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Accordez l'autorisation
Listsur le projet.GRANT List ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Répertoriez tous les schémas.
SHOW schemas;
Décrire un schéma externe
Autorisations requises : Describe sur le schéma.
-
Accordez l'autorisation
Describesur le schéma.GRANT DESCRIBE ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user; -
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.
-
Accordez l'autorisation
Dropsur le schéma.GRANT DROP ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user; -
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
Describesur 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.
-
Accordez l'autorisation
Listsur le schéma.GRANT List ON schema es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user; -
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.
-
Accordez l'autorisation
Selectsur la table.GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user; -
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.
-
Accordez l'autorisation
CreateTablesur le projet.GRANT CreateTable ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Accordez l'autorisation
CreateInstancesur le projet.GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Accordez l'autorisation
Selectsur la table source.GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user; -
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;