GRANT <privilégios>¶
Concede a uma função ou função de banco de dados um ou mais privilégios de acesso relacionados a um objeto protegível. Os privilégios que podem ser concedidos são específicos do objeto.
Para obter mais informações sobre a concessão de privilégios em objetos protegíveis para um compartilhamento, consulte GRANT <privilégio> … TO SHARE.
- Funções:
Os privilégios que podem ser concedidos a funções são agrupados nas seguintes categorias:
Privilégios globais.
Privilégios para objetos de conta, tais como monitores de recursos, warehouses virtuais e bancos de dados.
Privilégios para esquemas.
Privilégios para objetos de esquema, tais como tabelas, visualizações, estágios, formatos de arquivo, UDFs e sequências.
- Funções de banco de dados:
Os privilégios que podem ser concedidos a funções de banco de dados são agrupados nas seguintes categorias:
Privilégios para o banco de dados que contém a função de banco de dados.
Privilégios para esquemas no banco de dados que contém a função de banco de dados.
Privilégios para objetos de esquema, tais como tabelas, exibições, estágios, formatos de arquivo, UDFs e sequências no banco de dados que contém a função de banco de dados.
Para obter mais detalhes sobre funções e objetos protegíveis, consulte Visão geral do controle de acesso.
- Variações:
- Consulte também:
Sintaxe¶
Funções de conta:
GRANT { { globalPrivileges | ALL [ PRIVILEGES ] } ON ACCOUNT
| { accountObjectPrivileges | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <object_name>
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> } }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
}
TO [ ROLE ] <role_name> [ WITH GRANT OPTION ]
Funções de banco de dados:
GRANT { { CREATE SCHEMA | MODIFY | MONITOR | USAGE } [ , ... ] } ON DATABASE <object_name>
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { FUTURE SCHEMAS IN DATABASE <db_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> } }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
}
TO DATABASE ROLE <database_role_name> [ WITH GRANT OPTION ]
Onde:
globalPrivileges ::=
{
CREATE {
ACCOUNT | COMPUTE POOL | DATA EXCHANGE LISTING | DATABASE | FAILOVER GROUP | INTEGRATION
| NETWORK POLICY | EXTERNAL VOLUME | REPLICATION GROUP | ROLE | SHARE
| USER | WAREHOUSE
}
| APPLY { { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY | TAG }
| ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
| EXECUTE { ALERT | TASK }
| IMPORT SHARE
| MANAGE { GRANTS | LISTING AUTO FULFILLMENT | WAREHOUSES }
| MODIFY { LOG LEVEL | TRACE LEVEL | SESSION LOG LEVEL | SESSION TRACE LEVEL }
| MONITOR { EXECUTION | SECURITY | USAGE }
| OVERRIDE SHARE RESTRICTIONS | PURCHASE DATA EXCHANGE LISTING | RESOLVE ALL
}
[ , ... ]
accountObjectPrivileges ::=
-- For COMPUTE POOL
{ MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For DATABASE
{ APPLYBUDGET | CREATE { DATABASE ROLE | SCHEMA } | IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
{ USAGE } [ , ... ]
-- For FAILOVER GROUP
{ FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
{ USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
{ MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
{ MODIFY | MONITOR } [ , ... ]
-- For USER
{ MONITOR } [ , ... ]
-- For WAREHOUSE
{ APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| APPLYBUDGET
| CREATE {
ALERT | DYNAMIC TABLE | EXTERNAL TABLE | FILE FORMAT | FUNCTION | HYBRID TABLE | IMAGE REPOSITORY |
| ICEBERG TABLE | MATERIALIZED VIEW | MODEL | NETWORK RULE | PIPE | PROCEDURE
| { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY | SERVICE
| SECRET | SEQUENCE | STAGE | STREAM | STREAMLIT
| SNOWFLAKE.CORE.BUDGET |
| SNOWFLAKE.ML.ANOMALY_DETECTION | SNOWFLAKE.ML.FORECAST
| TAG | TABLE | TASK | VIEW
}
| MODIFY | MONITOR | USAGE
[ , ... ]
schemaObjectPrivileges ::=
-- For ALERT
{ MONITOR | OPERATE } [ , ... ]
-- For DYNAMIC TABLE
MONITOR, OPERATE, SELECT [ , ...]
-- For EVENT TABLE
{ INSERT | SELECT } [ , ... ]
-- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, or SEQUENCE
USAGE [ , ... ]
-- For HYBRID TABLE
{ INSERT | SELECT | UPDATE } [ , ... ]
-- For IMAGE REPOSITORY
{ READ, WRITE } [ , ... ]
-- For ICEBERG TABLE
{ APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { AGGREGATION | AUTHENTICATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
READ, USAGE [ , ... ]
-- For SERVICE
{ USAGE | MONITOR | OPERATE } [ , ... ]
-- For external STAGE
USAGE [ , ... ]
-- For internal STAGE
READ [ , WRITE ] [ , ... ]
-- For STREAM
SELECT [ , ... ]
-- For STREAMLIT
USAGE [ , ... ]
-- For TABLE
{ APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For TAG
READ
-- For TASK
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For VIEW
{ REFERENCES | SELECT } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
Para obter mais detalhes sobre os privilégios suportados para cada tipo de objeto, consulte Privilégios de controle de acesso.
Parâmetros obrigatórios¶
object_name
Especifica o identificador do objeto no qual os privilégios são concedidos.
object_type
Especifica o tipo de objeto para objetos do nível de esquema.
AGGREGATION POLICY
ALERT
AUTHENTICATION POLICY
DYNAMIC TABLE
EVENT TABLE
EXTERNAL TABLE
FILE FORMAT
FUNCTION
HYBRID TABLE
IMAGE REPOSITORY
ICEBERG TABLE
MASKING POLICY
MATERIALIZED VIEW
MODEL
NETWORK RULE
PACKAGES POLICY
PASSWORD POLICY
PIPE
PROCEDURE
PROJECTION POLICY
ROW ACCESS POLICY
SECRET
SERVICE
SESSION POLICY
SEQUENCE
STAGE
STREAM
TABLE
TAG
TASK
VIEW
object_type_plural
Forma plural de
object_type
(por exemplo,TABLES
,VIEWS
).Observe que não são permitidas concessões em massa em canais.
role_name
Especifica o identificador da função do destinatário (ou seja, a função à qual os privilégios são concedidos).
database_role_name
Especifica o identificador da função de banco de dados do destinatário (ou seja, a função à qual os privilégios são concedidos). Se o identificador não estiver totalmente qualificado na forma de
db_name.database_role_name
, o comando procura a função do banco de dados no banco de dados atual para a sessão.Todos os privilégios são limitados ao banco de dados que contém a função de banco de dados, assim como outros objetos no mesmo banco de dados.
Parâmetros opcionais¶
FUTURE
Especifica que os privilégios são concedidos em objetos de esquema ou banco de dados novos (ou seja, futuros) de um tipo especificado (por exemplo, tabelas ou exibições) em vez de objetos existentes. Observe que as futuras concessões podem ser revogadas a qualquer momento usando REVOKE <privilégios> com as palavras-chave ON FUTURE; quaisquer privilégios concedidos em objetos existentes serão mantidos. Para obter mais informações sobre concessões futuras, consulte Concessões futuras para objetos de banco de dados ou esquema neste tópico.
WITH GRANT OPTION
Se especificado, permite que a função do destinatário conceda os privilégios a outras funções.
Padrão: sem valor, o que significa que a função receptora não pode conceder os privilégios a outras funções.
Nota
O parâmetro WITH GRANT OPTION não oferece suporte ao privilégio IMPORTED PRIVILEGES. Para obter mais informações, consulte Concessão de privilégios em um banco de dados compartilhado.
Notas de uso¶
Os privilégios não podem ser concedidos ou revogados diretamente em nenhuma classe. No entanto, você pode criar uma instância de uma classe e conceder funções de instância a uma função de conta. Conceda o privilégio CREATE <nome_da_classe> no esquema para permitir que uma função crie uma instância de uma classe.
Para conceder o privilégio OWNERSHIP em um objeto (ou todos os objetos de um tipo especificado em um esquema) a uma função, transferindo a propriedade do objeto de uma função para outra função, use GRANT OWNERSHIP em vez disso. O comando GRANT OWNERSHIP tem uma sintaxe diferente.
Vários privilégios podem ser especificados para o mesmo tipo de objeto em uma única instrução GRANT (com cada privilégio separado por vírgula), ou a palavra-chave especial
ALL [ PRIVILEGES ]
pode ser usada para conceder todos os privilégios aplicáveis ao tipo de objeto especificado. Observe, entretanto, que somente os privilégios detidos e concedíveis pela função que executa o comando GRANT são de fato concedidos à função de destino. Uma mensagem de advertência é gerada para quaisquer privilégios que não puderam ser concedidos.Você não pode especificar esta palavra-chave para tags.
Esta palavra-chave não concede privilégios em uma classe se você tentar conceder privilégios
ALL
em um esquema. Para permitir que uma função crie instâncias de uma classe específica, conceda o privilégio CREATE diretamente, conforme mostrado no exemplo Classes.
Os privilégios concedidos a uma determinada função são automaticamente herdados por quaisquer outras funções às quais a função é concedida, bem como quaisquer outras funções de nível superior dentro da hierarquia de funções. Para obter mais detalhes, consulte Visão geral do controle de acesso.
Para bancos de dados, o privilégio IMPORTED PRIVILEGES só se aplica a bancos de dados compartilhados (ou seja, bancos de dados criados a partir de um compartilhamento). Para obter mais detalhes, consulte Consumo de dados compartilhados. Note que o privilégio IMPORTED PRIVILEGES não pode ser concedido a uma função de banco de dados.
Para esquemas e objetos em esquemas, é fornecida uma opção
ALL object_type_plural in container
para conceder privilégios para todos os objetos do mesmo tipo dentro do contêiner (ou seja, banco de dados ou esquema). Esta é uma opção de conveniência; internamente, o comando é expandido em uma série de comandos individuais GRANT em cada objeto. Somente os objetos que atualmente existem dentro do contêiner são afetados.Entretanto, observe que, no modelo Snowflake, a concessão de privilégios em massa não é uma prática recomendada. Em vez disso, o Snowflake recomenda criar uma função compartilhada e usar a função para criar objetos que são automaticamente acessíveis a todos os usuários a quem foi concedida a função.
Em esquemas de acesso gerenciado:
O privilégio OWNERSHIP nos objetos só pode ser transferido para uma função subordinada do proprietário do esquema.
Para estágios:
USAGE só se aplica a estágios externos.
READ | WRITE só se aplica a estágios internos. Além disso, para conceder o privilégio WRITE em um estágio interno, o privilégio READ deve primeiro ser concedido no estágio.
Para obter mais detalhes sobre estágios externos e internos, consulte CREATE STAGE.
Ao conceder privilégios em um UDF individual ou procedimento armazenado, você deve especificar os tipos de dados dos argumentos, se houver, usando a sintaxe mostrada abaixo:
<udf_or_stored_procedure_name> ( [ <arg_data_type> [ , ... ] ] )
O Snowflake usa tipos de dados de argumentos para resolver UDFs ou procedimentos armazenados que têm o mesmo nome dentro de um esquema. Para obter mais informações, consulte Sobrecarga de procedimentos e funções.
Para tabelas dinâmicas, a função de recebimento deve receber o privilégio USAGE no banco de dados e no esquema que contém a tabela dinâmica e no warehouse usado para atualizar a tabela. Para obter mais informações, consulte Controle de acesso a tabelas dinâmicas.
Requisitos de controle de acesso¶
- Concessão de privilégios em objetos individuais:
Em geral, uma função com qualquer um dos conjuntos de privilégios a seguir pode conceder privilégios sobre um objeto a outras funções:
O privilégio global MANAGE GRANTS.
Somente as funções SECURITYADMIN e ACCOUNTADMIN do sistema têm o privilégio MANAGE GRANTS; entretanto, o privilégio pode ser concedido a funções personalizadas.
O privilégio OWNERSHIP sobre o objeto. Ao conceder privilégios para objetos de esquema (por exemplo, tabelas e exibições), a função também deve ter o privilégio USAGE sobre o banco de dados e o esquema principais.
Se um privilégio tiver sido concedido a uma função com o parâmetro WITH GRANT OPTION incluído na instrução GRANT <privileges> … TO ROLE, a função poderá conceder o mesmo privilégio a outras funções.
Em esquemas de acesso gerenciado (ou seja, esquemas criados usando a sintaxe CREATE SCHEMA … WITH MANAGED ACCESS), os proprietários de objetos perdem a capacidade de tomar decisões de concessão. Somente o proprietário do esquema (isto é, a função com o privilégio OWNERSHIP no esquema) ou uma função com o privilégio global MANAGE GRANTS pode conceder privilégios para objetos no esquema.
Note que uma função que detém o privilégio global MANAGE GRANTS pode conceder privilégios adicionais à função atual (concessor).
- Definição de concessões em objetos futuros de um tipo específico:
Nível do banco de dados
O privilégio global MANAGE GRANTS é necessário para conceder ou revogar privilégios sobre objetos futuros em um banco de dados. Somente as funções SECURITYADMIN e ACCOUNTADMIN do sistema têm o privilégio MANAGE GRANTS; entretanto, o privilégio pode ser concedido a funções personalizadas.
Nível do esquema
Em esquemas de acesso gerenciado (ou seja, esquemas criados usando a sintaxe CREATE SCHEMA … WITH MANAGED ACCESS), o proprietário do esquema (ou seja, a função com o privilégio OWNERSHIP para o esquema) ou uma função com o privilégio global MANAGE GRANTS podem conceder privilégios sobre objetos futuros no esquema.
Em esquemas padrão, o privilégio global MANAGE GRANTS é necessário para conceder privilégios sobre objetos futuros no esquema.
Para obter mais informações sobre a definição de subsídios em objetos futuros de um tipo específico, consulte Concessões futuras para objetos de banco de dados ou esquema (neste tópico).
Concessões futuras para objetos de banco de dados ou esquema¶
As notas desta seção se aplicam ao atribuir futuras concessões a objetos em um esquema ou banco de dados; isto é, ao usar a palavra-chave ON FUTURE.
Para obter mais informações, consulte esquemas de acesso gerenciado.
Considerações¶
Quando concessões futuras são definidas no mesmo tipo de objeto para um banco de dados e um esquema no mesmo banco de dados, as concessões no nível do esquema têm precedência sobre as concessões no nível do banco de dados, e as concessões no nível do banco de dados são ignoradas. Esse comportamento se aplica a privilégios sobre objetos futuros concedidos a uma função ou funções diferentes.
Por exemplo, as seguintes instruções concedem privilégios diferentes sobre objetos do mesmo tipo nos níveis do banco de dados e do esquema.
Conceder o privilégio SELECT em todos os esquemas futuros do banco de dados
d1
à funçãor1
:GRANT SELECT ON FUTURE TABLES IN DATABASE d1 TO ROLE r1;
Conceder os privilégios INSERT e DELETE em todas as tabelas futuras criadas no esquema
d1.s1
à funçãor2
:GRANT INSERT,DELETE ON FUTURE TABLES IN SCHEMA d1.s1 TO ROLE r2;
As futuras concessões atribuídas à função
r1
são completamente ignoradas. Quando novas tabelas são criadas no esquemad1.s1
, somente os privilégios futuros definidos nas tabelas para a funçãor2
são concedidos.Concessões futuras em nível de banco de dados se aplicam tanto a esquemas de acesso regular quanto a esquemas de acesso gerenciado.
Restrições e limitações¶
Não é permitida mais do que uma concessão futura do privilégio OWNERSHIP para cada tipo de objeto protegível.
Concessões futuras não podem ser definidas para objetos dos seguintes tipos:
Pool de computação
Função externa
Repositório de imagens
Objetos de política:
Política de agregação
Política de mascaramento
Política de pacotes
Política de projeção
Política de acesso a linhas
Política da sessão
Tag
Uma futura concessão do privilégio OWNERSHIP sobre objetos de um tipo especificado em um banco de dados não se aplica a novos objetos em um esquema de acesso gerenciado.
As seguintes restrições se aplicam a futuras concessões de objetos em um esquema de acesso gerenciado:
Uma futura concessão do privilégio OWNERSHIP em objetos só pode ser aplicada a uma função subordinada do proprietário do esquema (ou seja, a função com o privilégio OWNERSHIP no esquema).
Antes que a propriedade de um esquema de acesso gerenciado possa ser transferida para uma função diferente, todas as concessões futuras abertas do privilégio OWNERSHIP devem ser revogadas usando REVOKE <privilégios> com as palavras-chave ON FUTURE.
Concessões futuras não são aplicadas quando se renomeia ou se troca uma tabela.
Concessões futuras têm suporte em estágios nomeados com as seguintes restrições:
O privilégio WRITE não pode ser especificado sem o privilégio READ.
O privilégio READ não pode ser revogado se o privilégio WRITE estiver presente.
Para os estágios internos, somente concessões futuras com o privilégio READ ou WRITE serão materializados.
Para os estágios externos, somente as concessões futuras com os privilégios USAGE serão materializadas.
Exemplos¶
Funções¶
Conceder os privilégios necessários para operar (ou seja, suspender ou retomar) o report_wh
warehouse para a função analyst
:
GRANT OPERATE ON WAREHOUSE report_wh TO ROLE analyst;
O mesmo que o exemplo anterior, mas também permitir que a função analyst
conceda o privilégio a outras funções:
GRANT OPERATE ON WAREHOUSE report_wh TO ROLE analyst WITH GRANT OPTION;
Conceder o privilégio SELECT em todas as tabelas existentes no esquema mydb.myschema
para a função analyst
:
GRANT SELECT ON ALL TABLES IN SCHEMA mydb.myschema to ROLE analyst;
Conceder todos os privilégios em dois UDFs no esquema mydb.myschema
para a função analyst
:
GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(number) TO ROLE analyst; GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(string) TO ROLE analyst;Observe que os UDFs têm argumentos diferentes, que é como o Snowflake identifica exclusivamente UDFs com o mesmo nome. Para obter mais detalhes sobre a nomenclatura de UDF, consulte Visão geral das funções definidas pelo usuário.
Conceder privilégio de uso em um procedimento armazenado no esquema mydb.myschema
para a função analyst
:
GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number) TO ROLE analyst;Observe que os nomes de procedimentos armazenados (como nomes de UDF) podem ser sobrecarregados, portanto, é necessário especificar o tipo de dados do(s) argumentos(s). Para obter mais detalhes sobre a sobrecarga de nomes, consulte Sobrecarga de procedimentos e funções.
Conceder o privilégio de criar exibições materializadas no esquema especificado:
GRANT CREATE MATERIALIZED VIEW ON SCHEMA mydb.myschema TO ROLE myrole;
Conceder os privilégios SELECT e INSERT em todas as tabelas futuras criadas no esquema mydb.myschema
à função role1
:
GRANT SELECT,INSERT ON FUTURE TABLES IN SCHEMA mydb.myschema TO ROLE role1;
Conceder o privilégio USAGE em todos os esquemas futuros do banco de dados mydb
à função role1
:
use role accountadmin; grant usage on future schemas in database mydb to role role1;
Funções de banco de dados¶
Conceder o privilégio SELECT em todas as tabelas existentes no esquema mydb.myschema
para a função de banco de dados mydb.dr1
:
GRANT SELECT ON ALL TABLES IN SCHEMA mydb.myschema TO DATABASE ROLE mydb.dr1;
Conceder todos os privilégios em dois UDFs no esquema mydb.myschema
para a função de banco de dados mydb.dr1
:
GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(number) TO DATABASE ROLE mydb.dr1; GRANT ALL PRIVILEGES ON FUNCTION mydb.myschema.add5(string) TO DATABASE ROLE mydb.dr1;Observe que os UDFs têm argumentos diferentes, que é como o Snowflake identifica exclusivamente UDFs com o mesmo nome. Para obter mais detalhes sobre a nomenclatura de UDF, consulte Visão geral das funções definidas pelo usuário.
Conceder privilégio de uso em um procedimento armazenado no esquema mydb.myschema
para a função de banco de dados mydb.dr1
:
GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number) TO DATABASE ROLE mydb.dr1;Observe que os nomes de procedimentos armazenados (como nomes de UDF) podem ser sobrecarregados, portanto, é necessário especificar o tipo de dados do(s) argumentos(s). Para obter mais detalhes sobre os procedimentos de sobrecarga armazenados, consulte Sobrecarga de procedimentos e funções.
Conceder o privilégio de criar exibições materializadas no esquema especificado para a função de banco de dados mydb.dr1
:
GRANT CREATE MATERIALIZED VIEW ON SCHEMA mydb.myschema TO DATABASE ROLE mydb.dr1;
Conceder os privilégios SELECT e INSERT em todas as tabelas futuras criadas no esquema mydb.myschema
à função de banco de dados mydb.dr1
:
GRANT SELECT,INSERT ON FUTURE TABLES IN SCHEMA mydb.myschema TO DATABASE ROLE mydb.dr1;
Conceder o privilégio USAGE em todos os esquemas futuros do banco de dados mydb
à função role1
:
USE ROLE ACCOUNTADMIN; GRANT USAGE ON FUTURE SCHEMAS IN DATABASE mydb TO DATABASE ROLE mydb.dr1;
Classes¶
Para permitir que uma função de conta crie orçamentos em um esquema, conceda o privilégio CREATE SNOWFLAKE.CORE.BUDGET no esquema à função:
USE ROLE ACCOUNTADMIN; GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema TO ROLE budget_admin;
Para permitir que uma função de conta crie um modelo de função baseado em ML do Snowflake Cortex (previsão, detecção de anomalias ou classificação) em um esquema, conceda o privilégio apropriado no esquema à função. Os seguintes privilégios estão disponíveis.
CREATE SNOWFLAKE.ML.ANOMALY_DETECTION
CREATE SNOWFLAKE.ML.CLASSIFICATION
CREATE SNOWFLAKE.ML.FORECAST