메인 콘텐츠로 건너뛰기
서비스 계정은 팀 내 여러 프로젝트 또는 여러 팀 전반에 걸쳐 일반적인 작업을 자동으로 수행할 수 있는, 사람 이외의 시스템(머신) 사용자를 의미합니다. 서비스 계정은 CI/CD 파이프라인, 자동화된 학습 작업, 기타 머신-투-머신 워크플로에 특히 적합합니다.

핵심 이점

서비스 계정의 주요 이점:
  • 라이선스를 소모하지 않음: 서비스 계정은 사용자 좌석이나 라이선스를 소모하지 않습니다
  • 전용 API key: 자동화된 워크플로우를 위한 안전한 자격 증명
  • 사용자 귀속: 자동화된 실행을 실제 사용자에게 선택적으로 연결할 수 있음
  • 엔터프라이즈급: 대규모 프로덕션 자동화를 위해 설계됨
  • 위임된 작업: 서비스 계정은 자신을 생성한 사용자 또는 조직을 대신해 작업을 수행합니다

개요

서비스 계정은 개인 사용자 자격 증명이나 하드코딩된 자격 증명을 사용하지 않고 W&B 워크플로우를 자동화할 수 있는 안전한 방법을 제공합니다. 서비스 계정은 다음 두 가지 범위로 생성할 수 있습니다:
  • 조직 범위(Organization-scoped): 조직 관리자(org admin)가 생성하며, 모든 팀 전반에 걸쳐 접근할 수 있습니다.
  • 팀 범위(Team-scoped): 팀 관리자가 생성하며, 특정 팀으로 접근이 제한됩니다.
서비스 계정의 API key를 사용하면 호출자가 해당 서비스 계정 범위 내의 프로젝트에 대해 읽기 및 쓰기 작업을 수행할 수 있습니다. 이를 통해 W&B Models에서 실험 추적을 위한 자동화된 워크플로우를 중앙에서 관리하거나, W&B Weave에서 트레이스를 로깅할 수 있습니다. 서비스 계정은 다음과 같은 경우에 특히 유용합니다:
  • CI/CD 파이프라인: GitHub Actions, GitLab CI, Jenkins에서 모델 학습 실행을 자동으로 로깅
  • 예약 작업: 매일 밤 모델 재학습, 주기적인 평가 실행, 데이터 검증 워크플로우
  • 프로덕션 모니터링: 프로덕션 시스템에서 추론 지표와 모델 성능을 로깅
  • Jupyter 노트북: JupyterHub 또는 Google Colab 환경에서 공유 노트북 사용
  • Kubernetes 작업: K8s 클러스터에서 실행되는 자동화 워크플로우
  • Airflow/Prefect/Dagster: ML 파이프라인 오케스트레이션 도구
서비스 계정은 Dedicated Cloud, 엔터프라이즈 라이선스를 사용하는 Self-Managed 인스턴스, 그리고 Multi-tenant Cloud의 엔터프라이즈 계정에서 사용할 수 있습니다.

조직 범위 서비스 계정

조직 범위로 지정된 서비스 계정은 팀과 관계없이 조직 내의 모든 프로젝트에 대해 읽기 및 쓰기 권한을 가지며, 제한된 프로젝트는 예외입니다. 조직 범위 서비스 계정이 제한된 프로젝트에 액세스하려면 해당 프로젝트의 관리자(admin)가 서비스 계정을 해당 프로젝트에 명시적으로 추가해야 합니다.

조직 범위 서비스 계정 생성

조직 범위(organization-scoped)의 새 서비스 계정과 API key를 생성하려면 다음 단계를 따르세요.
  1. W&B에 로그인한 후 사용자 프로필 아이콘을 클릭하고 다음을 수행합니다.
    • Dedicated Cloud 또는 Self-Managed: Organization Dashboard를 클릭한 다음 Service Accounts를 클릭합니다.
    • Multi-tenant Cloud: Service Accounts를 클릭합니다.
  2. Create service account를 클릭합니다.
  3. 이름을 입력하고 기본 팀을 선택합니다.
  4. Create를 클릭합니다.
  5. 방금 생성한 서비스 계정을 찾습니다.
  6. 작업 메뉴(...)를 클릭한 다음 Create API key를 클릭합니다.
  7. API key 이름을 입력한 후 Create를 클릭합니다.
  8. API key를 복사하여 안전한 위치에 보관합니다.
  9. Done을 클릭합니다.
전체 API key는 생성 시에만 한 번 표시됩니다. 대화상자를 닫으면 전체 API key를 다시 확인할 수 없습니다. 설정에서는 key ID(키의 앞부분)만 표시됩니다. 전체 API key를 분실한 경우 새 API key를 생성해야 합니다.
조직 범위 서비스 계정은 조직 내 모든 팀이 소유한 제한되지 않은 프로젝트에 액세스할 수 있지만, 기본 팀이 반드시 지정되어 있어야 합니다. 이는 모델 학습 또는 생성형 AI 앱 환경에서 WANDB_ENTITY 변수가 설정되지 않았더라도 워크로드가 실패하는 상황을 방지하는 데 도움이 됩니다. 다른 팀의 프로젝트에 조직 범위 서비스 계정을 사용하려면, WANDB_ENTITY 환경 변수를 해당 팀으로 설정해야 합니다.

팀 범위의 서비스 계정

팀 범위의 서비스 계정은 해당 팀 내의 모든 프로젝트에서, 그 팀의 제한된 프로젝트를 제외하고 읽기 및 쓰기 작업을 할 수 있습니다. 팀 범위의 서비스 계정이 제한된 프로젝트에 액세스하려면, 먼저 해당 프로젝트의 관리자가 서비스 계정을 그 프로젝트에 명시적으로 추가해야 합니다.

팀 범위 서비스 계정 생성

팀 범위의 서비스 계정과 API key를 새로 생성하려면:
  1. 팀 설정에서 Service Accounts를 클릭합니다.
  2. New Team Service Account를 클릭합니다.
  3. 서비스 계정 이름을 입력합니다.
  4. 인증 방법을 기본값인 Generate API key로 설정합니다. Federated Identity를 선택하면 해당 서비스 계정은 API key를 소유할 수 없습니다.
  5. Create를 클릭합니다.
  6. 방금 생성한 서비스 계정을 찾습니다.
  7. 액션 메뉴(...)를 클릭한 다음 Create API key를 클릭합니다.
  8. API key 이름을 입력한 후 Create를 클릭합니다.
  9. API key를 복사하여 안전한 위치에 보관합니다.
  10. Done을 클릭합니다.
전체 API key는 생성 시에만 한 번 표시됩니다. 대화상자를 닫으면 전체 API key를 다시 확인할 수 없습니다. 설정에서는 key ID(키의 앞부분)만 표시됩니다. 전체 API key를 분실한 경우 새 API key를 생성해야 합니다.

서비스 계정용 추가 API key 생성하기

서비스 계정에 속한 API key를 생성하려면:
  1. 팀 또는 조직 설정에서 Service Accounts 탭으로 이동합니다.
  2. 목록에서 해당 서비스 계정을 찾습니다.
  3. 작업 메뉴(...)를 클릭한 다음 Create API key를 클릭합니다.
  4. API key 이름을 입력한 후 Create를 클릭합니다.
  5. 표시된 API key를 바로 복사해 안전한 위치에 보관합니다.
  6. Done을 클릭합니다.
서로 다른 환경이나 워크플로를 지원하기 위해 하나의 서비스 계정에 대해 여러 개의 API key를 생성할 수 있습니다.
전체 API key는 생성 시에만 한 번 표시됩니다. 대화상자를 닫으면 전체 API key를 다시 확인할 수 없습니다. 설정에서는 key ID(키의 앞부분)만 표시됩니다. 전체 API key를 분실한 경우 새 API key를 생성해야 합니다.

서비스 계정 API key 삭제

조직 또는 팀 서비스 계정에 속한 API key를 삭제하려면:
  1. Organization settings로 이동한 다음 API Keys를 클릭합니다.
  2. 삭제할 API key를 찾습니다. 이 목록에는 조직 및 팀 서비스 계정이 소유한 모든 API key가 포함됩니다. 키 이름 또는 ID로 검색하거나 필터링할 수 있고, 어떤 열이든 기준으로 정렬할 수 있습니다.
  3. 삭제 버튼을 클릭합니다.
팀 범위 서비스 계정을 사용하는 모델 학습 또는 생성 AI 앱 환경에서 팀을 설정하지 않으면, 모델 실행 또는 weave trace는 서비스 계정 상위 팀에 속한 지정된 프로젝트에 기록됩니다. 이러한 상황에서는 참조된 사용자가 서비스 계정 상위 팀의 구성원이 아닌 경우 WANDB_USERNAME 또는 WANDB_USER_EMAIL 변수를 사용한 사용자 귀속이 동작하지 않습니다.
팀 범위 서비스 계정은 상위 팀과 다른 팀에 속한 팀 또는 제한 범위 프로젝트에는 실행을 기록할 수 없지만, 다른 팀의 공개 가시성 프로젝트에는 실행을 기록할 수 있습니다.

외부 서비스 계정

내장된 서비스 계정 외에도 W&B는 JSON Web Token(JWT)을 발급할 수 있는 ID 공급자(IdP)와의 Identity federation을 통해 W&B SDK 및 CLI에서 팀 단위로 스코프가 지정된 외부 서비스 계정도 지원합니다.

모범 사례

조직에서 서비스 계정을 안전하고 효율적으로 사용하려면 다음 권장 사항을 따르십시오.
  • 시크릿 관리자 사용: 서비스 계정 API key는 일반 텍스트 구성 파일이 아니라 안전한 시크릿 관리 시스템(예: AWS Secrets Manager, HashiCorp Vault, Azure Key Vault)에 저장하십시오.
  • 최소 권한 원칙: 필요한 프로젝트에만 액세스를 제한하기 위해, 가능한 경우 조직 범위 계정이 아닌 팀 범위 서비스 계정을 생성하십시오.
  • 사용 사례별 고유 서비스 계정: 감사 가능성을 높이고 세분화된 액세스 제어를 위해, 서로 다른 자동화 워크플로(예: 하나는 CI/CD용, 다른 하나는 스케줄된 재학습용)에 대해 별도의 서비스 계정을 생성하십시오.
  • 정기 감사: 활성 서비스 계정을 주기적으로 검토하고 더 이상 사용하지 않는 계정은 제거하십시오. 감사 로그를 확인하여 서비스 계정 활동을 모니터링하십시오.
  • API key 보안 처리:
    • API key를 버전 관리 시스템에 커밋하지 마십시오.
    • 환경 변수를 사용하여 애플리케이션에 키를 전달하십시오.
    • 키가 실수로 노출된 경우 재발급(교체)하십시오.
  • 이름 지정 규칙: 서비스 계정의 목적을 나타내는 설명적인 이름을 사용하십시오.
    • 권장: ci-model-training, nightly-eval-pipeline, prod-inference-monitor
    • 지양: service-account-1, test-sa, temp
  • 사용자 추적: 여러 팀원이 동일한 자동화 워크플로를 사용할 때, 각 실행을 누가 트리거했는지 추적할 수 있도록 WANDB_USERNAME 또는 WANDB_USER_EMAIL을 설정하십시오.
    export WANDB_API_KEY="<service_account_key>"
    export WANDB_USERNAME="john.doe@company.com"
    
  • 환경 구성: 팀 범위 서비스 계정의 경우, 실행이 올바른 팀으로 기록되도록 항상 WANDB_ENTITY를 설정하십시오.
    export WANDB_ENTITY="ml-team"
    export WANDB_PROJECT="production-models"
    
  • 오류 처리: 서비스 계정 자격 증명 문제를 빠르게 파악할 수 있도록, 인증 실패에 대한 적절한 오류 처리와 알림을 구현하십시오.
  • 문서화: 다음 내용을 문서로 정리하여 유지 관리하십시오.
    • 어떤 서비스 계정이 존재하는지와 그 목적
    • 각 서비스 계정을 사용하는 시스템/워크플로
    • 각 계정에 책임이 있는 팀의 연락처 정보

문제 해결

일반적인 문제와 해결 방법:
  • “Unauthorized” 오류: API key가 올바르게 설정되어 있고 서비스 계정에 대상 프로젝트에 대한 액세스 권한이 있는지 확인하세요
  • 실행이 표시되지 않음: WANDB_ENTITY가 올바른 팀 이름으로 설정되어 있는지 확인하세요
  • 사용자 소유자 표시가 되지 않음: WANDB_USERNAME에 지정된 사용자가 해당 팀의 구성원인지 확인하세요
  • 제한된 프로젝트에 대한 액세스 거부: 서비스 계정을 제한된 프로젝트의 액세스 허용 목록에 명시적으로 추가하세요