AWS

AWSでRDSに安全にデータを保存するための5つのポイント

今回はAWSのRDSにデータを安全に保存する方法についてお話したいと思います。

RDS(Relational Database Service)はAWSのデータベースサービスです。自社のデータセンターで安定したデータベースの環境を作ろうと思った場合、ハードウェアのセットアップや、定期的なバックアップの取得、負荷が高くなった場合のスケールアップ、ハードウェア故障があった場合の冗長化、定期的なパッチの適用などしなくてはいけないことがたくさんあります。RDSを使うことで、画面を数回クリックするだけで、そういったことが簡単に導入できてしまいます。

しかし、その中でもクレジットカード情報を保存する場合や、個人情報を取り扱うシステムなどでは、安全にデータを保存する必要があります。そのようなシステムをAWS上で構築する場合にまず選択肢になるのは下記の3つかと思います。

  • RDS(AWSのリレーショナルデータベースのサービス)
  • S3(AWSのストレージサービス)
  • DynamoDB(AWSのNo SQLサービス)

今回は、その中でもRDSに限定して安全にデータを保存するために注意する4つのポイントについてお話したいと思います。ポイントは下記の4つです

  1. パブリックアクセスを無効にする
  2. DBインスタンスの暗号化を有効にする
  3. KMSのキーローテーションを1年に設定する
  4. KMSのキーに対するアクセス権限を設定する
  5. データ保存前に暗号化する

パブリックアクセスを無効にする

パブリックアクセスを有効にしてしまうと、インターネットからアクセス可能になってしまい、外部からの攻撃を受けてしまう可能性がありますので無効にします。デフォルトで無効になっていますので、有効にしません。また、RDSを配置するサブネットについてもインターネットにアクセスできる必要はありませんので、VPC内にのみルーティングが可能になるようにします。

DBインスタンスの暗号化を有効にする

RDSのインスタンスをストーレジレベルで暗号化するオプションを有効にします。AWSにはKMS(Key Management Service)というサービスがあります。これを使うことで、データの暗号化/復号用の鍵をAWS上で安全に管理することができます。RDSはこのKMSと連携することで、データベースファイルの暗号化を有効にすることができます。注意点として、データベースのテーブル内の情報は暗号化されていないため、データベースユーザーのアカウントが漏えいした場合、攻撃者は暗号化されていないデータを見ることができてしまいます。暗号化に設定するKMSは、最初からリージョンに1つAWSで用意されている標準のキーではなく、カスタマーマスターキーを作成して使用します。その理由は、カスタマーマースターキーでないと、次に説明するキーローテーションやキーポリシーが設定できないためです。キーはこのRDSの用途のみに専用で作成した方がいいです。同じキーを他の用途にも再利用してしまうと、それだけ漏えいした際の被害が大きくなるからです。

Amazon RDS リソースの暗号化

KMSのキーローテーションを1年に設定する

DBインスタンスの暗号化に設定したKMSでカスタマーマスターキーを使用した場合、キーローテーションが設定できますので、一年に設定します

カスタマーマスターキーをローテーションする

そうすると、一年後に自動的にキーが更新されます。KMSのキーローテーションは古いキーもAWSの内部的には保存されており、古いキーで暗号化されたデータの複合には古いキーが使われ、新しいデータの複合から新しいキーが使われますので、ローテーション時にデータが複合できなくなるなどの不具合はおこりません。PCI DSSの要件3.6でもキーをローテーションすることが求められており、一年でローテーションしていれば問題ありません。

KMSのキーに対するアクセス権限を設定する

暗号化に使用したKMSに対するアクセス権げを適切に設定し、最小限の人がアクセスできるようにします。具体的にはキー管理者とキーのユーザーを設定します。キーユーザーはアプリケーションを配置したEC2インスタンスに設定されたIAMロールからのみアクセス可能となるように設定します

KMSのアクセス許可の設定

データ保存前に暗号化する

先ほども述べた通り、RDSに備わっている暗号化だけではデーターベースアカウントが乗っ取られた場合に生のデータが見えてしまうという心配があります。そのため、万全を期すのであれば、データベースにアクセスするアプリケーションで、保存前に暗号化して、保存した方が良いです。この場合には、暗号化された状態でテーブルにデータが保存されます。

RDS以外の選択肢

今回はRDSに安全にデータを保存する方法について説明しました。AWSでデータを保存する場合は、RDSかS3が選択肢として最初に上がると思います。次回は、S3に安全にデータを保存する方法について説明したいと思います。

関連記事

  1. AWS

    AWSでEC2インスタンスを安全に使うための3つの注意点

    今回はAWSでEC2インスタンスを起動した際に、安全に使うために行った…

  2. Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

    AWS

    Amazon Linux2でOSS版tripwireを使って改ざん検知する方法

    改ざん検知はPCI DSSなどセキュリティを強化する際には、必ず必要に…

  3. AWS

    AWSでコンプライアンスのための監査ログを取得する方法

    PCI DSSやIT内部統制などのコンプライアンスの観点でAWS上で監…

  4. AWS

    AWSでCloudFrontを使った方が良い理由

    今回はAWSでCloudFrontを使用する際に、設定しておいた方が良…

  5. AWS

    AWSでOSの脆弱性対策をする方法

    今回はAWSで作成したEC2インスタンスのOSの脆弱性対策をする方…

  6. AWS

    CloudFormationを効果的に使うための6つのルール

    あなたはAWSでEC2を作成する時にAWSコンソールから作っていますか…

最近の記事

  1. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

    AWSでS3の利用料を節約するためにやって置いた方がよいこと
  2. AWS

    AWSを利用してPCI DSS準拠のシステムを構築する3つのメリット
  3. AWS

    AWSで大規模障害発生時に被害を最小限にする方法
  4. AWS

    AWSでS3を安全に使うための2つのポイント
  5. PCI DSS

    PCI DSSに準拠するためにまず最初にやるきべこと
PAGE TOP