모든 IPv4 주소를 허용하는 보안 그룹 규칙

모든 IPv4 주소를 허용하는 보안 그룹 규칙은 연결 가능한 리소스에 대한 불필요한 접근 시도를 허용할 수 있습니다.

설명

Crossplane의 SecurityGroup에서 ipRanges.cidrIp를 0.0.0.0/0으로 설정하면 지정한 포트와 프로토콜에 대해 모든 IPv4 주소를 소스로 허용합니다. 실제 인터넷 접근 가능 여부는 보안 그룹이 연결된 리소스, 공개 주소와 라우팅 등에도 달려 있습니다. 보안 그룹 자체가 공개 인터페이스를 만들거나 데이터베이스 인증을 해제하지는 않습니다.

데이터베이스 접근은 필요한 애플리케이션과 승인된 관리 경로로 제한해야 합니다. 보안 그룹이 Composition에 포함되어 있으면 넓은 허용 범위가 여러 서비스에 반복 적용될 수 있습니다.

잠재적 영향

  • 인터넷에서 리소스에 도달할 수 있으면 외부 클라이언트가 허용된 포트로 연결과 로그인을 시도할 수 있습니다.
  • 인증 정보나 서비스 취약점이 악용되면 데이터 유출이나 변조로 이어질 수 있습니다.

해결 방법

  • 0.0.0.0/0을 실제 접근이 필요한 클라이언트의 좁은 CIDR 또는 적절한 소스 보안 그룹으로 제한하세요. 사설 대역 전체를 신뢰할 수 있는 대상으로 간주하지 마세요.
  • 필요한 포트와 프로토콜만 허용하고, 리소스에 연결된 다른 보안 그룹과 실제 네트워크 경로도 확인하세요.
  • Composition의 기본값도 수정한 뒤 승인된 연결의 성공과 불필요한 외부 연결의 차단을 확인하세요.

예시

다음은 보안 그룹의 인바운드 규칙을 보여 주는 부분 예시입니다. 리소스 이름이 서로 다르므로 두 번째 정의를 추가하는 것만으로 기존 규칙이 바뀌지는 않습니다.

변경 전

yaml
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: SecurityGroup
metadata:
  name: ec2-rule2
spec:
  forProvider:
    region: us-east-1
    ingress:
      - fromPort: 5432
        toPort: 5432
        ipProtocol: tcp
        ipRanges:
          - cidrIp: 0.0.0.0/0
            description: Everywhere

TCP 포트 5432에 모든 IPv4 소스를 허용합니다. 실제 데이터베이스 노출 여부는 연결된 리소스와 네트워크 구성에 달려 있습니다.

변경 후

yaml
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: SecurityGroup
metadata:
  name: ec2-rule1
spec:
  forProvider:
    region: us-east-1
    ingress:
      - fromPort: 5432
        toPort: 5432
        ipProtocol: tcp
        ipRanges:
          - cidrIp: 10.0.0.0/8
            description: Internal network

소스 범위를 10.0.0.0/8로 줄였습니다. 이 사설 대역도 매우 넓으므로 실제 클라이언트에 필요한 범위로 더 제한하세요.

참조