このトピックでは、MaxCompute SDK for JavaのSecurityManager.ru nQuery() メソッドを使用して、MaxCompute Studioでセキュリティ関連のコマンドを実行する方法について説明します。
背景情報
次のいずれかの方法を使用して、セキュリティ関連のコマンドを実行できます。
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 ...
MaxCompute SDK for Javaの
SecurityManager.ru nQuery()
メソッドを使用します。 詳細については、「MaxCompute SDK For Javaドキュメント」をご参照ください。説明MaxComputeのセキュリティ関連のコマンドはSQL文ではありません。 したがって、SQLTaskを使用してセキュリティ関連のコマンドを実行することはできません。
前提条件
次の前提条件が満たされています。
IntelliJ IDEA 開発ツールをインストールします。 詳細は「IntelliJ IDEA のインストール」をご参照ください。
MaxCompute Studioがインストールされ、MaxComputeプロジェクトがMaxCompute Studioに接続されます。 詳細については、「MaxCompute Studioのインストール」および「プロジェクト接続の管理」をご参照ください。
MaxCompute Javaモジュールを作成し、プロジェクトの依存関係をMaxCompute Studioに追加します。
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 MoRduleで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(); } } }
上記のコードを実行し、結果を表示します。
結果を確認します。
Javaコードの実行後、MaxComputeクライアントで
desc test_label
コマンドを実行します。 この例では、次の図の結果は、set labelコマンドがtest_labelテーブルで有効になったことを示しています。説明MaxComputeのセキュリティ関連のコマンドの詳細については、「MaxComputeアクセス許可」、「ラベルベースのアクセス制御」、「セキュリティパラメーター」、「パッケージに基づくクロスプロジェクトリソースアクセス」をご参照ください。