그룹 API
엔드포인트: /api/iam/groups/
그룹을 관리하여 사용자를 구성하고 Alpacon 워크스페이스의 서버 접근을 제어합니다.
그룹 목록 조회
그룹 목록을 가져옵니다. 기본 정렬 순서는 이름순입니다.
GET /api/iam/groups/
쿼리 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
name | string | 그룹 이름으로 필터링 (정확히 일치) |
is_ldap_group | boolean | LDAP 그룹 상태로 필터링 |
search | string | name, display_name, tags, description, gid, server__name 필드에서 검색 |
ordering | string | 정렬 필드. 옵션: name, display_name, tags, gid, is_ldap_group, added_at, updated_at. 내림차순은 - 접두사 사용 |
page | integer | 페이지 번호 |
page_size | integer | 페이지당 결과 수 (기본값: 15, 최대: 100) |
응답
{
"count": 8,
"next": null,
"previous": null,
"results": [
{
"id": "d94e1b23-5c7d-4f8a-b012-3e4f5a6b7c8d",
"name": "developers",
"display_name": "Developers",
"tags": "engineering",
"num_members": 12,
"gid": 2001,
"is_ldap_group": false,
"servers": [
"7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
],
"servers_names": [
"web-server-01"
]
}
]
}
그룹 상세 조회
특정 그룹의 세부 정보를 조회합니다. 멤버 이름 및 타임스탬프가 포함됩니다.
GET /api/iam/groups/{group_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
group_id | UUID | 조회할 그룹의 ID |
응답
{
"id": "d94e1b23-5c7d-4f8a-b012-3e4f5a6b7c8d",
"name": "developers",
"display_name": "Developers",
"tags": "engineering",
"num_members": 12,
"gid": 2001,
"is_ldap_group": false,
"description": "스테이징 및 프로덕션 서버에 접근할 수 있는 개발팀",
"servers": [
"7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
],
"servers_names": [
"web-server-01"
],
"members_names": [
"admin",
"jsmith",
"developer1"
],
"added_at": "2023-06-01T08:00:00Z",
"updated_at": "2024-01-18T14:30:00Z"
}
그룹 생성
새 그룹을 생성합니다. 요청한 사용자에 대해 owner 멤버십이 자동으로 생성됩니다.
POST /api/iam/groups/
요청 본문
{
"name": "devops",
"display_name": "DevOps Team",
"tags": "infrastructure",
"description": "모든 서버에 대한 전체 접근 권한을 가진 DevOps 엔지니어",
"servers": [
"7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
"8f4985df-50bc-42e5-b827-32fcc46959a2"
]
}
요청 파라미터
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
name | string | Yes | 그룹 이름 (슬러그 형식, 최대 128자, 고유) |
display_name | string | Yes | 사람이 읽을 수 있는 표시 이름 (최대 128자, 고유) |
tags | string | No | 쉼표로 구분된 태그 |
description | string | No | 그룹 설명 |
is_ldap_group | boolean | No | LDAP 그룹 플래그 (기본값: false) |
servers | array[UUID] | No | 그룹에 할당할 서버 ID |
응답
{
"id": "e05f2c34-6d8e-4a9b-c123-4f5a6b7c8d9e",
"name": "devops",
"display_name": "DevOps Team",
"tags": "infrastructure",
"num_members": 1,
"gid": 2002,
"is_ldap_group": false,
"description": "모든 서버에 대한 전체 접근 권한을 가진 DevOps 엔지니어",
"servers": [
"7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
"8f4985df-50bc-42e5-b827-32fcc46959a2"
],
"servers_names": [
"web-server-01",
"web-server-02"
],
"members_names": [
"admin"
],
"added_at": "2024-01-20T10:00:00Z",
"updated_at": "2024-01-20T10:00:00Z"
}
그룹 수정
그룹 속성을 수정합니다. name, gid, id 필드는 수정 시 읽기 전용입니다.
PATCH /api/iam/groups/{group_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
group_id | UUID | 수정할 그룹의 ID |
요청 본문
{
"display_name": "DevOps Engineering",
"tags": "infrastructure, platform",
"description": "DevOps 팀 설명 업데이트",
"servers": [
"7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
]
}
요청 파라미터
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
display_name | string | No | 사람이 읽을 수 있는 표시 이름 |
tags | string | No | 쉼표로 구분된 태그 |
description | string | No | 그룹 설명 |
servers | array[UUID] | No | 할당할 서버 ID |
응답
{
"id": "e05f2c34-6d8e-4a9b-c123-4f5a6b7c8d9e",
"name": "devops",
"display_name": "DevOps Engineering",
"tags": "infrastructure, platform",
"num_members": 3,
"gid": 2002,
"is_ldap_group": false,
"description": "DevOps 팀 설명 업데이트",
"servers": [
"7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
],
"servers_names": [
"web-server-01"
],
"members_names": [
"admin",
"jsmith",
"developer1"
],
"added_at": "2024-01-20T10:00:00Z",
"updated_at": "2024-01-20T16:00:00Z"
}
그룹 삭제
그룹을 삭제합니다.
DELETE /api/iam/groups/{group_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
group_id | UUID | 삭제할 그룹의 ID |
응답
204 No Content
그룹을 삭제하면 모든 멤버십과 서버 접근 연결이 제거됩니다.
오류 코드
| 상태 | 오류 코드 | 설명 |
|---|---|---|
| 400 | INVALID_REQUEST | 잘못된 파라미터 |
| 401 | UNAUTHORIZED | 인증되지 않음 |
| 403 | FORBIDDEN | 권한 거부 |
| 404 | NOT_FOUND | 그룹을 찾을 수 없음 |