Este tópico descreve as permissões compatíveis com o MaxCompute.
Contexto
O MaxCompute oferece controle de acesso granular para projetos, cotas, conexões de rede e objetos nos projetos, como tabelas, modelos, funções, recursos e instâncias. Também é possível controlar downloads via Tunnel, acesso a dados sensíveis e acesso entre projetos. Para garantir a segurança dos objetos, conceda permissões específicas sobre os objetos de um projeto aos usuários conforme o escopo de operação de cada um.
A autorização envolve os três elementos a seguir.
Elemento de permissão | Descrição |
Sujeito | O principal é o usuário ou função que recebe as permissões. Nota:
Nota O autorizador é um usuário responsável por executar operações de autorização. Esse usuário só pode realizar tais operações se tiver capacidade para conceder permissões sobre os objetos e ações de destino. |
Objeto | Objetos em um tenant do MaxCompute.
Objetos ou comportamentos em um projeto do MaxCompute.
|
Ação | As ações dependem do tipo de objeto. Cada tipo aceita ações diferentes. Por exemplo, tabelas permitem operações de leitura, escrita e consulta. |
Permissões sobre objetos em um tenant
A tabela a seguir detalha as permissões aplicáveis aos objetos em um tenant do MaxCompute.
Objeto | Ação | Descrição | Autorizadores compatíveis | Método de autorização |
Networklink | List | Visualize uma lista com todos os tipos de objetos de conexão de rede. |
| Conceder permissões a funções: Controle de acesso baseado em políticas. |
CreateNetworklink | Crie um objeto de conexão de rede (Networklink) em um tenant. | |||
Describe | Ler os metadados de um objeto de conexão de rede. | |||
Drop | Exclua um objeto de conexão de rede. | |||
All | Todas as permissões anteriores sobre objetos de conexão de rede. | |||
Quota | Usage | A cota serve principalmente para autenticar o recurso |
|
Permissões sobre projetos e objetos em projetos
As tabelas abaixo apresentam as permissões relativas a projetos do MaxCompute e aos objetos neles contidos.
-
Objetos
A tabela a seguir descreve as permissões sobre objetos em projetos do MaxCompute.
Objeto
Ação
Descrição
Principais compatíveis
Método de autorização
Descrição do recurso
Projeto
Read
Visualize informações do próprio projeto, sem incluir quaisquer objetos nele contidos.
Proprietário do projeto
Não compatível
acs:odps:*:projects/<project_name>
Write
Atualize informações do próprio projeto, sem incluir quaisquer objetos nele contidos.
List
Consultar todos os tipos de objetos em um projeto. Exemplos:
SHOW TABLES;,SHOW FUNCTIONS;ouSHOW MODELS;.Proprietário do projeto
Usuários com a função Super_Administrator ou Admin
Conceder permissões a usuários ou funções: Controle de acesso ACL
Conceder permissões a funções: Controle de acesso baseado em políticas
CreateTable
Crie uma tabela em um projeto. Exemplo:
CREATE TABLE <table_name>...;.CreateModel
Crie um modelo em um projeto. Exemplo:
CREATE Model <model_name>...;.CreateInstance
Crie uma instância no projeto, o que equivale a execute um job.
CreateFunction
Crie uma função em um projeto. Exemplo:
CREATE FUNCTION <function_name> ...;.CreateResource
Adicionar um recurso a um projeto. Use o comando
add file|archive|py|jar <local_file>... ;ouadd table <table_name> ...;para adicionar o recurso.All
Todas as permissões anteriores sobre o projeto.
Schema
Describe
Ler os metadados de um schema, incluindo horário de criação, modificação e proprietário. Execute o comando
DESC SCHEMA <schema_name>;.NotaEsta permissão não abrange os metadados de tabelas, recursos e funções dentro do schema.
Proprietário do projeto
Proprietário do schema
Usuários com a função Super_Adminstrator ou Admin
acs:odps:*:projects/<project_name>/schemas/<schema_name>
Alter
Modifique os metadados de um schema, incluindo proprietário e comentários. Execute
ALTER Schema <schema_name> CHANGEOWNER TO <new_owner>;ouALTER Schema <schema_name> SET COMMENT '<new_comment>';.NotaEsta permissão não inclui a modificação de metadados de tabelas, recursos e funções no schema.
Drop
Exclua um schema. Exemplo:
DROP SCHEMA <schema_name>;.List
Consultar todos os tipos de objetos em um schema, como
SHOW TABLES;,SHOW FUNCTIONS;eSHOW MODELS;.CreateTable
Crie uma tabela em um schema. Exemplo:
CREATE TABLE <table_name>...;.CreateModel
Crie um modelo em um schema. Exemplo:
CREATE Model <model_name>...;.CreateFunction
Crie uma função definida pelo usuário em um schema. Execute o comando
CREATE FUNCTION <function_name>...;.CreateResource
Adicionar recursos a um schema. Exemplo:
add file|archive|py|jar <local_file>...;ouadd table <table_name> ...;.All
Todas as permissões anteriores sobre o schema.
Tabela
Describe
Ler os metadados de uma tabela, incluindo seu schema, datas de criação e modificação, além do tamanho dos dados. Execute o comando
DESC <table_name>;.Proprietário da tabela
Proprietário do projeto
Proprietário do schema
Usuários com a função Super_Administrator
Usuários com a função Admin (não podem alterar o proprietário da tabela)
Antes da ativação do modelo de três camadas:
acs:odps:*:projects/<project_name>/tables/<table_name>
Após a ativação do modelo de três camadas:
acs:odps:*:projects/<project_name>/schemas/<schema_name>/tables/<table_name>
Select
Consultar os dados de uma tabela. Execute o comando
SELECT * FROM <table_name>;.Alter
Modifique os metadados de uma tabela, como alterar o proprietário, o nome da tabela ou de colunas, além de adicionar ou exclua partições. Execute o comando
ALTER TABLE <table_name> ADD IF NOT EXISTS PARTITION ...;.Update
Atualize os dados de uma tabela. Utilize comandos como
INSERT INTO|OVERWRITE TABLE <table_name> ...;,UPDATE <table_name> SET ...;ouDELETE FROM <table_name> WHERE ...;.Drop
Exclua uma tabela. Execute o comando
DROP TABLE <table_name>;.ShowHistory
Consultar os dados de backup de uma tabela. Execute o comando
SHOW HISTORY FOR TABLE <table_name>;.All
Todas as permissões anteriores sobre a tabela.
Modelo
Describe
Ler metadados do modelo, incluindo tipo, versão, descrição e data de criação. Exemplo:
DESC <model_name>...;Proprietário do modelo
Proprietário do projeto
Proprietário do schema
Usuários com a função Super_Administrator
Usuários com a função Admin (não podem alterar o proprietário do modelo)
Antes da ativação do modelo de três camadas: acs:odps:*:projects/<project_name>/models/<model_name>
Após a ativação do modelo de três camadas: acs:odps:*:projects/<project_name>/schemas/<schema_name>/models/<model_name>
Execute
Invocar um modelo, inclusive especifique-o em uma função de IA para inferência.
Alter
Modifique os metadados de um modelo, permitindo adicionar novas versões ou alterar a versão padrão. Exemplo:
ALTER Model <model_name>...;.Drop
Exclua um modelo. Exemplo:
DROP MODEL <table_name>;.All
Todas as permissões anteriores sobre o modelo.
Função
Read
Ler o arquivo de programa de uma UDF do MaxCompute.
Proprietário da função
Proprietário do projeto
Proprietário do schema
Usuários com a função Super_Administrator ou Admin
Antes da ativação do modelo de três camadas: acs:odps:*:projects/<project_name>/registration/functions/<functions_name>
Após a ativação do modelo de três camadas: acs:odps:*:projects/<project_name>/schemas/<schema_name>/registration/functions/<functions_name>
Write
Atualize uma UDF.
Delete
Exclua uma UDF. Execute o comando
DROP FUNCTION <function_name>;.Execute
Chamar uma UDF. Execute o comando
SELECT <function_name> FROM ...;.All
Todas as permissões anteriores sobre a função.
Recurso
Read
Ler um recurso.
Proprietário do recurso
Proprietário do projeto
Usuários com a função Super_Administrator ou Admin
Antes da ativação do modelo de três camadas: acs:odps:*:projects/<project_name>/resources/<resources_name>
Após a ativação do modelo de três camadas: acs:odps:*:projects/<project_name>/schemas/<schema_name>/resources/<resources_name>
Write
Atualize um recurso.
Delete
Exclua um recurso. Execute o comando
DROP RESOURCE <resource_name>;.All
Todas as permissões anteriores sobre o recurso.
External Volume
CreateVolume
Crie um volume externo.
Proprietário do volume externo
Proprietário do projeto
Usuários com a função Super_Administrator ou Admin
acs:odps:*:projects/<project_name>/volumes/<volume_name>
Read
Ler dados de um volume externo.
Write
Atualize dados em um volume externo.
Delete
Exclua um volume externo. Execute o comando
vfs -rm -r <volume_path>;.All
Todas as permissões anteriores sobre um volume externo.
Instância
Read
Ler uma instância.
Proprietário do projeto
Usuários com a função Super_Administrator ou Admin
acs:odps::projects/<project_name>/instances/
Write
Atualize uma instância.
All
Todas as permissões anteriores sobre uma instância.
Nota-
A permissão CreateTable em um projeto, bem como as permissões Select, Alter, Update e Drop nas tabelas desse projeto, exigem a permissão CreateInstance no projeto.
Se você tiver as permissões Select, Alter, Update ou Drop em uma tabela, mas não tiver a permissão CreateInstance no projeto, não poderá execute a operação correspondente. Por exemplo, para consultar uma tabela do Projeto B a partir do Projeto A, é necessário ter a permissão CreateInstance no Projeto A e a permissão Select na tabela do Projeto B.
Quando o modelo de três camadas estiver ativado para um projeto, o URI do recurso de uma tabela, função ou recurso incluirá o nível de schema. O formato original do URI de recurso
acs:odps:*:projects/<project_name>/tables/<table_name>representa apenas recursos no schemadefault. Isso equivale aacs:odps:*:projects/<project_name>/schemas/default/tables/<table_name>. Recomendamos ajustar o URI do recurso conforme necessário.
-
Comportamentos
A tabela abaixo lista as permissões sobre comportamentos relacionados a objetos em um projeto do MaxCompute.
Objeto
Ação
Descrição
Autorizadores
Método de autorização
Tabela, Função, Recurso, Instância
Download
Baixe dados de tabelas, recursos, funções ou instâncias usando o Tunnel.
Proprietário do projeto
Usuários com a função Super_Administrator
Rótulo
N/A
Ler dados sensíveis no nível de coluna.
Proprietário do projeto
Usuários com a função Admin
Pacote
Read
Empacotar objetos e suas permissões em um projeto para permitir acesso entre projetos.
Proprietário do projeto
Usuários com a função Admin
Permissões de gerenciamento de projetos
-
A tabela a seguir lista as ações associadas às permissões de gerenciamento do MaxCompute.
Tipo de permissão
Lista de ações
Descrição
Configuração de segurança do projeto
SetSecurityConfiguration
Defina configurações de segurança para um projeto.
GetSecurityConfiguration
Visualize as configurações de segurança de um projeto.
SetProperty
Defina uma lista de permissões de endereços IP para um projeto.
Gerenciamento de políticas
PutPolicy
Atualize uma política.
GetPolicy
Visualize uma política.
AddPolicyStatments
Adicionar instruções de política.
RemovePolicyStatments
Remover instruções de política.
Gerenciamento de Account Provider
AddAccountProviders
Adicionar um provedor de contas.
RemoveAccountProviders
Remover um provedor de contas.
ListAccountProviders
Listar provedores de contas.
Gerenciamento de Projetos Confiáveis
AddTrustedProjects
Adicionar projetos confiáveis.
RemoveTrustedProjects
Remover projetos confiáveis.
ListTrustedProjects
Listar projetos confiáveis.
Gerenciamento de principais
AddUser
Adicionar um usuário.
RemoveUser
Remover um usuário.
ListUsers
Listar usuários.
ListUserRoles
Listar as funções de um usuário.
Gerenciamento de Funções
CreateRole
Crie uma função.
DescribeRole
Visualize uma função.
AlterRole
Modifique as propriedades de uma função.
DropRole
Exclua uma função.
ListRoles
Listar funções.
Autorização de funções
GrantRole
Conceder uma função a um usuário.
RevokeRole
Revogar uma função de um usuário.
ListRolePrincipals
Visualize a lista de usuários aos quais uma função foi concedida.
Gerenciamento de pacotes
CreatePackage
Crie um pacote.
DescribePackage
Visualize um pacote.
DropPackage
Exclua um pacote.
ShowPackages
Listar pacotes.
InstallPackage
Instale um pacote.
UninstallPackage
Desinstalar um pacote.
AllowInstallPackage
Permitir que outros projetos usem um pacote.
DisallowInstallPackage
Impedir que outros projetos usem um pacote.
AddPackageResource
Adicionar um recurso a um pacote.
RemovePackageResource
Remover um recurso de um pacote.
Controle de autorização por rótulo
GrantLabel
Conceder permissões de rótulo.
RevokeLabel
Revogar permissões de rótulo.
ShowLabelGrants
Visualize permissões de rótulo.
SetDataLabel
Defina um rótulo de dados para um usuário ou função.
Controle de autorização ACL
GrantPrivs
Conceder permissões ACL.
RevokePrivs
Revogar permissões ACL.
ShowAclGrants
Visualize permissões ACL.
Limpar permissões expiradas
ClearExpiredGrants
Limpar permissões expiradas.
-
Categorias de recursos para permissões de gerenciamento:
NotaNos URIs de recurso a seguir, a parte
acs:odps:*:projects/<project_name>/foi omitida. Apenas a parte posterior a<project_name>/é fornecida.Categoria do objeto de permissão
URI do recurso
Descrição
Configuração de segurança do projeto
authorization/configurations/security_configuration
security_configuration do projeto
authorization/configurations/policy
policy do projeto
authorization/configurations/security_policy
security_policy do projeto
authorization/configurations/protected_exception
protected_exception do projeto
Projeto
authorization
Objetos de gerenciamento, como provedores de contas e projetos confiáveis em um projeto.
Principal do Projeto
authorization/users
Usuário do projeto.
Função do projeto
authorization/roles/resource/<role_name>
Função de recurso do projeto.
authorization/roles/administrator/<role_name>
Função de administrador do projeto.
authorization/roles/super_administrator/super_administrator
Função super_administrator integrada de um projeto.
Recurso do projeto
authorization/objecttype/objectname
Recursos como Table, Volume e Job.
Gerenciamento de pacotes
authorization/packages/<projectname>.<packagename>
Permissões relacionadas a pacotes.
Recurso do pacote
authorization/packageresources/projectname.packagename/objecttype/objectname
Recurso em um pacote.
Notas de uso:
Para usuários, os URIs podem especifique apenas categorias de usuários, e não usuários específicos, pois envolvem nomes de usuário.
Para funções, os URIs podem especifique uma função específica.
Para distinguir as diferenças semânticas entre pacotes e os recursos neles contidos, o formato de URI para pacotes é
packages/projectname.packagename, enquanto o formato para recursos dentro de pacotes épackageresources/projectname.packagename/objecttype/objectname. Isso permite usarpackages/*para representar todos os pacotes epackageresources/*para representar todos os recursos em todos os pacotes.
-
A tabela a seguir lista as permissões de gerenciamento.
Tipo de permissão
Permissão
Ação
Recurso
Permissões de configuração de segurança do projeto
Defina configurações de segurança.
SetSecurityConfigurationprojects/<project_name>/authorization/configurations/security_configurationVisualize configurações de segurança.
GetSecurityConfigurationDefina uma política.
PutPolicyprojects/<project_name>/authorization/configurations/policyVisualize uma política.
GetPolicyDefina protected_exception.
PutPolicyprojects/<project_name>/authorization/configurations/protected_exceptionVisualize protected_exception.
GetPolicyDefina security_policy.
PutPolicyprojects/<project_name>/authorization/configurations/security_policyVisualize security_policy.
GetPolicyGerenciamento de Account Provider do Projeto
Adicionar um provedor de contas.
AddAccountProviderprojects/<project_name>/authorizationExclua um provedor de contas.
RemoveAccountProviderListar provedores de contas.
ListAccountProvidersGerenciamento de Projetos Confiáveis do Projeto
Adicionar projetos confiáveis.
AddTrustedProjectsprojects/<project_name>/authorizationExclua projetos confiáveis.
RemoveTrustedProjectsListar projetos confiáveis.
ListTrustedProjectsGerenciamento de Principais do Projeto
Adicionar um usuário.
AddUserprojects/<project_name>/authorization/usersExclua um usuário.
RemoveUserListar usuários.
ListUsersListar funções de usuário.
ListUserRolesGerenciamento de funções do projeto
Adicionar uma função de recurso.
CreateRoleprojects/<project_name>/authorization/roles/resourceVisualize uma função de recurso.
DescribeRoleprojects/<project_name>/authorization/roles/resource/<role_name>Exclua uma função de recurso.
DropRoleAdicionar uma função de administrador.
N/A
NotaSomente o proprietário do projeto ou um usuário com a função Super_Administrator pode crie uma função de administrador e conceder permissões a ela.
Exclua uma função de administrador.
Visualize uma função de administrador.
DescribeRoleprojects/<project_name>/authorization/roles/administrator/<role_name>Listar funções.
ListRolesprojects/<project_name>/authorization/rolesGerenciamento de Policy de funções do projeto
Defina uma política para uma função de recurso.
PutPolicyprojects/<project_name>/authorization/roles/resource/<role_name>Visualize a política de uma função de recurso.
GetPolicyAdicionar instruções de política para uma função de recurso.
AddPolicyStatmentsprojects/<project_name>/authorization/roles/resource/<role_name>Remover instruções de política de uma função de recurso.
RemovePolicyStatmentsDefina uma política para uma função de administrador.
N/A
NotaSomente o proprietário do projeto ou um usuário com a função Super_Administrator pode crie uma função de administrador e conceder permissões a ela.
Visualize a política de uma função de administrador.
GetPolicyprojects/<project_name>/authorization/roles/administrator/<role_name>Adicionar instruções de política para uma função de administrador.
N/A
NotaSomente o proprietário do projeto ou um usuário com a função Super_Administrator pode crie uma função de administrador e conceder permissões a ela.
Remover instruções de política de uma função de administrador.
Autorização e visualize de funções
Conceder uma função de recurso a um usuário.
GrantRoleprojects/<project_name>/authorization/roles/resource/<role_name>Revogar uma função de recurso de um usuário.
RevokeRoleConceder uma função de administrador a um usuário.
GrantRoleprojects/<project_name>/authorization/roles/administrator/<role_name>Revogar uma função de administrador de um usuário.
RevokeRoleConceder a função Super_Administrator a um usuário.
N/A
NotaSomente o proprietário do projeto ou um usuário com a função Super_Administrator pode conceder ou revogar a função Super_Administrator.
Revogar a função Super_Administrator de um usuário.
Visualize a lista de usuários aos quais uma função de recurso foi concedida.
ListRolePrincipalsprojects/<project_name>/authorization/roles/resource/<role_name>Visualize a lista de usuários aos quais uma função de administrador foi concedida.
ListRolePrincipalsprojects/<project_name>/authorization/roles/administrator/<role_name>Visualize a lista de usuários aos quais a função Super_Administrator foi concedida.
ListRolePrincipalsprojects/<project_name>/authorization/roles/super_administrator/super_administratorVisualize a lista de funções concedidas a um usuário.
ListPrincipalRolesprojects/<project_name>/authorization/principals/usersGerenciamento de pacotes
Crie um pacote.
CreatePackageprojects/<project_name>/authorization/packagesListar pacotes.
ShowPackagesVisualize um pacote.
DescribePackageprojects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>Exclua um pacote.
DropPackageInstale um pacote.
InstallPackageprojects/<project_name>/authorization/packages/<package_creater_project_name>.<package_name>Desinstalar um pacote.
UninstallPackagePermitir que outros projetos usem um pacote.
AllowInstallPackageprojects/<project_name>/authorization/packages/<package_creator_project_name>.<package_name>Impedir que outros projetos usem um pacote.
DisallowInstallPackageAdicionar um recurso a um pacote.
AddPackageResourceprojects/<project_name>/authorization/packages/<package_creator_project_name>.<package_name>Remover um recurso de um pacote.
RemovePackageResourceControle de permissão por rótulo
Conceder permissões de rótulo em recursos de um projeto.
GrantLabelprojects/<project_name>/authorization/schemas/*/tables/*NotaUse um asterisco () para especifique todos os recursos. Por exemplo, utilize
tables/para especifique todas as tabelas em um projeto.Revogar permissões de rótulo em recursos de um projeto.
RevokeLabelVisualize permissões de rótulo em recursos de um projeto.
ShowLabelGrantsConceder permissões de rótulo em recursos de pacote.
GrantLabelprojects/<project_name>/authorization/packageresources/<package_creator_project_name>.<package_name>/<resource_relative_id>Revogar permissões de rótulo em recursos de um pacote.
RevokeLabelVisualize permissões de rótulo em recursos de um pacote.
ShowLabelGrantsVisualize permissões de rótulo para um usuário.
ShowLabelGrantsprojects/<project_name>/authorization/usersVisualize permissões de rótulo para uma função.
ShowLabelGrantsprojects/<project_name>/authorization/roles/resource/<role_name>NotaNão é possível conceder, defina ou visualize permissões de rótulo para funções de administrador.
Defina um rótulo de dados para um usuário ou função
Defina um rótulo de dados para um usuário.
SetDataLabelprojects/<project_name>/authorization/usersDefina um rótulo de dados para uma função.
SetDataLabelprojects/<project_name>/authorization/roles/resource/<role_name>Controle de permissão ACL
Conceder permissões ACL em recursos de um projeto.
GrantPrivsprojects/<project_name>/authorization/<resource_relative_id>NotaÉ possível controlar as
actionspara autorização ACL.Políticas aceitam operações de coleção de strings como
StringIntersectSetEmpty(IgnoreCase)/StringIntersectSetNotEmpty(IgnoreCase)/StringSubSet(IgnoreCase)/StringNotSubSet(IgnoreCase). Utilize esses operadores em uma política para aplicar restrições à coleção Actions por meio da chave de condiçãoacs:Privileges.Por exemplo, a política a seguir nega ao usuário
odpsxxxx@aliyun.coma concessão das permissõesDownloadouSelectem todas as tabelas do projetoprj1:{ "Action":[ "odps:GrantPrivs"], "Effect":"Deny", "Principal":"aliyun$odpsxxxx@aliyun.com", "Resource":"acs:odps::projects/prj1/authorization/acl/tables/*", "Condition":{ "IntersectionSetNotNull":{ "acs:Privileges":["Download","Select"] } } }Para um projeto, o
resource_relative_idéprojects/<project_name>.
Revogar permissões ACL em recursos de um projeto.
RevokePrivsVisualize permissões ACL em recursos de um projeto.
ShowAclGrantsConceder permissões ACL em recursos de pacote.
GrantPrivsprojects/<project_name>/authorization/packageresources/<package_creater_project_name>.<package_name>/<resource_relative_id>Revogar permissões ACL em recursos de pacote.
RevokePrivsVisualize permissões ACL em recursos de pacote.
ShowAclGrantsVisualize permissões ACL para um usuário.
ShowAclGrantsprojects/<project_name>/authorization/usersVisualize permissões ACL para uma função de recurso.
ShowAclGrantsprojects/<project_name>/authorization/roles/resource/<role_name>Limpar permissões expiradas
Limpar permissões expiradas.
ClearExpiredGrantsprojects/<project_name>/authorization