6.13.5. カスタムで暗号化された永続ボリュームの作成
PersistentVolumeClaim オブジェクトの作成時に、OpenShift Container Platform は新規永続ボリューム (PV) をプロビジョニングし、PersistentVolume オブジェクトを作成します。新規に作成された PV を暗号化することで、Google Cloud Platform (GCP) にカスタム暗号化キーを追加し、クラスター内の PV を保護することができます。
暗号化の場合、作成した新たに割り当てられる PV は、新規または既存の Google Cloud Key Management Service (KMS) キーを使用してクラスターで顧客管理の暗号鍵 (CMEK) を使用します。
前提条件
- 実行中の OpenShift Container Platform クラスターにログインしている。
- Cloud KMS キーリングとキーのバージョンを作成している。
CMEK および Cloud KMS リソースの詳細は、顧客管理の暗号鍵 (CMEK) の使用 を参照してください。
手順
カスタムで暗号化された PV を作成するには、以下の手順を実行します。
Cloud KMS キーを使用してストレージクラスを作成します。以下の例では、暗号化されたボリュームの動的プロビジョニングを有効にします。
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-gce-pd-cmek provisioner: pd.csi.storage.gke.io volumeBindingMode: "WaitForFirstConsumer" allowVolumeExpansion: true parameters: type: pd-standard disk-encryption-kms-key: projects/<key-project-id>/locations/<location>/keyRings/<key-ring>/cryptoKeys/<key>1 - 1
- このフィールドは、新規ディスクの暗号化に使用されるキーのリソース識別子である必要があります。値では、大文字と小文字が区別されます。キー ID の値を指定する方法は、Retrieving a resource’s ID および Getting a Cloud KMS resource ID を参照してください。注記
disk-encryption-kms-keyパラメーターは既存のストレージクラスに追加することはできません。ただし、ストレージクラスを削除し、同じ名前および異なるパラメーターセットでこれを再作成できます。これを実行する場合、既存クラスのプロビジョナーはpd.csi.storage.gke.ioである必要があります。
ocコマンドを使用して、ストレージクラスを OpenShift Container Platform クラスターにデプロイします。$ oc describe storageclass csi-gce-pd-cmek出力例
Name: csi-gce-pd-cmek IsDefaultClass: No Annotations: None Provisioner: pd.csi.storage.gke.io Parameters: disk-encryption-kms-key=projects/key-project-id/locations/location/keyRings/ring-name/cryptoKeys/key-name,type=pd-standard AllowVolumeExpansion: true MountOptions: none ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: none直前の手順で作成したストレージクラスオブジェクトの名前に一致する
pvc.yamlという名前のファイルを作成します。kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: csi-gce-pd-cmek resources: requests: storage: 6Gi注記新規ストレージクラスをデフォルトとしてマークした場合は、
storageClassNameフィールドを省略できます。PVC をクラスターに適用します。
$ oc apply -f pvc.yamlPVC のステータスを取得し、これが作成され、新規にプロビジョニングされた PV にバインドされていることを確認します。
$ oc get pvc出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd-cmek 9s注記ストレージクラスで
volumeBindingModeフィールドがWaitForFirstConsumerに設定されている場合、これを検証する前に PVC を使用するために Pod を作成する必要があります。
CMEK で保護される PV が OpenShift Container Platform クラスターで使用できるようになります。