使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
摘要: 使用 odps console 的同學(xué),可能都使用過 odps 安全相關(guān)的命令。
轉(zhuǎn)自zhenhong
使用 MaxCompute console 的同學(xué),可能都使用過 odps 安全相關(guān)的命令。官方文檔上有詳細(xì)的 odps 安全指南,并給出了安全相關(guān)命令列表。
簡(jiǎn)而言之,權(quán)限管理、項(xiàng)目空間安全配置以及用戶及授權(quán)管理都屬于 odps 安全命令相關(guān)的范疇。
再直白一點(diǎn),以下列關(guān)鍵字開頭的命令,都是 odps 安全相關(guān)操作命令:
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 ...那么,這些能在 odps console 上運(yùn)行的命令,該如何使用 odps sdk 運(yùn)行呢?它們是與 sql 一樣通過創(chuàng)建 instance 的方式來運(yùn)行嗎?
不可以,這些命令不是 sql , 不可以通過 sql task 來運(yùn)行。
需要使用接口 SecurityManager.runQuery() 來運(yùn)行。詳細(xì) javadoc 戳這里
SecurityManager 類在 odps-sdk-core 中,因此在使用時(shí)請(qǐng)?zhí)砑右蕾?#xff1a;
<dependency><groupId>com.aliyun.odps</groupId><artifactId>odps-sdk-core</artifactId><version>0.23.3-public</version> </dependency>下面通過一個(gè)例子來演示如何通過 odps java sdk 來設(shè)置表 test_label 列的訪問級(jí)別為 2,也就是運(yùn)行命令SET LABEL 2 TO TABLE test_label(key, value);。
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 odpsAccount 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>");// create test table// if u already have a table, skip thisTableSchema schema = new TableSchema();schema.addColumn(new Column("key", OdpsType.STRING));schema.addColumn(new Column("value", OdpsType.BIGINT));odps.tables().create("test_label", schema);// set label 2 to table columnsSecurityManager 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();}} }運(yùn)行結(jié)果:
程序運(yùn)行完成后,在 odps console 中運(yùn)行 `desc test_lable;` 命令,可以看到 set label 已經(jīng)生效了。
其他安全相關(guān)的命令,都可以這樣子通過 odps sdk 來運(yùn)行呢,快來試試吧!
原文鏈接
干貨好文,請(qǐng)關(guān)注掃描以下二維碼:
總結(jié)
以上是生活随笔為你收集整理的使用 MaxCompute(原ODPS) java sdk 运行安全相关命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每个产品经理都应该知道的机器学习术语
- 下一篇: 移动推送消息送达常见问题与解决办法