퍼블릭 IP 주소가 할당될 수 있는 RDS 인스턴스

내부용 RDS 인스턴스의 공개 접근을 끄고, 필요한 프라이빗 연결과 보안 그룹을 구성하여 불필요한 외부 접근을 줄입니다.

설명

RDS의 공개 접근을 활성화하면 인스턴스에 퍼블릭 IP 주소가 할당될 수 있습니다. 인터넷에서 실제로 연결하려면 서브넷의 라우팅과 보안 그룹도 연결을 허용해야 하며, 데이터베이스 인증과 권한은 별도로 적용됩니다. 내부용 데이터베이스에는 공개 주소가 필요하지 않은지 확인하세요.

Crossplane AWS 공급자 v0.17.0에서 publiclyAccessible을 생략하면 AWS에 이 값을 지정하지 않고 요청하며, 기본 동작은 VPC와 DB 서브넷 그룹에 따라 달라집니다. 내부용 인스턴스는 기본값에 맡기지 말고 publiclyAccessible: false를 명시하세요.

잠재적 영향

  • 퍼블릭 IP 주소를 가진 데이터베이스까지 인터넷 경로가 열려 있고 보안 그룹이 광범위한 접근을 허용하면, 의도하지 않은 출처에서도 로그인이나 취약점 악용을 시도할 수 있습니다. 실제 데이터 접근에는 인증과 권한 등 추가 조건이 영향을 줍니다.
  • 의도하지 않은 공개 주소와 광범위한 네트워크 허용이 결합되면 데이터베이스의 외부 노출 범위가 커질 수 있습니다.

해결 방법

  • 내부 전용 인스턴스에는 publiclyAccessible: false를 설정하세요.
  • DBSubnetGroup의 실제 서브넷과 라우팅 테이블을 확인하고, 보안 그룹은 필요한 출처와 데이터베이스 포트로 제한하세요. VPC에 인터넷 게이트웨이가 있다는 사실만으로 개별 서브넷의 공개 여부를 판단하지 마세요.
  • 공개 접근을 끄기 전에 애플리케이션과 관리자가 사용할 프라이빗 연결을 마련하고 변경 후 연결을 시험하세요. 공개 접근이 업무상 필요하다면 허용된 출처와 데이터베이스 포트로 보안 그룹을 제한하고, 인증과 전송 구간 암호화를 적용하세요.

예시

아래는 Crossplane AWS v0.17.0 형식의 부분 예시입니다. 엔진, 인스턴스 클래스 등 필요한 속성을 추가하고, 서브넷 ID와 DB 서브넷 그룹 이름을 실제 환경에 맞게 지정하세요. 라우팅과 보안 그룹은 별도로 구성해야 합니다.

변경 전

yaml
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
  name: sample-cluster3
spec:
  forProvider:
    publiclyAccessible: true
    dbSubnetGroupName: my-db-subnet-group

---

apiVersion: database.aws.crossplane.io/v1beta1
kind: DBSubnetGroup
metadata:
  name: my-db-subnet-group
spec:
  forProvider:
    description: "My DB Subnet Group"
    subnetIds:
      - subnet-12345678
      - subnet-87654321

변경 후

yaml
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
  name: sample-cluster3
spec:
  forProvider:
    publiclyAccessible: false
    dbSubnetGroupName: my-db-subnet-group

---

apiVersion: database.aws.crossplane.io/v1beta1
kind: DBSubnetGroup
metadata:
  name: my-db-subnet-group
spec:
  forProvider:
    description: "My DB Subnet Group"
    subnetIds:
      - subnet-12345678
      - subnet-87654321

설명:

  • 변경 전: 공개 접근을 활성화합니다. 실제 인터넷 연결 가능 여부는 네트워크 구성에도 달려 있습니다.
  • 변경 후: 퍼블릭 IP 주소를 사용하지 않도록 요청합니다. 필요한 프라이빗 연결과 인증, 보안 그룹을 함께 구성하고 연결을 검증하세요.

참조