Descope 사용자 일괄 관리 스크립트

이 프로젝트는 CSV 파일 또는 Google Sheets URL을 사용하여 Descope 사용자를 일괄 생성하거나 비밀번호를 변경하는 Python 스크립트입니다.

주요 기능

  • CSV 파일 또는 Google Sheets URL을 이용한 사용자 일괄 생성
  • CSV 파일 또는 Google Sheets URL을 이용한 사용자 비밀번호 일괄 변경
  • 사용자 라이선스 만료일(egBimLExpiryDate) 일괄 지정 기능
  • Gitea Actions를 통한 워크플로우 자동화

요구 사항

  • Python 3.13 이상
  • uv (가상 환경 및 패키지 관리 도구)
  • Descope Project ID 및 Management Key

로컬 환경에서 실행

1. 설치 및 설정

  1. 저장소 복제

    git clone https://gitea.hmac.kr/lectom/descope-bulk-user-script.git
    cd descope-bulk-user-script
  2. 가상 환경 생성 및 의존성 설치

    uv venv
    source .venv/bin/activate
    uv sync
  3. 환경 변수 설정 프로젝트 루트에 .env 파일을 생성하고 Descope 키를 추가합니다. (.env.example 참고)

    DESCOPE_PROJECT_ID="YOUR_PROJECT_ID"
    DESCOPE_MANAGEMENT_KEY="YOUR_MANAGEMENT_KEY"

2. 사용법

스크립트는 main.py를 통해 실행하며, 처리할 데이터 소스(CSV 파일 또는 Google Sheets URL)와 함께 수행할 작업을 지정합니다.

  • source: 처리할 CSV 파일 경로 또는 Google Sheets URL
  • --action: 수행할 작업 (create, change_password, test)
  • --expiry-date: (선택 사항) 라이선스 만료일을 YYYY-MM-DD 형식으로 지정. 지정 시 모든 사용자의 egBimLExpiryDate 값을 덮어씁니다.

Google Sheets URL 준비

Google Sheets를 데이터 소스로 사용하려면, 해당 시트에서 파일 > 공유 > 웹에 게시를 선택하세요. 링크 탭에서 “쉼표로 구분된 값(.csv)” 형식을 선택하고 게시하여 생성된 URL을 사용해야 합니다.

실행 예시

  • 로컬 CSV 파일로 사용자 생성

    python main.py jobs/sample.csv --action create
  • Google Sheets URL로 사용자 생성 및 만료일 지정

    python main.py "https://docs.google.com/spreadsheets/d/e/.../pub?output=csv" --action create --expiry-date 2025-12-31
  • 비밀번호 변경

    python main.py users_passwords.csv --action change_password
  • 단일 사용자 생성 테스트 CSV 파일 없이 API 연동을 빠르게 테스트합니다.

    python main.py --action test

Gitea Actions를 이용한 실행

이 저장소의 Gitea Actions 워크플로우를 사용하면 로컬 환경 설정 없이 웹 UI에서 스크립트를 실행할 수 있습니다.

1. 사전 준비: Gitea Secrets 설정

워크플로우가 Descope API에 접근하려면 Gitea 저장소에 API 키를 Secret으로 등록해야 합니다. 이 작업은 저장소 관리자가 한 번만 수행하면 됩니다.

  1. Gitea 저장소에서 Settings > Secrets 탭으로 이동합니다.
  2. Create Secret 버튼을 클릭하여 다음 두 개의 Secret을 추가합니다.
    • DESCOPE_PROJECT_ID: Descope 프로젝트 ID를 값으로 입력합니다.
    • DESCOPE_MANAGEMENT_KEY: Descope 관리 키를 값으로 입력합니다.

2. 워크플로우 실행 방법

  1. 저장소의 Actions 탭으로 이동합니다.
  2. 왼쪽 사이드바에서 Descope 사용자 일괄 처리 워크플로우를 선택합니다.
  3. Run Workflow 버튼을 클릭합니다.
  4. 나타나는 입력 필드에 값을 채웁니다.
    • google_sheet_url: 처리할 Google Sheets의 CSV 내보내기 URL. (자세한 내용은 “Google Sheets URL 준비” 섹션 참고)
    • action_type: 실행할 작업 (create 또는 change_password)
    • expiry_date: (선택 사항) YYYY-MM-DD 형식의 라이선스 만료일. 입력 시 모든 사용자의 만료일을 이 값으로 덮어씁니다.
  5. 입력 확인 후, Run Workflow 버튼을 다시 클릭하여 실행을 시작합니다.

3. 실행 결과 확인

워크플로우가 실행되면 Actions 목록에 새로운 실행 항목이 나타납니다.

  1. 해당 실행 항목을 클릭하여 상세 페이지로 들어갑니다.
  2. run_bulk_operation 작업을 클릭하면 스크립트의 실행 로그를 실시간으로 확인할 수 있습니다.
  3. 사용자 생성 또는 비밀번호 변경 과정에서 발생하는 모든 성공 및 오류 메시지가 이 로그에 표시됩니다. 작업이 예상대로 완료되었는지 반드시 로그를 통해 확인하세요.

CSV 데이터 형식

사용자 생성 (create)

헤더 설명 필수
login_id 사용자의 로그인 ID
email 사용자 이메일 주소
display_name 사용자 표시 이름
tenants 사용자를 할당할 테넌트 ID의 배열 (JSON 형식 문자열) 아니요
role_name tenants에 명시된 모든 테넌트에서 할당할 역할 이름 아니요
company 사용자 정의 속성 company 아니요
egBimLExpiryDate 사용자 정의 속성, UTC 타임스탬프(초) 값. --expiry-date로 덮어쓸 수 있음. 아니요

참고:

  • tenants 필드는 ["tenant-id-1", "tenant-id-2"] 와 같이 JSON 배열 형식의 문자열로 입력해야 합니다.

비밀번호 변경 (change_password)

헤더 설명 필수
login_id 사용자의 로그인 ID
new_password 새 비밀번호
Description
No description provided
Readme 68 KiB
Languages
Python 100%