본문으로 건너뛰기
버전: Next

Accesses API

Accesses API는 리소스에 대한 세분화된 접근 제어(Fine-Grained Authorization)를 관리합니다. 관계 기반 접근 제어(ReBAC) 모델을 사용하여 사용자/그룹과 리소스 간의 권한 관계를 정의합니다.

핵심 개념

D.Hub의 접근 제어는 세 가지 요소로 구성됩니다:

요소형식설명예시
User{type}:{id} 또는 {type}:{id}#member권한의 주체user:alice, group:data-team#member
Relationstring권한 관계owner, editor, viewer
Object{type}:{id}권한 대상 리소스dataset:sales-2024, pipeline:etl-daily
관계 유형
  • owner: 리소스 소유자. 모든 권한을 포함합니다.
  • editor: 리소스 수정 권한. 읽기 권한을 포함합니다.
  • viewer: 리소스 읽기 전용 권한.

엔드포인트

MethodPathDescription
GET/accesses/접근 권한 조회
POST/accesses/접근 권한 추가
DELETE/accesses/접근 권한 제거

GET /accesses/

특정 조건에 맞는 접근 권한 관계를 조회합니다. Query parameter로 필터 조건을 전달합니다.

Query Parameters

ParameterTypeRequiredDescription
userstringNo사용자 필터 (예: user:alice)
relationstringNo관계 필터 (예: editor)
objectstringNo대상 리소스 필터 (예: dataset:sales-2024)
노트

최소 하나의 필터를 지정해야 합니다. 모든 필터를 비워두면 결과가 반환되지 않습니다.

Response

200 OK

[
{
"user": "user:alice",
"relation": "owner",
"object": "dataset:sales-2024"
},
{
"user": "group:data-team#member",
"relation": "editor",
"object": "dataset:sales-2024"
}
]

POST /accesses/

하나 이상의 접근 권한 관계를 추가합니다. 권한 엔진과 그래프 저장소에 동시에 반영됩니다.

Request Body

[
{
"user": "user:alice",
"relation": "owner",
"object": "dataset:sales-2024"
},
{
"user": "group:data-team#member",
"relation": "editor",
"object": "pipeline:etl-daily"
}
]
FieldTypeRequiredDescription
userstringYes권한 주체 ({type}:{id} 형식)
relationstringYes관계 유형 (owner, editor, viewer)
objectstringYes대상 리소스 ({type}:{id} 형식)

Response

200 OK

{
"message": "Relation created successfully"
}

DELETE /accesses/

접근 권한 관계를 제거합니다. 조건에 매칭되는 모든 관계가 권한 엔진과 그래프 저장소에서 삭제됩니다.

Request Body

{
"user": "user:alice",
"relation": "editor",
"object": "dataset:sales-2024"
}

Response

200 OK

{
"message": "Relation deleted successfully"
}

사용 예시

# 특정 리소스의 모든 접근 권한 조회
curl "https://api.dhub.io/api/v1/accesses/?object=dataset:sales-2024" \
-H "Authorization: Bearer <access_token>"

# 사용자에게 권한 부여
curl -X POST https://api.dhub.io/api/v1/accesses/ \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '[
{
"user": "user:bob",
"relation": "viewer",
"object": "dataset:sales-2024"
}
]'

# 권한 제거
curl -X DELETE https://api.dhub.io/api/v1/accesses/ \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"user": "user:bob",
"relation": "viewer",
"object": "dataset:sales-2024"
}'
그룹 권한

그룹 단위로 권한을 부여하려면 user 필드에 group:{group_name}#member 형식을 사용합니다. 해당 그룹의 모든 멤버에게 권한이 적용됩니다.