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 鍵を使用してリソースを保護する] > [必要なロール] をご覧ください。このサービス アカウントが Google Cloud コンソールの IAM ページの一覧に含まれていない場合は、[Google 提供のロール付与を含める] をクリックして含めます。
    2. Cloud KMS CryptoKey の暗号化/復号ロールを 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 を実行する Google Cloud プロジェクトの ID。このプロジェクトには、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 バケットの名前を指定します。