説明
Neptune の IAM データベース認証を有効にすると、リクエストに AWS Signature Version 4(SigV4)の署名が必要になり、IAM ポリシーでデータアクセス権限を管理します。無効の場合、これらの IAM によるリクエスト認証と権限確認は適用されません。
ネットワークに接続できるだけでデータ操作が許可されないよう、認証とネットワーク制限を併せて構成する必要があります。保存時の暗号化は、リクエスト認証の代わりにはなりません。
想定される影響
- データアクセスが不要なクライアントでも、Neptune に接続できるとデータを読み取ったり変更したりできるおそれがあります。
- 内部システムが侵害されると、IAM による制限のないデータアクセス経路が悪用される可能性があります。
対処方法
- クライアントの SigV4 署名と必要なデータアクセス権限を準備し、
iam_database_authentication_enabled = trueを設定してください。 - 認証設定を変更するとエンジンが再起動し、既存の接続が終了するため、メンテナンスを計画してください。
- セキュリティグループと接続経路を必要なクライアントに限定し、正規のリクエストが成功して権限のないリクエストが拒否されることを確認してください。
例
同じクラスターの認証設定を比較する抜粋です。DB インスタンス、サブネット、セキュリティグループ、クライアント設定は別途構成する必要があります。
変更前
hcl
resource "aws_neptune_cluster" "neptune_cluster" {
cluster_identifier = "neptune-cluster-demo"
engine = "neptune"
storage_encrypted = true
iam_database_authentication_enabled = false
}
保存時の暗号化は有効ですが、IAM データベース認証は無効です。
変更後
hcl
resource "aws_neptune_cluster" "neptune_cluster" {
cluster_identifier = "neptune-cluster-demo"
engine = "neptune"
storage_encrypted = true
iam_database_authentication_enabled = true
}
IAM 認証を有効にします。適用前に、クライアントのリクエスト署名とデータアクセス権限を準備する必要があります。