접근 범위가 넓은 보안 그룹

보안 그룹의 인바운드 주소 범위를 실제 접속이 필요한 클라이언트로 제한하세요.

설명

보안 그룹에서 넓은 CIDR 대역을 허용하면 서비스나 데이터베이스에 접속할 필요가 없는 시스템까지 허용 범위에 포함될 수 있습니다. 공개 주소뿐 아니라 내부 네트워크에서도 업무에 필요한 출발지만 지정하세요.

프리픽스 길이만으로 적절한 접근 범위를 정할 수는 없습니다. 실제 클라이언트, 프로토콜, 포트와 연결 경로를 함께 검토해야 합니다. 네트워크 연결이 허용되어도 데이터베이스 인증과 권한은 별도로 적용됩니다.

잠재적 영향

  • 연결 가능한 시스템이 많아져 불필요한 접속 시도와 취약점 악용 기회가 늘어날 수 있습니다.
  • 허용 대역의 다른 시스템이 침해되면 이를 통한 내부 접근 시도가 가능해질 수 있습니다.

해결 방법

  • EC2 규칙의 CidrIp·CidrIpv6를 필요한 주소로 줄이고 포트와 프로토콜도 제한하세요. 지원되는 연결에서는 애플리케이션 보안 그룹 참조를 검토하세요.
  • 기존 RDS DB 보안 그룹의 CIDRIP를 검토할 때도 실제 클라이언트를 기준으로 판단하세요. 현재 VPC의 RDS에는 VPC 보안 그룹을 사용하세요.
  • 변경 전에 필요한 통신을 확인하고, 적용 후 허용된 클라이언트의 연결과 그 밖의 연결 차단을 시험하세요.

예시

현재 VPC 보안 그룹을 사용하는 MySQL 예시입니다. 같은 VPC의 DB 서브넷 그룹, 지원되는 DB 클래스와 관리자 이름을 제공하세요. 비밀번호는 RDS가 Secrets Manager에서 관리합니다. 예제 주소는 실제 승인된 클라이언트 주소로 바꾸세요.

변경 전

yaml
Parameters:
  VpcId:
    Type: AWS::EC2::VPC::Id
  DBSubnetGroupName:
    Type: String
  DBInstanceClass:
    Type: String
  MasterUsername:
    Type: String
Resources:
  DBinstance1:
    Type: AWS::RDS::DBInstance
    Properties:
      VPCSecurityGroups:
        - Ref: DbSecurity
      AllocatedStorage: "20"
      DBInstanceClass: !Ref DBInstanceClass
      DBSubnetGroupName: !Ref DBSubnetGroupName
      Engine: mysql
      MasterUsername: !Ref MasterUsername
      ManageMasterUserPassword: true
    DeletionPolicy: Snapshot
    UpdateReplacePolicy: Snapshot
  DbSecurity:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: MySQL access
      VpcId: !Ref VpcId
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 3306
          ToPort: 3306
          CidrIp: 10.0.0.0/23

MySQL 포트 3306에 내부 /23 대역을 허용합니다. 대역의 모든 주소가 업무에 필요한지 확인해야 합니다.

변경 후

yaml
Parameters:
  VpcId:
    Type: AWS::EC2::VPC::Id
  DBSubnetGroupName:
    Type: String
  DBInstanceClass:
    Type: String
  MasterUsername:
    Type: String
Resources:
  DBinstance1:
    Type: AWS::RDS::DBInstance
    Properties:
      VPCSecurityGroups:
        - Ref: DbSecurity
      AllocatedStorage: "20"
      DBInstanceClass: !Ref DBInstanceClass
      DBSubnetGroupName: !Ref DBSubnetGroupName
      Engine: mysql
      MasterUsername: !Ref MasterUsername
      ManageMasterUserPassword: true
    DeletionPolicy: Snapshot
    UpdateReplacePolicy: Snapshot
  DbSecurity:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: MySQL access
      VpcId: !Ref VpcId
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 3306
          ToPort: 3306
          CidrIp: 10.0.1.10/32

하나의 IPv4 주소로 줄입니다. 이 주소가 승인된 클라이언트의 실제 주소인지 확인하고 다른 보안 그룹의 추가 허용 규칙도 검토하세요.

참조