메인 콘텐츠로 건너뛰기
SCIM 사용 예시를 보여주는 12분짜리 영상을 시청하세요

개요

System for Cross-domain Identity Management(SCIM) API를 사용하면 인스턴스 또는 조직 관리자가 W&B 조직 내의 사용자, 그룹, 커스텀 역할을 관리할 수 있습니다. SCIM 그룹은 W&B Teams에 매핑됩니다. 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 키를 사용해 전송하는 SCIM API 요청이 올바른 조직에 적용됩니다. 프로필 이미지를 클릭한 다음 User Settings를 클릭하고 Default API organization 설정을 확인합니다.선택한 호스팅 옵션에 따라 이 페이지의 예시에서 사용하는 <host-url> 플레이스홀더 값이 결정됩니다.또한 예시에서는 abcdef와 같은 사용자 ID를 사용합니다. 실제 요청과 응답에서는 사용자 ID에 대해 해시된 값이 사용됩니다.

인증

핵심 차이점을 검토한 후, 사용자 ID 또는 서비스 계정을 사용해 인증 방식을 선택하세요.

주요 차이점

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

Users

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

서비스 계정

자동화 또는 인테그레이션을 위해 조직 범위의 서비스 계정을 사용하세요. HTTP Authorization 헤더를 Basic <base64(:API-KEY)> 형식으로 구성합니다(앞에 오는 콜론과 비어 있는 사용자 이름 부분에 유의하세요). 조직 대시보드의 Service account 탭에서 서비스 계정 API 키를 찾을 수 있습니다. Organization-scoped service accounts를 참고하세요. 예를 들어, API 키 sa-p@55w0rd로 인증하려면 다음과 같이 합니다:
Authorization: Basic OnNhLXBANTV3MHJk

사용자 관리

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

사용자 조회

조직 내 특정 사용자의 정보를 조회합니다.
이 작업으로는 서비스 계정 정보를 조회할 수 없습니다.

엔드포인트

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

매개변수

매개변수유형필수 여부설명
idstring사용자의 고유 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
  • Method: POST

매개변수

ParameterTypeRequiredDescription
emailsarrayYes이메일 객체의 배열입니다. 기본 이메일(primary email)을 포함해야 합니다.
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에서 사용자의 프로비저닝을 해제하는 경우, 프로비저닝 해제 작업으로 인해 인스턴스 또는 조직에서 마지막으로 남은 관리자가 실수로 제거될 수 있습니다.운영 절차를 수립하는 데 도움이 필요하거나 관리자 액세스를 복구해야 하는 경우 지원팀에 문의하십시오.
조직에서 사용자를 완전히 삭제합니다.
이 작업은 서비스 계정이 아닌 사용자에게만 적용됩니다. 서비스 계정은 W&B Team 설정에서 삭제하십시오.

엔드포인트

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

매개변수

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

예시

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

사용자 이메일 업데이트

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

엔드포인트

  • URL: <host-url>/scim/Users/{id}
  • Method: 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}
  • Method: PATCH

매개변수

매개변수유형필수 여부설명
idstring사용자의 고유 ID
opstringreplace
pathstringdisplayName
valuestring새 표시 이름

예제

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}
  • Method: PATCH

매개변수

매개변수타입필수 여부설명
idstring비활성화할 사용자의 고유 ID
opstringreplace
valueobject{"active": false}를 포함하는 객체

예시

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

응답

(Status 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 Team 설정에서 관리하세요.
  • Multi-tenant Cloud에서는 사용자 재활성화가 지원되지 않습니다. 사용자의 접근 권한을 복원하려면 해당 사용자를 조직에 다시 추가해야 합니다. 사용자 생성을 참조하세요. Multi-tenant Cloud에서는 사용자의 계정을 조직에서 관리하지 않습니다. 사용자를 재활성화하려고 시도하면 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}
  • Method: PATCH

매개변수

ParameterTypeRequiredDescription
idstringYes사용자의 고유 ID
opstringYesreplace
pathstringYesorganizationRole
valuestringYes역할 이름(admin 또는 member)
조직 범위의 viewer 역할은 사용 중단되었으며, 이제 UI에서 할당할 수 없습니다. SCIM을 사용해 사용자에게 viewer 역할을 할당하는 경우:
  • 조직에서는 member 역할이 할당됩니다.
  • full 좌석 대신 Models viewer 좌석이 할당됩니다. 이를 통해 Models에는 읽기 전용으로만 액세스할 수 있고, Registry에는 전체 액세스가 허용됩니다. 사용 가능한 Models 좌석이 없는 경우 Seat limit reached 오류가 로그에 기록되고, 해당 멤버는 Models 액세스 없이 추가됩니다. 이후 좌석이 확보되면 업데이트할 수 있습니다.
  • full 좌석 대신 Weave viewer 좌석이 할당됩니다. 이를 통해 Weave에는 읽기 전용으로만 액세스할 수 있습니다. 사용 가능한 Weave 좌석이 없는 경우 Seat limit reached 오류가 로그에 기록되고, 해당 멤버는 Weave 액세스 없이 추가됩니다. 이후 좌석이 확보되면 업데이트할 수 있습니다.
  • 조직 수준에서 보이는 레지스트리에 대해서는 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}
  • Method: 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}
  • Method: 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"
                }
            ]
        }
    ]
}

Registry에서 제거

Registry에서 사용자를 제거합니다.
  • 제거 작업은 RFC 7644 SCIM 프로토콜 사양을 따릅니다. 특정 Registry에서 사용자를 제거하려면 "registryRoles[registryName eq \"{registry_name}\"]" 필터 구문을 사용하고, 모든 Registry에서 해당 사용자를 제거하려면 "registryRoles"를 사용하십시오.
  • 이 작업은 사용자에 대해서만 동작하며, 서비스 계정에는 적용되지 않습니다. 서비스 계정을 Registry에서 제거하려면 W&B Team 설정에서 제거하십시오.

엔드포인트

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

매개변수

매개변수유형필수 여부설명
idstring사용자의 고유 ID
opstringremove
pathstring"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 Team이 생성되며, 이후 SCIM 그룹에 대한 다른 작업은 이 팀을 기준으로 수행됩니다.

서비스 계정

SCIM을 통해 W&B Team이 생성되면, 서비스 계정의 팀 리소스에 대한 액세스를 유지하기 위해 조직 수준의 모든 서비스 계정이 자동으로 해당 팀에 추가됩니다.

그룹 필터링

/Groups 엔드포인트는 특정 Teams를 찾기 위한 필터링 기능을 지원합니다:

지원되는 필터

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

예제

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

팀 조회

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

엔드포인트

  • URL: <host-url>/scim/Groups/{id}
  • Method: GET

예시

GET /scim/Groups/ghi

Teams 목록

Teams 목록을 가져옵니다.

엔드포인트

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

예시

GET /scim/Groups

팀 생성

  • Endpoint: <host-url>/scim/Groups
  • Method: POST
  • Description: 새 팀 리소스를 생성합니다.
  • Supported Fields:
FieldTypeRequired
displayNameStringYes
membersMulti-Valued ArrayYes (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 member, remove member, replace members
  • remove 연산은 RFC 7644 SCIM 프로토콜 명세를 따릅니다. 특정 사용자를 제거하려면 members[value eq "{user_id}"] 필터 문법을 사용하고, 팀에서 모든 사용자를 제거하려면 members를 사용합니다. 사용자 식별: 멤버 관련 작업에서 {user_id}는 다음 중 하나가 될 수 있습니다:
  • 이 연산들은 서비스 계정이 아닌 사용자에게만 적용됩니다. 팀의 서비스 계정을 업데이트하려면 W&B Team 설정에서 변경하세요.
요청에서 {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-devsdev-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 Team 설정에서 관리하세요.
PATCH /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "remove",
            "path": "members"
        }
    ]
}

팀 삭제

  • Teams에는 추가 데이터가 연결되어 있기 때문에 현재 SCIM API에서는 Teams 삭제를 지원하지 않습니다. 모든 관련 항목을 완전히 삭제하겠다는 것을 최종 확인하려면 앱에서 Teams를 삭제하세요.

역할 리소스

SCIM 역할 리소스는 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 run 삭제 작업에 대한 권한 객체의 namerun:delete가 됩니다.
inheritedFromString커스텀 역할이 상속할 사전 정의된 역할입니다. member 또는 viewer 중 하나일 수 있습니다.

예시

POST /scim/Roles
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "예시용 커스텀 역할",
    "description": "예시용 커스텀 역할",
    "permissions": [
        {
            "name": "project:update"
        }
    ],
    "inheritedFrom": "member"
}

사용자 정의 역할 업데이트

역할에 권한 추가

  • 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": "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}
  • 메서드: DELETE

예시

DELETE /scim/Roles/abc

고급 기능

ETag Support

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

ETags

ETag을 사용하려면:
  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개의 항목을 반환합니다.
  • 단일 테넌트 환경: 사용자당 하나의 이메일 주소만 지원합니다.
  • 팀 삭제: SCIM을 통해는 지원되지 않으며, W&B 웹 인터페이스를 사용해야 합니다.
  • 사용자 재활성화: Multi-tenant Cloud 환경에서는 지원되지 않습니다.
  • 시트 한도: 조직의 시트 한도에 도달하면 작업이 실패할 수 있습니다.