本文為您介紹如何在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方式來運行。
前提條件
您需要完成以下操作:
安裝IntelliJ IDEA開發工具。具體操作,請參見安裝IntelliJ IDEA。
安裝MaxCompute Studio并連接MaxCompute項目。具體操作,請參見安裝MaxCompute Studio和創建MaxCompute項目連接。
創建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。
操作步驟
創建測試表test_label。
CREATE TABLE IF NOT EXISTS test_label( key STRING, value BIGINT );
在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(); } } }
運行上述代碼,并在控制臺查看運行結果。
結果驗證。
程序運行完成后,在MaxCompute客戶端中運行
desc test_label
命令,可以看到set label命令已經生效。說明更多安全命令請參考MaxCompute權限、Label權限控制、安全參數列表以及基于Package跨項目訪問資源。