公開アクセスが可能な AWS Neptune クラスターインスタンス

公開 Neptune 接続の必要性を確認し、ネットワークと IAM 権限を制限してください。

説明

Neptune の公開エンドポイントは、グラフデータベースへのインターネット経由の接続経路を提供します。公開アクセスには IAM 認証が必要で、クラスターのセキュリティグループとネットワーク経路も接続を制限します。公開エンドポイントだけで匿名のデータアクセスが許可されるわけではありません。

想定される影響

  • 不要な外部接続試行や公開経路が増える可能性があります。
  • IAM 認証情報の侵害や過剰な権限によって、グラフデータの漏えい・改ざんやサービス停止が起こるおそれがあります。

対処方法

  • 公開接続が不要なら、クライアントのプライベート接続を準備してから各対象インスタンスに publicly_accessible = false を設定してください。
  • クラスターのセキュリティグループで必要なクライアントと DB ポートだけを許可し、IAM のデータアクセス権限を最小限にしてください。
  • writer、reader、フェイルオーバー後に使うエンドポイントを確認し、必要な接続が成功して不要なアクセスが遮断されることをテストしてください。

例

インスタンス設定の抜粋です。参照クラスターと一致するサブネットグループを別途構成し、インスタンスクラスが対象リージョン・エンジンでサポートされることを確認してください。公開エンドポイントには Neptune 1.4.6.x 以降、IAM 認証、適切な公開ルーティングが必要です。

変更前

hcl
resource "aws_neptune_cluster_instance" "neptune_instance" {
  cluster_identifier  = aws_neptune_cluster.default.id
  engine              = "neptune"
  instance_class      = "db.r4.large"
  publicly_accessible = true
}

このインスタンスの公開アクセスを要求します。クラスターの IAM 認証とセキュリティグループによる制限も必要です。

変更後

hcl
resource "aws_neptune_cluster_instance" "neptune_instance" {
  cluster_identifier  = aws_neptune_cluster.default.id
  engine              = "neptune"
  instance_class      = "db.r4.large"
  publicly_accessible = false
}

このインスタンスの公開アクセスを無効にします。同じクラスター内の他のインスタンスと実際のプライベート接続も確認してください。

参考資料