Active Directory 자동화 예시
6개의 오케스트레이션 Active Directory 활동 세트를 통해 조직은 시간을 절약하고 실수를 제거하는 감사 가능한 자체 문서화 워크플로를 통해 온보딩/오프보딩 프로세스를 자동화할 수 있습니다.
- AD 사용자 계정 생성
- AD 사용자 계정 업데이트
- AD 사용자 계정 제거
- AD 사용자 계정 사용 안 함
- 쿼리 AD
- AD 사용자 암호를 재설정합니다.
이러한 활동은 공통 디자인을 공유하고, 보완적인 기능을 가지며, 공통 매개 변수 집합을 공유합니다. 단독으로 또는 함께 사용하여 사용자 계정을 프로비전 및 프로비전 해제하기 위한 일관된 워크플로를 만들 수 있습니다.
오케스트레이션으로 Active Directory 업데이트
조직에서 인스턴스를 ServiceNow 사용자 계정 데이터에 대한 단일 기록 시스템으로 만들고 Active Directory를 최신 변경 내용으로 업데이트하려고 합니다.
이 태스크 정보
해결 방법은 사용자 레코드의 ServiceNow 변경 내용을 Active Directory로 푸시하여 새 사용자 레코드를 만들거나 기존 레코드를 업데이트하는 Orchestration 워크플로를 만드는 것입니다. 이를 위해 사용자 [sys_user] 테이블의 데이터를 기반으로 Active Directory에서 레코드를 만들고 업데이트할 수 있는 오케스트레이션 워크플로우를 ServiceNow 만듭니다.
프로시저
- 다음으로 이동 모두 > Workflow > 워크플로우 편집기.
-
워크플로우 탭에서 + 아이콘을 클릭하여 다음 변수를 사용하는 새 워크플로우를 생성합니다.
- 이름: AD 사용자 동기화
- 테이블: 전역 [global]
-
제출을 클릭합니다.
시작점과 끝점이 있는 기본 워크플로우가 캔버스에 나타납니다.
-
캔버스의 왼쪽 상단 모서리에 있는 메뉴 아이콘을 클릭하고 컨텍스트 메뉴에서 입력 편집 을 선택합니다.
그림 1. 워크플로우 입력 편집 -
워크플로우 입력 양식의 변수 기록 목록에서 새로 만들기를 클릭하고 테이블의 필드를 사용하여 새 변수를 만듭니다.
필드 값 유형 참조 레이블 사용자 열 이름 u_user 참조 사양 > 참조 사용자(sys_user) - 제출을 클릭합니다.
- 사용자 지정 탭에서 사용자 지정 활동 > Active Directory.
-
AD 객체 업데이트 활동을 새 워크플로우의 시작점과 엔드포인트 사이의 전환 라인으로 끌어서 놓습니다.
이 동작은 활동을 엔드포인트에 자동으로 연결하고 워크플로우 활동 속성 양식을 엽니다.
-
테이블의 필드를 사용하여 양식을 작성합니다.
필드 값 이름 사용자 데이터 업데이트와 같은 논리 이름을 입력합니다. 도메인 컨트롤러 LDAP 통합은 ServiceNow 사용자 계정이 연결된 LDAP 서버에 대한 참조를 추가합니다. LDAP 서버를 식별하려면 다음 명령문을 입력하십시오. ${workflow.inputs.u_user.ldap_server.server_url}유형 AD 객체의 유형입니다. 이 경우 유형은 기본값인 User입니다. 객체 이름 이 예제에서는 사용자 이름이 Active Directory sAMAccountName과 일치한다고 ServiceNow 가정합니다. 다음을 입력합니다. ${workflow.inputs.u_user.user_name}객체 데이터 사용자가 있는 경우 Active Directory에서 사용자 계정을 업데이트합니다. 이 예제에서는 사용자의 직함이 업데이트됩니다. {"제목" : "QA"} -
제출을 클릭합니다.
워크플로는 다음과 같습니다.
그림 2. AD 사용자 업데이트 -
두 활동 결과(성공 및 실패)를 엔드포인트에 연결합니다.
이 시점에서 워크플로는 사용자 레코드를 입력으로 사용하고 ServiceNow 해당 Active Directory 계정의 이름, 성 및 직함을 업데이트합니다. 계정이 Active Directory에 없으면 워크플로가 실패합니다.주:정상적인 워크플로에서는 실패 시 몇 가지 유형의 대체 작업이 바람직합니다. 예를 들어 워크플로우에서 기록을 업데이트하지 못하면 이메일 및 SMS 알림을 보낼 수 있습니다.
- 워크플로우가 실패하지 않도록 하려면 시작과 AD 객체 업데이트 활동 사이의 전환 줄에 AD 객체 만들기 활동을 추가합니다.
-
테이블의 필드를 사용하여 워크플로우 활동 속성 양식을 작성합니다.
필드 값 이름 논리 이름(예: 사용자 데이터 생성)을 입력합니다. 도메인 컨트롤러 업데이트 활동과 동일합니다. ${workflow.inputs.u_user.ldap_server.server_url}Ou 이 객체가 속한 조직 구성 단위입니다. 이 예에서는 OU=HQ,OU=Managed Objects를 입력할 수 있습니다 객체 이름 업데이트 활동과 동일합니다. ${workflow.inputs.u_user.user_name}객체 데이터 사용자 이름만 있는 계정을 작성합니다. 이 예제에서는 {"givenName" : "${workflow.inputs.u_user.first_name}", "SN" : "${workflow.inputs.u_user.last_name}" }을 입력할 수 있습니다. - 제출을 클릭합니다.
-
AD 개체 만들기 작업의 실패 결과를 End에 연결합니다.
이 예에서는 오류를 무시합니다. 이제 워크플로는 다음과 같습니다.
그림 3. AD 사용자 생성 이 절차에서는 사용자 이름으로만 구성된 기본 Active Directory 계정을 만드는 간단한 워크플로를 작성합니다. 그런 다음 워크플로는 사용자 [sys_user] 테이블에서 ServiceNow 제공하는 추가 정보로 해당 계정을 업데이트합니다. 그러나 사용자 계정이 이미 있는 경우에는 Create AD Object 활동을 실행하지 않으려고 합니다. 워크플로는 일치하는 사용자 레코드를 위해 Active Directory를 쿼리한 다음 쿼리 결과에 따라 워크플로를 분기해야 합니다. 계정이 이미 있는 경우 워크플로우가 계정을 업데이트해야 합니다. 계정이 없는 경우 워크플로는 Active Directory에 계정을 만들어야 합니다.
- Query AD 활동을 Begin(시작)과 Create AD Object(AD 객체 생성) 사이의 전환으로 끌어다 놓습니다.
-
테이블의 필드를 사용하여 워크플로우 활동 속성 양식을 작성합니다.
필드 정의 이름 Search for existing account(기존 계정 검색)와 같은 논리 이름을 입력합니다. 도메인 컨트롤러 ${workflow.inputs.u_user.ldap_server.server_url}속성 반환할 Active Directory 속성의 목록이며 콤마로 구분됩니다. 예: givenName, SN, title. 매개변수 필드가 비어 있으면 모든 속성이 반환됩니다. 이 워크플로에서는 필드를 비워 둡니다. 검색 필터 검색 매개변수를 정의하는 LDAP 필터 문자열입니다. 유효한 LDAP 필터링 기준을 사용합니다. 입력 레코드와 일치하는 사용자 계정을 찾기 위해 다음을 사용합니다. (samaccountname=${workflow.inputs.u_user.user_name}) - 제출을 클릭합니다.
-
쿼리 활동에 대한 실패 결과를 엔드포인트에 연결합니다.
여기서는 이 워크플로의 오류를 무시합니다.
-
쿼리 작업의 성공 결과를 AD 개체 업데이트 작업에 연결합니다.
이제 워크플로는 다음과 같습니다.
그림 4. 사용자 계정에 대한 AD 쿼리 Query AD 작업은 워크플로 데이터 버스에서 결과를 JSON 문자열로 반환합니다. 이 JSON 문자열은 항상 개체의 배열입니다. 각 개체는 쿼리와 일치하는 Active Directory 항목에 해당합니다. 우리의 워크플로는 해당 배열이 비어 있는지 여부에 관계없이 분기되어야 합니다.
- Core 탭의 Conditions 폴더에서 표준 If 활동을 끌어 Query AD와 Update AD Object 사이의 전환에 놓습니다.
-
테이블의 필드를 사용하여 워크플로우 활동 속성 양식을 작성합니다.
필드 값 이름 Account exists와 같은 논리 이름을 입력합니다. 고급 이 확인란을 선택하여 스크립트 필드를 엽니다. 스크립트 If 작업이 제대로 작동하려면 쿼리 작업의 Yes 및 No 결과에 해당하는 응답 변수(var)에서 yes 또는 no 를 반환해야 합니다. 줄 1은 JSON 문자열의 Query AD 결과를 queryResults라는 Javascript 배열로 변환합니다. 2행은 해당 배열의 길이를 확인합니다. 배열이 0보다 크면 계정과 일치하는 항목이 발견되었으며 대답을 yes로 설정했습니다. 그렇지 않으면 대답은 '아니오'입니다. var queryResults=new JSON().decode(data.get(5).output);대답 = ( queryResults.length>0 ? '예' : '아니오' );주:이 스크립트의표현식 data.get(5)은 워크플로우에 추가된 다섯 번째 활동이므로 순서 번호로 Databus의 Query AD 출력을 식별합니다.그림 5. 데이터버스에서 AD 출력 쿼리 - 제출을 클릭합니다.
- 캔버스에서 If 작업의 예 결과에서 AD 객체 업데이트 작업으로의 전환을 만듭니다.
-
If 활동의 결과 없음 활동에서 AD 객체 작성 활동으로의 전환을 작성합니다.
이것이 마지막 단계입니다. 이 워크플로는 Active Directory를 쿼리하여 계정이 이미 있는지 확인합니다. 계정이 있는 경우 워크플로우는 해당 계정을 업데이트합니다. 계정이 없는 경우 워크플로는 계정을 만든 다음 구성된 사용자 데이터 집합으로 Active Directory를 업데이트합니다.
그림 6. 조건부 경로 만들기