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 dentro dos projetos, como tabelas, modelos, funções, recursos e instâncias. Também é possível controlar os downloads do Tunnel, o acesso a dados sensíveis e o acesso entre projetos. Para garantir a segurança dos objetos, conceda permissões específicas sobre os objetos de um projeto aos usuários com base no escopo de operação deles.
A autorização envolve os três elementos a seguir.
Elemento de permissão | Descrição |
Sujeito | O principal é o user or role que recebe as permissões. Nota:
Nota O autorizador é um user que executa operações de autorização. O autorizador só pode executar essas operações se tiver a capacidade de conceder permissões sobre os objetos e as 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, e diferentes tipos suportam ações distintas. Por exemplo, execute operações de leitura, gravação e consulta em tabelas. |
Permissões em objetos de um tenant
A tabela a seguir descreve as permissões em objetos de um tenant do MaxCompute.
Objeto | Ação | Descrição | Autorizadores compatíveis | Método de autorização |
Networklink | List | Você pode visualizar uma lista de todos os tipos de objetos de conexão de rede. |
| Conceder permissões a funções: Policy-based access control. |
CreateNetworklink | Para isso, crie um objeto de conexão de rede (Networklink) em um tenant. | |||
Describe | Leia os metadados de um objeto de conexão de rede. | |||
Drop | Para isso, exclua um objeto de conexão de rede. | |||
All | Todas as permissões anteriores em objetos de conexão de rede. | |||
Quota | Usage | A cota serve principalmente para autenticar o recurso |
|
Permissões em projetos e objetos em projetos
As permissões em projetos do MaxCompute e objetos em projetos são descritas nas tabelas a seguir.
-
Objetos
A tabela a seguir descreve as permissões em objetos de 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 sobre o próprio projeto. Não inclui objetos no projeto.
Proprietário do projeto
Não suportado
acs:odps:*:projects/<project_name>
Write
Para isso, atualize informações sobre o próprio projeto. Não inclui objetos no projeto.
List
Permite consultar todos os tipos de objetos em um projeto. Por exemplo,
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: ACL access control
Conceder permissões a funções: Policy-based access control
CreateTable
Permite criar uma tabela em um projeto. Para isso, selecione o projeto e execute o comando
CREATE TABLE <table_name>...;.CreateModel
Crie um modelo em um projeto, por exemplo,
CREATE Model <model_name>...;.CreateInstance
Crie uma instância no projeto, o que significa executar um job.
CreateFunction
Permite criar uma função em um projeto. Por exemplo,
CREATE FUNCTION <function_name> ...;.CreateResource
Permite adicionar um recurso a um projeto. Por exemplo, execute o comando
add file|archive|py|jar <local_file>... ;ouadd table <table_name> ...;para adicionar um recurso.All
Todas as permissões anteriores no projeto.
Schema
Describe
Leia os metadados de um schema, incluindo data de criação, data de modificação e proprietário. Por exemplo, execute o comando
DESC SCHEMA <schema_name>;.NotaEsta permissão não inclui os metadados de tabelas, recursos e funções no schema.
Proprietário do projeto
Proprietário do schema
Usuários com a função Super_Administrator ou Admin
acs:odps:*:projects/<project_name>/schemas/<schema_name>
Alter
Modifique os metadados de um schema, incluindo proprietário e comentários. Por exemplo, 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 dos metadados de tabelas, recursos e funções no schema.
Drop
Exclua um schema. Por exemplo,
DROP SCHEMA <schema_name>;.List
Permite consultar todos os tipos de objetos em um schema. Exemplos incluem
SHOW TABLES;,SHOW FUNCTIONS;eSHOW MODELS;.CreateTable
Crie uma tabela em um schema. Por exemplo,
CREATE TABLE <table_name>...;.CreateModel
Crie um modelo em um schema. Por exemplo,
CREATE Model <model_name>...;.CreateFunction
Permite criar uma função definida pelo usuário em um schema. Por exemplo, execute o comando
CREATE FUNCTION <function_name>...;.CreateResource
Adicione recursos a um schema. Por exemplo,
add file|archive|py|jar <local_file>...;ouadd table <table_name> ...;.All
Todas as permissões anteriores no schema.
Tabela
Describe
Leia os metadados de uma tabela, incluindo o schema da tabela, data de criação, data de modificação e tamanho dos dados. Por exemplo, 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
Permite consultar os dados de uma tabela. Por exemplo, execute o comando
SELECT * FROM <table_name>;.Alter
Modifique os metadados de uma tabela, como alterar o proprietário, o nome da tabela ou o nome de uma coluna, além de adicionar ou excluir partições. Por exemplo, execute o comando
ALTER TABLE <table_name> ADD IF NOT EXISTS PARTITION ...;.Update
Atualize os dados de uma tabela. Por exemplo, execute o comando
INSERT INTO|OVERWRITE TABLE <table_name> ...;,UPDATE <table_name> SET ...;ouDELETE FROM <table_name> WHERE ...;.Drop
Exclua uma tabela. Por exemplo, execute o comando
DROP TABLE <table_name>;.ShowHistory
Permite consultar os dados de backup de uma tabela. Por exemplo, execute o comando
SHOW HISTORY FOR TABLE <table_name>;.All
Todas as permissões anteriores na tabela.
Modelo
Describe
Leia os metadados do modelo, incluindo tipo, versão, descrição e data de criação. Por 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
Invoque um modelo. Para inferência, especifique um modelo em uma função de IA.
Alter
Modifique os metadados de um modelo, incluindo adicionar uma nova versão ou modificar a versão padrão. Por exemplo,
ALTER Model <model_name>...;.Drop
Exclua um modelo. Por exemplo:
DROP MODEL <table_name>;.All
Todas as permissões anteriores no modelo.
Função
Read
Leia 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. Por exemplo, execute o comando
DROP FUNCTION <function_name>;.Execute
Chame uma UDF. Por exemplo, execute o comando
SELECT <function_name> FROM ...;.All
Todas as permissões anteriores na função.
Recurso
Read
Leia 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. Por exemplo, execute o comando
DROP RESOURCE <resource_name>;.All
Todas as permissões anteriores no recurso.
Volume externo
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
Leia dados de um volume externo.
Write
Atualize dados em um volume externo.
Delete
Exclua um volume externo. Por exemplo, execute o comando
vfs -rm -r <volume_path>;.All
Todas as permissões anteriores em um volume externo.
Instância
Read
Leia 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 em uma instância.
Nota-
A permissão CreateTable em um projeto e as permissões Select, Alter, Update e Drop em tabelas no projeto exigem a permissão CreateInstance no projeto.
Se você tiver a permissão Select, Alter, Update ou Drop em uma tabela, mas não tiver a permissão CreateInstance no projeto, não poderá executar a operação correspondente. Por exemplo, para consultar uma tabela no 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.
Após a ativação do modelo de três camadas para um projeto, o URI do recurso de uma tabela, função ou recurso inclui o nível do schema. O formato original do URI do recurso
acs:odps:*:projects/<project_name>/tables/<table_name>representa apenas recursos no schemadefault. É equivalente aacs:odps:*:projects/<project_name>/schemas/default/tables/<table_name>. Recomendamos ajustar o URI do recurso conforme necessário.
-
Comportamentos
A tabela a seguir descreve as permissões em comportamentos relacionados a objetos em um projeto do MaxCompute.
Objeto
Ação
Descrição
Concedentes
Método de autorização
Tabela, Função, Recurso, Instância
Download
Para isso, 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
Label
N/A
Leia dados sensíveis no nível da coluna.
Proprietário do projeto
Usuários com a função Admin
Package
Read
Empacote objetos e suas permissões em um projeto para conceder 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
Para isso, 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
Adicione instruções de política.
RemovePolicyStatments
Remova instruções de política.
Gerenciamento de Account Provider
AddAccountProviders
Adicione um provedor de contas.
RemoveAccountProviders
Remova um provedor de contas.
ListAccountProviders
Liste provedores de contas.
Gerenciamento de Trusted Projects
AddTrustedProjects
Adicione projetos confiáveis.
RemoveTrustedProjects
Remova projetos confiáveis.
ListTrustedProjects
Liste projetos confiáveis.
Gerenciamento de principais
AddUser
Adicione um usuário.
RemoveUser
Remova um usuário.
ListUsers
Liste usuários.
ListUserRoles
Liste 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
Liste funções.
Autorização de funções
GrantRole
Conceda uma função a um usuário.
RevokeRole
Revogue uma função de um usuário.
ListRolePrincipals
Visualize a lista de usuários que receberam uma função.
Gerenciamento de pacotes
CreatePackage
Crie um pacote.
DescribePackage
Visualize um pacote.
DropPackage
Exclua um pacote.
ShowPackages
Liste pacotes.
InstallPackage
Para isso, instale um pacote.
UninstallPackage
Desinstale um pacote.
AllowInstallPackage
Permita que outros projetos usem um pacote.
DisallowInstallPackage
Impeça que outros projetos usem um pacote.
AddPackageResource
Adicione um recurso a um pacote.
RemovePackageResource
Remova um recurso de um pacote.
Controle de autorização de rótulos
GrantLabel
Conceda permissões de rótulo.
RevokeLabel
Revogue 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 de ACL
GrantPrivs
Conceda permissões de ACL.
RevokePrivs
Revogue permissões de ACL.
ShowAclGrants
Visualize permissões de ACL.
Limpar permissões expiradas
ClearExpiredGrants
Limpe permissões expiradas.
-
Categorias de recursos para permissões de gerenciamento:
NotaNos URIs de recurso a seguir, a parte
acs:odps:*:projects/<project_name>/é omitida. Apenas a parte que segue<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 especificar apenas categorias de usuários, não usuários específicos, pois envolvem nomes de usuário.
Para funções, os URIs podem especificar uma função específica.
Para distinguir diferenças semânticas entre pacotes e os recursos dentro deles, o formato de URI para pacotes é
packages/projectname.packagename, e o formato de URI 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
Adicione um provedor de contas.
AddAccountProviderprojects/<project_name>/authorizationExclua um provedor de contas.
RemoveAccountProviderListe provedores de contas.
ListAccountProvidersGerenciamento de Trusted Projects do projeto
Adicione projetos confiáveis.
AddTrustedProjectsprojects/<project_name>/authorizationExclua projetos confiáveis.
RemoveTrustedProjectsListe projetos confiáveis.
ListTrustedProjectsGerenciamento de principais do projeto
Adicione um usuário.
AddUserprojects/<project_name>/authorization/usersExclua um usuário.
RemoveUserListe usuários.
ListUsersListe funções de usuário.
ListUserRolesGerenciamento de funções do projeto
Adicione 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.
DropRoleAdicione uma função de administrador.
N/A
NotaApenas o proprietário do projeto ou um usuário com a função Super_Administrator pode criar 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>Liste funções.
ListRolesprojects/<project_name>/authorization/rolesGerenciamento de políticas 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.
GetPolicyAdicione instruções de política para uma função de recurso.
AddPolicyStatmentsprojects/<project_name>/authorization/roles/resource/<role_name>Remova instruções de política de uma função de recurso.
RemovePolicyStatmentsDefina uma política para uma função de administrador.
N/A
NotaApenas o proprietário do projeto ou um usuário com a função Super_Administrator pode criar 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>Adicione instruções de política para uma função de administrador.
N/A
NotaApenas o proprietário do projeto ou um usuário com a função Super_Administrator pode criar uma função de administrador e conceder permissões a ela.
Remova instruções de política de uma função de administrador.
Autorização e visualização de funções
Conceda uma função de recurso a um usuário.
GrantRoleprojects/<project_name>/authorization/roles/resource/<role_name>Revogue uma função de recurso de um usuário.
RevokeRoleConceda uma função de administrador a um usuário.
GrantRoleprojects/<project_name>/authorization/roles/administrator/<role_name>Revogue uma função de administrador de um usuário.
RevokeRoleConceda a função Super_Administrator a um usuário.
N/A
NotaApenas o proprietário do projeto ou um usuário com a função Super_Administrator pode conceder ou revogar a função Super_Administrator.
Revogue a função Super_Administrator de um usuário.
Visualize a lista de usuários que receberam uma função de recurso.
ListRolePrincipalsprojects/<project_name>/authorization/roles/resource/<role_name>Visualize a lista de usuários que receberam uma função de administrador.
ListRolePrincipalsprojects/<project_name>/authorization/roles/administrator/<role_name>Visualize a lista de usuários que receberam a função Super_Administrator.
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/packagesListe 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>Desinstale um pacote.
UninstallPackagePermita que outros projetos usem um pacote.
AllowInstallPackageprojects/<project_name>/authorization/packages/<package_creator_project_name>.<package_name>Impeça que outros projetos usem um pacote.
DisallowInstallPackageAdicione um recurso a um pacote.
AddPackageResourceprojects/<project_name>/authorization/packages/<package_creator_project_name>.<package_name>Remova um recurso de um pacote.
RemovePackageResourceControle de permissão de rótulos
Conceda permissões de rótulo em recursos de um projeto.
GrantLabelprojects/<project_name>/authorization/schemas/*/tables/*NotaVocê pode usar um asterisco () para especificar todos os recursos. Por exemplo, use
tables/para especificar todas as tabelas em um projeto.Revogue permissões de rótulo em recursos de um projeto.
RevokeLabelVisualize permissões de rótulo em recursos de um projeto.
ShowLabelGrantsConceda permissões de rótulo em recursos de pacote.
GrantLabelprojects/<project_name>/authorization/packageresources/<package_creator_project_name>.<package_name>/<resource_relative_id>Revogue 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, definir ou visualizar 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 de ACL
Conceda permissões de ACL em recursos de um projeto.
GrantPrivsprojects/<project_name>/authorization/<resource_relative_id>NotaVocê pode controlar as
actionspara autorização de ACL.As políticas suportam operações de coleção de strings como
StringIntersectSetEmpty(IgnoreCase)/StringIntersectSetNotEmpty(IgnoreCase)/StringSubSet(IgnoreCase)/StringNotSubSet(IgnoreCase). Use esses operadores em uma política para aplicar restrições à coleção Actions usando a chave de condiçãoacs:Privileges.Por exemplo, a política a seguir nega ao usuário
odpsxxxx@aliyun.coma concessão da permissãoDownloadouSelectem todas as tabelas no 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>.
Revogue permissões de ACL em recursos de um projeto.
RevokePrivsVisualize permissões de ACL em recursos de um projeto.
ShowAclGrantsConceda permissões de ACL em recursos de pacote.
GrantPrivsprojects/<project_name>/authorization/packageresources/<package_creater_project_name>.<package_name>/<resource_relative_id>Revogue permissões de ACL em recursos de pacote.
RevokePrivsVisualize permissões de ACL em recursos de pacote.
ShowAclGrantsVisualize permissões de ACL para um usuário.
ShowAclGrantsprojects/<project_name>/authorization/usersVisualize permissões de ACL para uma função de recurso.
ShowAclGrantsprojects/<project_name>/authorization/roles/resource/<role_name>Limpar permissões expiradas
Limpe permissões expiradas.
ClearExpiredGrantsprojects/<project_name>/authorization