SQL 기반 인제스트 보안

SQL 기반 인제스트 보안 (SQL-based ingestion security)

MSQ 태스크 엔진을 쓸 때 필요한 권한(permission)을 정리한 문서예요. 데이터소스를 읽고 쓰기 위한 권한, 그리고 지속 스토리지(durable storage)를 쓸 때 저장소 제공자별로 필요한 권한을 다루어요.

출처: 문서

본문

익스텐션이 로드되어 있다면, 모든 인증된 사용자는 UI와 API를 통해 멀티 스테이지 쿼리 태스크 엔진(MSQ 태스크 엔진)을 사용할 수 있어요. 하지만 추가 권한이 없으면 사용자는 Druid 데이터소스나 외부 데이터를 읽거나 쓰는 쿼리를 발행할 수 없어요. 필요한 권한은 사용자가 하려는 작업에 따라 달라져요.

쿼리를 제출하려면:

  • Druid 데이터소스에서 SELECT하려면 해당 데이터소스에 대한 READ DATASOURCE 권한이 필요해요.
  • Druid 데이터소스에 INSERT하거나 REPLACE하려면 해당 데이터소스에 대한 WRITE DATASOURCE 권한이 필요해요.
  • EXTERN과 입력 소스 특정 테이블 함수는 타입이 EXTERNAL이고 이름이 "EXTERNAL"인 리소스에 대한 READ 권한을 요구해요. 올바른 권한이 없는 사용자가 EXTERN을 포함한 쿼리를 실행하려 하면 403 오류가 발생해요.

쿼리가 제출되면 query_controller 태스크로 실행돼요. 사용자가 MSQ 태스크 엔진에 제출하는 쿼리 태스크는 Overlord 태스크이므로 Overlord의 보안 모델을 따라요. 즉, Overlord API에 접근할 수 있는 사용자는 쿼리를 제출하지 않았더라도 상태 조회나 쿼리 취소 같은 일부 작업을 수행할 수 있어요. Overlord API와 태스크 API에 대한 자세한 내용은 SQL 기반 인제스트용 API 문서를 참고하세요.

info: Overlord API에 접근할 수 있는 사용자라면 WRITE DATASOURCE 권한만으로도 query_controller 태스크를 제출할 수 있다는 점을 기억하세요.

사용자가 하려는 작업에 따라 다음 권한도 필요할 수 있어요.

  • INSERT 또는 REPLACE 쿼리: 사용자는 출력 데이터소스에 대한 DATASOURCE READ 권한이 있어야 해요.
  • SELECT 쿼리: 사용자는 생성되는 스텁(stub) 데이터소스인 __query_select 데이터소스에 대한 READ 권한이 있어야 해요.

지속 스토리지 권한 (Permissions for durable storage)

MSQ 태스크 엔진은 쿼리를 실행할 때 중간 파일을 저장하기 위해 Amazon S3 또는 Azure Blob Storage를 사용할 수 있어요. 이 중간 파일을 업로드·읽기·이동·삭제하려면 MSQ 태스크 엔진은 스토리지 제공자에 특화된 일부 권한이 필요해요.

S3

MSQ 태스크 엔진은 중간 스테이지 결과를 S3에 푸시하고, 가져오고, 제거하기 위해 다음 권한이 필요해요.

  • s3:GetObject - 파일을 가져올 때 필요해요. GetObject는 가져오는 객체에 대한 읽기 권한도 함께 요구해요.
  • s3:PutObject - 파일을 업로드할 때 필요해요.
  • s3:AbortMultipartUpload - 파일 업로드를 취소할 때 필요해요.
  • s3:DeleteObject - 더 이상 필요하지 않은 파일을 삭제할 때 필요해요.

Azure

MSQ 태스크 엔진은 중간 스테이지 결과를 Azure에 푸시하고, 가져오고, 제거하기 위해 다음 권한이 필요해요.

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read - 지속 스토리지에서 파일을 읽고 나열할 때 필요해요.
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write - 지속 스토리지에 파일을 쓸 때 필요해요.
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action - 지속 스토리지에 파일을 만들 때 필요해요.
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete - 더 이상 필요하지 않은 파일을 삭제할 때 필요해요.

더 알아보기 (Learn more)