【Security Hub修復手順】[RDS.3] RDS DB インスタンスでは、保管中の暗号化が有効になっている必要があります

AWS SecurityHub 基礎セキュリティのベストプラクティスコントロール修復手順をご紹介します。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、AWS事業本部のトクヤマシュンです。

皆さん、お使いのAWS環境のセキュリティチェックはしていますか?

当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修復手順をご紹介します。

本記事の対象コントロール

[RDS.3] RDS DB インスタンスでは、保管中の暗号化が有効になっている必要があります

[RDS.3] RDS DB instances should have encryption at-rest enabled

対象コントロールの説明

次のサービスに関して暗号化されていない場合、本コントロールは失敗として検知されます。

  • RDS DBインスタンス
  • Aurora DBインスタンス
  • Neptune DBインスタンス
  • DocumentDBクラスター

保管中のデータを暗号化すると、認証されていないユーザーがディスクに保存しているデータにアクセスするリスクが低減されます。
インスタンスの暗号化を行うと、対象のDBインスタンスに加えて自動バックアップ、リードレプリカ、スナップショットといったストレージがも暗号化されます。
本コントロールに対応しない場合、意図せぬデータ漏洩発生の可能性がありますのでご注意ください。

前提条件

本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。 AWS Security Hubの詳細についてはこちらのブログをご覧ください。

修復手順

今回はAmazon RDS for MySQLでスナップショットの暗号化について手順を説明します。

1.修正対象のスナップショット特定

まずAWS Security HubのコンソールからRDS.3のチェック結果を確認します。
表示項目から、今回の対象はtest-dbであることが分かります。

東京リージョンでAWS Security Hubの集約を行なっている場合、下記リンクで上図の画面を確認可能です。

https://ap-northeast-1.console.aws.amazon.com/securityhub/home?region=ap-northeast-1#/standards/aws-foundational-security-best-practices-1.0.0/RDS.3

2.ステークホルダーに確認

ステークホルダーに以下を確認します。

  • DBインスタンスの非暗号化設定は意図したものか?
    • YESの場合
      • 基本的に暗号化しない理由はないかと思いますので、暗号化をご検討ください。
      • もし非暗号化を継続する場合には、対象のFindingsを抑制済みに変更し、以降の検知対応から除外します
    • NOの場合
      • 3.DBインスタンスの暗号化に進みます

3.DBインスタンスの暗号化

対象のDBインスタンスを直接暗号化することはできないため、下記の流れで暗号化インスタンスを作成します。

  • 非暗号化DBインスタンスから非暗号化スナップショットを作成
  • 非暗号化スナップショットから暗号化スナップショットを作成
  • 暗号化スナップショットから暗号化DBインスタンスを復元
  • 暗号化DBインスタンスと非暗号化DBインスタンスの名前を入れ替え

順に説明します。

3.1 スナップショット取得画面へのアクセス

マネジメントコンソールから、RDS→スナップショットのサービス画面にアクセスします。

スナップショットの取得ボタンをクリックします。

3.2 非暗号化DBインスタンスから非暗号化スナップショットを作成

下記を入力します。

  • DBインスタンス
    • 暗号化したいDBインスタンス名
  • スナップショット名
    • 任意のスナップショット名

入力できたら、スナップショットの取得ボタンをクリックします。

3.3 非暗号化スナップショット作成の確認

作成したスナップショットの画面に遷移します。
しばらく時間が経過したあと、KMSキーIDの欄を確認します。

KMSキーIDになしが設定されており、スナップショットが暗号化されていないことがわかります。

3.4 スナップショットのコピー画面へのアクセス

マネジメントコンソールから、RDS→スナップショットのサービス画面にアクセスします。
対象のスナップショットをチェックし、アクション→スナップショットをコピーをクリックします。

3.5 スナップショットのコピー

下記を設定します。

  • 送信先リージョン
    • 暗号化スナップショットを作成したいリージョンを選択
  • 新しいDBスナップショットID
    • 任意のIDを指定
  • ターゲットオプショングループ
    • 設定したいオプショングループがあれば指定
  • タグをコピー
    • スナップショットのタグもコピーしたい場合はチェック
  • 暗号化
    • 暗号を有効化にチェック
  • AWS KMSキー
    • 任意のキーを設定
      • スナップショットのクロスアカウントコピーが必要な場合はカスタマーマネージドキーを利用する必要があります
      • それ以外はAWSマネージドキーであるデフォルトキー(aws/rds)で問題ありません

  入力できたらスナップショットをコピーボタンをクリックします。

3.6 暗号化スナップショット作成の確認

作成したスナップショットの画面に遷移します。
しばらく時間が経過したあと、下記となっていることを確認します。

  • ステータス
    • 利用可能
  • KMSキーID
    • 設定したAWS KMSキーのID

確認できれば、暗号化スナップショットの作成は成功です。

3.7 スナップショットの復元画面へのアクセス

マネジメントコンソールから、RDS→スナップショットのサービス画面にアクセスします。
暗号化スナップショットをチェックし、アクション→スナップショットを復元をクリックします。

3.8 スナップショットの復元

作成したいDBインスタンスに応じて、各設定項目に適切な値を入力します。
サンプルとして、いくつかのキャプチャ画面を示します。

今回DBインスタンス識別子にはtest-db-2を設定しました。

AWS KMSキーには先ほど暗号化スナップショット作成時に利用したキーが記載されていることを確認します。

入力できたらDBインスタンスを復元ボタンをクリックします。

3.9 暗号化DBインスタンス作成の確認

作成したDBインスタンスの画面に遷移します。
しばらく時間が経過したあと、下記となっていることを確認します。

  • ステータス
    • 利用可能
  • 設定タブのストレージ→暗号化
    • 有効

確認できれば、暗号化DBインスタンスの作成は成功です。

3.10 非暗号化DBインスタンスのエンドポイント確認

本工程以降は非暗号化DBインスタンスに接続できなくなるのでご注意ください。

マネジメントコンソールから、RDS→データベース→非暗号化DBインスタンスのサービス画面にアクセスします。
接続とセキュリティタブでエンドポイントを確認します。

今回はtest-db.12桁の英数文字列.ap-northeast-1.rds.amazonaws.comとなっていました。

確認できれば変更ボタンをクリックします。

3.11 非暗号化DBインスタンスのエンドポイント変更

DBインスタンス識別子を変更します。
今回はtest-db-non-encryptedに変更します。

入力できたら、続行ボタンをクリックします。

変更のスケジュールは「すぐに適用」をチェックします。

設定できたらDBインスタンスを変更ボタンをクリックします。

3.12 非暗号化DBインスタンスのエンドポイント変更確認

少し時間が経ったあと、DB識別子とエンドポイントが変更されていることを確認します。

3.13 暗号化DBインスタンスのエンドポイント確認

マネジメントコンソールから、RDS→データベース→暗号化DBインスタンスのサービス画面にアクセスします。
接続とセキュリティタブでエンドポイントを確認します。

今回はtest-db-2.12桁の英数文字列.ap-northeast-1.rds.amazonaws.comとなっていました。 確認できれば変更ボタンをクリックします。

3.14 非暗号化DBインスタンスのエンドポイント変更

DBインスタンス識別子を元々非暗号化DBインスタンスに元々設定されていたものに変更します。
今回はtest-dbに変更します。

入力できたら、続行ボタンをクリックします。

変更のスケジュールは「すぐに適用」にチェックします。

設定できたらDBインスタンスを変更ボタンをクリックします。

3.15 暗号化DBインスタンスのエンドポイント変更確認

少し時間が経ったあと、DB識別子とエンドポイントが変更され、暗号化インスタンスのエンドポイントが元々の非暗号化インスタンスのエンドポイントと同一のものとなっていることを確認します。

ストレージ暗号化も有効になっていることを確認します。

以上で、非暗号化インスタンスの暗号化インスタンスへの変更が完了しました。
動作確認して問題なければ、元々の非暗号化インスタンスは削除して構いません。

なお、変更後すぐにクライアントからエンドポイントにアクセスした時、 非暗号化インスタンスに接続されてしまうことがあります。
これはクライアント側でキャッシュが残っているためです。
このような場合にはキャッシュをクリアしてから再度接続を試してみてください。

最後に

今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。

コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!

最後までお読みいただきありがとうございました!どなたかのお役に立てれば幸いです。

以上、トクヤマシュンでした。

クラスメソッドメンバーズをご契約の皆さまに

AWS Security Hub 「基礎セキュリティのベストプラクティス」の各チェック項目(コントロール)に対する弊社としての推奨対応やコメントを記載しているClassmethod Cloud Guidebookを提供しています。 クラスメソッドメンバーズポータルの「お役立ち情報」→「組織的な AWS 活用のためのノウハウ」からご参照ください。