ストレージの暗号化が設定されていない RDS インスタンス

Crossplane で作成する RDS ストレージを暗号化し、既存データは対応する手順で移行してください。

説明

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 でストレージ暗号化を要求します。作成後に実際の状態とデータアクセスを確認してください。

参考資料