运行安全命令示例

本文为您介绍如何在MaxCompute Studio上使用Java SDK接口运行安全相关的命令。

背景信息

您可以使用如下两种方式运行安全相关命令:

  • 通过MaxCompute客户端运行,使用说明请参见安全参数列表

    以下关键字开头的命令为MaxCompute安全相关的操作命令。

    GRANT/REVOKE ...
    SHOW  GRANTS/ACL/PACKAGE/LABEL/ROLE/PRINCIPALS
    SHOW  PRIV/PRIVILEGES
    LIST/ADD/REOVE  USERS/ROLES/TRUSTEDPROJECTS
    DROP/CREATE   ROLE
    CLEAR EXPIRED  GRANTS
    DESC/DESCRIBE   ROLE/PACKAGE
    CREATE/DELETE/DROP  PACKAGE
    ADD ... TO  PACKAGE
    REMOVE ... FROM  PACKAGE
    ALLOW/DISALLOW  PROJECT
    INSTALL/UNINSTALL  PACKAGE
    LIST/ADD/REMOVE   ACCOUNTPROVIDERS
    SET  LABLE  ...
  • 使用Java SDK接口SecurityManager.runQuery()方式运行,方法说明请参见MaxCompute SDK Java Doc

    说明

    MaxCompute安全相关的命令不是SQL命令,不能通过SQLTask方式来运行。

前提条件

您需要完成以下操作:

  1. 安装IntelliJ IDEA开发工具。具体操作,请参见安装IntelliJ IDEA

  2. 安装MaxCompute Studio并连接MaxCompute项目。具体操作,请参见安装MaxCompute Studio创建MaxCompute项目连接

  3. 创建MaxCompute Java Module,并在pom.xml中添加项目依赖。

    SecurityManager类在odps-sdk-core包中,因此在使用时需要添加如下配置。

    <dependency>
      <groupId>com.aliyun.odps</groupId>
      <artifactId>odps-sdk-core</artifactId>
      <version>X.X.X-public</version>
    </dependency>

    您可以在search.maven.org搜索odps-sdk-core获取最新版本的SDK。

操作步骤

  1. 创建测试表test_label。

    CREATE TABLE IF NOT EXISTS test_label(
     key  STRING,
     value BIGINT
    );
  2. 在MaxCompute Java Module中创建类并进行Java代码开发。

    import com.aliyun.odps.Column;
    import com.aliyun.odps.Odps;
    import com.aliyun.odps.OdpsException;
    import com.aliyun.odps.OdpsType;
    import com.aliyun.odps.TableSchema;
    import com.aliyun.odps.account.Account;
    import com.aliyun.odps.account.AliyunAccount;
    import com.aliyun.odps.security.SecurityManager;
    public class test {
      public static void main(String [] args) throws OdpsException {
        try {
          // init odps
          Account account = new AliyunAccount("<your_accessid>", "<your_accesskey>");
          Odps odps = new Odps(account);
          odps.setEndpoint("http://service-corp.odps.aliyun-inc.com/api");
          odps.setDefaultProject("<your_project>");
          // set label 2 to table columns
          SecurityManager securityManager = odps.projects().get().getSecurityManager();
          String res = securityManager.runQuery("SET LABEL 2 TO TABLE test_label(key, value);", false);
          System.out.println(res);
        } catch (OdpsException e) {
          e.printStackTrace();
        }
      }
    }
  3. 运行上述代码,并在控制台查看运行结果。

    运行结果

  4. 结果验证。

    程序运行完成后,在MaxCompute客户端中运行desc test_label命令,可以看到set label命令已经生效。SET LABEL