MSK クラスターの暗号化設定の確認

MSK の暗号化の既定値と実際の通信設定を区別し、平文通信を許可しないようにしてください。

説明

Amazon MSK は保存データを常に暗号化します。作成時に KMS キーを指定しなければ AWS マネージドキーを使用します。既定ではクライアントとブローカー間の通信は TLS のみを許可し、ブローカー間の通信も暗号化します。EncryptionInfo の省略だけで、データが平文で保存・送信されるとは判断できません。

ただし、クライアント接続で PLAINTEXT や TLS_PLAINTEXT を許可したり、InCluster を無効にしたりすると、平文通信が可能になります。TLS の暗号化とは別に、クライアント認証、トピックの権限、ネットワークからのアクセスも制限してください。

想定される影響

平文通信の経路にアクセスできる攻撃者に、メッセージや機密情報を盗み見られたり改ざんされたりするおそれがあります。キーの無効化や必要な権限の削除は、保存データへのアクセスやサービスの運用を妨げる可能性があります。

対処方法

  • クライアントの TLS 接続を準備し、ClientBroker: TLS と InCluster: true を使用してください。正当なプロデューサーとコンシューマーの接続と権限を確認します。
  • 組織のキー管理要件に応じて既定のキーまたはカスタマーマネージドキーを選び、必要な権限を維持してください。
  • 既存クラスターでは変更セットを確認してください。CloudFormation で InCluster を変更すると置き換えが必要になるため、データの移行とクライアントの切り替えを計画します。

例

作成時の既定値と明示的な設定を比較します。サポートされている Kafka バージョン、異なる三つのアベイラビリティーゾーンのサブネット、適切なセキュリティグループを指定してください。クライアントの認証と権限は別途設定が必要です。

既定の暗号化設定

yaml
Parameters:
  KafkaVersion:
    Type: String
  BrokerSubnets:
    Type: List<AWS::EC2::Subnet::Id>
  BrokerSecurityGroups:
    Type: List<AWS::EC2::SecurityGroup::Id>
Resources:
  TestCluster:
    Type: AWS::MSK::Cluster
    Properties:
      ClusterName: ClusterWithAllProperties
      KafkaVersion: !Ref KafkaVersion
      NumberOfBrokerNodes: 3
      BrokerNodeGroupInfo:
        InstanceType: kafka.m5.large
        ClientSubnets: !Ref BrokerSubnets
        SecurityGroups: !Ref BrokerSecurityGroups

既定の保存時の暗号化と TLS 設定を使用します。この設定だけで平文通信が許可されているとは判断できません。

暗号化設定とキーの指定

yaml
Parameters:
  KafkaVersion:
    Type: String
  BrokerSubnets:
    Type: List<AWS::EC2::Subnet::Id>
  BrokerSecurityGroups:
    Type: List<AWS::EC2::SecurityGroup::Id>
  DataKeyArn:
    Type: String
Resources:
  TestCluster:
    Type: AWS::MSK::Cluster
    Properties:
      ClusterName: ClusterWithAllProperties
      KafkaVersion: !Ref KafkaVersion
      NumberOfBrokerNodes: 3
      EncryptionInfo:
        EncryptionAtRest:
          DataVolumeKMSKeyId: !Ref DataKeyArn
        EncryptionInTransit:
          ClientBroker: TLS
          InCluster: true
      BrokerNodeGroupInfo:
        InstanceType: kafka.m5.large
        ClientSubnets: !Ref BrokerSubnets
        SecurityGroups: !Ref BrokerSecurityGroups

通信設定と実際の KMS キー ARN を指定します。キーの権限を確認し、既存クラスターに適用する場合は置き換えの有無と切り替え手順を検討してください。

参考資料