11.6. 사용자 및 그룹에 외부 프로비저닝 시스템 사용
Identity Management는 사용자 환경 구성을 지원하므로 ID 관리를 위한 외부 솔루션을 사용하여 IdM에서 사용자 및 그룹 ID를 프로비저닝할 수 있습니다. 이 섹션에서는 이러한 구성의 예를 설명합니다. 예제에는 다음이 포함됩니다.
11.6.1. 외부 프로비저닝 시스템에서 사용하도록 사용자 계정 구성
다음 절차에서는 외부 프로비저닝 시스템에서 사용할 두 개의 IdM 사용자 계정을 구성하는 방법을 보여줍니다. 적절한 암호 정책을 사용하여 계정을 그룹에 추가하면 외부 프로비저닝 시스템을 사용하여 IdM에서 사용자 프로비저닝을 관리할 수 있습니다.
- 스테이지 사용자를 추가할 수 있는 권한이 있는 사용자,
provisionator
를 생성합니다. 사용자 계정은 외부 프로비저닝 시스템에서 새 스테이징 사용자를 추가하기 위해 사용합니다.provisionator
사용자 계정을 추가합니다.$ ipa user-add provisionator --first=provisioning --last=account --password
- 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"
Provisionator
사용자를 역할에 추가합니다.$ ipa role-add-member --users=provisionator "System Provisioning"
- 사용자 계정을 관리할 수 있는 권한이 있는 사용자,
활성화기를
만듭니다. 사용자 계정은 외부 프로비저닝 시스템에서 추가한 스테이징 사용자를 자동으로 활성화하는 데 사용됩니다.activator
사용자 계정을 추가합니다.$ ipa user-add activator --first=activation --last=account --password
활성화
기 사용자에게 필요한 권한을 부여합니다.기본사용자 관리자
역할에 사용자를 추가합니다.$ ipa role-add-member --users=activator "User Administrator"
- 서비스 및 애플리케이션 계정에 대한 사용자 그룹을 생성합니다.
$ ipa group-add service-accounts
- 그룹의 암호 정책을 업데이트합니다. 다음 정책은 계정의 암호 만료 및 잠금을 금지하지만 복잡한 암호를 요구하여 잠재적인 위험을 보상합니다.
$ ipa pwpolicy-add service-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=20 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
- 서비스 및 애플리케이션 계정의 그룹에 프로비저닝 및 활성화 계정을 추가합니다.
$ ipa group-add-member service-accounts --users={provisionator,activator}
- 사용자 계정의 암호를 변경합니다.
$ kpasswd provisionator $ kpasswd activator
새 IdM 사용자의 암호가 즉시 만료되므로 암호를 변경해야 합니다.
추가 리소스:
- 새 사용자 추가에 대한 자세한 내용은 11.2.1절. “단계 또는 활성 사용자 추가” 을 참조하십시오.
- 사용자에게 다른 사용자 계정을 관리하는 데 필요한 권한을 부여하는 방법에 대한 자세한 내용은 11.5절. “관리자가 아닌 사용자가 사용자 항목을 관리하도록 허용” 을 참조하십시오.
- IdM 암호 정책 관리에 대한 자세한 내용은 28장. 암호 정책 정의 을 참조하십시오.
11.6.2. 자동으로 사용자 계정을 활성화하도록 IdM 구성
다음 절차에서는 단계 사용자를 활성화하기 위한 스크립트를 생성하는 방법을 설명합니다. 시스템은 지정된 시간 간격으로 자동으로 스크립트를 실행합니다. 이렇게 하면 새 사용자 계정이 자동으로 활성화되고 생성된 직후 사용할 수 있습니다.
중요
이 절차에서는 스크립트에서 IdM에 추가하기 전에 새 사용자 계정을 검증할 필요가 없다고 가정합니다. 예를 들어, 사용자가 외부 프로비저닝 시스템의 소유자에서 이미 유효성을 검사한 경우 검증이 필요하지 않습니다.
IdM 서버 중 하나에서만 활성화 프로세스를 활성화하는 것으로 충분합니다.
- 활성 계정의 키탭 파일을 생성합니다.
# ipa-getkeytab -s example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
둘 이상의 IdM 서버에서 활성화 프로세스를 활성화하려면 한 서버에만 키탭 파일을 생성합니다. 그런 다음 키탭 파일을 다른 서버에 복사합니다. - 모든 사용자를 활성화하려면 다음 내용과 함께
/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
ipa-activate-all
스크립트의 권한 및 소유권을 편집하여 실행 가능하게 합니다.# chmod 755 /usr/local/sbin/ipa-activate-all # chown root:root /usr/local/sbin/ipa-activate-all
- 다음 콘텐츠를 사용하여
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
- 다음 콘텐츠와 함께
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
ipa-activate-all.timer
활성화 :# systemctl enable ipa-activate-all.timer
추가 리소스:
systemd
장치 파일에 대한 자세한 내용은 시스템 관리자 가이드의 systemd 단위 파일을 사용하여 서비스 관리 장을 참조하십시오.
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
사용자를 추가하려면 다음을 수행합니다.
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"
- 스테이징 항목의 콘텐츠의 유효성을 검사하여 프로비저닝 시스템이 필요한 모든 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
작업을 사용하여 사용자를
보존하려면 다음을 수행합니다.
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"
- 필요한 경우, 보존된 사용자를 모두 나열하여 사용자가 보존되었는지 확인합니다.
$ ipa user-find --preserved=true --------------- 1 user matched --------------- User login: user1 First name: first_name Last name: last_name ... ---------------------------- Number of entries returned 1 ----------------------------