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