すべての接続元アドレスを許可する従来の DB セキュリティグループ

データベースへのアクセスを、必要なアプリケーションと管理者の接続元に限定してください。

説明

DB セキュリティグループですべての接続元を許可すると、業務上必要な範囲を超える接続を認める可能性があります。実際に到達できるかは、DB に関連付けたグループ、公開アクセス設定、ネットワーク経路によって異なります。接続できてもデータへのアクセス権限は与えられず、別途認証と権限が適用されます。

想定される影響

  • 不要な外部接続やパスワードの推測が増えるおそれがあります。
  • 脆弱なアカウントやサービスが侵害されると、データ漏えいやサービス障害につながる可能性があります。

対処方法

  • 全アドレスを許可する不要なルールを削除し、実際のアプリケーションと管理者の接続元だけを許可してください。
  • 現在の RDS には VPC セキュリティグループを使い、接続元と必要な DB ポートを制限してください。
  • 変更後、必要な接続が維持され、不要な接続が遮断されることを確認してください。

例

従来の DB Security Group の CIDR を比較する例です。この EC2-Classic リソースは Terraform AWS プロバイダー 5.0 で削除されたため、現在の環境では VPC セキュリティグループを使用してください。二つの例を同時に宣言しないでください。

変更前

hcl
resource "aws_db_security_group" "db_sg" {
  name = "rds_sg"

  ingress {
    cidr = "0.0.0.0/0"
  }
}

すべての IPv4 接続元アドレスを許可します。このルールだけでは、DB にインターネットから実際に到達できるかは決まりません。

変更後

hcl
resource "aws_db_security_group" "db_sg" {
  name = "rds_sg"

  ingress {
    cidr = "10.0.0.0/8"
  }
}

プライベートな 10.0.0.0/8 に絞っています。ただし、例の範囲は依然として非常に広いため、実際に承認されたクライアントのアドレスにさらに制限してください。

参考資料