Para conceder as mesmas permissões a vários usuários em um projeto do MaxCompute, crie uma função, conceda permissões a ela e associe-a aos usuários. Assim, os usuários herdam 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.
Casos de uso de autorização de funções
O MaxCompute oferece suporte aos cenários de autorização de funções descritos na tabela a seguir. Após conceder permissões a uma função, você pode associar a função a um usuário. Caso um usuário não precise mais das permissões, desassocie a função do usuário.
Cenário de autorização de função | Método de autorização | Autorizador | Plataforma de autorização |
| Para obter mais informações, consulte a coluna Autorizadores suportados no tópico Permissões. | ||
Conceder permissões de acesso a dados de alta sensibilidade a uma função | |||
Revogar permissões de acesso a dados de alta sensibilidade de uma função |
Conceder permissões de operação em um objeto a uma função
Você pode conceder permissões de operação em projetos, tabelas, modelos, recursos, funções ou instâncias a 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 recurso 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 Controle de acesso ACL ou Controle de acesso baseado em política.
-
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 recurso.
-- 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, recursos, 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 recurso 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 Controle de acesso ACL ou Controle de acesso baseado em política.
-
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 recurso.-- 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 Baixe a uma função
Você pode conceder a uma função a permissão para baixar dados de tabelas, recursos, 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 Controle de permissão de baixe.
-
Exemplo
Suponha que o controle de permissão de baixe 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 Baixe de uma função
Você pode revogar de uma função a permissão para baixar dados de tabelas, recursos, 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 Controle de permissão de baixe.
-
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, conceda as permissões adequadas. Para saber mais sobre como configurar um rótulo de nível de permissão para um usuário ou 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>]; -
Parâmetros
Para obter mais informações sobre os parâmetros, consulte Autorização explícita baseada em rótulo.
-
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
Você pode revogar as permissões de acesso a dados de alta sensibilidade de uma função sem alterar o nível de permissão intrínseco dela.
-
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 Revogar autorização explícita baseada em rótulo.
-
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;
Associar uma função a um usuário
Associe uma função integrada ou personalizada do nível do projeto a um usuário para que ele herde as permissões dessa 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 associada ao usuário.
Execute o comando
list roles;no cliente MaxCompute para visualizar as informações das funções.user_name
Sim
Nome do usuário ao qual você deseja associar a função.
Execute o comando
list users;no cliente MaxCompute para consultar as informações dos usuários. -
Exemplo
Este exemplo demonstra como associar 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
Desassocie uma função de um usuário para remover as permissões concedidas por meio dela.
-
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 cliente MaxCompute para obter o nome da função.user_name
Sim
Nome do usuário do qual você deseja desassociar a função.
Utilize o cliente MaxCompute 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óximas etapas
Após conceder permissões a uma função, realize as operações abaixo conforme necessário: