この記事は作者本人がAWS-SAAの学習を通じて、曖昧や覚えづらい部分をサービス単位でまとめたものです。
特に、概要だけではイメージがわきづらいので、できるだけユースケースを活用して理解しやすいようにしています。
教材はSHOEISHAのAWS教科書 AWS認定ソリューションアーキテクトアソシエイト テキスト&問題集を参考にしています。
Amazon RDSに関する曖昧な部分
Amazon RDSはリレーショナルデータベースのサービスです。
Amazon RDSで曖昧になりがちな部分は以下の通りです。(あくまでも私個人が曖昧であると感じた部分です)
- Amazon RDS Proxy
- 認証情報の格納場所
- Amazon RDSの暗号化
Amazon RDS Proxy
Amazon RDS Proxyは、Amazon RDS向けの高可用性フルマネージド型データベースプロキシです。
RDS Proxyは、関連付けられたAmazon RDSのDBインスタンスに対して、接続プールを形成します。
また、元のDBインスタンスに障害が発生した時には、別のDBインスタンスに自動的に接続するフェイルオーバー機能も備えています。
接続プールにより得られるメリット
接続プールとは、RDS ProxyとDBインスタンス間の多数の接続を同時に開いたままにしておく機能のことです。
これにより、アプリケーションからDBインスタンスに対する接続・切断時のCPUオーバーヘッドなどを削減することができます。
フェイルオーバー機能により得られるメリット
接続タイムアウトの回避や、接続の不足の解消などのデータベースへの接続・切断に起因するエラーの削減が可能です。
認証情報の格納場所
アプリケーションかAmazon RDSに接続するときの認証情報(アクセスキーID・シークレットアクセスキー)については、アプリケーションコードに埋め込んだ場合、情報漏洩につながる可能性があります。
認証情報は、パラメータストアもしくはAWS Secrets Managerで管理することが望ましいです。
-
パラメータストア
- パラメータストアは、AWS Systems Managerの一機能として提供されており、各種設定情報などを一元管理することができます。
-
AWS Secrets Manager
- ID/パスワードなどのシークレットを管理するためのサービスとして提供されています。
パラメータストアとAWS Secrets Managerの使い分け
-
AWS Secrets Manager
- 自動ローテーション: Secrets Managerは、データベースの認証情報を自動的にローテーションする機能を提供します。これにより、セキュリティが強化されます。
- 統合: Secrets Managerは、AWS Lambdaや他のAWSサービスと簡単に統合でき、シームレスな運用が可能です。
- アクセス制御: IAMポリシーを使用して、誰がどのシークレットにアクセスできるかを細かく制御できます。
-
AWS Systems Manager Parameter Store
- コスト: Parameter Storeは、基本的な使用において無料で利用できるため、コストを抑えたい場合に適しています。
- シンプルな管理: パラメータの管理がシンプルで、設定や取得が容易です。
- セキュリティ: パラメータは暗号化されて保存され、IAMポリシーでアクセス制御が可能です。
つまり、自動ローテーションが必要な場合はAWS Secrets Managerを、シークレットやシークレット以外のアプリケーションの設定情報などを無料で一元管理したい場合はパラメータストアを選択することが推奨されます。
Amazon RDSの暗号化
AWS KMSを使用することにより、Amazon RDSのDBインスタンスの暗号化が可能です。
また、暗号化されていないDBインスタンスのスナップショットから、暗号化されたスナップショット及びDBインスタンスを作成する方法については以下の手順を実施します。
- スナップショットをコピーし、コピーするときに暗号を有効か、AWS KMSを指定
- 暗号化されたスナップショットから暗号化されたDBインスタンスを復元
まとめ
本記事では、以下についてまとめました。
- Amazon RDS Proxy
- 認証情報の格納場所
- Amazon RDSの暗号化