公開日:2023年10月5日最終更新日: 2023年10月5日
AWSで利用する機会の多いサービスとして「RDS」があげられます。データベースに関するサービスであるため、Webアプリケーションなどには必須でしょう。データベースを利用しないアプリケーションの方が、減っている時代に突入しています。
ただ、実際にRDSを利用しようとしても「設定項目が多く何から設定すれば良いのかわからない」という状況になるはずです。今回は、これからRDSを利用するにあたって、セキュリティの観点から設定しておきたい事項を解説します。
目次 <Contents>
Amazon RDSとはどのようなサービスか
最初にAWSが提供するRDSとは、どのようなサービスであるのか、概要を理解するようにしていきましょう。
Amazon RDSの概要
RDSは、AWSで提供されるデータベースの中でも「リレーショナルデータベース」に分類され、特に利用される機会の多いものです。6種類のデータベースエンジンから選択できるようになっていて、以下に対応しています。
-
- Amazon Aurora
-
- MariaDB
-
- MySQL
-
- Microsoft SQL Server
-
- PostgreSQL
-
- Oracle
一般的に必要とされるものはカバーされているといえるでしょう。
マネージドサービスのデータベースであり、簡単に管理したり運用したりできることが特徴です。また、クラウドらしくスケーラビリティの変更が容易で、可用性の高めやすいデータベースでもあります。
Amazon RDSの主な機能
オンプレミスならば、自分で設定が必要な機能であっても、RDSでは最初から提供されているケースがあります。例えば、以下が主な機能です。
- 自動バックアップ:標準で7日間のバックアップがあり、万が一に備えられる
- 自動パッチ適用:自動的にパッチを適用でき、データベースエンジンのセキュリティを高められる
- 負荷分散:リードレプリカに対応しているため、負荷分散を実現できる
- 暗号化:データベースの内容を暗号化でき、流出しても影響を最小限に抑えられる
セキュリティの観点では、自動パッチ適用がRDSを利用する大きな魅力と考えられます。オンプレミスでデータベースを構築している場合、自分で計画的にパッチ適用にも対応する必要があるからです。また、設定は必要ですが、データベースを暗号化できることもセキュリティを高めるのに役立ちます。アプリケーションからの通信もTLS/SSLで暗号化できるため、高いセキュリティを担保できるのです。
RDSの利用者がセキュリティを高める6つのポイント
これからRDSを利用したいならば、最低限、以下のポイントを踏まえるようにしてください。適切に設定されていないと、セキュリティ上のリスクを抱えてしまいます。
パブリックアクセスを「なし」に設定
RDSの設定項目に「パブリックアクセス」があります。これは、世界中(パブリックネットワーク)からアクセスを受け付けるために、パブリックIPアドレスを割り当てるかどうかの設定です。基本的に、パブリックIPアドレスは必要ないと考えられるため「なし」の設定が望ましいでしょう。
ただ、この設定だけでRDSが世界中に解放されるわけではありません。セキュリティグループなど、他の設定を組み合わせて、アクセスできるかが決定されます。
セキュリティグループの適切な設定
AWSでは「どこからアクセス可能か」「どこへアクセス可能か」をセキュリティグループで制御しています。そのため、こちらを適切に設定していないと、攻撃者からデータベースへアクセスされるかもしれません。
これを防ぐために、適切なサーバーから必要なポートでのみアクセスできるように設定すべきです。例えば「Webアプリケーションサーバと1521ポートのみアクセスする」などが該当します。標準では、制限のないセキュリティグループが設定されるため、自分で修正しなければなりません。
ログのエクスポート
RDSでは、アクセスログやエラーログなどを一定期間のみ保存しています。ただ、この期間が過ぎるとローテーションが発生し、削除される仕組みです。そのため、RDSのログは意図的にエクスポートすることが望ましいでしょう。「追加設定」からAmazon CloudWatch Logsにログをエクスポートしておけば、ローテーションされても後から確認できます。
ログが消えてしまうと、不正アクセスなどが発生した際に、状況を把握できないかもしれません。また、システムエラーが発生した際には、原因を調査できないことがありえます。これら万が一の状況に備えて、エクスポートしておくことに、越したことはありません。
ただ、大量のログをエクスポートし続けると、Amazon CloudWatch Logsへ永遠に保存されてしまいます。不要なデータが増えてきたならば、意図的に削除することも意識しましょう。
ストレージの暗号化
事前にオプションを設定しておくと、RDSの暗号化が可能です。暗号化しておけば、万が一データが流出しても、内容を悪用される可能性が下がります。特別な理由がなければ、暗号化するようにしましょう。
なお、すでに利用しているRDSを、後から暗号化する作業は非常に複雑です。そのため、RDSの導入する際の作業として、暗号化も済ませておかなければなりません。
また、データベースの暗号化について「パフォーマンスに影響しないのか」と心配する人がいるかもしれません。確かに、パフォーマンスで若干の影響はありますが、最小限に抑える仕組みが採用されています。そのため、暗号化していない時のリスクを鑑みると、十分に許容できる範囲内です。
アクセスユーザの制限
RDSへとアクセスできるユーザを制限するようにしましょう。AWSで複数のユーザを作成するならば、必要な人だけにRDSの操作権限を付与すべきです。全員にRDSへのアクセス権限を付与すると、予期せぬセキュリティトラブルが発生する可能性があります。
アクセスユーザを制限するのであれば、該当するユーザのIAMロール・ポリシーを適切に設定しなければなりません。RDS全般の操作を認めるのであれば、以下を付与するようにしましょう。
-
- rds:Describe
-
- rds:ListTagsForResource
-
- rds:CreateDBInstance
-
- rds:CreateDBSubnetGroup
これらを「Allow」に含めておけば、管理コンソールやGUIからRDSにアクセスできるため、各種操作が可能です。また、ピンポイントにこれらのアカウントが流出しない限りは、不正に取得したユーザを利用してRDSへとアクセスされることもありません。
なお、さらに安全性を高めたいと考えるならば、ユーザに多要素認証(MFA)を設定するようにすべきです。例えば、以下のような選択肢があります。
-
- 認証アプリケーション
-
- セキュリティキー
-
- ハードウェアOTPトークン
これらを活用して多要素認証を実現することで、セキュリティを高めることが可能です。結果、RDSへの不正アクセスがより難しくなり、データの保護などRDSのセキュリティを高めることにもつながります。
AWS Secrets Managerでの管理
AWS Secrets Managerは、AWSで利用するIDやパスワードなどを、一元管理できるマネージドサービスです。こちらでRDSに関する情報を管理することで、セキュリティを高めつつ効率的なデータベース運用を実現できます。利用時には以下を設定しましょう。
例えば、パスワードは安全性を高めるために、定期的な変更が望ましいとされています。ただ、データベースへのアクセスパスワードは、アプリケーションにハードコーティングされている場合が大半です。つまり、基本的には気軽に変更できるものではありません。
しかし、パスワードをAWS Secrets Managerで管理すると、アプリケーションから特定のAPIを呼び出すことでパスワードを取得して接続できるようになります。ハードコーティングの必要がなくなり、セキュリティを重視したRDSの運用ができるのです。
RDSの設定が終わったあとはAWS Security Hubで評価
上記で解説するような設定が終わったならば、AWS Security Hubで状況を評価することをおすすめします。AWS Security Hubは、AWSのセキュリティ設定がベストプラクティスに沿っているか評価してくれるサービスです。何かしら、RDSを含めて設定上の問題があると、それを指摘してくれます。EC2なども同時に利用するケースは多く、それらを含めてセキュリティを評価してもらいましょう。
例として、テスト用のアカウントでセキュリティ設定を評価すると、以下のような結果でした。テスト環境であり、適切にセキュリティ設定していない部分があるため、評価が悪くなっています。(※一部、画像を加工しています。)
また、AWS Security Hubにはダッシュボードがあり「どのような問題が生じているか」や「どのようなセキュリティリスク(設定誤り)」があるかなどを示してくれます。「Hub」にふさわしく、セキュリティ状況を一元管理できるため、その点でも評価してもらうべきです。
ただ、AWS Security Hubを活用する際にはコストが発生します。RDS以外にも多くのサービスを利用していると、評価コストが高額になりかねません。セキュリティ面での費用対効果を考えてから、利用することも大切です。
まとめ
AWSでRDSを利用する際のセキュリティについて解説しました。標準状態では十分なセキュリティが提供されていないため、自分自身でセキュリティ設定することが求められます。AWSが推奨している設定項目も数多くあるため、特別な理由がない限りは推奨されている通りに設定しておきましょう。
ただ、今回紹介した内容は基本的な設定であり、必要に応じてさらなるセキュリティ設定が必要です。また、セキュリティ設定は抜け漏れなく対応することが大切で、不足があると効果が薄れてしまいます。AWSには、各種設定がベストプラクティスに沿っているか評価してくれるサービスがあるため、それらも活用しながらセキュリティを高めていきましょう。