説明
Crossplane の RDSInstance で新しいデータベースを作成するときは、ストレージの暗号化を明示してください。暗号化していないデータベースでは、ストレージと関連するログ、バックアップ、スナップショットが暗号化で保護されません。
テンプレートや Composition にも設定を含めると、複数の環境に同じ要件を適用できます。暗号化しても正当なデータベース権限を持つ利用者の読み取りは制限されないため、アクセス制御も必要です。
想定される影響
保存データやバックアップを不正に取得されると、機密性の高い業務情報が漏えいするリスクが高まります。組織の暗号化要件を満たせない場合もあります。
対処方法
- 新規インスタンスには
spec.forProvider.storageEncrypted: trueを明示し、必要な KMS キーと権限を用意してください。 - フラグを変更するだけでは既存の非暗号化インスタンスを暗号化できません。暗号化したスナップショットコピーから新しいインスタンスを復元するなど、サポートされている移行手順を使用してください。
- バックアップと元のデータを保持し、データの整合性、接続先の切り替え、実際の暗号化を確認してください。認証、公開アクセス、TLS も別途検討してください。
例
新規インスタンスの作成設定の抜粋です。認証情報、ネットワーク、ProviderConfig は完全な構成で用意してください。比較のために異なるリソース名を使用しており、既存データベースのデータ移行は行いません。
変更前
yaml
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
name: rds3
spec:
forProvider:
allocatedStorage: 50
dbInstanceClass: db.t3.medium
engine: mysql
region: us-west-2
publiclyAccessible: false
storageEncrypted: false
storageType: gp2
新しい MySQL インスタンスのストレージ暗号化を要求していません。
変更後
yaml
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
name: rds1
spec:
forProvider:
allocatedStorage: 50
dbInstanceClass: db.t3.medium
engine: mysql
region: us-west-2
publiclyAccessible: false
storageEncrypted: true
storageType: gp2
storageEncrypted: true でストレージ暗号化を要求します。作成後に実際の状態とデータアクセスを確認してください。