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でCloudFrontを導入する際に注意する点

    AWS

    AWSでCloudFrontを導入する際に注意する点

    前回の記事でAWSでシステムを構築する際にはCloudFrontを利用…

  2. AWSコンソール用の安全なユーザーの作成方法

    AWS

    AWSコンソール用の安全なユーザーの作成方法

    AWSに最初にアカウントを作るとルートユーザーというものが作られます。…

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

    AWS

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

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

  4. AWS

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

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

  5. AWS

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

    今回はAWSを利用してPCI DSS準拠のシステムを構築す…

  6. AWS

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

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

最近の記事

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

    AWS

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

    AWSでRDSに安全にデータを保存するための5つのポイント
  3. AWSでS3の利用料を節約するためにやって置いた方がよいこと

    AWS

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

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

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