아틀라시안 엔지니어로서, 여러 회사의 IT 인프라 팀과 협업하다 보면 사용자 계정 관리에 대한 고민을 많이 접하게 됩니다.
특히 많은 사용자의 계정을 관리할 때, 일일이 수작업으로 처리하는 것은 오류를 유발할 수 있고, 작업 시간이 많이 소요될 수 있습니다.
이러한 문제를 해결하기 위해, REST API를 활용하여 사용자 계정을 사용자 계정을 일괄 업데이트하고, 이를 엑셀 파일로 관리함으로써 작업 효율성을 크게 향상시킬 수 있는 방법을 소개하고자 합니다.
아틀라시안 계정 관리 자동화 작업 준비 사항
1. 도메인 클레임(Domain Claim)
도메인 클레임은 조직의 관리자가 특정 도메인에 대한 소유권을 주장하고, 해당 도메인의 모든 사용자를 관리할 수 있도록 하는 기능입니다. 이를 통해 조직 내에서 사용되는 모든 계정을 쉽게 관리할 수 있습니다.
- 도메인 클레임 절차:
📑Verify a domain to manage accounts (link)
2. 계정 클레임(Account Claim)
Account 클레임은 도메인 클레임이 완료된 후, 해당 도메인의 사용자 계정을 조직의 관리하에 두기 위한 절차입니다. 이 과정을 통해 조직 관리자는 인증된 도메인의 모든 사용자의 계정을 한 곳에서 관리할 수 있으며, 이메일, 이름 등의 사용자 정보를 수정할 수 있습니다.
3. Organization API key 생성
사용자 계정을 대량으로 업데이트하기 위해서는 아틀라시안 Organization API를 사용해야 합니다.
이 API를 통해 조직 내 사용자의 이메일을 변경할 수 있습니다.
📑Manage an organization with the admin apis (link)
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
...
사용자 계정 이메일 일괄 업데이트 스크립트
다음은 위에서 준비한 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를 활용하면 더욱 다양한 관리 작업을 자동화할 수 있으니, 필요에 따라 스크립트를 확장해 보세요!
감사합니다.
참고자료
📑Verify a domain to manage accounts (link)
📑Manage an organization with the admin apis (link)
📑Organization rest apis in cloud (link)
📑Admins user management rest apis (link)