GCPでMCSカタログ用にCMEKを構成する

MCSカタログでは、顧客管理暗号キー(CMEK:Customer Managed Encryption Keys)を使用できます。 この機能を使用する場合は、Google Cloudキー管理サービスのCryptoKey Encrypter/Decrypter役割をCompute Engineサービスエージェントに割り当てます。 Citrix DaaSアカウントには、キーが保存されているプロジェクトで正しい権限が必要です。 「Citrix DaaSアカウントへのアクセス権限の割り当て」を参照してください。 詳しくは、「Cloud KMS鍵を使用してリソースを保護する」を参照してください。

Compute Engineサービスエージェントの形式は次のとおりです:service-<Project _Number>@compute-system.iam.gserviceaccount.com。 この形式は、デフォルトのCompute Engineサービスアカウントとは異なります。

このCompute Engineサービスアカウントは、Googleコンソールの [IAM Permissions] 画面に表示されないことがあります。 このような場合は、「Cloud KMS鍵を使用してリソースを保護する」で説明されているgcloudコマンドを使用します。

Citrix DaaSアカウントへのアクセス権限の割り当て

Google Cloud KMSの権限はさまざまな方法で設定できます。 プロジェクトレベルのKMS権限、またはリソースレベルのKMS権限のいずれかを指定できます。 詳しくは、「権限と役割」を参照してください。

プロジェクトレベルのKMS権限

1つのオプションは、Citrix DaaSアカウントにCloud KMSリソースを参照するためのプロジェクトレベルの権限を提供することです。 これを行うには、カスタム役割を作成し、次の権限を追加します:

  • cloudkms.keyRings.list
  • cloudkms.keyRings.get
  • cloudkms.cryptokeys.list
  • cloudkms.cryptokeys.get

Citrix DaaSアカウントにこのカスタム役割を割り当てます。 これにより、インベントリ内の関連プロジェクトの地域キーを参照できます。

リソースレベルのKMS権限

もう1つのオプションであるリソースレベルの権限の場合、Google Cloudコンソールで、MCSプロビジョニングに使用するcryptoKeyを参照します。 Citrix DaaSアカウントを、カタログプロビジョニングに使用するキーリングまたはキーに追加します。

ヒント:

このオプションを使用すると、Citrix DaaSアカウントにCloud KMSリソースに対するプロジェクトレベルのリスト権限がないため、インベントリ内のプロジェクトの地域キーを参照できません。 ただし、ProvSchemeカスタムプロパティで正しいcryptoKeyIdを指定することにより、CMEKを使用してカタログをプロビジョニングできます。 「カスタムプロパティとCMEKを使用してカタログを作成する」を参照してください。

顧客管理キーの交換

Google Cloud does not support rotating keys on existing persistent disks or images. マシンがプロビジョニングされると、作成時に使用されていたバージョンのキーに関連付けられます。 ただし、新しいバージョンのキーを作成することはでき、その新しいキーは、カタログが新しいマスターイメージで更新されたときに作成される、新しくプロビジョニングされたマシンまたはリソースに使用されます。

キーリングに関する重要な注意事項

キーリングの名前を変更したり、削除したりすることはできません。 また、構成時に予期しない料金が発生する場合があります。 キーリングを削除すると、Google Cloudは次のエラーメッセージを表示します:

  Sorry, you can't delete or rename keys or key rings.   We were concerned about the security implications of allowing multiple keys or key versions over time to have the same resource name, so we decided to make names immutable.   (And you can't delete them, because we wouldn't be able to do a true deletion--there would still have to be a tombstone tracking that this name had been used and couldn't be reused).
  We're aware that this can make things untidy, but we have no immediate plans to change this.
  If you want to avoid getting billed for a key or otherwise make it unavailable, you can do so by deleting all the key versions; neither keys nor key rings are billed for, just the active key versions within the keys.
<!--NeedCopy-->

ヒント:

詳しくは、「Editing or deleting a key ring from the console」を参照してください。

カスタムプロパティとCMEKを使用してカタログを作成する

When PowerShellでプロビジョニングスキームを作成するときは、ProvScheme CustomPropertiesCryptoKeyIdプロパティを指定します。 次に例を示します:

  '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Property xsi:type="StringProperty" Name="CryptoKeyId" Value="<yourCryptoKeyId>" />
  </CustomProperties>'
<!--NeedCopy-->

cryptoKeyIdは次の形式で指定する必要があります:

projectId:location:keyRingName:cryptoKeyName

たとえば、リージョンus-east1にあるキーリングmy-example-key-ringのキーmy-example-keyと、IDがmy-example-project-1のプロジェクトを使用する場合、ProvSchemeカスタム設定は次のようになります:

  '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Property xsi:type="StringProperty" Name="CryptoKeyId" Value="my-example-project-1:us-east1:my-example-key-ring:my-example-key" />
  </CustomProperties>'
<!--NeedCopy-->

このプロビジョニングスキームに関連するすべてのMCSプロビジョニングされたディスクとイメージは、このCMEK(顧客管理暗号キー)を使用します。

ヒント:

グローバルキーを使用する場合、顧客プロパティの場所はregion名ではなくglobalである必要があります。上記の例では、us-east1です。 たとえば、&lt;Property xsi:type="StringProperty" Name="CryptoKeyId" Value="my-example-project-1:global:my-example-key-ring:my-example-key" /&gt;です。

GCPでMCSカタログ用にCMEKを構成する