3.3. KMS 使用時の鍵のローテーションの有効化と無効化
一般的なセキュリティープラクティスでは、定期的な暗号鍵のローテーションが求められます。KMS を使用する場合、鍵のローテーションを有効または無効にできます。
3.3.1. キーローテーションの有効化
鍵のローテーションを有効にするには、PersistentVolumeClaims
、Namespace
、または StorageClass
(優先順位の降順) に keyrotation.csiaddons.openshift.io/schedule: <value>
アノテーションを追加します。
<value>
は @hourly
、@daily
、@weekly
、@monthly
、または @yearly
のいずれかになります。<value>
が空の場合、デフォルトは @weekly
になります。以下の例では @weekly
を使用しています。
キーのローテーションは、RBD バックアップボリュームでのみサポートされます。
名前空間のアノテーション
$ oc get namespace default NAME STATUS AGE default Active 5d2h
$ oc annotate namespace default "keyrotation.csiaddons.openshift.io/schedule=@weekly" namespace/default annotated
StorageClass のアノテーション
$ oc get storageclass rbd-sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE rbd-sc rbd.csi.ceph.com Delete Immediate true 5d2h
$ oc annotate storageclass rbd-sc "keyrotation.csiaddons.openshift.io/schedule=@weekly" storageclass.storage.k8s.io/rbd-sc annotated
PersistentVolumeClaims のアノテーション
$ oc get pvc data-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE data-pvc Bound pvc-f37b8582-4b04-4676-88dd-e1b95c6abf74 1Gi RWO default 20h
$ oc annotate pvc data-pvc "keyrotation.csiaddons.openshift.io/schedule=@weekly" persistentvolumeclaim/data-pvc annotated
$ oc get encryptionkeyrotationcronjobs.csiaddons.openshift.io NAME SCHEDULE SUSPEND ACTIVE LASTSCHEDULE AGE data-pvc-1642663516 @weekly 3s
$ oc annotate pvc data-pvc "keyrotation.csiaddons.openshift.io/schedule=*/1 * * * *" --overwrite=true persistentvolumeclaim/data-pvc annotated
$ oc get encryptionkeyrotationcronjobs.csiaddons.openshift.io NAME SCHEDULE SUSPEND ACTIVE LASTSCHEDULE AGE data-pvc-1642664617 */1 * * * * 3s
3.3.2. 鍵のローテーションの無効化
次の鍵のローテーションを無効にできます。
- ストレージクラスのすべての永続ボリューム要求 (PVC)
- 特定の PVC
ストレージクラスのすべての PVC の鍵ローテーションを無効にする
すべての PVC の鍵ローテーションを無効にするには、ストレージクラスのアノテーションを更新します。
$ oc get storageclass rbd-sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE rbd-sc rbd.csi.ceph.com Delete Immediate true 5d2h
$ oc annotate storageclass rbd-sc "keyrotation.csiaddons.openshift.io/enable: false" storageclass.storage.k8s.io/rbd-sc annotated
特定の永続ボリューム要求の鍵ローテーションを無効にする
鍵のローテーションを無効にする PVC の
EncryptionKeyRotationCronJob
CR を特定します。$ oc get encryptionkeyrotationcronjob -o jsonpath='{range .items[?(@.spec.jobTemplate.spec.target.persistentVolumeClaim=="<PVC_NAME>")]}{.metadata.name}{"\n"}{end}'
<PVC_NAME>
は、無効にする PVC の名前です。鍵のローテーションを無効にするには、前の手順の
EncryptionKeyRotationCronJob
CR に以下を適用します。csiaddons.openshift.io/state
アノテーションをmanaged
からunmanaged
に更新します。$ oc annotate encryptionkeyrotationcronjob <encryptionkeyrotationcronjob_name> "csiaddons.openshift.io/state=unmanaged" --overwrite=true
ここで、<encryptionkeyrotationcronjob_name> は
EncryptionKeyRotationCronJob
CR の名前です。spec
フィールドの下にsuspend: true
を追加します。$ oc patch encryptionkeyrotationcronjob <encryptionkeyrotationcronjob_name> -p '{"spec": {"suspend": true}}' --type=merge.
- 保存して終了します。PVC の鍵のローテーションは無効になります。