背景と動機

一部の企業 (金融機関、軍事企業など) はデータセキュリティに非常に敏感です。 そのため、データ保護のために、従業員が USB ストレージデバイスや個人用ハードディスクを持ち出して仕事することを許可しないなど、追加のセキュリティ対策を講じています。 あるいは、ほとんどの場合 USB ポートは無効になっています。 従業員は在宅勤務も許可されていません。 これらの対策は、機密データを保護するために行われます。

MaxCompute プロジェクトスペース管理者として、同様のセキュリティ要件 (プロジェクトスペースの外へのデータ移動を許可しない) を持っていますか。

たとえば、プロジェクトスペース prj1 の所有者は、次の図に示す状況に遭遇した場合、ユーザー Alice が prm9 にアクセスしてデータを転送することを懸念します。 Alice は prj2 のアクセス権を持っているからです。

より具体的には、Alice が myprj へのアクセス権が付与されているとします (Table1 の Select 権限)。さらに、prj2 の管理者から create table 権限も付与されています。

これらの権限により、Alice は次のいずれかの方法でデータを prm9 に転送することができます。
  • SQL を送信する
    create table prj2.table2 as select * from myprj.table1;
  • myprj. Table1 を読み取り、スキャナーに書き込むよう MapReduce を作成する

プロジェクトスペースのデータが機密データの場合、プロジェクト外のデータの共有が制限されます。 MaxCompute は、データ保護と前述の操作に関する問題も解決できます。

データ保護機能

MaxCompute は、前述の問題の解決に役立つプロジェクトスペース保護機能を提供します。 ユーザーとして、プロジェクトを次のように設定します。
    set projectProtection=true
      -- Set project protection rule: data can only flow and cannot flow out

プロジェクト保護が設定されている場合、プロジェクトスペース内のデータの流れは制御され、データを移動できても、外部に流すことはできません。 つまり、上記の操作はどちらもプロジェクト保護ルールに違反しているため失敗します。

デフォルトでは、ProjectProtection を設定できず、値は false です。

また、複数のプロジェクトへのアクセスを許可されたユーザーは、プロジェクト間のデータアクセス操作を自由に使用して、プロジェクトデータを共有または転送できます。 ユーザーがプロジェクトデータのセキュリティに非常に敏感な場合は、管理者も同様に ProjectProtection 機能を定義する必要があります。

データ保護有効化後のデータエクスポート方法

ユーザーのプロジェクトで ProjectProtection を設定した直後、このユーザーのプロジェクトからテーブルのデータをエクスポートしたいというリクエストを Alice から受け取るかもしれません。

さらに、ユーザーレビューにより、このテーブルに機密データが含まれていないことが確認されます。 Alice の通常のビジネス要件に影響を与えないために、MaxCompute は ProjectProtection を設定した後にデータをエクスポートする方法を 2 つ提供します。

  • TrustedProject の設定

    この場合、現在のプロジェクトスペースは保護されています。データの移動先のプロジェクトスペースが、現在のプロジェクトスペースの trustedproject に設定されている場合、 データ移動はプロジェクト保護ルールに違反しているとは見なされません。 複数のプロジェクトスペースが互いに trustedproject に設定されている場合、これらのプロジェクトスペースは trustedproject

    グループを形成します。データはプロジェクトグループ内を移動することができますが、プロジェクトグループ外での共有は制限されています。
    TrustedProject を管理するには、次のコマンドを使用します。
        list trustedprojects;
          -- View All trustedprojects in the current project
        add trustedproject <projectname>;
          -- Add a trustdproject to the current project
        remove trustedproject <projectname>;
          -- Remove a trustdproject from the current project
    
  • リソース共有とデータ保護

    MaxCompute では、パッケージベースのリソース共有機能とプロジェクト保護データ保護機能は直交していますが、機能に関しては類似しています。

    MaxCompute ルールは、データ保護よりもリソースの共有を優先します。 したがって、データオブジェクトがリソース共有を介して他のプロジェクトのユーザーによるアクセスを許可する場合、ProjectProtection ルールはこのデータオブジェクトには適用されません。

ベストプラクティス

プロジェクトからデータの流出を防ぐには、ProjectProtection = true を設定した後、次の設定を確認してください。
  • trustedproject が追加されていないことを確認してください。 設定されている場合は、考えられるリスクを評価する必要があります。
  • パッケージデータが共有で使用されていないことを確認してください。 設定されている場合は、機密データがパッケージに存在しないことを確認してください。