이 섹션의 다중 페이지 출력 화면임. 여기를 클릭하여 프린트.

이 페이지의 일반 화면으로 돌아가기.

Identity and access management (IAM)

W&B 플랫폼은 W&B 내에 세 가지 IAM 범위, 즉 Organizations, TeamsProjects를 가지고 있습니다.

Organization

Organization 은 W&B 계정 또는 인스턴스의 루트 범위입니다. 계정 또는 인스턴스의 모든 작업은 사용자 관리, 팀 관리, 팀 내 프로젝트 관리, 사용량 추적 등을 포함하여 해당 루트 범위 내에서 수행됩니다.

Multi-tenant Cloud를 사용하는 경우, 각 Organization은 사업부, 개인 사용자, 다른 기업과의 합작 파트너십 등에 해당할 수 있습니다.

전용 클라우드(Dedicated Cloud) 또는 자체 관리 인스턴스를 사용하는 경우, 하나의 Organization에 해당합니다. 회사는 여러 사업부 또는 부서에 매핑하기 위해 여러 개의 전용 클라우드(Dedicated Cloud) 또는 자체 관리 인스턴스를 가질 수 있지만, 이는 사업 또는 부서 전체에서 AI 실무자를 관리하는 선택적인 방법입니다.

자세한 내용은 Organizations 관리를 참조하십시오.

Team

Team 은 Organization 내의 하위 범위로, 사업부/기능, 부서 또는 회사 내 프로젝트 팀에 매핑될 수 있습니다. 배포 유형 및 가격 계획에 따라 Organization 내에 여러 개의 Team이 있을 수 있습니다.

AI 프로젝트는 Team 컨텍스트 내에서 구성됩니다. Team 내의 엑세스 제어는 Team 관리자가 관리하며, 이들은 상위 Organization 수준의 관리자일 수도 아닐 수도 있습니다.

자세한 내용은 Team 추가 및 관리를 참조하십시오.

Project

Project 는 Team 내의 하위 범위로, 특정 의도된 결과를 가진 실제 AI 프로젝트에 매핑됩니다. Team 내에 여러 개의 Project가 있을 수 있습니다. 각 Project에는 누가 엑세스할 수 있는지 결정하는 가시성 모드가 있습니다.

모든 Project는 WorkspacesReports로 구성되며, 관련 Artifacts, SweepsAutomations에 연결됩니다.

1 - Authentication

1.1 - Configure SSO with LDAP

W&B 서버 LDAP 서버로 인증 정보를 인증합니다. 다음 가이드는 W&B 서버의 설정을 구성하는 방법을 설명합니다. 필수 및 선택적 설정과 시스템 설정 UI에서 LDAP 연결을 구성하는 방법에 대한 지침을 다룹니다. 또한 어드레스, 기본 식별 이름, 속성과 같은 LDAP 설정의 다양한 입력에 대한 정보를 제공합니다. 이러한 속성은 W&B 앱 UI 또는 환경 변수를 사용하여 지정할 수 있습니다. 익명 바인딩 또는 관리자 DN 및 비밀번호를 사용하여 바인딩을 설정할 수 있습니다.

LDAP 연결 구성

  1. W&B 앱으로 이동합니다.
  2. 오른쪽 상단에서 프로필 아이콘을 선택합니다. 드롭다운에서 시스템 설정을 선택합니다.
  3. LDAP 클라이언트 구성을 토글합니다.
  4. 양식에 세부 정보를 추가합니다. 각 입력에 대한 자세한 내용은 설정 파라미터 섹션을 참조하세요.
  5. 설정 업데이트를 클릭하여 설정을 테스트합니다. 이렇게 하면 W&B 서버와 테스트 클라이언트/연결이 설정됩니다.
  6. 연결이 확인되면 LDAP 인증 활성화를 토글하고 설정 업데이트 버튼을 선택합니다.

다음 환경 변수를 사용하여 LDAP 연결을 설정합니다.

환경 변수 필수
LOCAL_LDAP_ADDRESS ldaps://ldap.example.com:636
LOCAL_LDAP_BASE_DN email=mail,group=gidNumber
LOCAL_LDAP_BIND_DN 아니요 cn=admin, dc=example,dc=org
LOCAL_LDAP_BIND_PW 아니요
LOCAL_LDAP_ATTRIBUTES email=mail, group=gidNumber
LOCAL_LDAP_TLS_ENABLE 아니요
LOCAL_LDAP_GROUP_ALLOW_LIST 아니요
LOCAL_LDAP_LOGIN 아니요

각 환경 변수의 정의는 설정 파라미터 섹션을 참조하세요. 명확성을 위해 환경 변수 접두사 LOCAL_LDAP이 정의 이름에서 생략되었습니다.

설정 파라미터

다음 표는 필수 및 선택적 LDAP 설정을 나열하고 설명합니다.

환경 변수 정의 필수
ADDRESS 이는 W&B 서버를 호스팅하는 VPC 내의 LDAP 서버의 어드레스입니다.
BASE_DN 루트 경로는 검색이 시작되는 위치이며 이 디렉토리로 쿼리를 수행하는 데 필요합니다.
BIND_DN LDAP 서버에 등록된 관리 사용자의 경로입니다. LDAP 서버가 인증되지 않은 바인딩을 지원하지 않는 경우에 필요합니다. 지정된 경우 W&B 서버는 이 사용자로 LDAP 서버에 연결합니다. 그렇지 않으면 W&B 서버는 익명 바인딩을 사용하여 연결합니다. 아니요
BIND_PW 관리 사용자의 비밀번호이며 바인딩을 인증하는 데 사용됩니다. 비워두면 W&B 서버는 익명 바인딩을 사용하여 연결합니다. 아니요
ATTRIBUTES 이메일 및 그룹 ID 속성 이름을 쉼표로 구분된 문자열 값으로 제공합니다.
TLS_ENABLE TLS를 활성화합니다. 아니요
GROUP_ALLOW_LIST 그룹 허용 목록입니다. 아니요
LOGIN 이는 W&B 서버에 LDAP를 사용하여 인증하도록 지시합니다. True 또는 False로 설정합니다. 선택적으로 LDAP 설정을 테스트하려면 이를 false로 설정합니다. LDAP 인증을 시작하려면 이를 true로 설정합니다. 아니요

1.2 - Configure SSO with OIDC

Weights & Biases 서버는 OpenID Connect (OIDC) 호환 ID 공급자를 지원하므로 Okta, Keycloak, Auth0, Google, Entra와 같은 외부 ID 공급자를 통해 사용자 ID 및 그룹 멤버십을 관리할 수 있습니다.

OpenID Connect (OIDC)

W&B 서버는 외부 IdP(Identity Provider)와 통합하기 위해 다음과 같은 OIDC 인증 흐름을 지원합니다.

  1. Form Post를 사용하는 암시적 흐름
  2. PKCE(Proof Key for Code Exchange)를 사용하는 Authorization Code 흐름

이러한 흐름은 사용자를 인증하고 엑세스 제어를 관리하는 데 필요한 ID 정보(ID 토큰 형태)를 W&B 서버에 제공합니다.

ID 토큰은 이름, 사용자 이름, 이메일, 그룹 멤버십과 같은 사용자 ID 정보가 포함된 JWT입니다. W&B 서버는 이 토큰을 사용하여 사용자를 인증하고 시스템 내 적절한 역할 또는 그룹에 매핑합니다.

W&B 서버의 맥락에서 엑세스 토큰은 사용자를 대신하여 API에 대한 요청을 승인하지만 W&B 서버의 주요 관심사는 사용자 인증 및 ID이므로 ID 토큰만 필요합니다.

환경 변수를 사용하여 IAM 옵션 구성전용 클라우드 또는 자체 관리형 인스턴스에 설정할 수 있습니다.

전용 클라우드 또는 자체 관리형 W&B 서버 설치를 위해 ID 공급자를 구성하는 데 도움이 되도록 다양한 IdP에 대한 다음 가이드라인을 따르세요. SaaS 버전의 W&B를 사용하는 경우 조직의 Auth0 테넌트 구성에 대한 지원은 support@wandb.com으로 문의하세요.

인증을 위해 AWS Cognito를 설정하려면 아래 절차를 따르세요.

  1. 먼저 AWS 계정에 로그인하고 AWS Cognito 앱으로 이동합니다.

    인증이 아닌 권한 부여에 OIDC를 사용하는 경우 퍼블릭 클라이언트는 설정을 간소화합니다.
  2. 허용된 콜백 URL을 제공하여 IdP에서 애플리케이션을 구성합니다.

    • http(s)://YOUR-W&B-HOST/oidc/callback을 콜백 URL로 추가합니다. YOUR-W&B-HOST를 W&B 호스트 경로로 바꿉니다.
  3. IdP가 유니버설 로그아웃을 지원하는 경우 로그아웃 URL을 http(s)://YOUR-W&B-HOST로 설정합니다. YOUR-W&B-HOST를 W&B 호스트 경로로 바꿉니다.

    예를 들어 애플리케이션이 https://wandb.mycompany.com에서 실행 중인 경우 YOUR-W&B-HOSTwandb.mycompany.com으로 바꿉니다.

    아래 이미지는 AWS Cognito에서 허용된 콜백 및 로그아웃 URL을 제공하는 방법을 보여줍니다.

    인스턴스에 여러 호스트에서 엑세스할 수 있는 경우 여기에 모두 포함해야 합니다.

    _wandb/local_은 기본적으로 form_post 응답 유형과 함께 암시적 권한을 사용합니다.

    PKCE Code Exchange 흐름을 사용하는 authorization_code 권한을 수행하도록 _wandb/local_을 구성할 수도 있습니다.

  4. AWS Cognito가 앱에 토큰을 전달하는 방법을 구성하려면 하나 이상의 OAuth 권한 유형을 선택합니다.

  5. W&B에는 특정 OpenID Connect (OIDC) 범위가 필요합니다. AWS Cognito 앱에서 다음을 선택합니다.

    • “openid”
    • “profile”
    • “email”

    예를 들어 AWS Cognito 앱 UI는 다음 이미지와 유사해야 합니다.

    필수 필드

    설정 페이지에서 인증 방법을 선택하거나 OIDC_AUTH_METHOD 환경 변수를 설정하여 _wandb/local_에 사용할 권한을 알립니다.

    인증 방법을 pkce로 설정해야 합니다.

  6. 클라이언트 ID와 OIDC 발급자 URL이 필요합니다. OpenID 검색 문서는 $OIDC_ISSUER/.well-known/openid-configuration에서 사용할 수 있어야 합니다.

    예를 들어 사용자 풀 섹션 내의 앱 통합 탭에서 사용자 풀 ID를 Cognito IdP URL에 추가하여 발급자 URL을 생성할 수 있습니다.

    AWS Cognito의 발급자 URL 스크린샷

    IDP URL에 “Cognito 도메인"을 사용하지 마세요. Cognito는 https://cognito-idp.$REGION.amazonaws.com/$USER_POOL_ID에서 검색 문서를 제공합니다.

인증을 위해 Okta를 설정하려면 아래 절차를 따르세요.

  1. https://login.okta.com/에서 Okta 포털에 로그인합니다.

  2. 왼쪽에서 애플리케이션을 선택한 다음 애플리케이션을 다시 선택합니다.

  3. “앱 통합 생성"을 클릭합니다.

  4. “새 앱 통합 만들기"라는 화면에서 OIDC - OpenID Connect단일 페이지 애플리케이션을 선택합니다. 그런 다음 “다음"을 클릭합니다.

  5. “새 단일 페이지 앱 통합"이라는 화면에서 다음과 같이 값을 채우고 저장을 클릭합니다.

    • 앱 통합 이름(예: “Weights & Biases”)
    • 권한 유형: Authorization CodeImplicit (hybrid) 모두 선택
    • 로그인 리디렉션 URI: https://YOUR_W_AND_B_URL/oidc/callback
    • 로그아웃 리디렉션 URI: https://YOUR_W_AND_B_URL/logout
    • 할당: 지금 그룹 할당 건너뛰기 선택
  6. 방금 생성한 Okta 애플리케이션의 개요 화면에서 일반 탭 아래의 클라이언트 자격 증명 아래에 있는 클라이언트 ID를 기록해 둡니다.

  7. Okta OIDC 발급자 URL을 식별하려면 왼쪽에서 설정을 선택한 다음 계정을 선택합니다. Okta UI는 조직 연락처 아래에 회사 이름을 표시합니다.

OIDC 발급자 URL의 형식은 https://COMPANY.okta.com입니다. COMPANY를 해당 값으로 바꿉니다. 기록해 둡니다.

  1. https://portal.azure.com/에서 Azure Portal에 로그인합니다.

  2. “Microsoft Entra ID” 서비스를 선택합니다.

  3. 왼쪽에서 “앱 등록"을 선택합니다.

  4. 상단에서 “새 등록"을 클릭합니다.

    “애플리케이션 등록"이라는 화면에서 다음과 같이 값을 채웁니다.

    • 이름(예: “Weights and Biases application”)을 지정합니다.

    • 기본적으로 선택된 계정 유형은 “이 조직 디렉터리의 계정만 해당(기본 디렉터리만 해당 - 단일 테넌트)“입니다. 필요한 경우 수정합니다.

    • 유형으로 리디렉션 URI를 https://YOUR_W_AND_B_URL/oidc/callback 값으로 구성합니다.

    • “등록"을 클릭합니다.

    • “애플리케이션(클라이언트) ID” 및 “디렉터리(테넌트) ID"를 기록해 둡니다.

  5. 왼쪽에서 인증을 클릭합니다.

    • 프런트 채널 로그아웃 URL 아래에 https://YOUR_W_AND_B_URL/logout을 지정합니다.

    • “저장"을 클릭합니다.

  6. 왼쪽에서 “인증서 및 암호"를 클릭합니다.

    • “클라이언트 암호"를 클릭한 다음 “새 클라이언트 암호"를 클릭합니다.

      “클라이언트 암호 추가"라는 화면에서 다음과 같이 값을 채웁니다.

      • 설명(예: “wandb”)을 입력합니다.
      • “만료"는 그대로 두거나 필요한 경우 변경합니다.
      • “추가"를 클릭합니다.
    • 암호의 “값"을 기록해 둡니다. “암호 ID"는 필요하지 않습니다.

이제 세 가지 값을 기록해 두어야 합니다.

  • OIDC 클라이언트 ID
  • OIDC 클라이언트 암호
  • OIDC 발급자 URL에 테넌트 ID가 필요합니다.

OIDC 발급자 URL의 형식은 https://login.microsoftonline.com/${TenantID}/v2.0입니다.

W&B 서버에서 SSO 설정

SSO를 설정하려면 관리자 권한과 다음 정보가 필요합니다.

  • OIDC 클라이언트 ID
  • OIDC 인증 방법(implicit 또는 pkce)
  • OIDC 발급자 URL
  • OIDC 클라이언트 암호(선택 사항, IdP 설정 방법에 따라 다름)

W&B 서버 UI를 사용하거나 환경 변수wandb/local 포드로 전달하여 SSO를 구성할 수 있습니다. 환경 변수가 UI보다 우선합니다.

시스템 콘솔은 시스템 설정 페이지의 후속 버전입니다. W&B Kubernetes Operator 기반 배포에서 사용할 수 있습니다.

  1. W&B 관리 콘솔 엑세스를 참조하세요.

  2. 설정으로 이동한 다음 인증으로 이동합니다. 유형 드롭다운에서 OIDC를 선택합니다.

  3. 값을 입력합니다.

  4. 저장을 클릭합니다.

  5. 로그아웃한 다음 다시 로그인합니다. 이번에는 IdP 로그인 화면을 사용합니다.

  1. Weights & Biases 인스턴스에 로그인합니다.

  2. W&B 앱으로 이동합니다.

  3. 드롭다운에서 시스템 설정을 선택합니다.

  4. 발급자, 클라이언트 ID 및 인증 방법을 입력합니다.

  5. 설정 업데이트를 선택합니다.

SAML(Security Assertion Markup Language)

W&B 서버는 SAML을 지원하지 않습니다.

1.3 - Use federated identities with SDK

W&B SDK를 통해 조직의 자격 증명을 사용하여 로그인하려면 아이덴티티 연동을 사용하세요. W&B 조직 관리자가 조직에 대해 SSO를 구성한 경우, 이미 조직의 자격 증명을 사용하여 W&B 앱 UI에 로그인하고 있을 것입니다. 이러한 의미에서 아이덴티티 연동은 W&B SDK에 대한 SSO와 유사하지만 JSON Web Tokens (JWTs)를 직접 사용한다는 차이점이 있습니다. API 키 대신 아이덴티티 연동을 사용할 수 있습니다.

RFC 7523은 SDK와의 아이덴티티 연동의 기본 토대를 형성합니다.

JWT 발급자 설정

첫 번째 단계로 조직 관리자는 W&B 조직과 공개적으로 엑세스 가능한 JWT 발급자 간의 연동을 설정해야 합니다.

  • 조직 대시보드에서 설정 탭으로 이동합니다.
  • 인증 옵션에서 JWT 발급자 설정을 누릅니다.
  • 텍스트 상자에 JWT 발급자 URL을 추가하고 만들기를 누릅니다.

W&B는 자동으로 ${ISSUER_URL}/.well-known/oidc-configuration 경로에서 OIDC 검색 문서를 찾고 검색 문서의 관련 URL에서 JSON Web Key Set (JWKS)을 찾으려고 시도합니다. JWKS는 JWT가 관련 아이덴티티 공급자에 의해 발급되었는지 확인하기 위해 JWT의 실시간 유효성 검사에 사용됩니다.

JWT를 사용하여 W&B에 엑세스

W&B 조직에 대해 JWT 발급자가 설정되면 사용자는 해당 아이덴티티 공급자가 발급한 JWT를 사용하여 관련 W&B 프로젝트에 엑세스할 수 있습니다. JWT를 사용하는 메커니즘은 다음과 같습니다.

  • 조직에서 사용할 수 있는 메커니즘 중 하나를 사용하여 아이덴티티 공급자에 로그인해야 합니다. 일부 공급자는 API 또는 SDK를 사용하여 자동화된 방식으로 엑세스할 수 있지만 일부는 관련 UI를 사용해야만 엑세스할 수 있습니다. 자세한 내용은 W&B 조직 관리자 또는 JWT 발급자 소유자에게 문의하세요.
  • 아이덴티티 공급자에 로그인한 후 JWT를 검색했으면 안전한 위치의 파일에 저장하고 환경 변수 WANDB_IDENTITY_TOKEN_FILE에 절대 파일 경로를 구성합니다.
  • W&B SDK 또는 CLI를 사용하여 W&B 프로젝트에 엑세스합니다. SDK 또는 CLI는 JWT를 자동으로 감지하고 JWT가 성공적으로 유효성 검사된 후 W&B 엑세스 토큰으로 교환해야 합니다. W&B 엑세스 토큰은 AI 워크플로우를 활성화하기 위한 관련 API에 엑세스하는 데 사용됩니다. 즉, run, 메트릭, Artifacts 등을 로그합니다. 엑세스 토큰은 기본적으로 ~/.config/wandb/credentials.json 경로에 저장됩니다. 환경 변수 WANDB_CREDENTIALS_FILE을 지정하여 해당 경로를 변경할 수 있습니다.

JWT 유효성 검사

JWT를 W&B 엑세스 토큰으로 교환한 다음 프로젝트에 엑세스하는 워크플로우의 일부로 JWT는 다음 유효성 검사를 거칩니다.

  • JWT 서명은 W&B 조직 수준에서 JWKS를 사용하여 확인됩니다. 이것이 첫 번째 방어선이며, 실패하면 JWKS 또는 JWT 서명 방식에 문제가 있음을 의미합니다.
  • JWT의 iss 클레임은 조직 수준에서 구성된 발급자 URL과 같아야 합니다.
  • JWT의 sub 클레임은 W&B 조직에 구성된 사용자의 이메일 주소와 같아야 합니다.
  • JWT의 aud 클레임은 AI 워크플로우의 일부로 엑세스하는 프로젝트를 수용하는 W&B 조직의 이름과 같아야 합니다. 전용 클라우드 또는 자체 관리 인스턴스의 경우 인스턴스 수준 환경 변수 SKIP_AUDIENCE_VALIDATIONtrue로 구성하여 대상 클레임의 유효성 검사를 건너뛰거나 wandb를 대상으로 사용할 수 있습니다.
  • JWT의 exp 클레임은 토큰이 유효한지 또는 만료되었는지 확인하기 위해 검사되며 갱신해야 합니다.

외부 서비스 계정

W&B는 오랫동안 오래 지속되는 API 키가 있는 기본 제공 서비스 계정을 지원해 왔습니다. SDK 및 CLI에 대한 아이덴티티 연동 기능을 사용하면 조직 수준에서 구성된 동일한 발급자가 발급한 경우 JWT를 인증에 사용할 수 있는 외부 서비스 계정을 가져올 수도 있습니다. 팀 관리자는 기본 제공 서비스 계정과 마찬가지로 팀 범위 내에서 외부 서비스 계정을 구성할 수 있습니다.

외부 서비스 계정을 구성하려면:

  • 팀의 서비스 계정 탭으로 이동합니다.
  • 새 서비스 계정을 누릅니다.
  • 서비스 계정 이름을 제공하고 인증 방법으로 Federated Identity를 선택하고 Subject를 제공하고 만들기를 누릅니다.

외부 서비스 계정의 sub 클레임은 팀 관리자가 팀 수준 서비스 계정 탭에서 해당 제목으로 구성한 것과 동일해야 합니다. 해당 클레임은 JWT 유효성 검사의 일부로 확인됩니다. aud 클레임 요구 사항은 인간 사용자 JWT의 요구 사항과 유사합니다.

외부 서비스 계정의 JWT를 사용하여 W&B에 엑세스할 때 초기 JWT를 생성하고 지속적으로 갱신하는 워크플로우를 자동화하는 것이 일반적으로 더 쉽습니다. 외부 서비스 계정을 사용하여 기록된 run을 인간 사용자에게 귀속시키려면 기본 제공 서비스 계정에 대해 수행되는 방식과 유사하게 AI 워크플로우에 대해 환경 변수 WANDB_USERNAME 또는 WANDB_USER_EMAIL을 구성할 수 있습니다.

1.4 - Use service accounts to automate workflows

org 및 팀 범위의 서비스 계정을 사용하여 자동화된 워크플로우 또는 비대화형 워크플로우를 관리하세요.

서비스 계정은 팀 내 또는 팀 간의 프로젝트에서 일반적인 작업을 자동으로 수행할 수 있는 비인간 또는 머신 사용자를 나타냅니다.

  • 조직 관리자는 조직 범위에서 서비스 계정을 만들 수 있습니다.
  • 팀 관리자는 해당 팀 범위에서 서비스 계정을 만들 수 있습니다.

서비스 계정의 API 키를 통해 호출자는 서비스 계정 범위 내에서 프로젝트를 읽거나 쓸 수 있습니다.

서비스 계정을 사용하면 여러 사용자 또는 팀에서 워크플로우를 중앙 집중식으로 관리하고, W&B Models에 대한 실험 트래킹을 자동화하거나, W&B Weave에 대한 추적을 기록할 수 있습니다. 환경 변수 WANDB_USERNAME 또는 WANDB_USER_EMAIL을 사용하여 서비스 계정에서 관리하는 워크플로우와 인간 사용자의 ID를 연결할 수 있습니다.

조직 범위 서비스 계정

조직 범위의 서비스 계정은 제한된 프로젝트를 제외하고 팀에 관계없이 조직의 모든 프로젝트에서 읽고 쓸 수 있는 권한을 갖습니다. 조직 범위의 서비스 계정이 제한된 프로젝트에 엑세스하려면 해당 프로젝트의 관리자가 서비스 계정을 프로젝트에 명시적으로 추가해야 합니다.

조직 관리자는 조직 또는 계정 대시보드의 Service Accounts 탭에서 조직 범위의 서비스 계정에 대한 API 키를 얻을 수 있습니다.

새로운 조직 범위의 서비스 계정을 만들려면:

  • 조직 대시보드의 Service Accounts 탭에서 New service account 버튼을 클릭합니다.
  • Name을 입력합니다.
  • 서비스 계정의 기본 팀을 선택합니다.
  • Create를 클릭합니다.
  • 새로 생성된 서비스 계정 옆에 있는 Copy API key를 클릭합니다.
  • 복사한 API 키를 비밀 관리자 또는 안전하지만 엑세스 가능한 다른 위치에 저장합니다.

팀 범위 서비스 계정

팀 범위의 서비스 계정은 해당 팀의 제한된 프로젝트를 제외하고 팀 내의 모든 프로젝트에서 읽고 쓸 수 있습니다. 팀 범위의 서비스 계정이 제한된 프로젝트에 엑세스하려면 해당 프로젝트의 관리자가 서비스 계정을 프로젝트에 명시적으로 추가해야 합니다.

팀 관리자는 팀의 <WANDB_HOST_URL>/<your-team-name>/service-accounts에서 팀 범위의 서비스 계정에 대한 API 키를 얻을 수 있습니다. 또는 팀의 Team settings로 이동한 다음 Service Accounts 탭을 참조할 수 있습니다.

팀의 새로운 팀 범위 서비스 계정을 만들려면:

  • 팀의 Service Accounts 탭에서 New service account 버튼을 클릭합니다.
  • Name을 입력합니다.
  • 인증 방법으로 **Generate API key (Built-in)**을 선택합니다.
  • Create를 클릭합니다.
  • 새로 생성된 서비스 계정 옆에 있는 Copy API key를 클릭합니다.
  • 복사한 API 키를 비밀 관리자 또는 안전하지만 엑세스 가능한 다른 위치에 저장합니다.

팀 범위의 서비스 계정을 사용하는 모델 트레이닝 또는 생성적 AI 앱 환경에서 팀을 구성하지 않으면 모델 run 또는 weave 추적이 서비스 계정의 상위 팀 내에서 명명된 프로젝트에 기록됩니다. 이러한 시나리오에서 WANDB_USERNAME 또는 WANDB_USER_EMAIL 변수를 사용한 사용자 속성은 참조된 사용자가 서비스 계정의 상위 팀에 속하지 않는 한 작동하지 않습니다.

외부 서비스 계정

Built-in 서비스 계정 외에도 W&B는 JSON 웹 토큰(JWT)을 발급할 수 있는 ID 공급자(IdP)와 함께 Identity federation를 사용하여 W&B SDK 및 CLI를 통해 팀 범위의 External service accounts를 지원합니다.

2 - Access management

조직 내에서 사용자 및 팀 관리하기

고유한 조직 도메인으로 W&B에 처음 가입하는 사용자는 해당 조직의 인스턴스 관리자 역할로 지정됩니다. 조직 관리자는 특정 사용자에게 팀 관리자 역할을 할당합니다.

팀 관리자는 팀 내에서 관리 권한을 가진 조직의 사용자입니다.

조직 관리자는 https://wandb.ai/account-settings/에서 조직의 계정 설정을 엑세스하고 사용하여 사용자를 초대하고, 사용자의 역할을 할당하거나 업데이트하고, 팀을 만들고, 조직에서 사용자를 제거하고, 청구 관리자를 할당하는 등의 작업을 수행할 수 있습니다. 자세한 내용은 사용자 추가 및 관리를 참조하세요.

조직 관리자가 팀을 생성하면 인스턴스 관리자 또는 팀 관리자는 다음을 수행할 수 있습니다.

  • 기본적으로 관리자만 해당 팀에 사용자를 초대하거나 팀에서 사용자를 제거할 수 있습니다. 이 행동 을 변경하려면 팀 설정을 참조하세요.
  • 팀 멤버의 역할을 할당하거나 업데이트합니다.
  • 새 사용자가 조직에 가입할 때 자동으로 팀에 추가합니다.

조직 관리자와 팀 관리자는 모두 https://wandb.ai/<your-team-name>에서 팀 대시보드 를 사용하여 팀을 관리합니다. 자세한 내용과 팀의 기본 개인 정보 보호 설정을 구성하려면 팀 추가 및 관리를 참조하세요.

특정 Projects 에 대한 가시성 제한

W&B project 의 범위를 정의하여 누가 W&B runs 를 보고, 편집하고, 제출할 수 있는지 제한합니다. 팀이 민감하거나 기밀 데이터를 다루는 경우 project 를 볼 수 있는 사람을 제한하는 것이 특히 유용합니다.

조직 관리자, 팀 관리자 또는 project 소유자는 project 의 가시성을 설정하고 편집할 수 있습니다.

자세한 내용은 Project visibility를 참조하세요.

2.1 - Manage your organization

Organizations의 관리자는 Organization 내에서 개별 사용자를 관리하고 Teams를 관리할 수 있습니다.

Team 관리자는 Teams를 관리할 수 있습니다.

Organization에서 사용자 관리를 간소화하려면 사용자 및 Team 관리 자동화를 참조하십시오.

Organization 이름 변경

  1. https://wandb.ai/home 으로 이동합니다.
  2. 페이지 오른쪽 상단에서 User menu 드롭다운을 선택합니다. 드롭다운의 Account 섹션에서 Settings를 선택합니다.
  3. Settings 탭에서 General을 선택합니다.
  4. Change name 버튼을 선택합니다.
  5. 나타나는 모달에서 Organization의 새 이름을 입력하고 Save name 버튼을 선택합니다.

사용자 추가 및 관리

관리자는 Organization의 대시보드를 사용하여 다음을 수행할 수 있습니다.

  • 사용자 초대 또는 제거
  • 사용자의 Organization 역할 할당 또는 업데이트, 사용자 지정 역할 생성
  • 결제 관리자 할당

Organization 관리자가 사용자를 Organization에 추가할 수 있는 방법은 여러 가지가 있습니다.

  1. Member-by-invite
  2. SSO를 사용한 자동 프로비저닝
  3. 도메인 캡처

Seats 및 가격

다음 표는 Models 및 Weave의 Seats 작동 방식을 요약한 것입니다.

제품 Seats 비용 기준
Models 설정당 지불 보유한 Models 유료 Seats 수와 발생한 사용량에 따라 전체 구독 비용이 결정됩니다. 각 사용자는 Full, Viewer, No-Access의 세 가지 사용 가능한 Seat 유형 중 하나를 할당받을 수 있습니다.
Weave 무료 사용량 기준

사용자 초대

관리자는 사용자를 Organization 내의 특정 Teams뿐만 아니라 Organization에 초대할 수 있습니다.

  1. https://wandb.ai/home 으로 이동합니다.
  2. 페이지 오른쪽 상단에서 User menu 드롭다운을 선택합니다. 드롭다운의 Account 섹션에서 Users를 선택합니다.
  3. Invite new user를 선택합니다.
  4. 나타나는 모달에서 Email or username 필드에 사용자의 이메일 또는 사용자 이름을 입력합니다.
  5. (권장) Choose teams 드롭다운 메뉴에서 사용자를 Team에 추가합니다.
  6. Select role 드롭다운에서 사용자에게 할당할 역할을 선택합니다. 사용자의 역할은 나중에 변경할 수 있습니다. 가능한 역할에 대한 자세한 내용은 역할 할당에 나열된 표를 참조하십시오.
  7. Send invite 버튼을 선택합니다.

Send invite 버튼을 선택하면 W&B에서 타사 이메일 서버를 사용하여 사용자 이메일로 초대 링크를 보냅니다. 사용자는 초대를 수락하면 Organization에 액세스할 수 있습니다.

  1. https://<org-name>.io/console/settings/로 이동합니다. <org-name>을 Organization 이름으로 바꿉니다.
  2. Add user 버튼을 선택합니다.
  3. 나타나는 모달에서 Email 필드에 새 사용자의 이메일을 입력합니다.
  4. Role 드롭다운에서 사용자에게 할당할 역할을 선택합니다. 사용자의 역할은 나중에 변경할 수 있습니다. 가능한 역할에 대한 자세한 내용은 역할 할당에 나열된 표를 참조하십시오.
  5. W&B에서 타사 이메일 서버를 사용하여 사용자 이메일로 초대 링크를 보내려면 Send invite email to user 상자를 선택합니다.
  6. Add new user 버튼을 선택합니다.

사용자 자동 프로비저닝

SSO를 구성하고 SSO 제공업체에서 허용하는 경우 일치하는 이메일 도메인을 가진 W&B 사용자는 Single Sign-On (SSO)으로 W&B Organization에 로그인할 수 있습니다. SSO는 모든 Enterprise 라이선스에서 사용할 수 있습니다.

W&B는 자동 프로비저닝 사용자에게 기본적으로 “Member” 역할을 할당합니다. 자동 프로비저닝 사용자의 역할은 언제든지 변경할 수 있습니다.

SSO를 통한 자동 프로비저닝 사용자는 Dedicated Cloud 인스턴스 및 Self-managed 배포에서 기본적으로 켜져 있습니다. 자동 프로비저닝을 끌 수 있습니다. 자동 프로비저닝을 끄면 특정 사용자를 W&B Organization에 선택적으로 추가할 수 있습니다.

다음 탭에서는 배포 유형에 따라 SSO를 끄는 방법을 설명합니다.

Dedicated Cloud 인스턴스를 사용 중이고 SSO를 통한 자동 프로비저닝을 끄려면 W&B Team에 문의하십시오.

W&B Console을 사용하여 SSO를 통한 자동 프로비저닝을 끕니다.

  1. https://<org-name>.io/console/settings/로 이동합니다. <org-name>을 Organization 이름으로 바꿉니다.
  2. Security를 선택합니다.
  3. Disable SSO Provisioning을 선택하여 SSO를 통한 자동 프로비저닝을 끕니다.

사용자 지정 역할 만들기

Organization 관리자는 View-Only 또는 Member 역할을 기반으로 새 역할을 구성하고 세분화된 엑세스 제어를 위해 추가 권한을 추가할 수 있습니다. Team 관리자는 Team member에게 사용자 지정 역할을 할당할 수 있습니다. 사용자 지정 역할은 Organization 수준에서 생성되지만 Team 수준에서 할당됩니다.

사용자 지정 역할을 만들려면:

  1. https://wandb.ai/home 으로 이동합니다.
  2. 페이지 오른쪽 상단에서 User menu 드롭다운을 선택합니다. 드롭다운의 Account 섹션에서 Settings를 선택합니다.
  3. Roles를 클릭합니다.
  4. Custom roles 섹션에서 Create a role을 클릭합니다.
  5. 역할 이름을 입력합니다. 선택적으로 설명을 입력합니다.
  6. 사용자 지정 역할의 기반으로 사용할 역할을 선택합니다 (Viewer 또는 Member).
  7. 권한을 추가하려면 Search permissions 필드를 클릭한 다음 추가할 권한을 하나 이상 선택합니다.
  8. 역할에 있는 권한을 요약하는 Custom role permissions 섹션을 검토합니다.
  9. Create Role을 클릭합니다.

W&B Console을 사용하여 SSO를 통한 자동 프로비저닝을 끕니다.

  1. https://<org-name>.io/console/settings/로 이동합니다. <org-name>을 Organization 이름으로 바꿉니다.
  2. Custom roles 섹션에서 Create a role을 클릭합니다.
  3. 역할 이름을 입력합니다. 선택적으로 설명을 입력합니다.
  4. 사용자 지정 역할의 기반으로 사용할 역할을 선택합니다 (Viewer 또는 Member).
  5. 권한을 추가하려면 Search permissions 필드를 클릭한 다음 추가할 권한을 하나 이상 선택합니다.
  6. 역할에 있는 권한을 요약하는 Custom role permissions 섹션을 검토합니다.
  7. Create Role을 클릭합니다.

이제 Team 관리자는 Team 설정에서 Team의 구성원에게 사용자 지정 역할을 할당할 수 있습니다.

도메인 캡처

도메인 캡처는 직원이 회사 Organization에 가입하여 새 사용자가 회사 관할 구역 외부에서 에셋을 생성하지 않도록 하는 데 도움이 됩니다.

도메인 캡처를 사용하면 @example.com과 같은 회사 이메일 주소를 가진 사람들을 W&B SaaS Cloud Organization에 자동으로 추가할 수 있습니다. 이는 모든 직원이 올바른 Organization에 가입하고 새 사용자가 회사 관할 구역 외부에서 에셋을 생성하지 않도록 하는 데 도움이 됩니다.

다음 표는 도메인 캡처 활성화 여부에 따른 신규 및 기존 사용자의 행동을 요약한 것입니다.

도메인 캡처 사용 도메인 캡처 사용 안 함
신규 사용자 확인된 도메인에서 W&B에 가입하는 사용자는 Organization의 기본 Team에 자동으로 구성원으로 추가됩니다. Team 가입을 활성화하면 가입 시 추가 Team을 선택할 수 있습니다. 초대장을 통해 다른 Organization 및 Team에 가입할 수도 있습니다. 사용자는 사용 가능한 중앙 집중식 Organization이 있는지 모르고 W&B 계정을 만들 수 있습니다.
초대된 사용자 초대된 사용자는 초대를 수락하면 자동으로 Organization에 가입합니다. 초대된 사용자는 Organization의 기본 Team에 자동으로 구성원으로 추가되지 않습니다. 초대장을 통해 다른 Organization 및 Team에 가입할 수도 있습니다. 초대된 사용자는 초대를 수락하면 자동으로 Organization에 가입합니다. 초대장을 통해 다른 Organization 및 Team에 가입할 수도 있습니다.
기존 사용자 도메인의 확인된 이메일 주소를 가진 기존 사용자는 W&B 앱 내에서 Organization의 Teams에 가입할 수 있습니다. 기존 사용자가 Organization에 가입하기 전에 생성한 모든 데이터는 유지됩니다. W&B는 기존 사용자의 데이터를 마이그레이션하지 않습니다. 기존 W&B 사용자는 여러 Organization 및 Teams에 분산될 수 있습니다.

초대받지 않은 신규 사용자가 Organization에 가입할 때 기본 Team에 자동으로 할당하려면:

  1. https://wandb.ai/home 으로 이동합니다.
  2. 페이지 오른쪽 상단에서 User menu 드롭다운을 선택합니다. 드롭다운에서 Settings를 선택합니다.
  3. Settings 탭에서 General을 선택합니다.
  4. Domain capture 내에서 Claim domain 버튼을 선택합니다.
  5. Default team 드롭다운에서 새 사용자를 자동으로 가입시킬 Team을 선택합니다. 사용 가능한 Team이 없으면 Team 설정을 업데이트해야 합니다. Teams 추가 및 관리의 지침을 참조하십시오.
  6. Claim email domain 버튼을 클릭합니다.

초대받지 않은 신규 사용자를 Team에 자동으로 할당하려면 먼저 Team 설정 내에서 도메인 일치를 활성화해야 합니다.

  1. https://wandb.ai/<team-name>에서 Team의 대시보드로 이동합니다. 여기서 <team-name>은 도메인 일치를 활성화할 Team의 이름입니다.
  2. Team 대시보드의 왼쪽 탐색 모음에서 Team settings를 선택합니다.
  3. Privacy 섹션 내에서 “가입 시 일치하는 이메일 도메인을 가진 새 사용자가 이 Team에 가입하도록 추천” 옵션을 토글합니다.

도메인 캡처를 구성하려면 Dedicated 또는 Self-managed 배포 유형을 사용하는 경우 W&B Account Team에 문의하십시오. 구성되면 W&B SaaS 인스턴스는 회사 이메일 주소로 W&B 계정을 만드는 사용자에게 관리자에게 연락하여 Dedicated 또는 Self-managed 인스턴스에 대한 엑세스를 요청하라는 메시지를 자동으로 표시합니다.

도메인 캡처 사용 도메인 캡처 사용 안 함
신규 사용자 확인된 도메인에서 SaaS Cloud에서 W&B에 가입하는 사용자는 사용자 지정하는 이메일 주소로 관리자에게 연락하라는 메시지가 자동으로 표시됩니다. SaaS Cloud에서 Organizations을 만들어 제품을 트라이얼할 수도 있습니다. 사용자는 회사에 중앙 집중식 Dedicated 인스턴스가 있다는 것을 모른 채 W&B SaaS Cloud 계정을 만들 수 있습니다.
기존 사용자 기존 W&B 사용자는 여러 Organization 및 Teams에 분산될 수 있습니다. 기존 W&B 사용자는 여러 Organization 및 Teams에 분산될 수 있습니다.

사용자의 역할 할당 또는 업데이트

Organization의 모든 구성원은 W&B Models 및 Weave 모두에 대한 Organization 역할과 Seat를 갖습니다. 그들이 가지고 있는 Seat 유형은 그들의 결제 상태와 각 제품 라인에서 그들이 할 수 있는 작업을 결정합니다.

사용자를 Organization에 초대할 때 처음으로 Organization 역할을 할당합니다. 나중에 사용자의 역할을 변경할 수 있습니다.

Organization 내의 사용자는 다음 역할 중 하나를 가질 수 있습니다.

역할 설명
admin 다른 사용자를 Organization에 추가하거나 제거하고, 사용자 역할을 변경하고, 사용자 지정 역할을 관리하고, Teams를 추가할 수 있는 인스턴스 관리자입니다. W&B는 관리자가 부재중인 경우를 대비하여 둘 이상의 관리자가 있는지 확인하는 것이 좋습니다.
Member 인스턴스 관리자가 초대한 Organization의 일반 사용자입니다. Organization member는 다른 사용자를 초대하거나 Organization의 기존 사용자를 관리할 수 없습니다.
Viewer (Enterprise 전용 기능) 인스턴스 관리자가 초대한 Organization의 보기 전용 사용자입니다. Viewer는 Organization과 그들이 구성원인 기본 Teams에 대한 읽기 엑세스 권한만 있습니다.
사용자 지정 역할 (Enterprise 전용 기능) 사용자 지정 역할을 통해 Organization 관리자는 이전 View-Only 또는 Member 역할에서 상속하고 세분화된 엑세스 제어를 위해 추가 권한을 추가하여 새 역할을 구성할 수 있습니다. 그런 다음 Team 관리자는 해당 사용자 지정 역할을 각 Teams의 사용자에게 할당할 수 있습니다.

사용자의 역할을 변경하려면:

  1. https://wandb.ai/home 으로 이동합니다.
  2. 페이지 오른쪽 상단에서 User menu 드롭다운을 선택합니다. 드롭다운에서 Users를 선택합니다.
  3. 검색 창에 사용자의 이름 또는 이메일을 입력합니다.
  4. 사용자 이름 옆에 있는 TEAM ROLE 드롭다운에서 역할을 선택합니다.

사용자 엑세스 할당 또는 업데이트

Organization 내의 사용자는 다음 Models Seat 또는 Weave 엑세스 유형 중 하나를 갖습니다. full, viewer 또는 no access.

Seat 유형 설명
Full 이 역할 유형을 가진 사용자는 Models 또는 Weave에 대한 데이터를 쓰고, 읽고, 내보낼 수 있는 모든 권한을 갖습니다.
Viewer Organization의 보기 전용 사용자입니다. Viewer는 Organization과 그들이 속한 기본 Teams에 대한 읽기 엑세스 권한만 있고 Models 또는 Weave에 대한 보기 전용 엑세스 권한만 있습니다.
No access 이 역할을 가진 사용자는 Models 또는 Weave 제품에 대한 엑세스 권한이 없습니다.

Model Seat 유형 및 Weave 엑세스 유형은 Organization 수준에서 정의되며 Team에서 상속됩니다. 사용자의 Seat 유형을 변경하려면 Organization 설정으로 이동하여 다음 단계를 따르십시오.

  1. SaaS 사용자의 경우 https://wandb.ai/account-settings/<organization>/settings에서 Organization 설정으로 이동합니다. 꺾쇠 괄호 (<>)로 묶인 값을 Organization 이름으로 바꿔야 합니다. 다른 Dedicated 및 Self-managed 배포의 경우 https://<your-instance>.wandb.io/org/dashboard로 이동합니다.
  2. Users 탭을 선택합니다.
  3. Role 드롭다운에서 사용자에게 할당할 Seat 유형을 선택합니다.

사용자 제거

  1. https://wandb.ai/home 으로 이동합니다.
  2. 페이지 오른쪽 상단에서 User menu 드롭다운을 선택합니다. 드롭다운에서 Users를 선택합니다.
  3. 검색 창에 사용자의 이름 또는 이메일을 입력합니다.
  4. 나타날 때 줄임표 또는 세 개의 점 아이콘 ()을 선택합니다.
  5. 드롭다운에서 Remove member를 선택합니다.

결제 관리자 할당

  1. https://wandb.ai/home 으로 이동합니다.
  2. 페이지 오른쪽 상단에서 User menu 드롭다운을 선택합니다. 드롭다운에서 Users를 선택합니다.
  3. 검색 창에 사용자의 이름 또는 이메일을 입력합니다.
  4. Billing admin 열에서 결제 관리자로 할당할 사용자를 선택합니다.

Teams 추가 및 관리

Organization 대시보드를 사용하여 Organization 내에서 Teams를 만들고 관리합니다. Organization 관리자 또는 Team 관리자는 다음을 수행할 수 있습니다.

  • 사용자를 Team에 초대하거나 Team에서 사용자를 제거합니다.
  • Team member의 역할을 관리합니다.
  • 사용자가 Organization에 가입할 때 Team에 사용자를 자동으로 추가합니다.
  • https://wandb.ai/<team-name>에서 Team의 대시보드를 사용하여 Team 스토리지를 관리합니다.

Team 만들기

Organization 대시보드를 사용하여 Team을 만듭니다.

  1. https://wandb.ai/home 으로 이동합니다.
  2. 왼쪽 네비게이션 패널의 Teams 아래에서 Create a team to collaborate를 선택합니다.
  3. 나타나는 모달에서 Team name 필드에 Team 이름을 입력합니다.
  4. 스토리지 유형을 선택합니다.
  5. Create team 버튼을 선택합니다.

Create team 버튼을 선택하면 W&B에서 https://wandb.ai/<team-name>의 새 Team 페이지로 리디렉션합니다. 여기서 <team-name>은 Team을 만들 때 제공하는 이름으로 구성됩니다.

Team이 있으면 해당 Team에 사용자를 추가할 수 있습니다.

Team에 사용자 초대

Organization에서 Team에 사용자를 초대합니다. Team의 대시보드를 사용하여 이메일 주소 또는 W&B 사용자 이름(이미 W&B 계정이 있는 경우)을 사용하여 사용자를 초대합니다.

  1. https://wandb.ai/<team-name>로 이동합니다.
  2. 대시보드의 왼쪽 글로벌 네비게이션에서 Team settings를 선택합니다.
  3. Users 탭을 선택합니다.
  4. Invite a new user를 선택합니다.
  5. 나타나는 모달에서 Email or username 필드에 사용자의 이메일을 입력하고 Select a team 역할 드롭다운에서 해당 사용자에게 할당할 역할을 선택합니다. 사용자가 Team에서 가질 수 있는 역할에 대한 자세한 내용은 Team 역할을 참조하십시오.
  6. Send invite 버튼을 클릭합니다.

기본적으로 Team 또는 인스턴스 관리자만 Team에 구성원을 초대할 수 있습니다. 이 동작을 변경하려면 Team 설정을 참조하십시오.

이메일 초대를 통해 수동으로 사용자를 초대하는 것 외에도 새 사용자의 이메일이 Organization의 도메인과 일치하는 경우 새 사용자를 Team에 자동으로 추가할 수 있습니다.

가입 시 Team Organization에 구성원 일치

새 사용자가 가입할 때 Organization 내에서 Teams를 검색할 수 있도록 허용합니다. 새 사용자는 Organization의 확인된 이메일 도메인과 일치하는 확인된 이메일 도메인이 있어야 합니다. 확인된 새 사용자는 W&B 계정에 가입할 때 Organization에 속한 확인된 Teams 목록을 볼 수 있습니다.

Organization 관리자는 도메인 클레임을 활성화해야 합니다. 도메인 캡처를 활성화하려면 도메인 캡처에 설명된 단계를 참조하십시오.

Team member의 역할 할당 또는 업데이트

  1. Team member 이름 옆에 있는 계정 유형 아이콘을 선택합니다.
  2. 드롭다운에서 해당 Team member가 가질 계정 유형을 선택합니다.

다음 표는 Team 구성원에게 할당할 수 있는 역할을 나열합니다.

역할 정의
admin Team에서 다른 사용자를 추가 및 제거하고, 사용자 역할을 변경하고, Team 설정을 구성할 수 있는 사용자입니다.
Member Team 관리자가 이메일 또는 Organization 수준 사용자 이름으로 초대한 Team의 일반 사용자입니다. member 사용자는 다른 사용자를 Team에 초대할 수 없습니다.
View-Only (Enterprise 전용 기능) Team 관리자가 이메일 또는 Organization 수준 사용자 이름으로 초대한 Team의 보기 전용 사용자입니다. 보기 전용 사용자는 Team과 그 내용에 대한 읽기 엑세스 권한만 있습니다.
Service (Enterprise 전용 기능) 서비스 작업자 또는 서비스 계정은 run 자동화 툴로 W&B를 활용하는 데 유용한 API 키입니다. Team의 서비스 계정에서 API 키를 사용하는 경우 환경 변수 WANDB_USERNAME을 설정하여 run을 적절한 사용자에게 올바르게 할당해야 합니다.
사용자 지정 역할 (Enterprise 전용 기능) 사용자 지정 역할을 통해 Organization 관리자는 이전 View-Only 또는 Member 역할에서 상속하고 세분화된 엑세스 제어를 위해 추가 권한을 추가하여 새 역할을 구성할 수 있습니다. 그런 다음 Team 관리자는 해당 사용자 지정 역할을 각 Teams의 사용자에게 할당할 수 있습니다. 자세한 내용은 이 문서를 참조하십시오.

Team에서 사용자 제거

Team의 대시보드를 사용하여 Team에서 사용자를 제거합니다. W&B는 run을 생성한 구성원이 더 이상 해당 Team에 없더라도 Team에서 생성된 run을 보존합니다.

  1. https://wandb.ai/<team-name>로 이동합니다.
  2. 왼쪽 네비게이션 바에서 Team settings를 선택합니다.
  3. Users 탭을 선택합니다.
  4. 삭제할 사용자 이름 옆에 마우스를 가져갑니다. 나타날 때 줄임표 또는 세 개의 점 아이콘 ()을 선택합니다.
  5. 드롭다운에서 Remove user를 선택합니다.

2.2 - Manage access control for projects

가시성 범위와 프로젝트 수준 역할을 사용하여 프로젝트 엑세스 를 관리합니다.

W&B 프로젝트의 범위를 정의하여 누가 해당 프로젝트를 보고, 편집하고, W&B run을 제출할 수 있는지 제한합니다.

W&B 팀 내의 모든 프로젝트에 대한 엑세스 수준을 구성하기 위해 몇 가지 제어 기능을 함께 사용할 수 있습니다. 가시성 범위는 더 높은 수준의 메커니즘입니다. 이를 사용하여 어떤 사용자 그룹이 프로젝트에서 run을 보거나 제출할 수 있는지 제어합니다. Team 또는 Restricted 가시성 범위를 가진 프로젝트의 경우 프로젝트 수준 역할을 사용하여 각 사용자가 프로젝트 내에서 갖는 엑세스 수준을 제어할 수 있습니다.

가시성 범위

선택할 수 있는 프로젝트 가시성 범위는 네 가지가 있습니다. 가장 공개적인 것부터 가장 사적인 것 순으로 나열하면 다음과 같습니다.

범위 설명
Open 프로젝트에 대해 알고 있는 사람은 누구나 보고 run 또는 리포트를 제출할 수 있습니다.
Public 프로젝트에 대해 알고 있는 사람은 누구나 볼 수 있습니다. 팀만 run 또는 리포트를 제출할 수 있습니다.
Team 상위 팀의 팀 멤버만 프로젝트를 보고 run 또는 리포트를 제출할 수 있습니다. 팀 외부의 사람은 프로젝트에 엑세스할 수 없습니다.
Restricted 상위 팀에서 초대받은 팀 멤버만 프로젝트를 보고 run 또는 리포트를 제출할 수 있습니다.

새 프로젝트 또는 기존 프로젝트에서 가시성 범위 설정

프로젝트를 생성할 때 또는 나중에 편집할 때 프로젝트의 가시성 범위를 설정합니다.

새 프로젝트를 생성할 때 가시성 범위 설정

  1. SaaS Cloud, 전용 클라우드 또는 자체 관리 인스턴스에서 W&B 조직으로 이동합니다.
  2. 왼쪽 사이드바의 내 프로젝트 섹션에서 새 프로젝트 만들기 버튼을 클릭합니다. 또는 팀의 Projects 탭으로 이동하여 오른쪽 상단 모서리에 있는 새 프로젝트 만들기 버튼을 클릭합니다.
  3. 상위 팀을 선택하고 프로젝트 이름을 입력한 후 프로젝트 가시성 드롭다운에서 원하는 범위를 선택합니다.

Restricted 가시성을 선택한 경우 다음 단계를 완료하십시오.

  1. 팀 멤버 초대 필드에 하나 이상의 W&B 팀 멤버 이름을 입력합니다. 프로젝트에서 협업하는 데 필수적인 팀 멤버만 추가하십시오.

기존 프로젝트의 가시성 범위 편집

  1. W&B 프로젝트로 이동합니다.
  2. 왼쪽 열에서 Overview 탭을 선택합니다.
  3. 오른쪽 상단 모서리에 있는 프로젝트 세부 정보 편집 버튼을 클릭합니다.
  4. 프로젝트 가시성 드롭다운에서 원하는 범위를 선택합니다.

Restricted 가시성을 선택한 경우 다음 단계를 완료하십시오.

  1. 프로젝트의 Users 탭으로 이동하여 사용자 추가 버튼을 클릭하여 특정 사용자를 제한된 프로젝트에 초대합니다.

제한된 범위에 대한 기타 주요 참고 사항

  • 제한된 프로젝트에서 팀 수준 서비스 계정을 사용하려면 해당 계정을 프로젝트에 특별히 초대하거나 추가해야 합니다. 그렇지 않으면 팀 수준 서비스 계정은 기본적으로 제한된 프로젝트에 엑세스할 수 없습니다.
  • 제한된 프로젝트에서 run을 이동할 수는 없지만 제한되지 않은 프로젝트에서 제한된 프로젝트로 run을 이동할 수 있습니다.
  • 팀 개인 정보 설정 **향후 모든 팀 프로젝트를 비공개로 설정(공개 공유 불가)**에 관계없이 제한된 프로젝트의 가시성을 Team 범위로만 변환할 수 있습니다.
  • 제한된 프로젝트의 소유자가 더 이상 상위 팀에 속하지 않으면 팀 관리자는 프로젝트에서 원활한 운영을 보장하기 위해 소유자를 변경해야 합니다.

프로젝트 수준 역할

팀의 Team 또는 Restricted 범위 프로젝트의 경우 사용자에게 특정 역할을 할당할 수 있으며, 이는 해당 사용자의 팀 수준 역할과 다를 수 있습니다. 예를 들어 사용자가 팀 수준에서 Member 역할을 하는 경우 해당 팀의 Team 또는 Restricted 범위 프로젝트 내에서 해당 사용자에게 View-Only 또는 Admin 또는 사용 가능한 사용자 지정 역할을 할당할 수 있습니다.

사용자에게 프로젝트 수준 역할 할당

  1. W&B 프로젝트로 이동합니다.
  2. 왼쪽 열에서 Overview 탭을 선택합니다.
  3. 프로젝트의 Users 탭으로 이동합니다.
  4. 프로젝트 역할 필드에서 해당 사용자에 대해 현재 할당된 역할을 클릭하면 다른 사용 가능한 역할 목록이 있는 드롭다운이 열립니다.
  5. 드롭다운에서 다른 역할을 선택합니다. 즉시 저장됩니다.

프로젝트 수준 역할에 대한 기타 주요 참고 사항

  • 기본적으로 team 또는 restricted 범위 프로젝트의 모든 사용자에 대한 프로젝트 수준 역할은 해당 팀 수준 역할을 상속합니다.
  • 팀 수준에서 View-only 역할을 가진 사용자의 프로젝트 수준 역할은 변경할 수 없습니다.
  • 특정 프로젝트 내에서 사용자의 프로젝트 수준 역할이 팀 수준 역할과 동일하고 팀 관리자가 팀 수준 역할을 변경하면 관련 프로젝트 역할이 자동으로 변경되어 팀 수준 역할을 추적합니다.
  • 특정 프로젝트 내에서 사용자의 프로젝트 수준 역할을 팀 수준 역할과 다르게 변경하고 팀 관리자가 팀 수준 역할을 변경하면 관련 프로젝트 수준 역할은 그대로 유지됩니다.
  • 프로젝트 수준 역할이 팀 수준 역할과 다른 경우 restricted 프로젝트에서 사용자를 제거하고 일정 시간이 지난 후 사용자를 프로젝트에 다시 추가하면 기본 동작으로 인해 팀 수준 역할을 상속합니다. 필요한 경우 프로젝트 수준 역할을 다시 변경하여 팀 수준 역할과 다르게 만들어야 합니다.

3 - Automate user and team management

SCIM API

SCIM API를 사용하여 사용자 및 사용자가 속한 Teams를 효율적이고 반복 가능한 방식으로 관리합니다. SCIM API를 사용하여 사용자 정의 역할을 관리하거나 W&B organization의 사용자에게 역할을 할당할 수도 있습니다. 역할 엔드포인트는 공식 SCIM 스키마의 일부가 아닙니다. W&B는 사용자 정의 역할의 자동 관리를 지원하기 위해 역할 엔드포인트를 추가합니다.

SCIM API는 다음과 같은 경우에 특히 유용합니다.

  • 사용자 프로비저닝 및 프로비저닝 해제를 대규모로 관리하려는 경우
  • SCIM을 지원하는 ID 공급자로 사용자를 관리하려는 경우

SCIM API는 크게 User, Group, Roles의 세 가지 범주로 나뉩니다.

User SCIM API

User SCIM API를 사용하면 W&B organization에서 사용자를 생성, 비활성화, 사용자 세부 정보를 가져오거나 모든 사용자 목록을 가져올 수 있습니다. 이 API는 organization의 사용자에게 미리 정의된 역할 또는 사용자 정의 역할을 할당하는 기능도 지원합니다.

Group SCIM API

Group SCIM API를 사용하면 organization에서 Teams를 생성하거나 제거하는 것을 포함하여 W&B Teams를 관리할 수 있습니다. PATCH Group을 사용하여 기존 Team에서 사용자를 추가하거나 제거합니다.

Custom role API

Custom role SCIM API를 사용하면 organization에서 사용자 정의 역할을 생성, 나열 또는 업데이트하는 것을 포함하여 사용자 정의 역할을 관리할 수 있습니다.

W&B Python SDK API

SCIM API를 통해 사용자 및 Team 관리를 자동화할 수 있는 것처럼 W&B Python SDK API에서 사용할 수 있는 일부 메소드를 사용하여 이 목적을 달성할 수도 있습니다. 다음 메소드를 기록해 두십시오.

Method name Purpose
create_user(email, admin=False) organization에 사용자를 추가하고 선택적으로 organization 관리자로 만듭니다.
user(userNameOrEmail) organization에서 기존 사용자를 반환합니다.
user.teams() 사용자의 Teams를 반환합니다. user(userNameOrEmail) 메소드를 사용하여 사용자 오브젝트를 가져올 수 있습니다.
create_team(teamName, adminUserName) 새 Team을 만들고 선택적으로 organization 수준의 사용자를 Team 관리자로 만듭니다.
team(teamName) organization에서 기존 Team을 반환합니다.
Team.invite(userNameOrEmail, admin=False) Team에 사용자를 추가합니다. team(teamName) 메소드를 사용하여 Team 오브젝트를 가져올 수 있습니다.
Team.create_service_account(description) Team에 서비스 계정을 추가합니다. team(teamName) 메소드를 사용하여 Team 오브젝트를 가져올 수 있습니다.
Member.delete() Team에서 멤버 사용자를 제거합니다. team 오브젝트의 members 속성을 사용하여 Team에서 멤버 오브젝트 목록을 가져올 수 있습니다. 그리고 team(teamName) 메소드를 사용하여 Team 오브젝트를 가져올 수 있습니다.

4 - Manage users, groups, and roles with SCIM

SCIM(System for Cross-domain Identity Management) API를 통해 인스턴스 또는 organization 관리자는 W&B organization에서 사용자, 그룹 및 사용자 지정 역할을 관리할 수 있습니다. SCIM 그룹은 W&B Teams에 매핑됩니다.

SCIM API는 <host-url>/scim/에서 액세스할 수 있으며 RC7643 프로토콜에서 찾을 수 있는 필드의 서브셋으로 /Users/Groups 엔드포인트를 지원합니다. 또한 공식 SCIM 스키마의 일부가 아닌 /Roles 엔드포인트도 포함합니다. W&B는 W&B organization에서 사용자 지정 역할의 자동 관리를 지원하기 위해 /Roles 엔드포인트를 추가합니다.

인증

Organization 또는 인스턴스 관리자는 API 키로 기본 인증을 사용하여 SCIM API에 액세스할 수 있습니다. HTTP 요청의 Authorization 헤더를 Basic 문자열 뒤에 공백, 그런 다음 username:API-KEY 형식으로 base-64로 인코딩된 문자열로 설정합니다. 즉, 사용자 이름과 API 키를 : 문자로 구분된 값으로 바꾸고 결과를 base-64로 인코딩합니다. 예를 들어 demo:p@55w0rd로 인증하려면 헤더는 Authorization: Basic ZGVtbzpwQDU1dzByZA==여야 합니다.

사용자 리소스

SCIM 사용자 리소스는 W&B Users에 매핑됩니다.

사용자 가져오기

  • 엔드포인트: <host-url>/scim/Users/{id}
  • 메서드: GET
  • 설명: 사용자 고유 ID를 제공하여 SaaS Cloud organization 또는 Dedicated Cloud 또는 Self-managed 인스턴스에서 특정 사용자에 대한 정보를 검색합니다.
  • 요청 예시:
GET /scim/Users/abc
  • 응답 예시:
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.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"
}

사용자 목록

  • 엔드포인트: <host-url>/scim/Users
  • 메서드: GET
  • 설명: SaaS Cloud organization 또는 Dedicated Cloud 또는 Self-managed 인스턴스에서 모든 사용자 목록을 검색합니다.
  • 요청 예시:
GET /scim/Users
  • 응답 예시:
(Status 200)
{
    "Resources": [
        {
            "active": true,
            "displayName": "Dev User 1",
            "emails": {
                "Value": "dev-user1@test.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"
        }
    ],
    "itemsPerPage": 9999,
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "startIndex": 1,
    "totalResults": 1
}

사용자 생성

  • 엔드포인트: <host-url>/scim/Users
  • 메서드: POST
  • 설명: 새 사용자 리소스를 만듭니다.
  • 지원되는 필드:
필드 유형 필수
emails 다중 값 배열 예( primary 이메일이 설정되었는지 확인)
userName 문자열
  • 요청 예시:
POST /scim/Users
{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User"
  ],
  "emails": [
    {
      "primary": true,
      "value": "admin-user2@test.com"
    }
  ],
  "userName": "dev-user2"
}
  • 응답 예시:
(Status 201)
{
    "active": true,
    "displayName": "Dev User 2",
    "emails": {
        "Value": "dev-user2@test.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"
}

사용자 삭제

  • 엔드포인트: <host-url>/scim/Users/{id}
  • 메서드: DELETE
  • 설명: 사용자 고유 ID를 제공하여 SaaS Cloud organization 또는 Dedicated Cloud 또는 Self-managed 인스턴스에서 사용자를 완전히 삭제합니다. 필요한 경우 사용자 생성 API를 사용하여 사용자를 organization 또는 인스턴스에 다시 추가합니다.
  • 요청 예시:
DELETE /scim/Users/abc
  • 응답 예시:
(Status 204)

사용자 비활성화

  • 엔드포인트: <host-url>/scim/Users/{id}
  • 메서드: PATCH
  • 설명: 사용자 고유 ID를 제공하여 Dedicated Cloud 또는 Self-managed 인스턴스에서 사용자를 일시적으로 비활성화합니다. 필요한 경우 사용자 다시 활성화 API를 사용하여 사용자를 다시 활성화합니다.
  • 지원되는 필드:
필드 유형 필수
op 문자열 작업 유형. 허용되는 유일한 값은 replace입니다.
value 오브젝트 사용자를 비활성화해야 함을 나타내는 오브젝트 {"active": false}입니다.
  • 요청 예시:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": false}
        }
    ]
}
  • 응답 예시: 이것은 User 오브젝트를 반환합니다.
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.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"
}

사용자 다시 활성화

  • 엔드포인트: <host-url>/scim/Users/{id}
  • 메서드: PATCH
  • 설명: 사용자 고유 ID를 제공하여 Dedicated Cloud 또는 Self-managed 인스턴스에서 비활성화된 사용자를 다시 활성화합니다.
  • 지원되는 필드:
필드 유형 필수
op 문자열 작업 유형. 허용되는 유일한 값은 replace입니다.
value 오브젝트 사용자를 다시 활성화해야 함을 나타내는 오브젝트 {"active": true}입니다.
  • 요청 예시:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": true}
        }
    ]
}
  • 응답 예시: 이것은 User 오브젝트를 반환합니다.
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.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"
}

사용자에게 organization 수준 역할 할당

  • 엔드포인트: <host-url>/scim/Users/{id}
  • 메서드: PATCH
  • 설명: 사용자에게 organization 수준 역할을 할당합니다. 역할은 여기에 설명된 대로 admin, viewer 또는 member 중 하나일 수 있습니다. SaaS Cloud의 경우 사용자 설정에서 SCIM API에 대한 올바른 organization을 구성했는지 확인합니다.
  • 지원되는 필드:
필드 유형 필수
op 문자열 작업 유형. 허용되는 유일한 값은 replace입니다.
path 문자열 역할 할당 작업이 적용되는 범위입니다. 허용되는 유일한 값은 organizationRole입니다.
value 문자열 사용자에게 할당할 미리 정의된 organization 수준 역할입니다. admin, viewer 또는 member 중 하나일 수 있습니다. 이 필드는 미리 정의된 역할에 대해 대소문자를 구분하지 않습니다.
  • 요청 예시:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "organizationRole",
            "value": "admin" // 사용자의 organization 범위 역할을 admin으로 설정합니다.
        }
    ]
}
  • 응답 예시: 이것은 User 오브젝트를 반환합니다.
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.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",
    "teamRoles": [  // 사용자가 속한 모든 Teams에서 사용자의 역할을 반환합니다.
        {
            "teamName": "team1",
            "roleName": "admin"
        }
    ],
    "organizationRole": "admin" // organization 범위에서 사용자의 역할을 반환합니다.
}

사용자에게 팀 수준 역할 할당

  • 엔드포인트: <host-url>/scim/Users/{id}
  • 메서드: PATCH
  • 설명: 사용자에게 팀 수준 역할을 할당합니다. 역할은 여기에 설명된 대로 admin, viewer, member 또는 사용자 지정 역할 중 하나일 수 있습니다. SaaS Cloud의 경우 사용자 설정에서 SCIM API에 대한 올바른 organization을 구성했는지 확인합니다.
  • 지원되는 필드:
필드 유형 필수
op 문자열 작업 유형. 허용되는 유일한 값은 replace입니다.
path 문자열 역할 할당 작업이 적용되는 범위입니다. 허용되는 유일한 값은 teamRoles입니다.
value 오브젝트 배열 오브젝트가 teamNameroleName 속성으로 구성된 단일 오브젝트 배열입니다. teamName은 사용자가 역할을 보유하는 팀의 이름이고, roleNameadmin, viewer, member 또는 사용자 지정 역할 중 하나일 수 있습니다. 이 필드는 미리 정의된 역할에 대해 대소문자를 구분하지 않고 사용자 지정 역할에 대해 대소문자를 구분합니다.
  • 요청 예시:
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "teamRoles",
            "value": [
                {
                    "roleName": "admin", // 역할 이름은 미리 정의된 역할에 대해 대소문자를 구분하지 않고 사용자 지정 역할에 대해 대소문자를 구분합니다.
                    "teamName": "team1" // 팀 team1에서 사용자의 역할을 admin으로 설정합니다.
                }
            ]
        }
    ]
}
  • 응답 예시: 이것은 User 오브젝트를 반환합니다.
(Status 200)
{
    "active": true,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@test.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",
    "teamRoles": [  // 사용자가 속한 모든 Teams에서 사용자의 역할을 반환합니다.
        {
            "teamName": "team1",
            "roleName": "admin"
        }
    ],
    "organizationRole": "admin" // organization 범위에서 사용자의 역할을 반환합니다.
}

그룹 리소스

SCIM 그룹 리소스는 W&B Teams에 매핑됩니다. 즉, W&B 배포에서 SCIM 그룹을 만들면 W&B Team이 생성됩니다. 다른 그룹 엔드포인트에도 동일하게 적용됩니다.

팀 가져오기

  • 엔드포인트: <host-url>/scim/Groups/{id}
  • 메서드: GET
  • 설명: 팀의 고유 ID를 제공하여 팀 정보를 검색합니다.
  • 요청 예시:
GET /scim/Groups/ghi
  • 응답 예시:
(Status 200)
{
    "displayName": "wandb-devs",
    "id": "ghi",
    "members": [
        {
            "Value": "abc",
            "Ref": "",
            "Type": "",
            "Display": "dev-user1"
        }
    ],
    "meta": {
        "resourceType": "Group",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Groups/ghi"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Group"
    ]
}

팀 목록

  • 엔드포인트: <host-url>/scim/Groups
  • 메서드: GET
  • 설명: 팀 목록을 검색합니다.
  • 요청 예시:
GET /scim/Groups
  • 응답 예시:
(Status 200)
{
    "Resources": [
        {
            "displayName": "wandb-devs",
            "id": "ghi",
            "members": [
                {
                    "Value": "abc",
                    "Ref": "",
                    "Type": "",
                    "Display": "dev-user1"
                }
            ],
            "meta": {
                "resourceType": "Group",
                "created": "2023-10-01T00:00:00Z",
                "lastModified": "2023-10-01T00:00:00Z",
                "location": "Groups/ghi"
            },
            "schemas": [
                "urn:ietf:params:scim:schemas:core:2.0:Group"
            ]
        }
    ],
    "itemsPerPage": 9999,
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "startIndex": 1,
    "totalResults": 1
}

팀 생성

  • 엔드포인트: <host-url>/scim/Groups
  • 메서드: POST
  • 설명: 새 팀 리소스를 만듭니다.
  • 지원되는 필드:
필드 유형 필수
displayName 문자열
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"
        }
    ]
}
  • 응답 예시:
(Status 201)
{
    "displayName": "wandb-support",
    "id": "jkl",
    "members": [
        {
            "Value": "def",
            "Ref": "",
            "Type": "",
            "Display": "dev-user2"
        }
    ],
    "meta": {
        "resourceType": "Group",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Groups/jkl"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Group"
    ]
}

팀 업데이트

  • 엔드포인트: <host-url>/scim/Groups/{id}
  • 메서드: PATCH
  • 설명: 기존 팀의 멤버십 목록을 업데이트합니다.
  • 지원되는 작업: 멤버 add, 멤버 remove
  • 요청 예시:

wandb-devsdev-user2를 추가합니다.

PATCH /scim/Groups/ghi
{
	"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
	"Operations": [
		{
			"op": "add",
			"path": "members",
			"value": [
	      {
					"value": "def",
				}
	    ]
		}
	]
}
  • 응답 예시:
(Status 200)
{
    "displayName": "wandb-devs",
    "id": "ghi",
    "members": [
        {
            "Value": "abc",
            "Ref": "",
            "Type": "",
            "Display": "dev-user1"
        },
        {
            "Value": "def",
            "Ref": "",
            "Type": "",
            "Display": "dev-user2"
        }
    ],
    "meta": {
        "resourceType": "Group",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:01:00Z",
        "location": "Groups/ghi"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:Group"
    ]
}

팀 삭제

  • 팀 삭제는 현재 SCIM API에서 지원되지 않습니다. 팀에 연결된 추가 데이터가 있기 때문입니다. 모든 항목을 삭제할지 확인하려면 앱에서 팀을 삭제하세요.

역할 리소스

SCIM 역할 리소스는 W&B 사용자 지정 역할에 매핑됩니다. 앞에서 언급했듯이 /Roles 엔드포인트는 공식 SCIM 스키마의 일부가 아니며 W&B는 W&B organization에서 사용자 지정 역할의 자동 관리를 지원하기 위해 /Roles 엔드포인트를 추가합니다.

사용자 지정 역할 가져오기

  • 엔드포인트: <host-url>/scim/Roles/{id}
  • 메서드: GET
  • 설명: 역할의 고유 ID를 제공하여 사용자 지정 역할에 대한 정보를 검색합니다.
  • 요청 예시:
GET /scim/Roles/abc
  • 응답 예시:
(Status 200)
{
    "description": "A sample custom role for example",
    "id": "Um9sZTo3",
    "inheritedFrom": "member", // indicates the predefined role
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // inherited from member predefined role
        },
        ...
        ...
        {
            "name": "project:update",
            "isInherited": false // custom permission added by admin
        }
    ],
    "schemas": [
        ""
    ]
}

사용자 지정 역할 목록

  • 엔드포인트: <host-url>/scim/Roles
  • 메서드: GET
  • 설명: W&B organization의 모든 사용자 지정 역할에 대한 정보를 검색합니다.
  • 요청 예시:
GET /scim/Roles
  • 응답 예시:
(Status 200)
{
   "Resources": [
        {
            "description": "A sample custom role for example",
            "id": "Um9sZTo3",
            "inheritedFrom": "member", // indicates the predefined role that the custom role inherits from
            "meta": {
                "resourceType": "Role",
                "created": "2023-11-20T23:10:14Z",
                "lastModified": "2023-11-20T23:31:23Z",
                "location": "Roles/Um9sZTo3"
            },
            "name": "Sample custom role",
            "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
            "permissions": [
                {
                    "name": "artifact:read",
                    "isInherited": true // inherited from member predefined role
                },
                ...
                ...
                {
                    "name": "project:update",
                    "isInherited": false // custom permission added by admin
                }
            ],
            "schemas": [
                ""
            ]
        },
        {
            "description": "Another sample custom role for example",
            "id": "Um9sZToxMg==",
            "inheritedFrom": "viewer", // indicates the predefined role that the custom role inherits from
            "meta": {
                "resourceType": "Role",
                "created": "2023-11-21T01:07:50Z",
                "location": "Roles/Um9sZToxMg=="
            },
            "name": "Sample custom role 2",
            "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
            "permissions": [
                {
                    "name": "launchagent:read",
                    "isInherited": true // inherited from viewer predefined role
                },
                ...
                ...
                {
                    "name": "run:stop",
                    "isInherited": false // custom permission added by admin
                }
            ],
            "schemas": [
                ""
            ]
        }
    ],
    "itemsPerPage": 9999,
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
    ],
    "startIndex": 1,
    "totalResults": 2
}

사용자 지정 역할 생성

  • 엔드포인트: <host-url>/scim/Roles
  • 메서드: POST
  • 설명: W&B organization에서 새 사용자 지정 역할을 만듭니다.
  • 지원되는 필드:
필드 유형 필수
name 문자열 사용자 지정 역할의 이름
description 문자열 사용자 지정 역할에 대한 설명
permissions 오브젝트 배열 각 오브젝트에 w&bobject:operation 형식의 값이 있는 name 문자열 필드가 포함된 권한 오브젝트 배열입니다. 예를 들어 W&B Runs에 대한 삭제 작업에 대한 권한 오브젝트의 namerun:delete입니다.
inheritedFrom 문자열 사용자 지정 역할이 상속할 미리 정의된 역할입니다. 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"
}
  • 응답 예시:
(Status 201)
{
    "description": "A sample custom role for example",
    "id": "Um9sZTo3",
    "inheritedFrom": "member", // indicates the predefined role
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // inherited from member predefined role
        },
        ...
        ...
        {
            "name": "project:update",
            "isInherited": false // custom permission added by admin
        }
    ],
    "schemas": [
        ""
    ]
}

사용자 지정 역할 삭제

  • 엔드포인트: <host-url>/scim/Roles/{id}
  • 메서드: DELETE
  • 설명: W&B organization에서 사용자 지정 역할을 삭제합니다. 주의해서 사용하세요. 사용자 지정 역할이 상속된 미리 정의된 역할은 이제 작업 전에 사용자 지정 역할이 할당된 모든 사용자에게 할당됩니다.
  • 요청 예시:
DELETE /scim/Roles/abc
  • 응답 예시:
(Status 204)

사용자 지정 역할 권한 업데이트

  • 엔드포인트: <host-url>/scim/Roles/{id}
  • 메서드: PATCH
  • 설명: W&B organization에서 사용자 지정 역할에 사용자 지정 권한을 추가하거나 제거합니다.
  • 지원되는 필드:
필드 유형 필수
operations 오브젝트 배열 작업 오브젝트 배열
op 문자열 작업 오브젝트 내의 작업 유형입니다. add 또는 remove일 수 있습니다.
path 문자열 작업 오브젝트의 정적 필드입니다. 허용되는 유일한 값은 permissions입니다.
value 오브젝트 배열 각 오브젝트에 w&bobject:operation 형식의 값이 있는 name 문자열 필드가 포함된 권한 오브젝트 배열입니다. 예를 들어 W&B Runs에 대한 삭제 작업에 대한 권한 오브젝트의 namerun:delete입니다.
  • 요청 예시:
PATCH /scim/Roles/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add", // 작업 유형을 나타냅니다. 다른 가능한 값은 `remove`입니다.
            "path": "permissions",
            "value": [
                {
                    "name": "project:delete"
                }
            ]
        }
    ]
}
  • 응답 예시:
(Status 200)
{
    "description": "A sample custom role for example",
    "id": "Um9sZTo3",
    "inheritedFrom": "member", // indicates the predefined role
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // inherited from member predefined role
        },
        ...
        ...
        {
            "name": "project:update",
            "isInherited": false // existing custom permission added by admin before the update
        },
        {
            "name": "project:delete",
            "isInherited": false // new custom permission added by admin as part of the update
        }
    ],
    "schemas": [
        ""
    ]
}

사용자 지정 역할 메타데이터 업데이트

  • 엔드포인트: <host-url>/scim/Roles/{id}
  • 메서드: PUT
  • 설명: W&B organization에서 사용자 지정 역할의 이름, 설명 또는 상속된 역할을 업데이트합니다. 이 작업은 사용자 지정 역할의 기존 비상속 사용자 지정 권한에 영향을 미치지 않습니다.
  • 지원되는 필드:
필드 유형 필수
name 문자열 사용자 지정 역할의 이름
description 문자열 사용자 지정 역할에 대한 설명
inheritedFrom 문자열 사용자 지정 역할이 상속할 미리 정의된 역할입니다. member 또는 viewer일 수 있습니다.
  • 요청 예시:
PUT /scim/Roles/abc
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "Sample custom role",
    "description": "A sample custom role for example but now based on viewer",
    "inheritedFrom": "viewer"
}
  • 응답 예시:
(Status 200)
{
    "description": "A sample custom role for example but now based on viewer", // changed the descripton per the request
    "id": "Um9sZTo3",
    "inheritedFrom": "viewer", // indicates the predefined role which is changed per the request
    "meta": {
        "resourceType": "Role",
        "created": "2023-11-20T23:10:14Z",
        "lastModified": "2023-11-20T23:31:23Z",
        "location": "Roles/Um9sZTo3"
    },
    "name": "Sample custom role",
    "organizationID": "T3JnYW5pemF0aW9uOjE0ODQ1OA==",
    "permissions": [
        {
            "name": "artifact:read",
            "isInherited": true // inherited from viewer predefined role
        },
        ... // Any permissions that are in member predefined role but not in viewer will not be inherited post the update
        {
            "name": "project:update",
            "isInherited": false // custom permission added by admin
        },
        {
            "name": "project:delete",
            "isInherited": false // custom permission added by admin
        }
    ],
    "schemas": [
        ""
    ]
}

5 - Advanced IAM configuration

기본적인 환경 변수 외에도, 환경 변수를 사용하여 전용 클라우드 또는 자체 관리 인스턴스에 대한 IAM 옵션을 구성할 수 있습니다.

IAM 요구 사항에 따라 인스턴스에 대해 다음 환경 변수 중 하나를 선택하십시오.

환경 변수 설명
DISABLE_SSO_PROVISIONING W&B 인스턴스에서 사용자 자동 프로비저닝을 끄려면 이 값을 true로 설정하십시오.
SESSION_LENGTH 기본 사용자 세션 만료 시간을 변경하려면 이 변수를 원하는 시간 수로 설정하십시오. 예를 들어 세션 만료 시간을 24시간으로 구성하려면 SESSION_LENGTH를 24로 설정하십시오. 기본값은 720시간입니다.
GORILLA_ENABLE_SSO_GROUP_CLAIMS OIDC 기반 SSO를 사용하는 경우 이 변수를 true로 설정하여 OIDC 그룹을 기반으로 인스턴스에서 W&B team 멤버십을 자동화하십시오. 사용자 OIDC 토큰에 groups 클레임을 추가하십시오. 각 항목이 사용자가 속해야 하는 W&B team의 이름인 문자열 배열이어야 합니다. 배열에는 사용자가 속한 모든 team이 포함되어야 합니다.
GORILLA_LDAP_GROUP_SYNC LDAP 기반 SSO를 사용하는 경우 이 값을 true로 설정하여 LDAP 그룹을 기반으로 인스턴스에서 W&B team 멤버십을 자동화하십시오.
GORILLA_OIDC_CUSTOM_SCOPES OIDC 기반 SSO를 사용하는 경우 W&B 인스턴스가 ID 공급자에게 요청해야 하는 추가 scopes를 지정할 수 있습니다. W&B는 이러한 사용자 정의 scopes로 인해 SSO 기능을 변경하지 않습니다.
GORILLA_USE_IDENTIFIER_CLAIMS OIDC 기반 SSO를 사용하는 경우 이 변수를 true로 설정하여 ID 공급자의 특정 OIDC 클레임을 사용하여 사용자의 사용자 이름과 전체 이름을 적용하십시오. 설정된 경우 preferred_usernamename OIDC 클레임에서 적용된 사용자 이름과 전체 이름을 구성해야 합니다. 사용자 이름은 영숫자 문자와 특수 문자(밑줄 및 하이픈)만 포함할 수 있습니다.
GORILLA_DISABLE_PERSONAL_ENTITY W&B 인스턴스에서 개인 user projects를 끄려면 이 값을 true로 설정하십시오. 설정된 경우 users는 개인 Entities에서 새 개인 projects를 만들 수 없으며 기존 개인 projects에 대한 쓰기가 꺼집니다.
GORILLA_DISABLE_ADMIN_TEAM_ACCESS Organization 또는 Instance Admins가 W&B team에 자체 가입하거나 추가하는 것을 제한하려면 이 값을 true로 설정하여 Data & AI 담당자만 team 내의 projects에 액세스할 수 있도록 합니다.