説明
データベースとクライアントが TLS なしで接続すると、認証情報やクエリデータが平文で送信される場合があります。RDS の SSL 機能を有効にすることと、すべてのクライアントが暗号化された接続を使うことは、別々に確認する必要があります。
想定される影響
- 通信経路を観測できる攻撃者に、データや認証情報が漏えいするおそれがあります。
- サーバー証明書の検証が不十分だと、誤ったサーバーに接続するリスクがあります。
対処方法
対応する RDS エンジンとバージョンで ssl_action = "Open" を設定してください。クライアントに TLS を要求させ、正しい CA とホスト名でサーバー証明書を検証してください。必要に応じてエンジン側の TLS 強制も設定し、実際の接続が暗号化されていることを確認してください。
例
RDS MySQL の SSL 機能を比較する抜粋です。対応するバージョンとインスタンス仕様を指定し、ネットワークやアカウントは別途構成してください。
変更前
hcl
resource "alicloud_db_instance" "default" {
engine = "MySQL"
engine_version = var.mysql_version
instance_type = var.db_instance_type
instance_storage = var.db_instance_storage
ssl_action = "Close"
}
変更後
hcl
resource "alicloud_db_instance" "default" {
engine = "MySQL"
engine_version = var.mysql_version
instance_type = var.db_instance_type
instance_storage = var.db_instance_storage
ssl_action = "Open"
}
変更後は SSL 機能を有効にします。既存の接続すべてが自動的に TLS に切り替わると考えず、クライアントとエンジンの接続要件を確認してください。