デフォルトでは、Workflows はお客様のコンテンツを保存時に暗号化します。暗号化は Workflows が行うため、ユーザー側での操作は必要ありません。このオプションは、Google のデフォルトの暗号化と呼ばれます。
暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Workflows などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。 Cloud KMS を使用すると、鍵の使用状況を追跡すること、監査ログを表示すること、鍵のライフサイクルを管理することが可能です。 データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵を制御および管理します。
CMEK を使用してリソースを設定した後は、Workflows リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。
ワークフローと関連する保存データは、本人だけがアクセスでき、Cloud KMS で制御と管理ができる暗号鍵を使用して保護できます。
CMEK による保護対象
ワークフローをデプロイするときに、Cloud KMS 鍵を指定できます。この鍵は、ワークフローとその実行の暗号化に使用されます。
- ワークフローには、有効なワークフロー定義を含むソースファイルが必要です。このソースファイルは鍵を使用して暗号化されます。 
- ワークフロー実行は、現在のワークフロー定義(特定のワークフロー リビジョン)を実行します。デプロイ時のワークフロー リビジョンに関連付けられた鍵を使用して、コンパイルされたワークフローと保存された実行の入力、出力、実行時データが暗号化されます。これには、実行引数、結果、エラー、例外、配信された Eventarc イベント、コールバック、HTTP のリクエストとレスポンスが含まれます。 
始める前に
Workflows で CMEK を使用する前に、次の手順を行います。
- API を有効にします。 - コンソール- 
  
   
   
     
   
  
 
   
 
 
  
  
    
      Enable the Cloud KMS and Workflows APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
 - gcloud- 
  
   
   
  
 
 
 
  
    
    In the Google Cloud console, activate Cloud Shell. At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize. 
- gcloudコンポーネントを更新します。- gcloud components update 
- 暗号鍵を格納するプロジェクトで Cloud KMS API と Workflows API を有効にします。gcloud services enable cloudkms.googleapis.com workflows.googleapis.com 
 - 鍵の有効化または無効化を行うと、Cloud KMS により Cloud Audit Logs が生成されます。このログは、データの暗号化または復号で Workflows リソースが鍵を使用したときにも生成されます。プロジェクト内の Cloud KMS API でロギングが有効になっていることと、ユースケースに適用されるロギング固有の権限とロールを決定していることを確認します。詳細については、Cloud KMS 監査ロギングの情報をご覧ください。 - Cloud KMS キーリングと鍵を作成する- キーリングは新しく作成するか、既存のものを使用できます。キーリング内では、新しい鍵を追加することも、既存の鍵を使用することも可能です。 - Cloud KMS 鍵のリソース ID を取得する- ワークフローの CMEK を有効にする場合は、Cloud KMS 鍵のリソース ID が必要です。このドキュメントの ワークフローの CMEK を有効にするをご覧ください。 - コンソール- Google Cloud コンソールで、[鍵管理] ページに移動します。 
- 鍵を含むキーリングをクリックします。 
- リソース ID を取得したい鍵について、[more_vert その他] をクリックします。 
- [リソース名をコピーする] をクリックします。 - 鍵のリソース ID がクリップボードにコピーされます。形式は次のようになります。 - projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME 
- 鍵には、0 個以上の鍵バージョンが含まれています。鍵バージョンのリソース ID は、鍵 ID とスラッシュ( - /)、およびバージョン ID です。鍵のすべてのバージョンを一覧表示するには:- 鍵の名前をクリックします。
- 特定のバージョンの場合は、[ その他] をクリックします。
- [リソース名をコピーする] をクリックします。
 
 - gcloud- 指定したキーリングのすべての鍵を一覧表示します。 - gcloud kms keys list --keyring RING_NAME --location LOCATION - 以下を置き換えます。 - RING_NAME: キーリングの名前
- LOCATION: キーリングのリージョン
 - 出力には、各鍵のリソース ID が含まれます。次に例を示します。 - NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 
- 鍵には、0 個以上の鍵バージョンがあります。鍵バージョンのリソース ID は、鍵 ID とスラッシュ( - /)、およびバージョン ID です。鍵のすべてのバージョンを表示します。- gcloud kms keys versions list --location LOCATION --keyring RING_NAME --key KEY_NAME - 出力には、各鍵バージョンのリソース ID が含まれます。次に例を示します。 - NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME/2 
 - Workflows サービス エージェントに鍵へのアクセス権を付与する- Workflows サービス エージェントが Cloud KMS 鍵にアクセス権できるように、Cloud KMS CryptoKey Encrypter/Decrypter の Identity and Access Management(IAM)ロールを付与しておく必要があります。 - コンソール- コンソールでワークフローの CMEK を有効にすると、サービス アカウントに Cloud KMS CryptoKey Encrypter/Decrypter ロールを付与するように求められます。詳細については、このドキュメントのワークフローの CMEK を有効にするをご覧ください。 - gcloud- gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring RING_NAME \ --location LOCATION \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter - 次のように置き換えます。 - KEY_NAME: 鍵の名前。例:- my-key
- RING_NAME: キーリングの名前。例:- my-keyring
- LOCATION: 鍵のロケーション。例:- us-central1
- PROJECT_NUMBER: Google Cloud プロジェクトの番号。プロジェクト番号は、 Google Cloud コンソールの [ようこそ] ページで確認できます。また、次のコマンドでも確認できます。- export PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format="value(projectNumber)" 
 - サービス エージェントに - roles/cloudkms.cryptoKeyEncrypterDecrypterロールがあれば、プロジェクト内のワークフローで CMEK 鍵を使用してデータを暗号化および復号できます。ロールの取り消しや、CMEK 鍵の無効化や破棄をすると、そのデータにアクセスできなくなります。このドキュメントの Cloud KMS を無効にするをご覧ください。- ワークフローの CMEK を有効にする- ワークフローの作成時または作成後の更新時に、ワークフローがデータ暗号化に使用する Cloud KMS 鍵を指定できます。 - コンソール- Google Cloud コンソールで [ワークフロー] ページに移動します。 
- 更新するワークフローの名前をクリックします。 - [Workflows details] ページが表示されます。 
- [ 編集] をクリックします。 
- [Cloud KMS 鍵] を選択します。 
- [キーのタイプ] を選択します。 - 鍵は手動で管理することも、Autokey を使用してオンデマンドでキーリングと鍵を生成することもできます。Autokey オプションが無効になっている場合、このオプションは現在のリソースタイプとまだ統合されていません。 
- [Cloud KMS 鍵を選択] リストで、Cloud KMS 鍵を選択するか、フィルタします。 
- (省略可)鍵のリソース名を手動で入力するには、[顧客管理の暗号鍵を選択] リストで [手動でキーを入力] をクリックして、指定された形式で鍵のリソース名を入力します。 
- プロンプトが表示されたら、 - workflows.serviceAgentロールを持つ Workflows サービス アカウントに- cloudkms.cyptoKeyEncrypterDecrypterロールを付与します。
- [次へ] をクリックします。 
- 変更を保存して更新済みのワークフローをデプロイするには、[デプロイ] をクリックします。 
 - gcloud- gcloud workflows deploy WORKFLOW_NAME \ --source=SOURCE_FILE \ --kms-key=KEY \ --location LOCATION \ --service-account=SERVICE_ACCOUNT - 以下を置き換えます。 - WORKFLOW_NAME: ワークフローの名前
- SOURCE_FILE: YAML ファイルの場合は- yamlファイル拡張子、JSON ファイルの場合は- jsonファイル拡張子を持つワークフロー ソースファイル(例:- myWorkflow.yaml)。
- KEY: 鍵のリソース ID(- projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME形式)。 鍵 ID を取得できます。
- LOCATION: ワークフローのロケーション
- SERVICE_ACCOUNT: ワークフローが他の Google Cloud サービスにアクセスするために使用するサービス アカウント(例:- SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com)。必要なリソースにアクセスするために必要な最小権限を持つサービス アカウントを使用することを強くおすすめします。空白のままにすると、デフォルトのサービス アカウントが使用されます。詳細については、 Google Cloud リソースにアクセスする権限をワークフローに付与するをご覧ください。
 - 次の点にご注意ください。 - ワークフローのリビジョンと実行は、デプロイ時に指定された鍵で暗号化されますが、以前の鍵で暗号化されたリソースは、その以前の鍵で暗号化されたままです。その後ワークフローが編集されて、新しい鍵が指定された場合、ワークフローのリビジョンは新しい鍵で暗号化され、後続の実行ではその新しい鍵が使用されます。
- 前もって CMEK で暗号化されていないリビジョンと実行は、暗号化されないままです。
- ワークフロー リビジョンで CMEK を無効にすると、後続の実行は CMEK 暗号化なしで作成されます。このドキュメントのワークフローの CMEK を無効にするをご覧ください。既存のワークフローのリビジョンと実行は、これまでの暗号化で使用された鍵で暗号化されたままです。
 - Cloud KMS の統合を確認する- ワークフローのメタデータを表示して、CMEK 統合を確認できます。 - コンソール- Google Cloud コンソールで [ワークフロー] ページに移動します。 
- 確認するワークフローの名前をクリックします。 - [Workflows details] ページが表示されます。 
- [詳細] タブをクリックします。 - [暗号化] 値には、ワークフローとその実行の保護に使用される Cloud KMS 鍵のリソース ID が表示されます。 
 - gcloud- gcloud workflows describe WORKFLOW_NAME \ --location=LOCATION - 出力例を以下に示します。 - createTime: '2022-08-10T19:57:58.233177709Z' cryptoKeyName: projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME name: projects/PROJECT_NAME/locations/LOCATION/workflows/WORKFLOW_NAME revisionCreateTime: '2022-11-18T19:44:04.933633237Z' revisionId: 000009-8be serviceAccount: projects/PROJECT_NAME/serviceAccounts/SA_NAME@PROJECT_NAME.iam.gserviceaccount.com sourceContents: [...] state: ACTIVE updateTime: '2022-11-18T19:44:05.171793128Z' - cryptokeyName値は、ワークフローとその実行の保護に使用される Cloud KMS 鍵のリソース ID です。- ワークフローの CMEK を無効にする- ワークフローの CMEK を無効にすると、関連付けられた Cloud KMS 鍵が使用されなくなります。 - コンソール- Google Cloud コンソールで [ワークフロー] ページに移動します。 
- 更新するワークフローの名前をクリックします。 - [Workflows details] ページが表示されます。 
- [ 編集] をクリックします。 
- [Cloud KMS 鍵] ラジオボタンをクリアするには、[Google-managed encryption key] を選択します。 
- [次へ] をクリックします。 
- 変更を保存して更新済みのワークフローをデプロイするには、[デプロイ] をクリックします。 
 - gcloud- gcloud workflows deploy WORKFLOW_NAME \ --source=SOURCE_FILE \ --clear-kms-key \ --service-account=SERVICE_ACCOUNT - これにより、現在のワークフロー リビジョンの CMEK が無効になり、後続の実行は CMEK 暗号化なしで作成されます。既存のワークフローのリビジョンと実行は、これまでの暗号化で使用された鍵で暗号化されたままです。 - Cloud KMS を無効にする- ワークフローまたはワークフロー実行へのデータアクセスを取り消す場合は、次のいずれかの方法で Cloud KMS を無効にできます。 - 顧客管理の暗号鍵のメインの鍵バージョンを無効化または破棄します。CMEK 鍵バージョンを無効にすると、その鍵バージョンで保護されているすべてのデータにアクセスできなくなります。鍵バージョンの破棄は、この操作を永続的に行うことを意味します。どちらも、特定の鍵に関連付けられたワークフローとワークフロー実行にのみ影響します。新しい実行を作成できません。また、無効化または破棄された鍵に関連するリソースを表示することもできません。アクティブな実行は、対応するエラー メッセージを出して失敗します。 
- Workflows サービス エージェントの - cloudkms.cryptoKeyEncrypterDecrypterIAM ロールを取り消します。この操作は、CMEK を使用した暗号化をサポートするGoogle Cloud プロジェクト内のすべてのワークフローに影響します。CMEK を統合したワークフローと実行を新規作成したり、CMEK で暗号化されたリソースを表示したりすることはできません。アクティブな実行は、対応するエラー メッセージを出して失敗します。
 - いずれのオペレーションでも即時のアクセス取り消しは保証されませんが、通常は IAM の変更のほうがより速く反映されます。詳細については、Cloud KMS リソースの整合性とアクセス権の変更の伝播をご覧ください。 - トラブルシューティング- ワークフローで Cloud KMS を使用すると、エラーが発生する可能性があります。次の表にさまざまな問題とその解決方法を示します。 - 問題 - 説明 - 権限 - cloudkms.cryptoKeyVersions.useToEncryptが拒否されました- 指定された Cloud KMS 鍵が存在しないか、権限が適切に構成されていません。 - 解決方法: - Cloud KMS 鍵が存在することを確認します。 指定したキーリングの鍵を一覧表示し、その使用状況を確認します。
- Workflows サービス エージェントに鍵へのアクセス権があり、cloudkms.cryptoKeyEncrypterDecrypterロールが付与されていることを確認します。
 - 鍵バージョンが有効になっていない - 指定された Cloud KMS 鍵バージョンが無効になっています。 - 解決方法: Cloud KMS 鍵バージョンを再度有効にします。 - キーリングのリージョンが保護対象のリソースと一致しない - 指定された KMS キーリング リージョンがワークフローのリージョンとは異なります。 - 解決方法: Cloud KMS キーリングと同じリージョンの保護されたワークフローを使用します(異なるプロジェクトに存在することもあります)。詳細については、Cloud KMS のロケーションと Workflows のロケーションをご覧ください。 - Cloud KMS の割り当て上限を超過した - Cloud KMS リクエストの割り当て上限に達しました。 - 解決方法: Cloud KMS の呼び出し数を制限するか、割り当ての上限を増やします。詳細については、Cloud KMS の割り当てをご覧ください。 - 使用できない鍵のステータスの処理方法- 何らかの理由で Cloud KMS が使用できない場合、Workflows は Cloud KMS から鍵のステータスを取得できないことがあります。 - 鍵のステータスが使用できない場合、ワークフローまたはその実行により - state: UNAVAILABLE値と関連する詳細情報が- stateErrorフィールドに返されます。- ワークフローの実行中に鍵のステータスが使用できなくなった場合(たとえば、コールバック中に権限が取り消された場合)、ランタイム エラーが発生し、 - state: FAILED値と関連する詳細情報が- errorフィールドに返されます。- 料金- この統合により、鍵オペレーション以外の追加の費用は発生しません。鍵オペレーションの費用は Google Cloud プロジェクトに課金されます。最新の料金情報については、Cloud KMS の料金をご覧ください。 - 特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。 - 最終更新日 2025-10-19 UTC。 -