ID 페더레이션은 SaaS 클라우드, 전용 클라우드, 셀프 호스티드 인스턴스 등 모든 플랫폼 유형의
Enterprise 플랜에서 Preview 버전으로 제공됩니다. 궁금한 점이 있으면 W&B 팀에 문의하세요.이 문서의 목적상
identity provider와 JWT issuer라는 용어는 혼용되어 사용됩니다. 이 기능의 맥락에서 두 용어는 모두 동일한 대상을 지칭합니다.JWT 발행자(issuer) 설정
첫 번째 단계로, 조직 관리자는 W&B 조직과 공개적으로 엑세스 가능한 JWT 발행자 간의 페더레이션을 설정해야 합니다.- 조직 대시보드의 Settings 탭으로 이동합니다.
- Authentication 옵션에서
Set up JWT Issuer를 누릅니다. - 텍스트 박스에 JWT 발행자 URL을 추가하고
Create를 누릅니다.
${ISSUER_URL}/.well-known/openid-configuration 경로에서 OIDC 검색 문서를 자동으로 확인하고, 검색 문서 내 관련 URL에서 JSON Web Key Set(JWKS)을 찾으려고 시도합니다. JWKS는 해당 JWT가 관련 identity provider에 의해 발행되었는지 확인하기 위한 실시간 검증에 사용됩니다.
JWT를 사용하여 W&B에 엑세스하기
W&B 조직에 JWT 발행자가 설정되면, 사용자는 해당 identity provider가 발행한 JWT를 사용하여 관련 W&B Projects에 엑세스할 수 있습니다. JWT 사용 메커니즘은 다음과 같습니다.- 조직에서 사용 가능한 메커니즘 중 하나를 사용하여 identity provider에 로그인해야 합니다. 일부 제공업체는 API 또는 SDK를 사용하여 자동화된 방식으로 엑세스할 수 있는 반면, 일부는 관련 UI를 통해서만 엑세스할 수 있습니다. 자세한 내용은 W&B 조직 관리자 또는 JWT 발행자 소유자에게 문의하십시오.
- identity provider에 로그인한 후 JWT를 검색하면, 보안 위치의 파일에 저장하고 환경 변수
WANDB_IDENTITY_TOKEN_FILE에 절대 파일 경로를 설정하십시오. - W&B SDK 또는 CLI를 사용하여 W&B 프로젝트에 엑세스합니다. SDK 또는 CLI는 자동으로 JWT를 감지하고, JWT가 성공적으로 검증된 후 W&B 엑세스 토큰으로 교환해야 합니다. W&B 엑세스 토큰은 AI 워크플로우를 활성화하기 위해 관련 API에 엑세스하는 데 사용됩니다. 즉, Runs, 메트릭, Artifacts 등을 로그하는 데 사용됩니다. 엑세스 토큰은 기본적으로
~/.config/wandb/credentials.json경로에 저장됩니다. 환경 변수WANDB_CREDENTIALS_FILE을 지정하여 해당 경로를 변경할 수 있습니다.
JWT는 API 키, 비밀번호와 같은 수명이 긴 자격 증명의 단점을 보완하기 위해 수명이 짧은 자격 증명으로 설계되었습니다. identity provider에 구성된 JWT 만료 시간에 따라, 지속적으로 JWT를 갱신하고 환경 변수
WANDB_IDENTITY_TOKEN_FILE이 참조하는 파일에 저장되어 있는지 확인해야 합니다.W&B 엑세스 토큰에도 기본 만료 기간이 있으며, 만료 후 SDK 또는 CLI는 JWT를 사용하여 자동으로 갱신을 시도합니다. 이때 사용자 JWT도 만료되었고 갱신되지 않은 경우 인증 실패가 발생할 수 있습니다. 가능하면 JWT 검색 및 만료 후 갱신 메커니즘은 W&B SDK 또는 CLI를 사용하는 AI 워크로드의 일부로 구현되어야 합니다.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_VALIDATION을true로 설정하거나wandb를 대상으로 사용할 수 있습니다. - JWT의
exp클레임은 토큰이 유효한지 또는 만료되어 갱신이 필요한지 확인하기 위해 점검됩니다.
외부 서비스 계정
W&B는 오랫동안 수명이 긴 API 키를 사용하는 내장 서비스 계정을 지원해 왔습니다. SDK 및 CLI용 ID 페더레이션 기능을 사용하면, 조직 수준에서 구성된 것과 동일한 발행자가 발행한 경우 JWT를 인증에 사용하는 외부 서비스 계정을 가져올 수도 있습니다. 팀 관리자는 내장 서비스 계정과 마찬가지로 팀 범위 내에서 외부 서비스 계정을 구성할 수 있습니다. 외부 서비스 계정을 구성하려면:- 팀의 Service Accounts 탭으로 이동합니다.
New service account를 누릅니다.- 서비스 계정의 이름을 입력하고
Authentication Method로Federated Identity를 선택한 다음,Subject를 입력하고Create를 누릅니다.
sub 클레임은 팀 관리자가 팀 수준의 Service Accounts 탭에서 주체(subject)로 구성한 것과 동일해야 합니다. 이 클레임은 JWT 검증의 일부로 확인됩니다. aud 클레임 요구 사항은 일반 사용자 JWT와 유사합니다.
외부 서비스 계정의 JWT를 사용하여 W&B에 엑세스할 때, 초기 JWT를 생성하고 지속적으로 갱신하는 워크플로우를 자동화하는 것이 일반적으로 더 쉽습니다. 외부 서비스 계정을 사용하여 로그된 Runs를 실제 사용자에게 귀속시키고 싶은 경우, 내장 서비스 계정에서 하는 방식과 유사하게 AI 워크플로우에 환경 변수 WANDB_USERNAME 또는 WANDB_USER_EMAIL을 구성할 수 있습니다.
W&B는 유연성과 단순성 사이의 균형을 맞추기 위해, 데이터 민감도 수준이 다른 여러 AI 워크로드에 걸쳐 내장 서비스 계정과 외부 서비스 계정을 혼합하여 사용할 것을 권장합니다.