Atlassian 계정 관리 자동화

아틀라시안 엔지니어로서, 여러 회사의 IT 인프라 팀과 협업하다 보면 사용자 계정 관리에 대한 고민을 많이 접하게 됩니다.
특히 많은 사용자의 계정을 관리할 때, 일일이 수작업으로 처리하는 것은 오류를 유발할 수 있고, 작업 시간이 많이 소요될 수 있습니다.
이러한 문제를 해결하기 위해, REST API를 활용하여 사용자 계정을 사용자 계정을 일괄 업데이트하고, 이를 엑셀 파일로 관리함으로써 작업 효율성을 크게 향상시킬 수 있는 방법을 소개하고자 합니다.

아틀라시안 계정 관리 자동화 작업 준비 사항

1. 도메인 클레임(Domain Claim)

도메인 클레임은 조직의 관리자가 특정 도메인에 대한 소유권을 주장하고, 해당 도메인의 모든 사용자를 관리할 수 있도록 하는 기능입니다. 이를 통해 조직 내에서 사용되는 모든 계정을 쉽게 관리할 수 있습니다.

  • 도메인 클레임 절차:
TXT 레코드를 생성하고 해당 값을 이용 중인 도메인 사이트에 등록합니다.
도메인 소유권이 확인되면, 해당 도메인 내 모든 사용자 계정이 조직의 관리하에 놓이게 됩니다.


2. 계정 클레임(Account Claim)

Account 클레임은 도메인 클레임이 완료된 후, 해당 도메인의 사용자 계정을 조직의 관리하에 두기 위한 절차입니다. 이 과정을 통해 조직 관리자는 인증된 도메인의 모든 사용자의 계정을 한 곳에서 관리할 수 있으며, 이메일, 이름 등의 사용자 정보를 수정할 수 있습니다.

VERIFIED 된 도메인에 Claim accounts를 클릭합니다.
Claim 방식엔 2가지가 있으나, 해당 post에선 All Accounts로 진행하겠습니다.
Claim 되는 계정 목록에 대한 정보를 CSV 형태로 내보냅니다.
해당 내용을 확인하여 계정에 대한 정보를 미리 확인할 수 있습니다.
Claim 설정에도 두 가지가 있습니다.
이번 Post에선 소유한 도메인에 신규 account가 생성될 경우 자동적으로 계정이 포함되는 방식으로 진행하겠습니다.
마지막으로 문제는 없는지 확인합니다.
Account Claim이 Automatically로 설정된 것을 확인할 수 있습니다.

3. Organization API key 생성

사용자 계정을 대량으로 업데이트하기 위해서는 아틀라시안 Organization API를 사용해야 합니다.
API를 통해 조직 내 사용자의 이메일을 변경할 수 있습니다.

4. 사용자 계정 목록(Account List) 준비

변경할 사용자 계정의 정보를 담은 CSV 파일이 필요합니다.
이 파일에는 아틀라시안 계정 ID와 변경할 새로운 이메일 주소가 포함되어 있어야 합니다.
아래 예시는 CSV 파일의 기본 구조입니다.

Atlassian ID, NewEmail
account_id_1, new_email_1@example.com
account_id_2, new_email_2@example.com
...
Excel을 통한 컬럼 예시
각 계정의 고유한 Account Id는 Export accounts을 통해 확인할 수 있습니다.

사용자 계정 이메일 일괄 업데이트 스크립트

다음은 위에서 준비한 CSV 파일을 읽어 사용자 계정을 업데이트하는 Python 스크립트입니다.

import csv
import requests

# CSV 파일 경로
csv_file_path = '/파일 경로/계정 목록.csv'

# 사용자 데이터를 저장할 리스트
users = []

# CSV 파일 읽기
with open(csv_file_path, 'r', encoding='utf-8') as csvfile:
    csv_reader = csv.DictReader(csvfile)
    for row in csv_reader:
        user_data = {
            "account_id": row['Atlassian ID'],
            "new_email": row['NewEmail']
        }
        users.append(user_data)

# ORG API 필요
api_token = ORG API 삽입
api_endpoint = "https://api.atlassian.com/users"

headers = {
    "Authorization": f"Bearer {api_token}",
    "Accept": "application/json",
    "Content-Type": "application/json"
}

def update_email(account_id, new_email):
    url = f"{api_endpoint}/{account_id}/manage/email"
    data = {"email": new_email}
    try:
        response = requests.put(url, json=data, headers=headers)
        response.raise_for_status()
        print(f"Successfully updated email for account {account_id}")
        return True
    except requests.exceptions.RequestException as e:
        print(f"Error updating email for account {account_id}: {e}")
        if hasattr(e, 'response') and e.response is not None:
            print(f"Response content: {e.response.text}")
        return False

# 사용자 이메일 업데이트
for user in users:
    update_email(user['account_id'], user['new_email'])

print("Email update process completed.")

마무리

위에서 설명한 방법으로, 대량의 사용자 계정을 일괄적으로 관리할 수 있습니다. REST API와 CSV 파일을 활용한 이 자동화 방법은 관리자의 업무 효율성을 크게 높여줍니다. 특히, 대규모 조직에서 사용자 계정의 이메일을 변경하거나 관리하는데 드는 시간과 노력을 절감할 수 있습니다.

이러한 자동화는 단순히 이메일 변경에 그치지 않고, 다음과 같은 다양한 상황에서도 유용하게 활용될 수 있습니다:

  • 회사 인수 합병: 두 회사가 합병될 때 대규모 이메일 도메인 변경.
  • 도메인 변경: 회사가 도메인을 변경할 때 모든 직원의 이메일 주소 업데이트.
  • 부서 재편성: 조직 개편으로 인해 많은 직원의 이메일 주소 형식 변경.
  • 정기적인 계정 감사: 주기적으로 사용자 계정을 검토하고 업데이트.
  • 대규모 온보딩: 새로운 프로젝트나 팀 확장으로 많은 새 사용자를 추가.

또한, 이 스크립트는 사용자 권한 일괄 변경, 라이선스 할당 자동화, 사용자 그룹 관리 등 다양한 용도로 확장할 수 있습니다.

아틀라시안의 다양한 API를 활용하면 더욱 다양한 관리 작업을 자동화할 수 있으니, 필요에 따라 스크립트를 확장해 보세요!

감사합니다.

참고자료

꾸준한 배움과 경험을 통해 복잡한 기술을 이해하고, 이를 세상에 쉽게 설명하고 커뮤니케이션하는 것을 목표로 하고 있습니다. 아인슈타인의 말처럼, "말로 쉽게 설명할 수 없으면, 제대로 이해하지는 못한 것이다"라는 철학을 바탕으로, 누구나 이해할 수 있는 방식으로 기술을 전달하고자 합니다

Leave a Reply

Your email address will not be published. Required fields are marked *