提題の件について、設計書を書く上で現時点での仕様を整理する必要があったので、まとめた結果を記載しておく。
※調査にあたり、以下の記事を参考にさせていただきました。
整理内容
1. CA証明書
Aurora
- RDSやAuroraはサーバー証明書の署名に独自のCA証明書を使っているため、TLS接続時やIAM認証時にはこれらのCA証明書のダウンロードと指定が必要。
- なお、CA証明書は40年/100年ものが使用可能となっている。Aurora MySQL 2.x(MySQL 5.7互換)や3.x(同 8.0互換)では、デフォルトのrds-ca-2019(来年には切れるので非推奨)、rds-ca-rsa2048-g1のみが選択可能な模様。
RDS Proxy
- RDS ProxyはACMサーバー証明書を使っている。こちらは一般的な証明書ストアに含まれるCA証明書を使っているので、TLS接続時にもクライアント側で独自CA証明書のダウンロードや指定は必要ない。
2. TLS接続
Aurora
- Aurora接続にTLS接続は必須ではないが、IAM認証時は「CA証明書」が必要になる(この場合でもTLS接続は必須ではない)。
- TLS1.3はAuroraではまだサポートされていない。
RDS Proxy
- RDS ProxyでのTLS接続は必須ではないが、IAM認証時は「TLS接続」が必須となる(この場合でもCA証明書のダウンロードは不要だが、ACMのCA証明書が暗黙的に使われている)。
- TLS1.3はRDS Proxyではまだサポートされていない。
3. IAM認証
Aurora
- AuroraのIAM認証はネイティブ認証と併用可能。
RDS Proxy
- RDS ProxyはIAM認証かネイティブ認証かの二者択一。
- IAM認証の場合、DB側はネイティブ認証必須。ネイティブ認証の場合は、DB側はIAM認証(ネイティブ認証併用)可。いずれの場合も、Secrets Managerにネイティブ認証用のパスワードが格納され、RDS Proxy→データベース間はそれを使ってネイティブ認証する。
なお参考までに、アプリケーションからAuroraへの接続については、スロットリング回避のため、IAM認証ではなくネイティブ認証を用いるのがよいと思われる。
IAM認証は原則として「人による認証」で利用するのが吉。