Redshift の公開アクセス設定の確認

Redshift の公開アクセスの必要性を確認し、内部の分析処理には準備したプライベート接続を使用してください。

説明

Redshift の PubliclyAccessible: true は、パブリックネットワークからクラスターに接続できる設定です。実際の接続にはサブネット、経路、セキュリティグループが関係し、データベースの認証と権限も適用されます。このプロパティの既定値は false です。

公開接続が不要な分析環境には、プライベート接続を使用してください。

想定される影響

  • 到達可能なデータベースが、不要なログインや脆弱性を悪用する試行にさらされる可能性があります。
  • 漏えいした認証情報や過剰なデータ権限が重なると、分析データの漏えい・変更やサービス中断につながる可能性があります。

対処方法

  • クライアントと分析ツールのプライベートネットワーク・DNS 経路を先に用意し、その後に PubliclyAccessible: false を指定してください。
  • セキュリティグループを実際のクライアントとデータベースポートに限定し、サブネットとルーティングも確認してください。公開接続が必要な場合も送信元を最小限にしてください。
  • 変更後に必要なクエリとジョブの動作を確認し、TLS、認証、最小権限は別途検証してください。

例

同じクラスターの公開設定を比較します。対象リージョンで単一ノード構成に対応するノードタイプと、実際のクラスターサブネットグループ・VPC セキュリティグループを指定してください。管理者パスワードは Redshift が Secrets Manager で管理します。既存クラスターへ適用する際は、変更セットとクライアントの切り替えを確認してください。

変更前

yaml
Parameters:
  NodeType:
    Type: String
  ClusterSubnetGroupName:
    Type: String
  VpcSecurityGroupIds:
    Type: List<AWS::EC2::SecurityGroup::Id>
Resources:
  myCluster:
    Type: AWS::Redshift::Cluster
    Properties:
      PubliclyAccessible: true
      DBName: mydb
      MasterUsername: master
      ManageMasterPassword: true
      NodeType: !Ref NodeType
      ClusterType: single-node
      ClusterSubnetGroupName: !Ref ClusterSubnetGroupName
      VpcSecurityGroupIds: !Ref VpcSecurityGroupIds

公開アクセスを有効にしますが、全送信元にデータ読み取り権限を与えるわけではありません。実際のネットワークルール、認証、権限を確認してください。

変更後

yaml
Parameters:
  NodeType:
    Type: String
  ClusterSubnetGroupName:
    Type: String
  VpcSecurityGroupIds:
    Type: List<AWS::EC2::SecurityGroup::Id>
Resources:
  myCluster:
    Type: AWS::Redshift::Cluster
    Properties:
      PubliclyAccessible: false
      DBName: mydb
      MasterUsername: master
      ManageMasterPassword: true
      NodeType: !Ref NodeType
      ClusterType: single-node
      ClusterSubnetGroupName: !Ref ClusterSubnetGroupName
      VpcSecurityGroupIds: !Ref VpcSecurityGroupIds

公開アクセスを無効にします。必要なクライアントにはプライベート接続が必要で、データ権限も別途制限する必要があります。

参考資料