설명
Neptune의 IAM 데이터베이스 인증을 활성화하면 데이터 요청에 AWS Signature Version 4(SigV4) 서명이 필요하며 IAM 정책으로 데이터 접근 권한을 관리합니다. 비활성화된 경우에는 이러한 IAM 기반 요청 인증과 권한 검사를 적용하지 않습니다.
네트워크에 연결할 수 있다는 이유만으로 데이터 작업을 허용하지 않도록 인증과 네트워크 제한을 함께 구성하세요. StorageEncrypted는 저장 데이터 보호이며 요청 인증을 대신하지 않습니다.
잠재적 영향
- 데이터 접근을 허용할 필요가 없는 클라이언트도 데이터베이스에 연결할 수 있으면 데이터를 조회하거나 변경할 수 있습니다.
- 네트워크 내부 시스템이 침해되면 IAM 기반 제한이 없는 데이터 접근 경로가 악용될 수 있습니다.
해결 방법
- 클라이언트의 SigV4 서명과 필요한
neptune-db:데이터 권한을 준비한 뒤IamAuthEnabled: true를 설정하세요. 관리 API 권한과 데이터 권한은 구분하세요. - 인증 설정 변경은 엔진을 재시작하고 기존 연결을 종료하므로 점검 시간을 계획하세요.
- 필요한 클라이언트로 보안 그룹과 연결 경로를 제한하고, 정상 요청은 처리되며 권한 없는 요청은 거부되는지 확인하세요.
예시
같은 클러스터의 인증 설정을 비교합니다. DB 인스턴스, 서브넷·보안 그룹과 클라이언트 설정은 별도로 구성해야 합니다.
변경 전
yaml
Resources:
NeptuneDBCluster:
Type: AWS::Neptune::DBCluster
Properties:
IamAuthEnabled: false
StorageEncrypted: true
저장 암호화는 켜져 있지만 IAM 데이터베이스 인증은 비활성화되어 있습니다.
변경 후
yaml
Resources:
NeptuneDBCluster:
Type: AWS::Neptune::DBCluster
Properties:
IamAuthEnabled: true
StorageEncrypted: true
IAM 인증을 활성화합니다. 적용 전에 클라이언트의 요청 서명과 데이터 권한이 준비되어 있어야 합니다.