메인 콘텐츠로 건너뛰기
SCIM 동작 데모 영상 (12분)을 시청하세요

개요

System for Cross-domain Identity Management(SCIM) API를 사용하면 인스턴스 또는 조직 관리자가 W&B 조직의 사용자, 그룹, 커스텀 역할을 관리할 수 있습니다. SCIM 그룹은 W&B 팀에 매핑됩니다. W&B의 SCIM API는 Okta를 포함한 주요 아이덴티티 공급자와 호환되며, 사용자 프로비저닝 및 프로비저닝 해제를 자동화할 수 있습니다. Okta 및 기타 아이덴티티 공급자와의 SSO 설정에 대해서는 SSO 문서를 참고하세요. SCIM API와 상호작용하는 방법을 보여주는 실제 Python 예시는 wandb-scim 리포지토리를 확인하세요.

지원되는 기능

  • Filtering: API는 /Users/Groups 엔드포인트에 대한 필터링을 지원합니다.
  • PATCH Operations: 리소스를 부분적으로 업데이트하기 위한 PATCH를 지원합니다.
  • ETag Support: 충돌 감지를 위한 ETag 기반 조건부 업데이트를 지원합니다.
  • Service Account Authentication: 조직 서비스 계정이 API에 액세스할 수 있습니다.
여러 Enterprise Multi-tenant SaaS 조직의 관리자라면, SCIM API 요청을 보낼 조직을 반드시 지정해야 합니다. 그래야 API key를 사용해 전송하는 SCIM API 요청이 올바른 조직에 영향을 미칩니다. 프로필 이미지를 클릭한 다음 User Settings를 클릭하고, Default API organization 설정을 확인합니다.선택한 호스팅 옵션에 따라 이 페이지의 예시에서 사용하는 <host-url> 플레이스홀더 값이 결정됩니다.또한 예시에서는 abc, def 같은 사용자 ID를 사용합니다. 실제 요청과 응답에서는 사용자 ID가 해시된 값으로 표시됩니다.

인증

주요 차이점을 먼저 확인한 다음, 사용자 아이덴티티 또는 서비스 계정 중 어떤 방식으로 인증할지 선택하십시오.

주요 차이점

  • 사용 대상: User는 상호작용형의 단발성 관리자 작업에 적합하고, service account는 자동화 및 통합(CI/CD, 프로비저닝 도구)에 적합합니다.
  • 자격 증명: User는 사용자 이름과 API key를 전송하고, service account는 API key만 전송합니다(사용자 이름 없음).
  • Authorization 헤더 페이로드: User는 username:API-KEY를 인코딩하고, service account는 :API-KEY(선행 콜론 포함)를 인코딩합니다.
  • 범위와 권한: 둘 다 관리자 권한이 필요합니다. service account는 조직 범위이며 headless로 동작하여, 자동화를 위한 감사 로그를 더 명확하게 제공합니다.
  • 자격 증명 위치: User는 User Settings에서 자신의 API key를 복사하고, service account key는 조직의 Service account 탭에서 확인할 수 있습니다.
  • Multi-tenant Cloud: 둘 이상의 Multi-tenant Cloud 조직에 액세스할 수 있는 경우, SCIM API 호출이 의도한 조직으로 라우팅되도록 Default API organization을 설정해야 합니다.

사용자

대화형 관리자 작업을 수행할 때는 본인의 관리자 자격 증명을 사용하세요. HTTP Authorization 헤더는 Basic <base64(username:API-KEY)> 형태로 설정합니다. 예를 들어, demo:p@55w0rd로 인증하려면 다음과 같이 설정합니다:
Authorization: Basic ZGVtbzpwQDU1dzByZA==

서비스 계정

자동화 또는 통합 작업에는 조직 범위 서비스 계정을 사용합니다. HTTP Authorization 헤더를 Basic <base64(:API-KEY)> 형식으로 설정합니다(앞에 오는 콜론과 비어 있는 사용자 이름에 유의). 서비스 계정 API key는 조직 대시보드의 Service account 탭에서 찾을 수 있습니다. 조직 범위 서비스 계정을 참고하세요. 예를 들어, API key sa-p@55w0rd로 인증하려면 다음을 실행합니다:
Authorization: Basic OnNhLXBANTV3MHJk

사용자 관리

SCIM 사용자 리소스는 W&B 사용자와 매핑됩니다. 조직의 사용자를 관리하려면 이 엔드포인트를 사용하세요.

사용자 조회

조직 내 특정 사용자에 대한 정보를 조회합니다.
이 작업은 서비스 계정을 조회하지 않습니다.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: GET

매개변수

매개변수유형필수 여부설명
idstringYes사용자의 고유 ID

예시

GET /scim/Users/abc

사용자 목록 조회

조직의 모든 사용자 목록을 조회합니다.
이 작업에서는 서비스 계정이 포함되지 않습니다.

사용자 필터링

/Users 엔드포인트에서는 사용자 이름 또는 이메일 주소로 사용자를 필터링할 수 있습니다:
  • userName eq "value" - 사용자 이름으로 필터링
  • emails.value eq "value" - 이메일 주소로 필터링
예시
GET /scim/Users?filter=userName eq "john.doe"
GET /scim/Users?filter=emails.value eq "john@example.com"

엔드포인트

  • URL: <host-url>/scim/Users
  • 메서드: GET

예시

GET /scim/Users

사용자 생성

조직에 새 사용자를 추가합니다.

엔드포인트

  • URL: <host-url>/scim/Users
  • 메서드: POST

매개변수

ParameterTypeRequiredDescription
emailsarrayYes이메일 객체 배열입니다. 기본(primary) 이메일을 포함해야 합니다.
userNamestringYes새 사용자의 사용자 이름입니다.

예시

POST /scim/Users
{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "emails": [
        {
            "primary": true,
            "value": "dev-user2@example.com"
        }
    ],
    "userName": "dev-user2"
}

응답

(Status 201)
{
    "active": true,
    "displayName": "Dev User 2",
    "emails": {
        "Value": "dev-user2@example.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "def",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "location": "Users/def"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user2"
}

사용자 삭제

관리자 액세스 유지인스턴스 또는 조직에는 항상 최소 한 명 이상의 관리자 사용자가 있어야 합니다. 그렇지 않으면 어떤 사용자도 조직의 W&B 계정을 구성하거나 유지 관리할 수 없습니다. 조직이 SCIM 또는 다른 자동화된 프로세스를 사용해 W&B에서 사용자를 프로비저닝 해제(deprovision)하는 경우, 프로비저닝 해제 작업으로 인해 인스턴스 또는 조직에서 마지막으로 남은 관리자가 실수로 제거될 수 있습니다.운영 절차 수립을 위한 지원이 필요하거나 관리자 액세스를 복구해야 하는 경우 support로 문의하세요.
조직에서 사용자를 완전히 삭제합니다.
이 작업은 사용자 계정에만 적용되며 서비스 계정에는 적용되지 않습니다. 서비스 계정은 W&B Team 설정에서 삭제하세요.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: DELETE

매개변수

매개변수형식필수 여부설명
idstring삭제할 사용자의 고유 ID

예시

DELETE /scim/Users/abc
사용자를 일시적으로 비활성화하려면 PATCH 엔드포인트를 사용하는 사용자 비활성화 API를 참고하세요.

사용자 이메일 업데이트

사용자의 기본 이메일 주소를 변경합니다. 사용자 계정을 조직에서 관리하지 않는 환경인 멀티 테넌트 클라우드(Multi-tenant Cloud) 에서는 지원되지 않습니다.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: PATCH

매개변수

매개변수타입필수 여부설명
idstring사용자의 고유 ID
opstringreplace
pathstringemails
valuearray새 이메일 객체 배열

예시

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "emails",
            "value": [
                {
                    "value": "newemail@example.com",
                    "primary": true
                }
            ]
        }
    ]
}

사용자 표시 이름 업데이트

사용자의 표시 이름을 업데이트합니다. Multi-tenant Cloud에서는 지원되지 않습니다. 이 환경에서는 사용자의 계정이 조직에서 관리되지 않습니다.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: PATCH

매개변수

매개변수타입필수설명
idstringYes사용자의 고유 ID
opstringYesreplace
pathstringYesdisplayName
valuestringYes새 표시 이름

예시

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "displayName",
            "value": "John Doe"
        }
    ]
}

사용자 비활성화

조직의 사용자를 비활성화합니다. 구체적인 동작은 배포 유형에 따라 다릅니다:
  • Dedicated Cloud / Self-Managed: 사용자의 active 필드를 false로 설정합니다. 비활성화된 사용자의 조직 액세스를 복구하려면 사용자 재활성화를 참조하십시오.
  • Multi-tenant Cloud: 사용자를 조직에서 제거합니다. 사용자의 조직 액세스를 다시 부여하려면 조직에 사용자를 다시 추가하십시오. 사용자 생성을 참조하십시오. Multi-tenant Cloud에서는 사용자의 계정을 조직에서 관리하지 않습니다.
이 작업은 사용자에게만 적용되며, 서비스 계정에는 적용되지 않습니다. 서비스 계정 비활성화는 지원되지 않습니다. 팀 서비스 계정은 W&B Team 설정에서 관리하십시오.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: PATCH

매개변수

매개변수타입필수 여부설명
idstringYes비활성화할 사용자의 고유 ID
opstringYesreplace
valueobjectYes{"active": false} 값을 가진 객체

예제

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": false}
        }
    ]
}

응답

(상태 코드 200)
{
    "active": false,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@example.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "abc",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Users/abc"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user1"
}

사용자 재활성화

조직에서 이전에 비활성화된 사용자를 다시 활성화합니다.
  • 사용자 재활성화는 사용자 계정에만 적용되며, 서비스 계정에는 적용되지 않습니다. 서비스 계정에 대해서는 재활성화가 지원되지 않습니다. 서비스 계정은 W&B 팀 설정에서 관리하세요.
  • 멀티 테넌트 클라우드에서는 사용자 재활성화가 지원되지 않습니다. 사용자의 액세스를 복원하려면 사용자를 조직에 다시 추가해야 합니다. 사용자 생성을 참조하세요. 멀티 테넌트 클라우드에서는 사용자의 계정이 조직에서 관리되지 않습니다. 사용자를 재활성화하려는 경우 HTTP 400 오류가 반환됩니다:
    {
        "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:Error"
        ],
        "detail": "User reactivation operations are not supported in SaaS Cloud",
        "status": "400"
    }
    

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: PATCH

매개변수

매개변수타입필수 여부설명
idstring재활성화할 사용자의 고유 ID
opstringreplace
valueobject{"active": true} 값을 갖는 객체

예제

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": true}
        }
    ]
}

조직 역할 할당

사용자에게 조직 수준의 역할을 부여합니다.
이 작업은 사용자에게만 사용할 수 있으며 서비스 계정에는 적용되지 않습니다. 서비스 계정에서는 사용자 지정 역할을 지원하지 않습니다.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: PATCH

매개변수

ParameterTypeRequiredDescription
idstringYes사용자의 고유 ID
opstringYesreplace
pathstringYesorganizationRole
valuestringYes역할 이름 (admin 또는 member)
조직 범위의 viewer 역할은 더 이상 사용되지 않으며 UI에서 할당할 수 없습니다. SCIM을 사용해 사용자에게 viewer 역할을 할당하는 경우:
  • 조직에서는 member 역할이 할당됩니다.
  • Models에서는 full 시트 대신 viewer 시트가 할당됩니다. 이에 따라 Models에는 보기 전용 액세스 권한이, Registry에는 전체 액세스 권한이 부여됩니다. 사용 가능한 Models 시트가 없으면 Seat limit reached 오류가 기록되고, 해당 멤버는 Models 액세스 없이 추가됩니다. 시트가 나중에 사용 가능해지면 이후에 업데이트할 수 있습니다.
  • Weave에서는 full 시트 대신 viewer 시트가 할당됩니다. 이에 따라 Weave에는 보기 전용 액세스 권한이 부여됩니다. 사용 가능한 Weave 시트가 없으면 Seat limit reached 오류가 기록되고, 해당 멤버는 Weave 액세스 없이 추가됩니다. 시트가 나중에 사용 가능해지면 이후에 업데이트할 수 있습니다.
  • 조직 수준에서 표시되는 Registry에는 Registry viewer 역할이 할당됩니다.

예제

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "organizationRole",
            "value": "admin"
        }
    ]
}

팀 역할 할당

사용자에게 팀 단위 역할을 할당합니다.
이 작업은 서비스 계정이 아닌 사용자에게만 사용할 수 있습니다. 서비스 계정에는 커스텀 역할이 지원되지 않습니다.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: PATCH

매개변수

매개변수유형필수 여부설명
idstring사용자의 고유 ID
opstringreplace
pathstringteamRoles
valuearrayteamNameroleName을 포함하는 객체의 배열

예시

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "teamRoles",
            "value": [
                {
                    "roleName": "admin",
                    "teamName": "team1"
                }
            ]
        }
    ]
}

레지스트리에 추가

지정된 레지스트리 수준 역할을 부여하여 사용자를 레지스트리에 추가합니다.
이 작업은 사용자에게만 적용되며, 서비스 계정에는 적용되지 않습니다. 서비스 계정에는 커스텀 역할이 지원되지 않습니다.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • 메서드: PATCH

매개변수

매개변수타입필수 여부설명
idstring사용자의 고유 ID
opstringadd
pathstringregistryRoles
valuearrayregistryNameroleName을 포함하는 객체 배열

예시

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "registryRoles",
            "value": [
                {
                    "roleName": "admin",
                    "registryName": "hello-registry"
                }
            ]
        }
    ]
}

레지스트리에서 제거

사용자를 레지스트리에서 제거합니다.
  • 제거 작업은 RFC 7644 SCIM 프로토콜 사양을 따릅니다. 특정 레지스트리에서 사용자를 제거하려면 "registryRoles[registryName eq \"{registry_name}\"]" 필터 구문을 사용하고, 모든 레지스트리에서 사용자를 제거하려면 "registryRoles" 필터를 사용하세요.
  • 이 작업은 사용자에게만 적용되며, 서비스 계정에는 적용되지 않습니다. 서비스 계정을 레지스트리에서 제거하려면 W&B 팀 설정에서 수행하세요.

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • Method: PATCH

매개변수

매개변수유형필수 여부설명
idstringYes사용자의 고유 ID
opstringYesremove
pathstringYes"registryRoles[registryName eq \"{registry_name}\"]" 또는 "registryRoles"

예시

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "registryRoles[registryName eq \"goodbye-registry\"]"
        }
    ]
}
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "registryRoles"
        }
    ]
}

그룹 리소스

IAM에서 SCIM 그룹을 생성하면 해당 그룹이 W&B 팀으로 생성되어 매핑되며, 이후 SCIM 그룹에 대한 다른 작업은 모두 이 팀을 대상으로 수행됩니다.

서비스 계정

SCIM을 사용해 W&B 팀을 생성하면 조직 수준 서비스 계정이 모두 자동으로 팀에 추가되어, 해당 서비스 계정이 팀 리소스에 계속 액세스할 수 있습니다.

그룹 필터링

/Groups 엔드포인트는 특정 팀을 검색하기 위한 필터링을 지원합니다.

지원되는 필터

  • displayName eq "value" - 팀 표시 이름으로 필터링합니다.

예제

GET /scim/Groups?filter=displayName eq "engineering-team"

팀 조회

팀의 고유 ID를 제공하여 팀 정보를 조회합니다.

엔드포인트

  • URL: <host-url>/scim/Groups/{id}
  • 메서드: GET

예제

GET /scim/Groups/ghi

팀 목록 조회

팀 목록을 조회합니다.

엔드포인트

  • URL: <host-url>/scim/Groups
  • 메서드: GET

예시

GET /scim/Groups

팀 생성

  • Endpoint: <host-url>/scim/Groups
  • Method: POST
  • Description: 새 팀 리소스를 생성합니다.
  • Supported Fields:
FieldTypeRequired
displayNameString
members다중 값 배열예 (value 하위 필드는 필수이며 사용자 ID에 매핑됩니다.)

예시

dev-user2를 구성원으로 하는 wandb-support 팀을 생성합니다.
POST /scim/Groups
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "wandb-support",
    "members": [
        {
            "value": "def"
        }
    ]
}

팀 업데이트하기

  • Endpoint: <host-url>/scim/Groups/{id}
  • Method: PATCH
  • Description: 기존 팀의 멤버십 목록을 업데이트합니다.
  • Supported Operations: add 멤버, remove 멤버, replace 멤버들
  • remove 연산은 RFC 7644 SCIM 프로토콜 사양을 따릅니다. 특정 사용자를 제거하려면 필터 구문 members[value eq "{user_id}"]를 사용하고, 팀에서 모든 사용자를 제거하려면 members를 사용하세요. 사용자 식별: 멤버 연산에서 {user_id}는 다음 중 하나일 수 있습니다:
  • 이러한 연산은 서비스 계정이 아닌 사용자에게만 적용됩니다. 팀의 서비스 계정을 업데이트하려면 W&B 팀 설정에서 변경하세요.
요청에서 {team_id}는 실제 팀 ID로, {user_id}는 실제 사용자 ID 또는 이메일 주소로 바꾸어 사용하세요.

팀 구성원 교체

팀의 모든 구성원을 새로운 목록으로 교체합니다.
이 작업은 서비스 계정이 아닌 사용자에게만 적용됩니다. 서비스 계정은 W&B Team 설정에서 관리하십시오.
  • Endpoint: <host-url>/scim/Groups/{id}
  • Method: PUT
  • Description: 전체 팀 구성원 목록을 교체합니다.
PUT /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "acme-devs",
    "members": [
        {
            "value": "{user_id_1}"
        },
        {
            "value": "{user_id_2}"
        }
    ]
}
팀에 사용자 추가 acme-devs 팀에 dev-user2를 추가합니다:
이 작업은 서비스 계정이 아닌 사용자에게만 적용됩니다. 서비스 계정은 W&B Team 설정에서 관리하십시오.
PATCH /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add",
            "path": "members",
            "value": [
                {
                    "value": "{user_id}"
                }
            ]
        }
    ]
}
팀에서 특정 사용자 제거 acme-devs 팀에서 dev-user2를 제거합니다:
이 작업은 서비스 계정이 아닌 사용자에게만 적용됩니다. 서비스 계정은 W&B Team 설정에서 관리하십시오.
PATCH /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "remove",
            "path": "members[value eq \"{user_id}\"]"
        }
    ]
}
팀의 모든 사용자 제거 acme-devs에서 모든 사용자를 제거하려면:
이 작업은 서비스 계정이 아닌 사용자에게만 적용됩니다. 서비스 계정은 W&B 팀 설정에서 관리하십시오.
PATCH /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "remove",
            "path": "members"
        }
    ]
}

팀 삭제

  • 팀에는 추가 데이터가 연결되어 있기 때문에 현재 SCIM API에서는 팀 삭제를 지원하지 않습니다. 모든 관련 항목을 삭제하려는 것이 맞다면 앱에서 팀을 삭제하십시오.

Role 리소스

SCIM Role 리소스는 W&B 사용자 정의 역할에 매핑됩니다. 앞에서 언급했듯이 /Roles 엔드포인트는 공식 SCIM 스키마의 일부가 아니며, W&B 조직에서 사용자 정의 역할을 자동으로 관리할 수 있도록 W&B에서 /Roles 엔드포인트를 제공합니다.

사용자 지정 역할 조회

역할의 고유 ID를 제공하여 해당 사용자 지정 역할 정보를 조회합니다.

엔드포인트

  • URL: <host-url>/scim/Roles/{id}
  • 메서드: GET

예시

GET /scim/Roles/abc

커스텀 역할 목록 조회

W&B 조직의 모든 커스텀 역할 정보를 조회합니다.

엔드포인트

  • URL: <host-url>/scim/Roles
  • 메서드: GET

예시

GET /scim/Roles

사용자 정의 역할 생성

  • Endpoint: <host-url>/scim/Roles
  • Method: POST
  • Description: W&B 조직에 새 사용자 정의 역할을 생성합니다.
  • Supported Fields:
FieldTypeRequired
nameString사용자 정의 역할의 이름
descriptionString사용자 정의 역할의 설명
permissionsObject array각 객체에 w&bobject:operation 형식의 값을 갖는 name 문자열 필드가 포함된 권한 객체의 배열입니다. 예를 들어 W&B 실행에 대한 삭제 작업 권한 객체의 name 값은 run:delete가 됩니다.
inheritedFromString사용자 정의 역할이 상속받을 사전 정의된 역할입니다. member 또는 viewer 중 하나일 수 있습니다.

예시

POST /scim/Roles
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "Sample custom role",
    "description": "A sample custom role for example",
    "permissions": [
        {
            "name": "project:update"
        }
    ],
    "inheritedFrom": "member"
}

사용자 지정 역할 업데이트

역할에 권한 추가

  • 엔드포인트: <host-url>/scim/Roles/{id}
  • 메서드: PATCH
  • 설명: 기존 사용자 정의 역할에 권한을 추가합니다.
PATCH /scim/Roles/{role_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add",
            "path": "permissions",
            "value": [
                {
                    "name": "project:delete"
                },
                {
                    "name": "run:stop"
                }
            ]
        }
    ]
}

역할에서 권한 제거

  • Endpoint: <host-url>/scim/Roles/{id}
  • Method: PATCH
  • Description: 기존 커스텀 역할에서 권한을 제거합니다.
PATCH /scim/Roles/{role_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "remove",
            "path": "permissions",
            "value": [
                {
                    "name": "project:update"
                }
            ]
        }
    ]
}

커스텀 역할 교체

  • Endpoint: <host-url>/scim/Roles/{id}
  • Method: PUT
  • Description: 커스텀 역할의 전체 정의를 교체합니다.
PUT /scim/Roles/{role_id}
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "Updated custom role",
    "description": "Updated description for the custom role",
    "permissions": [
        {
            "name": "project:read"
        },
        {
            "name": "run:read"
        },
        {
            "name": "artifact:read"
        }
    ],
    "inheritedFrom": "viewer"
}

사용자 지정 역할 삭제

W&B 조직에서 사용자 지정 역할을 삭제합니다. 주의해서 사용하세요. 이 작업을 수행하면, 해당 사용자 지정 역할이 삭제되기 전까지 그 역할이 할당되어 있던 모든 사용자에게, 해당 사용자 지정 역할이 상속받았던 사전 정의 역할이 대신 할당됩니다.

엔드포인트

  • URL: <host-url>/scim/Roles/{id}
  • Method: DELETE

예시

DELETE /scim/Roles/abc

고급 기능

ETag 지원

SCIM API는 동시 수정 충돌을 방지하기 위해 조건부 업데이트에 ETag를 지원합니다. ETag는 ETag 응답 헤더와 meta.version 필드에 포함되어 반환됩니다.

ETags

ETags를 사용하려면:
  1. 현재 ETag 가져오기: 리소스를 GET할 때 응답의 ETag 헤더 값을 기록해 둡니다
  2. 조건부 업데이트: 리소스를 업데이트할 때 If-Match 헤더에 해당 ETag를 포함합니다

예시

# 사용자를 가져오고 ETag를 기록합니다
GET /scim/Users/abc
# 응답에 포함: ETag: W/"xyz123"

# ETag로 업데이트합니다
PATCH /scim/Users/abc
If-Match: W/"xyz123"

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "organizationRole",
            "value": "admin"
        }
    ]
}
412 Precondition Failed 오류 응답은 리소스가 사용자가 조회한 이후에 수정되었음을 나타냅니다.

오류 처리

SCIM API는 표준 SCIM 오류 응답을 반환합니다:
Status CodeDescription
200성공
201생성 완료
204콘텐츠 없음 (삭제 성공)
400잘못된 요청 - 유효하지 않은 매개변수 또는 요청 본문
401인증 실패 - 인증 정보가 유효하지 않음
403접근 거부 - 권한 부족
404리소스를 찾을 수 없음 - 리소스가 존재하지 않음
409충돌 - 리소스가 이미 존재함
412전제 조건 실패 - ETag 불일치
500내부 서버 오류

배포 유형별 구현 차이

W&B는 두 가지 별도의 SCIM API 구현을 제공하며, 배포 유형에 따라 지원되는 기능이 다릅니다:
기능Dedicated CloudSelf-Managed
사용자 이메일 업데이트-
사용자 표시 이름 업데이트-
사용자 비활성화
사용자 재활성화-
사용자당 여러 이메일-

제한 사항

  • 최대 결과 수: 요청당 최대 9,999개 항목.
  • Single-tenant 환경: 사용자당 하나의 이메일 주소만 지원합니다.
  • 팀 삭제: SCIM을 통해 팀 삭제는 지원되지 않습니다(W&B 웹 인터페이스를 사용하세요).
  • 사용자 재활성화: Multi-tenant Cloud 환경에서는 지원되지 않습니다.
  • 시트 한도: 조직의 시트 한도에 도달하면 작업이 실패할 수 있습니다.