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

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

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵 (CMEK)を、Cloud KMS と 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 や 永続ディスク などのワークステーションリソースを暗号化します。データを保護する鍵 について特定のコンプライアンスや規制の要件がある場合、顧客管理の暗号鍵 (CMEK)を 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 CLI をインストールするを参照し、 オペレーティング システムの手順に沿って操作します。

    2. gcloud CLI を初期化するには、gcloud CLI 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. CMEK 鍵に対する Cloud KMS 閲覧者のロール (roles/cloudkms.viewer) を Cloud Workstations サービス エージェントに付与します。これにより、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 CryptoKey の暗号化/復号 ロールroles/cloudkms.cryptoKeyEncrypterDecrypter)が Cloud KMS 鍵に必要です。
  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 フラグを指定して実行してください。

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

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

顧客管理の暗号鍵の使用

  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 をご覧ください。

次のステップ