Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

11.6. 사용자 및 그룹에 외부 프로비저닝 시스템 사용

Identity Management는 사용자 환경 구성을 지원하므로 ID 관리를 위한 외부 솔루션을 사용하여 IdM에서 사용자 및 그룹 ID를 프로비저닝할 수 있습니다. 이 섹션에서는 이러한 구성의 예를 설명합니다. 예제에는 다음이 포함됩니다.

11.6.1. 외부 프로비저닝 시스템에서 사용하도록 사용자 계정 구성

다음 절차에서는 외부 프로비저닝 시스템에서 사용할 두 개의 IdM 사용자 계정을 구성하는 방법을 보여줍니다. 적절한 암호 정책을 사용하여 계정을 그룹에 추가하면 외부 프로비저닝 시스템을 사용하여 IdM에서 사용자 프로비저닝을 관리할 수 있습니다.
  1. 스테이지 사용자를 추가할 수 있는 권한이 있는 사용자, provisionator 를 생성합니다. 사용자 계정은 외부 프로비저닝 시스템에서 새 스테이징 사용자를 추가하기 위해 사용합니다.
    1. provisionator 사용자 계정을 추가합니다.
      $ ipa user-add provisionator --first=provisioning --last=account --password
    2. Provision ator 사용자에게 필요한 권한을 부여합니다.
      사용자 지정 역할 시스템 프로비저닝 을 생성하여 스테이지 사용자 추가를 관리합니다.
      $ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
      역할에 Stage User Provisioning 권한을 추가합니다. 이 권한은 스테이징 사용자를 추가할 수 있는 기능을 제공합니다.
      $ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
      Provision ator 사용자를 역할에 추가합니다.
      $ ipa role-add-member --users=provisionator "System Provisioning"
  2. 사용자 계정을 관리할 수 있는 권한이 있는 사용자, 활성화기를 만듭니다. 사용자 계정은 외부 프로비저닝 시스템에서 추가한 스테이징 사용자를 자동으로 활성화하는 데 사용됩니다.
    1. activator 사용자 계정을 추가합니다.
      $ ipa user-add activator --first=activation --last=account --password
    2. 활성화 기 사용자에게 필요한 권한을 부여합니다.
      기본 사용자 관리자 역할에 사용자를 추가합니다.
      $ ipa role-add-member --users=activator "User Administrator"
  3. 서비스 및 애플리케이션 계정에 대한 사용자 그룹을 생성합니다.
    $ ipa group-add service-accounts
  4. 그룹의 암호 정책을 업데이트합니다. 다음 정책은 계정의 암호 만료 및 잠금을 금지하지만 복잡한 암호를 요구하여 잠재적인 위험을 보상합니다.
    $ ipa pwpolicy-add service-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=20 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
  5. 서비스 및 애플리케이션 계정의 그룹에 프로비저닝 및 활성화 계정을 추가합니다.
    $ ipa group-add-member service-accounts --users={provisionator,activator}
  6. 사용자 계정의 암호를 변경합니다.
    $ kpasswd provisionator
    $ kpasswd activator
    새 IdM 사용자의 암호가 즉시 만료되므로 암호를 변경해야 합니다.
추가 리소스:

11.6.2. 자동으로 사용자 계정을 활성화하도록 IdM 구성

다음 절차에서는 단계 사용자를 활성화하기 위한 스크립트를 생성하는 방법을 설명합니다. 시스템은 지정된 시간 간격으로 자동으로 스크립트를 실행합니다. 이렇게 하면 새 사용자 계정이 자동으로 활성화되고 생성된 직후 사용할 수 있습니다.
중요
이 절차에서는 스크립트에서 IdM에 추가하기 전에 새 사용자 계정을 검증할 필요가 없다고 가정합니다. 예를 들어, 사용자가 외부 프로비저닝 시스템의 소유자에서 이미 유효성을 검사한 경우 검증이 필요하지 않습니다.
IdM 서버 중 하나에서만 활성화 프로세스를 활성화하는 것으로 충분합니다.
  1. 활성 계정의 키탭 파일을 생성합니다.
    # ipa-getkeytab -s example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
    둘 이상의 IdM 서버에서 활성화 프로세스를 활성화하려면 한 서버에만 키탭 파일을 생성합니다. 그런 다음 키탭 파일을 다른 서버에 복사합니다.
  2. 모든 사용자를 활성화하려면 다음 내용과 함께 /usr/local/sbin/ipa-activate-all 스크립트를 만듭니다.
    #!/bin/bash
    
    kinit -k -i activator
    
    ipa stageuser-find --all --raw | grep "  uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done
  3. ipa-activate-all 스크립트의 권한 및 소유권을 편집하여 실행 가능하게 합니다.
    # chmod 755 /usr/local/sbin/ipa-activate-all
    # chown root:root /usr/local/sbin/ipa-activate-all
  4. 다음 콘텐츠를 사용하여 systemd 장치 파일 /etc/systemd/system/ipa-activate-all.service 를 만듭니다.
    [Unit]
    Description=Scan IdM every minute for any stage users that must be activated
    
    [Service]
    Environment=KRB5_CLIENT_KTNAME=/etc/krb5.ipa-activation.keytab
    Environment=KRB5CCNAME=FILE:/tmp/krb5cc_ipa-activate-all
    ExecStart=/usr/local/sbin/ipa-activate-all
  5. 다음 콘텐츠와 함께 systemd 타이머 /etc/systemd/system/ipa-activate-all.timer 를 만듭니다.
    [Unit]
    Description=Scan IdM every minute for any stage users that must be activated
    
    [Timer]
    OnBootSec=15min
    OnUnitActiveSec=1min
    
    [Install]
    WantedBy=multi-user.target
  6. ipa-activate-all.timer 활성화 :
    # systemctl enable ipa-activate-all.timer
추가 리소스:

11.6.3. IdM ID 관리를 위해 외부 프로비저닝 시스템의 LDAP 공급자 구성

이 섹션에서는 다양한 사용자 및 그룹 관리 작업에 대한 템플릿을 보여줍니다. 이러한 템플릿을 사용하여 IdM 사용자 계정을 관리하도록 프로비저닝 시스템의 LDAP 프로바이더를 구성할 수 있습니다. 예를 들어 직원이 퇴사한 후 사용자 계정을 활성화하도록 시스템을 구성할 수 있습니다.

LDAP를 사용하여 사용자 계정 관리

새 사용자 항목을 추가하거나, 기존 항목을 수정하거나, 기존 항목을 수정하거나, 다른 라이프사이클 상태 간에 사용자를 이동하거나, 기본 Directory Server 데이터베이스를 편집하여 사용자를 삭제할 수 있습니다. 데이터베이스를 편집하려면 ldapmodify 유틸리티를 사용합니다.
다음 LDIF 형식의 템플릿은 ldapmodify 를 사용하여 수정할 속성에 대한 정보를 제공합니다. 자세한 예제 프로시저는 예 11.2. “ldapmodify를 사용하여 단계 사용자 추가”예 11.3. “ldapmodify를 사용하여 사용자 유지” 을 참조하십시오.
새 단계 사용자 추가
UID 및 GID가 자동으로 할당된 사용자를 추가합니다.
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=example,dc=com
changetype: add
objectClass: top
objectClass: inetorgperson
uid: user_login
sn: surname
givenName: first_name
cn: full_name
UID 및 GID가 정적으로 할당된 사용자 추가:
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=example,dc=com
changetype: add
objectClass: top
objectClass: person
objectClass: inetorgperson
objectClass: organizationalperson
objectClass: posixaccount
uid: user_login
uidNumber: UID_number
gidNumber: GID_number
sn: surname
givenName: first_name
cn: full_name
homeDirectory: /home/user_login
스테이징 사용자를 추가할 때 IdM 오브젝트 클래스를 지정할 필요는 없습니다. IdM은 사용자가 활성화되면 이러한 클래스를 자동으로 추가합니다.
생성된 항목의 고유 이름(DN)은 uid=user_login 으로 시작해야 합니다.
기존 사용자 수정
사용자를 수정하기 전에 사용자 로그인으로 검색하여 사용자의 고유 이름(DN)을 가져옵니다. 다음 예제에서 user_allowed_to_read 사용자는 사용자와 그룹 정보를 읽을 수 있는 사용자이며 암호 는 이 사용자의 암호입니다.
# ldapsearch -LLL -x -D "uid=user_allowed_to_read,cn=users,cn=accounts,dc=example, dc=com" -w "password" -H ldap://server.example.com -b "cn=users, cn=accounts, dc=example, dc=com" uid=user_login
사용자의 특성을 수정하려면 다음을 수행합니다.
dn: distinguished_name
changetype: modify
replace: attribute_to_modify
attribute_to_modify: new_value
사용자를 비활성화하려면 다음을 수행합니다.
dn: distinguished_name
changetype: modify
replace: nsAccountLock
nsAccountLock: TRUE
사용자를 활성화하려면 다음을 수행합니다.
dn: distinguished_name
changetype: modify
replace: nsAccountLock
nsAccountLock: FALSE
사용자를 보존하려면 다음을 수행합니다.
dn: distinguished_name
changetype: modrdn
newrdn: uid=user_login
deleteoldrdn: 0
newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=example
nssAccountLock 특성을 업데이트해도 스테이지 및 보존된 사용자에게는 영향을 미치지 않습니다. 업데이트 작업이 성공적으로 완료되었지만 속성 값은 nssAccountLock로 유지됩니다. TRUE.
새 그룹 만들기
새 그룹을 생성하려면 다음을 수행합니다.
dn: cn=group_distinguished_name,cn=groups,cn=accounts,dc=example,dc=com
changetype: add
objectClass: top
objectClass: ipaobject
objectClass: ipausergroup
objectClass: groupofnames
objectClass: nestedgroup
objectClass: posixgroup
cn: group_name
gidNumber: GID_number
그룹 수정
그룹을 수정하기 전에 그룹 이름으로 검색하여 그룹의 고유 이름(DN)을 가져옵니다.
# ldapsearch -YGSSAPI  -H ldap://server.example.com -b "cn=groups,cn=accounts,dc=example,dc=com" "cn=group_name"
기존 그룹을 삭제하려면 다음을 수행합니다.
dn: group_distinguished_name
changetype: delete
그룹에 멤버를 추가하려면 다음을 수행합니다.
dn: group_distinguished_name
changetype: modify
add: member
member: uid=user_login,cn=users,cn=accounts,dc=example,dc=com
그룹에서 멤버를 제거하려면 다음을 수행합니다.
dn: distinguished_name
changetype: modify
delete: member
member: uid=user_login,cn=users,cn=accounts,dc=example,dc=com
스테이징 또는 보존된 사용자를 그룹에 추가하지 마십시오. 업데이트 작업이 성공적으로 완료되지만 사용자는 그룹의 멤버로 업데이트되지 않습니다. 활성 사용자만 그룹에 속할 수 있습니다.

예 11.2. ldapmodify를 사용하여 단계 사용자 추가

표준 interorgperson 오브젝트 클래스를 사용하여 새 stageuser 사용자를 추가하려면 다음을 수행합니다.
  1. ldapmodify 를 사용하여 사용자를 추가합니다.
    # ldapmodify -Y GSSAPI
    SASL/GSSAPI authentication started
    SASL username: admin@EXAMPLE
    SASL SSF: 56
    SASL data security layer installed.
    dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example
    changetype: add
    objectClass: top
    objectClass: inetorgperson
    cn: Stage
    sn: User
    
    adding new entry "uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example"
    
  2. 스테이징 항목의 콘텐츠의 유효성을 검사하여 프로비저닝 시스템이 필요한 모든 POSIX 속성을 추가하고 stage 항목을 활성화할 준비가 되었는지 확인합니다. ipa stageuser-show --all --raw 명령을 사용하여 새 단계 사용자의 LDAP 속성을 표시합니다. 사용자는 nsaccountlock 특성을 통해 명시적으로 비활성화되어 있습니다.
    $ ipa stageuser-show stageuser --all --raw
      dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example
      uid: stageuser
      sn: User
      cn: Stage
      has_password: FALSE
      has_keytab: FALSE
      nsaccountlock: TRUE
      objectClass: top
      objectClass: inetorgperson
      objectClass: organizationalPerson
      objectClass: person
    

예 11.3. ldapmodify를 사용하여 사용자 유지

LDAP modrdn 작업을 사용하여 사용자를 보존하려면 다음을 수행합니다.
  1. ldapmodify 유틸리티를 사용하여 사용자 항목을 수정합니다.
    $ ldapmodify -Y GSSAPI
    SASL/GSSAPI authentication started
    SASL username: admin@EXAMPLE
    SASL SSF: 56
    SASL data security layer installed.
    dn: uid=user1,cn=users,cn=accounts,dc=example
    changetype: modrdn
    newrdn: uid=user1
    deleteoldrdn: 0
    newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=example
    
    modifying rdn of entry "uid=user1,cn=users,cn=accounts,dc=example"
    
  2. 필요한 경우, 보존된 사용자를 모두 나열하여 사용자가 보존되었는지 확인합니다.
    $ ipa user-find --preserved=true
    ---------------
    1 user matched
    ---------------
      User login: user1
      First name: first_name
      Last name: last_name
    ...
    ----------------------------
    Number of entries returned 1
    ----------------------------