使用MaxCompute(原ODPS)javasdk執行安全相關命令
轉自zhenhong
使用 MaxCompute console 的同學,可能都使用過 odps 安全相關的命令。官方文件上有詳細的 odps 安全指南,並給出了安全相關命令列表。
簡而言之,許可權管理、專案空間安全配置以及使用者及授權管理都屬於 odps 安全命令相關的範疇。
再直白一點,以下列關鍵字開頭的命令,都是 odps 安全相關操作命令:
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 上執行的命令,該如何使用 odps sdk 執行呢?它們是與 sql 一樣通過建立 instance 的方式來執行嗎?
不可以,這些命令不是 sql , 不可以通過 sql task 來執行。
需要使用介面 SecurityManager.runQuery()
來執行。詳細 javadoc 戳這裡
SecurityManager
類在 odps-sdk-core 中,因此在使用時請新增依賴:
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-core</artifactId>
<version>0.23.3-public</version>
</dependency>
下面通過一個例子來演示如何通過 odps java sdk 來設定表 test_label
列的訪問級別為 2,也就是執行命令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 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>");
// create test table
// if u already have a table, skip this
TableSchema 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 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();
}
}
}
程式執行完成後,在 odps console 中執行 `desc test_lable;` 命令,可以看到 set label 已經生效了。
其他安全相關的命令,都可以這樣子通過 odps sdk 來執行呢,快來試試吧!
歡迎加入“數加·MaxCompute購買諮詢”釘釘群(群號: 11782920)進行諮詢,群二維碼如下:
相關文章
- 用 PHP 來執行執行網路相關命令PHP
- linux 安全相關命令Linux
- 執行緒池相關執行緒
- 多執行緒相關整理執行緒
- 程式和執行緒相關執行緒
- oracle執行計劃相關Oracle
- MaxCompute-ODPS重灌上陣 第一彈-善用MaxCompute編譯器的錯誤和警告編譯
- MaxCompute-ODPS重灌上陣 第三彈-複雜型別型別
- 執行緒池相關複習執行緒
- Java 多執行緒 相關概念Java執行緒
- 多執行緒相關問題執行緒
- (轉)執行計劃相關概念
- Git命令的使用和相關配置Git
- 命令列下執行 PHP artisan 相關命令沒有效果且沒有錯誤提示命令列PHP
- MaxCompute執行引擎核心技術DAG揭秘
- 【機器學習】使用Octave執行命令機器學習
- solr(三)centos7.6安裝配置javasdk1.8及執行solrSolrCentOSJava
- Oracle相關命令Oracle
- vagrant 相關命令
- Vim相關命令
- oem相關命令
- RMAN命令相關
- BGP相關命令
- Java多執行緒相關知識Java執行緒
- 155 執行緒的相關操作執行緒
- Explain For理論執行計劃相關AI
- Linux執行python相關指令LinuxPython
- Android小知識-Java多執行緒相關(Lock使用)AndroidJava執行緒
- grid使用者asmcmd命令相關ASM
- 多執行緒的執行緒狀態及相關操作執行緒
- HP-UX執行Oracle相關命令報錯Memory fault(coredump)分析處理UXOracle
- DNS安全相關DNS
- 關於iOS中的執行緒安全和使用場景iOS執行緒
- 使用Pipe來執行RMAN命令
- openGauss執行緒池相關引數執行緒
- 記錄Java執行緒相關知識Java執行緒
- Golang 使用執行命令帶管道符執行的方法Golang
- Composer 相關命令