Managed Service for Apache Spark で CMEK を使用する

デフォルトでは、Managed Service for Apache Spark は保存状態のお客様コンテンツを暗号化します。Managed Service for Apache Spark では、ユーザーが追加で操作を行うことなく 暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。

暗号鍵をコントロールする場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Managed Service for Apache Spark などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護 レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。 Cloud KMS を使用すると、鍵の使用状況を追跡すること、監査ログを表示すること、鍵のライフサイクルを管理することが可能です。 データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵を制御および管理します。

CMEK を使用してリソースを設定した後は、 Managed Service for Apache Spark リソースへのアクセスは Google のデフォルトの暗号化を使用する場合と同様です。 暗号化 オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

CMEK の使用

このセクションの手順に沿って、CMEK を使用し、Managed Service for Apache Spark により永続ディスクと Managed Service for Apache Spark ステージング バケットに書き込まれるデータを暗号化します。

Cloud Key Management Service を使用してキーリングと鍵を作成して管理することも、 Cloud KMS Autokey を使用してキーリングと鍵を自動的に作成することもできます。

Cloud KMS Autokey の使用

  1. プロジェクトを含むフォルダで Autokey を有効にします
  2. 鍵ハンドルを作成します。 鍵ハンドルを作成するときに、--resource-type として dataproc.googleapis.com/Batch または dataproc.googleapis.com/Session を指定します。Autokey は鍵を生成し、鍵ハンドルに割り当てます。
  3. 次の鍵の手動作成と使用の手順 4 と 5 に沿って、サービス アカウントに権限を付与し、バッチまたはセッション ワークロードを構成します。 ワークロードを送信するときに、kmsKey フィールドの鍵リソース名の代わりに鍵ハンドル リソース名を指定します。

鍵の手動作成と使用

次の手順に沿って、Cloud KMS 鍵を手動で作成し、Managed Service for Apache Spark で使用します。

  1. Cloud Key Management Service(Cloud KMS)を使用して鍵を作成します。

  2. リソース名をコピーします。

    リソース名をコピーします。
    リソース名は次のように構成されています。
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

  3. Compute Engine、Managed Service for Apache Spark、Cloud Storage サービス エージェントのサービス アカウントで鍵を使用できるようにします。

    1. Cloud KMS 暗号鍵の暗号化/復号ロールを Compute Engine サービス エージェントのサービス アカウントに割り当てるには、[Cloud KMS 鍵を使用してリソースを保護する]> [必要なロール]をご覧ください。このサービス アカウントが コンソールの IAM ページの一覧に含まれていない場合は、[Google 提供のロール付与を含める] をクリックして含めます。 Google Cloud
    2. Cloud KMS 暗号鍵の暗号化/復号 ロールを Managed Service for Apache Spark サービス エージェント サービス アカウントに割り当てます。 ロールの割り当てには、Google Cloud CLI を使用できます。

       gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      次のように置き換えます。

      KMS_PROJECT_ID: Cloud KMS を実行する プロジェクトの ID。 Google Cloud このプロジェクトには、Managed Service for Apache Spark リソースを実行するプロジェクトも指定できます。

      PROJECT_NUMBER: Managed Service for Apache Spark リソースを実行する Google Cloud プロジェクトのプロジェクト番号(プロジェクト ID ではありません)。

    3. Managed Service for Apache Spark リソースを実行するプロジェクトで Cloud KMS API を有効にします。

    4. Managed Service for Apache Spark サービス エージェントのロールManaged Service for Apache Spark サービス エージェント サービス アカウントに関連付けられていない場合は、 Managed Service for Apache Spark サービス エージェント サービス アカウントに関連付けられたカスタム ロールに serviceusage.services.use 権限を追加します。Managed Service for Apache Spark サービス エージェントのロールが Managed Service for Apache Spark サービス エージェント サービス アカウントに関連付けられている場合は、この手順をスキップできます。

    5. 手順に沿ってバケットに鍵を追加します。

  4. バッチ ワークロードを送信する場合:

    1. バッチの kmsKey パラメータで鍵を指定します。
    2. バッチの stagingBucket パラメータで Cloud Storage バケットの名前を指定します。
  5. インタラクティブ セッションまたはセッション テンプレートを作成する場合:

    1. セッションの kmsKey パラメータで鍵を指定します。
    2. セッションの stagingBucket パラメータで Cloud Storage バケットの名前を指定します。