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. PCI DSSの12要件とAWSにおける対応方法

    AWS

    PCI DSSの12要件とAWSにおける対応方法

    今回は、AWSを使ってクレジットカード業界のセキュリティ基準であるPC…

  2. AWS

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

    今回は、AWSのS3(ストレージサービス)を安全に使うためのポイン…

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

    AWS

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

    AWSでファイルや画像などを配置する場所として利用する場所はS3ですが…

  4. AWS

    CloudFrontでLambda@Edgeを本番運用してわかった注意点

    CloudFrontでLambda@Edgeを一年間運用しまして、気づ…

  5. AWSで安全なネットワーク設計を行うポイント

    AWS

    AWSで安全なネットワーク設計を行うポイント

    今回は、AWSにおいて安全なネットワーク設計を行いポイントについて…

  6. PCI DSS準拠するためにAWSのセキュリティグループを使うためのポイント

    AWS

    PCI DSS準拠するためにAWSのセキュリティグループを使うためのポイント

    AWSでセキュリティグループはEC2やRDS(リレーショナルデータベー…

最近の記事

  1. PCI DSSの12要件とAWSにおける対応方法

    AWS

    PCI DSSの12要件とAWSにおける対応方法
  2. PCI DSS準拠するためにAWSのセキュリティグループを使うためのポイント

    AWS

    PCI DSS準拠するためにAWSのセキュリティグループを使うためのポイント
  3. AWS

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

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

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