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

공개 접근을 비활성화합니다. 필요한 클라이언트가 사설 경로로 연결할 수 있어야 하며 데이터 권한은 별도로 제한해야 합니다.

참조