公開アクセスが可能な AWS MSK ブローカー

公開 Kafka 接続の必要性を確認し、クライアントのアクセスを制限してください。

説明

MSK の公開アクセスは、インターネット経由で Kafka ブローカーへ接続する経路を提供します。公開エンドポイントがメッセージストリームへの無制限なアクセスを意味するわけではありませんが、外部からの接続経路が増えます。実際のアクセスには、ネットワークの許可とサポートされる認証・権限設定が必要です。

想定される影響

  • アクセスが不要な外部クライアントから接続を試行される可能性があります。
  • 認証情報や権限の管理が不適切だと、ストリームデータの漏えい・改ざんや処理停止につながるおそれがあります。

対処方法

  • 公開接続が不要なら public_access.type を DISABLED にしてください。先にクライアントのプライベート経路と適切なブートストラップブローカーアドレスを準備してください。
  • 公開接続が必要なら、セキュリティグループで承認済みの接続元だけを許可し、認証、TLS、必要な Kafka 権限を設定してください。
  • 変更後、実際のクライアント接続と不要なアクセスの拒否をテストしてください。公開アクセスの無効化だけでは、サブネットの変更やプライベート経路の作成は行われません。

例

既存クラスターの接続設定を比較する抜粋です。MSK の公開アクセスはクラスター作成後に有効化し、パブリックサブネット、インターネットゲートウェイ、TLS、認証などの前提条件を満たす必要があります。kafka_version にサポート対象のバージョンを渡し、省略したブローカー・サブネット・セキュリティ設定は別途構成してください。

変更前

hcl
resource "aws_msk_cluster" "msk_cluster" {
  cluster_name           = "example"
  kafka_version          = var.kafka_version
  number_of_broker_nodes = 3

  broker_node_group_info {
    connectivity_info {
      public_access {
        type = "SERVICE_PROVIDED_EIPS"
      }
    }
  }
}

SERVICE_PROVIDED_EIPS は公開接続を要求します。利用前に認証と制限した接続元からのアクセスを確認してください。

変更後

hcl
resource "aws_msk_cluster" "msk_cluster" {
  cluster_name           = "example"
  kafka_version          = var.kafka_version
  number_of_broker_nodes = 3

  broker_node_group_info {
    connectivity_info {
      public_access {
        type = "DISABLED"
      }
    }
  }
}

公開接続を無効にします。クライアントは、準備したプライベート経路と対応するブートストラップアドレスを使用してください。

参考資料