Super Admin API
tenant 경계를 넘나드는 플랫폼 전체 동작입니다. tenant 생성, tenant가 속할 베이스 도메인 지정, 그리고 로그인이나 공유 정책을 모든 tenant에 일괄 적용하는 일을 다룹니다. 하나의 tenant 안에서의 동작은 Admin을 참고합니다.
Base URL과 인가
/api/external/v1/super-admin
이 endpoint들은 SUPER_ADMIN 역할을 가진 계정으로 발급된 API Key가 필요합니다. 일반 관리자의 키는 통과하지
못합니다.
관리자 endpoint와 마찬가지로 인가는 역할만으로 결정됩니다. api:read만 가진 키로도 tenant 생성, 베이스 도메인
변경, 모든 tenant에 대한 정책 적용이 가능합니다. 슈퍼 관리자 키는 발급 시 지정한 scope와 무관하게 시스템에서
가장 강력한 credential입니다.
tenant 진입 키 발급은 내부 전용이며 외부 API로 노출되지 않습니다.
베이스 도메인
tenant는 공유하는 하나의 베이스 도메인 아래 서브도메인으로 주소가 정해집니다.
GET /api/external/v1/super-admin/base-domain
PUT /api/external/v1/super-admin/base-domain
| 파라미터 | Type | 필수 | 설명 |
|---|---|---|---|
bd | string | Yes | 베이스 도메인, 최대 253자 |
베이스 도메인은 하나만 지원하며 항상 baseDomainSeq가 1입니다.
베이스 도메인을 설정하면 등록된 모든 tenant의 전체 도메인이 재계산됩니다. 기존 tenant URL은 이전 주소에서 더 이상 열리지 않습니다. 변경 전에 DNS, 인증서, 클라이언트에 하드코딩된 URL을 확인합니다.
도메인이 유효하지 않으면 BASE_DOMAIN_002, 설정 전에 조회하면 BASE_DOMAIN_001을 반환합니다.
tenant 목록
GET /api/external/v1/super-admin/tenants
| 파라미터 | Type | 필수 | 설명 |
|---|---|---|---|
ps | integer | Yes | 페이지 크기, 최소 1 |
ci | long | No | cursor - 이전 페이지의 마지막 tenantSeq |
각 항목은 tenantSeq, tenantName, domain, clientUrl, registerDate, license를 알려줍니다. 라이선스
요약은 라이선스가 없는 tenant면 null이고, 있으면 state, expiresOn, 그리고 current와 max를 담은 seat
객체를 포함합니다. 각 tenant를 따로 조회하지 않고도 만료되었거나 좌석을 초과한 tenant를 찾을 수 있습니다.
tenant 조회
GET /api/external/v1/super-admin/tenants/{tenantSeq}
tenantName, subdomain, baseDomainSeq, allowedIps를 반환합니다. 존재하지 않는 tenant는 TENANT_001을
반환합니다.
목록은 조합된 domain을 반환하는 반면 이 endpoint는 그것을 만든 subdomain을 반환합니다.
tenant 생성
POST /api/external/v1/super-admin/tenants
tenant와 첫 관리자, IP 허용 목록을 한 번에 만듭니다.
| 파라미터 | Type | 필수 | 설명 |
|---|---|---|---|
tn | string | Yes | tenant 이름 |
sd | string | Yes | 서브도메인, 최대 253자 |
bs | integer | Yes | 베이스 도메인 seq |
e | string | Yes | 관리자 계정 id. 이메일 주소 |
n | string | Yes | 관리자 표시 이름 |
p | string | Yes | 관리자 비밀번호 |
ips | array | No | 허용할 IPv4 주소 또는 CIDR 목록 |
curl -X POST "https://drive.example.com/api/external/v1/super-admin/tenants" \
-H "Authorization: Bearer replace-with-your-api-key" \
-H "Content-Type: application/json" \
-d '{"tn": "Example", "sd": "example", "bs": 1, "e": "admin@example.com", "n": "Administrator", "p": "Test1234!", "ips": ["192.168.0.12", "192.168.0.0/24"]}'
새 tenant는 기본 시스템 설정으로 시작합니다. 오피스 도메인과 어댑터 이름이 설정되고, Intellect와 공유는 켜져 있으며, MFA는 꺼져 있습니다. 이 값들은 해당 tenant의 Admin endpoint에서 변경합니다.
이미 사용 중인 서브도메인은 TENANT_006, 형식이 잘못된 서브도메인은 TENANT_007, 존재하지 않는 bs는
BASE_DOMAIN_001을 반환합니다.
tenant 수정
PATCH /api/external/v1/super-admin/tenants/{tenantSeq}
| 파라미터 | Type | 필수 | 설명 |
|---|---|---|---|
tn | string | Yes | tenant 이름 |
sd | string | Yes | 서브도메인, 최대 253자 |
bs | integer | Yes | 베이스 도메인 seq |
ips | array | No | 허용할 IPv4 주소 또는 CIDR 목록 |
하나만 바꾸더라도 tn, sd, bs 세 개가 모두 필수이므로, 먼저 tenant를 조회해 현재 값을 함께 보냅니다. sd를
바꾸면 tenant의 주소가 바뀝니다.
로그인 정책
tenant 단위 endpoint와 같은 로그인 설정이며, 슈퍼 관리자가 이를 모든 tenant에 한 번에 적용할 수 있다는 점이 다릅니다.
GET /api/external/v1/super-admin/login-settings
PUT /api/external/v1/super-admin/login-settings
조회는 범위를 고르는 s(tenant 또는 global)와 로그인 유형으로 거르는 l을 받습니다.
| 파라미터 | Type | 필수 | 설명 |
|---|---|---|---|
ie | boolean | Yes | true면 이 설정을 모든 tenant에 적용, false면 각 tenant 설정을 따름 |
l | string | No | 로그인 유형 - local, oidc, jwt |
ps | array | No | 인증 공급자 목록 |
공급자와 config 객체는 Admin에 설명된 tenant 단위 endpoint와 필드가 완전히 같으며,
config.type이 로그인 유형과 같아야 한다는 조건도 동일합니다. SSO_PROTOCOL_001과 SSO_PROTOCOL_002 오류도
같습니다.
이 endpoint는 tenant endpoint의 loginType, providers 자리에 l, ps를 쓰고 ie가 추가됩니다. 조회 응답도
superAdminEnforced가 아니라 isEnforced를 반환합니다. config 객체는 동일합니다.
tenant 단위와 마찬가지로 clientSecret과 publicKey가 마스킹 없이 반환됩니다. 응답을 서버 측에만 둡니다.
공유 정책
GET /api/external/v1/super-admin/share-settings
PUT /api/external/v1/super-admin/share-settings
| 파라미터 | Type | 필수 | 설명 |
|---|---|---|---|
e | boolean | Yes | true면 이 설정을 모든 tenant에 적용, false면 각 tenant 설정을 따름 |
se | boolean | 조건부 | 공유 기능 사용 여부. e가 true면 필수 |
esa | boolean | 조건부 | 조직 외부 공유 허용. e와 se가 true면 필수 |
sua | boolean | 조건부 | SPECIFIC_USERS 공유 유형 허용. e와 se가 true면 필수 |
ola | boolean | 조건부 | ORG_LINK 공유 유형 허용. e와 se가 true면 필수 |
pa | boolean | 조건부 | PUBLIC_LINK 공유 유형 허용. e와 se가 true면 필수 |
공유를 켠 채로 전체 적용할 때는 sua, ola, pa 중 하나 이상이 true여야 하고, pa를 켜려면 esa도
true여야 합니다. tenant endpoint와 같은 규칙입니다.
e가 true인 동안 각 tenant의 공유 설정 endpoint는 isEnforced를 보고하고 자신의 값 대신 이 글로벌 값을
반환합니다. e를 다시 false로 되돌리면 각 tenant는 원래 가지고 있던 설정으로 돌아갑니다.
에러
이 endpoint들이 반환하는 코드 전체 목록은 Errors를 참고합니다.