본문 바로가기
IT 이야기/Jira, Confluence, Crowd

Crowd 사용자 비활성화 Rest API 대량 작업

by youngmap 2023. 6. 30.
반응형

Crowd를 Jira / Confluence 시스템과 연동하서 계정을 관리하고 사용 중이다.

라이선스 User 정책으로 2,000개가 넘는 유저의 계정을 비활성화(Inactive) 처리할 일이 생겼다.

 

https://docs.atlassian.com/atlassian-crowd/5.1.3/REST/

 

Crowd 5.1.3

Sets the alias for the given username in all the applications, replacing the previous alias set for the same username, if they exist. Applications that are not included in the map will have their aliases removed. Request query parameters parametertypedescr

docs.atlassian.com

 

Crowd 화면에서 User를 조회하고 Active 체크를 해제하고 저장하는 방법이 있다.

이렇게 일하면 일주일이 걸려도 다 처리하지 못할 것이다.

Crowd에서 제공하는 REST API 문서를 보고 일괄 스크립트를 만들어 자동화 작업하기로 했다.

 

1. 시스템 미사용 사용자 정리

먼저 Jira와 Confluence를 장기간 사용하지 않는 유저가 속한 시스템 기본그룹을 제거하는 API를 찾아보았다.

RestAPI를 호출하는 방법은 자동화 프로그램을 만들거나 브라우저에서 호출하거나 여러 가지 프로그램을 사용하는 방법이 있다.

그래도 가장 신속하게 할 수 있는 방법으로, Crowd가 설치되어 있는 리눅스 서버에서 자기 자신을 호출하도록 Curl 스크립트를 작성했다.

 

* Jira 기본 유저 그룹을 제거하는 DELETE 메서드 Rast API 호출 예시 

curl -vX DELETE '127.0.0.1:7777/rest/usermanagement/1/group/user/direct?groupname=jira-software-users&username=youngmap' -H 'Content-Type: application/json' -u 'jira-user-application:password1234'

 

2. Crowd 계정 만료 대량 작업

유저의 정보를 업데이트하는 API가 있어서 사용했다.

이름, 이메일 정보 나중에 복원을 위해 공백이 아닌 기존 값으로 넣어주고 active 값만 false로 하여 PUT 메서드를 호출한다.

* Crowd 유저 계정의 정보를 업데이트하는 PUT 메서드 RestAPI 호출 예시

crul -vX PUT '127.0.0.1:7777/rest/usermanagement/1/user?username=youngmap' -d '{"name":"youngmap","first-name":"youngmap","last-name":"youngmap","email":"aaa@naver.com","active":"false"}' -H 'Content-Type: application/json' -u 'jira-user-application:password1234'

쉘을 만들어서 500개 정도씩 crul 스크립트를 복-붙하고 수행했다.

문제없이 순식간에 2,000명 이상의 계정을 정리했다.

혹시 부하가 있을까 봐 500개씩 끊어서 작업했지만 한 번에 작업해도 괜찮을 것 같다.

 

그리고 crul 스크립트 생성 작업은 DB에서 쿼리로 뽑은 것이다.

DB에 사용자 정보도 있고 마지막 로그인 시간도 있으니 만료 대상을 기준에 의해서 뽑으면서 crul도 함께 생성하면 매우 빠르고 편리하게 작업할 수 있다.

 

반응형