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)
- 인증(Authentication)과 권한(Authorization) 문서에서 Druid의 보안 모델을 살펴보세요.
- MSQ 참조 문서에서
INSERT·REPLACE·EXTERN의 사용법을 확인해 보세요.