MaxCompute SQL permet d'auditer les accès en interrogeant les autorisations d'un utilisateur, d'un rôle ou d'un objet, ainsi qu'en inspectant les contrôles d'accès basés sur les libellés et les packages.
Indicateurs d'autorisation
Les résultats des requêtes utilisent des codes à une lettre pour représenter le type d'autorisation accordée :
|
Code |
Signification |
|
A |
Allow — l'opération est autorisée |
|
D |
Deny — l'opération est refusée |
|
C |
With Condition — l'autorisation s'applique uniquement sous certaines conditions spécifiées |
|
G |
With Grant Option — le bénéficiaire peut également accorder cette autorisation à d'autres utilisateurs |
Référence des commandes
Consultez ce résumé pour identifier la commande correspondant à votre scénario, puis reportez-vous à la section appropriée pour obtenir la syntaxe complète et des exemples.
-- Role permissions
show grants for role <role_name>;
describe role <role_name>;
-- User permissions
show grants;
show grants for <user_name>;
-- Access control list (ACL) permissions on an object
show acl for <object_name> [on type <object_type>];
-- Label-based permissions (sensitive data)
show label grants;
show label <level> grants;
show label grants for user <user_name>;
show label <level> grants for user <user_name>;
show label grants on table <table_name>;
show label <level> grants on table <table_name>;
show label [<level>] grants on table <table_name> for user <user_name>;
describe <table_name>;
-- Package permissions
show acl for <project_name>.<package_name> on type package;
show grants on <object_type> <object_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
show label grants on table <table_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
Exécutez ces commandes depuis le client MaxCompute, MaxCompute Studio ou la console DataWorks.
L'utilisation de describe role nécessite d'être propriétaire du projet ou d'avoir le rôle Super_Administrator ou Admin.
Interroger les autorisations d'un rôle
Interroger les autorisations d'un rôle spécifique
show grants for role <role_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom du rôle. Exécutez |
Résultat de la requête : Retourne les autorisations ACL, Policy et Download pour le rôle spécifié.
Exemple
Interrogez les autorisations du rôle Worker dans test_project_a :
show grants for role Worker;
Sortie :
Authorization Type: ACL
[role/Worker]
A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
A projects/test_project_a/tables/bank_data: Download | Describe | Select Expires:20xx-xx-xxTxx:xx:xx+xxxx
Authorization Type: Policy
[role/Worker]
A projects/test_project_a/tables/bak*: Download
A projects/test_project_a/tables/sale_detail: Update
A projects/test_project_a/tables/tb_*: Download | Drop
A projects/test_project_a/tables/view_1: Drop
Interroger les autorisations et les utilisateurs assignés d'un rôle spécifique
Cette opération nécessite d'être propriétaire du projet ou d'avoir le rôle Super_Administrator ou Admin.
describe role <role_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom du rôle. Exécutez |
Résultat de la requête : Retourne les autorisations ACL, Policy et Download pour le rôle, ainsi que la liste des utilisateurs qui lui sont assignés.
Exemple
Bob@aliyun.com est propriétaire de test_project_a. Le rôle Worker est utilisé dans ce projet. Interrogez les autorisations du rôle Worker et ses utilisateurs assignés :
describe role Worker;
Sortie :
[users]
RAM$Bob@aliyun.com:Allen
Authorization Type: ACL
A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
A projects/test_project_a/tables/bank_data: Download
Authorization Type: Policy
A projects/test_project_a/tables/bak*: Download
A projects/test_project_a/tables/sale_detail: Update
A projects/test_project_a/tables/tb_*: Download | Drop
A projects/test_project_a/tables/view_1: Drop
Interroger les autorisations d'un utilisateur
Interroger les autorisations de l'utilisateur actuel
show grants;
Résultat de la requête :
Si l'utilisateur actuel est le propriétaire du projet : retourne le compte Alibaba Cloud et les projets créés par cet utilisateur.
Dans le cas contraire : retourne les rôles assignés à l'utilisateur ainsi que ses autorisations ACL, Policy et Download.
Exemple
Bob@aliyun.com est propriétaire de test_project_a. Allen est un utilisateur RAM ajouté au projet.
En tant que propriétaire du projet (Bob@aliyun.com) :
show grants;
Sortie :
[ALIYUN$Bob@aliyun.com]
projects/test_project_a: Project Owner
En tant qu'utilisateur RAM Allen :
show grants;
Sortie :
[roles]
worker
Authorization Type: ACL
[user/RAM$Bob@aliyun.com:Allen]
A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
A projects/test_project_a/packages/project_test_b.datashare: Read
Authorization Type: Policy
[role/worker]
A projects/test_project_a/tables/tb_*: Drop | Download
Interroger les autorisations d'un utilisateur spécifique
show grants for <user_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom de l'utilisateur. Pour les utilisateurs RAM, utilisez le format |
Résultat de la requête :
Si l'utilisateur spécifié est le propriétaire du projet : retourne le compte Alibaba Cloud et les projets créés par cet utilisateur.
Dans le cas contraire : retourne les rôles assignés à l'utilisateur ainsi que ses autorisations ACL, Policy et Download.
Exemple
Interrogez les autorisations du compte Alibaba Cloud Bob@aliyun.com :
show grants for ALIYUN$Bob@aliyun.com;
Sortie :
[ALIYUN$Bob@aliyun.com]
projects/test_project_a: Project Owner
Interrogez les autorisations de l'utilisateur RAM Allen :
show grants for RAM$Bob@aliyun.com:Allen;
Sortie :
[roles]
worker
Authorization Type: ACL
[user/RAM$Bob@aliyun.com:Allen]
A projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
A projects/test_project_a/packages/project_test_b.datashare: Read
Authorization Type: Policy
[role/worker]
A projects/test_project_a/tables/tb_*: Drop | Download
Interroger les autorisations ACL d'un objet
show acl for <object_name> [on type <object_type>];
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom de l'objet. Consultez la section ci-dessous pour obtenir les noms selon le type d'objet. |
|
|
Non |
Type de l'objet. Valeurs valides : |
Obtenir les noms d'objets par type
|
Type d'objet |
Commande |
|
Project |
Consultez l'onglet la console MaxComputeProject management dans la console MaxCompute. Seul le projet actuel est accessible. |
|
Table ou vue |
Exécutez |
|
Resource |
Exécutez |
|
Function |
Exécutez |
|
Instance |
Exécutez |
Résultat de la requête : Retourne les rôles et utilisateurs disposant d'autorisations sur l'objet, ainsi que leurs autorisations ACL associées.
Exemples
Interrogez les autorisations sur le projet test_project_a :
show acl for test_project_a on type project;
Sortie :
Authorization Type: Implicit
AG project_owner/ALIYUN$Bob@aliyun.com: All
AG admin/ALIYUN$Bob@aliyun.com: All
Authorization Type: ACL
A role/worker(projects/test_project_a): CreateTable | CreateResource | CreateInstance | CreateFunction | List
A role/worker1(projects/test_project_a): CreateTable | CreateResource | CreateInstance | CreateFunction | List
A role/worker2(projects/test_project_a): CreateTable | CreateResource | CreateInstance | CreateFunction
Interrogez les autorisations sur la table sale_detail :
show acl for sale_detail on type table;
Sortie :
Authorization Type: Implicit
AG project_owner/ALIYUN$Bob@aliyun.com: All
AG admin/ALIYUN$Bob@aliyun.com: All
AG object_creator/ALIYUN$Bob@aliyun.com: All
Authorization Type: ACL
A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/tables/sale_detail/customer_id): Describe | Select
A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/tables/sale_detail/shop_name): Describe | Select
Interrogez les autorisations sur la ressource udtf.jar :
show acl for udtf.jar on type resource;
Sortie :
Authorization Type: Implicit
AG project_owner/ALIYUN$Bob@aliyun.com: All
AG admin/ALIYUN$Bob@aliyun.com: All
AG object_creator/ALIYUN$Bob@aliyun.com: All
Authorization Type: ACL
A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/resources/udtf.jar): Read | Write
Interrogez les autorisations sur la fonction UDTFResource :
show acl for UDTFResource on type function;
Sortie :
Authorization Type: Implicit
AG project_owner/ALIYUN$Bob@aliyun.com: All
AG admin/ALIYUN$Bob@aliyun.com: All
AG object_creator/ALIYUN$Bob@aliyun.com: All
Authorization Type: ACL
A role/worker1(acs:odps:*:projects/test_project_a/registration/functions/udtfresource): Download
A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/registration/functions/udtfresource): All
Interrogez les autorisations sur une instance :
show acl for 20220105031923461ghu**** on type instance;
Sortie :
Authorization Type: Implicit
AG project_owner/ALIYUN$Bob@aliyun.com: All
AG admin/ALIYUN$Bob@aliyun.com: All
AG object_creator/ALIYUN$Bob@aliyun.com: All
Authorization Type: ACL
A user/RAM$Bob@aliyun.com:Allen(acs:odps:*:projects/test_project_a/instances/20220105031923461ghu****): All
Interroger les autorisations basées sur les libellés
Les autorisations basées sur les libellés contrôlent l'accès aux tables et colonnes contenant des données sensibles. Les niveaux de sensibilité vont de 1 (le plus bas) à 4 (le plus élevé). Les commandes suivantes permettent d'identifier les tables sensibles accessibles à un utilisateur, les utilisateurs autorisés à accéder à une table donnée, ainsi que le libellé attribué à chaque colonne.
Interroger toutes les tables sensibles accessibles à l'utilisateur actuel
show label grants;
Résultat de la requête
|
Champ |
Description |
|
User Label |
Niveau de libellé d'accès de l'utilisateur actuel |
|
TableName |
Nom de la table sensible accessible à l'utilisateur |
|
GrantedLabel |
Niveau de libellé accordé à l'utilisateur sur la table |
|
Expires |
Date d'expiration de l'autorisation |
Exemple
Bob@aliyun.com est propriétaire de test_project_a. Allen est un utilisateur RAM dans ce projet.
En tant que Bob@aliyun.com (propriétaire du projet) :
show label grants;
Sortie :
User Label: 0
+--------------+--------------+--------------------------+
| TableName | GrantedLabel | Expires |
+--------------+--------------+--------------------------+
| bank_data | 3 | 2022-07-04T16:30:47+0800 |
+--------------+--------------+--------------------------+
| bank_data_pt | 4 | 2022-07-04T16:36:04+0800 |
+--------------+--------------+--------------------------+
En tant qu'utilisateur RAM Allen :
show label grants;
Sortie :
User Label: 1
+-------------+--------------+--------------------------+
| TableName | GrantedLabel | Expires |
+-------------+--------------+--------------------------+
| sale_detail | 2 | 2022-01-09T11:43:27+0800 |
+-------------+--------------+--------------------------+
Interroger les tables sensibles d'un niveau spécifique accessibles à l'utilisateur actuel
show label <level> grants;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Niveau de sensibilité servant de filtre (1–4) |
Exemple
En tant que Bob@aliyun.com, interrogez les tables sensibles de niveau 3 :
show label 3 grants;
Sortie :
User Label: 0
+--------------+--------------+--------------------------+
| TableName | GrantedLabel | Expires |
+--------------+--------------+--------------------------+
| bank_data | 3 | 2022-07-04T16:30:47+0800 |
+--------------+--------------+--------------------------+
En tant qu'utilisateur RAM Allen, interrogez les tables sensibles de niveau 2 :
show label 2 grants;
Sortie :
User Label: 1
+-------------+--------------+--------------------------+
| TableName | GrantedLabel | Expires |
+-------------+--------------+--------------------------+
| sale_detail | 2 | 2022-01-09T11:43:27+0800 |
+-------------+--------------+--------------------------+
Interroger les tables sensibles accessibles à un utilisateur spécifique
show label grants for user <user_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom de l'utilisateur. Exécutez |
Exemple
Interrogez les tables sensibles accessibles à l'utilisateur RAM Allen :
show label grants for user RAM$Bob@aliyun.com:Allen;
Sortie :
User Label: 2
+-----------+--------------+--------------------------+
| TableName | GrantedLabel | Expires |
+-----------+--------------+--------------------------+
| bank_data | 3 | 2022-07-04T16:29:32+0800 |
+-----------+--------------+--------------------------+
Interroger les tables sensibles d'un niveau spécifique accessibles à un utilisateur donné
show label <level> grants for user <user_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Niveau de sensibilité servant de filtre (1–4) |
|
|
Oui |
Nom de l'utilisateur. Exécutez |
Exemple
Interrogez les tables sensibles de niveau 3 accessibles à l'utilisateur RAM Allen :
show label 3 grants for user RAM$Bob@aliyun.com:Allen;
Sortie :
User Label: 2
+-----------+--------------+--------------------------+
| TableName | GrantedLabel | Expires |
+-----------+--------------+--------------------------+
| bank_data | 3 | 2022-07-04T16:29:32+0800 |
+-----------+--------------+--------------------------+
Interroger les utilisateurs autorisés à accéder à une table sensible spécifique
show label grants on table <table_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom de la table sensible. Exécutez |
Résultat de la requête
|
Champ |
Description |
|
Sensitive Label Range |
Plage des niveaux de libellé de la table |
|
UserName |
Utilisateurs et rôles ayant accès à la table |
|
GrantedLabel |
Niveau de libellé accordé à chaque utilisateur |
|
Expires |
Date d'expiration de l'autorisation |
Exemple
Interrogez les utilisateurs pouvant accéder à la table sale_detail dans test_project_a :
show label grants on table sale_detail;
Sortie :
Sensitive Label Range: [3, 4]
+-------------------------------------------------+--------------+--------------------------+
| UserName | GrantedLabel | Expires |
+-------------------------------------------------+--------------+--------------------------+
| worker | 4 | 2022-07-04T11:23:35+0800 |
+-------------------------------------------------+--------------+--------------------------+
| RAM$Bob@aliyun.com:Allen | 4 | 2022-07-04T17:54:00+0800 |
+-------------------------------------------------+--------------+--------------------------+
Interroger les utilisateurs d'un niveau spécifique pouvant accéder à une table sensible donnée
show label <level> grants on table <table_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Niveau de sensibilité servant de filtre (1–4) |
|
|
Oui |
Nom de la table sensible. Exécutez |
Exemple
Interrogez les utilisateurs de niveau 4 pouvant accéder à la table sale_detail :
show label 4 grants on table sale_detail;
Sortie :
Sensitive Label Range: [3, 4]
+-------------------------------------------------+--------------+--------------------------+
| UserName | GrantedLabel | Expires |
+-------------------------------------------------+--------------+--------------------------+
| worker | 4 | 2022-07-04T11:23:35+0800 |
+-------------------------------------------------+--------------+--------------------------+
| RAM$Bob@aliyun.com:Allen | 4 | 2022-07-04T17:54:00+0800 |
+-------------------------------------------------+--------------+--------------------------+
Interroger les autorisations d'un utilisateur spécifique sur une table sensible donnée
show label [<level>] grants on table <table_name> for user <user_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Non |
Niveau de sensibilité servant de filtre (1–4). Omettez ce paramètre pour retourner tous les niveaux. |
|
|
Oui |
Nom de la table sensible. Exécutez |
|
|
Oui |
Nom de l'utilisateur. Exécutez |
Résultat de la requête
|
Champ |
Description |
|
User Label |
Niveau de libellé d'accès de l'utilisateur |
|
Column |
Colonnes de la table accessibles à l'utilisateur |
|
GrantedLabel |
Niveau de libellé accordé à l'utilisateur pour chaque colonne |
|
Expires |
Date d'expiration de l'autorisation |
Exemple
Identifiez les colonnes de la table sale_detail accessibles à l'utilisateur RAM Allen :
show label grants on table sale_detail for user RAM$Bob@aliyun.com:Allen;
Sortie :
User Label: 2
+-------------+--------------+--------------------------+
| Column | GrantedLabel | Expires |
+-------------+--------------+--------------------------+
| customer_id | 4 | 2022-07-04T17:54:00+0800 |
+-------------+--------------+--------------------------+
| shop_name | 4 | 2022-07-04T17:54:00+0800 |
+-------------+--------------+--------------------------+
| total_price | 4 | 2022-07-04T17:54:00+0800 |
+-------------+--------------+--------------------------+
Interroger les niveaux de sensibilité de toutes les colonnes d'une table spécifique
describe <table_name>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom de la table. Exécutez |
Résultat de la requête : Retourne TableLabel (niveau de sensibilité global de la table), MaxLabel (libellé de sensibilité le plus élevé parmi les colonnes de la table) et Label (niveau de sensibilité de chaque colonne).
Exemple
Interrogez les niveaux de sensibilité de la table sale_detail et de ses colonnes :
describe sale_detail;
Sortie :
+------------------------------------------------------------------------------------+
| Owner: ALIYUN$Bob@aliyun.com | Project: project_test_a |
| TableComment: |
+------------------------------------------------------------------------------------+
| CreateTime: 2021-12-13 11:27:04 |
| LastDDLTime: 2021-12-13 11:27:04 |
| LastModifiedTime: 2021-12-13 11:27:26 |
+------------------------------------------------------------------------------------+
| TableLabel: 3 |
| MaxLabel: L4 |
+------------------------------------------------------------------------------------+
| InternalTable: YES | Size: 784 |
+------------------------------------------------------------------------------------+
| Native Columns: |
+------------------------------------------------------------------------------------+
| Field | Type | Label | Comment |
+------------------------------------------------------------------------------------+
| shop_name | string | 4 | |
| customer_id | string | 4 | |
| total_price | double | 3 | |
+------------------------------------------------------------------------------------+
| Partition Columns: |
+------------------------------------------------------------------------------------+
| sale_date | string | |
| region | string | |
+------------------------------------------------------------------------------------+
Interroger les autorisations de package
Interroger les autorisations d'un package spécifique
show acl for <project_name>.<package_name> on type package;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom du projet auquel appartient le package. Exécutez |
|
|
Oui |
Nom du package. Exécutez |
Résultat de la requête : Retourne les rôles intégrés et les utilisateurs disposant d'autorisations de gestion sur le package, ainsi que leurs autorisations ACL associées.
Exemple
Interrogez les autorisations du package datashare installé dans test_project_b :
show acl for test_project_b.datashare on type package;
Sortie :
Authorization Type: Implicit
AG project_owner/ALIYUN$Bob@aliyun.com: All
AG admin/ALIYUN$Bob@aliyun.com: All
Authorization Type: ACL
A user/RAM$Amy@aliyun.com:Bella(acs:odps:*:projects/test_project_b/packages/test_project_a.datashare): Read
Interroger les autorisations d'un objet dans un package spécifique
show grants on <object_type> <object_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Type de l'objet dans le package. Exécutez |
|
|
Oui |
Nom de l'objet dans le package. Exécutez |
|
|
Oui |
Nom du projet auquel appartient le package. Exécutez |
|
|
Oui |
Nom du package. Exécutez |
Résultat de la requête : Retourne les rôles intégrés et les utilisateurs disposant d'autorisations sur l'objet spécifié dans le package, ainsi que leurs autorisations ACL associées.
Exemple
Interrogez les autorisations sur la table sale_detail dans le package datashare :
show grants on Table sale_detail privilegeproperties ("refobject"="true", "refproject"="test_project_a", "package"="datashare");
Sortie :
Authorization Type: Implicit
AG project_owner/: All
Authorization Type: InstalledObjecACL
[datashare]
A user/RAM$Amy@aliyun.com:Bella(acs:odps:*:projects/test_project_a/tables/sale_detail): Select
Interroger les autorisations basées sur les libellés d'une table dans un package spécifique
show label grants on table <table_name> privilegeproperties ("refobject"="true", "refproject"="<project_name>", "package"="<package_name>");
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom de la table dans le package. Exécutez |
|
|
Oui |
Nom du projet auquel appartient le package. Exécutez |
|
|
Oui |
Nom du package. Exécutez |
Résultat de la requête
|
Champ |
Description |
|
Sensitive Label Range |
Plage des niveaux de libellé de la table |
|
UserName |
Utilisateurs et rôles disposant d'un accès basé sur les libellés à la table |
|
GrantedLabel |
Niveau de libellé accordé à chaque utilisateur |
|
Expires |
Date d'expiration de l'autorisation |
Exemple
Interrogez les autorisations basées sur les libellés de la table sale_detail dans le package datashare :
show label grants on table sale_detail privilegeproperties ("refobject"="true", "refproject"="test_project_a", "package"="datashare");
Sortie :
Sensitive Label Range: [2, 4]
+-------------------------------------------------+--------------+--------------------------+
| UserName | GrantedLabel | Expires |
+-------------------------------------------------+--------------+--------------------------+
| RAM$Amy@aliyun.com:Bella | 3 | 2022-07-12T22:24:24+0800 |
+-------------------------------------------------+--------------+--------------------------+