메인 콘텐츠로 건너뛰기
W&B SDK를 통해 조직 자격 증명을 사용해 로그인하려면 ID 페더레이션을 사용하십시오. W&B 조직 관리자(organization admin)가 조직에 대해 SSO를 구성했다면, 이미 W&B 앱 UI에 로그인할 때 조직 자격 증명을 사용하고 있을 것입니다. 이런 의미에서 ID 페더레이션은 W&B SDK를 위한 SSO와 비슷하지만, JSON Web Token(JWT)을 직접 사용한다는 점이 다릅니다. ID 페더레이션은 API key의 대안으로 사용할 수 있습니다. RFC 7523는 SDK에서 ID 페더레이션의 근간을 이룹니다.
ID 페더레이션은 모든 플랫폼 유형(SaaS Cloud, Dedicated Cloud, Self-Managed 인스턴스)의 Enterprise 플랜에서 Preview로 제공됩니다. 궁금한 점이 있으면 W&B 팀에 문의하십시오.
이 문서에서는 identity providerJWT issuer라는 용어를 서로 혼용하여 사용합니다. 이 기능의 문맥에서는 둘 다 동일한 대상을 가리킵니다.

JWT 발급자 설정

첫 단계로, 조직 관리자가 W&B 조직과 공개적으로 접근 가능한 JWT 발급자 간에 페더레이션을 설정해야 합니다.
  • 조직 대시보드에서 Settings 탭으로 이동합니다.
  • Authentication 옵션에서 Set up JWT Issuer를 클릭합니다.
  • 텍스트 상자에 JWT 발급자 URL을 입력하고 Create를 클릭합니다.
W&B는 ${ISSUER_URL}/.well-known/openid-configuration 경로에서 OIDC 디스커버리 문서를 자동으로 찾고, 해당 디스커버리 문서에 포함된 관련 URL에서 JSON Web Key Set(JWKS)를 검색합니다. JWKS는 JWT가 해당 identity provider에 의해 발급되었는지 실시간으로 검증하는 데 사용됩니다.

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

W&B 조직에 대해 JWT 발급자가 설정되면, 사용자는 해당 아이덴티티 프로바이더에서 발급한 JWT를 사용해 관련 W&B 프로젝트에 액세스할 수 있습니다. JWT 사용 방식은 다음과 같습니다:
  • 조직에서 사용 가능한 방식 중 하나를 사용해 아이덴티티 프로바이더에 로그인해야 합니다. 일부 프로바이더는 API나 SDK를 사용해 자동화된 방식으로 액세스할 수 있고, 일부는 관련 UI를 통해서만 액세스할 수 있습니다. 자세한 내용은 W&B 조직 관리자나 JWT 발급자 소유자에게 문의하십시오.
  • 아이덴티티 프로바이더에 로그인한 후 JWT를 발급받으면, 해당 JWT를 안전한 위치의 파일에 저장하고, 해당 파일의 절대 경로를 환경 변수 WANDB_IDENTITY_TOKEN_FILE에 설정하십시오.
  • W&B SDK 또는 CLI를 사용해 W&B 프로젝트에 액세스하십시오. SDK 또는 CLI는 JWT를 자동으로 인식하고, JWT가 성공적으로 검증되면 이를 W&B 액세스 토큰으로 교환합니다. W&B 액세스 토큰은 실행, 메트릭, 아티팩트 기록 등 AI 워크플로를 활성화하기 위한 관련 API에 액세스하는 데 사용됩니다. 액세스 토큰은 기본적으로 ~/.config/wandb/credentials.json 경로에 저장됩니다. 환경 변수 WANDB_CREDENTIALS_FILE을 지정하여 이 경로를 변경할 수 있습니다.
JWT는 API key, 비밀번호 등과 같은 장기 자격 증명의 한계를 보완하기 위해 설계된 단기 자격 증명입니다. 아이덴티티 프로바이더에서 설정한 JWT 만료 시간에 따라 JWT를 지속적으로 갱신해야 하며, 갱신된 JWT가 항상 환경 변수 WANDB_IDENTITY_TOKEN_FILE이 가리키는 파일에 저장되도록 해야 합니다.W&B 액세스 토큰에도 기본 만료 시간이 있으며, 만료 후 SDK 또는 CLI는 사용자의 JWT를 사용해 토큰을 자동으로 갱신하려고 시도합니다. 이때 사용자 JWT도 이미 만료되어 갱신되지 않은 상태라면 인증 실패가 발생할 수 있습니다. 가능하다면, W&B SDK 또는 CLI를 사용하는 AI 워크로드 내에 JWT 조회 및 만료 후 갱신 메커니즘을 포함해 구현하는 것이 좋습니다.

JWT 검증

JWT를 W&B 액세스 토큰으로 교환하고 프로젝트에 액세스하는 워크플로의 일부로, JWT는 다음과 같은 검증을 거칩니다:
  • JWT 서명은 W&B 조직 수준에서 구성된 JWKS를 사용해 검증됩니다. 이는 1차 방어선이며, 이 검증이 실패한다면 JWKS 설정이나 JWT 서명 방식에 문제가 있다는 의미입니다.
  • JWT의 iss 클레임은 조직 수준에서 구성된 issuer URL과 같아야 합니다.
  • JWT의 sub 클레임은 W&B 조직에 구성된 사용자의 이메일 주소와 같아야 합니다.
  • JWT의 aud 클레임은 AI 워크플로의 일부로 액세스하려는 프로젝트가 속해 있는 W&B 조직의 이름과 같아야 합니다. Dedicated Cloud 또는 Self-Managed 인스턴스의 경우, 인스턴스 수준 환경 변수 SKIP_AUDIENCE_VALIDATIONtrue로 설정해 audience 클레임 검증을 건너뛰거나, audience로 wandb를 사용할 수 있습니다.
  • JWT의 exp 클레임은 토큰이 유효한지, 또는 만료되어 갱신이 필요한지를 확인하기 위해 검사됩니다.

외부 서비스 계정

W&B는 오랜 기간 장기적으로 사용할 수 있는 API key를 가진 기본 제공 서비스 계정을 지원해 왔습니다. SDK 및 CLI용 ID 페더레이션 기능을 사용하면, 조직 수준에서 구성된 것과 동일한 발급자에서 발급된 경우 JWT를 사용해 인증하는 외부 서비스 계정도 연동할 수 있습니다. 팀 관리자는 기본 제공 서비스 계정과 마찬가지로 팀 범위 내에서 외부 서비스 계정을 구성할 수 있습니다. 외부 서비스 계정을 구성하려면:
  • 팀의 Service Accounts 탭으로 이동합니다.
  • New service account를 누릅니다.
  • 서비스 계정 이름을 입력하고, Authentication MethodFederated Identity를 선택한 후 Subject를 입력하고 Create를 누릅니다.
외부 서비스 계정의 JWT에 포함된 sub 클레임은 팀 관리자가 팀 수준 Service Accounts 탭에서 해당 계정의 subject로 설정한 값과 동일해야 합니다. 이 클레임은 JWT 검증의 일부로 검증됩니다. aud 클레임 요구사항은 사람 사용자 JWT와 동일합니다. 외부 서비스 계정의 JWT를 사용해 W&B에 액세스할 때는 초기 JWT 생성 및 지속적인 갱신 워크플로를 자동화하는 편이 일반적으로 더 쉽습니다. 외부 서비스 계정을 사용해 기록된 실행을 특정 사람 사용자에게 귀속시키고 싶다면, 기본 제공 서비스 계정에서와 마찬가지로 AI 워크플로에 WANDB_USERNAME 또는 WANDB_USER_EMAIL 환경 변수를 설정할 수 있습니다.
W&B는 유연성과 단순성 사이의 균형을 맞추기 위해, 데이터 민감도 수준이 서로 다른 다양한 AI 워크로드 전반에 걸쳐 기본 제공 서비스 계정과 외부 서비스 계정을 혼합해 사용할 것을 권장합니다.