背景・目的
Amazon Aurora PostgreSQLでのセキュリティについて整理します。
まとめ
下記に特徴を整理します。
| 特徴 | 説明 |
|---|---|
| Auroraのセキュリティ | 複数のレイヤー(IAM、ネットワーク、DB権限、認証方式など)で管理できる |
| RDS 管理アクション(クラスター/インスタンス操作) | IAMで制御される |
| ネットワーク | Amazon VPC 内に作成する |
| VPC セキュリティグループ | DB インスタンスの エンドポイントとポートへの接続元(デバイス/EC2)を制御 できる |
| 通信 | SSLが可能 |
| VPCテナンシー | サポートされる VPC テナンシー(default / dedicated) は、使用する DB インスタンスクラス に依存する |
| データベース権限管理 | CREATE ROLE、ALTER ROLE、GRANT、REVOKE などで行う |
概要
下記のドキュメントを基に整理します。
- Aurora PostgreSQL のセキュリティは、複数のレイヤー(IAM、ネットワーク、DB権限、認証方式など)で管理できる
- Aurora PostgreSQL の RDS 管理アクション(クラスター/インスタンス操作)は AWS Identity and Access Management(IAM) により制御される
- Aurora DB クラスターは Amazon VPC 内に作成する
- VPC セキュリティグループにより、DB インスタンスの エンドポイントとポートへの接続元(デバイス/EC2)を制御 できる
- DB への通信は SSL を使用できる
- サポートされる VPC テナンシー(default / dedicated) は、使用する DB インスタンスクラス に依存する
- default テナンシー:共有ハードウェア上で実行される
- dedicated テナンシー:専用ハードウェア上で実行される
- バーストパフォーマンスクラス(db.t3、db.t4g) は default テナンシーのみ をサポートする
- 上記以外の Aurora PostgreSQL インスタンスクラスは default / dedicated の両方 をサポートする
- Aurora PostgreSQL の データベース権限管理 は、スタンドアロン PostgreSQL と同様にCREATE ROLE、ALTER ROLE、GRANT、REVOKE などで行う
- PostgreSQL では ロール によって権限を管理する
- rds_superuser ロール は Aurora PostgreSQL で最も高い権限を持つ
- rds_superuser は 自動作成 され、クラスター作成ユーザー(デフォルト postgres)に付与される
- Aurora PostgreSQL バージョン 10 以降(10, 11, 12, 13, 14 など) では SCRAM がサポートされている
- SCRAM は MD5 より安全 であり、使用が推奨されている
- データベースユーザーパスワードは MD5 から SCRAM に移行可能 である
SSL/TLS での Aurora PostgreSQL データの保護
- Amazon RDS では、Aurora PostgreSQL DB クラスターの Secure Socket Layer (SSL) 暗号化と Transport Layer Security (TLS) 暗号化をサポートしている
- SSL/TLS を使用して、アプリケーションと Aurora PostgreSQL DB クラスター間の接続を暗号化 できる
- Aurora PostgreSQL DB クラスターへのすべての接続に SSL/TLS を強制 することができる
- Aurora PostgreSQL は TLS 1.1 および TLS 1.2 をサポートしている
- 暗号化された接続には TLS 1.2 の使用が推奨 されている
- TLS 1.3 は以下の Aurora PostgreSQL バージョンからサポートされている
- 15.3 以降のすべての 15 系
- 14.8 以降の 14 系
- 13.11 以降の 13 系
- 12.15 以降の 12 系
- 11.20 以降の 11 系
- Aurora PostgreSQL の SSL/TLS サポートは すべての AWS リージョンで利用可能 である
- DB クラスター作成時に、Amazon RDS により SSL/TLS 証明書が自動作成 される
- SSL/TLS 証明書認証を有効にすると、証明書の 共通名(CN)に DB クラスターのエンドポイントが含まれる
- なりすまし攻撃(impersonation attack)から保護するため
考察
今回、PostgreSQLでのセキュリティについて整理しました。次回以降も継続的に調べていきます。
参考