Para conceder as mesmas permissões a vários usuários em um projeto do MaxCompute, crie uma função, conceda permissões a essa função e, em seguida, atribua-a aos usuários. Dessa forma, os usuários herdam automaticamente as permissões da função. Este tópico descreve a sintaxe para autorização de funções no nível do projeto e fornece exemplos de uso.
Casos de uso de autorização de funções
O MaxCompute suporta os cenários de autorização de funções descritos na tabela a seguir. Após conceder permissões a uma função, você pode attach a role to a user. Caso um usuário não precise mais das permissões, utilize detach a role from a user.
Cenário de autorização de função | Método de autorização | Autorizador | Plataforma de autorização |
| Para mais informações, consulte a coluna Supported authorizers no tópico Permissões. | ||
Revoke permissions to access high-sensitivity data from a role |
Conceder permissões de operação em um objeto a uma função
É possível conceder permissões de operação em projetos, tabelas, modelos, resources, funções ou instâncias para uma função.
-
Sintaxe
-
Conceder permissões de operação em um projeto a uma função
-
Autorização ACL
GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorização por política usando a sintaxe ACL
GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Conceder permissões de operação em uma tabela a uma função
-
Autorização ACL
GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorização por política usando a sintaxe ACL
GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Conceder permissões de operação em um modelo a uma função
-
Autorização ACL
GRANT Describe|Execute|Alter|Drop|All ON MODEL <model_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorização por política usando a sintaxe ACL
GRANT Describe|Execute|Alter|Drop|All ON MODEL <model_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Conceder permissões de operação em um resource a uma função
-
Autorização ACL
GRANT Read|Write|Delete|All ON resource <resource_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorização por política usando a sintaxe ACL
GRANT Read|Write|Delete|All ON resource <resource_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Conceder permissões de operação em uma função a uma função
-
Autorização ACL
GRANT Read|Write|Delete|Execute|All ON FUNCTION <function_name> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorização por política usando a sintaxe ACL
GRANT Read|Write|Delete|Execute|All ON FUNCTION <function_name> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
Conceder permissões de operação em uma instância a uma função
-
Autorização ACL
GRANT Read|Write|All ON instance <instance_id> TO ROLE <role_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")]; -
Autorização por política usando a sintaxe ACL
GRANT Read|Write|All ON instance <instance_id> TO ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}"[, "conditions"= "<conditions>", "expires"="<days>"]);
-
-
-
Parâmetros
Para obter mais informações sobre os parâmetros, consulte ACL access control ou Policy-based access control.
-
Exemplos
Considere que
Bob@aliyun.comseja o proprietário do projetotest_project_ae que exista uma função chamadaWorkercriada nesse projeto. Os exemplos a seguir demonstram como conceder permissões à funçãoWorker.-
Exemplo 1: Conceder a uma função as permissões para criar tabelas, funções e instâncias, além de listar todos os objetos em um projeto.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT CreateTable, CreateFunction, CreateInstance, List ON project test_project_a TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 2: Conceder a uma função as permissões para ler metadados e dados de uma tabela.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT Describe, Select ON TABLE sale_detail TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 3: Conceder a uma função todas as permissões em um modelo.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT All ON MODEL my_model TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT All ON MODEL my_model TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 4: Conceder a uma função as permissões para ler e atualizar um resource.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT Read, Write ON resource udtf.jar TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT Read, Write ON resource udtf.jar TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 5: Conceder a uma função as permissões para ler e atualizar uma função.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker; -- Grant permissions using the ACL syntax for policy authorization. GRANT Read, Write ON FUNCTION udf_test TO ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 6: Conceder a uma função todas as permissões de operação em uma instância.
-- Bob enters the test_project_a project. use test_project_a; -- Grant permissions using ACL. GRANT All ON instance 202112300224**** TO ROLE Worker; -- Grant permissions using the ACL syntax for 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
Você pode revogar as permissões de operação em projetos, tabelas, modelos, resources, funções ou instâncias de uma função.
-
Sintaxe
-
Revogar permissões de operação em um projeto de uma função
-
Revogar permissões concedidas via ACL
REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> FROM ROLE <role_name>; -
Revogar permissões concedidas via autorização por política
REVOKE Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Revogar permissões de operação em uma tabela de uma função
-
Revogar permissões concedidas via ACL
REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>; -
Revogar permissões concedidas via autorização por política
REVOKE Describe|Select|Alter|Update|Drop|ShowHistory|All ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Revogar permissões de operação em um modelo de uma função
-
Revogar permissões concedidas via ACL
REVOKE Describe|Execute|Alter|Drop|All ON MODEL <model_name> FROM ROLE <role_name>; -
Revogar permissões concedidas via autorização por política
REVOKE Describe|Execute|Alter|Drop|All ON MODEL <model_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Revogar permissões de operação em um resource de uma função
-
Revogar permissões concedidas via ACL
REVOKE Read|Write|Delete|All ON resource <resource_name> FROM ROLE <role_name>; -
Revogar permissões concedidas via autorização por política
REVOKE Read|Write|Delete|All ON resource <resource_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Revogar permissões de operação em uma função de uma função
-
Revogar permissões concedidas via ACL
REVOKE Read|Write|Delete|Execute|All ON FUNCTION <function_name> FROM ROLE <role_name>; -
Revogar permissões concedidas via autorização por política
REVOKE Read|Write|Delete|Execute|All ON FUNCTION <function_name> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
Revogar permissões de operação em uma instância de uma função
-
Revogar permissões concedidas via ACL
REVOKE Read|Write|All ON instance <instance_id> FROM ROLE <role_name>; -
Revogar permissões concedidas via autorização por política
REVOKE Read|Write|All ON instance <instance_id> FROM ROLE <role_name> privilegeproperties("policy" = "true", "{allow}"="{true|false}");
-
-
-
Parâmetros
Para obter mais informações sobre os parâmetros, consulte ACL access control ou Policy-based access control.
-
Exemplos
Os exemplos a seguir mostram como revogar permissões da função
Worker.-
Exemplo 1: Revogar da função
Workeras permissões para criar tabelas, funções e instâncias, bem como listar todos os objetos em um projeto.-- Bob enters the test_project_a project. use test_project_a; -- Revoke permissions granted using ACL. REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE CreateTable, CreateFunction, CreateInstance, List ON project test_project_a FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 2: Revogar da função
Workeras permissões para ler metadados e dados de uma tabela.-- Bob enters the test_project_a project. use test_project_a; -- Revoke permissions granted using ACL. REVOKE Describe, Select ON TABLE sale_detail TO ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE Describe, Select ON TABLE sale_detail FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 3: Revogar da função
Workertodas as permissões em um modelo.-- Bob enters the test_project_a project. use test_project_a; -- Revoke permissions granted using ACL. REVOKE All ON MODEL my_model FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE All ON MODEL my_model FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 4: Revogar da função
Workeras permissões para ler e atualizar um resource.-- Bob enters the test_project_a project. USE test_project_a; -- Revoke permissions granted using ACL. REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE Read, Write ON resource udtf.jar FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 5: Revogar da função
Workeras permissões para ler e atualizar uma função.-- Bob enters the test_project_a project. USE test_project_a; -- Revoke permissions granted using ACL. REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE Read, Write ON FUNCTION udf_test FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true"); -
Exemplo 6: Revogar da função
Workertodas as permissões de operação em uma instância.-- Bob enters the test_project_a project. USE test_project_a; -- Revoke permissions granted using ACL. REVOKE All ON instance 202112300224**** FROM ROLE Worker; -- Revoke permissions granted using policy authorization. REVOKE All ON instance 202112300224**** FROM ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
-
Conceder a permissão Download a uma função
É possível conceder a uma função a permissão para baixar dados de tabelas, resources, funções ou instâncias.
-
Sintaxe
GRANT Download ON {Table|Resource|Function|Instance} <object_name> TO ROLE <role_name>; -
Parâmetros
Para obter mais informações sobre os parâmetros, consulte Download permission control.
-
Exemplo
Suponha que o controle de permissão de download esteja ativado para o projeto
test_project_a. O exemplo a seguir mostra como conceder à funçãoWorkera permissão para baixar dados de uma tabela específica.-- Bob enters the test_project_a project. USE test_project_a; -- Bob grants the permission to the Worker role. GRANT Download ON TABLE sale_detail TO ROLE Worker;
Revogar a permissão Download de uma função
Você pode revogar de uma função a permissão para baixar dados de tabelas, resources, funções ou instâncias.
-
Sintaxe
REVOKE Download ON {Table|Resource|Function|Instance} <object_name> FROM ROLE <role_name>; -
Parâmetros
Para obter mais informações sobre os parâmetros, consulte Download permission control.
-
Exemplo
O exemplo a seguir demonstra como revogar da função
Workera permissão para baixar dados de uma tabela específica.-- Bob enters the test_project_a project. USE test_project_a; -- Bob revokes the permission from the Worker role. REVOKE Download ON TABLE sale_detail FROM ROLE Worker;
Conceder permissões de acesso a dados de alta sensibilidade a uma função
Após definir um rótulo de nível de permissão para uma função, caso ela precise acessar dados com um nível de sensibilidade superior, será necessário conceder as permissões adequadas. Para saber mais sobre como definir um rótulo de nível de permissão para um usuário ou função, consulte Set a permission level label for a user or role.
-
Sintaxe
GRANT Label <number> ON TABLE <table_name> [(<column_list>)] TO ROLE <role_name> [WITH exp <days>]; -
Parâmetros
Para obter mais informações sobre os parâmetros, consulte Explicit label-based authorization.
-
Exemplo
Considere que, no projeto
test_project_a, o rótulo de nível de permissão da funçãoWorkerseja 2. O exemplo abaixo ilustra como conceder a essa função a permissão para acessar dados com nível máximo de sensibilidade 4 na tabelasale_detail.-- Bob enters the test_project_a project. USE test_project_a; -- Bob grants the permission to the Worker role. GRANT Label 4 ON TABLE sale_detail TO ROLE Worker;
Revogar permissões de acesso a dados de alta sensibilidade de uma função
É possível revogar as permissões de acesso a dados de alta sensibilidade de uma função. O nível de permissão da própria função permanece inalterado.
-
Sintaxe
REVOKE Label ON TABLE <table_name> [(<column_list>)] FROM ROLE <role_name>; -
Parâmetros
Para obter mais informações sobre os parâmetros, consulte Revoke explicit label-based authorization.
-
Exemplo
O exemplo a seguir mostra como revogar da função
Workera permissão para acessar dados com nível máximo de sensibilidade 4 na tabelasale_detail.-- Bob enters the test_project_a project. USE test_project_a; -- Bob revokes the permission from the Worker role. REVOKE Label ON TABLE sale_detail FROM ROLE Worker;
Atribuir uma função a um usuário
Você pode atribuir uma função integrada ou personalizada do nível do projeto a um usuário. Assim, o usuário herda as permissões associadas a essa função.
-
Sintaxe
GRANT <role_name> TO <user_name>; -
Observações
Vários usuários podem ser associados à mesma função, e um único usuário pode receber múltiplas funções.
-
Parâmetros
Parâmetro
Obrigatório
Descrição
role_name
Sim
Nome da função a ser atribuída ao usuário.
Execute o comando
list roles;no MaxCompute client para visualizar as informações das funções.user_name
Sim
Nome do usuário ao qual você deseja atribuir a função.
Execute o comando
list users;no MaxCompute client para visualizar as informações dos usuários. -
Exemplo
Este exemplo demonstra como atribuir a função
Workerao usuárioKa**@aliyun.come ao usuário RAMRAM$Bob@aliyun.com:Allenem um projeto do MaxCompute.-- Bob enters the test_project_a project. USE test_project_a; -- Bob attaches the role to the users. GRANT Worker TO ALIYUN$Ka**@aliyun.com; GRANT Worker TO RAM$Bob@aliyun.com:Allen;
Desassociar uma função de um usuário
É possível desassociar uma função de um usuário. Após a remoção, o usuário perde as permissões que haviam sido concedidas por meio daquela função.
-
Sintaxe
REVOKE <role_name> FROM <user_name>; -
Parâmetros
Parâmetro
Obrigatório
Descrição
role_name
Sim
Nome da função a ser desassociada do usuário.
Execute o comando
list roles;no MaxCompute client para obter o nome da função.user_name
Sim
Nome do usuário do qual você deseja desassociar a função.
Utilize o MaxCompute client para executar o comando
list users;e obter o nome de usuário. -
Exemplo
Este exemplo ilustra como desassociar a função
WorkerdeKate@aliyun.come deRAM$Bob@aliyun.com:Allen.-- Bob enters the test_project_a project. USE test_project_a; -- Bob detaches the role from the users. REVOKE Worker FROM ALIYUN$Kate@aliyun.com; REVOKE Worker FROM RAM$Bob@aliyun.com:Allen;
Próximos passos
Após conceder permissões a uma função, realize as operações abaixo conforme necessário: