LDAP 스크립팅

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기4분
  • 사용자 지정 변환 맵, 스크립트 및 비즈니스 규칙을 생성하여 데이터를 임포트할 때 요구사항을 지정합니다.

    사용자 지정 변환 맵에는 onStartonAfter 변환 스크립트가 포함되어야 합니다.

    onStart 스크립트는 LDAPUtils 스크립트 포함을 호출하고 로깅을 시작해야 합니다. 예를 들어, LDAP 사용자 임포트 변환 맵에는 다음 코드를 사용하는 onStart 스크립트가 있습니다.
    gs.include ( "LDAPUtils" ) ; var ldapUtils  = new LDAPUtils ( ) ;
    ldapUtils. setLog (log ) ;
    onAfter 스크립트는 addMembers 함수를 호출해야 합니다. 예:
    ldapUtils.addMembers (source , target ) ;

    비활성화된 Active Directory 사용자를 비활성으로 설정

    연결된 AD 사용자가 비활성화된 경우 다음 스크립트를 사용하여 사용자를 자동으로 비활성화합니다.

    시작하기 전에

    필요한 역할: admin

    이 태스크 정보

    userAccountControl 특성의 값을 확인하여 비활성화된 Active Directory 사용자를 식별할 수 있습니다. 이 규칙은 userAccountControl 값이 변경될 때마다 실행되며 사용자 계정 컨트롤 이 비활성화된 AD 계정을 나타내는 경우 사용자 계정을 비활성화합니다.

    연결된 AD 사용자가 비활성화된 경우 다음 스크립트를 사용하여 사용자를 자동으로 비활성화합니다.

    프로시저

    1. 사용자 양식을 구성하고 사용자 계정 컨트롤이라는 새 정수 필드를 만듭니다.
    2. userAccountControl(외부)에 대한 매핑을 새 필드에 추가합니다.
    3. 다음 속성을 사용하여 새 비즈니스 규칙을 생성합니다.
      표 1. AD 사용자 비즈니스 규칙 사용 안 함
      비즈니스 규칙 필드
      이름 AD 사용자 사용 안 함
      테이블 사용자 [sys_user]
      시기 이전
      조건 current.u_user_account_control.changes()를 호출합니다.

      스크립트 필드에는 다음이 포함되어야 합니다.

      var disabledFlag = 2;
      //perform a bitwise comparison on userAccountControl to see if the 2 bit flag is enabled
      if (current.u_user_account_control & disabledFlag) {
        gs.log('Disabling user: ' + current.user_name + 'userAccountControl=' + current.u_user_account_control);
        current.active='false';
        current.locked_out='true';
      }

    LDAP 필드 값 할당

    스크립트를 사용하여 필드 매핑이 있는 모든 필드에 값을 할당할 수 있습니다.

    예를 들어 sys_user.company 필드에 값을 할당하려면 회사 필드에 대한 필드 맵을 생성하고 다음 변환 스크립트를 추가합니다.

    company = "Don's Sporting Goods";

    특정 LDAP 사용자 제외

    LDAP 필터 속성을 사용하여 LDAP 사용자 목록을 완전히 필터링할 수 없는 경우 맵 스크립트로 사용자를 제외할 수 있습니다.

    논리를 실행하여 임포트해서는 안 되는 사용자를 식별한 후 user_name 필드를 빈 문자열로 설정하면 이 사용자는 임포트되지 않습니다.

    user_name='';

    필터링할 사용자를 식별하는 한 가지 방법은 distinguishedName 특성에서 문자열을 찾는 것입니다. 예를 들어, 이 스크립트는 사용자 OU에 없는 계정을 제외합니다. 사용자 OU가 너무 많아 대상 OU LDAP 옵션에 포함할 수 없는 경우 이 스크립트를 사용할 수 있습니다.

    //vdn is a variable mapped to distinguishedName
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    if (vdn.indexOf('OU=Users')<0) {
      user_name='';
      gs.log('LDAP Import Skipping User: ' + vdn);
    }

    더 복잡한 필터링 방법은 정규식을 사용하는 것입니다.

    //vcn is a variable mapped to cn
    //vdn is a variable mapped to distinguishedName
    //c is the regular expression string
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    var vcn = source.getElement(this.cn);
    var c = /^[a-z][a-z][a-z][0-9][0-9][0-9]$/;
    var nvcn = vcn.toLowerCase();
    //test to see if the cn is in the form of 3 letters followed by 3 numbers, only import these
    if (c.test(nvcn)) {
    	user_name = nvcn;
    } else {
    	gs.log("LDAP import rejected username: " + vcn + " for DN: " + vdn);
    	user_name = "";
    }