Elasticsearch 도메인 접근 주체 점검

도메인 정책의 허용 주체와 실제 인증·네트워크 통제를 함께 검토하세요.

설명

Elasticsearch 도메인 정책이 모든 주체에 넓은 작업 권한을 허용하면, 다른 통제가 제한하지 않는 요청이 인덱스와 데이터에 접근할 수 있습니다. 실제 권한은 정책의 효과·조건, 네트워크 경로와 세분화된 접근 제어에 따라 달라집니다.

와일드카드 주체가 있다고 항상 익명 접근이 가능한 것은 아닙니다. 내부 사용자 데이터베이스 등 다른 인증 방식을 사용하는 구성도 있으므로 실제 인증 모델에 맞춰 권한을 제한하세요.

잠재적 영향

  • 의도하지 않은 주체가 허용된 데이터 조회·변경·삭제 작업을 수행할 수 있습니다.
  • 과도한 권한이 악용되면 정보 유출이나 서비스 중단으로 이어질 수 있습니다.

해결 방법

AccessPolicies의 허용 주체, 작업과 리소스를 필요한 범위로 줄이세요. IAM 주체를 사용하는 요청은 SigV4 서명과 해당 역할 사용 권한을 구성하세요. 다른 인증 방식을 쓴다면 세분화된 접근 제어와 역할 매핑을 확인하고, 네트워크 경로·HTTPS와 실제 허용·거부 결과를 함께 검증하세요.

예시

기존 AWS::Elasticsearch::Domain 형식의 정책 발췌입니다. 계정·리전·도메인과 역할 ARN을 실제 값으로 바꾸고 엔진·네트워크 설정을 별도로 준비하세요.

변경 전

yaml
Resources:
  ElasticsearchDomain:
    Type: AWS::Elasticsearch::Domain
    Properties:
      DomainName: test
      AccessPolicies:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              AWS: "*"
            Action: es:*
            Resource: arn:aws:es:us-east-1:123456789012:domain/test/*

모든 AWS 주체에 es:*를 허용하는 정책입니다. 실제 접근 가능 여부는 다른 정책과 인증·네트워크 통제에도 달려 있습니다.

변경 후

yaml
Resources:
  ElasticsearchDomain:
    Type: AWS::Elasticsearch::Domain
    Properties:
      DomainName: test
      AccessPolicies:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              AWS: arn:aws:iam::123456789012:role/es-access-role
            Action: es:*
            Resource: arn:aws:es:us-east-1:123456789012:domain/test/*

허용 주체를 특정 역할로 좁힙니다. es:*는 여전히 넓으므로 필요한 작업만 남기고 다른 허용 정책도 함께 검토하세요.

참조