Categorias:

Funções do sistema (Informações do sistema)

EXPLAIN_GRANTABLE_PRIVILEGES

Retorna uma cadeia de caracteres JSON que representa todos os privilégios concedíveis para cada tipo de objeto no Snowflake. Esta função inclui informações abrangentes sobre os privilégios que podem ser concedidos em tipos de objeto diferentes, incluindo os tipos de concessões disponíveis para cada privilégio.

Consulte também:

GRANT <privilégios> … TO ROLE , GRANT CALLER ,

Sintaxe

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

Argumentos

Todos os argumentos são opcionais e usam a sintaxe de parâmetro nomeado:

grantee => 'grantee_type'

Filtre os resultados por tipo de beneficiário. Valores válidos:

  • ROLE

  • APPLICATION

Padrão: ROLE

O tipo de beneficiário determina quais privilégios estão disponíveis. Por exemplo, aplicativos não podem ter propriedade individual de objetos.

object_type => 'object_type_name'

Filtre os resultados para um único tipo de objeto. Aceita a forma no singular do nome do tipo de objeto (por exemplo, 'DATABASE', 'TABLE', 'SCHEMA'). O texto não diferencia maiúsculas de minúsculas.

grant_type => 'grant_type_name'

Filtre os resultados para privilégios compatíveis com um tipo de concessão específico. Valores válidos:

O texto não diferencia maiúsculas de minúsculas.

Retornos

A função retorna um VARCHAR contendo uma matriz JSON. Cada elemento da matriz é um objeto JSON que representa um tipo de objeto e tem a seguinte estrutura:

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

Campos JSON:

  • parent: o tipo de objeto pai na hierarquia de objetos (por exemplo, SCHEMA é pai de TABLE). A cadeia de caracteres fica vazia para objetos de nível superior, como ACCOUNT.

  • singular: a forma no singular do nome do tipo de objeto (por exemplo, DATABASE). Usado para concessões individuais.

  • plural: a forma no plural do nome do tipo de objeto (por exemplo, DATABASES). Usado para concessões em massa.

  • privileges: um mapa em que cada chave é um nome de privilégio e cada valor é uma matriz de nomes de tipos de concessão indicando como esse privilégio pode ser concedido.

Notas de uso

  • Todos os argumentos devem ser expressões de constantes. Não é possível passar valores de coluna ou outras expressões que não sejam de constantes.

  • Se nenhum argumento for fornecido, a função retornará todos os privilégios concedíveis para funções em todos os tipos de objetos.

Exemplos

Os exemplos a seguir chamam a função EXPLAIN_GRANTABLE_PRIVILEGES:

Obter todos os privilégios concedíveis para as funções

Retornar todos os tipos de objetos e os respectivos privilégios concedíveis para as funções:

CALL EXPLAIN_GRANTABLE_PRIVILEGES();

Obter os privilégios para um tipo de objeto específico

Retornar somente os privilégios para o tipo de objeto 'DATABASE':

CALL EXPLAIN_GRANTABLE_PRIVILEGES(object_type => 'DATABASE');

Exemplo de saída:

[
  {
    "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"]
    }
  }
]

Filtrar por tipo de beneficiário

Retornar os privilégios disponíveis para os aplicativos:

CALL EXPLAIN_GRANTABLE_PRIVILEGES(grantee => 'APPLICATION');

Os aplicativos não podem ter propriedade individual, portanto OWNERSHIP mostra apenas os tipos de concessão, como 'ALL', 'FUTURE' e 'INHERITED'.