すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:セキュリティ関連のコマンドの実行

最終更新日:Jan 17, 2025

このトピックでは、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の最新バージョンを取得できます。

手順

  1. 次のコマンドを実行して、test_labelという名前のテストテーブルを作成します。

    CREATE TABLE IF NOT EXISTS test_label(
     key  STRING,
     value BIGINT
    );
  2. 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();
        }
      }
    }
  3. 上記のコードを実行し、結果を表示します。

    Result

  4. 結果を確認します。

    Javaコードの実行後、MaxComputeクライアントでdesc test_labelコマンドを実行します。 この例では、次の図の結果は、set labelコマンドがtest_labelテーブルで有効になったことを示しています。 SET LABEL

    説明

    MaxComputeのセキュリティ関連のコマンドの詳細については、「MaxComputeアクセス許可」、「ラベルベースのアクセス制御」、「セキュリティパラメーター」、「パッケージに基づくクロスプロジェクトリソースアクセス」をご参照ください。