Todos los productos
Search
Centro de documentos

MaxCompute:Control de acceso ACL

Última actualización: Sep 03, 2026

Si necesita permitir que varios usuarios trabajen con objetos de MaxCompute, como proyectos y tablas, puede utilizar listas de control de acceso (ACL) para otorgar permisos específicos a usuarios o roles. Para gestionar de manera eficiente los permisos de múltiples usuarios, otorgue los permisos a un rol y luego asigne ese rol a los usuarios. Este tema describe los comandos de autorización ACL que admite MaxCompute y proporciona ejemplos.

Contexto

El control de acceso basado en ACL utiliza un modelo de autorización de lista de permitidos. Usted permite explícitamente que un usuario o rol realice acciones específicas sobre un objeto determinado. Esto hace que la autorización sea sencilla y precisa.

Después de crear un proyecto de MaxCompute, el control de acceso basado en ACL se habilita de forma predeterminada. El propietario del proyecto puede ejecutar el comando set CheckPermissionUsingACL=true|false; en el proyecto para habilitar o deshabilitar esta función.

El control de acceso basado en ACL aplica a los siguientes escenarios.

Escenario

Descripción

Otorgante

Punto de entrada

Otorgar permisos a un usuario

Otorgue una o más acciones sobre un objeto específico directamente a un solo usuario.

Consulte la columna Supported grantors en la lista de permisos.

Otorgar permisos a usuarios basados en roles

Otorgue una o más acciones sobre un objeto específico directamente a un rol y luego asigne ese rol a varios usuarios. Los usuarios heredan los permisos del rol.

Para obtener más información sobre cómo crear roles y asignarlos a usuarios, consulte Role planning y Attach a role to a user.

Nota

Los roles están diseñados para una gestión eficiente de usuarios. Evite otorgar los mismos permisos sobre el mismo objeto a múltiples roles.

Requisitos previos

Antes de utilizar el control de acceso basado en ACL, asegúrese de contar con la siguiente información:

  • El nombre de la cuenta o el nombre del rol del receptor. El usuario o rol debe estar agregado al proyecto de MaxCompute. Los formatos de cuenta son los siguientes: una cuenta de Alibaba Cloud tiene el formato ALIYUN$<account_id>, una cuenta de usuario RAM tiene el formato RAM$<account_id>:<RAM user UID>, y un rol RAM tiene el formato RAM$<account_id>:role/<RAM role name>.

    Puede ejecutar el comando list users; o list roles; en MaxCompute client para obtener los nombres de cuentas o roles.

    Para agregar un usuario o rol, consulte User planning and management o Role planning.

  • El tipo de objeto, el nombre del objeto y las acciones por otorgar.

    Para obtener más información sobre tipos de objetos y acciones, consulte MaxCompute permissions.

Límites

Los siguientes límites aplican al control de acceso basado en ACL:

  • Solo puede otorgar permisos a usuarios o roles existentes sobre objetos existentes. Esto evita riesgos de seguridad derivados de eliminar y volver a crear un objeto con el mismo nombre.

  • El control de acceso basado en ACL no admite la autorización con la cláusula [with grant option]. Por ejemplo, si el usuario A otorga al usuario B acceso a un objeto, el usuario B no puede posteriormente otorgar ese permiso al usuario C.

  • La autorización ACL utiliza un modelo de lista de permitidos y no admite un modelo de lista de bloqueados.

Notas de uso

Tenga en cuenta lo siguiente al utilizar el control de acceso basado en ACL:

  • Si elimina un objeto, MaxCompute revoca automáticamente todos los permisos ACL asociados a este.

  • Cuando se elimina un usuario, sus permisos se conservan. Si el usuario se vuelve a agregar al proyecto posteriormente, sus permisos anteriores se restauran automáticamente. Para borrar permanentemente los permisos de un usuario, consulte Clear residual permissions of a removed user.

Sintaxis

Los comandos de control de acceso basado en ACL utilizan la siguiente sintaxis:

  • Otorgar permisos ACL

    grant <actions> on <object_type> <object_name> 
    [(<column_list>)] to <subject_type> <subject_name> 
    [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
  • Revocar permisos ACL

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • Control de acceso a nivel de columna

    grant <actions> on table <table_name> (<column_list>) to <subject_type> <subject_name>;
    revoke <actions> on table <table_name> (<column_list>) from <subject_type> <subject_name>;

La siguiente tabla describe los parámetros.

Parámetro

Obligatorio

Descripción

actions

Sí

Las acciones por otorgar. Puede especificar una o más acciones en una sola instrucción 'grant'.

Separe múltiples acciones con comas (,). Para ver una lista de acciones válidas, consulte MaxCompute permissions.

object_type

Sí

El tipo de objeto sobre el cual se otorgarán permisos. Solo puede especificar un tipo de objeto por instrucción.

Para ver una lista de tipos de objetos válidos, consulte MaxCompute permissions.

object_name

Sí

El nombre del objeto. Puede encontrar el nombre de la siguiente manera:

  • Nombre del proyecto: Inicie sesión en la consola de MaxCompute. Después de cambiar la región en la esquina superior izquierda, encontrará el nombre del proyecto en la pestaña Projects. Cuando el tipo de objeto es proyecto, solo puede consultar información del proyecto actual.

  • Nombre de la tabla: Ejecute show tables; en MaxCompute client para obtener el nombre de la tabla o vista.

  • Nombre del modelo: Ejecute show models; en MaxCompute client para obtener el nombre del modelo.

  • Nombre del recurso: Ejecute list resources; en MaxCompute client para obtener el nombre del recurso.

  • Nombre de la función: Ejecute list functions; en MaxCompute client para obtener el nombre de la función.

  • Nombre de la instancia: Ejecute show instances; en MaxCompute client para obtener el ID de la instancia.

Puede usar un asterisco () como comodín en el nombre de un objeto. Por ejemplo, table taobao indica todas las tablas cuyos nombres comienzan con taobao.

Nota

Solo puede usar un comodín (*) cuando otorga permisos a un ROLE. No se admiten comodines cuando otorga permisos a un USER.

column_list

No

Este parámetro es obligatorio solo cuando object_type es tabla y desea implementar control de acceso a nivel de columna. Puede especificar una o más columnas. Separe múltiples nombres de columna con comas (,).

Nota

Este parámetro controla los permisos Describe, Select, Alter, Update, Drop, ShowHistory y ALL en las columnas especificadas. Si se configura un nivel de sensibilidad para una columna, puede usar Label-based access control para controlar el acceso a datos sensibles según las etiquetas de sensibilidad.

privilegeproperties

conditions

No

Controla los permisos basándose en atributos como el origen de la solicitud y el método de acceso. El formato es "<var_name> <Operation> Constant" and "<var_name> <Operation> Constant" and .... Para ver una lista de valores admitidos para var_name y Operation, consulte Conditions.

days

No

El número de días antes de que expire el permiso. Si no especifica este parámetro, el permiso no caduca. Si especifica este parámetro, MaxCompute elimina automáticamente el registro del permiso después de su vencimiento.

subject_type

Sí

El tipo de receptor. Valores válidos:

  • USER: Una cuenta de Alibaba Cloud o un usuario RAM.

  • ROLE: Un rol.

subject_name

Sí

La cuenta de usuario o el nombre del rol del receptor. Solo puede especificar un usuario o rol por cada otorgamiento. Formatos:

  • Cuenta de Alibaba Cloud: ALIYUN$<account_id>.

  • Usuario RAM: RAM$<account_id>:<RAM user UID>.

  • Rol RAM: RAM$<account_id>:role/<RAM role name>.

Puede ejecutar el comando list users; o list roles; en MaxCompute client para obtener la cuenta de usuario o el nombre del rol.

Condiciones

La siguiente tabla enumera los valores admitidos de var_name y Operation para conditions.

var_name

Tipo

Operación

Descripción

acs:UserAgent

STRING

  • StringEquals: =

  • StringNotEquals: <>

  • StringLike: like

  • StringNotLike: not like

El User-Agent del cliente solicitante.

acs:Referer

STRING

El Referer HTTP de la solicitud.

acs:SourceIp

Dirección IP

  • IpAddress: in (...)

  • NotIpAddress: not in (...)

La dirección IP del cliente solicitante.

acs:SecureTransport

BOOLEAN

  • True

  • False

Indica si la solicitud se envía a través de un canal seguro, como HTTPS.

acs:CurrentTime

DATEANDTIME

  • DateEquals: =

  • DateNotEquals: <>

  • DateLessThan: <

  • DateLessThanEquals: <=

  • DateGreaterThan: >

  • DateGreaterThanEquals: >=

La hora en que el servidor web recibe la solicitud, en formato ISO 8601, como 2012-11-11T23:59:59Z.

Ejemplos

Suponga que Bob@aliyun.com (ID de cuenta: 5527xxxxxxxx5788) es el propietario del proyecto test_project_a, y Allen (UID: 1652xxxxxxxxxx1538), Alice (UID: 2763xxxxxxxxxx1649) y Tom (UID: 3874xxxxxxxxxx1850) son usuarios RAM bajo Bob@aliyun.com. Los siguientes ejemplos demuestran operaciones de autorización mediante el cliente de MaxCompute.

  • Ejemplo 1: Otorgar permisos a un usuario

    Cree la tabla sale_detail en el proyecto test_project_a y otorgue al usuario Allen los permisos Describe (leer metadatos) y Select (leer datos) sobre dicha tabla. A continuación se muestran comandos de ejemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Create a partitioned table named sale_detail.
    create table if not exists sale_detail
    (
    shop_name     string,
    customer_id   string,
    total_price   double
    )
    partitioned by (sale_date string, region string);
    --Add the user Allen as a project member.
    add user RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Grant permissions to Allen.
    grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --View the permissions granted to Allen.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538]
    A       projects/test_project_a/tables/sale_detail: Describe | Select
  • Ejemplo 2: Otorgar permisos a nivel de columna a un usuario

    Utilizando la tabla sale_detail creada en el Ejemplo 1, otorgue al usuario Alice todos los permisos sobre las columnas shop_name y customer_id en la tabla sale_detail. A continuación se muestran comandos de ejemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add user Alice as a project member.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Grant column-level permissions to Alice.
    grant All on table sale_detail (shop_name, customer_id) to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --View the permissions granted to Alice.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649]
    A       projects/test_project_a/tables/sale_detail/customer_id: All
    A       projects/test_project_a/tables/sale_detail/shop_name: All
  • Ejemplo 3: Revocar permisos de usuarios

    Con base en el Ejemplo 1 y el Ejemplo 2, revoque los permisos de los usuarios Allen y Alice. A continuación se muestran comandos de ejemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the permissions from Allen.
    revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Revoke the permissions from Alice.
    revoke All on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Check Allen's permissions after revocation. The Describe and Select permissions are removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --Check Alice's permissions after revocation. The All permission is removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
  • Ejemplo 4: Otorgar los mismos permisos a varios usuarios mediante un rol

    Otorgue a Alice, Tom y otra cuenta de Alibaba Cloud Lily@aliyun.com (ID de cuenta: 5638xxxxxxxx6899) los permisos para crear instancias, recursos, funciones y tablas, así como para listar todos los tipos de objetos en el proyecto test_project_a. A continuación se muestran comandos de ejemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add the users Alice, Tom, and Lily@aliyun.com as project members.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    add user RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    add user ALIYUN$5638xxxxxxxx6899;
    --Create the Worker role.
    create role Worker; 
    --Assign the Worker role to the users.
    grant Worker TO RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    grant Worker TO RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850; 
    grant Worker TO ALIYUN$5638xxxxxxxx6899; 
    --Grant the Worker role the permissions to create instances, resources, functions, and tables, and to list all object types in the test_project_a project.
    grant CreateInstance, CreateResource, CreateFunction, CreateTable, List on project test_project_a TO ROLE Worker;
    --View the permissions for the user Lily.
    show grants for ALIYUN$5638xxxxxxxx6899; 
    --The following authorization result indicates that the user Lily has the specified permissions.
    [roles]
    worker
    
    Authorization Type: ACL
    [role/worker]
    A       projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
  • Ejemplo 5: Revocar los mismos permisos basados en roles de varios usuarios

    Con base en el Ejemplo 4, revoque los permisos de los usuarios Alice, Tom y Lily@aliyun.com. A continuación se muestran comandos de ejemplo.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the Worker role from the users Alice, Tom, and Lily@aliyun.com.
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    revoke Worker from RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    revoke Worker from ALIYUN$5638xxxxxxxx6899;
    --Check Lily's permissions after revocation. The permission list no longer includes the Worker role.
    show grants for ALIYUN$5638xxxxxxxx6899; 

Siguientes pasos

Una vez que comprenda cómo funciona la autorización ACL, podrá gestionar los permisos según sus necesidades empresariales: