CMEK を使用してワークステーション リソースを暗号化する

デフォルトでは、Cloud Workstations はお客様のコンテンツを保存時に暗号化します。暗号化は Cloud Workstations が行うため、ユーザー側での操作は必要ありません。このオプションは、Google のデフォルトの暗号化と呼ばれます。

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

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

デフォルトでは、Cloud Workstations は Google-owned and Google-managed encryption key を使用して、データ保存時に VM や永続ディスクなどのワークステーション リソースを暗号化します。データを保護する鍵について特定のコンプライアンスや規制の要件がある場合、Cloud Key Management Service(Cloud KMS)を使用した顧客管理の暗号鍵を使用できます。

CMEK の一般的な用途や使用する理由などの詳細については、Cloud KMS のドキュメントをご覧ください。

始める前に

プロジェクトを作成する

  1. Google Cloud コンソールのプロジェクト セレクタ ページで、次の Google Cloudプロジェクトを選択または作成します。

    • 鍵プロジェクトには、キーリングや対称暗号鍵などの Cloud KMS リソースが含まれています。

    • ワークステーション プロジェクトには、CMEK 鍵で暗号化されたワークステーションが含まれています。

    鍵プロジェクトとワークステーション プロジェクトに同じプロジェクトを使用できますが、職掌分散のために、2 つのプロジェクトを使用することをおすすめします。

  2. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳細については、プロジェクトの課金ステータスを確認するをご覧ください。

  3. 各プロジェクトで必要な API を有効にします。

  4. gcloud CLI をインストールして初期化します。

    1. gcloud CLI をインストールするには、gcloud CLI をインストールするを参照し、オペレーティング システムの手順に沿って操作します。

    2. gcloud CLI を初期化するには、gcloud CLI の初期化を参照するか、次のコマンドを実行します。

      gcloud init
      

必要なロール

Cloud KMS 管理者のロールと Cloud Workstations 管理者のロールを同じユーザーに付与できますが、ロールを割り当てる際は最小権限の原則に従うことをおすすめします。Cloud KMS 管理者に Cloud Workstations 管理者も兼任するよう依頼するのではなく、これらのロールを 2 人の別々のユーザーに付与して、連携させることをおすすめします。詳細については、セキュリティのベスト プラクティスIAM の安全な使用をご覧ください。

CMEK を設定するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • Cloud KMS 管理者の場合は、Cloud KMS リソースの作成と管理ができるように、次のロールを付与するよう管理者に依頼してください。 鍵プロジェクトに対する Cloud KMS 管理者 roles/cloudkms.admin)。
  • Cloud Workstations 管理者の場合は、ワークステーションの作成と更新を行えるように、次のロールを付与するよう管理者に依頼してください。 ワークステーション プロジェクトに対する Cloud Workstations 管理者 roles/workstations.admin)。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

キーリングと暗号鍵を作成する

鍵プロジェクトで鍵を作成し、鍵のリソース ID を保存します。

  1. キーリングを作成または選択します。

    キーリングは、ワークステーション クラスタと同じリージョンに配置する必要があります。Cloud Workstations は、マルチリージョンまたはグローバルの Cloud KMS ロケーションをサポートしていません。

    サービス間でキーリングを共有できますが、ベスト プラクティスとして、保護されたリソースごとに異なる鍵を使用することをおすすめします。職掌分散を参照してください。

  2. 対称暗号鍵を作成します。

  3. 鍵のリソース ID を取得し、後の手順のために保存します。

暗号鍵へのアクセス権を付与する

Cloud Workstations は、次のサービス アカウントを使用してリソースの暗号化を管理します。

  1. Cloud Workstations サービス エージェント: Cloud Workstations は、このアカウントを使用して、キーがローテーションされたことを検出します。

  2. Cloud KMS 鍵サービス アカウント: Cloud Workstations がリソースの暗号化と復号に使用する鍵にアクセスするために使用できるサービス アカウントを指定します。

Cloud Workstations サービス エージェントに Cloud KMS 閲覧者のロールを付与する

Cloud Workstations サービス エージェントを使用すると、Cloud Workstations はプロジェクトでサービス業務を実行できます。ワークステーション プロジェクトで Cloud Workstations サービスを有効にすると、このサービス エージェントが自動的に作成されます。CMEK が正しく機能するには、Cloud Workstations が鍵のローテーションを検出できるように、ワークステーション プロジェクトの Cloud Workstations サービス エージェントに Cloud KMS 鍵に対する Cloud KMS 閲覧者のロールroles/cloudkms.viewer)を付与する必要があります。

  1. ワークステーション プロジェクトの Cloud Workstations サービス エージェントを取得するには、次のコマンドを使用します。

    gcloud beta services identity create \
        --service=workstations.googleapis.com \
        --project=WORKSTATIONS_PROJECT_ID
    

    WORKSTATIONS_PROJECT_ID は、ワークステーション プロジェクトの ID に置き換えます。

    Cloud Workstations サービス エージェントは、
    service-$WORKSTATIONS_PROJECT_NUMBER@gcp-sa-workstations.iam.gserviceaccount.com の形式を使用します。

  2. Cloud Workstations サービス エージェントに、CMEK 鍵に対する Cloud KMS 閲覧者のロール(roles/cloudkms.viewer)を付与します。これにより、Cloud Workstations はプロジェクトでの必要性に応じて鍵のローテーションを検出し、リソースを再暗号化できます。

    gcloud kms keys add-iam-policy-binding \
        KEY_NAME \
        --keyring=KEY_RING \
        --location=LOCATION \
        --project=KMS_PROJECT_ID \
        --role=roles/cloudkms.viewer \
        --member=CLOUD_WORKSTATIONS_SERVICE_AGENT
    

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

    • KEY_NAME: 鍵の名前。
    • KEY_RING: キーリングの名前。
    • LOCATION: キーリングを含むロケーション。
    • KMS_PROJECT_ID: 鍵を含むプロジェクトの ID。
    • CLOUD_WORKSTATIONS_SERVICE_AGENT: 前の手順で取得した Cloud Workstations サービス エージェント。

    すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。

Cloud KMS 鍵サービス アカウントを設定する

Cloud Workstations は、選択したサービス アカウントを使用して、顧客管理の鍵で暗号化と復号を行います。このアカウントは Cloud KMS 鍵サービス アカウントと呼ばれます。新しいサービス アカウントを作成するか、既存のサービス アカウントを使用するかを選択できます。このアカウントの要件は次のとおりです。

  • Cloud Workstations 管理者には、このサービス アカウントに対する iam.serviceAccounts.actAs 権限が必要です。
  • 選択するサービス アカウントには、Cloud KMS 鍵に対する Cloud KMS CryptoKey の暗号化/復号のロールroles/cloudkms.cryptoKeyEncrypterDecrypter)が必要です。
  1. 新しいサービス アカウントを作成する場合は、次のコマンドを使用します。

    gcloud iam service-accounts create \
      KMS_KEY_SERVICE_ACCOUNT_NAME \
      --display-name="Service account for Cloud Workstations CMEK" \
      --project=WORKSTATIONS_PROJECT_ID
    

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

    • KMS_KEY_SERVICE_ACCOUNT_NAME: サービス アカウントの名前。
    • WORKSTATIONS_PROJECT_ID: ワークステーション プロジェクトの ID。

    作成したサービス アカウントのメールアドレスは KMS_KEY_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com の形式です。

    サービス アカウントのメールアドレスを後の手順で使用するため、保存します。

  2. Cloud KMS 鍵サービス アカウントに Cloud Workstations 管理者 IAM サービス アカウント ユーザーロールroles/iam.serviceAccountUser)を付与するには、次のコマンドを実行します。

    gcloud iam service-accounts add-iam-policy-binding \
        KMS_KEY_SERVICE_ACCOUNT_EMAIL \
        --member="user:CLOUD_WORKSTATIONS_ADMIN_EMAIL" \
        --project=WORKSTATIONS_PROJECT_ID \
        --role=roles/iam.serviceAccountUser
    

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

    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: Cloud KMS 鍵サービス アカウントのメールアドレス。
    • CLOUD_WORKSTATIONS_ADMIN_EMAIL: Cloud Workstations 管理者のメールアドレス。
    • WORKSTATIONS_PROJECT_ID: ワークステーション プロジェクトの ID。
  3. Cloud KMS 鍵の Cloud KMS 鍵サービス アカウントに Cloud KMS CryptoKey 暗号化/復号のロールroles/cloudkms.cryptoKeyEncrypterDecrypter)を付与するには、次のコマンドを実行します。

      gcloud kms keys add-iam-policy-binding \
        KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --project KMS_PROJECT_ID \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --member serviceAccount:KMS_KEY_SERVICE_ACCOUNT_EMAIL\
    

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

    • KEY_NAME: 鍵の名前。
    • KEY_RING: キーリングの名前。
    • LOCATION: キーリングを含むロケーション。
    • KMS_PROJECT_ID: 鍵を含むプロジェクトの ID。
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: Cloud KMS 鍵サービス アカウントのメールアドレス。

    すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。

ワークステーション クラスタを確認する

Google Cloud コンソールに使用可能なワークステーション クラスタがない場合は、Cloud KMS キーリングと同じリージョンにワークステーション クラスタを作成するよう Cloud Workstations 管理者に依頼するか、これらのリソースを自分で作成できるように、プロジェクトに対して Cloud Workstations 管理者の IAM ロールがあることを確認してください。

顧客管理の暗号鍵の使用

  1. ワークステーション クラスタをまだ作成していない場合は、clusters create gcloud CLI コマンドを使用して作成します。

    gcloud workstations clusters create \
        WORKSTATIONS_CLUSTER_NAME --region=LOCATION \
        --project=WORKSTATIONS_PROJECT_ID
    

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

    • WORKSTATIONS_CLUSTER_NAME: ワークステーション クラスタの名前。
    • LOCATION: ワークステーション クラスタのリージョン名。
    • WORKSTATIONS_PROJECT_ID: ワークステーション プロジェクトの ID。
  2. encryption_key 設定でワークステーション構成を作成します。

    マシンタイプ e2-standard-2、アイドル タイムアウト 3600s、CMEK で暗号化されたワークステーション リソースを使用してワークステーション構成を作成するには、次の gcloud CLI コマンドを実行します。

    gcloud workstations configs create WORKSTATIONS_CONFIG_NAME \
      --cluster=WORKSTATIONS_CLUSTER_NAME \
      --region=LOCATION \
      --machine-type="e2-standard-2" \
      --idle-timeout=3600 \
      --kms-key="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" \
      --kms-key-service-account="KMS_KEY_SERVICE_ACCOUNT_EMAIL" \
      --project=WORKSTATIONS_PROJECT_ID
    

    以下を置き換えます。

    • WORKSTATIONS_CONFIG_NAME: ワークステーション構成の名前。
    • WORKSTATIONS_CLUSTER_NAME: ワークステーション クラスタの名前。
    • LOCATION: クラスタのリージョン名。
    • KMS_PROJECT_ID: プロジェクト ID。プロジェクトを Google Cloud内の他のすべてのプロジェクトと区別するために使用される一意の文字列。
    • KEY_RING: キーリングの名前。
    • KEY_NAME: 鍵の名前。
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: Cloud KMS 鍵サービス アカウントのメールアドレス。
    • WORKSTATIONS_PROJECT_ID: ワークステーション プロジェクトの ID。

    ワークステーション構成を作成すると、Cloud KMS では、指定された Cloud KMS 鍵を使用して、プロジェクトの永続ディスクが暗号化されます。

顧客管理の暗号鍵をローテーションする

CMEK 鍵に Cloud Workstations サービス エージェントの Cloud KMS 閲覧者ロール(roles/cloudkms.viewer)を付与すると、ワークステーション サービスは鍵のローテーションを検出し、新しいプライマリ鍵バージョンを使用してホーム ディスクを再暗号化できます。

再暗号化は、ワークステーションを停止した後に実行されます。暗号化されたワークステーションを停止するたびに、ワークステーション サービスは鍵がローテーションされているかどうかを確認します。鍵がローテーションされている場合、ワークステーション サービスはワークステーションのホームディスクのスナップショットを作成し、ディスクを削除します。ワークステーションを次回起動すると、ワークステーション サービスは新しいメインの鍵バージョンを使用して、スナップショットから新しいディスクを作成します。

Cloud KMS の割り当てと Cloud Workstations

Cloud Workstations で CMEK を使用すると、プロジェクトで Cloud KMS 暗号リクエストの割り当てを使用できます。たとえば、CMEK で暗号化されたリポジトリでは、アップロードまたはダウンロードごとにこれらの割り当てを消費できます。 CMEK 鍵を使用する暗号化と復号の処理は、ハードウェア(Cloud HSM)鍵または外部(Cloud EKM)鍵を使用する場合にのみ、Cloud KMS の割り当てに影響します。 詳細については、Cloud KMS の割り当てをご覧ください。

外部鍵

Cloud External Key Manager(Cloud EKM)を使用すると、管理対象の外部鍵を使用してGoogle Cloud 内のデータを暗号化できます。

Cloud EKM 鍵を使用する場合、Google は外部管理鍵の可用性をコントロールできません。鍵が使用できなくなった場合は、ワークステーションを起動できません。

外部鍵を使用する際のその他の考慮事項については、Cloud External Key Manager をご覧ください。

次のステップ