IAMデータベース認証が無効なNeptuneクラスター

NeptuneのデータリクエストをIAMで認証し、必要なクライアントだけが接続できるようにしてください。

説明

NeptuneのIAMデータベース認証を有効にすると、データリクエストにAWS Signature Version 4(SigV4)の署名が必要となり、IAMポリシーでデータアクセスを管理します。無効な場合、このIAMによるリクエストの認証と権限確認は適用されません。

ネットワークに接続できるだけでデータにアクセスできないよう、認証とネットワーク制限を併用してください。StorageEncryptedは保存データを保護する設定であり、リクエストを認証するものではありません。

想定される影響

  • データへのアクセスが不要でも接続可能なクライアントが、データを読み取ったり変更したりするリスクが高まる可能性があります。
  • 接続元のシステムが侵害されると、IAMによる制限がないデータアクセス経路が悪用される可能性があります。

対処方法

  • クライアントのSigV4署名と必要なneptune-db:のデータ権限を準備してから、IamAuthEnabled: trueを設定してください。管理APIとデータの権限は区別してください。
  • IAM認証の変更ではエンジンが再起動し、既存接続が終了します。作業時間を計画してください。
  • セキュリティグループと接続経路を必要なクライアントに限定し、正規のリクエストと権限のないリクエストの拒否を確認してください。

例

同じクラスターの認証設定を比較する例です。DBインスタンス、サブネット、セキュリティグループ、クライアントは別途設定してください。

変更前

yaml
Resources:
  NeptuneDBCluster:
    Type: AWS::Neptune::DBCluster
    Properties:
      IamAuthEnabled: false
      StorageEncrypted: true

保存時の暗号化は有効ですが、IAMデータベース認証は無効です。

変更後

yaml
Resources:
  NeptuneDBCluster:
    Type: AWS::Neptune::DBCluster
    Properties:
      IamAuthEnabled: true
      StorageEncrypted: true

IAM認証を有効にします。適用前にクライアントのリクエスト署名とデータ権限を準備してください。

参考資料