通过命令管理用户权限

在MaxCompute项目中添加用户后,需要给该用户授权,只有用户获得相应的权限后,才能在项目内执行操作。MaxCompute支持通过角色为用户授权,也支持直接为用户授权。本文为您介绍用户授权命令语法并提供示例供参考。

通过绑定项目级角色为用户授权

MaxCompute推荐将项目级别自定义的角色或内置管理角色赋予用户,使用户具备与角色一样的权限,方便批量用户的权限变更与回收。

说明

将MaxCompute项目级角色赋予用户

将项目级别的内置角色或自定义角色绑定至用户,用户会同时具备角色相应的权限。

  • 命令格式

    grant <role_name> to <user_name>;
  • 注意事项

    多个用户可以同时存在于一个项目级角色下,一个用户也可以隶属于多个项目级角色。

  • 参数说明

    参数名称

    是否必填

    说明

    role_name

    指定待赋予用户的角色名称。

    您可以通过MaxCompute客户端执行list roles;命令查看角色信息。

    user_name

    指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

    您可以通过MaxCompute客户端执行list users;命令查看用户信息。

  • 使用示例

    将项目级角色Worker绑定至已添加到MaxCompute项目的阿里云用户Kate@aliyun.com、RAM用户RAM$Bob@aliyun.com:Allen及RAM角色RAM$Bob@aliyun.com:role/ram_role

    --Bob进入test_project_a项目。
    use test_project_a;
    --Bob将角色赋予阿里云账号。
    grant Worker to ALIYUN$Kate@aliyun.com;
    --Bob将角色赋予RAM用户。
    grant Worker to RAM$Bob@aliyun.com:Allen;
    --Bob将角色赋予RAM角色。
    grant Worker to `RAM$Bob@aliyun.com:role/ram_role`;

收回赋予用户的MaxCompute项目级角色

解绑赋予用户的角色,用户将不再具备角色相应的权限。

  • 命令格式

    revoke <role_name> from <user_name>;
  • 参数说明

    参数名称

    是否必填

    说明

    role_name

    指定待收回的角色名称。

    您可以通过MaxCompute客户端执行list roles;命令获取角色名称。

    user_name

    指定待收回角色相应的用户名称,格式如下:

    您可以通过MaxCompute客户端执行list users;命令获取用户名称。

  • 使用示例

    收回赋予用户Kate@aliyun.comRAM$Bob@aliyun.com:AllenRAM$Bob@aliyun.com:role/ram_roleR的角色Worker。

    --Bob进入test_project_a项目。
    use test_project_a;
    --Bob收回赋予阿里云账号的角色。
    revoke Worker from ALIYUN$Kate@aliyun.com;
    --Bob收回赋予RAM用户的角色。
    revoke Worker from RAM$Bob@aliyun.com:Allen;
    --Bob收回赋予RAM角色的角色。
    revoke Worker from `RAM$Bob@aliyun.com:role/ram_role`;

常见的授权场景及语法示例

用户授权场景

授权方式

授权人

授权操作入口

通过角色为用户授予对象的操作权限

先通过ACL权限控制Policy权限控制为角色授权,再将角色赋予用户。

请参见权限一览表的支持的授权人列。

撤销通过角色为用户授予的对象的操作权限

通过角色为用户授予Download权限

先通过Download权限控制为角色授权,再将角色赋予用户。

撤销通过角色为用户授予的Download权限

通过角色为用户授予访问相同高敏感等级数据的权限

先通过Label权限控制为角色授权,再将角色赋予用户。

撤销通过角色为用户授予的访问相同高敏感等级数据的权限

通过角色为用户授予对象的操作权限

通过ACL授权机制或Policy授权机制为角色授权,然后将角色赋予多个用户。

更多为角色授权信息,请参见为角色授予对象的操作权限

假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。现需要为三个RAM用户授予创建表、函数、实例、查看项目所有类型的对象列表的权限。命令示例如下。

--Bob进入test_project_a项目。
use test_project_a;
--Bob将Allen、Alice、Tom添加至test_project_a项目。
add user RAM$Bob@aliyun.com:Allen;
add user RAM$Bob@aliyun.com:Alice;
add user RAM$Bob@aliyun.com:Tom;
--Bob创建角色Worker。
create role Worker;
--Bob为角色Worker授权。
   --方式一:ACL授权。
grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to ROLE Worker;
   --方式二:Policy授权。
grant CreateTable, CreateFunction, CreateInstance, List 
      on project test_project_a  
      to ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
--将角色Worker赋予用户。
grant Worker to RAM$Bob@aliyun.com:Allen;
grant Worker to RAM$Bob@aliyun.com:Alice;
grant Worker to RAM$Bob@aliyun.com:Tom;

撤销通过角色为用户授予的对象的操作权限

您可以通过如下方式撤销授权:

  • 撤销授予角色的权限

    原本被赋予角色的所有用户都不再具备角色相应的权限。

  • 收回赋予用户的角色

    只有被收回角色的用户不再具备角色相应的权限。其他用户的权限不受影响。

假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。已为三个RAM用户通过角色Worker授予创建表、函数、实例、查看项目所有类型的对象列表的权限。现需要撤销对象的操作权限,命令示例如下。

  • 方式一:撤销授予角色Worker的权限。

    --进入test_project_a项目。
    use test_project_a;
    --为角色Worker撤销授权。此时Allen、Alice、Tom都不再具备CreateTable, CreateFunction, CreateInstance, List权限。
       --撤销ACL授权。
    revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from ROLE Worker;
       --撤销Policy授权。
    revoke CreateTable, CreateFunction, CreateInstance, List 
          on project test_project_a  
          from ROLE Worker privilegeproperties("policy" = "true", "allow"="true");
  • 方式二:收回赋予用户的角色Worker。

    --进入test_project_a项目。
    use test_project_a;
    --收回赋予用户的角色Worker。此时仅Allen不具备CreateTable, CreateFunction, CreateInstance, List权限。
    revoke Worker from RAM$Bob@aliyun.com:Allen;

通过角色为用户授予Download权限

通过Download授权机制为角色授权,然后将角色赋予用户。

更多为角色授权信息,请参见为角色授予Download权限

假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。现需要为三个RAM用户授予下载指定表数据的权限。命令示例如下。

--Bob进入test_project_a项目。
use test_project_a;
--Bob将Allen、Alice、Tom添加至test_project_a项目。
add user RAM$Bob@aliyun.com:Allen;
add user RAM$Bob@aliyun.com:Alice;
add user RAM$Bob@aliyun.com:Tom;
--Bob创建角色Worker。
create role Worker;
--Bob为角色Worker授权。
grant download on table sale_detail to ROLE Worker;
--将角色Worker赋予用户。
grant Worker to RAM$Bob@aliyun.com:Allen;
grant Worker to RAM$Bob@aliyun.com:Alice;
grant Worker to RAM$Bob@aliyun.com:Tom;

撤销通过角色为用户授予的Download权限

您可以通过如下方式撤销授权:

  • 撤销授予角色的权限

    原本被赋予角色的所有用户都不再具备角色相应的权限。

  • 收回赋予用户的角色

    只有被收回角色的用户不再具备角色相应的权限。其他用户的权限不受影响。

假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。已为三个RAM用户通过角色Worker授予下载所有表数据的权限。现需要撤销授予用户的下载权限,命令示例如下。

  • 方式一:撤销授予角色Worker的权限。

    --进入test_project_a项目。
    use test_project_a;
    --为角色Worker撤销授权。此时Allen、Alice、Tom都不再具备Download权限。
    revoke Download on table sale_detail from ROLE Worker;
  • 方式二:收回赋予用户的角色Worker。

    --进入test_project_a项目。
    use test_project_a;
    --收回赋予用户的角色Worker。此时仅Allen不再具备Download权限。
    revoke Worker from RAM$Bob@aliyun.com:Allen;

通过角色为用户授予访问相同高敏感等级数据的权限

通过Label授权机制或Policy授权机制为角色授权,然后将角色赋予多个用户。

更多为角色授权信息,请参见为角色授予访问高敏感等级数据的权限

假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。三个RAM用户的许可访问标签等级为2,现需要授予访问项目中目标表的敏感等级为4的数据权限。命令示例如下。

--Bob进入test_project_a项目。
use test_project_a;
--Bob创建角色Worker。
create role Worker;
--Bob为角色Worker授权。
grant Label 4 on table <table_name> to ROLE Worker;  --table_name为目标表的表名称
--将角色Worker赋予用户。
grant Worker to RAM$Bob@aliyun.com:Allen;
grant Worker to RAM$Bob@aliyun.com:Alice;
grant Worker to RAM$Bob@aliyun.com:Tom;

撤销通过角色为用户授予的访问相同高敏感等级数据的权限

您可以通过如下方式撤销授权:

  • 撤销授予角色的权限

    原本被赋予角色的所有用户都不再具备角色相应的权限。

  • 收回赋予用户的角色

    只有被收回角色的用户不再具备角色相应的权限。其他用户的权限不受影响。

假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。已为三个RAM用户授予访问项目中目标表的敏感等级为4的数据权限。现需要撤销用户的访问高敏感等级数据权限,命令示例如下。

  • 方式一:撤销授予角色Worker的权限。

    --进入test_project_a项目。
    use test_project_a;
    --为角色Worker撤销授权。此时Allen、Alice、Tom仅能访问最高敏感等级为2的数据。
    revoke Label on table <table_name> from ROLE Worker;     --table_name为目标表的表名称
  • 方式二:收回赋予用户的角色Worker。

    --进入test_project_a项目。
    use test_project_a;
    --收回赋予用户的角色Worker。此时Allen仅能访问最高敏感等级为2的数据,Alice、Tom仍然可以访问最高敏感等级为4的数据。
    revoke Worker from RAM$Bob@aliyun.com:Allen;

直接为用户授权

MaxCompute支持直接为用户授权,常见的授权场景及语法示例如下。

说明

用户授权场景

授权方式

授权人

授权操作入口

为用户授予对象的操作权限

ACL权限控制

请参见权限一览表的支持的授权人列。

撤销为用户授予的对象的操作权限

为用户授予Download权限

Download权限控制

撤销为用户授予的Download权限

为用户授予访问高敏感等级数据的权限

Label权限控制

撤销为用户授予的访问高敏感等级数据的权限

为用户授予对象的操作权限

通过ACL授权机制为用户授予项目、表、资源、函数或实例的操作权限。

  • 为用户授予项目的操作权限

    • 命令格式

      grant Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
            on project <project_name> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 参数说明

      参数名称

      是否必填

      说明

      project_name

      项目名称:您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签获取具体的MaxCompute项目名称。

      user_name

      指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 为用户授予表的操作权限

    • 命令格式

      grant Describe|Select|Alter|Update|Drop|ShowHistory|All 
            on table <table_name> [(<column_list>)] 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 参数说明

      参数名称

      是否必填

      说明

      table_name

      表名称:您可以通过MaxCompute客户端执行show tables;命令获取表或视图名称。

      user_name

      指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 为用户授予资源的操作权限

    • 命令格式

      grant Read|Write|Delete|All 
            on resource <resource_name> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 参数说明

      参数名称

      是否必填

      说明

      resource_name

      资源名称:您可以通过MaxCompute客户端执行list resources;命令获取资源名称。

      user_name

      指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 为用户授予函数的操作权限

    • 命令格式

      grant Read|Write|Delete|Execute|All 
            on function <function_name> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 参数说明

      参数名称

      是否必填

      说明

      function_name

      函数名称:您可以通过MaxCompute客户端执行list functions;命令获取函数名称。

      user_name

      指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 为用户授予实例的操作权限

    • 命令格式

      grant Read|Write|All 
            on instance <instance_id> 
            to USER <user_name> [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
    • 参数说明

      参数名称

      是否必填

      说明

      instance_id

      实例ID:您可以通过MaxCompute客户端执行show instances;命令获取实例ID。

      user_name

      指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 使用示例

    假设Bob@aliyun.com是test_project_a的项目所有者,Allen、Alice、Tom是隶属于Bob@aliyun.com的RAM用户。BI_Analyst是隶属于Bob@aliyun.com的RAM角色。Kate@aliyun.com是其他阿里云账号,待加入test_project_a项目。

    • 示例一:为阿里云账号Kate授予在项目中创建表、函数、实例、查看项目所有类型的对象列表的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --将Kate加入MaxCompute项目。
      add user ALIYUN$Kate@aliyun.com;
      --Bob为Kate授权。
      grant CreateTable, CreateFunction, CreateInstance, List on project test_project_a to user ALIYUN$Kate@aliyun.com;
    • 示例二:为RAM用户Allen、RAM角色授予在项目中创建表、查看项目所有类型、读取的元信息和表数据的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob将Allen添加至test_project_a项目。
      add user RAM$Bob@aliyun.com:Allen;
      --Bob将RAM角色BI_Analyst添加至test_project_a项目。
      add user `RAM$Bob@aliyun.com:role/BI_Analyst`;
      --Bob为RAM用户Allen授权。
      grant CreateTable, List on project test_project_a to USER RAM$Bob@aliyun.com:Allen;
      grant Describe, Select on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
      --Bob为RAM角色BI_Analyst授权。
      grant CreateTable, List on project test_project_a to USER `RAM$Bob@aliyun.com:role/BI_Analyst`;
      grant Describe, Select on table sale_detail to USER `RAM$Bob@aliyun.com:role/BI_Analyst`;
    • 示例三:为RAM用户Alice授予读取、更新资源的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob将Alice添加至test_project_a项目。
      add user RAM$Bob@aliyun.com:Alice;
      --Bob为Alice授权。
      grant Read, Write on resource udtf.jar to USER RAM$Bob@aliyun.com:Alice;
    • 示例四:为RAM用户Tom授予读取、更新函数的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob将Tom添加至test_project_a项目。
      add user RAM$Bob@aliyun.com:Tom;
      --Bob为Tom授权。
      grant Read, Write on function udf_test to USER RAM$Bob@aliyun.com:Tom;
    • 示例五:为RAM用户Tom授予实例的所有操作权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob将Tom添加至test_project_a项目。
      add user RAM$Bob@aliyun.com:Tom;
      --Bob为Tom授权。
      grant All on instance 202112300224**** to USER RAM$Bob@aliyun.com:Tom;

撤销为用户授予的对象的操作权限

撤销为用户授予的项目、表、资源、函数或实例的操作权限。

  • 撤销为用户授予的项目的操作权限

    • 命令格式

      revoke Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All 
            on project <project_name> 
            from USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      project_name

      项目名称:您可以登录MaxCompute控制台,左上角切换地域后,即可在项目管理页签获取具体的MaxCompute项目名称。

      user_name

      指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 撤销为用户授予的表的操作权限

    • 命令格式

      revoke Describe|Select|Alter|Update|Drop|ShowHistory|All 
            on table <table_name> [(<column_list>)] 
            from USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      table_name

      表名称:您可以通过MaxCompute客户端执行show tables;命令获取表或视图名称。

      user_name

      指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 撤销为用户授予的资源的操作权限

    • 命令格式

      revoke Read|Write|Delete|All 
            on resource <resource_name> 
            from USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      resource_name

      资源名称:您可以通过MaxCompute客户端执行list resources;命令获取资源名称。

      user_name

      指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 撤销为用户授予的函数的操作权限

    • 命令格式

      revoke Read|Write|Delete|Execute|All 
            on function <function_name> 
            from USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      function_name

      函数名称:您可以通过MaxCompute客户端执行list functions;命令获取函数名称。

      user_name

      指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 撤销为用户授予的实例的操作权限

    • 命令格式

      revoke Read|Write|All 
            on instance <instance_id> 
            from USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      instance_id

      实例ID:您可以通过MaxCompute客户端执行show instances;命令获取实例ID。

      user_name

      指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      privilegeproperties

      conditions

      从请求消息来源及访问方式等维度进行权限控制。格式为"<var_name> <Operation> 常量" and "<var_name> <Operation> 常量" and ...,支持的var_nameOperation列表,请参见Conditions

      days

      指定权限过期时间,单位为天。未指定该参数时,权限默认长期有效。指定该参数时,权限到期后,MaxCompute会自动清除权限信息。

  • 使用示例

    撤销为用户KateAllen、Alice、Tom授予的对象的操作权限。命令示例如下。

    • 示例一:撤销为Kate授予的在项目中创建表、函数、实例、查看项目所有类型的对象列表的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为Kate撤销授权。
      revoke CreateTable, CreateFunction, CreateInstance, List on project test_project_a from user ALIYUN$Kate@aliyun.com;
    • 示例二:撤销为RAM用户Allen授予的读取的元信息和表数据的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为Allen撤销授权。
      revoke Describe, Select on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
    • 示例三:撤销为RAM用户Alice授予的读取、更新资源的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为Alice撤销授权。
      revoke Read, Write on resource udtf.jar from USER RAM$Bob@aliyun.com:Alice;
    • 示例四:撤销为RAM用户Tom授予的读取、更新函数的权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为Tom撤销授权。
      revoke Read, Write on function udf_test from USER RAM$Bob@aliyun.com:Tom;
    • 示例五:撤销为RAM用户Tom授予的实例的所有操作权限。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为Tom撤销授权。
      revoke All on instance 202112300224**** from USER RAM$Bob@aliyun.com:Tom;
  • 为用户授予Download权限

    为用户授予下载表数据、资源、函数或实例的权限。

    • 命令格式

      grant Download on {Table|Resource|Function|Instance} <object_name> to USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      object_name

      指定被授予的对象的名称。获取方式如下:

      • 表名称:您可以通过MaxCompute客户端执行show tables;命令获取表或视图名称。

      • 资源名称:您可以通过MaxCompute客户端执行list resources;命令获取资源名称。

      • 函数名称:您可以通过MaxCompute客户端执行list functions;命令获取函数名称。

      • 实例名称:您可以通过MaxCompute客户端执行show instances;命令获取实例ID。

      user_name

      指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

    • 使用示例

      假设test_project_a项目开启了Download权限管控,需要为用户Allen授予下载指定表数据的权限。命令示例如下。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为Allen授权。
      grant Download on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
  • 撤销为用户授予的Download权限

    撤销为用户授予的下载表数据、资源、函数或实例的权限。

    • 命令格式

      revoke Download on {Table|Resource|Function|Instance} <object_name> from USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      object_name

      指定待回收权限的对象的名称。获取方式如下:

      • 表名称:您可以通过MaxCompute客户端执行show tables;命令获取表或视图名称。

      • 资源名称:您可以通过MaxCompute客户端执行list resources;命令获取资源名称。

      • 函数名称:您可以通过MaxCompute客户端执行list functions;命令获取函数名称。

      • 实例名称:您可以通过MaxCompute客户端执行show instances;命令获取实例ID。

      user_name

      指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

    • 使用示例

      撤销为用户Allen授予的下载指定表数据的权限。命令示例如下。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为Allen撤销授权。
      revoke Download on table sale_detail from USER RAM$Bob@aliyun.com:Allen;
  • 为用户授予访问高敏感等级数据的权限

    通过Label授权机制为用户授予访问高敏感等级数据的权限。

    • 命令格式

      grant Label <number> on table <table_name> [(<column_list>)] to USER <user_name> [with exp <days>];
    • 参数说明

      参数名称

      是否必填

      说明

      number

      指定用户或角色可访问的最高数据敏感等级。

      取值范围为0~9,与数据敏感等级标签相对应。

      table_name

      指定目标表或视图的名称。

      您可以通过MaxCompute客户端执行show tables;命令获取表或视图名称。

      column_list

      当需要授予目标表或视图中指定列的访问权限时,需要配置该参数。单次授权可以指定多个列名,列名之间用英文逗号(,)分隔。

      user_name

      指定待绑定角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

      days

      指定权限过期时间,单位为天。取值范围为:0~263-1。不指定该参数时,默认过期时间为180天。

    • 使用示例

      假设test_project_a项目中,用户Allen的许可访问标签等级为2,现需要为用户授予访问sale_detail表中最高敏感等级为4的数据权限。命令示例如下。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为用户Allen授权。
      grant Label 4 on table sale_detail to USER RAM$Bob@aliyun.com:Allen;
  • 撤销为用户授予的访问高敏感等级数据的权限

    • 命令格式

      revoke Label <number> on table <table_name> [(<column_list>)] from USER <user_name>;
    • 参数说明

      参数名称

      是否必填

      说明

      number

      指定用户或角色待回收访问权限的最高数据敏感等级。

      取值范围为0~9,与数据敏感等级标签相对应。

      table_name

      指定待回收访问权限的目标表或视图的名称。

      您可以通过MaxCompute客户端执行show tables;命令获取表或视图名称。

      column_list

      当需要撤销目标表或视图中指定列的访问权限时,需要配置该参数。单次授权可以指定多个列名,列名之间用英文逗号(,)分隔。

      user_name

      指定待收回角色的已加入MaxCompute项目的用户名称,格式如下:

      您可以通过MaxCompute客户端执行list users;命令查看用户信息。

    • 使用示例

      撤销为用户Allen授予的访问sale_detail表中最高敏感等级为4的数据权限。命令示例如下。

      --Bob进入test_project_a项目。
      use test_project_a;
      --Bob为用户Allen撤销授权。
      revoke Label 4 on table sale_detail from USER RAM$Bob@aliyun.com:Allen;

彻底清除被删除用户遗留的权限信息

用户被移出项目后,ACL、Policy、Label等权限数据还留存在项目中。当移出的用户又再次进入该项目时,将会拥有原来的ACL、Policy、Label等权限,即用户如果被误删,被重新加回项目时可以直接使用原先保留的权限。但是,如果用户以不同的身份被加回原项目时,会有潜在的数据安全风险。

基于如上背景,MaxCompute提供清空用户权限的功能,如果用户已经不在项目中,但有ACL、Policy、Label等权限的,项目所有者或拥有Admin、Super_Administrator角色的用户可以执行如下命令清除遗留的权限信息。

  • 命令格式

purge privs from user <user_name>;
  • 参数说明

    参数名称

    是否必填

    说明

    user_name

    指定待清除遗留权限信息的已移出MaxCompute项目的用户名称,格式如下:

说明

如果未将用户移出项目,执行该命令会返回"Principal <username> still exist in the project"报错。因此需要先使用remove user <user_name>命令将用户移出项目。

后续指引

完成用户授权后,您可以查询用户授权信息,请参见查询用户权限信息