Catégories :

Fonctions système (Informations système)

EXPLAIN_GRANTABLE_PRIVILEGES

Renvoie une chaîne JSON représentant tous les privilèges pouvant être accordés pour chaque type d’objet dans Snowflake. Cette fonction fournit des informations complètes sur les privilèges qui peuvent être accordés à différents types d’objets, y compris les types d’octrois disponibles pour chaque privilège.

Voir aussi :

GRANT <privilèges> … TO ROLE, GRANT CALLER.

Syntaxe

EXPLAIN_GRANTABLE_PRIVILEGES(
  [ grantee => '<grantee_type>' ]
  [, object_type => '<object_type_name>' ]
  [, grant_type => '<grant_type_name>' ])

Arguments

Tous les arguments sont facultatifs et utilisent la syntaxe des paramètres nommés :

grantee => 'grantee_type'

Filtrez les résultats par type de bénéficiaire. Valeurs valides :

  • ROLE

  • APPLICATION

Par défaut : ROLE

Le type de bénéficiaire détermine les privilèges disponibles. Par exemple, les applications ne peuvent pas disposer de la propriété individuelle des objets.

object_type => 'object_type_name'

Filtrez les résultats vers un seul type d’objet. Accepte la forme singulière du nom du type d’objet (par exemple, 'DATABASE', 'TABLE', 'SCHEMA'). Le texte est insensible à la casse.

grant_type => 'grant_type_name'

Filtrez les résultats vers des privilèges qui prennent en charge un type d’octroi spécifique. Valeurs valides :

Le texte est insensible à la casse.

Renvoie

La fonction renvoie une valeur VARCHAR contenant un tableau JSON. Chaque élément du tableau est un objet JSON qui représente un type d’objet et qui possède la structure suivante :

{
  "parent": "<parent_object_type>",
  "singular": "<singular_name>",
  "plural": "<plural_name>",
  "privileges": {
    "<privilege_name>": ["<grant_type>", /* ... additional grant types */],
    /* ... additional privileges */
  }
}

Champs JSON :

  • parent — Le type d’objet parent dans la hiérarchie des objets (par exemple, SCHEMA est le parent de TABLE). La chaîne est vide pour les objets de niveau supérieur comme ACCOUNT.

  • singular — La forme singulière du nom du type d’objet (par exemple, DATABASE). Utilisé pour les autorisations individuelles.

  • plural — La forme plurielle du nom du type d’objet (par exemple, DATABASES). Utilisé pour les autorisations globales.

  • privileges — Une carte où chaque clé est un nom de privilège et chaque valeur est un tableau de noms de types d’octroi indiquant comment ce privilège peut être accordé.

Notes sur l’utilisation

  • Tous les arguments doivent être des expressions constantes. Vous ne pouvez pas transmettre de valeurs de colonnes ni d’autres expressions non constantes.

  • Si aucun argument n’est fourni, la fonction renvoie tous les privilèges pouvant être accordés pour les rôles dans tous les types d’objets.

Exemples

Les exemples suivants appellent la fonction EXPLAIN_GRANTABLE_PRIVILEGES :

Obtenir tous les privilèges pouvant être accordés pour les rôles

Renvoyer tous les types d’objets et leurs privilèges pouvant être accordés pour les rôles :

CALL EXPLAIN_GRANTABLE_PRIVILEGES();

Obtenir des privilèges pour un type d’objet spécifique

Renvoyer uniquement les privilèges pour le type d’objet 'DATABASE' :

CALL EXPLAIN_GRANTABLE_PRIVILEGES(object_type => 'DATABASE');

Exemple de sortie :

[
  {
    "parent": "ACCOUNT",
    "singular": "DATABASE",
    "plural": "DATABASES",
    "privileges": {
      "APPLYBUDGET": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "CREATE SCHEMA": ["INDIVIDUAL"],
      "IMPORTED PRIVILEGES": ["INDIVIDUAL"],
      "MODIFY": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "MONITOR": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "OWNERSHIP": ["INDIVIDUAL"],
      "REFERENCE_USAGE": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "USAGE": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"]
    }
  }
]

Filtrer par type de bénéficiaire

Renvoyer les privilèges disponibles pour les applications :

CALL EXPLAIN_GRANTABLE_PRIVILEGES(grantee => 'APPLICATION');

Les applications ne peuvent pas avoir de propriété individuelle, de sorte que OWNERSHIP affiche uniquement les types d’octroi tels que 'ALL', 'FUTURE' et 'INHERITED'.