As funções permitem conceder o mesmo conjunto de permissões a vários usuários simultaneamente. Crie uma função, conceda permissões a ela e associe-a aos usuários. Cada usuário herda automaticamente as permissões da função.
Este tópico aborda a sintaxe SQL para conceder e revogar permissões em funções no nível do projeto no MaxCompute. O conteúdo inclui permissões de operação em objetos, permissões de download, permissões baseadas em rótulos para dados de alta sensibilidade e como associar ou desassociar funções de usuários.
Cenários de autorização de funções
|
Cenário |
Método de autorização |
Plataforma de autorização |
|
Conceder ou revogar permissões de operação em um objeto |
Controle de acesso baseado em Access Control List (ACL) (lista de permissões) ou controle de acesso baseado em políticas (lista de permissões ou lista de bloqueios) |
Cliente MaxCompute, Console MaxCompute (recomendado), MaxCompute Studio ou Console DataWorks |
|
Conceder ou revogar a permissão Download |
Mesmas plataformas acima |
|
|
Conceder ou revogar permissões em dados de alta sensibilidade |
Mesmas plataformas acima |
Para consultar os autorizadores permitidos para cada ação, consulte Autorizadores suportados.
Após conceder permissões a uma função, associe a função aos usuários. Para remover o acesso, desassocie a função do usuário.
Conceder permissões de operação em um objeto a uma função
Conceda permissões a uma função para projetos, tabelas, modelos, recursos, funções ou instâncias. As permissões suportadas variam conforme o tipo de objeto:
|
Tipo de objeto |
Permissões suportadas |
|
Projeto |
|
|
Tabela |
|
|
Modelo |
|
|
Recurso |
|
|
Função |
|
|
Instância |
|
Sintaxe
Autorização ACL:
GRANT <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
Autorização por política (usando sintaxe ACL):
GRANT <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
Para obter detalhes sobre os parâmetros, consulte Controle de acesso baseado em ACL e Controle de acesso baseado em políticas.
Exemplos
Os exemplos a seguir utilizam test_project_a como projeto, Worker como função e Bob@aliyun.com como proprietário do projeto. Cada exemplo apresenta tanto a sintaxe ACL quanto a de política.
Exemplo 1: Conceder permissões no nível do projeto
Conceda à função Worker as permissões para criar tabelas, funções e instâncias, além de listar todos os objetos em test_project_a.
-- Enter the project.
USE test_project_a;
-- ACL authorization
GRANT CreateTable, CreateFunction, CreateInstance, List ON project test_project_a TO ROLE Worker;
-- Policy authorization
GRANT CreateTable, CreateFunction, CreateInstance, List
ON project test_project_a
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 2: Conceder permissões de tabela
Conceda à função Worker as permissões para ler metadados e dados da tabela sale_detail.
USE test_project_a;
-- ACL authorization
GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker;
-- Policy authorization
GRANT Describe, Select
ON TABLE sale_detail
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 3: Conceder permissões de modelo
Conceda à função Worker todas as permissões no modelo my_model.
USE test_project_a;
-- ACL authorization
GRANT All ON MODEL my_model TO ROLE Worker;
-- Policy authorization
GRANT All
ON MODEL my_model
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 4: Conceder permissões de recurso
Conceda à função Worker as permissões para ler e atualizar o recurso udtf.jar.
USE test_project_a;
-- ACL authorization
GRANT Read, Write ON resource udtf.jar TO ROLE Worker;
-- Policy authorization
GRANT Read, Write
ON resource udtf.jar
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 5: Conceder permissões de função
Conceda à função Worker as permissões para ler e atualizar a função udf_test.
USE test_project_a;
-- ACL authorization
GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker;
-- Policy authorization
GRANT Read, Write
ON FUNCTION udf_test
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 6: Conceder permissões de instância
Conceda à função Worker todas as permissões na instância 202112300224****.
USE test_project_a;
-- ACL authorization
GRANT All ON instance 202112300224**** TO ROLE Worker;
-- Policy authorization
GRANT All
ON instance 202112300224****
TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Revogar permissões de operação em um objeto de uma função
Sintaxe
Revogar permissões concedidas via ACL:
REVOKE <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
FROM ROLE <role_name>;
Revogar permissões concedidas via política:
REVOKE <permissions>
ON {project <project_name> | TABLE <table_name> [(<column_list>)] | MODEL <model_name> | resource <resource_name> | FUNCTION <function_name> | instance <instance_id>}
FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
Para obter detalhes sobre os parâmetros, consulte Controle de acesso baseado em ACL e Controle de acesso baseado em políticas.
Exemplos
Os exemplos a seguir revogam permissões da função Worker em test_project_a.
Exemplo 1: Revogar permissões no nível do projeto
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE CreateTable, CreateFunction, CreateInstance, List
ON project test_project_a
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 2: Revogar permissões de tabela
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Describe, Select ON TABLE sale_detail FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Describe, Select
ON TABLE sale_detail
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 3: Revogar permissões de modelo
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE All ON MODEL my_model FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE All
ON MODEL my_model
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 4: Revogar permissões de recurso
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Read, Write
ON resource udtf.jar
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 5: Revogar permissões de função
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE Read, Write
ON FUNCTION udf_test
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Exemplo 6: Revogar permissões de instância
USE test_project_a;
-- Revoke ACL-granted permissions.
REVOKE All ON instance 202112300224**** FROM ROLE Worker;
-- Revoke policy-granted permissions.
REVOKE All
ON instance 202112300224****
FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
Conceder a permissão Download a uma função
Conceda a uma função a permissão para baixar dados de tabelas, recursos, funções ou instâncias. O controle de permissão de download deve estar ativado no projeto antes da execução deste comando.
Sintaxe
GRANT Download ON {Table|Resource|Function|Instance} <object_name> TO ROLE <role_name>;
Para obter detalhes sobre os parâmetros, consulte Controle de permissão de download.
Exemplo
Conceda à função Worker a permissão para baixar dados da tabela sale_detail.
-- Enter the project.
USE test_project_a;
-- Grant the Download permission to the role.
GRANT Download ON TABLE sale_detail TO ROLE Worker;
Revogar a permissão Download de uma função
Sintaxe
REVOKE Download ON {Table|Resource|Function|Instance} <object_name> FROM ROLE <role_name>;
Para obter detalhes sobre os parâmetros, consulte Controle de permissão de download.
Exemplo
Revogue a permissão de baixar dados da tabela sale_detail da função Worker.
USE test_project_a;
REVOKE Download ON TABLE sale_detail FROM ROLE Worker;
Conceder permissões de acesso a dados de alta sensibilidade a uma função
Use a autorização baseada em rótulos para conceder a uma função acesso a dados com nível de sensibilidade superior ao seu nível atual. Para obter informações sobre como definir um rótulo de nível de permissão para uma função, consulte Definir um rótulo de nível de permissão para um usuário ou função.
Sintaxe
GRANT Label <number> ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [WITH exp <days>];
Para obter detalhes sobre os parâmetros, consulte Autorização explícita baseada em rótulos.
Exemplo
A função Worker possui um rótulo de nível de permissão igual a 2. Conceda a ela acesso a dados com nível máximo de sensibilidade 4 na tabela sale_detail.
USE test_project_a;
GRANT Label 4 ON TABLE sale_detail TO ROLE Worker;
Revogar permissões de acesso a dados de alta sensibilidade de uma função
A revogação de permissões baseadas em rótulos não afeta o próprio rótulo de nível de permissão da função.
Sintaxe
REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>;
Para obter detalhes sobre os parâmetros, consulte Revogar autorização explícita baseada em rótulos.
Exemplo
Revogue a permissão de acessar dados com nível de sensibilidade até 4 na tabela sale_detail da função Worker.
USE test_project_a;
REVOKE Label ON TABLE sale_detail FROM ROLE Worker;
Associar uma função a um usuário
Associe uma função integrada ou personalizada no nível do projeto a um usuário. O usuário herda todas as permissões concedidas a essa função. Vários usuários podem compartilhar a mesma função, e um único usuário pode ter múltiplas funções.
Sintaxe
GRANT <role_name> TO <user_name>;
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome da função a ser associada. Execute |
|
|
Sim |
Nome do usuário de destino. Execute |
Exemplo
Associe a função Worker à conta Alibaba Cloud Ka**@aliyun.com e ao usuário RAM RAM$Bob@aliyun.com:Allen.
USE test_project_a;
GRANT Worker TO ALIYUN$Ka**@aliyun.com;
GRANT Worker TO RAM$Bob@aliyun.com:Allen;
Desassociar uma função de um usuário
Ao desassociar uma função, o usuário perde todas as permissões concedidas por ela.
Sintaxe
REVOKE <role_name> FROM <user_name>;
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Nome da função a ser desassociada. Execute |
|
|
Sim |
Nome do usuário de destino. Execute |
Exemplo
Desassocie a função Worker de Kate@aliyun.com e RAM$Bob@aliyun.com:Allen.
USE test_project_a;
REVOKE Worker FROM ALIYUN$Kate@aliyun.com;
REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;