Identity Management 구성 및 관리


Red Hat Enterprise Linux 8

IdM에 로그인하고 서비스, 사용자, 호스트, 그룹, 액세스 제어 규칙 및 인증서를 관리합니다.

Red Hat Customer Content Services

초록

Red Hat IdM(Identity Management)의 주요 기능은 사용자, 그룹, 호스트, 액세스 제어 규칙 및 인증서를 관리하는 것입니다. 그러나 IdM에서 관리 작업을 수행하려면 먼저 서비스에 로그인해야 합니다. 명령줄 또는 IdM 웹 UI를 사용하여 로그인할 때 Kerberos와 한 번 암호를 IdM에서 인증 방법으로 사용할 수 있습니다.
통합 또는 외부 CA(인증 기관)를 사용하여 IdM에서 인증서를 관리할 수 있습니다. 여러 툴(예: Ansible 플레이북)을 사용하여 인증서를 요청, 갱신 및 교체할 수 있습니다. IdM 서버의 웹 서버 및 LDAP 서버 인증서를 교체하려면 수동 작업을 수행해야 합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서 및 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Identity Management에서 계획된 용어 교체는 다음과 같습니다.

  • 차단 목록 대체 블랙리스트
  • 목록 교체 허용 화이트리스트
  • 2차 대체 슬레이브
  • master 라는 단어는 컨텍스트에 따라 더 정확한 언어로 교체됩니다.

    • IdM 서버가 IdM 마스터교체
    • CA 갱신 서버가 CA 갱신 마스터교체
    • CRL 게시자 서버가 CRL 마스터교체
    • 멀티 공급자 대체 멀티 마스터

Red Hat 문서에 관한 피드백 제공

문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.

Jira를 통해 피드백 제출 (등록 필요)

  1. Jira 웹 사이트에 로그인합니다.
  2. 상단 탐색 모음에서 생성 을 클릭합니다.
  3. Summary (요약) 필드에 설명 제목을 입력합니다.
  4. Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
  5. 대화 상자 하단에서 생성 을 클릭합니다.

1장. 명령줄에서 Identity Management 로그인

IdM(Identity Management)은 Kerberos 프로토콜을 사용하여 SSO(Single Sign-On)를 지원합니다. SSO(Single Sign-On)는 사용자가 올바른 사용자 이름과 암호를 한 번만 입력한 다음 시스템에서 자격 증명을 다시 입력하라는 메시지를 표시하지 않고 IdM 서비스에 액세스합니다.

중요

IdM에서 SSSD(System Security Services Daemon)는 사용자가 해당 Kerberos 주체 이름을 사용하여 IdM 클라이언트 시스템에서 데스크탑 환경에 성공적으로 로그인한 후 사용자의 티켓 제공 티켓(TGT)을 자동으로 가져옵니다. 즉, 로그인한 후에는 kinit 유틸리티를 사용하여 IdM 리소스에 액세스할 필요가 없습니다.

Kerberos 인증 정보 캐시를 지우거나 Kerberos TGT가 만료된 경우 Kerberos 티켓을 수동으로 요청하여 IdM 리소스에 액세스해야 합니다. 다음 섹션에서는 IdM에서 Kerberos를 사용할 때 기본 사용자 작업을 보여줍니다.

1.1. kinit 를 사용하여 IdM에 수동으로 로그인합니다.

kinit 유틸리티를 사용하여 IdM(Identity Management) 환경을 수동으로 인증하려면 다음 절차를 따르십시오. kinit 유틸리티는 IdM 사용자를 대신하여 Kerberos 티켓 부여 티켓(TGT)을 가져와 캐시합니다.

참고

초기 Kerberos TGT를 삭제했거나 만료된 경우에만 이 절차를 사용하십시오. IdM 사용자로 로컬 시스템에 로그인할 때도 IdM에 자동으로 로그인됩니다. 즉, 로그인한 후에는 kinit 유틸리티를 사용하여 IdM 리소스에 액세스할 필요가 없습니다.

절차

  1. IdM에 로그인하려면

    • 현재 로컬 시스템에 로그인한 사용자의 사용자 이름에서 사용자 이름을 지정하지 않고 kinit 를 사용합니다. 예를 들어 로컬 시스템에서 example_user 로 로그인한 경우 다음을 수행합니다.

      [example_user@server ~]$ kinit
      Password for example_user@EXAMPLE.COM:
      [example_user@server ~]$
      Copy to Clipboard Toggle word wrap

      로컬 사용자의 사용자 이름이 IdM의 사용자 항목과 일치하지 않으면 인증 시도가 실패합니다.

      [example_user@server ~]$ kinit
      kinit: Client 'example_user@EXAMPLE.COM' not found in Kerberos database while getting initial credentials
      Copy to Clipboard Toggle word wrap
    • 로컬 사용자 이름과 일치하지 않는 Kerberos 주체를 사용하여 필요한 사용자 이름을 kinit 유틸리티에 전달합니다. 예를 들어 admin 사용자로 로그인하려면 다음을 수행합니다.

      [example_user@server ~]$ kinit admin
      Password for admin@EXAMPLE.COM:
      [example_user@server ~]$
      Copy to Clipboard Toggle word wrap
  2. 선택적으로 로그인에 성공했는지 확인하려면 klist 유틸리티를 사용하여 캐시된 TGT를 표시합니다. 다음 예에서 캐시에는 example_user 주체의 티켓이 포함되어 있습니다. 즉, 이 특정 호스트에서는 현재 example_user 만 IdM 서비스에 액세스할 수 있습니다.

    $ klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: example_user@EXAMPLE.COM
    
    Valid starting     	Expires            	Service principal
    11/10/2019 08:35:45  	11/10/2019 18:35:45  	krbtgt/EXAMPLE.COM@EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

1.2. 사용자의 활성 Kerberos 티켓 삭제

다음 절차에 따라 사용자의 활성 Kerberos 티켓이 포함된 인증 정보 캐시를 지웁니다.

절차

  1. Kerberos 티켓을 삭제하려면 다음을 수행합니다.

    [example_user@server ~]$ kdestroy
    Copy to Clipboard Toggle word wrap
  2. 선택적으로 Kerberos 티켓이 삭제되었는지 확인하려면 다음을 수행하십시오.

    [example_user@server ~]$ klist
    klist: Credentials cache keyring 'persistent:0:0' not found
    Copy to Clipboard Toggle word wrap

1.3. Kerberos 인증을 위한 외부 시스템 구성

IdM(Identity Management) 사용자가 Kerberos 자격 증명을 사용하여 외부 시스템에서 IdM에 로그인할 수 있도록 외부 시스템을 구성하려면 다음 절차를 따르십시오.

외부 시스템에서 Kerberos 인증을 활성화하는 것은 인프라에 여러 영역 또는 중복되는 도메인이 포함된 경우 특히 유용합니다. 시스템이 ipa-client-install 을 통해 IdM 도메인에 등록되지 않은 경우에도 유용합니다.

IdM 도메인의 멤버가 아닌 시스템에서 IdM에 대한 Kerberos 인증을 활성화하려면 외부 시스템에 IdM별 Kerberos 구성 파일을 정의합니다.

사전 요구 사항

  • krb5-workstation 패키지는 외부 시스템에 설치됩니다.

    패키지가 설치되어 있는지 여부를 확인하려면 다음 CLI 명령을 사용합니다.

    # yum list installed krb5-workstation
    Installed Packages
    krb5-workstation.x86_64    1.16.1-19.el8     @BaseOS
    Copy to Clipboard Toggle word wrap

절차

  1. IdM 서버에서 외부 시스템으로 /etc/krb5.conf 파일을 복사합니다. 예를 들면 다음과 같습니다.

    # scp /etc/krb5.conf root@externalsystem.example.com:/etc/krb5_ipa.conf
    Copy to Clipboard Toggle word wrap
    주의

    외부 시스템의 기존 krb5.conf 파일을 덮어쓰지 마십시오.

  2. 외부 시스템에서 복사된 IdM Kerberos 구성 파일을 사용하도록 터미널 세션을 설정합니다.

    $ export KRB5_CONFIG=/etc/krb5_ipa.conf
    Copy to Clipboard Toggle word wrap

    KRB5_CONFIG 변수는 로그아웃할 때까지 일시적으로만 존재합니다. 이 손실을 방지하려면 다른 파일 이름으로 변수를 내보냅니다.

  3. /etc/krb5.conf.d/ 디렉토리에서 외부 시스템으로 Kerberos 구성 조각을 복사합니다.

이제 외부 시스템의 사용자는 kinit 유틸리티를 사용하여 IdM 서버에 대해 인증할 수 있습니다.

2장. Identity Management 서비스 보기, 시작 및 중지

IdM(Identity Management) 서버는 DC(도메인 컨트롤러)로 작동하는 Red Hat Enterprise Linux 시스템입니다. IdM 서버에서 다양한 서비스가 실행되고 있습니다. 특히 Directory Server, CA(인증 기관), DNS 및 Kerberos가 있습니다.

2.1. IdM 서비스

IdM 서버 및 클라이언트에 설치하고 실행할 수 있는 다양한 서비스가 있습니다.

IdM 서버에서 호스팅하는 서비스 목록

다음 서비스는 대부분 IdM 서버에 설치해야 하는 것은 아닙니다. 예를 들어 IdM 도메인 외부의 외부 서버에 CA(인증 기관) 또는 DNS 서버와 같은 서비스를 설치할 수 있습니다.

Kerberos
krb5kdckadmin 서비스

IdM은 Kerberos 프로토콜을 사용하여 SSO(Single-Sign-On)를 지원합니다. Kerberos를 사용하면 사용자는 올바른 사용자 이름과 암호를 한 번만 제공해야 하며 시스템에서 자격 증명을 다시 요구하지 않고 IdM 서비스에 액세스할 수 있습니다.

Kerberos는 다음 두 부분으로 나뉩니다.

  • krb5kdc 서비스는 Kerberos 인증 서비스 및 KDC(키 배포 센터) 데몬입니다.
  • kadmin 서비스는 Kerberos 데이터베이스 관리 프로그램입니다.

IdM에서 Kerberos를 사용하여 인증하는 방법에 대한 자세한 내용은 명령줄에서 ID 관리에 로그인하고 웹 UI에서 IdM에 로그인하십시오. Kerberos 티켓 사용.

LDAP 디렉터리 서버
dirsrv 서비스

IdM LDAP 디렉터리 서버 인스턴스는 Kerberos, 사용자 계정, 호스트 항목, 서비스, 정책, DNS 등과 관련된 정보와 같은 모든 IdM 정보를 저장합니다. LDAP 디렉터리 서버 인스턴스는 Red Hat Directory Server 와 동일한 기술을 기반으로 합니다. 그러나 IdM 관련 작업에 맞게 조정됩니다.

인증 기관
pki-tomcatd 서비스

통합된 CA(인증 기관)Red Hat Certificate System 과 동일한 기술을 기반으로 합니다.pki 은 인증서 시스템 서비스에 액세스하기 위한 명령줄 인터페이스입니다.

필요한 모든 인증서를 개별적으로 생성하고 제공하는 경우 통합 CA 없이 서버를 설치할 수도 있습니다.

자세한 내용은 CA 서비스 계획을 참조하십시오.

DNS(Domain Name System)
명명된 서비스

IdM은 동적 서비스 검색을 위해 DNS 를 사용합니다. IdM 클라이언트 설치 유틸리티는 DNS의 정보를 사용하여 클라이언트 시스템을 자동으로 구성할 수 있습니다. 클라이언트가 IdM 도메인에 등록되면 DNS를 사용하여 도메인 내에서 IdM 서버 및 서비스를 찾습니다. Red Hat Enterprise Linux의 DNS (Domain Name System) 프로토콜의 BIND (Berkeley Internet Name Domain) 구현에는 이름 지정된 DNS 서버가 포함되어 있습니다. named-pkcs11 은 PKCS#11 암호화 표준에 대한 기본 지원으로 구축 된 BIND DNS 서버의 버전입니다.

자세한 내용은 DNS 서비스 및 호스트 이름 계획을 참조하십시오.

Apache HTTP Server
httpd 서비스

Apache HTTP 웹 서버는 IdM 웹 UI를 제공하며 인증 기관과 기타 IdM 서비스 간의 통신을 관리합니다.

Samba / Winbind
SMBwinbind 서비스

Samba는 Red Hat Enterprise Linux에서 CIFS(Common Internet File System) 프로토콜이라고도 하는 SMB(서버 메시지 블록) 프로토콜을 구현합니다. smb 서비스를 통해 SMB 프로토콜을 사용하면 파일 공유 및 공유 프린터와 같은 서버의 리소스에 액세스할 수 있습니다. AD(Active Directory) 환경을 사용하여 Trust를 구성한 경우 'Winbind' 서비스는 IdM 서버와 AD 서버 간의 통신을 관리합니다.

일회성 암호(OTP) 인증
ipa-otpd 서비스

일회성 암호(OTP)는 이중 인증의 일부로 하나의 세션에서만 인증 토큰에 의해 생성되는 암호입니다. OTP 인증은 ipa-otpd 서비스를 통해 Red Hat Enterprise Linux에서 구현됩니다.

자세한 내용은 일회성 암호를 사용하여 Identity Management Web UI 로 로그인을 참조하십시오.

OpenDNSSEC
ipa-dnskeysyncd 서비스

OpenDNSSEC는 DNSSEC (DNS 보안 확장) 키 및 영역 서명을 유지하는 프로세스를 자동화하는 DNS 관리자입니다. ipa-dnskeysyncd 서비스는 IdM 디렉터리 서버와 OpenDNSSEC 간의 동기화를 관리합니다.

IdM 클라이언트가 호스팅하는 서비스 목록

  • 시스템 보안 서비스 데몬: sssd 서비스

SSSD(시스템 보안 서비스 데몬 )는 사용자 인증 및 캐싱 자격 증명을 관리하는 클라이언트 측 애플리케이션입니다. 캐싱을 사용하면 IdM 서버를 사용할 수 없거나 클라이언트가 오프라인 상태가 되면 로컬 시스템에서 일반 인증 작업을 계속할 수 있습니다.

자세한 내용은 SSSD 및 이점 이해를 참조하십시오.

  • certmonger: certmonger 서비스

certmonger 서비스는 클라이언트의 인증서를 모니터링하고 갱신합니다. 시스템에서 서비스에 대한 새 인증서를 요청할 수 있습니다.

자세한 내용은 certmonger를 사용하여 서비스의 IdM 인증서 가져오기를 참조하십시오.

2.2. IdM 서비스 상태 보기

IdM 서버에 구성된 IdM 서비스의 상태를 보려면 ipactl status 명령을 실행합니다.

[root@server ~]# ipactl status
Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
pki-tomcatd Service: RUNNING
smb Service: RUNNING
winbind Service: RUNNING
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful
Copy to Clipboard Toggle word wrap

서버의 ipactl status 명령 출력은 IdM 구성에 따라 다릅니다. 예를 들어 IdM 배포에 DNS 서버가 포함되지 않은 경우 명명된 서비스가 목록에 표시되지 않습니다.

참고

IdM 웹 UI를 사용하여 특정 IdM 서버에서 실행되는 모든 IdM 서비스의 상태를 볼 수 없습니다. 다른 서버에서 실행 중인 Kerberized 서비스는 IdM 웹 UI의 ID서비스 탭에서 볼 수 있습니다.

전체 서버 또는 개별 서비스만 시작하거나 중지할 수 있습니다.

전체 IdM 서버를 시작, 중지 또는 다시 시작하려면 다음을 참조하십시오.

개별 IdM 서비스를 시작, 중지 또는 다시 시작하려면 다음을 참조하십시오.

IdM 소프트웨어 버전을 표시하려면 다음을 참조하십시오.

2.3. 전체 Identity Management 서버 시작 및 중지

ipa systemd 서비스를 사용하여 설치된 모든 서비스와 함께 전체 IdM 서버를 중지, 시작 또는 다시 시작합니다. systemctl 유틸리티를 사용하여 ipa systemd 서비스를 제어하면 모든 서비스가 적절한 순서로 중지, 시작 또는 다시 시작됩니다. ipa systemd 서비스는 IdM 서비스를 시작하기 전에 RHEL IdM 구성을 업그레이드하고 IdM 서비스로 관리할 때 적절한 SELinux 컨텍스트를 사용합니다. systemctl ipa 명령을 실행하려면 유효한 Kerberos 티켓이 필요하지 않습니다.

IPA systemd 서비스 명령

전체 IdM 서버를 시작하려면 다음을 수행합니다.

# systemctl start ipa
Copy to Clipboard Toggle word wrap

전체 IdM 서버를 중지하려면 다음을 수행합니다.

# systemctl stop ipa
Copy to Clipboard Toggle word wrap

전체 IdM 서버를 다시 시작하려면 다음을 수행합니다.

# systemctl restart ipa
Copy to Clipboard Toggle word wrap

IdM을 구성하는 모든 서비스의 상태를 표시하려면 ipactl 유틸리티를 사용합니다.

# ipactl status
Copy to Clipboard Toggle word wrap
중요
  • ipactl 유틸리티를 사용하여 IdM 서비스를 시작, 중지 또는 다시 시작하지 마십시오. 대신 systemctl ipa 명령을 사용하여 예측 가능한 환경에서 ipactl 유틸리티를 호출합니다.
  • IdM 웹 UI를 사용하여 ipactl 명령을 수행할 수 없습니다.

2.4. 개별 Identity Management 서비스 시작 및 중지

일반적으로 IdM 구성 파일을 수동으로 변경하는 것은 권장되지 않습니다. 그러나 특정 상황에서는 관리자가 특정 서비스의 수동 구성을 수행해야 합니다. 이러한 상황에서는 systemctl 유틸리티를 사용하여 개별 IdM 서비스를 중지, 시작 또는 다시 시작합니다.

예를 들어 다른 IdM 서비스를 수정하지 않고 Directory Server 동작을 사용자 정의한 후 systemctl 을 사용합니다.

# systemctl restart dirsrv@REALM-NAME.service
Copy to Clipboard Toggle word wrap

또한 Active Directory를 사용하여 IdM 트러스트를 처음 배포하는 경우 /etc/sssd/sssd.conf 파일을 수정하여 다음을 추가합니다.

  • 원격 서버의 대기 시간이 긴 환경에서 시간 초과 구성 옵션을 조정하는 특정 매개변수
  • Active Directory 사이트 선호도를 조정하는 특정 매개변수
  • 글로벌 IdM 설정에서 제공하지 않는 특정 구성 옵션에 대한 덮어쓰기

/etc/sssd/sssd.conf 파일에서 변경한 사항을 적용하려면 다음을 수행합니다.

# systemctl restart sssd.service
Copy to Clipboard Toggle word wrap

SSSD(System Security Services Daemon)에서 구성을 자동으로 다시 읽거나 다시 적용하지 않으므로 systemctl restart sssd.service 를 실행해야 합니다.

IdM ID 범위에 영향을 미치는 변경 사항은 전체 서버 재부팅을 권장합니다.

중요

여러 IdM 도메인 서비스를 다시 시작하려면 항상 systemctl restart ipa 를 사용합니다. IdM 서버와 함께 설치된 서비스 간 종속성 때문에 시작하고 중지된 순서가 중요합니다. ipa systemd 서비스는 서비스가 적절한 순서로 시작 및 중지되었는지 확인합니다.

유용한 systemctl 명령

특정 IdM 서비스를 시작하려면 다음을 수행합니다.

# systemctl start name.service
Copy to Clipboard Toggle word wrap

특정 IdM 서비스를 중지하려면 다음을 수행합니다.

# systemctl stop name.service
Copy to Clipboard Toggle word wrap

특정 IdM 서비스를 다시 시작하려면 다음을 수행합니다.

# systemctl restart name.service
Copy to Clipboard Toggle word wrap

특정 IdM 서비스의 상태를 보려면 다음을 수행합니다.

# systemctl status name.service
Copy to Clipboard Toggle word wrap
중요

IdM 웹 UI를 사용하여 IdM 서버에서 실행되는 개별 서비스를 시작하거나 중지할 수 없습니다. 웹 UI를 사용하여 ID → 서비스로 이동하고 서비스를 선택하여 Kerberized 서비스의 설정을 수정할 수 있습니다.

2.5. IdM 소프트웨어 버전을 표시하는 방법

다음을 사용하여 IdM 버전 번호를 표시할 수 있습니다.

  • The IdM WebUI
  • IPA 명령
  • rpm 명령

 

WebUI를 통해 버전 표시

IdM WebUI의 오른쪽 상단에 있는 사용자 이름 메뉴에서 About 을 선택하여 소프트웨어 버전을 표시할 수 있습니다.

ipa 명령으로 버전 표시

명령줄에서 ipa --version 명령을 사용합니다.

[root@server ~]# ipa --version
VERSION: 4.8.0, API_VERSION: 2.233
Copy to Clipboard Toggle word wrap
rpm 명령으로 버전 표시

IdM 서비스가 제대로 작동하지 않는 경우 rpm 유틸리티를 사용하여 현재 설치된 ipa-server 패키지의 버전 번호를 확인할 수 있습니다.

[root@server ~]# rpm -q ipa-server
ipa-server-4.8.0-11.module+el8.1.0+4247+9f3fd721.x86_64
Copy to Clipboard Toggle word wrap

3장. IdM 명령줄 유틸리티 소개

IdM(Identity Management) 명령줄 유틸리티 사용의 기본 사항에 대해 자세히 알아보십시오.

사전 요구 사항

3.1. IPA 명령줄 인터페이스란 무엇입니까?

IPA 명령줄 인터페이스(CLI)는 IdM(Identity Management) 관리를 위한 기본 명령줄 인터페이스입니다.

IdM을 관리하는 다양한 하위 명령(예: ipa user-add 명령)을 지원하여 새 사용자를 추가합니다.

IPA CLI를 사용하면 다음을 수행할 수 있습니다.

  • 네트워크의 사용자, 그룹, 호스트 및 기타 개체를 추가, 관리 또는 제거합니다.
  • 인증서 관리.
  • 검색 항목.
  • 오브젝트 표시 및 나열.
  • 액세스 권한 설정.
  • 올바른 명령 구문에 대한 도움말을 가져옵니다.

3.2. IPA 도움말이란 무엇입니까?

IPA 도움말은 IdM 서버를 위한 기본 제공되는 설명서 시스템입니다.

IPA 명령줄 인터페이스(CLI)는 로드된 IdM 플러그인 모듈의 사용 가능한 도움말 주제를 생성합니다. IPA 도움말 유틸리티를 사용하려면 다음이 필요합니다.

  • IdM 서버가 설치되어 실행 중이 되도록 합니다.
  • 유효한 Kerberos 티켓으로 인증됩니다.

옵션 없이 ipa help 명령을 입력하면 기본 도움말 사용과 가장 일반적인 명령 예제에 대한 정보가 표시됩니다.

다음 옵션을 다양한 ipa 도움말 사용 사례에 사용할 수 있습니다.

$ ipa help [TOPIC | COMMAND | topics | commands]
Copy to Clipboard Toggle word wrap
  • [] ^-dbbrackets는 모든 매개변수가 선택 사항임을 의미하며 ipa help 만 쓸 수 있으며 명령이 실행됩니다.
  • | cd-파이프 문자의 의미. 따라서 기본 ipa help 명령을 사용하여 topIC , COMMAND 또는 주제 또는 명령을 지정할 수 있습니다.

    • 주제: ipa 도움말 주제를 실행하여 IPA 도움말 (예: 사용자, 인증서,서버 등)의 항목 목록을 표시할 수 있습니다.
    • top /Enical letters 있는 I/E는 변수입니다. 따라서 특정 주제(예: ipa help 사용자 )를 지정할 수 있습니다.
    • ipa help 명령을 입력하여 IPA 도움말(예: user-add,ca-enable,server-show 등)의 명령 목록을 표시할 수 있습니다.
    •  /도: 대문자로 된 Command MAND는 변수입니다. 따라서 ipa help user-add 와 같은 특정 명령을 지정할 수 있습니다.

3.3. IPA 도움말 항목 사용

다음 절차에서는 명령줄 인터페이스에서 IPA 도움말을 사용하는 방법을 설명합니다.

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. ipa 도움말 주제를 입력하여 도움말으로 다룬 주제 목록을 표시합니다.

    $ ipa help topics
    Copy to Clipboard Toggle word wrap
  3. 주제 중 하나를 선택하고 다음 패턴에 따라 명령을 만듭니다. ipa help [topic_name]. topic_name 문자열 대신 이전 단계에서 나열한 주제 중 하나를 추가합니다.

    예에서는 다음 주제를 사용합니다. user

    $ ipa help user
    Copy to Clipboard Toggle word wrap
  4. IPA 도움말 출력이 너무 길어 전체 텍스트를 볼 수 없는 경우 다음 구문을 사용하십시오.

    $ ipa help user | less
    Copy to Clipboard Toggle word wrap

    아래로 스크롤하여 전체 도움말을 읽을 수 있습니다.

IPA CLI에는 사용자 주제에 대한 도움말 페이지가 표시됩니다. 개요를 읽은 후에는 topic 명령을 사용하여 작업하기 위한 패턴이 있는 여러 예제를 볼 수 있습니다.

3.4. IPA 도움말 명령 사용

다음 절차에서는 명령줄 인터페이스에서 IPA 도움말 명령을 만드는 방법을 설명합니다.

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. ipa help 명령을 입력하여 도움말으로 다루는 명령 목록을 표시합니다.

    $ ipa help commands
    Copy to Clipboard Toggle word wrap
  3. 명령 중 하나를 선택하고 다음 패턴에 따라 help 명령을 생성합니다. ipa help < COMMAND>. &lt ;COMMAND& gt; 문자열 대신 이전 단계에서 나열한 명령 중 하나를 추가합니다.

    $ ipa help user-add
    Copy to Clipboard Toggle word wrap

3.5. IPA 명령 구조

IPA CLI는 다음 유형의 명령을 구분합니다.

  • IdM 서버에서 기본 제공 명령 tekton-databind built-in 명령을 모두 사용할 수 있습니다.
  • 플러그인 제공 명령

IPA 명령의 구조를 사용하면 다양한 유형의 오브젝트를 관리할 수 있습니다. 예를 들면 다음과 같습니다.

  • 사용자,
  • 호스트,
  • DNS 레코드,
  • 인증서,

기타 여러 가지.

이러한 대부분의 오브젝트의 경우 IPA CLI에는 다음 명령이 포함됩니다.

  • 추가 (추가)
  • 수정 (mod)
  • 삭제 (del)
  • 검색 (찾기)
  • 표시(표시)

명령에는 다음과 같은 구조가 있습니다.

ipa user-add, ipa user-mod, ipa user-del, ipa user-find, ipa user-show

ipa host-add, ipa host-mod, ipa host-del, ipa host-find, ipa host-show

ipa dnsrecord-add,ipa dnsrecord-mod,ipa dnsrecord-del,ipa dnsrecord-find,ipa dnrecord-show

ipa user-add [options] 를 사용하여 사용자를 생성할 수 있습니다. 여기서 [options] 는 선택 사항입니다. ipa user-add 명령만 사용하는 경우 스크립트에서 세부 정보를 하나씩 요청합니다.

기존 오브젝트를 변경하려면 오브젝트를 정의해야 합니다. 따라서 명령에는 오브젝트 ipa user-mod USER_NAME [options] 도 포함됩니다.

3.6. IPA 명령을 사용하여 IdM에 사용자 계정 추가

다음 절차에서는 명령줄을 사용하여 IdM(Identity Management) 데이터베이스에 새 사용자를 추가하는 방법을 설명합니다.

사전 요구 사항

  • IdM 서버에 사용자 계정을 추가하려면 관리자 권한이 있어야 합니다.

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. 새 사용자를 추가하려면 명령을 입력합니다.

    $ ipa user-add
    Copy to Clipboard Toggle word wrap

    이 명령은 사용자 계정을 생성하는 데 필요한 기본 데이터를 제공하도록 요청하는 스크립트를 실행합니다.

  3. Name( 이름): 필드에 새 사용자의 이름을 입력하고 Enter 키를 누릅니다.
  4. Last name:(이름: ) 필드에 새 사용자의 성을 입력하고 Enter 키를 누릅니다.
  5. User login [suggested user name]: 사용자 이름을 입력하거나 Enter 키를 눌러 제안된 사용자 이름을 수락합니다.

    사용자 이름은 전체 IdM 데이터베이스에 대해 고유해야 합니다. 해당 사용자 이름이 이미 존재하기 때문에 오류가 발생하면 ipa user-add 명령을 사용하여 프로세스를 반복하고 다른 고유한 사용자 이름을 사용합니다.

사용자 이름을 추가한 후 사용자 계정이 IdM 데이터베이스에 추가되고 IPA 명령줄 인터페이스(CLI)는 다음 출력을 출력합니다.

----------------------
Added user "euser"
----------------------
User login: euser
First name: Example
Last name: User
Full name: Example User
Display name: Example User
Initials: EU
Home directory: /home/euser
GECOS: Example User
Login shell: /bin/sh
Principal name: euser@IDM.EXAMPLE.COM
Principal alias: euser@IDM.EXAMPLE.COM
Email address: euser@idm.example.com
UID: 427200006
GID: 427200006
Password: False
Member of groups: ipausers
Kerberos keys available: False
Copy to Clipboard Toggle word wrap
참고

기본적으로 사용자 암호는 사용자 계정에 설정되어 있지 않습니다. 사용자 계정을 생성하는 동안 암호를 추가하려면 다음 구문과 함께 ipa user-add 명령을 사용합니다.

$ ipa user-add --first=Example --last=User --password
Copy to Clipboard Toggle word wrap

IPA CLI에서 사용자 이름과 암호를 추가하거나 확인하라는 메시지가 표시됩니다.

사용자가 이미 생성된 경우 ipa user-mod 명령을 사용하여 암호를 추가할 수 있습니다.

3.7. IPA 명령을 사용하여 IdM에서 사용자 계정 수정

각 사용자 계정에 대한 많은 매개 변수를 변경할 수 있습니다. 예를 들어, 사용자에게 새 암호를 추가할 수 있습니다.

기본 명령 구문은 user-add 구문과 다릅니다. 변경 사항을 수행할 기존 사용자 계정을 정의해야 하기 때문입니다(예: 암호 추가).

사전 요구 사항

  • 사용자 계정을 수정하려면 관리자 권한이 있어야 합니다.

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. ipa user-mod 명령을 입력하고 수정할 사용자를 지정하고, 암호를 추가하기 위해 --password 와 같은 옵션을 지정합니다.

    $ ipa user-mod euser --password
    Copy to Clipboard Toggle word wrap

    이 명령은 새 암호를 추가할 수 있는 스크립트를 실행합니다.

  3. 새 암호를 입력하고 Enter 키를 누릅니다.

IPA CLI는 다음 출력을 출력합니다.

----------------------
Modified user "euser"
----------------------
User login: euser
First name: Example
Last name: User
Home directory: /home/euser
Principal name: euser@IDM.EXAMPLE.COM
Principal alias: euser@IDM.EXAMPLE.COM
Email address: euser@idm.example.com
UID: 427200006
GID: 427200006
Password: True
Member of groups: ipausers
Kerberos keys available: True
Copy to Clipboard Toggle word wrap

이제 사용자 암호가 계정에 대해 설정되었으며 사용자가 IdM에 로그인할 수 있습니다.

3.8. IdM 유틸리티에 값 목록을 제공하는 방법

IdM(Identity Management)은 다중 값 속성의 값을 목록에 저장합니다.

IdM은 다중 값 목록을 제공하는 다음 방법을 지원합니다.

  • 동일한 명령 호출 내에서 동일한 명령줄 인수를 여러 번 사용합니다.

    $ ipa permission-add --right=read --permissions=write --permissions=delete ...
    Copy to Clipboard Toggle word wrap
  • 또는 목록을 중괄호로 묶을 수 있습니다. 이 경우 쉘이 확장을 수행합니다.

    $ ipa permission-add --right={read,write,delete} ...
    Copy to Clipboard Toggle word wrap

위의 예제에서는 오브젝트에 권한을 추가하는 permission-add 명령을 보여줍니다. 예제에는 오브젝트가 언급되지 않습니다. 대신 …​ 권한을 추가하려는 객체를 추가해야 합니다.

명령줄에서 이러한 다중 값 속성을 업데이트하면 IdM은 이전 값 목록을 새 목록으로 완전히 덮어씁니다. 따라서 다중 값 특성을 업데이트할 때 추가하려는 단일 값뿐만 아니라 전체 새 목록을 지정해야 합니다.

예를 들어 위의 명령에서 권한 목록에 읽기, 쓰기 및 삭제가 포함됩니다. permission-mod 명령으로 목록을 업데이트하기로 결정하면 모든 값을 추가해야 합니다. 그렇지 않으면 언급되지 않은 값이 삭제됩니다.

예 1: UTC - ipa permission -mod 명령은 이전에 추가한 모든 권한을 업데이트합니다.

$ ipa permission-mod --right=read --right=write --right=delete ...
Copy to Clipboard Toggle word wrap

또는

$ ipa permission-mod --right={read,write,delete} ...
Copy to Clipboard Toggle word wrap

예 2: ipa permission -mod 명령은 명령에 포함되어 있지 않기 때문에 --right=delete 인수를 삭제합니다.

$ ipa permission-mod --right=read --right=write ...
Copy to Clipboard Toggle word wrap

또는

$ ipa permission-mod --right={read,write} ...
Copy to Clipboard Toggle word wrap

3.9. IdM 유틸리티와 함께 특수 문자를 사용하는 방법

특수 문자를 ipa 명령에 포함하는 명령줄 인수를 전달할 때 백슬래시(\)를 사용하여 이 문자를 이스케이프합니다. 예를 들어 일반적인 특수 문자에는 대괄호(< 및 >), 앰퍼샌드(&), 별표(*) 또는 세로 막대(|)가 있습니다.

예를 들어 별표(*)를 이스케이프하려면 다음을 수행합니다.

$ ipa certprofile-show certificate_profile --out=exported\*profile.cfg
Copy to Clipboard Toggle word wrap

이스케이프되지 않은 특수 문자가 포함된 명령은 이러한 문자를 올바르게 구문 분석할 수 없기 때문에 작동하지 않습니다.

4장. 명령줄에서 Identity Management 항목 검색

다음 섹션에서는 개체를 찾거나 표시하는 데 도움이 되는 IPA 명령을 사용하는 방법에 대해 설명합니다.

4.1. IdM 항목 나열 개요

ipa *-find 명령을 사용하여 특정 유형의 IdM 항목을 검색할 수 있습니다.

find 명령을 모두 나열하려면 다음 ipa help 명령을 사용합니다.

$ ipa help commands | grep find
Copy to Clipboard Toggle word wrap

특정 사용자가 IdM 데이터베이스에 포함되어 있는지 확인해야 할 수도 있습니다. 다음 명령을 사용하여 모든 사용자를 나열할 수 있습니다.

$ ipa user-find
Copy to Clipboard Toggle word wrap

지정된 속성에 키워드가 포함된 사용자 그룹을 나열하려면 다음을 수행합니다.

$ ipa group-find keyword
Copy to Clipboard Toggle word wrap

예를 들어 ipa group-find admin 명령은 이름 또는 설명에 문자열 admin 이 포함된 모든 그룹을 나열합니다.

----------------
3 groups matched
----------------
   Group name: admins
   Description: Account administrators group
   GID: 427200002

   Group name: editors
   Description: Limited admins who can edit other users
   GID: 427200002

   Group name: trust admins
   Description: Trusts administrators group
Copy to Clipboard Toggle word wrap

사용자 그룹을 검색할 때 검색 결과를 특정 사용자가 포함된 그룹으로 제한할 수도 있습니다.

$ ipa group-find --user=user_name
Copy to Clipboard Toggle word wrap

특정 사용자가 포함되지 않은 그룹을 검색하려면 다음을 수행합니다.

$ ipa group-find --no-user=user_name
Copy to Clipboard Toggle word wrap

4.2. 특정 항목의 세부 정보 표시

ipa *-show 명령을 사용하여 특정 IdM 항목에 대한 세부 정보를 표시합니다.

절차

  • server.example.com이라는 호스트에 대한 세부 정보를 표시하려면 다음을 수행합니다.

    $ ipa host-show server.example.com
    
    Host name: server.example.com
    Principal name: host/server.example.com@EXAMPLE.COM
    ...
    Copy to Clipboard Toggle word wrap

4.3. 검색 크기 및 시간 제한 조정

IdM 사용자 목록을 요청하는 등의 일부 쿼리는 매우 많은 항목을 반환할 수 있습니다. 이러한 검색 작업을 조정하면 ipa 사용자 검색과 같은 ipa *-find 명령을 실행하고 웹 UI에 해당 목록을 표시할 때 전체 서버 성능을 향상시킬 수 있습니다.

검색 크기 제한

클라이언트 CLI에서 서버로 전송하거나 IdM 웹 UI에 액세스하는 브라우저에서 전송된 요청에 대해 반환된 최대 항목 수를 정의합니다.

기본값: 100개 항목.

검색 시간 제한

서버에서 검색을 실행할 때까지 대기하는 최대 시간(초)을 정의합니다. 검색이 이 제한에 도달하면 서버에서 검색을 중지하고 해당 시간에서 검색된 항목을 반환합니다.

기본값: 2초.

값을 -1 로 설정하면 IdM은 검색할 때 제한을 적용하지 않습니다.

중요

검색 크기 또는 시간 제한을 너무 높게 설정하면 서버 성능에 부정적인 영향을 줄 수 있습니다.

4.3.1. 명령줄에서 검색 크기 및 시간 제한 조정

다음 절차에서는 명령줄에서 검색 크기 및 시간 제한을 조정하는 방법을 설명합니다.

  • 전 세계
  • 특정 항목의 경우

절차

  1. CLI에서 현재 검색 시간 및 크기 제한을 표시하려면 ipa config-show 명령을 사용합니다.

    $ ipa config-show
    
    Search time limit: 2
    Search size limit: 100
    Copy to Clipboard Toggle word wrap
  2. 모든 쿼리에 대해 제한을 전역적으로 조정하려면 ipa config-mod 명령을 사용하고 --search recordsslimit--searchtimelimit 옵션을 추가합니다. 예를 들면 다음과 같습니다.

    $ ipa config-mod --searchrecordslimit=500 --searchtimelimit=5
    Copy to Clipboard Toggle word wrap
  3. 특정 쿼리에 대해서만 제한을 일시적으로 조정하려면 명령에 --sizelimit 또는 --timelimit 옵션을 추가합니다. 예를 들면 다음과 같습니다.
$ ipa user-find --sizelimit=200 --timelimit=120
Copy to Clipboard Toggle word wrap

4.3.2. 웹 UI에서 검색 크기 및 시간 제한 조정

다음 절차에서는 IdM 웹 UI에서 글로벌 검색 크기 및 시간 제한을 조정하는 방법을 설명합니다.

절차

  1. IdM 웹 UI에 로그인합니다.
  2. IPA Server (IPA 서버)를 클릭합니다.

    Screenshot of the IdM Web UI highlighting the "IPA Server" tab from the top menu

  3. IPA Server(IPA 서버 ) 탭에서 Configuration(구성)을 클릭합니다.
  4. Search Options (검색 옵션) 영역에 필요한 값을 설정합니다.

    기본값은 다음과 같습니다.

    • 검색 크기 제한: 100개 항목
    • 검색 시간 제한 : 2초
  5. 페이지 상단에 있는 Save(저장 )를 클릭합니다.

    Screenshot of the IdM Web UI highlighting the Save button which is below the "Configuration" title at the top of the Configuration page

5장. 웹 브라우저에서 IdM 웹 UI에 액세스

IdM(Identity Management) 웹 UI는 IdM 관리를 위한 웹 애플리케이션이며 IdM CLI(명령줄 인터페이스)에 대한 그래픽 대안입니다.

5.1. IdM 웹 UI란 무엇입니까

IdM(Identity Management) 웹 UI는 IdM 관리를 위한 웹 애플리케이션입니다. IdM 웹 UI에 다음과 같이 액세스할 수 있습니다.

  • IdM 사용자: IdM 서버의 사용자에게 부여된 권한에 따라 제한된 작업 집합입니다. 기본적으로 활성 IdM 사용자는 IdM 서버에 로그인하여 자체 계정을 구성할 수 있습니다. 다른 사용자 또는 IdM 서버 설정의 설정을 변경할 수 없습니다.
  • 관리자: IdM 서버에 대한 전체 액세스 권한.
  • Active Directory 사용자: 사용자에게 부여된 권한에 따라 작업 집합입니다. 이제 Active Directory 사용자가 Identity Management의 관리자가 될 수 있습니다. 자세한 내용은 IdM을 관리하도록 AD 사용자 활성화를 참조하십시오.

5.2. 웹 UI에 액세스하는 데 지원되는 웹 브라우저

IdM(Identity Management)은 웹 UI에 연결하기 위해 다음과 같은 브라우저를 지원합니다.

  • Mozilla Firefox 38 이상
  • Google Chrome 46 이상
참고

브라우저에서 TLS v1.3을 사용하려고 하는 경우 스마트 카드를 사용하여 IdM 웹 UI에 액세스하는 데 문제가 발생할 수 있습니다.

[ssl:error] [pid 125757:tid 140436077168384] [client 999.999.999.999:99999] AH: verify client post handshake
[ssl:error] [pid 125757:tid 140436077168384] [client 999.999.999.999:99999] AH10158: cannot perform post-handshake authentication
[ssl:error] [pid 125757:tid 140436077168384] SSL Library Error: error:14268117:SSL routines:SSL_verify_client_post_handshake:extension not received
Copy to Clipboard Toggle word wrap

이는 최신 버전의 브라우저에 기본적으로 TLS post-Handshake Authentication (PHA)이 활성화되어 있지 않거나 PHA를 지원하지 않기 때문입니다. PHA는 스마트 카드 인증을 사용하여 IdM 웹 UI에 액세스하는 경우와 같이 웹 사이트의 일부에만 TLS 클라이언트 인증서를 사용해야 합니다.

Mozilla Firefox 68 이상에서 이 문제를 해결하려면 TLS PHA를 활성화합니다.

  1. address 표시줄에 about:config 를 입력하여 Mozilla Firefox 기본 설정 메뉴에 액세스합니다.
  2. 검색 창에 security.tls.enable_post_handshake_auth 를 입력합니다.
  3. 토글 버튼을 클릭하여 매개 변수를 true로 설정합니다.

현재 PHA를 지원하지 않는 Chrome의 이 문제를 해결하려면 TLS v1.3을 비활성화합니다.

  1. /etc/httpd/conf.d/ssl.conf 구성 파일을 엽니다.
  2. SSLProtocol 옵션에 -TLSv1.3 을 추가합니다.

    SSLProtocol all -TLSv1 -TLSv1.1 -TLSv1.3
    Copy to Clipboard Toggle word wrap
  3. httpd 서비스를 다시 시작하십시오.

    service httpd restart
    Copy to Clipboard Toggle word wrap

IdM은 ssl.conf 파일을 관리하고 패키지 업데이트 중에 내용을 덮어쓸 수 있습니다. IdM 패키지를 업데이트한 후 사용자 지정 설정을 확인합니다.

5.3. 웹 UI에 액세스

다음 절차에서는 암호를 사용하여 IdM(Identity Management) 웹 UI에 처음 로그인하는 방법을 설명합니다.

처음 로그인한 후 인증할 IdM 서버를 구성할 수 있습니다.

절차

  1. IdM 서버 URL을 브라우저 주소 표시줄에 입력합니다. 이름은 다음 예와 유사하게 표시됩니다.

    https://server.example.com
    Copy to Clipboard Toggle word wrap

    IdM 서버의 DNS 이름을 사용하여 server.example.com 을 변경하면 됩니다.

    그러면 브라우저에서 IdM 웹 UI 로그인 화면이 열립니다.

    Screenshot of the IdM Web UI accessed within a web browser displaying a "Username" field and a "Password" field. There is a blue "Log in" button below and to the right of those two fields.

    • 서버가 응답하지 않거나 로그인 화면이 열려 있지 않으면 연결 중인 IdM 서버의 DNS 설정을 확인합니다.
    • 자체 서명 인증서를 사용하는 경우 브라우저에서 경고를 발행합니다. 인증서를 확인하고 로그인을 진행하기 위해 보안 예외를 수락합니다.

      보안 예외를 방지하려면 인증 기관에서 서명한 인증서를 설치합니다.

  2. 웹 UI 로그인 화면에서 IdM 서버 설치 중에 추가한 관리자 계정 자격 증명을 입력합니다.

    자세한 내용은 Identity Management 서버 설치를 참조하십시오. 통합 DNS를 사용하여 CA 를 통합했습니다.

    개인 계정 자격 증명을 입력하거나 IdM 서버에 이미 입력한 경우에도 입력할 수 있습니다.

    A Screenshot of the IdM Web UI with the "Username" field filled in with "admin" and the "Password" field displays several black circles obfuscating the password by replacing the characters tat were typed in.

  3. Log in (로그인)을 클릭합니다.

로그인에 성공한 후 IdM 서버 구성을 시작할 수 있습니다.

A screenshot of the first screen visible after logging in to the IdM Web UI. There are 5 tabs listed along the top of the screen: Identity - Policy - Authentication - Network Services - IPA Server. The Identity tab has been selected and it is displaying the Users page which is the first menu item among 6 choices just below the tabs: Users - Hosts - Services - Groups - ID Views - Automember. The Active users page displays a table of user logins and their information: First name - Last name - Status - UID - Email address - Telephone number - Job Title.

6장. 웹 UI에서 IdM에 로그인: Kerberos 티켓 사용

IdM 웹 UI에 Kerberos 로그인을 활성화하고 Kerberos 인증을 사용하여 IdM에 액세스하도록 환경을 구성하는 방법에 대해 자세히 알아보십시오.

사전 요구 사항

6.1. Identity Management의 Kerberos 인증

IdM(Identity Management)은 Kerberos 프로토콜을 사용하여 SSO(Single Sign-On)를 지원합니다. SSO(Single Sign-On) 인증을 사용하면 올바른 사용자 이름과 암호를 한 번만 제공할 수 있으며 시스템에서 자격 증명을 다시 요구하지 않고 Identity Management 서비스에 액세스할 수 있습니다.

IdM 서버는 DNS 및 인증서 설정이 올바르게 구성된 경우 설치 직후 Kerberos 인증을 제공합니다. 자세한 내용은 Identity Management 설치를 참조하십시오.

호스트에서 Kerberos 인증을 사용하려면 다음을 설치합니다.

6.2. kinit 를 사용하여 IdM에 수동으로 로그인합니다.

kinit 유틸리티를 사용하여 IdM(Identity Management) 환경을 수동으로 인증하려면 다음 절차를 따르십시오. kinit 유틸리티는 IdM 사용자를 대신하여 Kerberos 티켓 부여 티켓(TGT)을 가져와 캐시합니다.

참고

초기 Kerberos TGT를 삭제했거나 만료된 경우에만 이 절차를 사용하십시오. IdM 사용자로 로컬 시스템에 로그인할 때도 IdM에 자동으로 로그인됩니다. 즉, 로그인한 후에는 kinit 유틸리티를 사용하여 IdM 리소스에 액세스할 필요가 없습니다.

절차

  1. IdM에 로그인하려면

    • 현재 로컬 시스템에 로그인한 사용자의 사용자 이름에서 사용자 이름을 지정하지 않고 kinit 를 사용합니다. 예를 들어 로컬 시스템에서 example_user 로 로그인한 경우 다음을 수행합니다.

      [example_user@server ~]$ kinit
      Password for example_user@EXAMPLE.COM:
      [example_user@server ~]$
      Copy to Clipboard Toggle word wrap

      로컬 사용자의 사용자 이름이 IdM의 사용자 항목과 일치하지 않으면 인증 시도가 실패합니다.

      [example_user@server ~]$ kinit
      kinit: Client 'example_user@EXAMPLE.COM' not found in Kerberos database while getting initial credentials
      Copy to Clipboard Toggle word wrap
    • 로컬 사용자 이름과 일치하지 않는 Kerberos 주체를 사용하여 필요한 사용자 이름을 kinit 유틸리티에 전달합니다. 예를 들어 admin 사용자로 로그인하려면 다음을 수행합니다.

      [example_user@server ~]$ kinit admin
      Password for admin@EXAMPLE.COM:
      [example_user@server ~]$
      Copy to Clipboard Toggle word wrap
  2. 선택적으로 로그인에 성공했는지 확인하려면 klist 유틸리티를 사용하여 캐시된 TGT를 표시합니다. 다음 예에서 캐시에는 example_user 주체의 티켓이 포함되어 있습니다. 즉, 이 특정 호스트에서는 현재 example_user 만 IdM 서비스에 액세스할 수 있습니다.

    $ klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: example_user@EXAMPLE.COM
    
    Valid starting     	Expires            	Service principal
    11/10/2019 08:35:45  	11/10/2019 18:35:45  	krbtgt/EXAMPLE.COM@EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

6.3. Kerberos 인증을 위한 브라우저 구성

Kerberos 티켓을 사용하여 인증을 활성화하려면 브라우저 구성이 필요할 수 있습니다.

다음 단계는 IdM 도메인에 액세스하기 위한 Kerberos 협상을 지원하는 데 도움이 됩니다.

각 브라우저는 Kerberos를 다른 방식으로 지원하므로 다른 설정이 필요합니다. IdM 웹 UI에는 다음 브라우저에 대한 지침이 포함되어 있습니다.

  • Firefox
  • Chrome

절차

  1. 웹 브라우저에서 IdM 웹 UI 로그인 대화 상자를 엽니다.
  2. Web UI 로그인 화면에서 브라우저 구성에 대한 링크를 클릭합니다.

    A screenshot of the IdM Web UI log in page with empty entry fields for the Username and Password and a blue "Log in" button below those fields. Text to the right of the "Log in" button explains "to log in with Kerberos please make sure you have valid tickets (obtainable via kinit) and configured the browser correctly then click Log in." The URL for the word "configured" has been highlighted.

  3. 구성 페이지의 단계를 따릅니다.

    A screenshot of a web browser with instructions for "Browser Kerberos Setup."

설정 후 IdM 웹 UI로 돌아가서 Log in (로그인)을 클릭합니다.

6.4. Kerberos 티켓을 사용하여 웹 UI에 로그인

TGT(Kerberos ticket-granting ticket)를 사용하여 IdM 웹 UI에 로그인하려면 다음 절차를 따르십시오.

TGT는 미리 정의된 시간에 만료됩니다. 기본 시간 간격은 24시간이며 IdM 웹 UI에서 변경할 수 있습니다.

시간 간격이 만료된 후 티켓을 갱신해야 합니다.

  • kinit 명령 사용.
  • 웹 UI 로그인 대화 상자에서 IdM 로그인 자격 증명 사용.

절차

  • IdM 웹 UI를 엽니다.

    Kerberos 인증이 올바르게 작동하고 유효한 티켓이 있으면 자동으로 인증되고 웹 UI가 열립니다.

    티켓이 만료되면 먼저 자격 증명을 사용하여 인증해야 합니다. 그러나 다음에 로그인 대화 상자를 열지 않고 IdM 웹 UI가 자동으로 열립니다.

    Authentication with Kerberos failed 라는 오류 메시지가 표시되면 브라우저가 Kerberos 인증에 맞게 구성되었는지 확인합니다. Kerberos 인증용 브라우저 구성을 참조하십시오.

6.5. Kerberos 인증을 위한 외부 시스템 구성

IdM(Identity Management) 사용자가 Kerberos 자격 증명을 사용하여 외부 시스템에서 IdM에 로그인할 수 있도록 외부 시스템을 구성하려면 다음 절차를 따르십시오.

외부 시스템에서 Kerberos 인증을 활성화하는 것은 인프라에 여러 영역 또는 중복되는 도메인이 포함된 경우 특히 유용합니다. 시스템이 ipa-client-install 을 통해 IdM 도메인에 등록되지 않은 경우에도 유용합니다.

IdM 도메인의 멤버가 아닌 시스템에서 IdM에 대한 Kerberos 인증을 활성화하려면 외부 시스템에 IdM별 Kerberos 구성 파일을 정의합니다.

사전 요구 사항

  • krb5-workstation 패키지는 외부 시스템에 설치됩니다.

    패키지가 설치되어 있는지 여부를 확인하려면 다음 CLI 명령을 사용합니다.

    # yum list installed krb5-workstation
    Installed Packages
    krb5-workstation.x86_64    1.16.1-19.el8     @BaseOS
    Copy to Clipboard Toggle word wrap

절차

  1. IdM 서버에서 외부 시스템으로 /etc/krb5.conf 파일을 복사합니다. 예를 들면 다음과 같습니다.

    # scp /etc/krb5.conf root@externalsystem.example.com:/etc/krb5_ipa.conf
    Copy to Clipboard Toggle word wrap
    주의

    외부 시스템의 기존 krb5.conf 파일을 덮어쓰지 마십시오.

  2. 외부 시스템에서 복사된 IdM Kerberos 구성 파일을 사용하도록 터미널 세션을 설정합니다.

    $ export KRB5_CONFIG=/etc/krb5_ipa.conf
    Copy to Clipboard Toggle word wrap

    KRB5_CONFIG 변수는 로그아웃할 때까지 일시적으로만 존재합니다. 이 손실을 방지하려면 다른 파일 이름으로 변수를 내보냅니다.

  3. /etc/krb5.conf.d/ 디렉토리에서 외부 시스템으로 Kerberos 구성 조각을 복사합니다.
  4. Kerberos 인증을 위한 브라우저 구성에 설명된 대로 외부 시스템에서 브라우저를 구성합니다.

이제 외부 시스템의 사용자는 kinit 유틸리티를 사용하여 IdM 서버에 대해 인증할 수 있습니다.

6.6. Active Directory 사용자를 위한 웹 UI 로그인

Active Directory 사용자에 대해 웹 UI 로그인을 사용하도록 설정하려면 기본 신뢰 보기 의 각 Active Directory 사용자에 대한 ID 재정의를 정의합니다. 예를 들면 다음과 같습니다.

[admin@server ~]$ ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com
Copy to Clipboard Toggle word wrap

7장. 한 번 암호를 사용하여 Identity Management 웹 UI에 로그인

IdM 웹 UI에 대한 액세스는 여러 가지 방법으로 보안할 수 있습니다. 기본 항목은 암호 인증입니다.

암호 인증의 보안을 강화하려면 두 번째 단계를 추가하고 자동으로 생성된 일회성 암호(OTP)가 필요합니다. 가장 일반적인 용도는 사용자 계정과 하드웨어 또는 소프트웨어 토큰으로 생성된 한 번만 암호를 결합하는 것입니다.

다음 섹션은 다음을 수행하는 데 도움이 됩니다.

  • IdM에서 OTP 인증이 작동하는 방식을 이해합니다.
  • IdM 서버에서 OTP 인증을 구성합니다.
  • IdM에서 OTP 검증을 위해 RADIUS 서버를 구성합니다.
  • OTP 토큰을 생성하고 휴대폰의 FreeOTP 애플리케이션과 동기화합니다.
  • 사용자 암호와 일회성 암호의 조합을 사용하여 IdM 웹 UI에 인증합니다.
  • 웹 UI에서 토큰을 다시 동기화합니다.
  • OTP 또는 RADIUS 사용자로 IdM 티켓 검색

7.1. 사전 요구 사항

7.2. Identity Management에서 한 번만 암호(OTP) 인증

일회성 암호는 인증 보안에 추가 단계를 수행합니다. 인증은 암호 + 자동으로 생성된 일회성 암호를 사용합니다.

한 번만 암호를 생성하려면 하드웨어 또는 소프트웨어 토큰을 사용할 수 있습니다. IdM은 소프트웨어 및 하드웨어 토큰을 모두 지원합니다.

ID 관리는 다음 두 가지 표준 OTP 메커니즘을 지원합니다.

  • HMAC 기반 일회성 암호(HOTP) 알고리즘은 카운터를 기반으로 합니다. HMAC는 Hashed Message Authentication Code를 나타냅니다.
  • TOTP(Time-Based One-Time Password) 알고리즘은 시간 기반 이동 요소를 지원하기 위한 HOTP의 확장입니다.
중요

IdM은 Active Directory 신뢰 사용자를 위한 OTP 로그인을 지원하지 않습니다.

7.3. 웹 UI에서 일회성 암호 활성화

IdM(Identity Management) 관리자는 IdM 사용자에 대해 전역 또는 개별적으로 2단계 인증 (2FA)을 활성화할 수 있습니다. 사용자는 명령줄의 일반 암호 또는 웹 UI 로그인 대화 상자의 전용 필드에 이러한 암호 사이에 공백이 없는 일회성 암호(OTP)를 입력합니다.

2FA를 활성화하는 것은 강제하는 것과 동일하지 않습니다. LDAP-binds 기반 로그인을 사용하는 경우 IdM 사용자는 암호만 입력하여 계속 인증할 수 있습니다. 그러나 krb5기반 로그인을 사용하는 경우 2FA가 적용됩니다. 향후 릴리스에서 Red Hat은 관리자가 다음 중 하나를 선택할 수 있도록 구성 옵션을 제공할 계획입니다.

  • 사용자가 자신의 토큰을 설정할 수 있도록 허용합니다. 이 경우 krb5기반 로그인이 있는 경우에도 LDAP-binds는 2FA를 적용하지 않습니다.
  • 사용자가 자신의 토큰을 설정할 수 없습니다. 이 경우 LDAP-binds 및 krb5기반 로그인 모두에서 2FA가 적용됩니다.

IdM 웹 UI를 사용하여 개별 example.user IdM 사용자에 대해 2FA를 활성화하려면 다음 절차를 완료합니다.

사전 요구 사항

  • 관리 권한

절차

  1. IdM 관리자 권한으로 IdM 웹 UI에 로그인합니다.
  2. ID → 사용자 → 활성 사용자 탭을 엽니다.

    A screenshot of the IdM Web UI displaying the "Active Users" page which is a sub-page of the Users submenu from the Identity tab.

  3. example.user 를 선택하여 사용자 설정을 엽니다.
  4. 사용자 인증 유형에서 2단계 인증(암호 + OTP) 을 선택합니다.
  5. 저장을 클릭합니다.

이 시점에서 IdM 사용자에 대해 OTP 인증이 활성화됩니다.

이제 사용자 또는 example.userexample.user 계정에 새 토큰 ID를 할당해야 합니다.

7.4. IdM에서 OTP 검증을 위한 RADIUS 서버 구성

전용 일회성 암호(OTP) 솔루션에서 IdM(Identity Management) 네이티브 OTP 솔루션으로 대규모 배포를 활성화하기 위해 IdM은 OTP 검증을 사용자 하위 집합을 타사 RADIUS 서버로 오프로드하는 방법을 제공합니다. 관리자는 각 프록시가 단일 RADIUS 서버만 참조할 수 있는 RADIUS 프록시 세트를 생성합니다. 둘 이상의 서버를 처리해야 하는 경우 여러 RADIUS 서버를 가리키는 가상 IP 솔루션을 생성하는 것이 좋습니다.

이러한 솔루션은 keepalived 데몬을 사용하여 RHEL IdM 외부에서 빌드해야 합니다. 예를 들면 다음과 같습니다. 그런 다음 관리자는 이러한 프록시 세트 중 하나를 사용자에게 할당합니다. 사용자에게 RADIUS 프록시 세트가 할당된 한 IdM은 다른 모든 인증 메커니즘을 무시합니다.

참고

IdM은 타사 시스템의 토큰에 대한 토큰 관리 또는 동기화 지원을 제공하지 않습니다.

OTP 검증을 위해 RADIUS 서버를 구성하고 프록시 서버에 사용자를 추가하려면 절차를 완료합니다.

사전 요구 사항

절차

  1. RADIUS 프록시를 추가합니다.

    $ ipa radiusproxy-add proxy_name --secret secret
    Copy to Clipboard Toggle word wrap

    명령에서 필요한 정보를 입력하라는 메시지를 표시합니다.

    RADIUS 프록시를 구성하려면 클라이언트와 서버 간의 공통 보안을 사용하여 인증 정보를 래핑해야 합니다. 이 시크릿을 --secret 매개변수에 지정합니다.

  2. 추가된 프록시에 사용자를 할당합니다.

    ipa user-mod radiususer --radius=proxy_name
    Copy to Clipboard Toggle word wrap
  3. 필요한 경우 RADIUS로 보낼 사용자 이름을 구성합니다.

    ipa user-mod radiususer --radius-username=radius_user
    Copy to Clipboard Toggle word wrap

결과적으로 RADIUS 프록시 서버는 사용자 OTP 인증을 처리하기 시작합니다.

사용자를 IdM 네이티브 OTP 시스템으로 마이그레이션할 준비가 되면 사용자의 RADIUS 프록시 할당을 간단히 제거할 수 있습니다.

느린 네트워크에서 RADIUS 프록시를 실행하는 것과 같은 특정 상황에서 IdM(Identity Management) Kerberos Distribution Center(KDC)는 사용자가 토큰을 입력하도록 기다리는 동안 연결이 시간 초과되어 RADIUS 서버 이전에 연결을 종료합니다.

KDC의 시간 초과 설정을 변경하려면 다음을 수행합니다.

  1. /var/kerberos/krb5kdc/kdc.conf 파일의 [otp] 섹션에서 timeout 매개변수 값을 변경합니다. 예를 들어 시간 제한을 120 초로 설정하려면 다음을 수행합니다.

    [otp]
    DEFAULT = {
      timeout = 120
      ...
    }
    Copy to Clipboard Toggle word wrap
  2. krb5kdc 서비스를 다시 시작합니다.

    # systemctl restart krb5kdc
    Copy to Clipboard Toggle word wrap

7.5. 웹 UI에서 OTP 토큰 추가

다음 섹션에서는 IdM 웹 UI 및 소프트웨어 토큰 생성기에 토큰을 추가하는 데 도움이 됩니다.

사전 요구 사항

  • IdM 서버의 활성 사용자 계정.
  • 관리자가 IdM 웹 UI의 특정 사용자 계정에 대해 OTP를 활성화했습니다.
  • OTP 토큰을 생성하는 소프트웨어 장치입니다(예: FreeOTP).

절차

  1. 사용자 이름과 암호를 사용하여 IdM 웹 UI에 로그인합니다.
  2. 휴대폰에서 토큰을 생성하려면 인증 → OTP 토큰 탭을 엽니다.
  3. 추가를 클릭합니다.

    Screenshot of the IdM Web UI highlighting the Add button near the upper-right of the OTP Tokens page which is a sub-page of the Authentication section

  4. OTP 토큰 추가 대화 상자에서 모두 채워지지 않은 상태로 두고 Add(추가 )를 클릭합니다.

    이 단계에서 IdM 서버는 서버에서 기본 매개 변수를 사용하여 토큰을 생성하고, 코드로 페이지를 엽니다.

  5. 스마트폰 코드를 휴대폰에 복사합니다.
  6. OK(확인 )를 클릭하여 create code를 닫습니다.

이제 한 번 암호를 생성하여 IdM 웹 UI에 로그인할 수 있습니다.

Screenshot of the FreeOTP application from a mobile telephone displaying two entries for OTP tokens. The first OTP token is for the example.user@IDM.EXAMPLE.COM domain and its entry displays a 6-digit OTP while its timer is running out.

7.6. 일회성 암호로 웹 UI에 로그인

다음 절차에 따라 한 번의 암호(OTP)를 사용하여 IdM 웹 UI에 처음 로그인합니다.

사전 요구 사항

  • OTP 인증에 사용 중인 사용자 계정의 ID 관리 서버에서 OTP 구성이 활성화됩니다. 관리자뿐 아니라 사용자 자체도 OTP를 활성화할 수 있습니다.

    OTP 구성을 활성화하려면 웹 UI에서 일회성 암호 활성화를 참조하십시오.

  • 구성된 OTP 토큰을 생성하는 하드웨어 또는 소프트웨어 장치입니다.

절차

  1. Identity Management 로그인 화면에서 사용자 이름 또는 IdM 서버 관리자 계정의 사용자 이름을 입력합니다.
  2. 위에 입력한 사용자 이름의 암호를 추가합니다.
  3. 장치에서 한 번만 암호를 생성합니다.
  4. 암호 바로 뒤에(공백 없음) 한 번 암호를 입력합니다.
  5. Log in (로그인)을 클릭합니다.

    인증에 실패하면 OTP 토큰을 동기화합니다.

    CA에서 자체 서명된 인증서를 사용하는 경우 브라우저에서 경고를 발행합니다. 인증서를 확인하고 로그인을 진행하기 위해 보안 예외를 수락합니다.

    IdM 웹 UI가 열려 있지 않으면 ID 관리 서버의 DNS 구성을 확인합니다.

로그인에 성공하면 IdM 웹 UI가 나타납니다.

A screenshot of the first screen visible after logging in to the IdM Web UI. There are 5 tabs listed along the top of the screen: Identity - Policy - Authentication - Network Services - IPA Server. The Identity tab has been selected and it is displaying the Users page which is the first menu item among 6 choices just below the tabs: Users - Hosts - Services - Groups - ID Views - Automember. The Active users page displays a table of user logins and their information: First name - Last name - Status - UID - Email address - Telephone number - Job Title.

7.7. 웹 UI를 사용하여 OTP 토큰 동기화

OTP(One Time Password)의 로그인에 실패하면 OTP 토큰이 올바르게 동기화되지 않습니다.

다음 텍스트는 토큰 재동기화에 대해 설명합니다.

사전 요구 사항

  • 로그인 화면이 열립니다.
  • OTP 토큰을 생성하는 장치입니다.

절차

  1. IdM 웹 UI 로그인 화면에서 Sync OTP Token (OTP 토큰 동기화)을 클릭합니다.

    A screenshot of the IdM Web UI log in page. The "Username" and "Password" fields are empty. A link to "Sync OTP Token" at the bottom right next to the "Log In" button is highlighted.

  2. 로그인 화면에서 사용자 이름과 ID 관리 암호를 입력합니다.
  3. 1회 암호를 생성하고 첫 번째 OTP 필드에 입력합니다.
  4. 한 번 더 생성하고 Second OTP(두 번째 OTP ) 필드에 입력합니다.
  5. 필요한 경우 토큰 ID를 입력합니다.

    A screenshot of the screen to change the OTP token. The "Username" field has been filled in with "admin". The password in the "Password" field has been obfuscated with solid circles. The "First OTP" and "Second OTP" fields also have their 6-character entries obfuscated. The last field is labeled "Token ID" and has 16 hexadecimal characters such as "18c5d06cfcbd4927". There are "Cancel" and "Sync OTP Token" buttons at the bottom right.

  6. Sync OTP Token (OTP 토큰 동기화)을 클릭합니다.

동기화가 완료되면 IdM 서버에 로그인할 수 있습니다.

7.8. 만료된 암호 변경

ID 관리 관리자는 다음 로그인 시 암호를 변경해야 할 수 있습니다. 즉, 암호를 변경할 때까지 IdM 웹 UI에 성공적으로 로그인할 수 없습니다.

웹 UI에 처음 로그인하는 동안 암호 만료가 발생할 수 있습니다.

만료 암호 대화 상자가 나타나면 절차에 있는 지침을 따릅니다.

사전 요구 사항

  • 로그인 화면이 열립니다.
  • IdM 서버에 대한 활성 계정입니다.

절차

  1. 암호 만료 로그인 화면에서 사용자 이름을 입력합니다.
  2. 위에 입력한 사용자 이름의 암호를 추가합니다.
  3. 일회성 암호 인증을 사용하는 경우 OTP 필드에서 일회성 암호를 생성합니다.

    OTP 인증을 활성화하지 않은 경우 필드를 비워 둡니다.

  4. 확인을 위해 새 암호를 두 번 입력합니다.
  5. Reset Password (암호 재설정)를 클릭합니다.

    A screenshot of the IdM Web UI with a banner across the top that states "Your password has expired. Please enter a new password." The "Username" field displays "example.user" and cannot be edited. The following fields have been filled in but their contents have been replaced with dots to obfuscate the passwords: "Current Password" - "OTP" - "New Password" - "Verify Password."

암호가 성공적으로 변경되면 일반적인 로그인 대화 상자가 표시됩니다. 새 암호로 로그인합니다.

7.9. OTP 또는 RADIUS 사용자로 IdM 티켓을 검색

OTP 사용자로 Kerberos 티켓(TGT)을 검색하려면 익명 Kerberos 티켓을 요청하고FAST(Secure tunneling) 채널을 통해 유연한 인증을 활성화하여 Kerberos 클라이언트와 KDC(Kerberos Distribution Center) 간에 안전한 연결을 제공합니다.

사전 요구 사항

  • IdM 클라이언트 및 IdM 서버는 RHEL 8.7 이상을 사용합니다.
  • IdM 클라이언트 및 IdM 서버는 SSSD 2.7.0 이상을 사용합니다.
  • 필요한 사용자 계정에 대해 OTP를 활성화했습니다.

절차

  1. 다음 명령을 실행하여 인증 정보 캐시를 초기화합니다.

    [root@client ~]# kinit -n @IDM.EXAMPLE.COM -c FILE:armor.ccache
    Copy to Clipboard Toggle word wrap

    이 명령은 새 Kerberos 티켓을 요청할 때마다 가리켜야 하는 armor.ccache 파일을 생성합니다.

  2. 명령을 실행하여 Kerberos 티켓을 요청합니다.

    [root@client ~]# kinit -T FILE:armor.ccache <username>@IDM.EXAMPLE.COM
    Enter your OTP Token Value.
    Copy to Clipboard Toggle word wrap

검증

  • Kerberos 티켓 정보를 표시합니다.

    [root@client ~]# klist -C
    Ticket cache: KCM:0:58420
    Default principal: <username>@IDM.EXAMPLE.COM
    
    Valid starting     Expires            Service principal
    05/09/22 07:48:23  05/10/22 07:03:07  krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
    config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes
    08/17/2022 20:22:45  08/18/2022 20:22:43  krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
    config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 141
    Copy to Clipboard Toggle word wrap

    pa_type = 141 은 OTP/RADIUS 인증을 나타냅니다.

8장. IdM의 SSSD를 사용한 인증 문제 해결

IdM(Identity Management) 환경의 인증에는 많은 구성 요소가 포함됩니다.

IdM 클라이언트에서 다음을 수행합니다.

  • SSSD 서비스.
  • NSS(Name Services Switch).
  • PAM(Pluggable Authentication Module).

IdM 서버에서 다음을 수행합니다.

  • SSSD 서비스.
  • IdM 디렉터리 서버.
  • IdM Kerberos KDC(키 배포 센터).

AD(Active Directory) 사용자로 인증하는 경우:

  • AD 도메인 컨트롤러의 디렉터리 서버.
  • AD 도메인 컨트롤러의 Kerberos 서버.

사용자를 인증하려면 SSSD 서비스를 사용하여 다음 기능을 수행할 수 있어야 합니다.

  • 인증 서버에서 사용자 정보를 검색합니다.
  • 사용자에게 자격 증명을 요청하고 해당 자격 증명을 인증 서버에 전달한 다음 결과를 처리합니다.

사용자 정보를 저장하는 SSSD 서비스와 서버 간에 정보가 이동하는 방법에 대한 자세한 내용은 환경에서 인증 시도 실패 문제를 해결할 수 있도록 다음을 참조하십시오.

8.1. SSSD를 사용하여 IdM 사용자 정보를 검색할 때 데이터 흐름

다음 다이어그램은 getent passwd <idm_user_name> 명령을 사용하여 IdM 사용자 정보를 요청하는 동안 IdM 클라이언트와 IdM 서버 간의 정보 흐름을 간소화한 것입니다.

A diagram with numbered arrows representing the flow of information between an IdM client and an IdM server. The following numbered list describes each step in the process.

  1. getent 명령은 libc 라이브러리의 getpwnam 호출을 트리거합니다.
  2. libc 라이브러리는 /etc/nsswitch.conf 구성 파일을 참조하여 사용자 정보를 제공하는 서비스를 확인하고 SSSD 서비스에 대한 항목 sss 를 검색합니다.
  3. libc 라이브러리는 nss_sss 모듈을 엽니다.
  4. nss_sss 모듈은 메모리 매핑된 캐시에서 사용자 정보를 확인합니다. 데이터가 캐시에 있으면 nss_sss 모듈에서 해당 데이터가 반환됩니다.
  5. 사용자 정보가 메모리 매핑 캐시에 없는 경우 요청이 SSSD sssd_nss 응답자 프로세스에 전달됩니다.
  6. SSSD 서비스는 캐시를 확인합니다. 데이터가 캐시에 있고 유효한 경우 sssd_nss 응답자가 캐시에서 데이터를 읽고 애플리케이션에 반환합니다.
  7. 데이터가 캐시에 없거나 만료된 경우 sssd_nss 응답자는 적절한 백엔드 프로세스를 쿼리하고 응답을 기다립니다. SSSD 서비스는 sssd.conf 구성 파일의 id_provider=ipa 설정을 통해 활성화되는 IdM 환경에서 IPA 백엔드를 사용합니다.
  8. sssd_be 백엔드 프로세스는 IdM 서버에 연결하고 IdM LDAP 디렉터리 서버에서 정보를 요청합니다.
  9. IdM 서버의 SSSD 백엔드는 IdM 클라이언트의 SSSD 백엔드 프로세스에 응답합니다.
  10. 클라이언트의 SSSD 백엔드는 결과 데이터를 SSSD 캐시에 저장하고 응답자 프로세스에 캐시가 업데이트되었음을 경고합니다.
  11. sssd_nss 프런트 엔드 응답자 프로세스는 SSSD 캐시에서 정보를 검색합니다.
  12. sssd_nss 응답자는 사용자 정보를 nss_sss 응답자에게 전송하여 요청을 완료합니다.
  13. libc 라이브러리는 사용자 정보를 요청한 애플리케이션에 반환합니다.

8.2. SSSD를 사용하여 AD 사용자 정보를 검색할 때 데이터 흐름

IdM 환경과 AD(Active Directory) 도메인 간에 교차 포리스트 신뢰를 설정한 경우 IdM 클라이언트에 대한 AD 사용자 정보를 검색할 때 정보 흐름은 AD 사용자 데이터베이스에 연결하는 추가 단계를 통해 IdM 사용자 정보를 검색할 때 정보 흐름과 매우 유사합니다.

다음 다이어그램은 사용자가 getent passwd &lt ;ad_user_name@ad.example.com> 명령을 사용하여 AD 사용자에 대한 정보를 요청할 때 정보 흐름을 단순화하는 것입니다. 이 다이어그램에는 SSSD 섹션을 사용하여 IdM 사용자 정보를 검색할 때 데이터 흐름에 설명된 내부 세부 정보가 포함되어 있지 않습니다. IdM 클라이언트에서 SSSD 서비스, IdM 서버의 SSSD 서비스 및 AD 도메인 컨트롤러의 LDAP 데이터베이스 간 통신에 중점을 둡니다.

A diagram with numbered arrows representing the flow of information between an IdM client, an IdM server, and an AD Domain Controller. The following numbered list describes each step in the process.

  1. IdM 클라이언트는 AD 사용자 정보를 위해 로컬 SSSD 캐시를 찾습니다.
  2. IdM 클라이언트에 사용자 정보가 없거나 정보가 오래된 경우 클라이언트의 SSSD 서비스는 IdM 서버의 extdom_extop 플러그인에 연결하여 LDAP 확장 작업을 수행하고 정보를 요청합니다.
  3. IdM 서버의 SSSD 서비스는 로컬 캐시에서 AD 사용자 정보를 찾습니다.
  4. IdM 서버에 SSSD 캐시에 사용자 정보가 없거나 해당 정보가 오래된 경우 LDAP 검색을 수행하여 AD 도메인 컨트롤러에서 사용자 정보를 요청합니다.
  5. IdM 서버의 SSSD 서비스는 AD 도메인 컨트롤러에서 AD 사용자 정보를 수신하여 해당 캐시에 저장합니다.
  6. extdom_extop 플러그인은 IdM 서버의 SSSD 서비스에서 정보를 수신하여 LDAP 확장 작업을 완료합니다.
  7. IdM 클라이언트의 SSSD 서비스는 LDAP 확장 작업에서 AD 사용자 정보를 수신합니다.
  8. IdM 클라이언트는 AD 사용자 정보를 SSSD 캐시에 저장하고 정보를 요청한 애플리케이션에 반환합니다.

8.3. IdM에서 SSSD를 사용하여 사용자로 인증할 때 데이터 흐름

IdM 서버 또는 클라이언트에 사용자로 인증에는 다음 구성 요소가 포함됩니다.

  • sshd 서비스와 같은 인증 요청을 시작하는 서비스입니다.
  • PAM(Pluggable Authentication Module) 라이브러리 및 해당 모듈.
  • SSSD 서비스, 해당 응답자 및 백엔드.
  • 스마트 카드 인증이 구성된 경우 스마트 카드 리더.
  • 인증 서버:

    • IdM 사용자는 IdM KDC(Kerberos Key Distribution Center)에 대해 인증됩니다.
    • AD(Active Directory) 사용자는 DC(AD 도메인 컨트롤러)에 대해 인증됩니다.

다음 다이어그램은 사용자가 명령줄의 SSH 서비스를 통해 호스트에 로컬로 로그인해야 하는 경우 정보 흐름을 단순화한 것입니다.

A diagram with numbered arrows representing the flow of information between an IdM client and an IdM server or AD Domain Controller during an authentication attempt. The following numbered list describes each step in the process.

  1. ssh 명령의 인증 시도는 libpam 라이브러리를 트리거합니다.
  2. libpam 라이브러리는 인증 시도를 요청하는 서비스에 해당하는 /etc/pam.d/ 디렉터리의 PAM 파일을 참조합니다. 로컬 호스트의 SSH 서비스를 통한 인증과 관련된 이 예제에서 libpam 라이브러리는 /etc/pam.d/system-auth 구성 파일을 확인하고 SSSD PAM에 대한 pam_ss.so 항목을 검색합니다.

    auth    sufficient    pam_sss.so
    Copy to Clipboard Toggle word wrap
  3. 사용 가능한 인증 방법을 확인하기 위해 libpam 라이브러리는 pam_sss 모듈을 열고 SSSD 서비스의 sssd _pam PAM 응답자로 SSS_ PAM_PREAUTH 요청을 보냅니다.
  4. 스마트 카드 인증이 구성된 경우 SSSD 서비스는 임시 p11_child 프로세스를 생성하여 스마트 카드를 확인하고 인증서를 검색합니다.
  5. 사용자에 대해 스마트 카드 인증이 구성된 경우 sssd_pam 응답자가 스마트 카드의 인증서와 사용자와 일치하려고 시도합니다. sssd_pam 응답자는 그룹 멤버십이 액세스 제어에 영향을 줄 수 있으므로 사용자가 속한 그룹을 검색합니다.
  6. sssd_pam 응답자는 SSS_PAM_PREAUTH 요청을 sssd_be 백엔드 응답자에게 전송하여 서버가 지원하는 인증 방법(예: 암호 또는 2 단계 인증)을 확인합니다. SSSD 서비스에서 IPA 응답자를 사용하는 IdM 환경에서 기본 인증 방법은 Kerberos입니다. 이 예에서 사용자는 간단한 Kerberos 암호로 인증합니다.
  7. sssd_be 응답자는 임시 krb5_child 프로세스를 생성합니다.
  8. krb5_child 프로세스는 IdM 서버의 KDC에 연결하여 사용 가능한 인증 방법을 확인합니다.
  9. KDC는 요청에 응답합니다.

    1. krb5_child 프로세스는 응답을 평가하고 결과를 sssd_be 백엔드 프로세스로 다시 보냅니다.
    2. sssd_be backend 프로세스는 결과를 수신합니다.
    3. sssd_pam 응답자가 결과를 수신합니다.
    4. pam_sss 모듈은 결과를 수신합니다.
  10. 암호 인증이 사용자에 대해 구성된 경우 pam_sss 모듈은 사용자에게 암호를 묻는 메시지를 표시합니다. 스마트 카드 인증이 구성된 경우 pam_sss 모듈은 사용자에게 스마트 카드 PIN을 요청합니다.
  11. 이 모듈은 다음을 이동하는 사용자 이름과 암호를 사용하여 SSS_PAM_AUTHENTICATE 요청을 보냅니다.

    1. sssd_pam 응답자.
    2. sssd_be 백엔드 프로세스.
  12. sssd_be 프로세스는 KDC에 연결할 임시 krb5_child 프로세스를 생성합니다.
  13. krb5_child 프로세스는 KDC에서 사용자가 제공한 암호와 함께 Kerberos 티켓 부여 티켓(TGT)을 검색하려고 합니다.
  14. krb5_child 프로세스는 인증 시도 결과를 수신합니다.
  15. krb5_child 프로세스는 다음과 같습니다.

    1. TGT를 자격 증명 캐시에 저장합니다.
    2. 인증 결과를 sssd_be 백엔드 프로세스에 반환합니다.
  16. 인증 결과는 sssd_be 프로세스에서 다음으로 이동합니다.

    1. sssd_pam 응답자.
    2. pam_sss 모듈.
  17. pam_sss 모듈은 다른 애플리케이션에서 참조할 수 있도록 사용자 TGT 위치가 있는 환경 변수를 설정합니다.

8.4. 인증 문제 범위 줄이기

사용자를 인증하려면 사용자 정보를 저장하는 데이터베이스에서 SSSD 서비스를 사용하여 사용자 정보를 검색할 수 있어야 합니다. 다음 절차에서는 인증 프로세스의 다양한 구성 요소를 테스트하는 단계에 대해 설명하므로 사용자가 로그인할 수 없는 경우 인증 문제의 범위를 좁힐 수 있습니다.

절차

  1. SSSD 서비스 및 해당 프로세스가 실행 중인지 확인합니다.

    [root@client ~]# pstree -a | grep sssd
      |-sssd -i --logger=files
      |   |-sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
      |   |-sssd_be --domain example.com --uid 0 --gid 0 --logger=files
      |   |-sssd_ifp --uid 0 --gid 0 --logger=files
      |   |-sssd_nss --uid 0 --gid 0 --logger=files
      |   |-sssd_pac --uid 0 --gid 0 --logger=files
      |   |-sssd_pam --uid 0 --gid 0 --logger=files
      |   |-sssd_ssh --uid 0 --gid 0 --logger=files
      |   `-sssd_sudo --uid 0 --gid 0 --logger=files
      |-sssd_kcm --uid 0 --gid 0 --logger=files
    Copy to Clipboard Toggle word wrap
  2. 클라이언트가 IP 주소를 통해 사용자 데이터베이스 서버에 연결할 수 있는지 확인합니다.

    [user@client ~]$ ping <IP_address_of_the_database_server>
    Copy to Clipboard Toggle word wrap

    이 단계가 실패하는 경우 네트워크와 방화벽 설정이 IdM 클라이언트와 서버 간의 직접 통신을 허용하는지 확인합니다. firewalld 사용 및 구성을 참조하십시오.

  3. 클라이언트가 정규화된 호스트 이름을 통해 IdM LDAP 서버( IdM 사용자) 또는 AD 도메인 컨트롤러(AD 사용자의 경우)를 검색하고 연결할 수 있는지 확인합니다.

    [user@client ~]$ dig -t SRV _ldap._tcp.example.com @<name_server>
    [user@client ~]$ ping <fully_qualified_host_name_of_the_server>
    Copy to Clipboard Toggle word wrap

    이 단계가 실패하면 /etc/resolv.conf 파일을 포함하여 DNS(동적 이름 서비스) 설정을 확인합니다. DNS 서버 순서 구성을 참조하십시오.

    참고

    기본적으로 SSSD 서비스는 SRV(DNS 서비스) 레코드를 통해 LDAP 서버 및 AD DC를 자동으로 검색하려고 합니다. 또는 sssd.conf 구성 파일에서 다음 옵션을 설정하여 특정 서버를 사용하도록 SSSD 서비스를 제한할 수 있습니다.

    • ipa_server = <fully_qualified_host_name_of_the_server>
    • ad_server = <fully_qualified_host_name_of_the_server>
    • ldap_uri = <fully_qualified_host_name_of_the_server>

    이러한 옵션을 사용하는 경우 해당 옵션에 나열된 서버에 연결할 수 있는지 확인합니다.

  4. 클라이언트가 LDAP 서버에 인증하고 ldapsearch 명령을 사용하여 사용자 정보를 검색할 수 있는지 확인합니다.

    1. LDAP 서버가 server.example.com 과 같은 IdM 서버인 경우 호스트에 대한 Kerberos 티켓을 검색하고 호스트 Kerberos 주체를 사용하여 데이터베이스 검색 인증을 수행합니다.

      [user@client ~]$ kinit -k 'host/client.example.com@EXAMPLE.COM'
      [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.example.com -b “dc=example,dc=com” uid=<user_name>
      Copy to Clipboard Toggle word wrap
    2. LDAP 서버가 server.ad.example.com 과 같은 DC(Active Directory) 도메인 컨트롤러인 경우 호스트에 대한 Kerberos 티켓을 검색하고 호스트 Kerberos 주체를 사용하여 데이터베이스 검색을 수행합니다.

      [user@client ~]$ kinit -k 'CLIENT$@AD.EXAMPLE.COM'
      [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.ad.example.com -b “dc=example,dc=com” sAMAccountname=<user_name>
      Copy to Clipboard Toggle word wrap
    3. LDAP 서버가 일반 LDAP 서버이고 sssd.conf 파일에 ldap_default_bind_dnldap_default_authtok 옵션을 설정한 경우 동일한 ldap_default_bind_dn 계정으로 인증합니다.

      [user@client ~]$ ldapsearch -xLLL -D "cn=ldap_default_bind_dn_value" -W -h ldapserver.example.com -b “dc=example,dc=com” uid=<user_name>
      Copy to Clipboard Toggle word wrap

    이 단계가 실패하면 데이터베이스 설정이 호스트가 LDAP 서버를 검색할 수 있도록 허용하는지 확인합니다.

  5. SSSD 서비스는 Kerberos 암호화를 사용하므로 로그인할 수 없는 사용자로 Kerberos 티켓을 가져올 수 있는지 확인합니다.

    1. LDAP 서버가 IdM 서버인 경우:

      [user@client ~]$ kinit <user_name>
      Copy to Clipboard Toggle word wrap
    2. LDAP 서버 데이터베이스가 AD 서버인 경우:

      [user@client ~]$ kinit <user_name@AD.EXAMPLE.COM>
      Copy to Clipboard Toggle word wrap

    이 단계가 실패하면 Kerberos 서버가 제대로 작동하고 모든 서버가 시간 동기화되며 사용자 계정이 잠겨 있지 않은지 확인합니다.

  6. 명령줄에 대한 사용자 정보를 검색할 수 있는지 확인합니다.

    [user@client ~]$ getent passwd <user_name>
    [user@client ~]$ id <user_name>
    Copy to Clipboard Toggle word wrap

    이 단계가 실패하면 클라이언트의 SSSD 서비스가 사용자 데이터베이스에서 정보를 수신할 수 있는지 확인합니다.

    1. /var/log/messages 로그 파일의 오류를 검토합니다.
    2. SSSD 서비스에서 자세한 로깅을 활성화하고 디버깅 로그를 수집한 다음 로그에서 문제 소스에 대한 표시를 확인합니다.
    3. (선택 사항) Red Hat 기술 지원 케이스를 열고 수집한 문제 해결 정보를 제공합니다.
  7. 호스트에서 sudo 를 실행할 수 있는 경우 sssctl 유틸리티를 사용하여 사용자가 로그인할 수 있는지 확인합니다.

    [user@client ~]$ sudo sssctl user-checks -a auth -s ssh <user_name>
    Copy to Clipboard Toggle word wrap

    이 단계가 실패하면 PAM 구성, IdM HBAC 규칙 및 IdM RBAC 규칙과 같은 인증 설정을 확인합니다.

    1. 사용자의 UID가 /etc/login.defs 파일에 정의되어 있는 UID_MIN 보다 크거나 같은지 확인합니다.
    2. /var/log/secure 및 /var/log /messages 로그 파일에서 인증 오류를 검토합니다.
    3. SSSD 서비스에서 자세한 로깅을 활성화하고 디버깅 로그를 수집한 다음 로그에서 문제 소스에 대한 표시를 확인합니다.
    4. (선택 사항) Red Hat 기술 지원 케이스를 열고 수집한 문제 해결 정보를 제공합니다.

8.5. SSSD 로그 파일 및 로깅 수준

각 SSSD 서비스는 /var/log/sssd/ 디렉토리에 있는 자체 로그 파일에 로그인합니다. example.com IdM 도메인에 있는 IdM 서버의 경우 로그 파일은 다음과 같을 수 있습니다.

[root@server ~]# ls -l /var/log/sssd/
total 620
-rw-------.  1 root root      0 Mar 29 09:21 krb5_child.log
-rw-------.  1 root root  14324 Mar 29 09:50 ldap_child.log
-rw-------.  1 root root 212870 Mar 29 09:50 sssd_example.com.log
-rw-------.  1 root root      0 Mar 29 09:21 sssd_ifp.log
-rw-------.  1 root root      0 Mar 29 09:21 sssd_implicit_files.log
-rw-------.  1 root root      0 Mar 29 09:21 sssd.log
-rw-------.  1 root root 219873 Mar 29 10:03 sssd_nss.log
-rw-------.  1 root root      0 Mar 29 09:21 sssd_pac.log
-rw-------.  1 root root  13105 Mar 29 09:21 sssd_pam.log
-rw-------.  1 root root   9390 Mar 29 09:21 sssd_ssh.log
-rw-------.  1 root root      0 Mar 29 09:21 sssd_sudo.log
Copy to Clipboard Toggle word wrap

8.5.1. SSSD 로그 파일 목적

krb5_child.log
Kerberos 인증과 관련된 수명이 짧은 도우미 프로세스에 대한 로그 파일입니다.
ldap_child.log
LDAP 서버와의 통신을 위한 Kerberos 티켓을 가져오는 데 관련된 수명이 짧은 도우미 프로세스의 로그 파일입니다.
sssd_<example.com>.log

sssd.conf 파일의 각 도메인 섹션에 대해 SSSD 서비스는 LDAP 서버와의 통신에 대한 정보를 별도의 로그 파일에 기록합니다. 예를 들어, example.com 이라는 IdM 도메인이 있는 환경에서 SSSD 서비스는 sssd_example.com.log 라는 파일에 해당 정보를 기록합니다. 호스트가 ad.example.com 이라는 AD 도메인과 직접 통합되는 경우 정보는 sssd_ad.example.com.log 라는 파일에 기록됩니다.

참고

IdM 환경과 AD 도메인을 사용하는 교차 포트 신뢰가 있는 경우에도 AD 도메인에 대한 정보는 여전히 IdM 도메인의 로그 파일에 기록됩니다.

마찬가지로 호스트가 AD 도메인에 직접 통합되면 하위 도메인에 대한 정보는 기본 도메인의 로그 파일에 작성됩니다.

selinux_child.log
SELinux 정보를 검색하고 설정하는 수명이 짧은 도우미 프로세스에 대한 로그 파일입니다.
sssd.log
SSSD 모니터링 및 응답자 및 백엔드 프로세스와 통신하기 위한 로그 파일입니다.
sssd_ifp.log
시스템 버스를 통해 액세스할 수 있는 공용 D-Bus 인터페이스를 제공하는 InfoPipe 응답자의 로그 파일입니다.
sssd_nss.log
사용자 및 그룹 정보를 검색하는 NSS(Name Services Switch) 응답자의 로그 파일입니다.
sssd_pac.log
AD Kerberos 티켓에서 PAC를 수집하고 PAC에 대한 AD 사용자에 대한 정보를 파생하여 AD에서 직접 요청하지 않도록 하는 Microsoft 권한 속성 인증서(PAC) 응답자의 로그 파일입니다.
sssd_pam.log
PAM(Pluggable Authentication Module) 응답자의 로그 파일입니다.
sssd_ssh.log
SSH 응답자 프로세스에 대한 로그 파일입니다.

8.5.2. SSSD 로깅 수준

디버그 수준을 설정하면 그 아래의 모든 디버그 수준도 활성화됩니다. 예를 들어 6에서 디버그 수준을 설정하면 디버그 수준 0 ~ 5도 활성화됩니다.

Expand
표 8.1. SSSD 로깅 수준
level설명

0

치명적인 오류. SSSD 서비스가 시작되지 않거나 종료되는 오류입니다. RHEL 8.3 이전 버전의 기본 디버그 로그 수준입니다.

1

중요한 오류. SSSD 서비스를 종료하지 않지만 하나 이상의 주요 기능이 제대로 작동하지 않는 오류입니다.

2

심각한 오류. 특정 요청 또는 작업이 실패했음을 확인하는 동안 오류가 발생했습니다. RHEL 8.4 이상의 기본 디버그 로그 수준입니다.

3

사소한 오류. 레벨 2에서 작업 실패를 일으키는 오류.

4

구성 설정.

5

기능 데이터.

6

작업 기능에 대한 메시지를 추적합니다.

7

내부 제어 기능에 대한 메시지를 추적합니다.

8

함수 내부 변수의 내용.

9

매우 낮은 수준의 추적 정보.

8.6. sssd.conf 파일에서 SSSD에 대한 세부 로깅 활성화

기본적으로 RHEL 8.4 이상의 SSSD 서비스는 심각한 오류(디버그 수준 2)만 로깅하지만 인증 문제 해결에 필요한 세부적인 수준에는 기록되지 않습니다.

SSSD 서비스 재시작 시 세부 로깅을 영구적으로 사용하려면 /etc/sssd/sssd.conf 구성 파일의 각 섹션에 debug_level=<integer&gt; 옵션을 추가합니다. 여기서 <integer> 값은 0에서 9 사이의 숫자입니다. 최대 3개의 로그 실패를 디버그하고, 수준 8 이상에서는 많은 수의 세부 로그 메시지를 제공합니다. 수준 6 은 인증 문제를 디버깅하기 위한 좋은 시작 지점입니다.

사전 요구 사항

  • sssd.conf 구성 파일을 편집하고 SSSD 서비스를 다시 시작하려면 루트 암호가 필요합니다.

절차

  1. 텍스트 편집기에서 /etc/sssd/sssd.conf 파일을 엽니다.
  2. debug_level 옵션을 파일의 모든 섹션에 추가하고 디버그 수준을 선택한 세부 정보 표시로 설정합니다.

    [domain/example.com]
    debug_level = 6
    id_provider = ipa
    ...
    
    [sssd]
    debug_level = 6
    services = nss, pam, ifp, ssh, sudo
    domains = example.com
    
    [nss]
    debug_level = 6
    
    [pam]
    debug_level = 6
    
    [sudo]
    debug_level = 6
    
    [ssh]
    debug_level = 6
    
    [pac]
    debug_level = 6
    
    [ifp]
    debug_level = 6
    Copy to Clipboard Toggle word wrap
  3. sssd.conf 파일을 저장하고 닫습니다.
  4. SSSD 서비스를 다시 시작하여 새 구성 설정을 로드합니다.

    [root@server ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap

8.7. sssctl 명령을 사용하여 SSSD에 대한 세부 로깅 활성화

기본적으로 RHEL 8.4 이상의 SSSD 서비스는 심각한 오류(디버그 수준 2)만 로깅하지만 인증 문제 해결에 필요한 세부적인 수준에는 기록되지 않습니다.

sssctl debug-level <integer> 명령을 사용하여 명령줄에서 SSSD 서비스의 디버그 수준을 변경할 수 있습니다. 여기서 <integer> 값은 0에서 9 사이의 숫자입니다. 최대 3개의 로그 실패를 디버그하고, 수준 8 이상에서는 많은 수의 세부 로그 메시지를 제공합니다. 수준 6은 인증 문제를 디버깅하기 위한 좋은 시작 지점입니다.

사전 요구 사항

  • sssctl 명령을 실행하려면 루트 암호가 필요합니다.

절차

  • sssctl debug-level 명령을 사용하여 선택한 디버그 수준을 원하는 세부 정보 표시 수준으로 설정합니다.

    [root@server ~]# sssctl debug-level 6
    Copy to Clipboard Toggle word wrap

IdM 서버로 IdM 사용자로 인증하려고 할 때 문제가 발생하는 경우 서버의 SSSD 서비스에서 자세한 디버그 로깅을 활성화하고 사용자 정보 검색 시도의 로그를 수집합니다.

사전 요구 사항

  • sssctl 명령을 실행하고 SSSD 서비스를 다시 시작하려면 루트 암호가 필요합니다.

절차

  1. IdM 서버에서 자세한 SSSD 디버그 로깅을 활성화합니다.

    [root@server ~]# sssctl debug-level 6
    Copy to Clipboard Toggle word wrap
  2. 인증 문제가 발생한 사용자에 대해 SSSD 캐시의 오브젝트를 무효화하므로 LDAP 서버를 우회하지 않고 SSSD가 이미 캐시된 정보를 검색하지 않습니다.

    [root@server ~]# sssctl cache-expire -u idmuser
    Copy to Clipboard Toggle word wrap
  3. 이전 SSSD 로그를 제거하여 데이터 세트 문제 해결을 최소화합니다.

    [root@server ~]# sssctl logs-remove
    Copy to Clipboard Toggle word wrap
  4. 시도 전후에 타임스탬프를 수집하는 동시에 인증 문제가 발생한 사용자로 전환합니다. 이러한 타임스탬프는 데이터 세트의 범위를 더욱 좁힙니다.

    [root@server sssd]# date; su idmuser; date
    Mon Mar 29 15:33:48 EDT 2021
    su: user idmuser does not exist
    Mon Mar 29 15:33:49 EDT 2021
    Copy to Clipboard Toggle word wrap
  5. (선택 사항) 자세한 SSSD 로그를 계속 수집하지 않으려면 디버그 수준을 낮춥니다.

    [root@server ~]# sssctl debug-level 2
    Copy to Clipboard Toggle word wrap
  6. 실패한 요청에 대한 정보는 SSSD 로그를 검토하십시오. 예를 들어 /var/log/sssd/sssd_example.com.log 파일을 검토하면 SSSD 서비스에서 cn=accounts,dc=example,dc=com LDAP 하위 트리에서 사용자를 찾지 못했습니다. 이는 사용자가 없거나 다른 위치에 있음을 나타낼 수 있습니다.

    (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [dp_get_account_info_send] (0x0200): Got request for [0x1][BE_REQ_USER][name=idmuser@example.com]
    ...
    (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(uid=idmuser)(objectclass=posixAccount)(uid=)(&(uidNumber=)(!(uidNumber=0))))][cn=accounts,dc=example,dc=com].
    (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_op_finished] (0x0400): Search result: Success(0), no errmsg set
    (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_search_user_process] (0x0400): Search for users, returned 0 results.
    (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry
    (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_delete_user] (0x0400): Error: 2 (No such file or directory)
    (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry
    (Mon Mar 29 15:33:49 2021) [sssd[be[example.com]]] [ipa_id_get_account_info_orig_done] (0x0080): Object not found, ending request
    Copy to Clipboard Toggle word wrap
  7. 인증 문제의 원인을 확인할 수 없는 경우:

    1. 최근에 생성된 SSSD 로그를 수집합니다.

      [root@server ~]# sssctl logs-fetch sssd-logs-Mar29.tar
      Copy to Clipboard Toggle word wrap
    2. Red Hat 기술 지원 케이스를 열고 다음을 제공합니다.

      1. SSSD 로그: sssd-logs-29.tar
      2. 로그에 해당하는 요청의 타임스탬프 및 사용자 이름을 포함한 콘솔 출력은 다음과 같습니다.

        [root@server sssd]# date; id idmuser; date
        Mon Mar 29 15:33:48 EDT 2021
        id: ‘idmuser’: no such user
        Mon Mar 29 15:33:49 EDT 2021
        Copy to Clipboard Toggle word wrap

IdM 클라이언트에 IdM 사용자로 인증할 때 문제가 발생하는 경우 IdM 서버에 대한 사용자 정보를 검색할 수 있는지 확인합니다. IdM 서버에 대한 사용자 정보를 검색할 수 없는 경우 IdM 서버에서 정보를 검색하는 IdM 클라이언트에서 검색할 수 없습니다.

인증 문제가 IdM 서버에서 발생하지 않았다는 것을 확인한 후 IdM 서버와 IdM 클라이언트에서 SSSD 디버깅 로그를 수집합니다.

사전 요구 사항

  • 사용자는 IdM 서버가 아닌 IdM 클라이언트에만 인증 문제가 있습니다.
  • sssctl 명령을 실행하고 SSSD 서비스를 다시 시작하려면 루트 암호가 필요합니다.

절차

  1. 클라이언트에서 다음을 수행합니다. 텍스트 편집기에서 /etc/sssd/sssd.conf 파일을 엽니다.
  2. 클라이언트에서 다음을 수행합니다. ipa_server 옵션을 파일의 [domain] 섹션에 추가하고 IdM 서버로 설정합니다. 이렇게 하면 IdM 클라이언트가 다른 IdM 서버를 자동 검색하지 않으므로 이 테스트를 하나의 클라이언트와 하나의 서버로만 제한합니다.

    [domain/example.com]
    ipa_server = server.example.com
    ...
    Copy to Clipboard Toggle word wrap
  3. 클라이언트에서 다음을 수행합니다. sssd.conf 파일을 저장하고 닫습니다.
  4. 클라이언트에서 다음을 수행합니다. SSSD 서비스를 다시 시작하여 구성 변경 사항을 로드합니다.

    [root@client ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap
  5. 서버 및 클라이언트에서 다음을 수행합니다. 자세한 SSSD 디버그 로깅을 활성화합니다.

    [root@server ~]# sssctl debug-level 6
    Copy to Clipboard Toggle word wrap
    [root@client ~]# sssctl debug-level 6
    Copy to Clipboard Toggle word wrap
  6. 서버 및 클라이언트에서 다음을 수행합니다. 인증 문제가 발생한 사용자의 경우 SSSD 캐시에서 오브젝트를 무효화하므로 LDAP 데이터베이스를 무시하고 SSSD가 이미 캐시된 정보를 검색하지 않습니다.

    [root@server ~]# sssctl cache-expire -u idmuser
    Copy to Clipboard Toggle word wrap
    [root@client ~]# sssctl cache-expire -u idmuser
    Copy to Clipboard Toggle word wrap
  7. 서버 및 클라이언트에서 다음을 수행합니다. 이전 SSSD 로그를 제거하여 데이터 세트 문제 해결을 최소화합니다.

    [root@server ~]# sssctl logs-remove
    Copy to Clipboard Toggle word wrap
    [root@server ~]# sssctl logs-remove
    Copy to Clipboard Toggle word wrap
  8. 클라이언트에서 다음을 수행합니다. 시도 전후에 타임스탬프를 수집하는 동안 인증 문제가 발생하는 사용자로 전환합니다. 이러한 타임스탬프는 데이터 세트의 범위를 더욱 좁힙니다.

    [root@client sssd]# date; su idmuser; date
    Mon Mar 29 16:20:13 EDT 2021
    su: user idmuser does not exist
    Mon Mar 29 16:20:14 EDT 2021
    Copy to Clipboard Toggle word wrap
  9. (선택 사항) 서버와 클라이언트에서 다음을 수행합니다. 자세한 SSSD 로그를 계속 수집하지 않으려면 디버그 수준을 낮춥니다.

    [root@server ~]# sssctl debug-level 0
    Copy to Clipboard Toggle word wrap
    [root@client ~]# sssctl debug-level 0
    Copy to Clipboard Toggle word wrap
  10. 서버 및 클라이언트에서 다음을 수행합니다. 실패한 요청에 대한 정보는 SSSD 로그를 검토하십시오.

    1. 클라이언트 로그의 클라이언트에서 요청을 검토합니다.
    2. 서버 로그의 클라이언트에서 요청을 검토합니다.
    3. 서버 로그에서 요청 결과를 검토합니다.
    4. 서버에서 요청 결과를 수신하는 클라이언트의 결과를 검토합니다.
  11. 인증 문제의 원인을 확인할 수 없는 경우:

    1. 최근 IdM 서버 및 IdM 클라이언트에서 생성된 SSSD 로그를 수집합니다. 호스트 이름 또는 역할에 따라 레이블을 지정합니다.

      [root@server ~]# sssctl logs-fetch sssd-logs-server-Mar29.tar
      Copy to Clipboard Toggle word wrap
      [root@client ~]# sssctl logs-fetch sssd-logs-client-Mar29.tar
      Copy to Clipboard Toggle word wrap
    2. Red Hat 기술 지원 케이스를 열고 다음을 제공합니다.

      1. SSSD 디버그 로그:

        1. 서버의 sssd-logs-server-29.tar
        2. 클라이언트에서 sssd-logs-client-29.tar 을 클라이언트에서 실행
      2. 로그에 해당하는 요청의 타임스탬프 및 사용자 이름을 포함한 콘솔 출력은 다음과 같습니다.

        [root@client sssd]# date; su idmuser; date
        Mon Mar 29 16:20:13 EDT 2021
        su: user idmuser does not exist
        Mon Mar 29 16:20:14 EDT 2021
        Copy to Clipboard Toggle word wrap

8.10. SSSD 백엔드에서 클라이언트 요청 추적

SSSD는 요청을 비동기적으로 처리하고 다른 요청의 메시지가 동일한 로그 파일에 추가되므로 고유한 요청 식별자와 클라이언트 ID를 사용하여 백엔드 로그에서 클라이언트 요청을 추적할 수 있습니다. 고유한 요청 식별자는 RID#<integer> 형식의 디버그 로그에 추가되고 [CID #< integer] 형식의 클라이언트 ID가 추가됩니다. 이를 통해 개별 요청과 관련된 로그를 격리하고 요청을 여러 SSSD 구성 요소의 로그 파일에서 처음부터 끝까지 추적할 수 있습니다.

사전 요구 사항

  • 디버그 로깅을 활성화했으며 IdM 클라이언트에서 요청이 제출되었습니다.
  • SSSD 로그 파일의 내용을 표시하려면 루트 권한이 있어야 합니다.

절차

  1. SSSD 로그 파일을 검토하려면 less 유틸리티를 사용하여 로그 파일을 엽니다. 예를 들어 /var/log/sssd/sssd_example.com.log:

    [root@server ~]# less /var/log/sssd/sssd_example.com.log
    Copy to Clipboard Toggle word wrap
  2. 클라이언트 요청에 대한 정보는 SSSD 로그를 검토합니다.

    (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_destructor] (0x0400): [RID#3] Number of active DP request: 0
    (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_reply_std] (0x1000): [RID#3] DP Request AccountDomain #3: Returning [Internal Error]: 3,1432158301,GetAccountDomain() not supported
    (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] DP Request Account #4: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
    (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] Number of active DP request: 1
    Copy to Clipboard Toggle word wrap

    SSSD 로그 파일의 이 샘플 출력은 두 개의 다른 요청에 대한 고유 식별자 RID#3RID#4 를 보여줍니다.

그러나 SSSD 클라이언트 인터페이스에 대한 단일 클라이언트 요청은 백엔드에서 여러 요청을 트리거하는 경우가 많으며 이로 인해 백엔드의 클라이언트 요청과 요청 간에 1-to-1의 상관 관계가 아닙니다. 백엔드의 여러 요청에는 RID 번호가 다르지만 각 초기 백엔드 요청에는 고유한 클라이언트 ID가 포함되어 있으므로 관리자는 여러 RID 번호를 단일 클라이언트 요청에 대해 추적할 수 있습니다.

다음 예제에서는 하나의 클라이언트 요청 [sssd.nss CID #1] 및 백엔드에서 생성된 여러 요청 [RID#5] 을 [RID#13]으로 보여줍니다.

(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#5] DP Request [Account #5]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#6] DP Request [AccountDomain #6]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#7] DP Request [Account #7]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#8] DP Request [Initgroups #8]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#9] DP Request [Account #9]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#10] DP Request [Account #10]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#11] DP Request [Account #11]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#12] DP Request [Account #12]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#13] DP Request [Account #13]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
Copy to Clipboard Toggle word wrap

8.11. 로그 분석기 툴을 사용하여 클라이언트 요청 추적

SSSD(System Security Services Daemon)에는 여러 SSSD 구성 요소의 로그 파일에서 처음부터 끝까지 요청을 추적하는 데 사용할 수 있는 로그 구문 분석 도구가 포함되어 있습니다.

8.11.1. 로그 분석기 툴의 작동 방식

로그 구문 분석 툴을 사용하면 여러 SSSD 구성 요소의 로그 파일에서 SSSD 요청을 처음부터 끝까지 추적할 수 있습니다. sssctl analyze 명령을 사용하여 Analyzer 툴을 실행합니다.

로그 분석기 툴을 사용하면 SSSD에서 NSS 및 PAM 문제를 해결하고 SSSD 디버그 로그를 보다 쉽게 검토할 수 있습니다. SSSD 프로세스에서 특정 클라이언트 요청과 관련된 SSSD 로그를 추출하고 출력할 수 있습니다.

SSSD는 사용자 인증(su,ssh) 정보와 별도로 사용자 및 그룹 ID 정보(id,getent)를 추적합니다. NSS 응답자의 클라이언트 ID(CID)는 PAM 응답자의 CID와 독립적이며 NSS 및 PAM 요청을 분석할 때 중복되는 숫자가 표시됩니다. sssctl analyze 명령과 함께 --pam 옵션을 사용하여 PAM 요청을 검토합니다.

참고

SSSD 메모리 캐시에서 반환된 요청은 기록되지 않으며 로그 분석기 툴에서 추적할 수 없습니다.

8.11.2. 로그 분석기 툴 실행

로그 분석 도구를 사용하여 SSSD의 클라이언트 요청을 추적하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 로그 구문 분석 기능을 활성화하려면 /etc/sssd/sssd.conf 파일의 [$responder] 섹션과 [domain/$domain] 섹션에서 debug_level 을 7 이상으로 설정해야 합니다.
  • 분석할 로그는 RHEL 8.5 이상에서 SSSD인 libtevent 체인 ID 지원을 사용하여 구축된 SSSD의 호환 버전이어야 합니다.

절차

  1. 목록 모드에서 로그 분석기 툴을 실행하여 추적 중인 요청의 클라이언트 ID를 확인하고 -v 옵션을 추가하여 상세 출력을 표시합니다.

    # sssctl analyze request list -v
    Copy to Clipboard Toggle word wrap

    SSSD에 수행된 최근 클라이언트 요청의 상세 목록이 표시됩니다.

    참고

    PAM 요청을 분석하는 경우 --pam 옵션을 사용하여 sssctl analyze request list 명령을 실행합니다.

  2. show [unique 클라이언트 ID] 옵션과 함께 로그 Analyzer 툴을 실행하여 지정된 클라이언트 ID 번호와 관련된 로그를 표시합니다.

    # sssctl analyze request show 20
    Copy to Clipboard Toggle word wrap
  3. 필요한 경우 로그 파일에 대해 로그 Analyzer 툴을 실행할 수 있습니다. 예를 들면 다음과 같습니다.

    # sssctl analyze request --logdir=/tmp/var/log/sssd
    Copy to Clipboard Toggle word wrap

8.12. 추가 리소스

9장. Ansible 플레이북을 사용하여 IdM을 관리하기 위한 환경 준비

IdM(Identity Management)을 관리하는 시스템 관리자로서 Red Hat Ansible Engine을 사용하여 작업할 때 다음을 수행하는 것이 좋습니다.

  • 홈 디렉터리에 있는 Ansible 플레이북 전용 하위 디렉터리를 유지합니다(예: ~/MyPlaybooks ).
  • /usr /share/doc/ansible-freeipa/* 및 /usr/share/doc /rhel-system-roles/* 디렉터리 및 하위 디렉터리에서 ~/MyPlaybooks 디렉터리에 샘플 Ansible 플레이북을 복사 및 조정합니다.
  • 인벤토리 파일을 ~/MyPlaybooks 디렉터리에 포함합니다.

이 방법을 사용하면 한 곳에서 모든 플레이북을 찾을 수 있습니다.

참고

관리 노드에서 root 권한을 호출하지 않고 ansible-freeipa 플레이북을 실행할 수 있습니다. 예외적으로 ipaserver,ipareplica, ipaclient ,ipaclient,ipasmartcard_server,ipasmartcard_clientipabackup ansible-freeipa 역할을 사용하는 플레이북이 있습니다. 이러한 역할을 수행하려면 디렉터리 및 dnf 소프트웨어 패키지 관리자에 대한 액세스 권한이 필요합니다.

Red Hat Enterprise Linux IdM 문서의 플레이북은 다음과 같은 보안 구성 을 가정합니다.

  • IdM 관리자는 관리 노드의 원격 Ansible 사용자입니다.
  • 암호화된 IdM 관리자 암호를 Ansible 자격 증명 모음에 저장합니다.
  • 암호 파일에서 Ansible 자격 증명 모음을 보호하는 암호를 저장했습니다.
  • 로컬 ansible 사용자를 제외한 모든 사용자에 대해 vault 암호 파일에 대한 액세스를 차단합니다.
  • 자격 증명 모음 암호 파일을 정기적으로 제거하고 다시 만듭니다.

대체 보안 구성도 고려하십시오.

Ansible 플레이북을 저장하고 실행하는 데 사용할 수 있도록 ~/MyPlaybooks 디렉터리를 생성하고 구성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 관리형 노드인 server.idm.example .com 및 replica.idm.example.com에 IdM 서버를 설치했습니다.
  • 제어 노드에서 직접 관리형 노드인 server.idm.example.com 및 replica.idm.example.com 에 로그인할 수 있도록 DNS 및 네트워킹을 구성했습니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 변경합니다.

    $ cd ~/MyPlaybooks
    Copy to Clipboard Toggle word wrap
  2. 다음 콘텐츠를 사용하여 ~/Myplaybooks/ansible.cfg 파일을 만듭니다.

    [defaults]
    inventory = /home/your_username/MyPlaybooks/inventory
    remote_user = admin
    Copy to Clipboard Toggle word wrap
  3. 다음 콘텐츠를 사용하여 ~/Myplaybooks/inventory 파일을 만듭니다.

    [eu]
    server.idm.example.com
    
    [us]
    replica.idm.example.com
    
    [ipaserver:children]
    eu
    us
    Copy to Clipboard Toggle word wrap

    이 구성은 이러한 위치에 있는 호스트에 대한 두 개의 호스트 그룹인 euus 를 정의합니다. 또한 이 구성은 euus 그룹의 모든 호스트를 포함하는 ipaserver 호스트 그룹을 정의합니다.

  4. [선택 사항] SSH 공개 및 개인 키를 생성합니다. 테스트 환경에서 액세스를 간소화하려면 개인 키에 암호를 설정하지 마십시오.

    $ ssh-keygen
    Copy to Clipboard Toggle word wrap
  5. SSH 공개 키를 각 관리 노드의 IdM admin 계정에 복사합니다.

    $ ssh-copy-id admin@server.idm.example.com
    $ ssh-copy-id admin@replica.idm.example.com
    Copy to Clipboard Toggle word wrap

    이러한 명령을 사용하려면 IdM 관리자 암호를 입력해야 합니다.

  6. vault 암호가 포함된 password_file 파일을 생성합니다.

    redhat
    Copy to Clipboard Toggle word wrap
  7. 파일을 수정하려면 권한을 변경합니다.

    $ chmod 0600 password_file
    Copy to Clipboard Toggle word wrap
  8. IdM 관리자 암호를 저장할 secret.yml Ansible 자격 증명 모음을 생성합니다.

    1. vault 암호를 저장하도록 password_file 을 구성합니다.

      $ ansible-vault create --vault-password-file=password_file secret.yml
      Copy to Clipboard Toggle word wrap
    2. 메시지가 표시되면 secret.yml 파일의 내용을 입력합니다.

      ipaadmin_password: Secret123
      Copy to Clipboard Toggle word wrap
참고

플레이북에서 암호화된 ipaadmin_password 를 사용하려면 vars_file 지시문을 사용해야 합니다. 예를 들어 IdM 사용자를 삭제하는 간단한 플레이북은 다음과 같습니다.

---
- name: Playbook to handle users
  hosts: ipaserver

  vars_files:
  - /home/user_name/MyPlaybooks/secret.yml

  tasks:
  - name: Delete user robot
    ipauser:
      ipaadmin_password: "{{ ipaadmin_password }}"
      name: robot
      state: absent
Copy to Clipboard Toggle word wrap

플레이북을 실행하는 경우 --vault-password-file=password_file옵션을 추가하여 Ansible에서 Vault 암호를 사용하여 ipaadmin_password 의 암호를 해독하도록 지시합니다. 예를 들면 다음과 같습니다.

ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
Copy to Clipboard Toggle word wrap
주의

보안상의 이유로 각 세션이 끝날 때 자격 증명 모음 암호 파일을 제거하고 각 새 세션이 시작될 때 7-9 단계를 반복합니다.

ansible-freeipa 역할 및 모듈을 사용하는 플레이북 실행에 필요한 자격 증명을 제공하는 다양한 방법에는 장단점이 있습니다.

플레이북의 일반 텍스트에 암호 저장

이점:

  • 플레이북을 실행할 때마다 프롬프트가 표시되지 않습니다.
  • 쉽게 구현할 수 있습니다.

제품 상세 정보:

  • 파일에 대한 액세스 권한이 있는 모든 사용자가 암호를 읽을 수 있습니다. 잘못된 권한을 설정하고 파일을 공유(예: 내부 또는 외부 리포지토리)로 설정하면 보안이 손상될 수 있습니다.
  • 높은 유지 관리 작업: 암호가 변경되면 모든 플레이북에서 암호를 변경해야 합니다.

플레이북을 실행할 때 대화형 암호 입력

이점:

  • 어느 쪽도 비밀번호를 스테이크할 수 없습니다. 어디에도 저장되지 않기 때문입니다.
  • 비밀번호를 쉽게 업데이트할 수 있습니다.
  • 쉽게 구현할 수 있습니다.

제품 상세 정보:

  • 스크립트에서 Ansible 플레이북을 사용하는 경우 암호를 대화식으로 입력해야 하는 요구 사항은 불편할 수 있습니다.

파일의 Ansible 자격 증명 모음 및 자격 증명 모음 암호에 암호 저장:

이점:

  • 사용자 암호는 암호화되어 저장됩니다.
  • 새 Ansible 자격 증명 모음을 생성하여 사용자 암호를 쉽게 업데이트할 수 있습니다.
  • ansible-vault rekey --new-vault-password-file=NEW_VAULT_PASSWORD_FILE secret.yml 명령을 사용하여 ansible 자격 증명 모음을 쉽게 보호하는 암호 파일을 업데이트할 수 있습니다.
  • 스크립트에서 Ansible 플레이북을 사용하는 경우 Ansible 자격 증명 모음을 보호하는 암호를 입력하지 않아도 되는 것이 편리합니다.

제품 상세 정보:

  • 중요한 일반 텍스트 암호가 포함된 파일은 파일 권한 및 기타 보안 조치를 통해 보호하는 것이 중요합니다.

Ansible 자격 증명 모음에 암호 저장 및 자격 증명 모음 암호 입력

이점:

  • 사용자 암호는 암호화되어 저장됩니다.
  • 어느 쪽도 볼트 암호를 스틸 수 없습니다. 어디에도 저장되지 않습니다.
  • 새 Ansible 자격 증명 모음을 생성하여 사용자 암호를 쉽게 업데이트할 수 있습니다.
  • ansible-vault rekey file_name 명령을 사용하여 vault 암호를 쉽게 업데이트할 수 있습니다.

제품 상세 정보:

  • 스크립트에서 Ansible 플레이북을 사용하는 경우 자격 증명 모음 암호를 대화형으로 입력해야 하는 경우 불편할 수 있습니다.

10장. Ansible 플레이북을 사용하여 글로벌 IdM 설정 구성

Ansible config 모듈을 사용하면 IdM(Identity Management)에 대한 글로벌 구성 매개 변수를 검색하고 설정할 수 있습니다.

10.1. Ansible 플레이북을 사용하여 IdM 구성 검색

다음 절차에서는 Ansible 플레이북을 사용하여 현재 글로벌 IdM 구성에 대한 정보를 검색하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 편집을 위해 /usr/share/doc/ansible-freeipa/playbooks/config/retmasterve-config.yml Ansible 플레이북 파일을 엽니다.

    ---
    - name: Playbook to handle global IdM configuration
      hosts: ipaserver
      become: no
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Query IPA global configuration
        ipaconfig:
          ipaadmin_password: "{{ ipaadmin_password }}"
        register: serverconfig
    
      - debug:
          msg: "{{ serverconfig }}"
    Copy to Clipboard Toggle word wrap
  2. 다음을 변경하여 파일을 조정합니다.

    • IdM 관리자의 암호입니다.
    • 필요한 경우 기타 값입니다.
  3. 파일을 저장합니다.
  4. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/retrieve-config.yml
    [...]
    TASK [debug]
    ok: [server.idm.example.com] => {
        "msg": {
            "ansible_facts": {
                "discovered_interpreter_
            },
            "changed": false,
            "config": {
                "ca_renewal_master_server": "server.idm.example.com",
                "configstring": [
                    "AllowNThash",
                    "KDC:Disable Last Success"
                ],
                "defaultgroup": "ipausers",
                "defaultshell": "/bin/bash",
                "emaildomain": "idm.example.com",
                "enable_migration": false,
                "groupsearch": [
                    "cn",
                    "description"
                ],
                "homedirectory": "/home",
                "maxhostname": "64",
                "maxusername": "64",
                "pac_type": [
                    "MS-PAC",
                    "nfs:NONE"
                ],
                "pwdexpnotify": "4",
                "searchrecordslimit": "100",
                "searchtimelimit": "2",
                "selinuxusermapdefault": "unconfined_u:s0-s0:c0.c1023",
                "selinuxusermaporder": [
                    "guest_u:s0$xguest_u:s0$user_
                ],
                "usersearch": [
                    "uid",
                    "givenname",
                    "sn",
                    "telephonenumber",
                    "ou",
                    "title"
                ]
            },
            "failed": false
        }
    }
    Copy to Clipboard Toggle word wrap

10.2. Ansible 플레이북을 사용하여 IdM CA 갱신 서버 구성

임베디드 CA(인증 기관)를 사용하는 IdM(Identity Management) 배포에서 CA 갱신 서버는 IdM 시스템 인증서를 유지 관리하고 갱신합니다. 강력한 IdM 배포를 보장합니다.

IdM CA 갱신 서버의 역할에 대한 자세한 내용은 IdM CA 갱신 서버 사용을 참조하십시오.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM CA 갱신 서버를 구성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 선택 사항: 현재 IdM CA 갱신 서버를 식별합니다.

    $ ipa config-show | grep 'CA renewal'
      IPA CA renewal master: server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 /usr/share/doc/ansible-freeipa/playbooks/config/set-ca-renewal-master-server.yml Ansible 플레이북 파일을 엽니다.

    ---
    - name: Playbook to handle global DNS configuration
      hosts: ipaserver
      become: no
      gather_facts: no
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
      - name: set ca_renewal_master_server
        ipaconfig:
          ipaadmin_password: "{{ ipaadmin_password }}"
          ca_renewal_master_server: carenewal.idm.example.com
    Copy to Clipboard Toggle word wrap
  4. 다음과 같이 변경하여 파일을 조정합니다.

    • ipaadmin_password 변수로 설정한 IdM 관리자의 암호입니다.
    • ca_renewal_master_server 변수에서 설정한 CA 갱신 서버의 이름입니다.
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/set-ca-renewal-master-server.yml
    Copy to Clipboard Toggle word wrap

검증 단계

CA 갱신 서버가 변경되었는지 확인할 수 있습니다.

  1. IdM 관리자로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. IdM CA 갱신 서버의 ID를 요청합니다.

    $ ipa config-show | grep ‘CA renewal’
    IPA CA renewal master:  carenewal.idm.example.com
    Copy to Clipboard Toggle word wrap

    출력에 carenewal.idm.example.com 서버가 새 CA 갱신 서버임을 보여줍니다.

10.3. Ansible 플레이북을 사용하여 IdM 사용자에 대한 기본 쉘 구성

쉘은 명령을 수락하고 해석하는 프로그램입니다. bash,sh,ksh,zsh 등의 RHEL(Red Hat Enterprise Linux)에서 몇 가지 쉘 사용할 수 있습니다. Bash 또는 /bin/bash 는 대부분의 Linux 시스템에서 널리 사용되는 쉘이며, 일반적으로 RHEL의 사용자 계정의 기본 쉘입니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM 사용자의 기본 쉘로 대체 쉘인 sh 를 구성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 선택 사항: retrieve-config.yml Ansible 플레이북을 사용하여 IdM 사용자의 현재 쉘을 식별합니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 구성 검색에서 참조하십시오.
  2. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 /usr/share/doc/ansible-freeipa/playbooks/config/ensure-config-options-are-set.yml Ansible 플레이북 파일을 엽니다.

    ---
    - name: Playbook to ensure some config options are set
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
      # Set defaultlogin and maxusername
      - ipaconfig:
          ipaadmin_password: "{{ ipaadmin_password }}"
          defaultshell: /bin/bash
          maxusername: 64
    Copy to Clipboard Toggle word wrap
  4. 다음을 변경하여 파일을 조정합니다.

    • ipaadmin_password 변수로 설정한 IdM 관리자의 암호입니다.
    • default shell 변수로 설정한 IdM 사용자의 기본 쉘은 /bin/sh 에 있습니다.
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/ensure-config-options-are-set.yml
    Copy to Clipboard Toggle word wrap

검증 단계

IdM에서 새 세션을 시작하여 기본 사용자 쉘이 변경되었는지 확인할 수 있습니다.

  1. IdM 관리자로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. 현재 쉘을 표시합니다.

    [admin@server /]$ echo "$SHELL"
    /bin/sh
    Copy to Clipboard Toggle word wrap

    로그인한 사용자는 sh 쉘을 사용하고 있습니다.

10.4. Ansible을 사용하여 IdM 도메인의 name 구성

skopeo 이름은 Microsoft Windows (SMB) 유형의 공유 및 메시징에 사용됩니다. skopeo 이름을 사용하여 드라이브를 매핑하거나 프린터에 연결할 수 있습니다.

Ansible 플레이북을 사용하여 IdM(Identity Management) 도메인의 NetBIOS 이름을 구성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • ansible-freeipa 패키지가 설치됩니다.

가정

  • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
  • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하고 자격 증명 모음 파일 암호를 알고 있다고 가정합니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. netbios-domain-name-present.yml Ansible 플레이북 파일을 생성합니다.
  3. 파일에 다음 내용을 추가합니다.

    ---
    - name: Playbook to change IdM domain netbios name
      hosts: ipaserver
      become: no
      gather_facts: no
    
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
        - name: Set IdM domain netbios name
          ipaconfig:
            ipaadmin_password: "{{ ipaadmin_password }}"
            netbios_name: IPADOM
    Copy to Clipboard Toggle word wrap
  4. 파일을 저장합니다.
  5. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory netbios-domain-name-present.yml
    Copy to Clipboard Toggle word wrap

    메시지가 표시되면 자격 증명 모음 파일 암호를 입력합니다.

10.5. Ansible을 사용하여 IdM 사용자 및 그룹에 CloudEvent가 있는지 확인

IdM(Identity Management) 서버는 로컬 도메인의 ID 범위에 있는 데이터에 따라 내부적으로 IdM(보안 식별자)을 IdM 사용자 및 그룹에 할당할 수 있습니다. STS는 사용자 및 그룹 개체에 저장됩니다.

IdM 사용자 및 그룹에LoadBalancer가 포함되도록 하는 목표는 IdM-IdM 신뢰를 위한 첫 번째 단계인 PAM(Privileged Attribute Certificate) 생성을 허용하는 것입니다. IdM 사용자 및 그룹에 CloudEvents가 있는 경우 IdM은 PAC 데이터로 Kerberos 티켓을 발행할 수 있습니다.

다음 목표를 달성하려면 다음 절차를 따르십시오.

  • 기존 IdM 사용자 및 사용자 그룹에 대한 dotnets를 생성합니다.
  • IdM의 새 사용자 및 그룹을 위한 skopeo 생성을 활성화합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • ansible-freeipa 패키지가 설치됩니다.

가정

  • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
  • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하고 자격 증명 모음 파일 암호를 알고 있다고 가정합니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. sids-for-users-and-groups-present.yml Ansible 플레이북 파일을 생성합니다.
  3. 파일에 다음 내용을 추가합니다.

    ---
    - name: Playbook to ensure SIDs are enabled and users and groups have SIDs
      hosts: ipaserver
      become: no
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
        - name: Enable SID and generate users and groups SIDS
          ipaconfig:
            ipaadmin_password: "{{ ipaadmin_password }}"
            enable_sid: true
            add_sids: true
    Copy to Clipboard Toggle word wrap

    enable_sid 변수를 사용하면 향후 IdM 사용자 및 그룹에 대해 CloudEvent 생성을 활성화합니다. add_sids 변수는 기존 IdM 사용자 및 그룹에 대한 dotnets를 생성합니다.

    참고

    add_sids: true 를 사용하는 경우 enable_sid 변수를 true 로 설정해야 합니다.

  4. 파일을 저장합니다.
  5. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory sids-for-users-and-groups-present.yml
    Copy to Clipboard Toggle word wrap

    메시지가 표시되면 자격 증명 모음 파일 암호를 입력합니다.

11장. 명령줄을 사용하여 사용자 계정 관리

IdM(Identity Management)의 사용자 라이프사이클에는 다음을 포함하여 여러 단계가 있습니다.

  • 사용자 계정 만들기
  • 단계 사용자 계정 활성화
  • 사용자 계정 보존
  • 활성, 스테이징 또는 사용자 계정 삭제
  • 보존된 사용자 계정 복원

11.1. 사용자 라이프 사이클

IdM(Identity Management)은 다음 세 가지 사용자 계정 상태를 지원합니다.

  • 스테이징 사용자는 인증이 허용되지 않습니다. 초기 상태입니다. 활성 사용자에게 필요한 일부 사용자 계정 속성은 예를 들어 그룹 멤버십을 설정할 수 없습니다.
  • 활성 사용자는 인증을 허용합니다. 필요한 모든 사용자 계정 속성은 이 상태에서 설정해야 합니다.
  • 보존된 사용자는 비활성으로 간주되고 IdM에 인증할 수 없는 이전 활성 사용자입니다. 보존된 사용자는 활성 사용자로 보유한 계정 속성의 대부분을 유지하지만 사용자 그룹의 일부가 아닙니다.

A flow chart displaying 4 items: Active users - Stage users - Preserved users - Deleted users. Arrows communicate the relationships between each kind of user: Active users can be "preserved" as Preserved users. Preserved users can be "restored" as Active users. Preserved users can be "staged" as Stage users and Stage users can be "activated" into Active users. All users can be deleted to become "Deleted users".

IdM 데이터베이스에서 영구적으로 사용자 항목을 삭제할 수 있습니다.

중요

삭제된 사용자 계정은 복원할 수 없습니다. 사용자 계정을 삭제하면 계정과 연결된 모든 정보가 영구적으로 손실됩니다.

새 관리자는 기본 admin 사용자와 같은 관리자 권한이 있는 사용자만 만들 수 있습니다. 모든 관리자 계정을 실수로 삭제한 경우 Directory Manager에서 Directory Server에서 새 관리자를 수동으로 생성해야 합니다.

주의

admin 사용자를 삭제하지 마십시오. admin 은 IdM에 필요한 사전 정의된 사용자이므로 이 작업으로 인해 특정 명령에서 문제가 발생합니다. 대체 admin 사용자를 정의하고 사용하려는 경우 하나 이상의 다른 사용자에게 admin 권한을 부여한 후 ipa 사용자 비활성화 admin으로 사전 정의된 admin 사용자를 비활성화합니다.

주의

IdM에 로컬 사용자를 추가하지 마십시오. NSS(Name Service Switch)는 로컬 사용자 및 그룹을 확인하기 전에 항상 IdM 사용자 및 그룹을 확인합니다. 즉, IdM 그룹 멤버십은 로컬 사용자에게 작동하지 않습니다.

11.2. 명령줄을 사용하여 사용자 추가

다음과 같이 사용자를 추가할 수 있습니다.

  • 활성 메세지 - 사용자가 적극적으로 사용할 수 있는 사용자 계정.
  • 스테이징 -암호사용자는 이러한 계정을 사용할 수 없습니다. 새 사용자 계정을 준비하려면 이 파일을 사용합니다. 사용자가 자신의 계정을 사용할 준비가 되면 활성화할 수 있습니다.

다음 절차에서는 ipa user-add 명령을 사용하여 IdM 서버에 활성 사용자를 추가하는 방법을 설명합니다.

마찬가지로 ipa stageuser-add 명령을 사용하여 스테이징 사용자 계정을 생성할 수 있습니다.

참고

IdM은 고유한 사용자 ID(UID)를 새 사용자 계정에 자동으로 할당합니다. 이 작업을 수동으로 수행할 수도 있지만 서버에서 UID 번호가 고유한지 여부를 확인하지 않습니다. 이로 인해 여러 사용자 항목이 동일한 ID 번호가 할당될 수 있습니다. 동일한 UID가 있는 여러 항목이 없는 것을 방지하는 것이 좋습니다.

사전 요구 사항

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. 사용자 로그인, 사용자의 이름, 성을 추가하고 필요한 경우 이메일 주소를 추가할 수도 있습니다.

    $ ipa user-add user_login --first=first_name --last=last_name --email=email_address
    Copy to Clipboard Toggle word wrap

    IdM에서는 다음 정규식으로 설명할 수 있는 사용자 이름을 지원합니다.

    [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?
    Copy to Clipboard Toggle word wrap
    참고

    후행 달러 기호($)로 끝나는 사용자 이름은 Samba 3.x 시스템 지원을 활성화하기 위해 지원됩니다.

    대문자가 포함된 사용자 이름을 추가하는 경우 IdM은 자동으로 이름을 저장할 때 소문자로 변환합니다. 따라서 IdM은 로그인할 때 항상 사용자 이름을 소문자로 입력해야 합니다. 또한 사용자 및 사용자 등 문자 캐싱에서만 다른 사용자 이름을 추가할 수 없습니다 .

    사용자 이름의 기본 최대 길이는 32자입니다. 변경하려면 ipa config-mod --maxusername 명령을 사용합니다. 예를 들어 최대 사용자 이름 길이를 64자로 늘리려면 다음을 수행합니다.

    $ ipa config-mod --maxusername=64
     Maximum username length: 64
     ...
    Copy to Clipboard Toggle word wrap

    ipa user-add 명령에는 많은 매개 변수가 포함되어 있습니다. 모두 나열하려면 ipa help 명령을 사용합니다.

    $ ipa help user-add
    Copy to Clipboard Toggle word wrap

    ipa help 명령에 대한 자세한 내용은 IPA 도움말을 참조하십시오.

모든 IdM 사용자 계정을 나열하여 새 사용자 계정이 성공적으로 생성되었는지 확인할 수 있습니다.

$ ipa user-find
Copy to Clipboard Toggle word wrap

이 명령은 세부 정보가 있는 모든 사용자 계정을 나열합니다.

11.3. 명령줄을 사용하여 사용자 활성화

사용자 계정을 스테이지에서 활성으로 이동하여 활성화하려면 ipa stageuser-activate 명령을 사용합니다.

사전 요구 사항

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. 다음 명령으로 사용자 계정을 활성화합니다.

    $ ipa stageuser-activate user_login
    -------------------------
    Stage user user_login activated
    -------------------------
    ...
    Copy to Clipboard Toggle word wrap

모든 IdM 사용자 계정을 나열하여 새 사용자 계정이 성공적으로 생성되었는지 확인할 수 있습니다.

$ ipa user-find
Copy to Clipboard Toggle word wrap

이 명령은 세부 정보가 있는 모든 사용자 계정을 나열합니다.

11.4. 명령줄을 사용하여 사용자 보존

제거하려는 경우 사용자 계정을 보존할 수 있지만 옵션을 유지하여 나중에 복원할 수 있습니다. 사용자 계정을 보존하려면 ipa user-del 또는 ipa stageuser-del 명령에 --preserve 옵션을 사용합니다.

사전 요구 사항

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. 다음 명령을 사용하여 사용자 계정을 보존합니다.

    $ ipa user-del --preserve user_login
    --------------------
    Deleted user "user_login"
    --------------------
    Copy to Clipboard Toggle word wrap
    참고

    사용자 계정이 삭제되었음을 나타내는 출력에도 불구하고 보존되었습니다.

11.5. 명령줄을 사용하여 사용자 삭제

IdM(ID 관리)을 사용하면 사용자를 영구적으로 삭제할 수 있습니다. 다음을 삭제할 수 있습니다.

  • 다음 명령을 사용하는 활성 사용자: ipa user-del
  • 다음 명령을 사용하여 사용자 준비: ipa stageuser-del
  • 다음 명령을 사용하여 사용자 보존: ipa user-del

여러 사용자를 삭제하는 경우 --continue 옵션을 사용하여 오류에 관계없이 명령이 계속되도록 합니다. 명령이 완료되면 성공 및 실패한 작업의 요약이 stdout 표준 출력 스트림에 출력됩니다.

$ ipa user-del --continue user1 user2 user3
Copy to Clipboard Toggle word wrap

--continue 를 사용하지 않는 경우 명령은 오류가 발생할 때까지 사용자 삭제를 진행합니다. 이 경우 이 명령이 중지되고 종료됩니다.

사전 요구 사항

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. 다음 명령을 사용하여 사용자 계정을 삭제합니다.

    $ ipa user-del user_login
    --------------------
    Deleted user "user_login"
    --------------------
    Copy to Clipboard Toggle word wrap

사용자 계정이 IdM에서 영구적으로 삭제되었습니다.

11.6. 명령줄을 사용하여 사용자 복원

보존된 사용자를 다음과 같이 복원할 수 있습니다.

  • 활성 사용자: ipa user-undel
  • 단계 사용자: ipa 사용자 단계

사용자 계정을 복원해도 계정의 이전 속성이 모두 복원되지는 않습니다. 예를 들어 사용자의 암호가 복원되지 않으므로 다시 설정해야 합니다.

사전 요구 사항

절차

  1. 터미널을 열고 IdM 서버에 연결합니다.
  2. 다음 명령으로 사용자 계정을 활성화합니다.

    $ ipa user-undel user_login
    ------------------------------
    Undeleted user account "user_login"
    ------------------------------
    Copy to Clipboard Toggle word wrap

    또는 사용자 계정을 스테이징된 상태로 복원할 수 있습니다.

    $ ipa user-stage user_login
    ------------------------------
    Staged user account "user_login"
    ------------------------------
    Copy to Clipboard Toggle word wrap

검증 단계

  • 모든 IdM 사용자 계정을 나열하여 새 사용자 계정이 성공적으로 생성되었는지 확인할 수 있습니다.

    $ ipa user-find
    Copy to Clipboard Toggle word wrap

    이 명령은 세부 정보가 있는 모든 사용자 계정을 나열합니다.

12장. IdM 웹 UI를 사용하여 사용자 계정 관리

IdM(Identity Management)은 다양한 사용자 라이프사이클 상황을 관리하는 데 도움이 되는 여러 단계를 제공합니다.

사용자 계정 생성

직원이 회사에서 경력을 시작하기 전에 단계 사용자 계정을 만들고 직원이 사무실에 나타나면 계정을 활성화하려는 날을 미리 준비하십시오.

이 단계를 생략하고 활성 사용자 계정을 직접 만들 수 있습니다. 절차는 stage 사용자 계정 생성과 유사합니다.

사용자 계정 활성화
직원의 첫 근무일 계정 활성화.
사용자 계정 비활성화
사용자가 몇 개월 동안 부모의 휴가 로 이동하는 경우 계정을 일시적으로 비활성화해야 합니다.
사용자 계정 활성화
사용자가 반환되면 계정을 다시 활성화해야 합니다.
사용자 계정 보존
사용자가 퇴사하려는 경우 계정이 다시 복원될 가능성이 있는 경우 나중에 회사로 돌아갈 수 있기 때문에 계정을 삭제해야 합니다.
사용자 계정 복원
2년 후 사용자가 다시 시작되어 보존된 계정을 복원해야 합니다.
사용자 계정 삭제
직원이 차감된 경우 백업없이 계정을 삭제합니다.

12.1. 사용자 라이프 사이클

IdM(Identity Management)은 다음 세 가지 사용자 계정 상태를 지원합니다.

  • 스테이징 사용자는 인증이 허용되지 않습니다. 초기 상태입니다. 활성 사용자에게 필요한 일부 사용자 계정 속성은 예를 들어 그룹 멤버십을 설정할 수 없습니다.
  • 활성 사용자는 인증을 허용합니다. 필요한 모든 사용자 계정 속성은 이 상태에서 설정해야 합니다.
  • 보존된 사용자는 비활성으로 간주되고 IdM에 인증할 수 없는 이전 활성 사용자입니다. 보존된 사용자는 활성 사용자로 보유한 계정 속성의 대부분을 유지하지만 사용자 그룹의 일부가 아닙니다.

A flow chart displaying 4 items: Active users - Stage users - Preserved users - Deleted users. Arrows communicate the relationships between each kind of user: Active users can be "preserved" as Preserved users. Preserved users can be "restored" as Active users. Preserved users can be "staged" as Stage users and Stage users can be "activated" into Active users. All users can be deleted to become "Deleted users".

IdM 데이터베이스에서 영구적으로 사용자 항목을 삭제할 수 있습니다.

중요

삭제된 사용자 계정은 복원할 수 없습니다. 사용자 계정을 삭제하면 계정과 연결된 모든 정보가 영구적으로 손실됩니다.

새 관리자는 기본 admin 사용자와 같은 관리자 권한이 있는 사용자만 만들 수 있습니다. 모든 관리자 계정을 실수로 삭제한 경우 Directory Manager에서 Directory Server에서 새 관리자를 수동으로 생성해야 합니다.

주의

admin 사용자를 삭제하지 마십시오. admin 은 IdM에 필요한 사전 정의된 사용자이므로 이 작업으로 인해 특정 명령에서 문제가 발생합니다. 대체 admin 사용자를 정의하고 사용하려는 경우 하나 이상의 다른 사용자에게 admin 권한을 부여한 후 ipa 사용자 비활성화 admin으로 사전 정의된 admin 사용자를 비활성화합니다.

주의

IdM에 로컬 사용자를 추가하지 마십시오. NSS(Name Service Switch)는 로컬 사용자 및 그룹을 확인하기 전에 항상 IdM 사용자 및 그룹을 확인합니다. 즉, IdM 그룹 멤버십은 로컬 사용자에게 작동하지 않습니다.

12.2. 웹 UI에서 사용자 추가

일반적으로 새 직원이 작동하기 전에 새 사용자 계정을 만들어야 합니다. 이러한 단계 계정에 액세스할 수 없으며 나중에 활성화해야 합니다.

참고

또는 활성 사용자 계정을 직접 만들 수도 있습니다. 활성 사용자를 추가하려면 아래 절차를 따르고 Active users (활성 사용자) 탭에 사용자 계정을 추가합니다.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.

절차

  1. IdM 웹 UI에 로그인합니다.

    자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

  2. 사용자 → 사용자 단계 탭으로 이동합니다.

    또는 사용자 → 활성 사용자에게 사용자 계정을 추가할 수도 있지만 계정에 사용자 그룹을 추가할 수는 없습니다.

  3. + Add(추가) 아이콘을 클릭합니다.
  4. Add stage user ( 단계 사용자 추가) 대화 상자에 새 사용자의 이름 및 이름을 입력합니다.
  5. [선택 사항] 사용자 로그인 필드에 로그인 이름을 추가합니다.

    비워 두면 IdM 서버에서 다음 패턴으로 로그인 이름을 생성합니다. 이름 및 성의 첫 글자. 전체 로그인 이름은 최대 32자를 가질 수 있습니다.

  6. [선택 사항] GID 드롭다운 메뉴에서 사용자가 포함해야 하는 그룹을 선택합니다.
  7. [선택 사항] Password and Verify password (암호 및 암호 확인) 필드에 암호를 입력하고 확인한 후 둘 다 일치하는지 확인합니다.
  8. Add(추가) 단추를 클릭합니다.

    Screenshot of the "Add stage user" pop-up window with the "New Password" the "Verify Password" fields filled in. The "Add" button is at the bottom left.

이때 Stage Users (사용자 단계) 테이블에 사용자 계정을 볼 수 있습니다.

Screenshot of the IdM Web UI showing user entries in the Stage Users table. This is selected from the Identity tab - the Users sub-tab - and the Stage users category listed on the left.

참고

사용자 이름을 클릭하면 전화 번호, 주소 또는 바우처 추가와 같은 고급 설정을 편집할 수 있습니다.

12.3. IdM 웹 UI에서 단계 사용자 활성화

사용자가 IdM에 로그인하기 전에 및 IdM 그룹에 사용자를 추가하기 전에 stage 사용자 계정을 활성화하려면 다음 절차를 따라야 합니다.

사전 요구 사항

  • IdM 웹 UI 또는 사용자 관리자 역할을 관리하는 관리자 권한.
  • IdM에서 하나 이상의 준비 사용자 계정.

절차

  1. IdM 웹 UI에 로그인합니다.

    자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

  2. 사용자 → 사용자 탭으로 이동합니다.
  3. 활성화하려는 사용자 계정의 확인란을 클릭합니다.
  4. Activate(활성화 ) 버튼을 클릭합니다.

    Screenshot of the IdM Web UI showing user entries in the "Stage Users" table. This is selected from the Identity tab - the Users sub-tab - and the Stage users category listed on the left.

  5. 확인 대화 상자에서 확인을 클릭합니다.

활성화에 성공하면 IdM 웹 UI에 사용자가 활성화되고 사용자 계정이 Active users 로 이동한 녹색 확인이 표시됩니다. 계정이 활성 상태이며 사용자가 IdM 도메인 및 IdM 웹 UI에 인증할 수 있습니다. 처음 로그인할 때 암호를 변경하라는 메시지가 표시됩니다.

Screenshot of the IdM Web UI showing the "staged.user" user entry in the "Active Users" table. Its status is "enabled."

참고

이 단계에서는 활성 사용자 계정을 사용자 그룹에 추가할 수 있습니다.

12.4. 웹 UI에서 사용자 계정 비활성화

활성 사용자 계정을 비활성화할 수 있습니다. 사용자 계정을 비활성화하면 계정을 비활성화하므로 사용자 계정을 사용하여 Kerberos와 같은 IdM 서비스를 인증하거나 모든 작업을 수행할 수 없습니다.

비활성화된 사용자 계정은 IdM 내에 계속 있으며 연결된 모든 정보는 변경되지 않습니다. 보존된 사용자 계정과 달리 비활성화된 사용자 계정이 활성 상태로 유지되며 사용자 그룹의 멤버가 될 수 있습니다.

참고

사용자 계정을 비활성화한 후 기존 연결은 사용자의 Kerberos TGT 및 기타 티켓이 만료될 때까지 유효합니다. 티켓이 만료되면 사용자는 이를 갱신할 수 없습니다.

사전 요구 사항

  • IdM 웹 UI 또는 사용자 관리자 역할을 관리하는 관리자 권한.

절차

  1. IdM 웹 UI에 로그인합니다.

    자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

  2. 사용자 → 활성 사용자 탭으로 이동합니다.
  3. 비활성화하려는 사용자 계정의 확인란을 클릭합니다.
  4. Disable(비활성화 ) 버튼을 클릭합니다.

    Screenshot of the "Active Users" page with a table displaying attributes for several users such as User login - First name - Last name - Status - UID - Email address - Telephone Number - Job Title. The entry for the "euser" account has been highlighted and so have the "Enable" and "Disable" buttons at the top right.

  5. Confirmation(확인 ) 대화 상자에서 OK (확인) 버튼을 클릭합니다.

비활성화 절차가 성공한 경우 Active users (활성 사용자) 테이블의 Status(상태) 열에서 확인할 수 있습니다.

Screenshot of the same "Active Users" page with the table displaying attributes for several users. The "euser" account is now greyed-out and shows "Disabled" in its "Status" column.

12.5. 웹 UI에서 사용자 계정 활성화

IdM을 사용하면 비활성화된 활성 사용자 계정을 활성화할 수 있습니다. 사용자 계정을 활성화하면 비활성화된 계정을 활성화합니다.

사전 요구 사항

  • IdM 웹 UI 또는 사용자 관리자 역할을 관리하는 관리자 권한.

절차

  1. IdM 웹 UI에 로그인합니다.
  2. 사용자 → 활성 사용자 탭으로 이동합니다.
  3. 활성화하려는 사용자 계정의 확인란을 클릭합니다.
  4. Enable 단추를 클릭합니다.

    Screenshot of the "Active Users" page with a table displaying attributes for several users such as User login - First name - Last name - Status - UID - Email address - Telephone Number - Job Title. The entry for the "euser" account has been highlighted and so have the "Enable" and "Disable" buttons at the top right.

  5. Confirmation(확인 ) 대화 상자에서 OK (확인) 버튼을 클릭합니다.

변경이 성공적으로 수행된 경우 Active users (활성 사용자) 테이블의 Status(상태) 열에서 확인할 수 있습니다.

12.6. IdM 웹 UI에서 활성 사용자 보존

사용자 계정을 보존하면 Active users 탭에서 계정을 제거할 수 있지만 이러한 계정을 IdM에 유지할 수 있습니다.

직원이 퇴사하는 경우 사용자 계정을 보존합니다. 몇 주 또는 몇 달 동안 사용자 계정을 비활성화하려면(예:임시 휴가) 계정을 비활성화하십시오. 자세한 내용은 웹 UI에서 사용자 계정 비활성화를 참조하십시오. 보존된 계정은 활성 상태가 아니므로 사용자가 내부 네트워크에 액세스하는 데 사용할 수 없지만 계정은 모든 데이터가 있는 데이터베이스에 남아 있습니다.

복원된 계정을 활성 모드로 다시 이동할 수 있습니다.

참고

보존 상태에 있는 사용자 목록은 과거 사용자 계정 기록을 제공할 수 있습니다.

사전 요구 사항

  • IdM(ID 관리) 웹 UI 또는 사용자 관리자 역할을 관리하는 관리자 권한.

절차

  1. IdM 웹 UI에 로그인합니다.

    자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

  2. 사용자 → 활성 사용자 탭으로 이동합니다.
  3. 보존할 사용자 계정의 확인란을 클릭합니다.
  4. Delete(삭제) 단추를 클릭합니다.

    A screenshot of the "Active Users" page displaying a table of users. The checkbox for the entry for the "preserved.user" account has been checked and the "Delete" button at the top is highlighted.

  5. Remove users(사용자 제거 ) 대화 상자에서 Delete mode(삭제 모드) 라디오 버튼을 전환하여 보존합니다.
  6. Delete(삭제) 단추를 클릭합니다.

    A screenshot of a pop-up window titled "Remove users." The contents say "Are you sure you want to delete selected entries?" and specifies "preserved.user" below. There is a label "Delete mode" with two radial options: "delete" and "preserve" (which is selected). There are "Delete" and "Cancel" buttons at the bottom right corner of the window.

결과적으로 사용자 계정이 보존된 사용자로 이동됩니다.

보존된 사용자를 복원해야 하는 경우 IdM 웹 UI에서 사용자 복원을 참조하십시오.

12.7. IdM 웹 UI에서 사용자 복원

IdM(Identity Management)을 사용하면 보존된 사용자 계정을 활성 상태로 다시 복원할 수 있습니다. 보존된 사용자를 활성 사용자 또는 단계 사용자로 복원할 수 있습니다.

사전 요구 사항

  • IdM 웹 UI 또는 사용자 관리자 역할을 관리하는 관리자 권한.

절차

  1. IdM 웹 UI에 로그인합니다.

    자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

  2. 사용자 → 보존된 사용자 탭으로 이동합니다.
  3. 복원할 사용자 계정에서 체크박스를 클릭합니다.
  4. Restore (복구) 버튼을 클릭합니다.

    A screenshot of the "Preserved users" page displaying a table of users and their attributes. The checkbox next to one user entry is checked and the "Restore" button at the top right is highlighted.

  5. Confirmation(확인 ) 대화 상자에서 OK (확인) 버튼을 클릭합니다.

IdM 웹 UI는 녹색 확인을 표시하고 사용자 계정을 Active users (활성 사용자) 탭으로 이동합니다.

12.8. IdM 웹 UI에서 사용자 삭제

사용자를 삭제하는 것은 되돌릴 수 없는 작업이므로 그룹 멤버십 및 암호를 포함하여 사용자 계정이 IdM 데이터베이스에서 영구적으로 삭제됩니다. 시스템 계정 및 홈 디렉터리와 같은 사용자의 외부 구성은 삭제되지 않지만 IdM을 통해 더 이상 액세스할 수 없습니다.

다음을 삭제할 수 있습니다.

  • 활성 사용자 정보 - IdM 웹 UI는 다음과 같은 옵션을 제공합니다.

  • 스테이징 사용자 - 단계 사용자를 영구적으로 삭제할 수 있습니다.
  • 보존된 사용자 - 보존된 사용자를 영구적으로 삭제할 수 있습니다.

다음 절차에서는 활성 사용자 삭제를 설명합니다. 마찬가지로 다음에서 사용자 계정을 삭제할 수 있습니다.

  • Stage users(단계 사용자 ) 탭
  • 보존된 사용자

사전 요구 사항

  • IdM 웹 UI 또는 사용자 관리자 역할을 관리하는 관리자 권한.

절차

  1. IdM 웹 UI에 로그인합니다.

    자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

  2. 사용자 → 활성 사용자 탭으로 이동합니다.

    또는 사용자 → 사용자 단계 또는 사용자 → 보존된 사용자의 사용자 계정을 삭제할 수 있습니다.

  3. Delete(삭제) 아이콘을 클릭합니다.
  4. Remove users(사용자 제거 ) 대화 상자에서 Delete mode(삭제 모드 ) 라디오 버튼을 삭제 하도록 전환합니다.
  5. Delete(삭제) 단추를 클릭합니다.

사용자 계정이 IdM에서 영구적으로 삭제되었습니다.

13장. Ansible 플레이북을 사용하여 사용자 계정 관리

Ansible 플레이북을 사용하여 IdM에서 사용자를 관리할 수 있습니다. 사용자 라이프사이클 을 제공한 후 이 장에서는 다음 작업에 Ansible 플레이북을 사용하는 방법을 설명합니다.

13.1. 사용자 라이프 사이클

IdM(Identity Management)은 다음 세 가지 사용자 계정 상태를 지원합니다.

  • 스테이징 사용자는 인증이 허용되지 않습니다. 초기 상태입니다. 활성 사용자에게 필요한 일부 사용자 계정 속성은 예를 들어 그룹 멤버십을 설정할 수 없습니다.
  • 활성 사용자는 인증을 허용합니다. 필요한 모든 사용자 계정 속성은 이 상태에서 설정해야 합니다.
  • 보존된 사용자는 비활성으로 간주되고 IdM에 인증할 수 없는 이전 활성 사용자입니다. 보존된 사용자는 활성 사용자로 보유한 계정 속성의 대부분을 유지하지만 사용자 그룹의 일부가 아닙니다.

A flow chart displaying 4 items: Active users - Stage users - Preserved users - Deleted users. Arrows communicate the relationships between each kind of user: Active users can be "preserved" as Preserved users. Preserved users can be "restored" as Active users. Preserved users can be "staged" as Stage users and Stage users can be "activated" into Active users. All users can be deleted to become "Deleted users".

IdM 데이터베이스에서 영구적으로 사용자 항목을 삭제할 수 있습니다.

중요

삭제된 사용자 계정은 복원할 수 없습니다. 사용자 계정을 삭제하면 계정과 연결된 모든 정보가 영구적으로 손실됩니다.

새 관리자는 기본 admin 사용자와 같은 관리자 권한이 있는 사용자만 만들 수 있습니다. 모든 관리자 계정을 실수로 삭제한 경우 Directory Manager에서 Directory Server에서 새 관리자를 수동으로 생성해야 합니다.

주의

admin 사용자를 삭제하지 마십시오. admin 은 IdM에 필요한 사전 정의된 사용자이므로 이 작업으로 인해 특정 명령에서 문제가 발생합니다. 대체 admin 사용자를 정의하고 사용하려는 경우 하나 이상의 다른 사용자에게 admin 권한을 부여한 후 ipa 사용자 비활성화 admin으로 사전 정의된 admin 사용자를 비활성화합니다.

주의

IdM에 로컬 사용자를 추가하지 마십시오. NSS(Name Service Switch)는 로컬 사용자 및 그룹을 확인하기 전에 항상 IdM 사용자 및 그룹을 확인합니다. 즉, IdM 그룹 멤버십은 로컬 사용자에게 작동하지 않습니다.

13.2. Ansible 플레이북을 사용하여 IdM 사용자가 있는지 확인

다음 절차에서는 Ansible 플레이북을 사용하여 IdM에 사용자가 있는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. IdM에 있는 사용자의 데이터를 사용하여 Ansible 플레이북 파일을 생성합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/user/add-user.yml 파일에서 예제를 복사하고 수정할 수 있습니다. 예를 들어 idm_user 라는 사용자를 생성하고 Password123 을 사용자 암호로 추가하려면 다음을 수행합니다.

    ---
    - name: Playbook to handle users
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Create user idm_user
        ipauser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: idm_user
          first: Alice
          last: Acme
          uid: 1000111
          gid: 10011
          phone: "+555123457"
          email: idm_user@acme.com
          passwordexpiration: "2023-01-19 23:59:59"
          password: "Password123"
          update_password: on_create
    Copy to Clipboard Toggle word wrap

    사용자를 추가하려면 다음 옵션을 사용해야 합니다.

    • name: 로그인 이름
    • first: 첫 번째 이름 문자열
    • last: 성 문자열

    사용 가능한 사용자 옵션의 전체 목록은 /usr/share/doc/ansible-freeipa/README-user.md Markdown 파일을 참조하십시오.

    참고

    update_password: on_create 옵션을 사용하는 경우 Ansible은 사용자를 생성할 때만 사용자 암호를 생성합니다. 사용자가 이미 암호를 사용하여 생성된 경우 Ansible에서 새 암호를 생성하지 않습니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-IdM-user.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  • ipa user-show 명령을 사용하여 새 사용자 계정이 IdM에 있는지 확인할 수 있습니다.

    1. admin으로 ipaserver 에 로그인합니다.

      $ ssh admin@server.idm.example.com
      Password:
      [admin@server /]$
      Copy to Clipboard Toggle word wrap
    2. 관리자용 Kerberos 티켓을 요청합니다.

      $ kinit admin
      Password for admin@IDM.EXAMPLE.COM:
      Copy to Clipboard Toggle word wrap
    3. idm_user 에 대한 정보를 요청합니다.

      $ ipa user-show idm_user
        User login: idm_user
        First name: Alice
        Last name: Acme
        ....
      Copy to Clipboard Toggle word wrap

    이름이 idm_user 인 사용자는 IdM에 있습니다.

13.3. Ansible Playbook을 사용하여 여러 IdM 사용자가 있는지 확인

다음 절차에서는 Ansible 플레이북을 사용하여 IdM에 여러 사용자가 있는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. IdM에서 확인할 사용자의 데이터로 Ansible 플레이북 파일을 생성합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/user/ensure-users-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다. 예를 들어 idm_user_1, idm_user _2 및 idm_user _3 사용자를 생성하고, Password123idm_user_1 의 암호로 추가하려면 다음을 수행합니다.

    ---
    - name: Playbook to handle users
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Create user idm_users
        ipauser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          users:
          - name: idm_user_1
            first: Alice
            last: Acme
            uid: 10001
            gid: 10011
            phone: "+555123457"
            email: idm_user@acme.com
            passwordexpiration: "2023-01-19 23:59:59"
            password: "Password123"
          - name: idm_user_2
            first: Bob
            last: Acme
            uid: 100011
            gid: 10011
          - name: idm_user_3
            first: Eve
            last: Acme
            uid: 1000111
            gid: 10011
    Copy to Clipboard Toggle word wrap
    참고

    update_password: on_create 옵션을 지정하지 않으면 Ansible은 플레이북을 실행할 때마다 사용자 암호를 다시 설정합니다. 플레이북이 마지막으로 실행된 이후 사용자가 암호를 변경한 경우 Ansible은 암호를 다시 설정합니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-users.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  • ipa user-show 명령을 사용하여 사용자 계정이 IdM에 있는지 확인할 수 있습니다.

    1. 관리자로 ipaserver 에 로그인합니다.

      $ ssh administrator@server.idm.example.com
      Password:
      [admin@server /]$
      Copy to Clipboard Toggle word wrap
    2. idm_user_1 에 대한 정보 표시:

      $ ipa user-show idm_user_1
        User login: idm_user_1
        First name: Alice
        Last name: Acme
        Password: True
        ....
      Copy to Clipboard Toggle word wrap

    IdM에 idm_user_1 이라는 사용자가 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM에 여러 사용자가 있는지 확인하는 방법을 설명합니다. 사용자는 JSON 파일에 저장됩니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 작업을 사용하여 Ansible 플레이북 파일을 생성합니다. 확인하고자 하는 사용자의 데이터로 JSON 파일을 참조합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/ensure-users-present-ymlfile.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Ensure users' presence
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Include users.json
        include_vars:
          file: users.json
    
      - name: Users present
        ipauser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          users: "{{ users }}"
    Copy to Clipboard Toggle word wrap
  3. users.json 파일을 생성하고 IdM 사용자를 추가합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/user/users.json 파일에서 예제를 복사하고 수정할 수 있습니다. 예를 들어 idm_user_1, idm_user _2 및 idm_user _3 사용자를 생성하고, Password123idm_user_1 의 암호로 추가하려면 다음을 수행합니다.

    {
      "users": [
       {
        "name": "idm_user_1",
        "first": "Alice",
        "last": "Acme",
        "password": "Password123"
       },
       {
        "name": "idm_user_2",
        "first": "Bob",
        "last": "Acme"
       },
       {
        "name": "idm_user_3",
        "first": "Eve",
        "last": "Acme"
       }
      ]
    }
    Copy to Clipboard Toggle word wrap
  4. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-users-present-jsonfile.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  • ipa user-show 명령을 사용하여 사용자 계정이 IdM에 있는지 확인할 수 있습니다.

    1. 관리자로 ipaserver 에 로그인합니다.

      $ ssh administrator@server.idm.example.com
      Password:
      [admin@server /]$
      Copy to Clipboard Toggle word wrap
    2. idm_user_1 에 대한 정보 표시:

      $ ipa user-show idm_user_1
        User login: idm_user_1
        First name: Alice
        Last name: Acme
        Password: True
        ....
      Copy to Clipboard Toggle word wrap

    IdM에 idm_user_1 이라는 사용자가 있습니다.

13.5. Ansible 플레이북을 사용하여 사용자가 없는지 확인

다음 절차에서는 Ansible 플레이북을 사용하여 특정 사용자가 IdM에 없는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. IdM에 없는 사용자로 Ansible 플레이북 파일을 생성합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/user/ensure-users-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다. 예를 들어 idm_user_1, idm_user _2 및 idm_user _3 사용자를 삭제하려면 다음을 수행합니다.

    ---
    - name: Playbook to handle users
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Delete users idm_user_1, idm_user_2, idm_user_3
        ipauser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          users:
          - name: idm_user_1
          - name: idm_user_2
          - name: idm_user_3
          state: absent
    Copy to Clipboard Toggle word wrap
  3. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/delete-users.yml
    Copy to Clipboard Toggle word wrap

검증 단계

ipa user-show 명령을 사용하여 사용자 계정이 IdM에 없는지 확인할 수 있습니다.

  1. 관리자로 ipaserver 에 로그인합니다.

    $ ssh administrator@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. idm_user_1 에 대한 정보를 요청합니다.

    $ ipa user-show idm_user_1
    ipa: ERROR: idm_user_1: user not found
    Copy to Clipboard Toggle word wrap

    이름이 idm_user_1 인 사용자는 IdM에 없습니다.

14장. IdM CLI에서 사용자 그룹 관리

이 장에서는 IdM CLI를 사용한 사용자 그룹 관리 방법을 소개합니다.

사용자 그룹은 공통 권한, 암호 정책 및 기타 특성을 가진 사용자 집합입니다.

IdM(Identity Management)의 사용자 그룹은 다음을 포함할 수 있습니다.

  • IdM 사용자
  • 기타 IdM 사용자 그룹
  • 외부 사용자 - IdM 외부에 존재하는 사용자

14.1. IdM의 다양한 그룹 유형

IdM은 다음과 같은 유형의 그룹을 지원합니다.

POSIX 그룹(기본값)

POSIX 그룹은 구성원에 대해 Linux POSIX 특성을 지원합니다. Active Directory와 상호 작용하는 그룹은 POSIX 특성을 사용할 수 없습니다.

POSIX 속성은 사용자를 별도의 엔터티로 식별합니다. 사용자와 관련된 POSIX 속성의 예로는 사용자 번호(UID)인 uidNumber 와 그룹 번호(GID)인 gidNumber 가 있습니다.

postIX 이외의 그룹

POST 이외의 그룹은 POSIX 특성을 지원하지 않습니다. 예를 들어, 이러한 그룹에는 GID가 정의되어 있지 않습니다.

이 유형의 그룹의 모든 멤버는 IdM 도메인에 속해야 합니다.

외부 그룹

외부 그룹을 사용하여 IdM 도메인 외부의 ID 저장소에 있는 그룹 구성원을 추가합니다(예:).

  • 로컬 시스템
  • Active Directory 도메인
  • 디렉터리 서비스

외부 그룹은 POSIX 특성을 지원하지 않습니다. 예를 들어, 이러한 그룹에는 GID가 정의되어 있지 않습니다.

Expand
표 14.1. 기본적으로 생성된 사용자 그룹
그룹 이름기본 그룹 멤버

ipausers

모든 IdM 사용자

admins

기본 admin 사용자를 포함하여 관리 권한이 있는 사용자

편집기

이는 더 이상 특수 권한이 없는 레거시 그룹입니다.

신뢰 관리자

Active Directory 신뢰 관리를 위한 권한이 있는 사용자

사용자를 사용자 그룹에 추가하면 사용자에게 그룹과 관련된 권한 및 정책이 부여됩니다. 예를 들어 사용자에게 관리 권한을 부여하려면 사용자를 admins 그룹에 추가합니다.

주의

admins 그룹을 삭제하지 마십시오. admins 는 IdM에 필요한 사전 정의된 그룹이므로 이 작업으로 인해 특정 명령에 문제가 발생합니다.

또한 IdM에서 새 사용자가 생성될 때마다 IdM은 기본적으로 사용자 개인 그룹을 생성합니다. 개인 그룹에 대한 자세한 내용은 개인 그룹이 없는 사용자 추가를 참조하십시오.

14.2. 직접 및 간접 그룹 구성원

IdM의 사용자 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. B 그룹이 A 그룹의 구성원이면 B 그룹의 모든 사용자는 A 그룹의 간접 구성원으로 간주됩니다.

예를 들어 다음 다이어그램에서 다음을 수행합니다.

  • User 1 및 User 2는 A 그룹의 직접 구성원입니다.
  • User 3, User 4 및 User 5는 A 그룹의 간접 구성원입니다.

그림 14.1. 직접 및 간접 그룹 멤버십

사용자 그룹 A에 대한 암호 정책을 설정하면 이 정책은 사용자 그룹 B의 모든 사용자에게도 적용됩니다.

14.3. IdM CLI를 사용하여 사용자 그룹 추가

IdM CLI를 사용하여 사용자 그룹을 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  • ipa group-add group _name 명령을 사용하여 사용자 그룹을 추가합니다. 예를 들어 group_a를 생성하려면 다음을 수행합니다.

    $ ipa group-add group_a
    ---------------------
    Added group "group_a"
    ---------------------
      Group name: group_a
      GID: 1133400009
    Copy to Clipboard Toggle word wrap

    기본적으로 ipa group-add 는 POSIX 사용자 그룹을 추가합니다. 다른 그룹 유형을 지정하려면 ipa group-add 에 옵션을 추가합니다.

    • --POSIX 이외의 그룹을 만드는 nonposix
    • 외부 그룹을 만드는 --external

      그룹 유형에 대한 자세한 내용은 IdM의 다양한 그룹 유형을 참조하십시오.

    --gid= custom_GID 옵션을 사용하여 사용자 그룹을 추가할 때 사용자 지정 GID를 지정할 수 있습니다. 이 작업을 수행하는 경우 ID 충돌을 피하십시오. 사용자 지정 GID를 지정하지 않으면 IdM에서 사용 가능한 ID 범위에서 GID를 자동으로 할당합니다.

14.4. IdM CLI를 사용하여 사용자 그룹 검색

IdM CLI를 사용하여 기존 사용자 그룹을 검색하려면 다음 절차를 따르십시오.

절차

  • ipa group-find 명령을 사용하여 모든 사용자 그룹을 표시합니다. 그룹 유형을 지정하려면 ipa group-find 에 옵션을 추가합니다.

    • ipa group-find --posix 명령을 사용하여 모든 POSIX 그룹을 표시합니다.
    • ipa group-find --nonposix 명령을 사용하여 모든 비POSIX 그룹을 표시합니다.
    • ipa group-find --external 명령을 사용하여 모든 외부 그룹을 표시합니다.

      다양한 그룹 유형에 대한 자세한 내용은 IdM의 다양한 그룹 유형을 참조하십시오.

14.5. IdM CLI를 사용하여 사용자 그룹 삭제

IdM CLI를 사용하여 사용자 그룹을 삭제하려면 다음 절차를 따르십시오. 그룹을 삭제해도 IdM에서 그룹 구성원이 삭제되지 않습니다.

사전 요구 사항

절차

  • ipa group-del group _name 명령을 사용하여 사용자 그룹을 삭제합니다. 예를 들어 group_a를 삭제하려면 다음을 수행합니다.

    $ ipa group-del group_a
    --------------------------
    Deleted group "group_a"
    --------------------------
    Copy to Clipboard Toggle word wrap

14.6. IdM CLI를 사용하여 사용자 그룹에 멤버 추가

사용자 및 사용자 그룹을 사용자 그룹의 멤버로 추가할 수 있습니다. 자세한 내용은 IdM 및 직접 및 간접 그룹 구성원의 다양한 그룹 유형을 참조하십시오. IdM CLI를 사용하여 사용자 그룹에 멤버를 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  • ipa group-add-member 명령을 사용하여 사용자 그룹에 멤버를 추가합니다.

    다음 옵션을 사용하여 멤버 유형을 지정합니다.

    • --users 는 IdM 사용자 추가
    • --external 은 IdM 도메인 외부에 있는 사용자 추가: sudoAIN \user_name 또는 user_name@domain형식으로
    • --groups 는 IdM 사용자 그룹 추가

    예를 들어 group_b를 group_a의 멤버로 추가하려면 다음을 수행합니다.

    $ ipa group-add-member group_a --groups=group_b
    Group name: group_a
    GID: 1133400009
    Member users: user_a
    Member groups: group_b
    Indirect Member users: user_b
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap

    group_b의 멤버는 이제 group_a의 간접 멤버입니다.

중요

그룹을 다른 그룹의 구성원으로 추가할 때 재귀 그룹을 만들지 마십시오. 예를 들어 그룹 A가 그룹 B의 구성원인 경우 그룹 A의 구성원으로 그룹 B를 추가하지 마십시오. 반복적인 그룹은 예측할 수 없는 동작이 발생할 수 있습니다.

참고

사용자 그룹에 멤버를 추가하고 나면 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다. 이는 지정된 호스트에서 사용자, 그룹 및 넷 그룹을 확인할 때 먼저 SSSD(System Security Services Daemon )에서 캐시를 살펴보고 서버 조회를 누락되거나 만료된 레코드에 대해서만 수행하기 때문입니다.

14.7. 사용자 개인 그룹없이 사용자 추가

기본적으로 IdM은 새 사용자가 IdM에 생성될 때마다 사용자 개인 그룹(UPG)을 생성합니다. UPG는 특정 그룹 유형입니다.

  • UPG의 이름은 새로 생성된 사용자와 동일합니다.
  • 사용자는 UPG의 유일한 멤버입니다. UPG는 다른 멤버를 포함할 수 없습니다.
  • 개인 그룹의 GID는 사용자의 UID와 일치합니다.

그러나 UPG를 생성하지 않고 사용자를 추가할 수 있습니다.

14.7.1. 사용자 개인 그룹이 없는 사용자

NIS 그룹 또는 다른 시스템 그룹이 사용자 개인 그룹에 할당되는 GID를 이미 사용하는 경우 UPG를 생성하지 않아야 합니다.

다음 두 가지 방법으로 이 작업을 수행할 수 있습니다.

두 경우 모두 IdM은 새 사용자를 추가할 때 GID를 지정해야 합니다. 그렇지 않으면 작업이 실패합니다. IdM에는 새 사용자에 대한 GID가 필요하지만 기본 사용자 그룹 ipausers 는 POSTIX 그룹이 아니므로 GID가 연결되어 있지 않기 때문입니다. 지정한 GID는 기존 그룹에 해당하지 않아도 됩니다.

참고

GID를 지정해도 새 그룹이 생성되지 않습니다. IdM에서 속성이 필요하므로 새 사용자의 GID 속성만 설정합니다.

UPG(사용자 개인 그룹)를 시스템에서 활성화된 경우에도 사용자를 만들 수 있습니다. 이를 위해서는 새 사용자에 대한 GID를 수동으로 설정해야 합니다. 이것이 필요한 이유에 대한 자세한 내용은 사용자 개인 그룹없이 사용자를 참조하십시오.

절차

  • IdM이 UPG를 생성하지 못하도록 하려면 ipa user-add 명령에 --noprivate 옵션을 추가합니다.

    명령이 성공하려면 사용자 지정 GID를 지정해야 합니다. 예를 들어 GID가 10000인 새 사용자를 추가하려면 다음을 수행합니다.

    $ ipa user-add jsmith --first=John --last=Smith --noprivate --gid 10000
    Copy to Clipboard Toggle word wrap

14.7.3. 모든 사용자에 대해 사용자 개인 그룹 전역 비활성화

사용자 개인 그룹(UPG)을 전역적으로 비활성화할 수 있습니다. 이로 인해 모든 새 사용자에 대한 UPG가 생성되지 않습니다. 기존 사용자는 이 변경의 영향을 받지 않습니다.

절차

  1. 관리자 권한을 얻습니다.

    $ kinit admin
    Copy to Clipboard Toggle word wrap
  2. IdM은 Directory Server Managed Entries 플러그인을 사용하여 UPG를 관리합니다. 플러그인 인스턴스를 나열합니다.

    $ ipa-managed-entries --list
    Copy to Clipboard Toggle word wrap
  3. IdM이 UPG를 생성하지 않도록 하려면 사용자 개인 그룹 관리를 담당하는 플러그인 인스턴스를 비활성화합니다.

    $ ipa-managed-entries -e "UPG Definition" disable
    Disabling Plugin
    Copy to Clipboard Toggle word wrap
    참고

    나중에 UPG 정의 인스턴스를 다시 활성화하려면 ipa-managed-entries -e "UPG Definition" enable 명령을 사용합니다.

  4. Directory Server를 다시 시작하여 새 구성을 로드합니다.

    $ sudo systemctl restart dirsrv.target
    Copy to Clipboard Toggle word wrap

    UPG를 비활성화한 다음 사용자를 추가하려면 GID를 지정해야 합니다. 자세한 내용은 사용자 개인 그룹이 전역적으로 비활성화된 경우 사용자 추가를 참조하십시오.

검증 단계

  • UPG가 전역적으로 비활성화되어 있는지 확인하려면 disable 명령을 다시 사용합니다.

    $ ipa-managed-entries -e "UPG Definition" disable
    Plugin already disabled
    Copy to Clipboard Toggle word wrap

14.7.4. 사용자 개인 그룹이 전역적으로 비활성화된 경우 사용자 추가

사용자 개인 그룹(UPG)이 전역적으로 비활성화되면 IdM에서 새 사용자에게 GID를 자동으로 할당하지 않습니다. 사용자를 성공적으로 추가하려면 수동으로 또는 automember 규칙을 사용하여 GID를 할당해야 합니다. 이것이 필요한 이유에 대한 자세한 내용은 사용자 개인 그룹없이 사용자를 참조하십시오.

전제 조건

절차

  • UPG를 생성할 때 새 사용자를 추가하는 것이 성공했는지 확인하려면 다음 중 하나를 선택하십시오.

    • 새 사용자를 추가할 때 사용자 지정 GID를 지정합니다. GID는 기존 사용자 그룹에 해당하지 않아도 됩니다.

      예를 들어 명령줄에서 사용자를 추가하는 경우 ipa user-add 명령에 --gid 옵션을 추가합니다.

    • automember 규칙을 사용하여 GID가 있는 기존 그룹에 사용자를 추가합니다.

IdM CLI를 사용하여 IdM 사용자 그룹에 사용자 또는 그룹을 멤버 관리자로 추가하려면 다음 절차를 따르십시오. 멤버 관리자는 IdM 사용자 그룹에 사용자 또는 그룹을 추가할 수 있지만 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

절차

  • ipa group-add-member-manager 명령을 사용하여 사용자를 IdM 사용자 그룹에 멤버 관리자로 추가합니다.

    예를 들어 사용자 testgroup_a 의 멤버 관리자로 추가하려면 다음을 수행합니다.

    $ ipa group-add-member-manager group_a --users=test
    Group name: group_a
    GID: 1133400009
    Membership managed by users: test
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap

    사용자 테스트는 이제 group_a 의 멤버를 관리할 수 있습니다.

  • ipa group-add-member-manager 명령을 사용하여 그룹을 IdM 사용자 그룹에 멤버 관리자로 추가합니다.

    예를 들어 group _admins 그룹을 group_ a 의 멤버 관리자로 추가하려면 :

    $ ipa group-add-member-manager group_a --groups=group_admins
    Group name: group_a
    GID: 1133400009
    Membership managed by groups: group_admins
    Membership managed by users: test
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap

    group_admins 그룹이 이제 group_a 의 멤버를 관리할 수 있습니다.

참고

사용자 그룹에 멤버 관리자를 추가한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • ipa group-show 명령을 사용하여 사용자와 그룹이 멤버 관리자로 추가되었는지 확인합니다.

    $ ipa group-show group_a
    Group name: group_a
    GID: 1133400009
    Membership managed by groups: group_admins
    Membership managed by users: test
    Copy to Clipboard Toggle word wrap

14.9. IdM CLI를 사용하여 그룹 멤버 보기

IdM CLI를 사용하여 그룹의 멤버를 보려면 다음 절차를 따르십시오. 직접 및 간접 그룹 구성원을 모두 볼 수 있습니다. 자세한 내용은 직접 및 간접 그룹 구성원을 참조하십시오.

절차:

  • 그룹의 구성원을 나열하려면 ipa group-show group_name 명령을 사용합니다. 예를 들면 다음과 같습니다.

    $ ipa group-show group_a
      ...
      Member users: user_a
      Member groups: group_b
      Indirect Member users: user_b
    Copy to Clipboard Toggle word wrap
    참고

    간접 구성원 목록에는 신뢰할 수 있는 Active Directory 도메인의 외부 사용자가 포함되지 않습니다. Active Directory 신뢰 사용자 오브젝트는 Identity Management 내에 LDAP 오브젝트로 존재하지 않기 때문에 ID 관리 인터페이스에 표시되지 않습니다.

14.10. IdM CLI를 사용하여 사용자 그룹에서 멤버 제거

IdM CLI를 사용하여 사용자 그룹에서 멤버를 제거하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. 선택 사항: ipa group-show 명령을 사용하여 그룹에 제거할 멤버가 포함되어 있는지 확인합니다.
  2. ipa group-remove-member 명령을 사용하여 사용자 그룹에서 멤버를 제거합니다.

    다음 옵션을 사용하여 제거할 멤버를 지정합니다.

    • --users 는 IdM 사용자를 제거합니다
    • --external 은 pamAIN \user_name 또는 user_name@domain 형식으로 IdM 도메인 외부에 있는 사용자를 제거합니다.
    • --groups 는 IdM 사용자 그룹을 제거합니다

    예를 들어 group _name 이라는 그룹에서 user1, user2group1 을 제거하려면 다음을 수행합니다.

    $ ipa group-remove-member group_name --users=user1 --users=user2 --groups=group1
    Copy to Clipboard Toggle word wrap

IdM CLI를 사용하여 IdM 사용자 그룹에서 멤버 관리자로 사용자 또는 그룹을 제거하려면 다음 절차를 따르십시오. 멤버 관리자는 IdM 사용자 그룹에서 사용자 또는 그룹을 제거할 수 있지만 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

절차

  • ipa group-remove-member-manager 명령을 사용하여 IdM 사용자 그룹의 멤버 관리자로 사용자를 제거합니다.

    예를 들어 user testgroup_a 의 멤버 관리자로 제거하려면 다음을 수행합니다.

    $ ipa group-remove-member-manager group_a --users=test
    Group name: group_a
    GID: 1133400009
    Membership managed by groups: group_admins
    ---------------------------
    Number of members removed 1
    ---------------------------
    Copy to Clipboard Toggle word wrap

    사용자 테스트는 더 이상 group_a 의 구성원을 관리할 수 없습니다.

  • ipa group-remove-member-manager 명령을 사용하여 IdM 사용자 그룹의 멤버 관리자로 그룹을 제거합니다.

    예를 들어 group _admins 그룹을 group_ a 의 멤버 관리자로 제거하려면 다음을 수행합니다.

    $ ipa group-remove-member-manager group_a --groups=group_admins
    Group name: group_a
    GID: 1133400009
    ---------------------------
    Number of members removed 1
    ---------------------------
    Copy to Clipboard Toggle word wrap

    그룹 group_admins는 더 이상 group_a 의 구성원을 관리할 수 없습니다.

참고

사용자 그룹에서 멤버 관리자를 제거한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • ipa group-show 명령을 사용하여 사용자와 그룹이 멤버 관리자로 제거되었는지 확인합니다.

    $ ipa group-show group_a
    Group name: group_a
    GID: 1133400009
    Copy to Clipboard Toggle word wrap

14.12. IdM에서 로컬 및 원격 그룹에 대한 그룹 병합 활성화

그룹은 IdM(Identity Management) 또는 AD(Active Directory)와 같은 도메인에서 제공하거나 etc/group 파일의 로컬 시스템에서 관리합니다. 대부분의 경우 사용자는 중앙 집중식 관리 저장소에 의존합니다. 그러나 경우에 따라 소프트웨어는 액세스 제어를 관리하기 위해 알려진 그룹의 멤버십을 사용합니다.

도메인 컨트롤러와 로컬 etc/그룹 파일에서 그룹을 관리하려면 그룹 병합을 활성화할 수 있습니다. nsswitch.conf 파일을 구성하여 로컬 파일과 원격 서비스를 모두 확인할 수 있습니다. 그룹이 둘 다 표시되면 멤버 사용자 목록이 결합되고 단일 응답으로 반환됩니다.

아래 단계에서는 idmuser 사용자에 대해 그룹 병합을 활성화하는 방법을 설명합니다.

절차

  1. /etc/nsswitch.conf 파일에 [SUCCESS=merge] 를 추가합니다.

    # Allow initgroups to default to the setting for group.
    initgroups: sss [SUCCESS=merge] files
    Copy to Clipboard Toggle word wrap
  2. IdM에 idmuser 를 추가합니다.

    # ipa user-add idmuser
    First name: idm
    Last name: user
    ---------------------
    Added user "idmuser"
    ---------------------
    User login: idmuser
    First name: idm
    Last name: user
    Full name: idm user
    Display name: idm user
    Initials: tu
    Home directory: /home/idmuser
    GECOS: idm user
    Login shell: /bin/sh
    Principal name: idmuser@IPA.TEST
    Principal alias: idmuser@IPA.TEST
    Email address: idmuser@ipa.test
    UID: 19000024
    GID: 19000024
    Password: False
    Member of groups: ipausers
    Kerberos keys available: False
    Copy to Clipboard Toggle word wrap
  3. 로컬 오디오 그룹의 GID를 확인합니다.

    $ getent group audio
    ---------------------
    audio:x:63
    Copy to Clipboard Toggle word wrap
  4. IdM에 그룹 오디오를 추가합니다.

    $ ipa group-add audio --gid 63
    -------------------
    Added group "audio"
    -------------------
    Group name: audio
    GID: 63
    Copy to Clipboard Toggle word wrap
    참고

    IdM에 오디오 그룹을 추가할 때 정의한 GID는 로컬 오디오 그룹의 GID와 동일해야 합니다.

  5. IdM 오디오 그룹에 idmuser 사용자를 추가합니다.

    $ ipa group-add-member audio --users=idmuser
    Group name: audio
    GID: 63
    Member users: idmuser
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap

검증

  1. idmuser 로 로그인합니다.
  2. idmuser 가 세션에 로컬 그룹이 있는지 확인합니다.

    $ id idmuser
    uid=1867800003(idmuser) gid=1867800003(idmuser) groups=1867800003(idmuser),63(audio),10(wheel)
    Copy to Clipboard Toggle word wrap

ansible-freeipa 그룹idoverrideuser 모듈을 사용하여 IdM 클라이언트에서 로컬 오디오 그룹의 IdM(Identity Management) 또는 AD(Active Directory) 사용자를 만들 수 있습니다. 이렇게 하면 IdM 또는 AD 사용자에게 호스트의 사운드 카드에 대한 액세스 권한이 부여됩니다. 이 절차에서는 첫 번째 플레이북 작업에 aduser@addomain.com ID 덮어쓰기가 추가된 Default Trust View ID 뷰의 예를 사용합니다. 다음 플레이북 작업에서는 RHEL 호스트의 로컬 오디오 그룹의 GID에 해당하는 63의 GID를 사용하여 IdM에서 오디오 그룹이 생성됩니다. 동시에 aduser@addomain.com ID 덮어쓰기가 IdM 오디오 그룹에 멤버로 추가됩니다.

사전 요구 사항

  • 절차의 첫 번째 부분을 수행할 IdM 클라이언트에 대한 루트 액세스 권한이 있습니다. 이 예에서는 client.idm.example.com 입니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • RHEL 8.10 이상을 사용하고 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • AD 포리스트는 IdM을 신뢰하고 있습니다. 이 예에서 AD 도메인 이름은 addomain.com 이고 로컬 오디오 그룹에 있는 AD 사용자의 FQDN(정규화된 도메인 이름)은 aduser@addomain.com 입니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. client.idm.example.com 에서 [SUCCESS=merge]/etc/nsswitch.conf 파일에 추가합니다.

    [...]
    # Allow initgroups to default to the setting for group.
    initgroups: sss [SUCCESS=merge] files
    Copy to Clipboard Toggle word wrap
  2. 로컬 오디오 그룹의 GID를 식별합니다.

    $ getent group audio
    ---------------------
    audio:x:63
    Copy to Clipboard Toggle word wrap
  3. Ansible 제어 노드에서 작업과 함께 add-aduser-to- audio-group.yml 플레이북을 생성하여 aduser@addomain.com 사용자를 기본 신뢰 뷰에 추가합니다.

    ---
    - name: Playbook to manage idoverrideuser
      hosts: ipaserver
      become: false
    
      tasks:
      - name: Add aduser@addomain.com user to the Default Trust View
        ipaidoverrideuser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          idview: "Default Trust View"
          anchor: aduser@addomain.com
    Copy to Clipboard Toggle word wrap
  4. 동일한 플레이북에서 다른 플레이북 작업을 사용하여 GID 가 63인 IdM에 그룹 오디오를 추가합니다. aduser idoverrideuser를 그룹에 추가합니다.

      - name: Add the audio group with the aduser member and GID of 63
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: audio
          idoverrideuser:
          - aduser@addomain.com
          gidnumber: 63
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory add-aduser-to-audio-group.yml
    Copy to Clipboard Toggle word wrap

검증

  1. AD 사용자로 IdM 클라이언트에 로그인합니다.

    $ ssh aduser@addomain.com@client.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. AD 사용자의 그룹 멤버십을 확인합니다.

    $ id aduser@addomain.com
    uid=702801456(aduser@addomain.com) gid=63(audio) groups=63(audio)
    Copy to Clipboard Toggle word wrap

15장. IdM 웹 UI에서 사용자 그룹 관리

이 장에서는 IdM 웹 UI를 사용한 사용자 그룹 관리에 대해 소개합니다.

사용자 그룹은 공통 권한, 암호 정책 및 기타 특성을 가진 사용자 집합입니다.

IdM(Identity Management)의 사용자 그룹은 다음을 포함할 수 있습니다.

  • IdM 사용자
  • 기타 IdM 사용자 그룹
  • 외부 사용자 - IdM 외부에 존재하는 사용자

15.1. IdM의 다양한 그룹 유형

IdM은 다음과 같은 유형의 그룹을 지원합니다.

POSIX 그룹(기본값)

POSIX 그룹은 구성원에 대해 Linux POSIX 특성을 지원합니다. Active Directory와 상호 작용하는 그룹은 POSIX 특성을 사용할 수 없습니다.

POSIX 속성은 사용자를 별도의 엔터티로 식별합니다. 사용자와 관련된 POSIX 속성의 예로는 사용자 번호(UID)인 uidNumber 와 그룹 번호(GID)인 gidNumber 가 있습니다.

postIX 이외의 그룹

POST 이외의 그룹은 POSIX 특성을 지원하지 않습니다. 예를 들어, 이러한 그룹에는 GID가 정의되어 있지 않습니다.

이 유형의 그룹의 모든 멤버는 IdM 도메인에 속해야 합니다.

외부 그룹

외부 그룹을 사용하여 IdM 도메인 외부의 ID 저장소에 있는 그룹 구성원을 추가합니다(예:).

  • 로컬 시스템
  • Active Directory 도메인
  • 디렉터리 서비스

외부 그룹은 POSIX 특성을 지원하지 않습니다. 예를 들어, 이러한 그룹에는 GID가 정의되어 있지 않습니다.

Expand
표 15.1. 기본적으로 생성된 사용자 그룹
그룹 이름기본 그룹 멤버

ipausers

모든 IdM 사용자

admins

기본 admin 사용자를 포함하여 관리 권한이 있는 사용자

편집기

이는 더 이상 특수 권한이 없는 레거시 그룹입니다.

신뢰 관리자

Active Directory 신뢰 관리를 위한 권한이 있는 사용자

사용자를 사용자 그룹에 추가하면 사용자에게 그룹과 관련된 권한 및 정책이 부여됩니다. 예를 들어 사용자에게 관리 권한을 부여하려면 사용자를 admins 그룹에 추가합니다.

주의

admins 그룹을 삭제하지 마십시오. admins 는 IdM에 필요한 사전 정의된 그룹이므로 이 작업으로 인해 특정 명령에 문제가 발생합니다.

또한 IdM에서 새 사용자가 생성될 때마다 IdM은 기본적으로 사용자 개인 그룹을 생성합니다. 개인 그룹에 대한 자세한 내용은 개인 그룹이 없는 사용자 추가를 참조하십시오.

15.2. 직접 및 간접 그룹 구성원

IdM의 사용자 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. B 그룹이 A 그룹의 구성원이면 B 그룹의 모든 사용자는 A 그룹의 간접 구성원으로 간주됩니다.

예를 들어 다음 다이어그램에서 다음을 수행합니다.

  • User 1 및 User 2는 A 그룹의 직접 구성원입니다.
  • User 3, User 4 및 User 5는 A 그룹의 간접 구성원입니다.

그림 15.1. 직접 및 간접 그룹 멤버십

사용자 그룹 A에 대한 암호 정책을 설정하면 이 정책은 사용자 그룹 B의 모든 사용자에게도 적용됩니다.

15.3. IdM 웹 UI를 사용하여 사용자 그룹 추가

IdM 웹 UI를 사용하여 사용자 그룹을 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.

절차

  1. ID → 그룹을 클릭하고 왼쪽 사이드바 에서 사용자 그룹을 선택합니다.
  2. Add(추가) 를 클릭하여 그룹 추가를 시작합니다.
  3. 그룹에 대한 정보를 입력합니다. 사용자 그룹 유형에 대한 자세한 내용은 IdM의 다양한 그룹 유형에서 참조하십시오.

    그룹에 대한 사용자 지정 GID를 지정할 수 있습니다. 이 작업을 수행하는 경우 ID 충돌을 피하십시오. 사용자 지정 GID를 지정하지 않으면 IdM에서 사용 가능한 ID 범위에서 GID를 자동으로 할당합니다.

  4. Add(추가) 를 클릭하여 확인합니다.

15.4. IdM 웹 UI를 사용하여 사용자 그룹 삭제

IdM 웹 UI를 사용하여 사용자 그룹을 삭제하려면 다음 절차를 따르십시오. 그룹을 삭제해도 IdM에서 그룹 구성원이 삭제되지 않습니다.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.

절차

  1. ID → 그룹을 클릭하고 사용자 그룹을 선택합니다.
  2. 삭제할 그룹을 선택합니다.
  3. 삭제를 클릭합니다.
  4. Delete(삭제) 를 클릭하여 확인합니다.

15.5. IdM 웹 UI를 사용하여 사용자 그룹에 멤버 추가

사용자 및 사용자 그룹을 사용자 그룹의 멤버로 추가할 수 있습니다. 자세한 내용은 IdM 및 직접 및 간접 그룹 구성원의 다양한 그룹 유형을 참조하십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.

절차

  1. ID → 그룹을 클릭하고 왼쪽 사이드바 에서 사용자 그룹을 선택합니다.
  2. 그룹의 이름을 클릭합니다.
  3. 추가할 그룹 구성원 유형을 선택합니다. 사용자, 사용자 그룹 또는 외부.

  4. 추가를 클릭합니다.
  5. 추가할 구성원 하나 이상 옆에 있는 확인란을 선택합니다.
  6. 오른쪽 화살표를 클릭하여 선택한 구성원을 그룹으로 이동합니다.

  7. Add(추가) 를 클릭하여 확인합니다.

웹 UI를 사용하여 IdM 사용자 그룹에 사용자 또는 그룹을 멤버 관리자로 추가하려면 다음 절차를 따르십시오. 멤버 관리자는 IdM 사용자 그룹에 사용자 또는 그룹을 추가할 수 있지만 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • 멤버 관리자로 추가하려는 사용자 또는 그룹의 이름과 관리하려는 그룹의 이름이 있어야 합니다.

절차

  1. ID → 그룹을 클릭하고 왼쪽 사이드바 에서 사용자 그룹을 선택합니다.
  2. 그룹의 이름을 클릭합니다.
  3. 추가할 그룹 멤버 관리자 유형을 선택합니다. 사용자 또는 사용자 그룹.

  4. 추가를 클릭합니다.
  5. 추가할 구성원 하나 이상 옆에 있는 확인란을 선택합니다.
  6. 오른쪽 화살표를 클릭하여 선택한 구성원을 그룹으로 이동합니다.

  7. Add(추가) 를 클릭하여 확인합니다.
참고

사용자 그룹에 멤버 관리자를 추가한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • 새로 추가된 사용자 또는 사용자 그룹이 사용자 또는 사용자 그룹의 멤버 관리자 목록에 추가되었는지 확인합니다.

15.7. IdM 웹 UI를 사용하여 그룹 구성원 보기

IdM 웹 UI를 사용하여 그룹의 멤버를 보려면 다음 절차를 따르십시오. 직접 및 간접 그룹 구성원을 모두 볼 수 있습니다. 자세한 내용은 직접 및 간접 그룹 구성원을 참조하십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.

절차

  1. ID → 그룹을 선택합니다.
  2. 왼쪽 사이드바에서 User Groups 를 선택합니다.
  3. 보려는 그룹의 이름을 클릭합니다.
  4. Direct MembershipIndirect Membership 간에 전환합니다.

15.8. IdM 웹 UI를 사용하여 사용자 그룹에서 멤버 제거

IdM Web UI를 사용하여 사용자 그룹에서 멤버를 제거하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.

절차

  1. ID → 그룹을 클릭하고 왼쪽 사이드바 에서 사용자 그룹을 선택합니다.
  2. 그룹의 이름을 클릭합니다.
  3. 삭제할 그룹 구성원 유형을 선택합니다. 사용자, 사용자 그룹 또는 외부.

  4. 제거할 멤버 옆에 있는 확인란을 선택합니다.
  5. 삭제를 클릭합니다.
  6. Delete(삭제) 를 클릭하여 확인합니다.

웹 UI를 사용하여 IdM 사용자 그룹에서 멤버 관리자로 사용자 또는 그룹을 제거하려면 다음 절차를 따르십시오. 멤버 관리자는 IdM 사용자 그룹에서 사용자 또는 그룹을 제거할 수 있지만 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • 제거 중인 기존 멤버 관리자 사용자 또는 그룹의 이름과 관리 중인 그룹의 이름이 있어야 합니다.

절차

  1. ID → 그룹을 클릭하고 왼쪽 사이드바 에서 사용자 그룹을 선택합니다.
  2. 그룹의 이름을 클릭합니다.
  3. 삭제할 멤버 관리자 유형을 선택합니다. 사용자 또는 사용자 그룹.

  4. 제거할 멤버 관리자 옆의 확인란을 선택합니다.
  5. 삭제를 클릭합니다.
  6. Delete(삭제) 를 클릭하여 확인합니다.
참고

사용자 그룹에서 멤버 관리자를 제거한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • 사용자 또는 사용자 그룹의 멤버 관리자 목록에서 사용자 또는 사용자 그룹이 제거되었는지 확인합니다.

16장. Ansible 플레이북을 사용하여 사용자 그룹 관리

이 섹션에서는 Ansible 플레이북을 사용하여 사용자 그룹 관리를 소개합니다.

사용자 그룹은 공통 권한, 암호 정책 및 기타 특성을 가진 사용자 집합입니다.

IdM(Identity Management)의 사용자 그룹은 다음을 포함할 수 있습니다.

  • IdM 사용자
  • 기타 IdM 사용자 그룹
  • 외부 사용자 - IdM 외부에 존재하는 사용자

섹션에는 다음 항목이 포함되어 있습니다.

16.1. IdM의 다양한 그룹 유형

IdM은 다음과 같은 유형의 그룹을 지원합니다.

POSIX 그룹(기본값)

POSIX 그룹은 구성원에 대해 Linux POSIX 특성을 지원합니다. Active Directory와 상호 작용하는 그룹은 POSIX 특성을 사용할 수 없습니다.

POSIX 속성은 사용자를 별도의 엔터티로 식별합니다. 사용자와 관련된 POSIX 속성의 예로는 사용자 번호(UID)인 uidNumber 와 그룹 번호(GID)인 gidNumber 가 있습니다.

postIX 이외의 그룹

POST 이외의 그룹은 POSIX 특성을 지원하지 않습니다. 예를 들어, 이러한 그룹에는 GID가 정의되어 있지 않습니다.

이 유형의 그룹의 모든 멤버는 IdM 도메인에 속해야 합니다.

외부 그룹

외부 그룹을 사용하여 IdM 도메인 외부의 ID 저장소에 있는 그룹 구성원을 추가합니다(예:).

  • 로컬 시스템
  • Active Directory 도메인
  • 디렉터리 서비스

외부 그룹은 POSIX 특성을 지원하지 않습니다. 예를 들어, 이러한 그룹에는 GID가 정의되어 있지 않습니다.

Expand
표 16.1. 기본적으로 생성된 사용자 그룹
그룹 이름기본 그룹 멤버

ipausers

모든 IdM 사용자

admins

기본 admin 사용자를 포함하여 관리 권한이 있는 사용자

편집기

이는 더 이상 특수 권한이 없는 레거시 그룹입니다.

신뢰 관리자

Active Directory 신뢰 관리를 위한 권한이 있는 사용자

사용자를 사용자 그룹에 추가하면 사용자에게 그룹과 관련된 권한 및 정책이 부여됩니다. 예를 들어 사용자에게 관리 권한을 부여하려면 사용자를 admins 그룹에 추가합니다.

주의

admins 그룹을 삭제하지 마십시오. admins 는 IdM에 필요한 사전 정의된 그룹이므로 이 작업으로 인해 특정 명령에 문제가 발생합니다.

또한 IdM에서 새 사용자가 생성될 때마다 IdM은 기본적으로 사용자 개인 그룹을 생성합니다. 개인 그룹에 대한 자세한 내용은 개인 그룹이 없는 사용자 추가를 참조하십시오.

16.2. 직접 및 간접 그룹 구성원

IdM의 사용자 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. B 그룹이 A 그룹의 구성원이면 B 그룹의 모든 사용자는 A 그룹의 간접 구성원으로 간주됩니다.

예를 들어 다음 다이어그램에서 다음을 수행합니다.

  • User 1 및 User 2는 A 그룹의 직접 구성원입니다.
  • User 3, User 4 및 User 5는 A 그룹의 간접 구성원입니다.

그림 16.1. 직접 및 간접 그룹 멤버십

사용자 그룹 A에 대한 암호 정책을 설정하면 이 정책은 사용자 그룹 B의 모든 사용자에게도 적용됩니다.

16.3. Ansible Playbook을 사용하여 IdM 그룹 및 그룹 구성원이 있는지 확인

다음 절차에서는 사용자 및 사용자 그룹 모두 Ansible 플레이북을 사용하여 IdM 그룹 및 그룹 구성원이 있는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • Ansible 플레이북에서 참조하려는 사용자는 IdM에 있습니다. Ansible을 사용하여 사용자가 있는지 확인하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 사용자 계정 관리를 참조하십시오.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 사용자 및 그룹 정보를 사용하여 Ansible 플레이북 파일을 생성합니다.

    ---
    - name: Playbook to handle groups
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Create group ops with gid 1234
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: ops
          gidnumber: 1234
    
      - name: Create group sysops
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: sysops
          user:
          - idm_user
    
      - name: Create group appops
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: appops
    
      - name: Add group members sysops and appops to group ops
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: ops
          group:
          - sysops
          - appops
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-group-members.yml
    Copy to Clipboard Toggle word wrap

검증 단계

ipa group-show 명령을 사용하여 ops 그룹에 sysopsappops 가 직접 멤버로 포함되고 idm_user 가 간접 구성원으로 포함되어 있는지 확인할 수 있습니다.

  1. 관리자로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. ops 에 대한 정보를 표시합니다 :

    ipaserver]$ ipa group-show ops
      Group name: ops
      GID: 1234
      Member groups: sysops, appops
      Indirect Member users: idm_user
    Copy to Clipboard Toggle word wrap

    appopssysops 그룹 - idm_user 사용자를 포함하는 후자는 IdM에 있습니다.

16.4. Ansible을 사용하여 단일 작업에 여러 IdM 그룹 추가

ansible-freeipa ipagroup 모듈을 사용하여 단일 Ansible 작업으로 여러 IdM(Identity Management) 사용자 그룹을 추가, 수정, 삭제할 수 있습니다. 이를 위해 ipagroup 모듈의 groups 옵션을 사용합니다.

groups 옵션을 사용하여 특정 그룹에만 적용되는 그룹 변수를 여러 개 지정할 수도 있습니다. groups 옵션의 유일한 필수 변수인 name 변수로 이 그룹을 정의합니다.

단일 작업에서 IdM에 sysopsappops 그룹이 있는지 확인하려면 다음 절차를 완료합니다. sysops 그룹을 비posix 그룹으로 정의하고 appops 그룹을 외부 그룹으로 정의합니다.

사전 요구 사항

  • 제어 노드에서 다음을 수행합니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • ansible-freeipa 패키지가 설치되어 있습니다.
    • ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
    • RHEL 8.9 이상을 사용하고 있습니다.
    • ipaadmin_passwordsecret.yml Ansible 자격 증명에 저장했습니다.

절차

  1. 다음 콘텐츠를 사용하여 Ansible 플레이북 파일 add-nonposix-and-external-groups.yml 을 생성합니다.

    ---
    - name: Playbook to add nonposix and external groups
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
      - name: Add nonposix group sysops and external group appops
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          groups:
          - name: sysops
            nonposix: true
          - name: appops
            external: true
    Copy to Clipboard Toggle word wrap
  2. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/add-nonposix-and-external-groups.yml
    Copy to Clipboard Toggle word wrap

16.5. Ansible을 사용하여 AD 사용자가 IdM 관리 가능

Ansible 플레이북을 사용하여 사용자 ID 덮어쓰기가 IdM(Identity Management) 그룹에 있는지 확인하려면 다음 절차를 따르십시오. AD에 대한 트러스트를 설정한 후 기본 신뢰 보기에서 만든 AD(Active Directory) 사용자를 재정의합니다. 플레이북을 실행하면 AD 사용자와 같은 AD 사용자가 두 개의 다른 계정과 암호 없이 IdM을 완전히 관리할 수 있습니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • AD에 대한 트러스트를 설치했습니다.
  • AD 사용자의 사용자 ID 재정의는 IdM에 이미 있습니다. 그렇지 않은 경우 ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com 명령을 사용하여 생성합니다.
  • 사용자 ID 재정의를 추가하는 그룹이 IdM에 이미 있습니다.
  • IdM 이상의 4.8.7 버전을 사용하고 있습니다. 서버에 설치된 IdM 버전을 보려면 ipa --version 을 입력합니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. 다음 콘텐츠를 사용하여 add-useridoverride-to-group.yml 플레이북을 생성합니다.

    ---
    - name: Playbook to ensure presence of users in a group
      hosts: ipaserver
    
    
      - name: Ensure the ad_user@ad.example.com user ID override is a member of the admins group:
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: admins
          idoverrideuser:
          - ad_user@ad.example.com
    Copy to Clipboard Toggle word wrap

    예에서는 다음을 수행합니다.

    • Secret123은 IdM 관리자 암호입니다.
    • 관리자는 ad_user@ad.example.com ID 덮어쓰기를 추가하는 IdM POSIX 그룹의 이름입니다. 이 그룹의 멤버는 전체 관리자 권한이 있습니다.
    • ad_user@ad.example.com 은 AD 관리자의 사용자 ID 덮어쓰기입니다. 사용자가 신뢰가 설정된 AD 도메인에 저장됩니다.
  3. 파일을 저장합니다.
  4. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory add-useridoverride-to-group.yml
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 사용자 및 사용자 그룹 모두 IdM 멤버 관리자가 있는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 멤버 관리자로 추가하려는 사용자 또는 그룹의 이름과 관리하려는 그룹의 이름이 있어야 합니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 사용자 및 그룹 구성원 관리 정보를 사용하여 Ansible 플레이북 파일을 생성합니다.

    ---
    - name: Playbook to handle membership management
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure user test is present for group_a
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: group_a
          membermanager_user: test
    
      - name: Ensure group_admins is present for group_a
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: group_a
          membermanager_group: group_admins
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-user-groups.yml
    Copy to Clipboard Toggle word wrap

검증 단계

ipa group-show 명령을 사용하여 group_a 그룹에 test 가 구성원 관리자로 포함되어 있고 group_adminsgroup_a 의 멤버 관리자인지 확인할 수 있습니다.

  1. 관리자로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. managergroup1 에 대한 정보 표시 :

    ipaserver]$ ipa group-show group_a
      Group name: group_a
      GID: 1133400009
      Membership managed by groups: group_admins
      Membership managed by users: test
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 IdM 멤버 관리자(사용자 및 사용자 그룹 모두)가 없는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 제거 중인 기존 멤버 관리자 사용자 또는 그룹의 이름과 관리 중인 그룹의 이름이 있어야 합니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 사용자 및 그룹 구성원 관리 정보를 사용하여 Ansible 플레이북 파일을 생성합니다.

    ---
    - name: Playbook to handle membership management
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure member manager user and group members are absent for group_a
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: group_a
          membermanager_user: test
          membermanager_group: group_admins
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-are-absent.yml
    Copy to Clipboard Toggle word wrap

검증 단계

ipa group-show 명령을 사용하여 group_a 그룹에 test 가 구성원 관리자로 포함되어 있지 않은지, group_adminsgroup_a 의 멤버 관리자로 포함되어 있지 않은지 확인할 수 있습니다.

  1. 관리자로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. group_a에 대한 정보를 표시합니다.

    ipaserver]$ ipa group-show group_a
      Group name: group_a
      GID: 1133400009
    Copy to Clipboard Toggle word wrap

17장. IdM CLI를 사용하여 그룹 멤버십 자동화

자동 그룹 멤버십을 사용하면 속성에 따라 자동으로 사용자와 호스트를 그룹에 할당할 수 있습니다. 예를 들면 다음을 수행할 수 있습니다.

  • 직원 관리자, 위치 또는 기타 특성에 따라 직원의 사용자 항목을 그룹으로 나눕니다.
  • 클래스, 위치 또는 기타 특성을 기반으로 호스트를 나눕니다.
  • 모든 사용자 또는 모든 호스트를 하나의 글로벌 그룹에 추가합니다.

이 장에서는 다음 주제를 다룹니다.

17.1. 자동 그룹 멤버십의 이점

사용자에 대한 자동 멤버십을 사용하면 다음을 수행할 수 있습니다.

  • 그룹 멤버십을 수동으로 관리하는 오버헤드 감소

    더 이상 모든 사용자와 호스트를 수동으로 그룹에 할당할 필요가 없습니다.

  • 사용자 및 호스트 관리의 일관성 개선

    사용자와 호스트는 엄격하게 정의되고 자동으로 평가된 기준에 따라 그룹에 할당됩니다.

  • 그룹 기반 설정 관리 간소화

    그룹에 대해 다양한 설정이 정의되고 개별 그룹 구성원에 적용됩니다(예: sudo 규칙, 자동 마운트 또는 액세스 제어). 사용자와 호스트를 그룹에 추가하면 이러한 설정을 자동으로 관리하기가 쉬워집니다.

17.2. 자동 구성원 규칙

자동 그룹 멤버십을 구성할 때 관리자는 automember 규칙을 정의합니다. automember 규칙은 특정 사용자 또는 호스트 대상 그룹에 적용됩니다. 한 번에 둘 이상의 그룹에 적용할 수 없습니다.

규칙을 생성한 후에는 관리자가 조건을 추가합니다. 대상 그룹에서 포함하거나 제외되는 사용자 또는 호스트를 지정합니다.

  • 포함 조건

    사용자 또는 호스트 항목이 포함 조건을 충족하면 대상 그룹에 포함됩니다.

  • 배타적 조건

    사용자 또는 호스트 항목이 독점 조건을 충족하면 대상 그룹에 포함되지 않습니다.

조건은 Perl 호환 정규 표현식(PCRE) 형식으로 정규 표현식으로 지정됩니다. PCRE에 대한 자세한 내용은 pcresyntax Cryostat 매뉴얼 페이지를 참조하십시오.

참고

IdM은 포함 조건보다 먼저 배타적 조건을 평가합니다. 충돌이 발생하는 경우 독점 조건이 포함된 조건보다 우선합니다.

automember 규칙은 향후 생성된 모든 항목에 적용됩니다. 이러한 항목은 지정된 대상 그룹에 자동으로 추가됩니다. 항목이 여러 automember 규칙에 지정된 조건을 충족하면 모든 해당 그룹에 추가됩니다.

기존 항목은 새 규칙의 영향을 받지 않습니다. 기존 항목을 변경하려면 IdM CLI를 사용하여 기존 항목에 자동 구성원 규칙 적용을 참조하십시오.

17.3. IdM CLI를 사용하여 자동 구성원 규칙 추가

IdM CLI를 사용하여 automember 규칙을 추가하려면 다음 절차를 따르십시오. 자동 구성원 규칙에 대한 자세한 내용은 Automember rules 을 참조하십시오.

automember 규칙을 추가한 후에는 automember 규칙에 조건 추가에 설명된 절차를 사용하여 조건을 추가할 수 있습니다.

참고

기존 항목은 새 규칙의 영향을 받지 않습니다. 기존 항목을 변경하려면 IdM CLI를 사용하여 기존 항목에 자동 구성원 규칙 적용을 참조하십시오.

사전 요구 사항

절차

  1. ipa automember-add 명령을 입력하여 automember 규칙을 추가합니다.
  2. 메시지가 표시되면 다음을 지정합니다.

    • 자동 구성원 규칙. 대상 그룹 이름입니다.
    • 그룹화 유형. 이는 규칙에서 사용자 그룹을 대상으로 하는지 또는 호스트 그룹을 대상으로 하는지 여부를 지정합니다. 사용자 그룹을 대상으로 지정하려면 그룹을 입력합니다. 호스트 그룹을 대상으로 지정하려면 hostgroup 을 입력합니다.

    예를 들어 user_group 이라는 사용자 그룹에 대한 자동 구성원 규칙을 추가하려면 다음을 수행합니다.

    $ ipa automember-add
    Automember Rule: user_group
    Grouping Type: group
    --------------------------------
    Added automember rule "user_group"
    --------------------------------
        Automember Rule: user_group
    Copy to Clipboard Toggle word wrap

17.4. IdM CLI를 사용하여 자동 구성원 규칙에 조건 추가

자동 멤버 규칙을 구성한 후 IdM CLI를 사용하여 해당 automember 규칙에 조건을 추가할 수 있습니다. 자동 구성원 규칙에 대한 자세한 내용은 Automember rules 을 참조하십시오.

사전 요구 사항

절차

  1. ipa automember-add-condition 명령을 사용하여 하나 이상의 포함 또는 독점적 조건을 정의합니다.
  2. 메시지가 표시되면 다음을 지정합니다.

    • 자동 구성원 규칙. 대상 규칙 이름입니다. 자세한 내용은 자동 구성원 규칙을 참조하십시오.
    • 특성 키. 이는 필터를 적용할 항목 속성을 지정합니다. 예를 들어 사용자를 위한 uid.
    • 그룹화 유형. 이는 규칙에서 사용자 그룹을 대상으로 하는지 또는 호스트 그룹을 대상으로 하는지 여부를 지정합니다. 사용자 그룹을 대상으로 지정하려면 그룹을 입력합니다. 호스트 그룹을 대상으로 지정하려면 hostgroup 을 입력합니다.
    • 포함 정규식배타적 정규식. 이러한 조건은 하나 이상의 조건을 정규 표현식으로 지정합니다. 하나의 조건만 지정하려면 다른 조건을 입력하라는 메시지가 표시되면 Enter 키를 누릅니다.

    예를 들어 다음 조건은 사용자 로그인 특성(uid)에서 임의의 값(.*)을 가진 모든 사용자를 대상으로합니다.

    $ ipa automember-add-condition
    Automember Rule: user_group
    Attribute Key: uid
    Grouping Type: group
    [Inclusive Regex]: .*
    [Exclusive Regex]:
    ----------------------------------
    Added condition(s) to "user_group"
    ----------------------------------
      Automember Rule: user_group
      Inclusive Regex: uid=.*
    ----------------------------
    Number of conditions added 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

    또 다른 예로 automembership 규칙을 사용하여 AD(Active Directory)에서 동기화된 모든 Windows 사용자를 대상으로 할 수 있습니다. 이를 위해 모든 AD 사용자가 공유하는 objects Class 특성 에서 모든 사용자를 대상으로 하는 모든 사용자를 대상으로 하는 조건을 생성합니다.

    $ ipa automember-add-condition
    Automember Rule: ad_users
    Attribute Key: objectclass
    Grouping Type: group
    [Inclusive Regex]: ntUser
    [Exclusive Regex]:
    -------------------------------------
    Added condition(s) to "ad_users"
    -------------------------------------
      Automember Rule: ad_users
      Inclusive Regex: objectclass=ntUser
    ----------------------------
    Number of conditions added 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

17.5. IdM CLI를 사용하여 기존 자동 구성원 규칙 보기

IdM CLI를 사용하여 기존 automember 규칙을 보려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. ipa automember-find 명령을 입력합니다.
  2. 메시지가 표시되면 그룹 유형을 지정합니다.

    • 사용자 그룹을 대상으로 지정하려면 그룹을 입력합니다.
    • 호스트 그룹을 대상으로 지정하려면 hostgroup 을 입력합니다.

      예를 들면 다음과 같습니다.

    $ ipa automember-find
    Grouping Type: group
    ---------------
    1 rules matched
    ---------------
      Automember Rule: user_group
      Inclusive Regex: uid=.*
    ----------------------------
    Number of entries returned 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

17.6. IdM CLI를 사용하여 자동 구성원 규칙 삭제

IdM CLI를 사용하여 automember 규칙을 삭제하려면 다음 절차를 따르십시오.

자동 구성원 규칙을 삭제하면 규칙과 연결된 모든 조건도 삭제됩니다. 규칙에서 특정 조건만 제거하려면 IdM CLI를 사용하여 automember 규칙에서 조건 제거를 참조하십시오.

사전 요구 사항

절차

  1. ipa automember-del 명령을 입력합니다.
  2. 메시지가 표시되면 다음을 지정합니다.

    • 자동 구성원 규칙. 삭제할 규칙입니다.
    • 규칙 그룹화. 이는 삭제할 규칙이 사용자 그룹 또는 호스트 그룹에 대한지 여부를 지정합니다. 그룹 또는 호스트 그룹을 입력합니다.

17.7. IdM CLI를 사용하여 automember 규칙에서 조건 제거

다음 절차에 따라 자동 구성원 규칙에서 특정 조건을 제거합니다.

사전 요구 사항

절차

  1. ipa automember-remove-condition 명령을 입력합니다.
  2. 메시지가 표시되면 다음을 지정합니다.

    • 자동 구성원 규칙. 조건을 제거할 규칙의 이름입니다.
    • 특성 키. 대상 항목 속성입니다. 예를 들어 사용자를 위한 uid.
    • 그룹화 유형. 이는 삭제할 조건이 사용자 그룹 또는 호스트 그룹에 대한지 여부를 지정합니다. 그룹 또는 호스트 그룹을 입력합니다.
    • 포함 정규식배타적 정규식. 이러한 조건은 제거할 조건을 지정합니다. 하나의 조건만 지정하려면 다른 조건을 입력하라는 메시지가 표시되면 Enter 키를 누릅니다.

      예를 들면 다음과 같습니다.

    $ ipa automember-remove-condition
    Automember Rule: user_group
    Attribute Key: uid
    Grouping Type: group
    [Inclusive Regex]: .*
    [Exclusive Regex]:
    -----------------------------------
    Removed condition(s) from "user_group"
    -----------------------------------
      Automember Rule: user_group
    ------------------------------
    Number of conditions removed 1
    ------------------------------
    Copy to Clipboard Toggle word wrap

17.8. IdM CLI를 사용하여 기존 항목에 자동 구성원 규칙 적용

automember 규칙은 규칙이 추가된 후 생성된 사용자 및 호스트 항목에 자동으로 적용됩니다. 규칙을 추가하기 전에 존재하는 항목에 소급으로 적용되지 않습니다.

이전에 추가한 항목에 자동 구성원 규칙을 적용하려면 자동 멤버십을 수동으로 다시 빌드해야 합니다. 자동 멤버십을 다시 빌드하면 기존의 모든 자동 구성원 규칙을 다시 평가하여 모든 사용자 또는 호스트 항목 또는 특정 항목에 적용합니다.

참고

자동 멤버십을 다시 빌드 해도 항목이 더 이상 그룹의 포함 조건과 일치하지 않는 경우에도 그룹에서 사용자 또는 호스트 항목이 제거되지 않습니다. 수동으로 제거하려면 IdM CLI를 사용하여 사용자 그룹에서 멤버 제거를 참조하거나 CLI를 사용하여 IdM 호스트 그룹 멤버 제거를 참조하십시오.

사전 요구 사항

절차

  • 자동 멤버십을 다시 빌드하려면 ipa automember-rebuild 명령을 입력합니다. 다음 옵션을 사용하여 대상 항목을 지정합니다.

    • 모든 사용자에 대해 자동 멤버십을 다시 빌드하려면 --type=group 옵션을 사용합니다.

      $ ipa automember-rebuild --type=group
      --------------------------------------------------------
      Automember rebuild task finished. Processed (9) entries.
      --------------------------------------------------------
      Copy to Clipboard Toggle word wrap
    • 모든 호스트에 대한 자동 멤버십을 다시 빌드하려면 --type=hostgroup 옵션을 사용합니다.
    • 지정된 사용자 또는 사용자의 자동 멤버십을 다시 빌드하려면 --users=target_user 옵션을 사용합니다.

      $ ipa automember-rebuild --users=target_user1 --users=target_user2
      --------------------------------------------------------
      Automember rebuild task finished. Processed (2) entries.
      --------------------------------------------------------
      Copy to Clipboard Toggle word wrap
    • 지정된 호스트 또는 호스트에 대한 자동 멤버십을 다시 빌드하려면 --hosts=client.idm.example.com 옵션을 사용합니다.

17.9. IdM CLI를 사용하여 기본 자동 구성원 그룹 구성

기본 자동 구성원 그룹을 구성하면 automember 규칙과 일치하지 않는 새 사용자 또는 호스트 항목이 이 기본 그룹에 자동으로 추가됩니다.

사전 요구 사항

절차

  1. ipa automember-default-group-set 명령을 입력하여 기본 automember 그룹을 구성합니다.
  2. 메시지가 표시되면 다음을 지정합니다.

    • 대상 그룹 이름을 지정하는 default(fallback) 그룹입니다.
    • 타겟이 사용자 그룹인지 또는 호스트 그룹인지 여부를 지정하는 유형 그룹화입니다. 사용자 그룹을 대상으로 지정하려면 그룹을 입력합니다. 호스트 그룹을 대상으로 지정하려면 hostgroup 을 입력합니다.

      예를 들면 다음과 같습니다.

      $ ipa automember-default-group-set
      Default (fallback) Group: default_user_group
      Grouping Type: group
      ---------------------------------------------------
      Set default (fallback) group for automember "default_user_group"
      ---------------------------------------------------
        Default (fallback) Group: cn=default_user_group,cn=groups,cn=accounts,dc=example,dc=com
      Copy to Clipboard Toggle word wrap
    참고

    현재 기본 automember 그룹을 제거하려면 ipa automember-default-group-remove 명령을 입력합니다.

검증 단계

  • 그룹이 올바르게 설정되었는지 확인하려면 ipa automember-default-group-show 명령을 입력합니다. 명령은 현재 기본 automember 그룹을 표시합니다. 예를 들면 다음과 같습니다.

    $ ipa automember-default-group-show
    Grouping Type: group
      Default (fallback) Group: cn=default_user_group,cn=groups,cn=accounts,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

18장. IdM 웹 UI를 사용하여 그룹 멤버십 자동화

자동 그룹 멤버십을 사용하면 속성에 따라 자동으로 사용자와 호스트를 그룹에 할당할 수 있습니다. 예를 들면 다음을 수행할 수 있습니다.

  • 직원 관리자, 위치 또는 기타 특성에 따라 직원의 사용자 항목을 그룹으로 나눕니다.
  • 클래스, 위치 또는 기타 특성을 기반으로 호스트를 나눕니다.
  • 모든 사용자 또는 모든 호스트를 하나의 글로벌 그룹에 추가합니다.

이 장에서는 다음 주제를 다룹니다.

18.1. 자동 그룹 멤버십의 이점

사용자에 대한 자동 멤버십을 사용하면 다음을 수행할 수 있습니다.

  • 그룹 멤버십을 수동으로 관리하는 오버헤드 감소

    더 이상 모든 사용자와 호스트를 수동으로 그룹에 할당할 필요가 없습니다.

  • 사용자 및 호스트 관리의 일관성 개선

    사용자와 호스트는 엄격하게 정의되고 자동으로 평가된 기준에 따라 그룹에 할당됩니다.

  • 그룹 기반 설정 관리 간소화

    그룹에 대해 다양한 설정이 정의되고 개별 그룹 구성원에 적용됩니다(예: sudo 규칙, 자동 마운트 또는 액세스 제어). 사용자와 호스트를 그룹에 추가하면 이러한 설정을 자동으로 관리하기가 쉬워집니다.

18.2. 자동 구성원 규칙

자동 그룹 멤버십을 구성할 때 관리자는 automember 규칙을 정의합니다. automember 규칙은 특정 사용자 또는 호스트 대상 그룹에 적용됩니다. 한 번에 둘 이상의 그룹에 적용할 수 없습니다.

규칙을 생성한 후에는 관리자가 조건을 추가합니다. 대상 그룹에서 포함하거나 제외되는 사용자 또는 호스트를 지정합니다.

  • 포함 조건

    사용자 또는 호스트 항목이 포함 조건을 충족하면 대상 그룹에 포함됩니다.

  • 배타적 조건

    사용자 또는 호스트 항목이 독점 조건을 충족하면 대상 그룹에 포함되지 않습니다.

조건은 Perl 호환 정규 표현식(PCRE) 형식으로 정규 표현식으로 지정됩니다. PCRE에 대한 자세한 내용은 pcresyntax Cryostat 매뉴얼 페이지를 참조하십시오.

참고

IdM은 포함 조건보다 먼저 배타적 조건을 평가합니다. 충돌이 발생하는 경우 독점 조건이 포함된 조건보다 우선합니다.

automember 규칙은 향후 생성된 모든 항목에 적용됩니다. 이러한 항목은 지정된 대상 그룹에 자동으로 추가됩니다. 항목이 여러 automember 규칙에 지정된 조건을 충족하면 모든 해당 그룹에 추가됩니다.

기존 항목은 새 규칙의 영향을 받지 않습니다. 기존 항목을 변경하려면 IdM 웹 UI를 사용하여 기존 항목에 자동 구성원 규칙 적용을 참조하십시오.

18.3. IdM 웹 UI를 사용하여 자동 구성원 규칙 추가

IdM 웹 UI를 사용하여 automember 규칙을 추가하려면 다음 절차를 따르십시오. 자동 구성원 규칙에 대한 자세한 내용은 Automember rules 을 참조하십시오.

참고

기존 항목은 새 규칙의 영향을 받지 않습니다. 기존 항목을 변경하려면 IdM 웹 UI를 사용하여 기존 항목에 자동 구성원 규칙 적용을 참조하십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.
  • 새 규칙의 대상 그룹은 IdM에 있습니다.

절차

  1. ID → 자동 구성원을 클릭하고 사용자 그룹 규칙 또는 호스트 그룹 규칙을 선택합니다.
  2. 추가를 클릭합니다.
  3. Automember 규칙 필드에서 규칙이 적용할 그룹을 선택합니다. 대상 그룹 이름입니다.

  4. Add(추가) 를 클릭하여 확인합니다.
  5. 선택 사항: IdM 웹 UI를 사용하여 automember 규칙에 조건 추가에 설명된 절차를 사용하여 새 규칙에 조건을 추가할 수 있습니다.

18.4. IdM 웹 UI를 사용하여 자동 구성원 규칙에 조건 추가

자동 멤버 규칙을 구성한 후 IdM 웹 UI를 사용하여 해당 automember 규칙에 조건을 추가할 수 있습니다. 자동 구성원 규칙에 대한 자세한 내용은 Automember rules 을 참조하십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.
  • 대상 규칙은 IdM에 있습니다.

절차

  1. ID → 자동 구성원을 클릭하고 사용자 그룹 규칙 또는 호스트 그룹 규칙을 선택합니다.
  2. 조건을 추가할 규칙을 클릭합니다.
  3. Inclusive (포함) 또는 Exclusive (독점) 섹션에서 Add(추가)를 클릭합니다.

  4. Attribute (특성) 필드에서 required 속성을 선택합니다(예: uid ).
  5. Expression(표현식 ) 필드에 정규 표현식을 정의합니다.
  6. 추가를 클릭합니다.

    예를 들어 다음 조건은 사용자 ID(uid) 속성에서 임의의 값(.*)을 가진 모든 사용자를 대상으로 합니다.

18.5. IdM 웹 UI를 사용하여 기존 자동 구성원 규칙 및 조건 보기

IdM 웹 UI를 사용하여 기존 automember 규칙 및 조건을 보려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.

절차

  1. ID → 자동 구성원을 클릭하고 사용자 그룹 규칙 또는 호스트 그룹 규칙을 선택하여 해당 자동 구성원 규칙을 확인합니다.
  2. 선택 사항: 규칙을 클릭하여 Inclusive 또는 Exclusive 섹션에서 해당 규칙의 조건을 확인합니다.

18.6. IdM 웹 UI를 사용하여 자동 구성원 규칙 삭제

IdM 웹 UI를 사용하여 automember 규칙을 삭제하려면 다음 절차를 따르십시오.

자동 구성원 규칙을 삭제하면 규칙과 연결된 모든 조건도 삭제됩니다. 규칙에서 특정 조건만 제거하려면 IdM 웹 UI를 사용하여 automember 규칙에서 조건 제거를 참조하십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.

절차

  1. ID → 자동 구성원을 클릭하고 사용자 그룹 규칙 또는 호스트 그룹 규칙을 선택하여 해당 자동 구성원 규칙을 확인합니다.
  2. 제거할 규칙 옆에 있는 확인란을 선택합니다.
  3. 삭제를 클릭합니다.

  4. Delete(삭제) 를 클릭하여 확인합니다.

18.7. IdM 웹 UI를 사용하여 automember 규칙에서 조건 제거

IdM 웹 UI를 사용하여 automember 규칙에서 특정 조건을 제거하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.

절차

  1. ID → 자동 구성원을 클릭하고 사용자 그룹 규칙 또는 호스트 그룹 규칙을 선택하여 해당 자동 구성원 규칙을 확인합니다.
  2. 규칙을 클릭하여 Inclusive 또는 Exclusive 섹션에서 해당 규칙의 조건을 확인합니다.
  3. 제거할 조건 옆에 있는 확인란을 선택합니다.
  4. 삭제를 클릭합니다.

  5. Delete(삭제) 를 클릭하여 확인합니다.

18.8. IdM 웹 UI를 사용하여 기존 항목에 자동 구성원 규칙 적용

automember 규칙은 규칙이 추가된 후 생성된 사용자 및 호스트 항목에 자동으로 적용됩니다. 규칙을 추가하기 전에 존재하는 항목에 소급으로 적용되지 않습니다.

이전에 추가한 항목에 자동 구성원 규칙을 적용하려면 자동 멤버십을 수동으로 다시 빌드해야 합니다. 자동 멤버십을 다시 빌드하면 기존의 모든 자동 구성원 규칙을 다시 평가하여 모든 사용자 또는 호스트 항목 또는 특정 항목에 적용합니다.

참고

자동 멤버십을 다시 빌드 해도 항목이 더 이상 그룹의 포함 조건과 일치하지 않는 경우에도 그룹에서 사용자 또는 호스트 항목이 제거되지 않습니다. 수동으로 제거하려면 IdM 웹 UI 를 사용하여 사용자 그룹에서 멤버 제거 또는 IdM 웹 UI 의 호스트 그룹 멤버 제거를 참조하십시오.

18.8.1. 모든 사용자 또는 호스트에 대한 자동 멤버십 다시 빌드

모든 사용자 또는 호스트 항목에 대한 자동 멤버십을 다시 빌드하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.

절차

  1. ID사용자 또는 호스트 를 선택합니다.
  2. 작업자동 멤버십 다시 빌드를 클릭합니다.

18.8.2. 단일 사용자 또는 호스트에 대한 자동 멤버십 다시 빌드

특정 사용자 또는 호스트 항목에 대한 자동 멤버십을 다시 빌드하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.

절차

  1. ID사용자 또는 호스트 를 선택합니다.
  2. 필요한 사용자 또는 호스트 이름을 클릭합니다.
  3. 작업자동 멤버십 다시 빌드를 클릭합니다.

18.9. IdM 웹 UI를 사용하여 기본 사용자 그룹 구성

기본 사용자 그룹을 구성하면 automember 규칙과 일치하지 않는 새 사용자 항목이 이 기본 그룹에 자동으로 추가됩니다.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.
  • IdM에 기본값으로 설정할 대상 사용자 그룹이 있습니다.

절차

  1. Identity → Automember 를 클릭하고 사용자 그룹 규칙을 선택합니다.
  2. Default 사용자 그룹 필드에서 기본 사용자 그룹으로 설정할 그룹을 선택합니다.

18.10. IdM 웹 UI를 사용하여 기본 호스트 그룹 구성

기본 호스트 그룹을 구성하면 automember 규칙과 일치하지 않는 새 호스트 항목이 이 기본 그룹에 자동으로 추가됩니다.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.
  • admins 그룹의 멤버여야 합니다.
  • IdM에 기본값으로 설정할 대상 호스트 그룹이 있습니다.

절차

  1. ID → 자동 구성원을 클릭하고 호스트 그룹 규칙을 선택합니다.
  2. Default 호스트 그룹 필드에서 기본 호스트 그룹으로 설정할 그룹을 선택합니다.

19장. Ansible을 사용하여 IdM의 그룹 멤버십 자동화

자동 그룹 멤버십을 사용하면 사용자 및 호스트 사용자 그룹과 호스트 그룹을 속성에 따라 자동으로 할당할 수 있습니다. 예를 들면 다음을 수행할 수 있습니다.

  • 직원의 사용자 항목을 직원 관리자, 위치, 위치 또는 기타 특성에 따라 그룹으로 나눕니다. 명령행에 ipa user-add --help 를 입력하여 모든 속성을 나열할 수 있습니다.
  • 호스트를 클래스, 위치 또는 기타 특성에 따라 그룹으로 나눕니다. 명령행에 ipa host-add --help 를 입력하여 모든 특성을 나열할 수 있습니다.
  • 모든 사용자 또는 모든 호스트를 하나의 글로벌 그룹에 추가합니다.

Red Hat Ansible Engine을 사용하여 IdM(Identity Management)에서 자동 그룹 멤버십 관리를 자동화할 수 있습니다.

이 섹션에서는 다음 주제를 다룹니다.

19.1. IdM 관리를 위한 Ansible 제어 노드 준비

IdM(Identity Management)을 관리하는 시스템 관리자로서 Red Hat Ansible Engine을 사용하여 작업할 때 다음을 수행하는 것이 좋습니다.

  • 홈 디렉터리에서 Ansible 플레이북 전용 하위 디렉터리(예: ~/MyPlaybooks )를 생성합니다.
  • /usr /share/doc/ansible-freeipa/* 및 /usr/share/doc /rhel-system-roles/* 디렉터리 및 하위 디렉터리에서 ~/MyPlaybooks 디렉터리에 샘플 Ansible 플레이북을 복사 및 조정합니다.
  • 인벤토리 파일을 ~/MyPlaybooks 디렉터리에 포함합니다.

이 연습을 수행하면 모든 플레이북을 한 곳에서 찾을 수 있으며 root 권한을 호출하지 않고 플레이북을 실행할 수 있습니다.

참고

ipaserver,ipareplica,ipaclient,ipabackup,ipasmartcard_serveripasmartcard_client ansible-freeipa 역할을 실행하려면 관리형 노드에서만 root 권한이 필요합니다. 이러한 역할을 수행하려면 디렉터리 및 dnf 소프트웨어 패키지 관리자에 대한 액세스 권한이 필요합니다.

Ansible 플레이북을 저장하고 실행하는 데 사용할 수 있도록 ~/MyPlaybooks 디렉터리를 생성하고 구성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 관리형 노드인 server.idm.example .com 및 replica.idm.example.com에 IdM 서버를 설치했습니다.
  • 제어 노드에서 직접 관리형 노드인 server.idm.example.com 및 replica.idm.example.com 에 로그인할 수 있도록 DNS 및 네트워킹을 구성했습니다.
  • IdM 관리자 암호를 알고 있습니다.

절차

  1. 홈 디렉터리에서 Ansible 구성 및 플레이북의 디렉터리를 생성합니다.

    $ mkdir ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. ~/MyPlaybooks/ 디렉터리로 변경합니다.

    $ cd ~/MyPlaybooks
    Copy to Clipboard Toggle word wrap
  3. 다음 콘텐츠를 사용하여 ~/Myplaybooks/ansible.cfg 파일을 만듭니다.

    [defaults]
    inventory = /home/your_username/MyPlaybooks/inventory
    
    [privilege_escalation]
    become=True
    Copy to Clipboard Toggle word wrap
  4. 다음 콘텐츠를 사용하여 ~/Myplaybooks/inventory 파일을 만듭니다.

    [ipaserver]
    server.idm.example.com
    
    [ipareplicas]
    replica1.idm.example.com
    replica2.idm.example.com
    
    [ipacluster:children]
    ipaserver
    ipareplicas
    
    [ipacluster:vars]
    ipaadmin_password=SomeADMINpassword
    
    [ipaclients]
    ipaclient1.example.com
    ipaclient2.example.com
    
    [ipaclients:vars]
    ipaadmin_password=SomeADMINpassword
    Copy to Clipboard Toggle word wrap

    이 구성은 이러한 위치에 있는 호스트에 대한 두 개의 호스트 그룹인 euus 를 정의합니다. 또한 이 구성은 euus 그룹의 모든 호스트를 포함하는 ipaserver 호스트 그룹을 정의합니다.

  5. [선택 사항] SSH 공개 및 개인 키를 생성합니다. 테스트 환경에서 액세스를 간소화하려면 개인 키에 암호를 설정하지 마십시오.

    $ ssh-keygen
    Copy to Clipboard Toggle word wrap
  6. SSH 공개 키를 각 관리 노드의 IdM admin 계정에 복사합니다.

    $ ssh-copy-id admin@server.idm.example.com
    $ ssh-copy-id admin@replica.idm.example.com
    Copy to Clipboard Toggle word wrap

    이러한 명령을 입력할 때 IdM 관리자 암호를 입력해야 합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹에 대한 자동 관리 규칙이 있는지 확인하는 방법을 설명합니다. 이 예제에서는 testing_group 사용자 그룹에 대해 automember 규칙이 있는지 확인합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • testing_group 사용자 그룹이 IdM에 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/automember/ 디렉터리에 있는 automember- group-present.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-present.yml automember-group-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 automember-group-present-copy.yml 파일을 엽니다.
  4. ipaautomember 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 testing_group 으로 설정합니다.
    • automember_type 변수를 group 으로 설정합니다.
    • state 변수가 present로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Automember group present example
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure group automember rule admins is present
        ipaautomember:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: testing_group
          automember_type: group
          state: present
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-present-copy.yml
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹의 automember 규칙에 지정된 조건이 있는지 확인하는 방법을 설명합니다. 이 예제에서는 testing_group 그룹에 대해 automember 규칙에 UID 관련 조건이 있어야 합니다. .* 조건을 지정하면 향후 모든 IdM 사용자가 자동으로 testing_group 의 구성원이 되도록 합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • testing_group 사용자 그룹과 automember 사용자 그룹 규칙이 IdM에 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/automember/ 디렉터리에 있는 automember-hostgroup- rule-present.yml Ansible 플레이북 파일을 복사하고 이름을 로 지정합니다(예: automember-usergroup-rule-present.yml ):

    $ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-usergroup-rule-present.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 automember-usergroup-rule-present.yml 파일을 엽니다.
  4. 다음 매개변수를 수정하여 파일을 조정합니다.

    • 예를 들어, 사용 사례에 해당하는 플레이북 이름을 로 변경합니다. 사용자 그룹 규칙 멤버 present 자동 메모리.
    • 사용 사례에 해당하는 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다. 사용자 그룹의 automember 조건이 있는지 확인합니다.
    • ipaautomember 작업 섹션에서 다음 변수를 설정합니다.

      • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
      • name 변수를 testing_group 으로 설정합니다.
      • automember_type 변수를 group 으로 설정합니다.
      • state 변수가 present로 설정되어 있는지 확인합니다.
      • action 변수가 member 로 설정되어 있는지 확인합니다.
      • 포함 변수를 UID 로 설정합니다.
      • 포함 표현식 변수를 로 설정합니다 .*

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Automember user group rule member present
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure an automember condition for a user group is present
        ipaautomember:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: testing_group
          automember_type: group
          state: present
          action: member
          inclusive:
            - key: UID
              expression: .*
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-present.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. IdM 관리자로 로그인합니다.

    $ kinit admin
    Copy to Clipboard Toggle word wrap
  2. 사용자를 추가합니다. 예를 들면 다음과 같습니다.

    $ ipa user-add user101 --first user --last 101
    -----------------------
    Added user "user101"
    -----------------------
      User login: user101
      First name: user
      Last name: 101
      ...
      Member of groups: ipausers, testing_group
      ...
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹의 자동 관리 규칙에서 상태가 없는지 확인하는 방법을 설명합니다. 이 예제에서는 automember 규칙에 조건이 없으면 초기화가 dp 인 사용자를 포함하도록 지정합니다. automember 규칙은 testing_group 그룹에 적용됩니다. 조건을 적용하면 초기 사용자의 dptesting_group 의 구성원이 될 수 없게 됩니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • testing_group 사용자 그룹과 automember 사용자 그룹 규칙이 IdM에 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/automember/ 디렉터리에 있는 automember-hostgroup-rule- absent.yml Ansible 플레이북 파일을 복사하고 이름을 로 지정합니다(예: automember-usergroup-rule-absent.yml:

    $ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-absent.yml automember-usergroup-rule-absent.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 automember-usergroup-rule-absent.yml 파일을 엽니다.
  4. 다음 매개변수를 수정하여 파일을 조정합니다.

    • 예를 들어, 사용 사례에 해당하는 플레이북 이름을 로 변경합니다. 사용자 그룹 규칙 멤버가 없습니다.
    • 사용 사례에 해당하는 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다. 사용자 그룹의 automember 조건이 없는지 확인합니다.
    • ipaautomember 작업 섹션에서 다음 변수를 설정합니다.

      • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
      • name 변수를 testing_group 으로 설정합니다.
      • automember_type 변수를 group 으로 설정합니다.
      • state 변수가 absent 로 설정되어 있는지 확인합니다.
      • action 변수가 member 로 설정되어 있는지 확인합니다.
      • 포함 변수를 initials 로 설정합니다.
      • 포함 표현식 변수를 dp 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Automember user group rule member absent
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure an automember condition for a user group is absent
        ipaautomember:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: testing_group
          automember_type: group
          state: absent
          action: member
          inclusive:
            - key: initials
              expression: dp
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-absent.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. IdM 관리자로 로그인합니다.

    $ kinit admin
    Copy to Clipboard Toggle word wrap
  2. automember 그룹을 확인합니다.

    $ ipa automember-show --type=group testing_group
     Automember Rule: testing_group
    Copy to Clipboard Toggle word wrap

출력에 Inclusive Regex: initials=dp 항목이 없으면 testing_group automember 규칙에 지정된 조건이 포함되어 있지 않음을 확인합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹에 대해 automember 규칙이 없는지 확인하는 방법을 설명합니다. 이 예제에서는 testing_group 그룹에 대해 automember 규칙이 없습니다.

참고

자동 구성원 규칙을 삭제하면 규칙과 연결된 모든 조건도 삭제됩니다. 규칙에서 특정 조건만 제거하려면 Ansible 사용을 통해 IdM 사용자 그룹 automember 규칙에 조건이 없는지 확인합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/automember/ 디렉터리에 있는 automember-group- absent.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-absent.yml automember-group-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 automember-group-absent-copy.yml 파일을 엽니다.
  4. ipaautomember 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 testing_group 으로 설정합니다.
    • automember_type 변수를 group 으로 설정합니다.
    • state 변수가 absent 로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Automember group absent example
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure group automember rule admins is absent
        ipaautomember:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: testing_group
          automember_type: group
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-absent.yml
    Copy to Clipboard Toggle word wrap

Ansible을 사용하여 IdM 호스트 그룹 automember 규칙에 조건이 있는지 확인합니다. 이 예제에서는 FQDN.*.idm.example.com 인 호스트가 primary_dns_domain_hosts 호스트 그룹의 구성원 인지 확인하는 방법을 설명합니다 .*.example.orgprimary_dns_domain_hosts 호스트 그룹의 멤버가 아닙니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • IdM에는 primary_dns_domain_hosts 호스트 그룹과 automember 호스트 그룹 규칙이 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/automember/ 디렉터리에 있는 automember-hostgroup- rule-present.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-hostgroup-rule-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 automember-hostgroup-rule-present-copy.yml 파일을 엽니다.
  4. ipaautomember 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 primary_dns_domain_hosts 로 설정합니다.
    • automember_type 변수를 hostgroup 으로 설정합니다.
    • state 변수가 present로 설정되어 있는지 확인합니다.
    • action 변수가 member 로 설정되어 있는지 확인합니다.
    • 포함 변수가 fqdn; 으로 설정되어 있는지 확인합니다.
    • 해당 포함 표현식 변수를 .*.idm.example.com 으로 설정합니다.
    • 독점 변수를 fqdn; 으로 설정합니다.
    • 해당 배타적 표현식 변수를 .*.example.org 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Automember user group rule member present
      hosts: ipaserver
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure an automember condition for a user group is present
        ipaautomember:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: primary_dns_domain_hosts
          automember_type: hostgroup
          state: present
          action: member
          inclusive:
            - key: fqdn
              expression: .*.idm.example.com
          exclusive:
            - key: fqdn
              expression: .*.example.org
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory automember-hostgroup-rule-present-copy.yml
    Copy to Clipboard Toggle word wrap

20장. IdM의 액세스 제어

액세스 제어는 호스트 또는 서비스와 같은 다른 사용자 또는 오브젝트에 대한 작업을 수행하기 위해 사용자에게 부여된 권한 또는 권한을 정의합니다. IdM(Identity Management)은 다양한 액세스 제어 영역을 제공하여 어떤 종류의 액세스 권한이 부여되고 있는지 명확하게 합니다. 이 과정의 일환으로 IdM은 액세스 제어와 도메인 내의 리소스에 대한 액세스 제어와 IdM 구성 자체에 대한 액세스 제어 간의 차이를 가져옵니다.

이 장에서는 도메인 내의 리소스와 IdM 구성 자체에서 IdM 사용자에게 사용할 수 있는 다양한 내부 액세스 제어 메커니즘에 대해 간단히 설명합니다.

20.1. IdM의 액세스 제어 명령

IdM(Identity Management) 액세스 제어 구조는 389 Directory Server 액세스 제어를 기반으로 합니다. ACI(액세스 제어 명령)를 사용하면 다른 항목에 대한 특정 IdM 사용자에게 액세스 권한을 부여하거나 거부할 수 있습니다. IdM 사용자를 포함한 모든 항목은 LDAP에 저장됩니다.

ACI에는 세 가지 부분이 있습니다.

행위자
어떤 작업을 수행할 수 있는 권한이 부여되는 엔티티입니다. 예를 들어 LDAP 액세스 제어 모델에서는 사용자가 고유 이름(DN)을 사용하여 디렉터리에 바인딩할 때만 ACI 규칙이 적용되도록 지정할 수 있습니다. 이러한 사양을 바인딩 규칙 이라고 합니다. 사용자가 누구인지 정의하고 특정 시간 또는 특정 시스템에 대한 시도 제한과 같은 바인딩 시도에 다른 제한이 필요할 수 있습니다.
대상
액터가 작업을 수행할 수 있는 항목입니다.
작업 유형
배우가 수행할 수 있는 작업의 종류를 결정합니다. 가장 일반적인 작업은 add, delete, write, read, search입니다. IdM에서는 관리자가 아닌 사용자의 읽기 및 검색 권한이 제한되며 IdM CLI보다 IdM 웹 UI에서도 더 많습니다.

LDAP 작업을 시도하면 다음이 수행됩니다.

  1. IdM 클라이언트는 바인딩 작업의 일부로 사용자 자격 증명을 IdM 서버에 보냅니다.
  2. IdM 서버 DS는 사용자 자격 증명을 확인합니다.
  3. IdM 서버 DS는 사용자 계정을 확인하여 사용자가 요청한 작업을 수행할 수 있는 권한이 있는지 확인합니다.

20.2. IdM의 액세스 제어 방법

IdM(Identity Management)은 액세스 제어 방법을 다음 카테고리로 나눕니다.

셀프 서비스 규칙
사용자가 사용자의 개인 항목에서 수행할 수 있는 작업을 정의합니다. 이 액세스 제어 유형은 사용자 항목 내의 특정 속성에 대한 쓰기 권한만 허용합니다. 사용자는 특정 속성의 값을 업데이트할 수 있지만 속성을 추가하거나 삭제할 수는 없습니다.
위임 규칙
위임 규칙을 사용하면 특정 사용자 그룹이 다른 사용자 그룹에 있는 사용자의 특정 속성에 대한 편집, 작업을 수행할 수 있도록 허용할 수 있습니다.By using a delegation rule, you can allow a specific user group to perform write, that is edit, operations on specific attributes of users in another user group. 셀프 서비스 규칙과 마찬가지로 이 형태의 액세스 제어 규칙은 특정 속성의 값을 편집하도록 제한됩니다. 전체 항목을 추가하거나 제거하거나 지정되지 않은 속성을 제어할 수 있는 기능은 부여되지 않습니다.
역할 기반 액세스 제어

그런 다음 IdM 도메인의 모든 유형의 엔터티에 대해 훨씬 더 광범위한 권한을 부여하는 특수 액세스 제어 그룹을 생성합니다. 역할을 편집, 추가 및 삭제 권한을 부여할 수 있습니다. 즉, 선택한 특성이 아닌 전체 항목에 대한 전체 제어 권한을 부여할 수 있습니다.

기본적으로 특정 역할을 IdM에서 사용할 수 있습니다(예: Enrollment Administrator,IT Security professionals, IT professionals ). 추가 역할을 생성하여 호스트, 자동 마운트 설정, netgroups, DNS 설정 및 IdM 구성과 같은 모든 유형의 항목을 관리할 수 있습니다.

21장. CLI를 사용하여 IdM에서 셀프 서비스 규칙 관리

IdM(Identity Management)의 셀프 서비스 규칙과 CLI(명령줄 인터페이스)에서 셀프 서비스 액세스 규칙을 생성하고 편집하는 방법에 대해 알아봅니다.

21.1. IdM의 셀프 서비스 액세스 제어

셀프 서비스 액세스 제어 규칙은 IdM(Identity Management) 엔터티가 IdM Directory Server 항목에서 수행할 수 있는 작업을 정의합니다. 예를 들어 IdM 사용자는 자신의 암호를 업데이트할 수 있습니다.

이 제어 방법을 사용하면 인증된 IdM 엔터티에서 LDAP 항목 내에서 특정 속성을 편집할 수 있지만 전체 항목에서 작업을 추가하거나 삭제할 수는 없습니다.

주의

셀프 서비스 액세스 제어 규칙으로 작업할 때 주의하십시오. 액세스 제어 규칙을 부적절하게 구성하면 엔터티의 권한을 의도치 않게 높일 수 있습니다.

21.2. CLI를 사용하여 셀프 서비스 규칙 생성

CLI(명령줄 인터페이스)를 사용하여 IdM에서 셀프 서비스 액세스 규칙을 생성하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  • 셀프 서비스 규칙을 추가하려면 ipa selfservice-add 명령을 사용하고 다음 두 가지 옵션을 지정합니다.

    --permissions
    읽기쓰기 권한을 설정합니다. ACI(액세스 제어 명령)가 부여됩니다.
    --attrs
    이 ACI에서 권한을 부여하는 전체 속성 목록을 설정합니다.

예를 들어 사용자가 자신의 이름 세부 정보를 수정할 수 있는 셀프 서비스 규칙을 생성하려면 다음을 수행합니다.

$ ipa selfservice-add "Users can manage their own name details" --permissions=write --attrs=givenname --attrs=displayname --attrs=title --attrs=initials
-----------------------------------------------------------
Added selfservice "Users can manage their own name details"
-----------------------------------------------------------
    Self-service name: Users can manage their own name details
    Permissions: write
    Attributes: givenname, displayname, title, initials
Copy to Clipboard Toggle word wrap

21.3. CLI를 사용하여 셀프 서비스 규칙 편집

CLI(명령줄 인터페이스)를 사용하여 IdM에서 셀프 서비스 액세스 규칙을 편집하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. 선택 사항: ipa selfservice-find 명령을 사용하여 기존 셀프 서비스 규칙을 표시합니다.
  2. 선택 사항: ipa selfservice-show 명령을 사용하여 수정할 셀프 서비스 규칙에 대한 세부 정보를 표시합니다.
  3. ipa selfservice-mod 명령을 사용하여 셀프 서비스 규칙을 편집합니다.

예를 들면 다음과 같습니다.

$ ipa selfservice-mod "Users can manage their own name details" --attrs=givenname --attrs=displayname --attrs=title --attrs=initials --attrs=surname
--------------------------------------------------------------
Modified selfservice "Users can manage their own name details"
--------------------------------------------------------------
Self-service name: Users can manage their own name details
Permissions: write
Attributes: givenname, displayname, title, initials
Copy to Clipboard Toggle word wrap
중요

ipa selfservice-mod 명령을 사용하면 이전에 정의한 권한 및 속성을 덮어쓰므로 항상 기존 권한 및 속성의 전체 목록과 정의하고자 하는 새 권한 목록을 포함합니다.

검증 단계

  • ipa selfservice-show 명령을 사용하여 편집한 셀프 서비스 규칙을 표시합니다.
$ ipa selfservice-show "Users can manage their own name details"
--------------------------------------------------------------
Self-service name: Users can manage their own name details
Permissions: write
Attributes: givenname, displayname, title, initials
Copy to Clipboard Toggle word wrap

21.4. CLI를 사용하여 셀프 서비스 규칙 삭제

CLI(명령줄 인터페이스)를 사용하여 IdM에서 셀프 서비스 액세스 규칙을 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  • ipa selfservice-del 명령을 사용하여 셀프 서비스 규칙을 삭제합니다.

예를 들면 다음과 같습니다.

$ ipa selfservice-del "Users can manage their own name details"
-----------------------------------------------------------
Deleted selfservice "Users can manage their own name details"
-----------------------------------------------------------
Copy to Clipboard Toggle word wrap

검증 단계

  • ipa selfservice-find 명령을 사용하여 모든 셀프 서비스 규칙을 표시합니다. 방금 삭제한 규칙이 누락되어야 합니다.

22장. IdM 웹 UI를 사용하여 셀프 서비스 규칙 관리

IdM(Identity Management)의 셀프 서비스 규칙과 IdM(IdM 웹 UI)에서 셀프 서비스 액세스 규칙을 생성하고 편집하는 방법에 대해 알아봅니다.

22.1. IdM의 셀프 서비스 액세스 제어

셀프 서비스 액세스 제어 규칙은 IdM(Identity Management) 엔터티가 IdM Directory Server 항목에서 수행할 수 있는 작업을 정의합니다. 예를 들어 IdM 사용자는 자신의 암호를 업데이트할 수 있습니다.

이 제어 방법을 사용하면 인증된 IdM 엔터티에서 LDAP 항목 내에서 특정 속성을 편집할 수 있지만 전체 항목에서 작업을 추가하거나 삭제할 수는 없습니다.

주의

셀프 서비스 액세스 제어 규칙으로 작업할 때 주의하십시오. 액세스 제어 규칙을 부적절하게 구성하면 엔터티의 권한을 의도치 않게 높일 수 있습니다.

22.2. IdM 웹 UI를 사용하여 셀프 서비스 규칙 생성

IdM(웹 인터페이스)을 사용하여 IdM에서 셀프 서비스 액세스 규칙을 생성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. IPA 서버 탭에서 역할 기반 액세스 제어 하위 메뉴를 열고 셀프 서비스 권한 을 선택합니다.
  2. 셀프 서비스 액세스 규칙 목록의 오른쪽 상단에 있는 추가 를 클릭합니다.

    Adding a self-service rule

  3. Add self Service Permission(셀프 서비스 권한 추가) 창이 열립니다. 셀프 서비스 이름 필드에 새 셀프 서비스 규칙의 이름을 입력합니다. 공백을 사용할 수 있습니다.

    Form for adding a self-service rule

  4. 사용자가 편집할 속성 옆에 있는 확인란을 선택합니다.
  5. 선택 사항: 액세스 권한을 제공하려는 특성이 나열되어 있지 않은 경우 목록을 추가할 수 있습니다.

    1. Add(추가) 버튼을 클릭합니다.
    2. 다음 Add Custom Attribute(사용자 지정 속성 추가) 창의 Attribute (특성) 텍스트 필드에 특성 이름을 입력합니다.
    3. OK(확인 ) 버튼을 클릭하여 속성을 추가합니다.
    4. 새 속성이 선택되었는지 확인합니다.
  6. 양식 하단에서 Add(추가 ) 버튼을 클릭하여 새 셀프 서비스 규칙을 저장합니다.
    또는 Add and Edit (추가 및 편집) 버튼을 클릭하여 셀프 서비스 규칙을 저장하고 계속 편집하거나 추가 및 추가 버튼을 클릭하여 추가 규칙을 저장하고 추가할 수 있습니다.

22.3. IdM 웹 UI를 사용하여 셀프 서비스 규칙 편집

IdM(웹 인터페이스)을 사용하여 IdM에서 셀프 서비스 액세스 규칙을 편집하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. IPA 서버 탭에서 역할 기반 액세스 제어 하위 메뉴를 열고 셀프 서비스 권한 을 선택합니다.
  2. 수정할 셀프 서비스 규칙의 이름을 클릭합니다.

    Editing an existing self-service rule

  3. 편집 페이지에서만 셀프 서비스 규칙에 추가하거나 제거할 속성 목록을 편집할 수 있습니다. 적절한 확인란을 선택하거나 선택 취소합니다.
  4. Save(저장 ) 버튼을 클릭하여 셀프 서비스 규칙에 변경 사항을 저장합니다.

22.4. IdM 웹 UI를 사용하여 셀프 서비스 규칙 삭제

IdM(웹 인터페이스)을 사용하여 IdM에서 셀프 서비스 액세스 규칙을 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. IPA 서버 탭에서 역할 기반 액세스 제어 하위 메뉴를 열고 셀프 서비스 권한 을 선택합니다.
  2. 삭제할 규칙 옆에 있는 확인란을 선택한 다음 목록 오른쪽에 있는 Delete (삭제) 버튼을 클릭합니다.

    Deleting a self-service rule

  3. 대화 상자가 열리고 Delete(삭제)를 클릭하여 확인합니다.

23장. Ansible 플레이북을 사용하여 IdM에서 셀프 서비스 규칙 관리

이 섹션에서는 IdM(Identity Management)의 셀프 서비스 규칙을 소개하고 Ansible 플레이북을 사용하여 셀프 서비스 액세스 규칙을 생성하고 편집하는 방법을 설명합니다. 셀프 서비스 액세스 제어 규칙을 사용하면 IdM 엔터티에서 IdM 디렉터리 서버 항목에서 지정된 작업을 수행할 수 있습니다.

23.1. IdM의 셀프 서비스 액세스 제어

셀프 서비스 액세스 제어 규칙은 IdM(Identity Management) 엔터티가 IdM Directory Server 항목에서 수행할 수 있는 작업을 정의합니다. 예를 들어 IdM 사용자는 자신의 암호를 업데이트할 수 있습니다.

이 제어 방법을 사용하면 인증된 IdM 엔터티에서 LDAP 항목 내에서 특정 속성을 편집할 수 있지만 전체 항목에서 작업을 추가하거나 삭제할 수는 없습니다.

주의

셀프 서비스 액세스 제어 규칙으로 작업할 때 주의하십시오. 액세스 제어 규칙을 부적절하게 구성하면 엔터티의 권한을 의도치 않게 높일 수 있습니다.

23.2. Ansible을 사용하여 셀프 서비스 규칙이 있는지 확인합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 셀프 서비스 규칙을 정의하고 IdM(Identity Management) 서버에 있는지 확인하는 방법을 설명합니다. 이 예에서 새 사용자는 자신의 이름 세부 정보 규칙을 관리할 수 있으며 사용자에게 자신의 지정된 이름,디스플레이 이름, 제목초기 속성을 변경할 수 있습니다. 이를 통해 원하는 경우 표시 이름 또는 초기값을 변경할 수 있습니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/selfservice/ 디렉터리에 있는 selfservice- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-present.yml selfservice-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 selfservice-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipaselfservice 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 새 셀프 서비스 규칙의 이름으로 설정합니다.
    • 권한 변수를 쉼표로 구분된 권한 목록( 읽기쓰기 )으로 설정합니다.
    • attribute 변수를 givenname,displayname ,title, initials 등 사용자가 자체적으로 관리할 수 있는 속성 목록으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Self-service present
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure self-service rule "Users can manage their own name details" is present
        ipaselfservice:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "Users can manage their own name details"
          permission: read, write
          attribute:
          - givenname
          - displayname
          - title
          - initials
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-present-copy.yml
    Copy to Clipboard Toggle word wrap

23.3. Ansible을 사용하여 셀프 서비스 규칙이 없는지 확인합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM 구성에 지정된 셀프 서비스 규칙이 없는지 확인하는 방법을 설명합니다. 아래 예제에서는 IdM에 사용자가 자체 이름 세부 정보 셀프 서비스 규칙이 없는지 확인하는 방법을 설명합니다. 이렇게 하면 사용자가 예를 들어 자체 표시 이름 또는 초기값을 변경할 수 없습니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/selfservice/ 디렉터리에 있는 selfservice- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-absent.yml selfservice-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. selfservice-absent-copy.yml Ansible 플레이북 파일을 편집하여 편집합니다.
  4. ipaselfservice 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 셀프 서비스 규칙의 이름으로 설정합니다.
    • state 변수를 absent 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Self-service absent
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure self-service rule "Users can manage their own name details" is absent
        ipaselfservice:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "Users can manage their own name details"
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-absent-copy.yml
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 기존 셀프 서비스 규칙에 특정 설정이 있는지 확인하는 방법을 설명합니다. 이 예제에서는 사용자가 자신의 이름 세부 정보 셀프 서비스 규칙에 멤버 속성도 관리할 수 있는지 확인합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 사용자는 IdM에 있는 고유한 이름 세부 정보 셀프 서비스 규칙을 관리할 수 있습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/selfservice/ 디렉터리에 있는 selfservice- member-present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-present.yml selfservice-member-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. selfservice-member-present-copy.yml Ansible 플레이북 파일을 편집하여 편집합니다.
  4. ipaselfservice 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 수정할 셀프 서비스 규칙의 이름으로 설정합니다.
    • 특성 변수를 성으로 설정합니다.
    • action 변수를 member 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Self-service member present
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure selfservice "Users can manage their own name details" member attribute surname is present
        ipaselfservice:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "Users can manage their own name details"
          attribute:
          - surname
          action: member
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-present-copy.yml
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 셀프 서비스 규칙에 특정 설정이 없는지 확인하는 방법을 설명합니다. 이 플레이북을 사용하여 셀프 서비스 규칙이 바람직하지 않은 액세스 권한을 부여하지 않도록 할 수 있습니다. 이 예에서 사용자는 이름 세부 정보 셀프 서비스 규칙에 지정된 이름과 멤버 속성이 없는지 확인합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 사용자는 IdM에 있는 고유한 이름 세부 정보 셀프 서비스 규칙을 관리할 수 있습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/selfservice/ 디렉터리에 있는 selfservice-member- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-absent.yml selfservice-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. selfservice-member-absent-copy.yml Ansible 플레이북 파일을 편집하여 편집합니다.
  4. ipaselfservice 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 수정할 셀프 서비스 규칙의 이름으로 설정합니다.
    • 특성 변수를 주어진 이름 및 성으로 설정합니다.
    • action 변수를 member 로 설정합니다.
    • state 변수를 absent 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Self-service member absent
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure selfservice "Users can manage their own name details" member attributes givenname and surname are absent
        ipaselfservice:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "Users can manage their own name details"
          attribute:
          - givenname
          - surname
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap

위임은 IdM의 액세스 제어 방법 중 하나로 셀프 서비스 규칙 및 역할 기반 액세스 제어(RBAC)와 함께 사용됩니다. 위임을 사용하여 한 사용자 그룹에 권한을 할당하여 다른 사용자 그룹의 항목을 관리할 수 있습니다.

이 섹션에서는 다음 주제를 다룹니다.

24.1. 위임 규칙

위임 규칙을 만들어 사용자 그룹에 권한을 위임하여 사용자를 관리할 수 있습니다.

위임 규칙을 사용하면 특정 사용자 그룹이 다른 사용자 그룹의 특정 속성에 대한 쓰기(편집) 작업을 수행할 수 있습니다. 이 형태의 액세스 제어 규칙은 위임 규칙에서 지정한 속성의 값 편집으로 제한됩니다. 전체 항목을 추가 또는 제거하는 기능을 부여하지 않습니다. 지정되지 않은 속성에 대해 전체 항목을 추가하거나 제어하는 기능을 부여하지 않습니다.

위임 규칙은 IdM의 기존 사용자 그룹에 권한을 부여합니다. 예를 들어 위임을 사용하여 managers 사용자 그룹이 employees 사용자 그룹에서 선택한 사용자 속성을 관리할 수 있습니다.

24.2. IdM CLI를 사용하여 위임 규칙 생성

IdM CLI를 사용하여 위임 규칙을 생성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • admins 그룹의 멤버로 로그인했습니다.

절차

  • ipa delegation-add 명령을 입력합니다. 다음 옵션을 지정합니다.

    • --group: 사용자 그룹의 사용자 항목에 권한을 부여하는 그룹입니다.
    • --membergroup: 위임 그룹의 멤버가 항목을 편집할 수 있는 그룹입니다.
    • --permissions: 사용자가 지정된 속성을 보고(읽기) 지정된 속성을 보고 주어진 속성을 추가하거나 변경할 수 있는지(쓰기). 권한을 지정하지 않으면 쓰기 권한만 추가됩니다.
    • --attrs: 멤버 그룹의 사용자가 보거나 편집할 수 있는 속성입니다.

    예를 들면 다음과 같습니다.

$ ipa delegation-add "basic manager attributes" --permissions=read --permissions=write --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --group=managers --membergroup=employees
-------------------------------------------
Added delegation "basic manager attributes"
-------------------------------------------
  Delegation name: basic manager attributes
  Permissions: read, write
  Attributes: businesscategory, departmentnumber, employeetype, employeenumber
  Member user group: employees
  User group: managers
Copy to Clipboard Toggle word wrap

24.3. IdM CLI를 사용하여 기존 위임 규칙 보기

IdM CLI를 사용하여 기존 위임 규칙을 보려면 다음 절차를 따르십시오.

사전 요구 사항

  • admins 그룹의 멤버로 로그인했습니다.

절차

  • ipa delegation-find 명령을 입력합니다.
$ ipa delegation-find
--------------------
1 delegation matched
--------------------
  Delegation name: basic manager attributes
  Permissions: read, write
  Attributes: businesscategory, departmentnumber, employeenumber, employeetype
  Member user group: employees
  User group: managers
----------------------------
Number of entries returned 1
----------------------------
Copy to Clipboard Toggle word wrap

24.4. IdM CLI를 사용하여 위임 규칙 수정

IdM CLI를 사용하여 기존 위임 규칙을 수정하려면 다음 절차를 따르십시오.

중요

--attrs 옵션은 지원되는 속성의 이전 목록을 덮어쓰므로 항상 새 속성과 함께 전체 속성 목록을 포함합니다. 이는 --permissions 옵션에도 적용됩니다.

사전 요구 사항

  • admins 그룹의 멤버로 로그인했습니다.

절차

  • 원하는 변경 사항을 사용하여 ipa delegation-mod 명령을 입력합니다. 예를 들어 기본 관리자 속성 예제 규칙에 displayname 속성을 추가하려면 다음을 수행합니다.

    $ ipa delegation-mod "basic manager attributes" --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --attrs=displayname
    ----------------------------------------------
    Modified delegation "basic manager attributes"
    ----------------------------------------------
      Delegation name: basic manager attributes
      Permissions: read, write
      Attributes: businesscategory, departmentnumber, employeetype, employeenumber, displayname
      Member user group: employees
      User group: managers
    Copy to Clipboard Toggle word wrap

24.5. IdM CLI를 사용하여 위임 규칙 삭제

IdM CLI를 사용하여 기존 위임 규칙을 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

  • admins 그룹의 멤버로 로그인했습니다.

절차

  • ipa delegation-del 명령을 입력합니다.
  • 메시지가 표시되면 삭제할 위임 규칙의 이름을 입력합니다.

    $ ipa delegation-del
    Delegation name: basic manager attributes
    ---------------------------------------------
    Deleted delegation "basic manager attributes"
    ---------------------------------------------
    Copy to Clipboard Toggle word wrap

위임은 IdM의 액세스 제어 방법 중 하나로 셀프 서비스 규칙 및 역할 기반 액세스 제어(RBAC)와 함께 사용됩니다. 위임을 사용하여 한 사용자 그룹에 권한을 할당하여 다른 사용자 그룹의 항목을 관리할 수 있습니다.

이 섹션에서는 다음 주제를 다룹니다.

25.1. 위임 규칙

위임 규칙을 만들어 사용자 그룹에 권한을 위임하여 사용자를 관리할 수 있습니다.

위임 규칙을 사용하면 특정 사용자 그룹이 다른 사용자 그룹의 특정 속성에 대한 쓰기(편집) 작업을 수행할 수 있습니다. 이 형태의 액세스 제어 규칙은 위임 규칙에서 지정한 속성의 값 편집으로 제한됩니다. 전체 항목을 추가 또는 제거하는 기능을 부여하지 않습니다. 지정되지 않은 속성에 대해 전체 항목을 추가하거나 제어하는 기능을 부여하지 않습니다.

위임 규칙은 IdM의 기존 사용자 그룹에 권한을 부여합니다. 예를 들어 위임을 사용하여 managers 사용자 그룹이 employees 사용자 그룹에서 선택한 사용자 속성을 관리할 수 있습니다.

25.2. IdM WebUI를 사용하여 위임 규칙 생성

IdM WebUI를 사용하여 위임 규칙을 생성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 admins 그룹의 멤버로 로그인했습니다.

절차

  1. IPA 서버 메뉴에서 역할 기반 액세스 제어위임을 클릭합니다.
  2. 추가를 클릭합니다.

  3. Add delegation(디렉토리 추가 ) 창에서 다음을 수행합니다.

    1. 새 위임 규칙의 이름을 지정합니다.
    2. 사용자가 지정된 속성(읽기)을 보고 지정된 속성을 추가하거나 변경할 수 있는지 여부를 나타내는 확인란을 선택하여 권한을 설정합니다.
    3. User group(사용자 그룹) 드롭다운 메뉴에서 권한을 부여 받고 있는 그룹을 선택하여 멤버 그룹에서 사용자 항목을 보거나 편집할 수 있습니다.
    4. Member 사용자 그룹 드롭다운 메뉴에서 위임 그룹의 구성원이 편집할 수 있는 그룹을 선택합니다.
    5. attributes(속성) 상자에서 권한을 부여할 속성별로 확인란을 선택합니다.

    6. Add(추가 ) 버튼을 클릭하여 새 위임 규칙을 저장합니다.

25.3. IdM WebUI를 사용하여 기존 위임 규칙 보기

IdM WebUI를 사용하여 기존 위임 규칙을 보려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 admins 그룹의 멤버로 로그인했습니다.

절차

  • IPA 서버 메뉴에서 역할 기반 액세스 제어위임을 클릭합니다.

25.4. IdM WebUI를 사용하여 위임 규칙 수정

IdM WebUI를 사용하여 기존 위임 규칙을 수정하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 admins 그룹의 멤버로 로그인했습니다.

절차

  1. IPA 서버 메뉴에서 역할 기반 액세스 제어위임을 클릭합니다.

  2. 수정할 규칙을 클릭합니다.
  3. 원하는 대로 변경합니다.

    • 규칙의 이름을 변경합니다.
    • 사용자가 지정된 속성(읽기)을 보고 지정된 속성을 추가하거나 변경할 수 있는지 여부를 나타내는 확인란을 선택하여 부여된 권한을 변경합니다.
    • User group(사용자 그룹) 드롭다운 메뉴에서 권한을 부여 받고 있는 그룹을 선택하여 멤버 그룹에서 사용자 항목을 보거나 편집할 수 있습니다.
    • Member 사용자 그룹 드롭다운 메뉴에서 위임 그룹의 구성원이 편집할 수 있는 그룹을 선택합니다.
    • attributes(속성) 상자에서 권한을 부여할 속성별로 확인란을 선택합니다. 속성에 대한 권한을 제거하려면 관련 확인란을 선택 취소합니다.

    • Save(저장 ) 버튼을 클릭하여 변경 사항을 저장합니다.

25.5. IdM WebUI를 사용하여 위임 규칙 삭제

IdM WebUI를 사용하여 기존 위임 규칙을 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 웹 UI에 admins 그룹의 멤버로 로그인했습니다.

절차

  1. IPA 서버 메뉴에서 역할 기반 액세스 제어위임을 클릭합니다.
  2. 제거할 규칙 옆에 있는 확인란을 선택합니다.
  3. 삭제를 클릭합니다.

  4. Delete(삭제) 를 클릭하여 확인합니다.

위임은 IdM의 액세스 제어 방법 중 하나로 셀프 서비스 규칙 및 역할 기반 액세스 제어(RBAC)와 함께 사용됩니다. 위임을 사용하여 한 사용자 그룹에 권한을 할당하여 다른 사용자 그룹의 항목을 관리할 수 있습니다.

이 섹션에서는 다음 주제를 다룹니다.

26.1. 위임 규칙

위임 규칙을 만들어 사용자 그룹에 권한을 위임하여 사용자를 관리할 수 있습니다.

위임 규칙을 사용하면 특정 사용자 그룹이 다른 사용자 그룹의 특정 속성에 대한 쓰기(편집) 작업을 수행할 수 있습니다. 이 형태의 액세스 제어 규칙은 위임 규칙에서 지정한 속성의 값 편집으로 제한됩니다. 전체 항목을 추가 또는 제거하는 기능을 부여하지 않습니다. 지정되지 않은 속성에 대해 전체 항목을 추가하거나 제어하는 기능을 부여하지 않습니다.

위임 규칙은 IdM의 기존 사용자 그룹에 권한을 부여합니다. 예를 들어 위임을 사용하여 managers 사용자 그룹이 employees 사용자 그룹에서 선택한 사용자 속성을 관리할 수 있습니다.

26.2. IdM용 Ansible 인벤토리 파일 생성

Ansible을 사용하는 경우 홈 디렉터리에서 /usr/share/doc/ ansible-freeipa/* 및 /usr/share/doc -roles/* 하위 디렉터리를 복사하고 적응하는 Ansible 플레이북 전용 하위 디렉터리를 생성하는 것이 좋습니다. 이 연습에는 다음과 같은 이점이 있습니다.

  • 모든 플레이북을 한 곳에서 찾을 수 있습니다.
  • 루트 권한을 호출하지 않고 플레이북을 실행할 수 있습니다.

절차

  1. 홈 디렉터리에서 Ansible 구성 및 플레이북의 디렉터리를 생성합니다.

    $ mkdir ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. ~/MyPlaybooks/ 디렉터리로 변경합니다.

    $ cd ~/MyPlaybooks
    Copy to Clipboard Toggle word wrap
  3. 다음 콘텐츠를 사용하여 ~/Myplaybooks/ansible.cfg 파일을 만듭니다.

    [defaults]
    inventory = /home/<username>/MyPlaybooks/inventory
    
    [privilege_escalation]
    become=True
    Copy to Clipboard Toggle word wrap
  4. 다음 콘텐츠를 사용하여 ~/Myplaybooks/inventory 파일을 만듭니다.

    [eu]
    server.idm.example.com
    
    [us]
    replica.idm.example.com
    
    [ipaserver:children]
    eu
    us
    Copy to Clipboard Toggle word wrap

    이 구성은 이러한 위치에 있는 호스트에 대한 두 개의 호스트 그룹인 euus 를 정의합니다. 또한 이 구성은 euus 그룹의 모든 호스트를 포함하는 ipaserver 호스트 그룹을 정의합니다.

26.3. Ansible을 사용하여 위임 규칙이 있는지 확인합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 새 IdM 위임 규칙에 대한 권한을 정의하고 해당 규칙이 있는지 확인하는 방법을 설명합니다. 이 예제에서 새 기본 관리자 속성 위임 규칙은 managers 그룹에 employees 그룹 구성원에 대해 다음 속성을 읽고 쓸 수 있는 기능을 부여합니다.

  • businesscategory
  • departmentnumber
  • employeenumber
  • employeetype

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/delegation/ 디렉토리에 있는 delegation- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집 할 delegation-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipadelegation 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 새 위임 규칙의 이름으로 설정합니다.
    • 권한 변수를 쉼표로 구분된 권한 목록( 읽기쓰기 )으로 설정합니다.
    • 속성 변수를 위임된 사용자 그룹이 관리할 수 있는 속성 목록(business category,departmentnumber, employeenumber, employeetype ) 으로 설정합니다.
    • 그룹 변수를 특성 보기 또는 수정에 대한 액세스 권한이 부여되는 그룹의 이름으로 설정합니다.
    • membergroup 변수를 속성을 보거나 수정할 수 있는 그룹의 이름으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage a delegation rule
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure delegation "basic manager attributes" is present
        ipadelegation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "basic manager attributes"
          permission: read, write
          attribute:
          - businesscategory
          - departmentnumber
          - employeenumber
          - employeetype
          group: managers
          membergroup: employees
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-present-copy.yml
    Copy to Clipboard Toggle word wrap

26.4. Ansible을 사용하여 위임 규칙이 없는지 확인합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM 구성에 지정된 위임 규칙이 없는지 확인하는 방법을 설명합니다. 아래 예제에서는 사용자 지정 기본 관리자 속성 위임 규칙이 IdM에 없는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/delegation/ 디렉토리에 있는 delegation- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집 할 delegation-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipadelegation 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 위임 규칙의 이름으로 설정합니다.
    • state 변수를 absent 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Delegation absent
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure delegation "basic manager attributes" is absent
        ipadelegation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "basic manager attributes"
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-absent-copy.yml
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 위임 규칙에 특정 설정이 있는지 확인하는 방법을 설명합니다. 이 플레이북을 사용하여 이전에 만든 위임 역할을 수정할 수 있습니다. 이 예제에서는 기본 관리자 속성 위임 규칙에 departmentnumber 멤버 속성만 있는지 확인합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 기본 관리자 속성 위임 규칙은 IdM에 있습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/delegation/ 디렉터리에 있는 delegation- member-present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-present.yml delegation-member-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집 할 delegation-member-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipadelegation 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 위임 규칙의 이름으로 설정하여 수정합니다.
    • 특성 변수를 departmentnumber 로 설정합니다.
    • action 변수를 member 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Delegation member present
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure delegation "basic manager attributes" member attribute departmentnumber is present
        ipadelegation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "basic manager attributes"
          attribute:
          - departmentnumber
          action: member
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-present-copy.yml
    Copy to Clipboard Toggle word wrap

다음 절차에서는 Ansible 플레이북을 사용하여 위임 규칙에 특정 설정이 없는지 확인하는 방법을 설명합니다. 이 플레이북을 사용하여 위임 역할이 바람직하지 않은 액세스 권한을 부여하지 않도록 할 수 있습니다. 이 예제에서는 기본 관리자 속성 위임 규칙에 employeenumber 및 employee type 멤버 속성이 없는지 확인합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 기본 관리자 속성 위임 규칙은 IdM에 있습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/delegation/ 디렉토리에 있는 delegation- member-absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-absent.yml delegation-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집 할 delegation-member-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipadelegation 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 위임 규칙의 이름으로 설정하여 수정합니다.
    • 특성 변수를 employeenumber 및 employee type 으로 설정합니다.
    • action 변수를 member 로 설정합니다.
    • state 변수를 absent 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Delegation member absent
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure delegation "basic manager attributes" member attributes employeenumber and employeetype are absent
        ipadelegation:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: "basic manager attributes"
          attribute:
          - employeenumber
          - employeetype
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap

27장. CLI를 사용하여 IdM에서 역할 기반 액세스 제어 관리

IdM(Identity Management)의 역할 기반 액세스 제어 및 CLI(명령줄 인터페이스)에서 실행되는 다음 작업에 대해 자세히 알아보십시오.

27.1. IdM의 역할 기반 액세스 제어

IdM의 역할 기반 액세스 제어(RBAC)는 셀프 서비스 및 위임 액세스 제어와 비교하여 사용자에게 매우 다른 종류의 권한을 부여합니다.

역할 기반 액세스 제어는 다음 세 부분으로 구성됩니다.

  • 권한 은 사용자 추가 또는 삭제, 그룹 수정, 읽기 액세스 활성화와 같은 특정 작업을 수행할 수 있는 권한을 부여합니다.
  • 권한은 권한을 결합합니다(예: 새 사용자를 추가하는 데 필요한 모든 권한).
  • 역할은 사용자, 사용자 그룹, 호스트 또는 호스트 그룹에 일련의 권한을 부여합니다.

27.1.1. IdM의 권한

권한은 역할 기반 액세스 제어의 최하위 단위이며, 해당 작업이 적용되는 LDAP 항목과 함께 작업을 정의합니다. 구성 요소와 비교했을 때 필요한 수의 권한에 권한을 할당할 수 있습니다.
하나 이상의 권한은 다음을 허용하는 작업을 정의합니다.

  • write
  • read
  • search
  • 비교
  • add
  • delete
  • all

이러한 작업은 세 개의 기본 대상에 적용됩니다 :

  • subtree: 도메인 이름(DN), 이 DN 아래의 하위 트리
  • 대상 필터: LDAP 필터
  • 대상: 항목을 지정하는 데 사용할 수 있는 와일드카드가 있는 DN

또한 다음과 같은 편의성 옵션은 해당 특성을 설정합니다.

  • type: 유형의 개체 (사용자, 그룹 등)는 subtreetarget filter를 설정합니다.
  • memberOf: 그룹의 구성원; 대상 필터를설정합니다.
  • targetGroup: 특정 그룹을 수정할 액세스 권한을 부여합니다(예: 그룹 멤버십을 관리할 수 있는 권한 부여). 대상을설정합니다.

IdM 권한을 사용하면 어떤 사용자가 어떤 오브젝트에 대한 액세스 권한이 있는지 그리고 이러한 오브젝트의 속성까지 제어할 수 있습니다. IdM을 사용하면 개별 속성을 허용 또는 차단하거나 사용자, 그룹 또는 sudo와 같은 특정 IdM 기능의 전체 가시성을 모든 익명 사용자, 모든 인증된 사용자 또는 특정 권한 있는 사용자 그룹에 변경할 수 있습니다.
예를 들어 이 접근 방식의 권한의 유연성은 사용자 또는 그룹에 대한 액세스만 제한하려는 관리자에게 유용합니다. 사용자 또는 그룹이 액세스해야 하는 특정 섹션으로만 액세스하고 다른 섹션에 완전히 숨길 수 있도록 합니다.

참고

권한에는 다른 권한이 포함될 수 없습니다.

27.1.2. 기본 관리 권한

관리 권한은 기본적으로 IdM과 함께 제공되는 권한입니다. 다음과 같은 차이점을 사용하여 사용자가 생성한 다른 권한처럼 작동합니다.

  • 해당 파일을 삭제하거나 이름, 위치, 대상 특성을 수정할 수 없습니다.
  • 여기에는 세 가지 속성 세트가 있습니다.

    • 기본 속성은 IdM에서 관리하므로 사용자가 수정할 수 없습니다.
    • 사용자가 추가한 속성인 포함된 속성
    • 사용자가 제거하는 속성인 제외된 속성

관리되는 권한은 기본 및 포함된 특성 세트에 표시되지만 제외된 속성 세트에는 표시되지 않는 모든 속성에 적용됩니다.

참고

관리 권한을 삭제할 수는 없지만 바인딩 유형을 권한으로 설정하고 모든 권한에서 관리 권한을 제거하면 효과적으로 비활성화됩니다.

관리되는 모든 권한의 이름은 시스템:(예: 시스템): Sudo rule 또는 시스템을 추가합니다: Services 를 수정합니다. 이전 버전의 IdM에서는 기본 권한에 다른 체계를 사용했습니다. 예를 들어 사용자는 삭제할 수 없으며 권한에만 할당할 수 있었습니다. 이러한 기본 권한은 대부분 관리 권한으로 설정되었지만 다음 권한은 여전히 이전 체계를 사용합니다.

  • Automember Rebuild Membership 작업 추가
  • 구성 하위 항목 추가
  • 복제 계약 추가
  • 인증서 제거 보류
  • CA에서 인증서 상태 가져오기
  • DNA 범위 읽기
  • DNA 범위 수정
  • PassSync 관리자 구성 읽기
  • PassSync 관리자 구성 수정
  • 복제 계약 읽기
  • 복제 계약 수정
  • 복제 계약 제거
  • LDBM 데이터베이스 구성 읽기
  • 요청 인증서
  • CA ACL을 무시하는 인증서 요청
  • 다른 호스트의 인증서 요청
  • CA에서 인증서 검색
  • 인증서 해지
  • IPA 설정 쓰기
참고

명령줄에서 관리 권한을 수정하려고 하면 시스템에서 수정할 수 없는 특성을 변경할 수 없으므로 명령이 실패합니다. 웹 UI에서 관리 권한을 수정하려고 하면 수정할 수 없는 속성이 비활성화됩니다.

27.1.3. IdM의 권한

권한은 역할에 적용할 수 있는 권한 그룹입니다.
권한은 단일 작업을 수행할 수 있는 권한을 제공하지만 성공하려면 여러 권한이 필요한 특정 IdM 작업이 있습니다. 따라서 권한은 특정 작업을 수행하는 데 필요한 다양한 권한을 결합합니다.
예를 들어 새 IdM 사용자의 계정을 설정하려면 다음과 같은 권한이 필요합니다.

  • 새 사용자 항목 생성
  • 사용자 암호 재설정
  • 새 사용자를 기본 IPA 사용자 그룹에 추가

이러한 세 가지 하위 수준 작업을 이름이 지정된 사용자 지정 권한의 형태로 더 높은 수준의 작업(예: 사용자 추가) 에 결합하면 시스템 관리자가 역할을 쉽게 관리할 수 있습니다. IdM에는 이미 몇 가지 기본 권한이 포함되어 있습니다. 사용자 및 사용자 그룹 외에도 호스트 및 호스트 그룹은 네트워크 서비스에도 권한이 할당됩니다. 이 방법을 사용하면 특정 네트워크 서비스를 사용하는 호스트 집합의 사용자 집합에 의한 작업을 세부적으로 제어할 수 있습니다.

참고

권한에는 다른 권한이 없을 수 있습니다.

27.1.4. IdM의 역할

역할은 역할에 지정된 사용자가 보유하는 권한 목록입니다.
실제로 권한은 지정된 하위 수준 작업(예: 사용자 항목 생성 및 그룹에 항목을 추가하는 등)을 수행할 수 있는 기능을 부여하며, 권한은 상위 수준 작업(예: 지정된 그룹에서 새 사용자를 만드는 등)에 필요한 이러한 권한 중 하나 이상을 결합합니다. 역할은 필요에 따라 권한을 함께 수집합니다. 예를 들어 사용자 관리자 역할은 사용자를 추가, 수정, 삭제할 수 있습니다.

중요

역할은 허용된 작업을 분류하는 데 사용됩니다. 권한 분리를 구현하거나 권한 에스컬레이션으로부터 보호하는 툴로 사용되지 않습니다.

참고

역할에 다른 역할은 포함할 수 없습니다.

27.1.5. ID 관리에 사전 정의된 역할

Red Hat Identity Management는 다음과 같은 일련의 사전 정의 역할을 제공합니다.

Expand
표 27.1. ID 관리에서 사전 정의된 역할
Role권한설명

등록 관리자

호스트 등록

클라이언트 또는 호스트 등록 담당자

helpdesk

사용자 및 암호 재설정, 그룹 멤버십 수정

간단한 사용자 관리 작업 수행 담당

IT 보안 전문가

Netgroups 관리자, HBAC 관리자, Sudo 관리자

호스트 기반 액세스 제어와 같은 보안 정책 관리, sudo 규칙

IT 전문가

호스트 관리자, 호스트 그룹 관리자, 서비스 관리자, 자동 마운트 관리자

호스트 관리 담당

보안 설계자

위임 관리자, 복제 관리자, 쓰기 IPA 구성, 암호 정책 관리자

Identity Management 환경 관리, 신뢰 생성, 복제 계약 생성

사용자 관리자

사용자 관리자, 그룹 관리자, 단계 사용자 관리자

사용자 및 그룹 생성 담당

27.2. CLI에서 IdM 권한 관리

CLI(명령줄 인터페이스)를 사용하여 IdM(Identity Management) 권한을 관리하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. ipa permission-add 명령을 사용하여 새 권한 항목을 생성합니다.
    예를 들어 dns admin 이라는 권한을 추가하려면 :

    $ ipa permission-add "dns admin"
    Copy to Clipboard Toggle word wrap
  2. 다음 옵션을 사용하여 권한의 속성을 지정합니다.

    • --bindtype 은 바인드 규칙 유형을 지정합니다. 이 옵션은 모든,익명권한 인수를 허용합니다. 권한 바인드 유형은 역할을 통해 이 권한을 부여 받은 사용자만 수행할 수 있음을 나타냅니다.
      예를 들면 다음과 같습니다.

      $ ipa permission-add "dns admin" --bindtype=all
      Copy to Clipboard Toggle word wrap

      --bindtype 을 지정하지 않으면 permission 이 기본값입니다.

      참고

      기본이 아닌 바인드 규칙 유형의 권한을 권한에 추가할 수 없습니다. 또한 권한이 이미 권한에 있는 권한을 기본이 아닌 바인드 규칙 유형으로 설정할 수 없습니다.

    • --right 는 권한에 의해 부여된 권한을 나열하고 더 이상 사용되지 않는 --permissions 옵션을 대체합니다. 사용 가능한 값은 add,delete,read,search,compare,write,all 입니다.

      여러 --right 옵션을 사용하거나 중괄호 안에 쉼표로 구분된 목록을 사용하여 여러 특성을 설정할 수 있습니다. 예를 들면 다음과 같습니다.

      $ ipa permission-add "dns admin" --right=read --right=write
      Copy to Clipboard Toggle word wrap
      $ ipa permission-add "dns admin" --right={read,write}
      Copy to Clipboard Toggle word wrap
      참고

      추가삭제 는 항목 수준 작업(예: 사용자 삭제, 그룹 추가, 그룹 추가 등)입니다. 읽기,검색,비교쓰기 는 더 많은 속성 수준: userCertificate 에 쓸 수 있지만 userPassword 를 읽을 수 없습니다.

    • --attrs 는 권한이 부여되는 속성 목록을 제공합니다.
      여러 --attrs 옵션을 사용하거나 중괄호 안의 쉼표로 구분된 목록에 옵션을 나열하여 여러 특성을 설정할 수 있습니다. 예를 들면 다음과 같습니다.

      $ ipa permission-add "dns admin" --attrs=description --attrs=automountKey
      Copy to Clipboard Toggle word wrap
      $ ipa permission-add "dns admin" --attrs={description,automountKey}
      Copy to Clipboard Toggle word wrap

      --attrs 로 제공되는 속성은 존재해야 하며 지정된 오브젝트 유형에 대해 허용된 속성이 있어야 합니다. 그렇지 않으면 스키마 구문 오류로 인해 명령이 실패합니다.

    • --type 은 권한이 적용되는 항목 오브젝트 유형(예: 사용자, 호스트 또는 서비스)을 정의합니다. 각 유형에는 허용된 속성 집합이 있습니다.
      예를 들면 다음과 같습니다.

      $ ipa permission-add "manage service" --right=all --type=service --attrs=krbprincipalkey --attrs=krbprincipalname --attrs=managedby
      Copy to Clipboard Toggle word wrap
    • --subtree 는 하위 트리 항목을 제공합니다. 필터는 이 하위 트리 항목 아래의 모든 항목을 대상으로 합니다. 기존 하위 트리 항목을 제공합니다 . --subtree 는 와일드카드 또는 존재하지 않는 도메인 이름(DN)을 허용하지 않습니다. 디렉터리에 DN을 포함합니다.
      IdM은 간소화된 플랫 디렉터리 트리 구조를 사용하기 때문에 --subtree 를 사용하여 다른 구성의 컨테이너 또는 상위 항목인 자동 마운트 위치와 같은 일부 항목을 대상으로 지정할 수 있습니다. 예를 들면 다음과 같습니다.

      $ ipa permission-add "manage automount locations" --subtree="ldap://ldap.example.com:389/cn=automount,dc=example,dc=com" --right=write --attrs=automountmapname --attrs=automountkey --attrs=automountInformation
      Copy to Clipboard Toggle word wrap
      참고

      type--subtree 옵션은 상호 배타적입니다. --type에 대한 필터가 -- subtree 의 간소화로 표시되어 관리자가 쉽게 사용할 수 있도록 합니다.

    • --filter 는 LDAP 필터를 사용하여 권한이 적용되는 항목을 식별합니다.
      IdM은 지정된 필터의 유효성을 자동으로 확인합니다. 필터는 유효한 LDAP 필터일 수 있습니다. 예를 들면 다음과 같습니다.

      $ ipa permission-add "manage Windows groups" --filter="(!(objectclass=posixgroup))" --right=write --attrs=description
      Copy to Clipboard Toggle word wrap
    • --memberOf는 그룹이 존재하는지 확인한 후 대상 필터를 지정된 그룹의 멤버로 설정합니다. 예를 들어 이 권한이 있는 사용자가 engineer 그룹의 멤버의 로그인 쉘을 수정하도록 하려면 다음을 수행합니다.

      $ ipa permission-add ManageShell --right="write" --type=user --attr=loginshell --memberof=engineers
      Copy to Clipboard Toggle word wrap
    • --targetGroup 은 그룹이 존재하는지 확인한 후 지정된 사용자 그룹으로 target을 설정합니다. 예를 들어 권한이 있는 사용자가 engineers 그룹에 member 속성을 쓰도록 하려면(구성원 추가 또는 제거 가능).

      $ ipa permission-add ManageMembers --right="write" --subtree=cn=groups,cn=accounts,dc=example,dc=test --attr=member --targetgroup=engineers
      Copy to Clipboard Toggle word wrap
    • 선택적으로 DN(대상 도메인 이름)을 지정할 수 있습니다.

      • --target 은 권한을 적용할 DN을 지정합니다. 와일드카드가 허용됩니다.
      • --targetto 는 항목을 이동할 수 있는 DN 하위 트리를 지정합니다.
      • --targetfrom 은 항목을 이동할 수 있는 DN 하위 트리를 지정합니다.

27.3. 기존 권한의 명령 옵션

필요에 따라 다음 변형을 사용하여 기존 권한을 수정합니다.

  • 기존 권한을 편집하려면 ipa permission-mod 명령을 사용합니다. 권한을 추가할 때 와 동일한 명령 옵션을 사용할 수 있습니다.
  • 기존 권한을 찾으려면 ipa permission-find 명령을 사용합니다. 권한을 추가할 때 와 동일한 명령 옵션을 사용할 수 있습니다.
  • 특정 권한을 보려면 ipa permission-show 명령을 사용합니다.
    --raw 인수는 생성된 원시 389-ds ACI를 보여줍니다. 예를 들면 다음과 같습니다.

     $ ipa permission-show <permission> --raw
    Copy to Clipboard Toggle word wrap
  • ipa permission-del 명령은 권한을 완전히 삭제합니다.

27.4. CLI에서 IdM 권한 관리

CLI(명령줄 인터페이스)를 사용하여 IdM(Identity Management) 권한을 관리하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. ipa privilege-add 명령
    을(를) 사용하여 권한 항목을 추가합니다. 예: 설명으로 파일 시스템 관리 라는 권한을 추가하려면 다음을 실행합니다.

    $ ipa privilege-add "managing filesystems" --desc="for filesystems"
    Copy to Clipboard Toggle word wrap
  2. 예를 들어, privilege-add-permission 명령을 사용하여 권한 그룹에 필요한 권한을 할당합니다. 예를 들어 자동 마운트 관리 및 ftp 서비스 관리 라는 권한을 파일 시스템 권한 관리에 추가하려면 다음을 수행합니다.

    $ ipa privilege-add-permission "managing filesystems" --permissions="managing automount" --permissions="managing ftp services"
    Copy to Clipboard Toggle word wrap

27.5. 기존 권한에 대한 명령 옵션

필요에 따라 기존 권한을 수정하려면 다음 변형을 사용합니다.

  • 기존 권한을 수정하려면 ipa privilege-mod 명령을 사용합니다.
  • 기존 권한을 찾으려면 ipa privilege-find 명령을 사용합니다.
  • 특정 권한을 보려면 ipa privilege-show 명령을 사용합니다.
  • ipa privilege-remove-permission 명령은 권한에서 하나 이상의 권한을 제거합니다.
  • ipa privilege-del 명령은 권한을 완전히 삭제합니다.

27.6. CLI에서 IdM 역할 관리

CLI(명령줄 인터페이스)를 사용하여 IdM(Identity Management) 역할을 관리하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. ipa role-add 명령을 사용하여 새 역할 항목을 추가합니다.

    $ ipa role-add --desc="User Administrator" useradmin
    ------------------------
    Added role "useradmin"
    ------------------------
    Role name: useradmin
    Description: User Administrator
    Copy to Clipboard Toggle word wrap
  2. ipa role-add-privilege 명령을 사용하여 필요한 권한을 역할에 추가합니다.

    $ ipa role-add-privilege --privileges="user administrators" useradmin
    Role name: useradmin
    Description: User Administrator
    Privileges: user administrators
    ----------------------------
    Number of privileges added 1
    ----------------------------
    Copy to Clipboard Toggle word wrap
  3. ipa role-add-member 명령을 사용하여 필요한 멤버를 역할에 추가합니다. 허용되는 멤버 유형은 사용자, 그룹, 호스트 및 호스트 그룹입니다.
    예를 들어 useradmins라는 그룹을 이전에 생성한 useradmin 역할에 추가하려면 다음을 수행합니다.

    $ ipa role-add-member --groups=useradmins useradmin
    Role name: useradmin
    Description: User Administrator
    Member groups: useradmins
    Privileges: user administrators
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap

27.7. 기존 역할에 대한 명령 옵션

필요에 따라 다음 변형을 사용하여 기존 역할을 수정합니다.

  • 기존 역할을 수정하려면 ipa role-mod 명령을 사용합니다.
  • 기존 역할을 찾으려면 ipa role-find 명령을 사용합니다.
  • 특정 역할을 보려면 ipa role-show 명령을 사용합니다.
  • 역할에서 멤버를 제거하려면 ipa role-remove-member 명령을 사용합니다.
  • ipa role-remove-privilege 명령은 역할에서 하나 이상의 권한을 제거합니다.
  • ipa role-del 명령은 역할을 완전히 삭제합니다.

28장. IdM 웹 UI를 사용하여 역할 기반 액세스 제어 관리

IdM(Identity Management)의 역할 기반 액세스 제어 및 웹 인터페이스(Web UI)에서 실행되는 다음 작업에 대해 자세히 알아보십시오.

28.1. IdM의 역할 기반 액세스 제어

IdM의 역할 기반 액세스 제어(RBAC)는 셀프 서비스 및 위임 액세스 제어와 비교하여 사용자에게 매우 다른 종류의 권한을 부여합니다.

역할 기반 액세스 제어는 다음 세 부분으로 구성됩니다.

  • 권한 은 사용자 추가 또는 삭제, 그룹 수정, 읽기 액세스 활성화와 같은 특정 작업을 수행할 수 있는 권한을 부여합니다.
  • 권한은 권한을 결합합니다(예: 새 사용자를 추가하는 데 필요한 모든 권한).
  • 역할은 사용자, 사용자 그룹, 호스트 또는 호스트 그룹에 일련의 권한을 부여합니다.

28.1.1. IdM의 권한

권한은 역할 기반 액세스 제어의 최하위 단위이며, 해당 작업이 적용되는 LDAP 항목과 함께 작업을 정의합니다. 구성 요소와 비교했을 때 필요한 수의 권한에 권한을 할당할 수 있습니다.
하나 이상의 권한은 다음을 허용하는 작업을 정의합니다.

  • write
  • read
  • search
  • 비교
  • add
  • delete
  • all

이러한 작업은 세 개의 기본 대상에 적용됩니다 :

  • subtree: 도메인 이름(DN), 이 DN 아래의 하위 트리
  • 대상 필터: LDAP 필터
  • 대상: 항목을 지정하는 데 사용할 수 있는 와일드카드가 있는 DN

또한 다음과 같은 편의성 옵션은 해당 특성을 설정합니다.

  • type: 유형의 개체 (사용자, 그룹 등)는 subtreetarget filter를 설정합니다.
  • memberOf: 그룹의 구성원; 대상 필터를설정합니다.
  • targetGroup: 특정 그룹을 수정할 액세스 권한을 부여합니다(예: 그룹 멤버십을 관리할 수 있는 권한 부여). 대상을설정합니다.

IdM 권한을 사용하면 어떤 사용자가 어떤 오브젝트에 대한 액세스 권한이 있는지 그리고 이러한 오브젝트의 속성까지 제어할 수 있습니다. IdM을 사용하면 개별 속성을 허용 또는 차단하거나 사용자, 그룹 또는 sudo와 같은 특정 IdM 기능의 전체 가시성을 모든 익명 사용자, 모든 인증된 사용자 또는 특정 권한 있는 사용자 그룹에 변경할 수 있습니다.
예를 들어 이 접근 방식의 권한의 유연성은 사용자 또는 그룹에 대한 액세스만 제한하려는 관리자에게 유용합니다. 사용자 또는 그룹이 액세스해야 하는 특정 섹션으로만 액세스하고 다른 섹션에 완전히 숨길 수 있도록 합니다.

참고

권한에는 다른 권한이 포함될 수 없습니다.

28.1.2. 기본 관리 권한

관리 권한은 기본적으로 IdM과 함께 제공되는 권한입니다. 다음과 같은 차이점을 사용하여 사용자가 생성한 다른 권한처럼 작동합니다.

  • 해당 파일을 삭제하거나 이름, 위치, 대상 특성을 수정할 수 없습니다.
  • 여기에는 세 가지 속성 세트가 있습니다.

    • 기본 속성은 IdM에서 관리하므로 사용자가 수정할 수 없습니다.
    • 사용자가 추가한 속성인 포함된 속성
    • 사용자가 제거하는 속성인 제외된 속성

관리되는 권한은 기본 및 포함된 특성 세트에 표시되지만 제외된 속성 세트에는 표시되지 않는 모든 속성에 적용됩니다.

참고

관리 권한을 삭제할 수는 없지만 바인딩 유형을 권한으로 설정하고 모든 권한에서 관리 권한을 제거하면 효과적으로 비활성화됩니다.

관리되는 모든 권한의 이름은 시스템:(예: 시스템): Sudo rule 또는 시스템을 추가합니다: Services 를 수정합니다. 이전 버전의 IdM에서는 기본 권한에 다른 체계를 사용했습니다. 예를 들어 사용자는 삭제할 수 없으며 권한에만 할당할 수 있었습니다. 이러한 기본 권한은 대부분 관리 권한으로 설정되었지만 다음 권한은 여전히 이전 체계를 사용합니다.

  • Automember Rebuild Membership 작업 추가
  • 구성 하위 항목 추가
  • 복제 계약 추가
  • 인증서 제거 보류
  • CA에서 인증서 상태 가져오기
  • DNA 범위 읽기
  • DNA 범위 수정
  • PassSync 관리자 구성 읽기
  • PassSync 관리자 구성 수정
  • 복제 계약 읽기
  • 복제 계약 수정
  • 복제 계약 제거
  • LDBM 데이터베이스 구성 읽기
  • 요청 인증서
  • CA ACL을 무시하는 인증서 요청
  • 다른 호스트의 인증서 요청
  • CA에서 인증서 검색
  • 인증서 해지
  • IPA 설정 쓰기
참고

명령줄에서 관리 권한을 수정하려고 하면 시스템에서 수정할 수 없는 특성을 변경할 수 없으므로 명령이 실패합니다. 웹 UI에서 관리 권한을 수정하려고 하면 수정할 수 없는 속성이 비활성화됩니다.

28.1.3. IdM의 권한

권한은 역할에 적용할 수 있는 권한 그룹입니다.
권한은 단일 작업을 수행할 수 있는 권한을 제공하지만 성공하려면 여러 권한이 필요한 특정 IdM 작업이 있습니다. 따라서 권한은 특정 작업을 수행하는 데 필요한 다양한 권한을 결합합니다.
예를 들어 새 IdM 사용자의 계정을 설정하려면 다음과 같은 권한이 필요합니다.

  • 새 사용자 항목 생성
  • 사용자 암호 재설정
  • 새 사용자를 기본 IPA 사용자 그룹에 추가

이러한 세 가지 하위 수준 작업을 이름이 지정된 사용자 지정 권한의 형태로 더 높은 수준의 작업(예: 사용자 추가) 에 결합하면 시스템 관리자가 역할을 쉽게 관리할 수 있습니다. IdM에는 이미 몇 가지 기본 권한이 포함되어 있습니다. 사용자 및 사용자 그룹 외에도 호스트 및 호스트 그룹은 네트워크 서비스에도 권한이 할당됩니다. 이 방법을 사용하면 특정 네트워크 서비스를 사용하는 호스트 집합의 사용자 집합에 의한 작업을 세부적으로 제어할 수 있습니다.

참고

권한에는 다른 권한이 없을 수 있습니다.

28.1.4. IdM의 역할

역할은 역할에 지정된 사용자가 보유하는 권한 목록입니다.
실제로 권한은 지정된 하위 수준 작업(예: 사용자 항목 생성 및 그룹에 항목을 추가하는 등)을 수행할 수 있는 기능을 부여하며, 권한은 상위 수준 작업(예: 지정된 그룹에서 새 사용자를 만드는 등)에 필요한 이러한 권한 중 하나 이상을 결합합니다. 역할은 필요에 따라 권한을 함께 수집합니다. 예를 들어 사용자 관리자 역할은 사용자를 추가, 수정, 삭제할 수 있습니다.

중요

역할은 허용된 작업을 분류하는 데 사용됩니다. 권한 분리를 구현하거나 권한 에스컬레이션으로부터 보호하는 툴로 사용되지 않습니다.

참고

역할에 다른 역할은 포함할 수 없습니다.

28.1.5. ID 관리에 사전 정의된 역할

Red Hat Identity Management는 다음과 같은 일련의 사전 정의 역할을 제공합니다.

Expand
표 28.1. ID 관리에서 사전 정의된 역할
Role권한설명

등록 관리자

호스트 등록

클라이언트 또는 호스트 등록 담당자

helpdesk

사용자 및 암호 재설정, 그룹 멤버십 수정

간단한 사용자 관리 작업 수행 담당

IT 보안 전문가

Netgroups 관리자, HBAC 관리자, Sudo 관리자

호스트 기반 액세스 제어와 같은 보안 정책 관리, sudo 규칙

IT 전문가

호스트 관리자, 호스트 그룹 관리자, 서비스 관리자, 자동 마운트 관리자

호스트 관리 담당

보안 설계자

위임 관리자, 복제 관리자, 쓰기 IPA 구성, 암호 정책 관리자

Identity Management 환경 관리, 신뢰 생성, 복제 계약 생성

사용자 관리자

사용자 관리자, 그룹 관리자, 단계 사용자 관리자

사용자 및 그룹 생성 담당

28.2. IdM 웹 UI에서 권한 관리

IdM(Identity Management)에서 웹 인터페이스(IdM)를 사용하여 권한을 관리하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. 새 권한을 추가하려면 IPA 서버 탭에서 역할 기반 액세스 제어 하위 메뉴를 열고 사용 권한 을 선택합니다.

    Permissions task

  2. 권한 목록이 열립니다. 권한 목록 상단에 있는 Add 단추를 클릭합니다.

    Adding a new permission

  3. Add Permission(권한 추가) 양식이 열립니다. 새 권한의 이름을 지정하고 그에 따라 속성을 정의합니다.

    Form for adding a permission

  4. 적절한 Bind 규칙 유형을 선택합니다.

    • 권한은 기본 권한 유형으로, 권한 및 역할을 통해 액세스 권한을 부여합니다.
    • all 은 권한이 인증된 모든 사용자에게 적용되도록 지정합니다.
    • anonymous 는 인증되지 않은 사용자를 포함하여 모든 사용자에게 권한이 적용되도록 지정합니다.

      참고

      기본이 아닌 바인드 규칙 유형의 권한을 권한에 추가할 수 없습니다. 또한 권한이 이미 권한에 있는 권한을 기본이 아닌 바인드 규칙 유형으로 설정할 수 없습니다.

  5. 부여된 권리에서 이 권한에 대해 부여할 권한을 선택하십시오 .
  6. 권한에 대한 대상 항목을 식별하는 메서드를 정의합니다.

    • type은 사용자, 호스트 또는 서비스와 같은 항목 유형을 지정합니다. Type (유형) 설정에 값을 선택하면 해당 항목 유형에 대해 이 ACI를 통해 액세스할 수 있는 모든 가능한 속성 목록이 유효 속성 아래에 표시됩니다. Type( 유형 )을 정의하면 사전 정의된 값 중 하나로 SubtreeTarget DN 이 설정됩니다.
    • subtree (필수)는 subtree 항목을 지정합니다. 그러면 이 subtree 항목 아래의 모든 항목을 대상으로 지정합니다. Subtree 는 와일드카드 또는 존재하지 않는 도메인 이름(DN)을 허용하지 않으므로 기존 하위 트리 항목을 제공합니다. 예: cn=automount,dc=example,dc=com
    • 추가 대상 필터는 LDAP 필터를 사용하여 권한이 적용되는 항목을 식별합니다. 필터는 유효한 LDAP 필터일 수 있습니다(예: (!(objectclass=posixgroup))
      IdM은 지정된 필터의 유효성을 자동으로 확인합니다. 잘못된 필터를 입력하면 IdM에서 권한을 저장하려고 할 때 이 문제에 대해 경고합니다.
    • 대상 DN 은 DN(도메인 이름)을 지정하고 와일드카드를 허용합니다. 예: uid=*,cn=users,cn=accounts,dc=com
    • 그룹의 멤버 는 대상 필터를 지정된 그룹의 멤버로 설정합니다. 필터 설정을 지정하고 Add 를 클릭하면 IdM에서 필터를 검증합니다. 모든 권한 설정이 올바르면 IdM에서 검색을 수행합니다. 일부 권한 설정이 올바르지 않으면 IdM은 어떤 설정이 잘못 설정되었는지 알려주는 메시지를 표시합니다.
  7. 권한에 속성을 추가합니다.

    • 유형을 설정하는 경우 사용 가능한 ACI 속성 목록에서 유효한 속성을 선택합니다.
    • Type (유형)을 사용하지 않은 경우 Effective attributes(유효한 속성) 필드에 수동으로 속성을 추가하여 속성을 추가합니다. 한 번에 단일 속성을 추가합니다. 여러 특성을 추가하려면 Add(추가 )를 클릭하여 다른 입력 필드를 추가합니다.

      중요

      권한에 대한 속성을 설정하지 않으면 권한에는 기본적으로 모든 속성이 포함됩니다.

  8. 양식 하단에 Add(추가) 버튼을 사용하여 권한 추가를 완료합니다.

    • Add(추가 ) 버튼을 클릭하여 권한을 저장하고 권한 목록으로 돌아갑니다.
    • 또는 권한을 저장하고 Add(추가) 버튼을 클릭하여 동일한 양식에 추가 권한을 추가할 수 있습니다.
    • Add and Edit(추가 및 편집 ) 버튼을 사용하면 새로 만든 권한을 저장하고 계속 편집할 수 있습니다.
  9. 선택 사항: 권한 목록에서 해당 이름을 클릭하여 권한 설정 페이지를 표시하여 기존 권한의 속성을 편집할 수도 있습니다.
  10. 선택 사항: 기존 권한을 제거해야 하는 경우 목록의 이름 옆에 있는 확인란을 선택한 후 삭제 버튼을 클릭하여 The Remove permissions (권한 제거) 대화 상자를 표시합니다.

    참고

    기본 관리 권한에 대한 작업은 제한됩니다. 수정할 수 없는 속성은 IdM 웹 UI에서 비활성화되며 관리 권한을 완전히 삭제할 수 없습니다.
    그러나 모든 권한에서 관리되는 권한을 제거하여 권한으로 바인드 유형이 설정된 관리 권한을 효과적으로 비활성화할 수 있습니다.

예를 들어, 권한이 있는 사용자가 engineers 그룹의 member 속성을 쓰도록 하려면 멤버를 추가하거나 제거할 수 있습니다.
Example for adding a permission

28.3. IdM WebUI에서 권한 관리

웹 인터페이스(IdM 웹 UI)를 사용하여 IdM의 권한을 관리하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. 새 권한을 추가하려면 IPA 서버 탭에서 역할 기반 액세스 제어 하위 메뉴를 열고 Privileges:를 선택합니다.

    Privileges task

  2. 권한 목록이 열립니다. 권한 목록 상단에 있는 Add 단추를 클릭합니다.

    Adding a new privilege

  3. Add Privilege(권한 추가) 양식이 열립니다. 권한의 이름과 설명을 입력합니다.

    Form for adding a privilege

  4. Add and Edit 버튼을 클릭하여 새 권한을 저장하고 계속 권한 구성 페이지로 이동하여 권한을 추가합니다.
  5. permissions 목록에서 권한 이름을 클릭하여 권한 속성을 편집합니다. 권한 구성 페이지가 열립니다.
  6. Permissions(권한 ) 탭에는 선택한 권한에 포함된 권한 목록이 표시됩니다. 목록 상단에 있는 Add(추가 ) 버튼을 클릭하여 권한을 권한에 추가합니다.

    Adding Permissions

  7. 추가할 각 권한의 이름 옆에 있는 확인란을 선택하고 > 버튼을 사용하여 권한을 Prospective 열로 이동합니다.

    Selecting Permissions

  8. Add (추가) 버튼을 클릭하여 확인합니다.
  9. 선택 사항: 권한을 제거해야 하는 경우 관련 권한 옆에 있는 확인란을 선택한 후 삭제 버튼을 클릭합니다. 권한 에서 권한 제거 대화 상자가 열립니다.
  10. 선택 사항: 기존 권한을 삭제해야 하는 경우 목록의 이름 옆에 있는 확인란을 선택한 후 삭제 버튼을 클릭합니다. 권한 제거 대화 상자가 열립니다.

28.4. IdM 웹 UI에서 역할 관리

IdM(Identity Management)에서 웹 인터페이스(IdM)를 사용하여 역할을 관리하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. 새 역할을 추가하려면 IPA 서버 탭에서 역할 기반 액세스 제어 하위 메뉴를 열고 Roles 를 선택합니다.

    Roles task

  2. 역할 목록이 열립니다. 역할 기반 액세스 제어 지침 목록 상단에 있는 Add (추가) 버튼을 클릭합니다.

    Adding a new role

  3. Add Role(역할 추가) 형식이 열립니다. 역할 이름과 설명을 입력합니다.

    Form for adding a role

  4. Add and Edit(추가 및 편집 ) 버튼을 클릭하여 새 역할을 저장하고 역할 구성 페이지로 이동하여 권한과 사용자를 추가합니다.
  5. 역할 목록에서 역할 이름을 클릭하여 역할 속성을 편집합니다. 역할 구성 페이지가 열립니다.
  6. 관련 목록 상단에 있는 Add(추가) 버튼을 클릭하여 Users , Users Groups (사용자, 사용자 그룹),Hosts (호스트), Host Groups (호스트 그룹) 또는 Services (서비스) 탭을 사용하여 멤버를 추가합니다.

    Adding users

  7. 열리는 창에서 왼쪽의 구성원을 선택하고 > 버튼을 사용하여 Prospective 열로 이동합니다.

    Selecting Users

  8. Privileges (권한) 탭의 상단에서 Add(추가 )를 클릭합니다.

    Adding Privileges

  9. 왼쪽에서 권한을 선택하고 > 버튼을 사용하여 Prospective 열로 이동합니다.

    Selecting Privileges

  10. 저장하려면 Add(추가 ) 단추를 클릭합니다.
  11. 선택 사항: 역할에서 권한 또는 멤버를 제거해야 하는 경우 제거할 엔터티 이름 옆에 있는 확인란을 선택한 후 Delete (삭제) 단추를 클릭합니다. 대화 상자가 열립니다.
  12. 선택 사항: 기존 역할을 제거해야 하는 경우 목록의 이름 옆에 있는 확인란을 선택한 후 Delete (삭제) 버튼을 클릭하여 Remove roles (역할 제거) 대화 상자를 표시합니다.

29장. Ansible 플레이북을 사용하여 IdM에서 역할 기반 액세스 제어 관리

RBAC(역할 기반 액세스 제어)는 역할 및 권한에 대해 정의된 정책 중립 액세스 제어 메커니즘입니다. IdM(Identity Management)의 RBAC 구성 요소는 역할, 권한 및 권한입니다.

  • 권한 은 사용자 추가 또는 삭제, 그룹 수정, 읽기 액세스 활성화와 같은 특정 작업을 수행할 수 있는 권한을 부여합니다.
  • 권한은 권한을 결합합니다(예: 새 사용자를 추가하는 데 필요한 모든 권한).
  • 역할은 사용자, 사용자 그룹, 호스트 또는 호스트 그룹에 일련의 권한을 부여합니다.

특히 대기업에서는 RBAC를 사용하면 개별 책임을 수행하는 관리자의 계층적 시스템을 만들 수 있습니다.

이 장에서는 Ansible 플레이북을 사용하여 RBAC를 관리할 때 수행되는 다음 작업을 설명합니다.

29.1. IdM의 권한

권한은 역할 기반 액세스 제어의 최하위 단위이며, 해당 작업이 적용되는 LDAP 항목과 함께 작업을 정의합니다. 구성 요소와 비교했을 때 필요한 수의 권한에 권한을 할당할 수 있습니다.
하나 이상의 권한은 다음을 허용하는 작업을 정의합니다.

  • write
  • read
  • search
  • 비교
  • add
  • delete
  • all

이러한 작업은 세 개의 기본 대상에 적용됩니다 :

  • subtree: 도메인 이름(DN), 이 DN 아래의 하위 트리
  • 대상 필터: LDAP 필터
  • 대상: 항목을 지정하는 데 사용할 수 있는 와일드카드가 있는 DN

또한 다음과 같은 편의성 옵션은 해당 특성을 설정합니다.

  • type: 유형의 개체 (사용자, 그룹 등)는 subtreetarget filter를 설정합니다.
  • memberOf: 그룹의 구성원; 대상 필터를설정합니다.
  • targetGroup: 특정 그룹을 수정할 액세스 권한을 부여합니다(예: 그룹 멤버십을 관리할 수 있는 권한 부여). 대상을설정합니다.

IdM 권한을 사용하면 어떤 사용자가 어떤 오브젝트에 대한 액세스 권한이 있는지 그리고 이러한 오브젝트의 속성까지 제어할 수 있습니다. IdM을 사용하면 개별 속성을 허용 또는 차단하거나 사용자, 그룹 또는 sudo와 같은 특정 IdM 기능의 전체 가시성을 모든 익명 사용자, 모든 인증된 사용자 또는 특정 권한 있는 사용자 그룹에 변경할 수 있습니다.
예를 들어 이 접근 방식의 권한의 유연성은 사용자 또는 그룹에 대한 액세스만 제한하려는 관리자에게 유용합니다. 사용자 또는 그룹이 액세스해야 하는 특정 섹션으로만 액세스하고 다른 섹션에 완전히 숨길 수 있도록 합니다.

참고

권한에는 다른 권한이 포함될 수 없습니다.

29.2. 기본 관리 권한

관리 권한은 기본적으로 IdM과 함께 제공되는 권한입니다. 다음과 같은 차이점을 사용하여 사용자가 생성한 다른 권한처럼 작동합니다.

  • 해당 파일을 삭제하거나 이름, 위치, 대상 특성을 수정할 수 없습니다.
  • 여기에는 세 가지 속성 세트가 있습니다.

    • 기본 속성은 IdM에서 관리하므로 사용자가 수정할 수 없습니다.
    • 사용자가 추가한 속성인 포함된 속성
    • 사용자가 제거하는 속성인 제외된 속성

관리되는 권한은 기본 및 포함된 특성 세트에 표시되지만 제외된 속성 세트에는 표시되지 않는 모든 속성에 적용됩니다.

참고

관리 권한을 삭제할 수는 없지만 바인딩 유형을 권한으로 설정하고 모든 권한에서 관리 권한을 제거하면 효과적으로 비활성화됩니다.

관리되는 모든 권한의 이름은 시스템:(예: 시스템): Sudo rule 또는 시스템을 추가합니다: Services 를 수정합니다. 이전 버전의 IdM에서는 기본 권한에 다른 체계를 사용했습니다. 예를 들어 사용자는 삭제할 수 없으며 권한에만 할당할 수 있었습니다. 이러한 기본 권한은 대부분 관리 권한으로 설정되었지만 다음 권한은 여전히 이전 체계를 사용합니다.

  • Automember Rebuild Membership 작업 추가
  • 구성 하위 항목 추가
  • 복제 계약 추가
  • 인증서 제거 보류
  • CA에서 인증서 상태 가져오기
  • DNA 범위 읽기
  • DNA 범위 수정
  • PassSync 관리자 구성 읽기
  • PassSync 관리자 구성 수정
  • 복제 계약 읽기
  • 복제 계약 수정
  • 복제 계약 제거
  • LDBM 데이터베이스 구성 읽기
  • 요청 인증서
  • CA ACL을 무시하는 인증서 요청
  • 다른 호스트의 인증서 요청
  • CA에서 인증서 검색
  • 인증서 해지
  • IPA 설정 쓰기
참고

명령줄에서 관리 권한을 수정하려고 하면 시스템에서 수정할 수 없는 특성을 변경할 수 없으므로 명령이 실패합니다. 웹 UI에서 관리 권한을 수정하려고 하면 수정할 수 없는 속성이 비활성화됩니다.

29.3. IdM의 권한

권한은 역할에 적용할 수 있는 권한 그룹입니다.
권한은 단일 작업을 수행할 수 있는 권한을 제공하지만 성공하려면 여러 권한이 필요한 특정 IdM 작업이 있습니다. 따라서 권한은 특정 작업을 수행하는 데 필요한 다양한 권한을 결합합니다.
예를 들어 새 IdM 사용자의 계정을 설정하려면 다음과 같은 권한이 필요합니다.

  • 새 사용자 항목 생성
  • 사용자 암호 재설정
  • 새 사용자를 기본 IPA 사용자 그룹에 추가

이러한 세 가지 하위 수준 작업을 이름이 지정된 사용자 지정 권한의 형태로 더 높은 수준의 작업(예: 사용자 추가) 에 결합하면 시스템 관리자가 역할을 쉽게 관리할 수 있습니다. IdM에는 이미 몇 가지 기본 권한이 포함되어 있습니다. 사용자 및 사용자 그룹 외에도 호스트 및 호스트 그룹은 네트워크 서비스에도 권한이 할당됩니다. 이 방법을 사용하면 특정 네트워크 서비스를 사용하는 호스트 집합의 사용자 집합에 의한 작업을 세부적으로 제어할 수 있습니다.

참고

권한에는 다른 권한이 없을 수 있습니다.

29.4. IdM의 역할

역할은 역할에 지정된 사용자가 보유하는 권한 목록입니다.
실제로 권한은 지정된 하위 수준 작업(예: 사용자 항목 생성 및 그룹에 항목을 추가하는 등)을 수행할 수 있는 기능을 부여하며, 권한은 상위 수준 작업(예: 지정된 그룹에서 새 사용자를 만드는 등)에 필요한 이러한 권한 중 하나 이상을 결합합니다. 역할은 필요에 따라 권한을 함께 수집합니다. 예를 들어 사용자 관리자 역할은 사용자를 추가, 수정, 삭제할 수 있습니다.

중요

역할은 허용된 작업을 분류하는 데 사용됩니다. 권한 분리를 구현하거나 권한 에스컬레이션으로부터 보호하는 툴로 사용되지 않습니다.

참고

역할에 다른 역할은 포함할 수 없습니다.

29.5. ID 관리에 사전 정의된 역할

Red Hat Identity Management는 다음과 같은 일련의 사전 정의 역할을 제공합니다.

Expand
표 29.1. ID 관리에서 사전 정의된 역할
Role권한설명

등록 관리자

호스트 등록

클라이언트 또는 호스트 등록 담당자

helpdesk

사용자 및 암호 재설정, 그룹 멤버십 수정

간단한 사용자 관리 작업 수행 담당

IT 보안 전문가

Netgroups 관리자, HBAC 관리자, Sudo 관리자

호스트 기반 액세스 제어와 같은 보안 정책 관리, sudo 규칙

IT 전문가

호스트 관리자, 호스트 그룹 관리자, 서비스 관리자, 자동 마운트 관리자

호스트 관리 담당

보안 설계자

위임 관리자, 복제 관리자, 쓰기 IPA 구성, 암호 정책 관리자

Identity Management 환경 관리, 신뢰 생성, 복제 계약 생성

사용자 관리자

사용자 관리자, 그룹 관리자, 단계 사용자 관리자

사용자 및 그룹 생성 담당

기본 역할이 제공하는 기본 역할보다 IdM(Identity Management)의 리소스에 대한 역할 기반 액세스(RBAC)를 보다 세밀하게 제어하려면 사용자 지정 역할을 생성합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 새 IdM 사용자 지정 역할에 대한 권한을 정의하고 해당 역할이 있는지 확인하는 방법을 설명합니다. 이 예제에서 새 user_and_host_administrator 역할에는 기본적으로 IdM에 있는 다음 권한의 고유한 조합이 포함되어 있습니다.

  • 그룹 관리자
  • 사용자 관리자
  • 사용자 관리자 단계
  • 그룹 관리자

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/<MyPlaybooks>/ 디렉터리로 이동합니다.

    $ cd ~/<MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/role/ 디렉터리에 있는 role-member-user- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-present.yml role-member-user-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 role-member-user-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. iparole 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 새 역할의 이름으로 설정합니다.
    • 권한 목록을 새 역할에 포함하려는 IdM 권한의 이름으로 설정합니다.
    • 또는 user 변수를 새 역할을 부여하려는 사용자 이름으로 설정합니다.
    • 필요한 경우 group 변수를 새 역할을 부여할 그룹 이름으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage IPA role with members.
      hosts: ipaserver
      become: true
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - iparole:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: user_and_host_administrator
          user: idm_user01
          group: idm_group01
          privilege:
          - Group Administrators
          - User Administrators
          - Stage User Administrators
          - Group Administrators
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-present-copy.yml
    Copy to Clipboard Toggle word wrap

29.7. Ansible을 사용하여 IdM RBAC 역할이 없는지 확인합니다.

IdM(Identity Management)에서 역할 기반 액세스 제어(RBAC)를 관리하는 시스템 관리자는 실수로 사용자에게 할당하지 않도록 사용되지 않는 역할이 없는지 확인해야 합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 역할이 없는지 확인하는 방법을 설명합니다. 아래 예제에서는 사용자 지정 user_and_host_administrator 역할이 IdM에 없는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/<MyPlaybooks>/ 디렉터리로 이동합니다.

    $ cd ~/<MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/role/ 디렉터리에 있는 role-is- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-is-absent.yml role-is-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 role-is-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. iparole 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 역할의 이름으로 설정합니다.
    • state 변수가 absent 로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage IPA role with members.
      hosts: ipaserver
      become: true
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - iparole:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: user_and_host_administrator
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-is-absent-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)에서 역할 기반 액세스 제어(RBAC)를 관리하는 시스템 관리자는 특정 사용자 그룹(예: 신참 관리자)에 역할을 할당할 수 있습니다.

다음 예제에서는 Ansible 플레이북을 사용하여 기본 제공 IdM RBAC 헬프데스크 역할이 junior_sysadmins 에 할당되도록 하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/<MyPlaybooks>/ 디렉터리로 이동합니다.

    $ cd ~/<MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/role/ 디렉터리에 있는 role-member-group- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-group-present.yml role-member-group-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 role-member-group-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. iparole 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 할당할 역할의 이름으로 설정합니다.
    • 그룹 변수를 그룹 이름으로 설정합니다.
    • action 변수를 member 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage IPA role with members.
      hosts: ipaserver
      become: true
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - iparole:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: helpdesk
          group: junior_sysadmins
          action: member
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-group-present-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)에서 역할 기반 액세스 제어(RBAC)를 관리하는 시스템 관리자는 특정 사용자에게 RBAC 역할이 할당되지 않도록 할 수 있습니다(예: 회사 내 다른 위치로 이동).

다음 절차에서는 Ansible 플레이북을 사용하여 user_01 및 user_ 02 라는 사용자가 helpdesk 역할에 할당되지 않도록 하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/<MyPlaybooks>/ 디렉터리로 이동합니다.

    $ cd ~/<MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/role/ 디렉터리에 있는 role-member-user- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-absent.yml role-member-user-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 role-member-user-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. iparole 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 할당할 역할의 이름으로 설정합니다.
    • 사용자 목록을 사용자 이름으로 설정합니다.
    • action 변수를 member 로 설정합니다.
    • state 변수를 absent 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage IPA role with members.
      hosts: ipaserver
      become: true
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - iparole:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: helpdesk
          user
          - user_01
          - user_02
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-absent-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)에서 역할 기반 액세스 제어(RBAC)를 관리하는 시스템 관리자는 IdM에 등록된 특정 서비스가 특정 역할의 구성원인지 확인할 수 있습니다. 다음 예제에서는 사용자 지정 web_administrator 역할이 client01.idm.example.com 서버에서 실행 중인 HTTP 서비스를 관리할 수 있도록 하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • web_administrator 역할은 IdM에 있습니다.
  • HTTP/client01.idm.example.com@IDM.EXAMPLE.COM 서비스는 IdM에 있습니다.

절차

  1. ~/<MyPlaybooks>/ 디렉터리로 이동합니다.

    $ cd ~/<MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/role/ 디렉터리에 있는 role-member-service- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-service-present-absent.yml role-member-service-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. role-member-service-present-copy.yml Ansible 플레이북 파일을 편집하여 편집합니다.
  4. iparole 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 할당할 역할의 이름으로 설정합니다.
    • 서비스 목록을 서비스 이름으로 설정합니다.
    • action 변수를 member 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage IPA role with members.
      hosts: ipaserver
      become: true
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - iparole:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: web_administrator
          service:
          - HTTP/client01.idm.example.com
          action: member
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-service-present-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)에서 역할 기반 액세스 제어를 관리하는 시스템 관리자는 특정 호스트 또는 호스트 그룹이 특정 역할과 연결되어 있는지 확인할 수 있습니다. 다음 예제에서는 사용자 지정 web_administrator 역할이 HTTP 서비스가 실행 중인 client01.idm.example.com IdM 호스트를 관리할 수 있도록 하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • web_administrator 역할은 IdM에 있습니다.
  • client01.idm.example.com 호스트는 IdM에 있습니다.

절차

  1. ~/<MyPlaybooks>/ 디렉터리로 이동합니다.

    $ cd ~/<MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/role/ 디렉터리에 있는 role-member-host- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-host-present.yml role-member-host-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. role-member-host-present-copy.yml Ansible 플레이북 파일을 편집하여 편집합니다.
  4. iparole 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 할당할 역할의 이름으로 설정합니다.
    • 호스트 목록을 호스트 이름으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage IPA role with members.
      hosts: ipaserver
      become: true
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - iparole:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: web_administrator
          host:
          - client01.idm.example.com
          action: member
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-host-present-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)에서 역할 기반 액세스 제어를 관리하는 시스템 관리자는 특정 호스트 또는 호스트 그룹이 특정 역할과 연결되어 있는지 확인할 수 있습니다. 다음 예제에서는 사용자 지정 web_administrator 역할이 HTTP 서비스가 실행 중인 IdM 호스트의 web_servers 그룹을 관리할 수 있도록 하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • web_administrator 역할은 IdM에 있습니다.
  • web_servers 호스트 그룹은 IdM에 있습니다.

절차

  1. ~/<MyPlaybooks>/ 디렉터리로 이동합니다.

    $ cd ~/<MyPlaybooks>/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/role/ 디렉터리에 있는 role-member-hostgroup- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-hostgroup-present.yml role-member-hostgroup-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 role-member-hostgroup-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. iparole 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 할당할 역할의 이름으로 설정합니다.
    • hostgroup 목록을 호스트 그룹의 이름으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to manage IPA role with members.
      hosts: ipaserver
      become: true
      gather_facts: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - iparole:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: web_administrator
          hostgroup:
          - web_servers
          action: member
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-hostgroup-present-copy.yml
    Copy to Clipboard Toggle word wrap

30장. Ansible 플레이북을 사용하여 RBAC 권한 관리

RBAC(역할 기반 액세스 제어)는 역할, 권한 및 권한에 대해 정의된 정책 중립 액세스 제어 메커니즘입니다. 특히 대기업에서는 RBAC를 사용하면 개별 책임을 수행하는 관리자의 계층적 시스템을 만들 수 있습니다.

이 장에서는 IdM(Identity Management)에서 RBAC 권한을 관리하기 위해 Ansible 플레이북을 사용하는 작업에 대해 설명합니다.

사전 요구 사항

30.1. Ansible을 사용하여 사용자 지정 IdM RBAC 권한이 있는지 확인

IdM(Identity Management) 역할 기반 액세스 제어(RBAC)에서 사용자 지정 권한을 완전히 작동하려면 단계를 진행해야 합니다.

  1. 권한이 연결되지 않고 권한을 생성합니다.
  2. 선택한 권한을 권한에 추가합니다.

다음 절차에서는 나중에 권한을 추가할 수 있도록 Ansible 플레이북을 사용하여 빈 권한을 생성하는 방법을 설명합니다. 이 예제에서는 호스트 관리와 관련된 모든 IdM 권한을 결합하기 위한 full_host_administration 이라는 권한을 생성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/privilege/ 디렉터리에 있는 privilege- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml privilege-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 privilege-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipaprivilege 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 새 권한인 full_host_administration 의 이름으로 설정합니다.
    • 선택적으로 description 변수를 사용하여 권한을 설명합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Privilege present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure privilege full_host_administration is present
        ipaprivilege:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: full_host_administration
          description: This privilege combines all IdM permissions related to host administration
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-present-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management) 역할 기반 액세스 제어(RBAC)에서 사용자 지정 권한을 완전히 작동하려면 단계를 진행해야 합니다.

  1. 권한이 연결되지 않고 권한을 생성합니다.
  2. 선택한 권한을 권한에 추가합니다.

다음 절차에서는 Ansible 플레이북을 사용하여 이전 단계에서 만든 권한에 권한을 추가하는 방법을 설명합니다. 이 예제에서는 호스트 관리와 관련된 모든 IdM 권한을 full_host_administration 이라는 권한에 추가하는 방법을 설명합니다. 기본적으로 권한은 Host Enrollment(호스트 등록 ), HostAdministrators(호스트 관리자) 및 Host Group Administrator (호스트 그룹 관리자) 권한 사이에 배포됩니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • full_host_administration 권한이 있습니다. Ansible을 사용하여 권한을 생성하는 방법에 대한 자세한 내용은 사용자 정의 IdM RBAC 권한이 있는지 확인하기 위해 Ansible 사용을 참조하십시오.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/privilege/ 디렉터리에 있는 privilege-member- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-present.yml privilege-member-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 privilege-member-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipaprivilege 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한 이름으로 설정합니다.
    • 권한 목록을 권한에 포함할 권한의 이름으로 설정합니다.
    • action 변수가 member 로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Privilege member present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that permissions are present for the "full_host_administration" privilege
        ipaprivilege:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: full_host_administration
          permission:
          - "System: Add krbPrincipalName to a Host"
          - "System: Enroll a Host"
          - "System: Manage Host Certificates"
          - "System: Manage Host Enrollment Password"
          - "System: Manage Host Keytab"
          - "System: Manage Host Principals"
          - "Retrieve Certificates from the CA"
          - "Revoke Certificate"
          - "System: Add Hosts"
          - "System: Add krbPrincipalName to a Host"
          - "System: Enroll a Host"
          - "System: Manage Host Certificates"
          - "System: Manage Host Enrollment Password"
          - "System: Manage Host Keytab"
          - "System: Manage Host Keytab Permissions"
          - "System: Manage Host Principals"
          - "System: Manage Host SSH Public Keys"
          - "System: Manage Service Keytab"
          - "System: Manage Service Keytab Permissions"
          - "System: Modify Hosts"
          - "System: Remove Hosts"
          - "System: Add Hostgroups"
          - "System: Modify Hostgroup Membership"
          - "System: Modify Hostgroups"
          - "System: Remove Hostgroups"
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-present-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어를 사용자 지정할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 권한에서 권한을 제거하는 방법을 설명합니다. 이 예제에서는 관리자가 보안 위험이라고 간주하기 때문에 기본 Certificate Administrators 권한에서 CA ACL 권한을 무시하는 요청 인증서를 제거하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/privilege/ 디렉터리에 있는 privilege-member- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-absent.yml privilege-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 privilege-member-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipaprivilege 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한 이름으로 설정합니다.
    • 권한 목록을 권한에서 제거할 권한의 이름으로 설정합니다.
    • action 변수가 member 로 설정되어 있는지 확인합니다.
    • state 변수가 absent 로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Privilege absent example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "Request Certificate ignoring CA ACLs" permission is absent from the "Certificate Administrators" privilege
        ipaprivilege:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: Certificate Administrators
          permission:
          - "Request Certificate ignoring CA ACLs"
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap

30.4. Ansible을 사용하여 사용자 지정 IdM RBAC 권한 이름 변경

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어를 사용자 지정할 수 있습니다.

다음 절차에서는 권한 이름을 변경하는 방법을 설명합니다. 예를 들어 몇 가지 권한을 제거했기 때문입니다. 결과적으로 권한 이름은 더 이상 정확하지 않습니다. 이 예제에서 관리자는 full_host_administration 권한의 이름을 limited_ host_administration 으로 변경합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • full_host_administration 권한이 있습니다. 권한을 추가하는 방법에 대한 자세한 내용은 Ansible을 사용하여 사용자 정의 IdM RBAC 권한이 있는지 를 참조하십시오.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/privilege/ 디렉터리에 있는 privilege- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml rename-privilege.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 rename-privilege.yml Ansible 플레이북 파일을 엽니다.
  4. ipaprivilege 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한의 현재 이름으로 설정합니다.
    • rename 변수를 추가하고 권한의 새 이름으로 설정합니다.
    • state 변수를 추가하고 이름을 바꿉니다.
  5. 플레이북 자체의 이름을 변경합니다. 예를 들면 다음과 같습니다.

    ---
    - name: Rename a privilege
      hosts: ipaserver
    Copy to Clipboard Toggle word wrap
  6. 플레이북의 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다.

    [...]
    tasks:
    - name: Ensure the full_host_administration privilege is renamed to limited_host_administration
      ipaprivilege:
      [...]
    Copy to Clipboard Toggle word wrap

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Rename a privilege
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure the full_host_administration privilege is renamed to limited_host_administration
        ipaprivilege:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: full_host_administration
          rename: limited_host_administration
          state: renamed
    Copy to Clipboard Toggle word wrap
  7. 파일을 저장합니다.
  8. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory rename-privilege.yml
    Copy to Clipboard Toggle word wrap

30.5. Ansible을 사용하여 IdM RBAC 권한이 없는지 확인합니다.

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어를 사용자 지정할 수 있습니다. 다음 절차에서는 Ansible 플레이북을 사용하여 RBAC 권한이 없는지 확인하는 방법을 설명합니다. 이 예제에서는 CA 관리자 권한이 없는지 확인하는 방법을 설명합니다. 이 절차의 결과로 관리자 관리자는 IdM에서 인증 기관을 관리할 수 있는 유일한 사용자가 됩니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/privilege/ 디렉터리에 있는 privilege- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-absent.yml privilege-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 privilege-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipaprivilege 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 제거할 권한의 이름으로 설정합니다.
    • state 변수가 absent 로 설정되어 있는지 확인합니다.
  5. 플레이북의 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다.

    [...]
    tasks:
    - name: Ensure privilege "CA administrator" is absent
      ipaprivilege:
      [...]
    Copy to Clipboard Toggle word wrap

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Privilege absent example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure privilege "CA administrator" is absent
        ipaprivilege:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: CA administrator
          state: absent
    Copy to Clipboard Toggle word wrap
  6. 파일을 저장합니다.
  7. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-absent-copy.yml
    Copy to Clipboard Toggle word wrap

31장. Ansible 플레이북을 사용하여 IdM에서 RBAC 권한 관리

RBAC(역할 기반 액세스 제어)는 역할, 권한 및 권한에 대해 정의된 정책 중립 액세스 제어 메커니즘입니다. 특히 대기업에서는 RBAC를 사용하면 개별 책임을 수행하는 관리자의 계층적 시스템을 만들 수 있습니다.

이 장에서는 Ansible 플레이북을 사용하여 IdM(Identity Management)에서 RBAC 권한을 관리할 때 수행되는 다음 작업을 설명합니다.

사전 요구 사항

31.1. Ansible을 사용하여 RBAC 권한이 있는지 확인합니다.

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어(RBAC)를 사용자 지정할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 권한에 권한을 추가할 수 있도록 IdM에 권한을 제공하는 방법을 설명합니다. 예제에서는 다음 대상 상태를 확인하는 방법을 설명합니다.

  • MyPermission 권한이 있습니다.
  • MyPermission 권한은 호스트에만 적용할 수 있습니다.
  • 권한이 포함된 권한이 부여된 사용자는 항목에서 다음과 같은 가능한 작업을 모두 수행할 수 있습니다.

    • 쓰기
    • 읽기
    • 검색
    • 비교
    • add
    • delete

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/permission/ 디렉터리에 있는 permission- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집할 permission-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipapermission 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한의 이름으로 설정합니다.
    • object_type 변수를 host 로 설정합니다.
    • 올바른 변수를 all 로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Permission present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "MyPermission" permission is present
        ipapermission:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: MyPermission
          object_type: host
          right: all
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-copy.yml
    Copy to Clipboard Toggle word wrap

31.2. Ansible을 사용하여 속성이 있는 RBAC 권한이 있는지 확인합니다.

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어(RBAC)를 사용자 지정할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 권한에 권한을 추가할 수 있도록 IdM에 권한을 제공하는 방법을 설명합니다. 예제에서는 다음 대상 상태를 확인하는 방법을 설명합니다.

  • MyPermission 권한이 있습니다.
  • MyPermission 권한은 호스트를 추가하는 데만 사용할 수 있습니다.
  • 권한이 포함된 권한이 부여된 사용자는 호스트 항목에서 다음과 같은 모든 작업을 수행할 수 있습니다.

    • 쓰기
    • 읽기
    • 검색
    • 비교
    • add
    • delete
  • MyPermission 권한이 포함된 권한이 부여된 사용자가 생성한 호스트 항목은 description 값을 가질 수 있습니다.
참고

권한을 만들거나 수정할 때 지정할 수 있는 속성 유형은 IdM LDAP 스키마에 의해 제한되지 않습니다. 그러나 object_type이 호스트 일 경우 attrs:car_ licence 를 지정하면 나중에 ipa가 됩니다. ERROR: 속성 "car-license" not allowed error message when you try to a specificcar licence value to a host.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/permission/ 디렉터리에 있는 permission- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-with-attribute.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 permission-present-with-attribute.yml Ansible 플레이북 파일을 엽니다.
  4. ipapermission 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한의 이름으로 설정합니다.
    • object_type 변수를 host 로 설정합니다.
    • 올바른 변수를 all 로 설정합니다.
    • attrs 변수를 description 으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Permission present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "MyPermission" permission is present with an attribute
        ipapermission:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: MyPermission
          object_type: host
          right: all
          attrs: description
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-with-attribute.yml
    Copy to Clipboard Toggle word wrap

31.3. Ansible을 사용하여 RBAC 권한이 없는지 확인합니다.

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어(RBAC)를 사용자 지정할 수 있습니다.

다음 절차에서는 권한에 추가할 수 없도록 Ansible 플레이북을 사용하여 IdM에 권한이 없는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/permission/ 디렉터리에 있는 permission- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-absent.yml permission-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 permission-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipapermission 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한의 이름으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Permission absent example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "MyPermission" permission is absent
        ipapermission:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: MyPermission
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory permission-absent-copy.yml
    Copy to Clipboard Toggle word wrap

31.4. Ansible을 사용하여 속성이 IdM RBAC 권한의 멤버인지 확인합니다.

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어(RBAC)를 사용자 지정할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 속성이 IdM에서 RBAC 권한의 멤버인지 확인하는 방법을 설명합니다. 결과적으로 권한이 있는 사용자는 특성이 있는 항목을 생성할 수 있습니다.

이 예제에서는 MyPermission 권한을 포함하는 권한이 있는 사용자가 생성한 호스트 항목에 gecosdescription 값을 가질 수 있도록 하는 방법을 설명합니다.

참고

권한을 만들거나 수정할 때 지정할 수 있는 속성 유형은 IdM LDAP 스키마에 의해 제한되지 않습니다. 그러나 object_type이 호스트 일 경우 attrs:car_ licence 를 지정하면 나중에 ipa가 됩니다. ERROR: 속성 "car-license" not allowed error message when you try to a specificcar licence value to a host.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • MyPermission 권한이 있습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/permission/ 디렉터리에 있는 permission-member- present.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-present.yml permission-member-present-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 permission-member-present-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipapermission 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한의 이름으로 설정합니다.
    • attrs 목록을 descriptiongecos 변수로 설정합니다.
    • 작업 변수가 member 로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Permission member present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that the "gecos" and "description" attributes are present in "MyPermission"
        ipapermission:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: MyPermission
          attrs:
          - description
          - gecos
          action: member
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-present-copy.yml
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어(RBAC)를 사용자 지정할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 속성이 IdM에서 RBAC 권한의 멤버가 아닌지 확인하는 방법을 설명합니다. 결과적으로 권한이 있는 사용자가 IdM LDAP에 항목을 생성하면 해당 항목에 특성과 연결된 값이 있을 수 없습니다.

예제에서는 다음 대상 상태를 확인하는 방법을 설명합니다.

  • MyPermission 권한이 있습니다.
  • MyPermission 권한이 포함된 권한이 있는 사용자가 생성한 호스트 항목은 description 속성을 가질 수 없습니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • MyPermission 권한이 있습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/permission/ 디렉터리에 있는 permission-member- absent.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-absent.yml permission-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 permission-member-absent-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipapermission 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한의 이름으로 설정합니다.
    • attrs 변수를 description 으로 설정합니다.
    • action 변수를 member 로 설정합니다.
    • state 변수가 absent로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Permission absent example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure that an attribute is not a member of "MyPermission"
        ipapermission:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: MyPermission
          attrs: description
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-absent-copy.yml
    Copy to Clipboard Toggle word wrap

31.6. Ansible을 사용하여 IdM RBAC 권한 이름 변경

IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어를 사용자 지정할 수 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 권한의 이름을 변경하는 방법을 설명합니다. 이 예제에서는 MyPermission의 이름을 MyNewPermission 으로 변경하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • MyPermission 은 IdM에 있습니다.
  • MyNewPermission 은 IdM에 존재하지 않습니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/permission/ 디렉터리에 있는 permission- renamed.yml 파일의 복사본을 만듭니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-renamed.yml permission-renamed-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 permission-renamed-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipapermission 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • 사용 사례에 대응하도록 작업 이름을 조정합니다.
    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • name 변수를 권한의 이름으로 설정합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Permission present example
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Rename the "MyPermission" permission
        ipapermission:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: MyPermission
          rename: MyNewPermission
          state: renamed
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory permission-renamed-copy.yml
    Copy to Clipboard Toggle word wrap

32장. IdM에서 사용자 암호 관리

32.1. IdM 사용자 암호 및 방법을 변경할 수 있는 사람

다른 사용자의 비밀번호를 변경할 수 있는 권한이 없는 일반 사용자는 자신의 개인 비밀번호만 변경할 수 있습니다. 새 암호는 사용자가 멤버로 속한 그룹에 적용되는 IdM 암호 정책을 충족해야 합니다. 암호 정책 구성에 대한 자세한 내용은 IdM 암호 정책 정의를 참조하십시오.

암호 변경 권한이 있는 관리자와 사용자는 새 사용자의 초기 암호를 설정하고 기존 사용자의 암호를 재설정할 수 있습니다. 이러한 암호:

참고

LDAP Directory Manager(DM) 사용자는 LDAP 툴을 사용하여 사용자 암호를 변경할 수 있습니다. 새 암호는 IdM 암호 정책을 덮어쓸 수 있습니다. DM에서 설정한 암호는 첫 번째 로그인 후 만료되지 않습니다.

32.2. IdM 웹 UI에서 사용자 암호 변경

IdM(Identity Management) 사용자는 IdM 웹 UI에서 사용자 암호를 변경할 수 있습니다.

사전 요구 사항

  • IdM 웹 UI에 로그인되어 있습니다.

절차

  1. 오른쪽 상단에서 사용자 이름 → 암호 변경을 클릭합니다.

    그림 32.1. 암호 재설정

  2. 현재 및 새 암호를 입력합니다.

32.3. IdM 웹 UI에서 다른 사용자 암호 재설정

IdM(Identity Management)의 관리자 사용자는 IdM 웹 UI에서 다른 사용자의 암호를 변경할 수 있습니다.

사전 요구 사항

  • 관리 사용자로 IdM 웹 UI에 로그인되어 있습니다.

절차

  1. IdentityUsers 를 선택합니다.
  2. 편집할 사용자 이름을 클릭합니다.
  3. ActionsReset password (암호 재설정)를 클릭합니다.

    그림 32.2. 암호 재설정

  4. 새 암호를 입력하고 암호 재설정 을 클릭합니다.

    그림 32.3. 새 암호 확인

32.4. Directory Manager 사용자 암호 재설정

IdM(Identity Management) Directory Manager 암호가 손실되면 재설정할 수 있습니다.

사전 요구 사항

  • IdM 서버에 대한 루트 액세스 권한이 있습니다.

절차

  1. pwdhash 명령을 사용하여 새 암호 해시를 생성합니다. 예를 들면 다음과 같습니다.

    # pwdhash -D /etc/dirsrv/slapd-IDM-EXAMPLE-COM password
    {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
    Copy to Clipboard Toggle word wrap

    Directory Server 구성 경로를 지정하면 새 암호를 암호화하기 위해 nsslapd-rootpwstoragescheme 속성에 설정된 암호 스토리지 스키마를 자동으로 사용합니다.

  2. 토폴로지의 모든 IdM 서버에서 다음 단계를 실행합니다.

    1. 서버에 설치된 모든 IdM 서비스를 중지합니다.

      # ipactl stop
      Copy to Clipboard Toggle word wrap
    2. /etc/dirsrv/IDM-EXAMPLE-COM/dse.ldif 파일을 편집하고 nsslapd-rootpw 특성을 pwdhash 명령으로 생성된 값으로 설정합니다.

      nsslapd-rootpw: {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
      Copy to Clipboard Toggle word wrap
    3. 서버에 설치된 모든 IdM 서비스를 시작합니다.
    # ipactl start
    Copy to Clipboard Toggle word wrap

32.5. IdM CLI에서 사용자 암호 변경 또는 다른 사용자 암호 재설정

IdM(Identity Management) CLI(명령줄 인터페이스)를 사용하여 사용자 암호를 변경할 수 있습니다. 관리 사용자인 경우 CLI를 사용하여 다른 사용자의 암호를 재설정할 수 있습니다.

사전 요구 사항

  • IdM 사용자에 대한 티켓 생성 티켓(TGT)이 있습니다.
  • 다른 사용자의 암호를 재설정하는 경우 IdM에서 관리 사용자를 위해 TGT를 취득해야 합니다.

절차

  • 사용자 이름과 --password 옵션을 사용하여 ipa user-mod 명령을 입력합니다. 이 명령을 실행하면 새 암호를 입력하라는 메시지가 표시됩니다.

    $ ipa user-mod idm_user --password
    Password:
    Enter Password again to verify:
    --------------------
    Modified user "idm_user"
    --------------------
    ...
    Copy to Clipboard Toggle word wrap
참고

ipa user-mod 대신 ipa passwd idm_user 명령을 사용할 수도 있습니다.

기본적으로 관리자가 다른 사용자의 암호를 재설정할 때 처음 로그인 후 암호가 만료됩니다. IdM Directory Manager는 개별 IdM 관리자에게 다음과 같은 권한을 지정할 수 있습니다.

  • 사용자가 처음 로그인할 때 이후에 비밀번호를 변경할 필요 없이 암호 변경 작업을 수행할 수 있습니다.
  • 암호 정책을 바이패스하여 힘 또는 기록 적용이 적용되지 않도록 할 수 있습니다.
주의

암호 정책을 우회하는 것은 보안 위협 일 수 있습니다. 이러한 추가 권한을 부여하는 사용자를 선택할 때 주의하십시오.

사전 요구 사항

  • Directory Manager 암호를 알고 있습니다.

절차

  1. 도메인의 모든 IdM(Identity Management) 서버에서 다음과 같이 변경합니다.

    1. ldapmodify 명령을 입력하여 LDAP 항목을 수정합니다. IdM 서버의 이름과 389 포트를 지정하고 Enter 키를 누릅니다.

      $ ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389
      Enter LDAP Password:
      Copy to Clipboard Toggle word wrap
    2. Directory Manager 암호를 입력합니다.
    3. ipa_pwd_extop 암호 동기화 항목의 고유 이름을 입력하고 Enter 키를 누릅니다.

      dn: cn=ipa_pwd_extop,cn=plugins,cn=config
      Copy to Clipboard Toggle word wrap
    4. 변경 유형을 지정하고 Enter를 누릅니다.

      changetype: modify
      Copy to Clipboard Toggle word wrap
    5. LDAP를 실행하고 어떤 속성을 실행할 수정 유형을 지정합니다. Enter를 누릅니다.

      add: passSyncManagersDNs
      Copy to Clipboard Toggle word wrap
    6. passSyncManagersDNs 속성에 관리 사용자 계정을 지정합니다. 속성은 다중 값입니다. 예를 들어 admin 사용자에게 Directory Manager의 전원을 재설정하는 암호를 부여하려면 다음을 수행합니다.

      passSyncManagersDNs: \
      uid=admin,cn=users,cn=accounts,dc=example,dc=com
      Copy to Clipboard Toggle word wrap
    7. Enter를 두 번 눌러 항목 편집을 중지합니다.

전체 절차는 다음과 같습니다.

$ ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389
Enter LDAP Password:
dn: cn=ipa_pwd_extop,cn=plugins,cn=config
changetype: modify
add: passSyncManagersDNs
passSyncManagersDNs: uid=admin,cn=users,cn=accounts,dc=example,dc=com
Copy to Clipboard Toggle word wrap

통과SyncManagerDNs 아래에 나열된 admin 사용자는 이제 추가 권한이 있습니다.

32.7. IdM 사용자 계정이 잠긴지 확인

IdM(Identity Management) 관리자는 IdM 사용자 계정이 잠긴지 확인할 수 있습니다. 이를 위해 사용자의 실패한 로그인 시도 횟수를 사용자의 실제 실패한 로그인 횟수와 비교해야 합니다.

사전 요구 사항

  • IdM에서 관리자의 TGT(Towering ticket)를 취득했습니다.

절차

  1. 사용자 계정의 상태를 표시하여 실패한 로그인 수를 확인합니다.

    $ ipa user-status example_user
    -----------------------
    Account disabled: False
    -----------------------
      Server: idm.example.com
      Failed logins: 8
      Last successful authentication: N/A
      Last failed authentication: 20220229080317Z
      Time now: 2022-02-29T08:04:46Z
    ----------------------------
    Number of entries returned 1
    ----------------------------
    Copy to Clipboard Toggle word wrap
  2. 특정 사용자에 대해 허용되는 로그인 시도 횟수를 표시합니다.

    1. IdM 관리자로 IdM 웹 UI에 로그인합니다.
    2. ID → 사용자 → 활성 사용자 탭을 엽니다.

    A screenshot of the IdM Web UI displaying the "Active Users" page which is a sub-page of the Users submenu from the Identity tab.

    1. 사용자 이름을 클릭하여 사용자 설정을 엽니다.
    2. 암호 정책 섹션에서 최대 실패 항목을 찾습니다.
  3. ipa user-status 명령 출력에 표시된 실패한 로그인 수와 IdM 웹 UI에 표시되는 최대 실패 수를 비교합니다. 실패한 로그인 수가 최대 로그인 시도 횟수와 동일한 경우 사용자 계정이 잠깁니다.

32.8. IdM에서 암호 실패 후 사용자 계정 잠금 해제

사용자가 잘못된 암호를 사용하여 로그인하려고 하면 IdM(Identity Management)은 사용자 계정을 잠그므로 사용자가 로그인할 수 없습니다. 보안상의 이유로 IdM은 사용자 계정이 잠긴 경고 메시지를 표시하지 않습니다. 대신 CLI 프롬프트에서 사용자에게 암호를 다시 요청합니다.

IdM은 지정된 시간이 경과한 후 사용자 계정의 잠금을 자동으로 해제합니다. 또는 다음 절차에 따라 사용자 계정의 잠금을 수동으로 잠금 해제할 수 있습니다.

사전 요구 사항

  • IdM 관리 사용자의 티켓 생성 티켓을 받을 수 있습니다.

절차

  • 사용자 계정의 잠금을 해제하려면 ipa user-unlock 명령을 사용합니다.

    $ ipa user-unlock idm_user
    -----------------------
    Unlocked account "idm_user"
    -----------------------
    Copy to Clipboard Toggle word wrap

    이 후 사용자는 다시 로그인할 수 있습니다.

32.9. IdM에서 사용자에게 마지막으로 성공한 Kerberos 인증 추적 활성화

성능상의 이유로 Red Hat Enterprise Linux 8에서 실행되는 IdM(Identity Management)은 사용자의 마지막으로 성공한 Kerberos 인증의 타임 스탬프를 저장하지 않습니다. 그 결과 ipa user-status 와 같은 특정 명령이 시간 스탬프를 표시하지 않습니다.

사전 요구 사항

  • IdM에서 관리자의 TGT(Towering ticket)를 취득했습니다.
  • 프로시저를 실행하는 IdM 서버에 대한 루트 액세스 권한이 있습니다.

절차

  1. 현재 활성화된 암호 플러그인 기능을 표시합니다.

    # ipa config-show | grep "Password plugin features"
      Password plugin features: AllowNThash, KDC:Disable Last Success
    Copy to Clipboard Toggle word wrap

    출력에 NetNamespace :Disable Last Success 플러그인이 활성화되어 있음을 확인할 수 있습니다. 플러그인은 ipa user-status 출력에 마지막으로 성공한 Kerberos 인증 시도가 표시되지 않도록 숨깁니다.

  2. 모든 기능에 대해 --ipaconfigstring=feature 매개변수를 현재 활성화된 ipa config-mod 명령에 추가합니다(예: status :Disable Last Success ).

    # ipa config-mod --ipaconfigstring='AllowNThash'
    Copy to Clipboard Toggle word wrap

    이 명령은 AllowNThash 플러그인만 활성화합니다. 여러 기능을 활성화하려면 각 기능에 대해 --ipaconfigstring=feature 매개변수를 별도로 지정합니다.

  3. IdM을 다시 시작하십시오.

    # ipactl restart
    Copy to Clipboard Toggle word wrap

33장. IdM 암호 정책 정의

이 장에서는 IdM(Identity Management) 암호 정책과 Ansible 플레이북을 사용하여 IdM에 새 암호 정책을 추가하는 방법을 설명합니다.

33.1. 암호 정책이란 무엇입니까

암호 정책은 암호가 충족해야 하는 규칙 집합입니다. 예를 들어 암호 정책은 최소 암호 길이와 최대 암호 기간을 정의할 수 있습니다. 이 정책의 영향을 받는 모든 사용자는 충분히 긴 암호를 설정하고 지정된 조건을 충족하기 위해 암호를 자주 변경해야 합니다. 이러한 방식으로 암호 정책은 사용자의 암호를 검색하고 오용할 위험을 줄이는 데 도움이 됩니다.

33.2. IdM의 암호 정책

IdM(Identity Management) 사용자가 IdM(Identity Management) 도메인에 인증하는 가장 일반적인 방법입니다. 암호 정책은 이러한 IdM 사용자 암호를 충족해야 하는 요구 사항을 정의합니다.

참고

IdM 암호 정책은 기본 LDAP 디렉터리에 설정되지만 Kerberos KDC(키 배포 센터)는 암호 정책을 적용합니다.

암호 정책 속성은 IdM에서 암호 정책을 정의하는 데 사용할 수 있는 속성을 나열합니다.

Expand
표 33.1. 암호 정책 속성
속성설명예제

최대 수명

암호가 유효한 최대 시간(사용자가 재설정해야 함). 기본값은 90일입니다.

속성이 0으로 설정되면 암호가 만료되지 않습니다.

최대 수명 = 180

사용자 암호는 180일 동안만 유효합니다. 그런 다음 IdM은 사용자에게 변경하라는 메시지를 표시합니다.

최소 수명 주기

두 개의 암호 변경 작업 간에 경과해야 하는 최소 시간(시간)입니다.

최소 수명 주기 = 1

사용자가 암호를 변경한 후 1시간 이상 기다린 후 다시 변경해야 합니다.

기록 크기

저장된 이전 암호의 수입니다. 사용자는 암호 기록에서 암호를 재사용할 수 없지만 저장되지 않은 이전 암호를 재사용할 수 있습니다.

기록 크기 = 0

이 경우 암호 기록이 비어 있으며 사용자는 이전 암호를 재사용할 수 있습니다.

문자 클래스

사용자가 암호에서 사용해야 하는 다른 문자 클래스의 수입니다. 문자 클래스는 다음과 같습니다.

* 대문자

* 소문자

* 숫자

* 쉼표 (,), 마침표 (.), 별표 (*)와 같은 특수 문자

* 기타 UTF-8 문자

행에서 세 번 이상 문자를 사용하면 문자 클래스가 1씩 줄어듭니다. 예를 들면 다음과 같습니다.

* Secret1 에는 대문자, 소문자, 숫자 등 3개 문자 클래스가 있습니다.

* Secret111 에는 두 개의 문자 클래스가 있습니다.: 대문자, 소문자, 숫자 및 1 을 반복적으로 사용할 경우 -1 위약금입니다.

문자 클래스 = 0

필요한 기본 클래스 수는 0입니다. 번호를 구성하려면 ipa pwpolicy-mod 명령을 --minclasses 옵션과 함께 실행합니다.

이 표 아래에 있는 중요한 참고 사항 도 참조하십시오.

최소 길이

암호의 최소 문자 수입니다.

추가 암호 정책 옵션이 설정되어 있으면 최소 암호 길이는 6자입니다.

최소 길이 = 8

사용자는 8자보다 짧은 암호를 사용할 수 없습니다.

최대 실패

IdM이 사용자 계정을 잠그기 전에 실패한 최대 로그인 횟수입니다.

최대 실패 = 6

IdM은 사용자가 잘못된 암호를 7번 입력하면 사용자 계정을 잠급니다.

실패 재설정 간격

IdM이 실패한 로그인 시도의 현재 수를 재설정한 후 시간(초)입니다.

실패 재설정 간격 = 60

사용자가 Max 실패에 정의된 실패한 로그인 시도 횟수가 1분 이상 기다린 후 사용자는 사용자 계정 잠금의 위험 없이 다시 로그인을 시도할 수 있습니다.

잠금 기간

최대 실패에 정의된 실패한 로그인 횟수가 지난 후 사용자 계정이 잠긴 시간(초)입니다.

잠금 기간 = 600

잠긴 계정이 있는 사용자는 10분 동안 로그인할 수 없습니다.

중요

국제 문자와 기호에 액세스할 수 없는 다양한 하드웨어 세트가 있는 경우 문자 클래스 요구 사항에 영어 알파벳 및 공통 기호를 사용하십시오. 암호의 문자 클래스 정책에 대한 자세한 내용은 Red Hat Knowledgebase의 암호에 유효한 문자를 참조하십시오.

33.3. Ansible 플레이북을 사용하여 IdM에 암호 정책이 있는지 확인

Ansible 플레이북을 사용하여 IdM(Identity Management)에 암호 정책이 있는지 확인하려면 다음 절차를 따르십시오.

IdM의 기본 global_policy 암호 정책에서 암호의 다양한 문자 클래스 수가 0으로 설정됩니다. 기록 크기도 0으로 설정되어 있습니다.

Ansible 플레이북을 사용하여 IdM 그룹에 대해 더 강력한 암호 정책을 적용하려면 이 절차를 완료합니다.

참고

IdM 그룹에 대한 암호 정책만 정의할 수 있습니다. 개별 사용자에 대한 암호 정책을 정의할 수 없습니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • IdM 관리자 암호를 알고 있습니다.
  • 암호 정책이 IdM에 있는지 확인하는 그룹입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 [ipaserver] 섹션에 IdM 서버의 FQDN 을 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 확인할 암호 정책을 정의하는 Ansible 플레이북 파일을 만듭니다. 이 단계를 간소화하려면 /usr/share/doc/ansible-freeipa/playbooks/pwpolicy/pwpolicy_present.yml 파일에서 예제를 복사하고 수정합니다.

    ---
    - name: Tests
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure presence of pwpolicy for group ops
        ipapwpolicy:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: ops
          minlife: 7
          maxlife: 49
          history: 5
          priority: 1
          lockouttime: 300
          minlength: 8
          minclasses: 4
          maxfail: 3
          failinterval: 5
    Copy to Clipboard Toggle word wrap

    개별 변수의 의미에 대한 자세한 내용은 암호 정책 속성을 참조하십시오.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/new_pwpolicy_present.yml
    Copy to Clipboard Toggle word wrap

Ansible 플레이북을 사용하여 IdM에 ops 그룹의 암호 정책이 있는지 확인합니다.

중요

ops 암호 정책의 우선 순위는 1 로 설정되어 있지만 global_policy 암호 정책에는 우선 순위가 설정되어 있지 않습니다. 이러한 이유로 ops 정책은 ops 그룹에 대해 global_policy 를 자동으로 대체하며 즉시 적용됩니다.

global_policy 는 사용자에 대한 그룹 정책이 설정되지 않은 경우 대체 정책으로 작동하며 그룹 정책보다 우선할 수 없습니다.

33.4. IdM의 추가 암호 정책 옵션

IdM(Identity Management) 관리자는 libpwquality 기능 세트를 기반으로 추가 암호 정책 옵션을 활성화하여 기본 암호 요구 사항을 강화할 수 있습니다. 추가 암호 정책 옵션에는 다음이 포함됩니다.

--maxrepeat
새 암호에서 동일한 연속 문자의 최대 허용 가능한 수를 지정합니다.
--maxsequence
새 암호의 최대 단일 문자 시퀀스 길이를 지정합니다. 이러한 시퀀스의 예는 12345 또는 fedcb 입니다. 이러한 암호는 대부분 단순성 검사를 통과하지 않습니다.
--dictcheck
0이 아닌 경우 가능한 수정 가능한 암호를 사용하여 사전의 단어와 일치하는지 확인합니다. 현재 libpwquality 는 the cracklib 라이브러리를 사용하여 사전 검사를 수행합니다.
--usercheck
0이 아니면 암호를 수정할 수 있는지 여부를 확인하고 일부 형식으로 사용자 이름을 포함합니다. 3자 미만 사용자 이름에 대해서는 수행되지 않습니다.

추가 암호 정책 옵션은 기존 암호에 적용할 수 없습니다. 추가 옵션을 적용하는 경우 IdM은 암호의 최소 문자 수인 --minlength 옵션을 6 자로 자동 설정합니다.

참고

RHEL 7 및 RHEL 8 서버와 혼합된 환경에서는 RHEL 8.4 이상에서 실행되는 서버에만 추가 암호 정책 설정을 적용할 수 있습니다. 사용자가 IdM 클라이언트에 로그인하고 IdM 클라이언트가 RHEL 8.3 이하에서 실행되는 IdM 서버와 통신하는 경우 시스템 관리자가 설정한 새 암호 정책 요구 사항이 적용되지 않습니다. 일관된 동작을 보장하려면 모든 서버를 RHEL 8.4 이상으로 업그레이드하거나 업데이트합니다.

33.5. IdM 그룹에 추가 암호 정책 옵션 적용

IdM(Identity Management)의 추가 암호 정책 옵션을 적용하려면 다음 절차를 따르십시오. 이 예제에서는 새 암호에 사용자의 각 사용자 이름이 포함되지 않고 암호에 연속해서 두 개 이상의 동일한 문자가 포함되어 있는지 확인하여 managers 그룹에 대한 암호 정책을 강화하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자로 로그인했습니다.
  • managers 그룹은 IdM에 있습니다.
  • managers 암호 정책은 IdM에 있습니다.

절차

  1. managers 그룹의 사용자가 제안한 모든 새 암호에 사용자 이름 검사를 적용합니다.

    $ ipa pwpolicy-mod --usercheck=True managers
    Copy to Clipboard Toggle word wrap
    참고

    암호 정책의 이름을 지정하지 않으면 기본 global_policy 가 수정됩니다.

  2. managers 암호 정책에서 동일한 연속 문자의 최대 수를 2로 설정합니다.

    $ ipa pwpolicy-mod --maxrepeat=2 managers
    Copy to Clipboard Toggle word wrap

    2개 이상의 동일한 연속 문자가 포함된 경우 이제 암호가 허용되지 않습니다. 예를 들어 eR873mUi111YJQ 조합은 연속적으로 3개의 1s가 포함되어 있기 때문에 허용되지 않습니다.

검증

  1. test _user라는 테스트 사용자를 추가합니다.

    $ ipa user-add test_user
    First name: test
    Last name: user
    ----------------------------
    Added user "test_user"
    ----------------------------
    Copy to Clipboard Toggle word wrap
  2. test 사용자를 managers 그룹에 추가합니다.

    1. IdM 웹 UI에서 IdentityGroups(ID 그룹) User Groups (사용자 그룹) 를 클릭합니다.
    2. managers 를 클릭합니다.
    3. 추가를 클릭합니다.
    4. Add users into user group 'managers' 페이지에서 test_user 를 확인합니다.
    5. > 화살표를 클릭하여 사용자를 Prospective 열로 이동합니다.
    6. 추가를 클릭합니다.
  3. 테스트 사용자의 암호를 재설정합니다.

    1. Identity(ID) Users(사용자) 로 이동합니다.
    2. test_user 를 클릭합니다.
    3. Actions(작업) 메뉴에서 Reset Password(암호 재설정 )를 클릭합니다.
    4. 사용자의 임시 암호를 입력합니다.
  4. 명령줄에서 test_user 에 대한 Kerberos 티켓 부여 티켓(TGT)을 가져옵니다.

    $ kinit test_user
    Copy to Clipboard Toggle word wrap
    1. 임시 암호를 입력합니다.
    2. 시스템에서 암호를 변경해야 함을 알려줍니다. 사용자 이름이 test_user 인 암호를 입력합니다.

      Password expired. You must change it now.
      Enter new password:
      Enter it again:
      Password change rejected: Password not changed.
      Unspecified password quality failure while trying to change password.
      Please try again.
      Copy to Clipboard Toggle word wrap
      참고

      Kerberos에는 세부적인 오류 암호 정책 보고가 없으며 특정 경우에는 암호가 거부된 명확한 이유를 제공하지 않습니다.

    3. 시스템은 입력한 암호가 거부되었음을 알려줍니다. 연속해서 3개 이상의 동일한 문자를 포함하는 암호를 입력합니다.

      Password change rejected: Password not changed.
      Unspecified password quality failure while trying to change password.
      Please try again.
      
      Enter new password:
      Enter it again:
      Copy to Clipboard Toggle word wrap
    4. 시스템은 입력한 암호가 거부되었음을 알려줍니다. managers 암호 정책의 기준을 충족하는 암호를 입력합니다.

      Password change rejected: Password not changed.
      Unspecified password quality failure while trying to change password.
      Please try again.
      
      Enter new password:
      Enter it again:
      Copy to Clipboard Toggle word wrap
  5. 가져온 TGT 보기:

    $ klist
    Ticket cache: KCM:0:33945
    Default principal: test_user@IDM.EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    07/07/2021 12:44:44  07/08/2021 12:44:44  krbtgt@IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

managers 암호 정책이 managers 그룹의 사용자에 대해 올바르게 작동합니다.

33.6. Ansible 플레이북을 사용하여 IdM 그룹에 추가 암호 정책 옵션 적용

Ansible Playbook을 사용하여 특정 IdM 그룹에 대한 암호 정책 요구 사항을 강화하기 위해 추가 암호 정책 옵션을 적용할 수 있습니다. 이를 위해 maxrepoy,maxsequence,dictcheckusercheck 암호 정책 옵션을 사용할 수 있습니다. 이 예제에서는 managers 그룹에 다음 요구 사항을 설정하는 방법을 설명합니다.

  • 사용자의 새 암호에는 사용자의 각 사용자 이름이 포함되어 있지 않습니다.
  • 암호에는 연속에 두 개 이상의 동일한 문자가 포함되어 있지 않습니다.
  • 암호의 단조 문자 시퀀스는 3자를 넘지 않습니다. 즉, 시스템은 1234 또는 abcd 와 같은 시퀀스의 암호를 허용하지 않습니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
    • ipaadmin_passwordsecret.yml Ansible 자격 증명에 저장했습니다.
  • 암호 정책이 IdM에 있는지 확인하는 그룹입니다.

절차

  1. 확인하려는 암호 정책을 정의하는 Ansible 플레이북 파일 manager_pwpolicy_present.yml 을 생성합니다. 이 단계를 간소화하려면 다음 예제를 복사 및 수정합니다.

    ---
    - name: Tests
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure presence of usercheck and maxrepeat pwpolicy for group managers
        ipapwpolicy:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: managers
          usercheck: True
          maxrepeat: 2
          maxsequence: 3
    Copy to Clipboard Toggle word wrap
  2. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/manager_pwpolicy_present.yml
    Copy to Clipboard Toggle word wrap

검증

  1. test _user라는 테스트 사용자를 추가합니다.

    $ ipa user-add test_user
    First name: test
    Last name: user
    ----------------------------
    Added user "test_user"
    ----------------------------
    Copy to Clipboard Toggle word wrap
  2. test 사용자를 managers 그룹에 추가합니다.

    1. IdM 웹 UI에서 IdentityGroups(ID 그룹) User Groups (사용자 그룹) 를 클릭합니다.
    2. managers 를 클릭합니다.
    3. 추가를 클릭합니다.
    4. Add users into user group 'managers' 페이지에서 test_user 를 확인합니다.
    5. > 화살표를 클릭하여 사용자를 Prospective 열로 이동합니다.
    6. 추가를 클릭합니다.
  3. 테스트 사용자의 암호를 재설정합니다.

    1. Identity(ID) Users(사용자) 로 이동합니다.
    2. test_user 를 클릭합니다.
    3. Actions(작업) 메뉴에서 Reset Password(암호 재설정 )를 클릭합니다.
    4. 사용자의 임시 암호를 입력합니다.
  4. 명령줄에서 test_user 에 대한 Kerberos 티켓 부여 티켓(TGT)을 가져옵니다.

    $ kinit test_user
    Copy to Clipboard Toggle word wrap
    1. 임시 암호를 입력합니다.
    2. 시스템에서 암호를 변경해야 함을 알려줍니다. 사용자 이름이 test_user 인 암호를 입력합니다.

      Password expired. You must change it now.
      Enter new password:
      Enter it again:
      Password change rejected: Password not changed.
      Unspecified password quality failure while trying to change password.
      Please try again.
      Copy to Clipboard Toggle word wrap
      참고

      Kerberos에는 세부적인 오류 암호 정책 보고가 없으며 특정 경우에는 암호가 거부된 명확한 이유를 제공하지 않습니다.

    3. 시스템은 입력한 암호가 거부되었음을 알려줍니다. 연속해서 3개 이상의 동일한 문자를 포함하는 암호를 입력합니다.

      Password change rejected: Password not changed.
      Unspecified password quality failure while trying to change password.
      Please try again.
      
      Enter new password:
      Enter it again:
      Copy to Clipboard Toggle word wrap
    4. 시스템은 입력한 암호가 거부되었음을 알려줍니다. 3자를 초과하는 단조 문자 시퀀스가 포함된 암호를 입력합니다. 이러한 서열의 예는 1234fedc 를 포함한다:

      Password change rejected: Password not changed.
      Unspecified password quality failure while trying to change password.
      Please try again.
      
      Enter new password:
      Enter it again:
      Copy to Clipboard Toggle word wrap
    5. 시스템은 입력한 암호가 거부되었음을 알려줍니다. managers 암호 정책의 기준을 충족하는 암호를 입력합니다.

      Password change rejected: Password not changed.
      Unspecified password quality failure while trying to change password.
      Please try again.
      
      Enter new password:
      Enter it again:
      Copy to Clipboard Toggle word wrap
  5. 유효한 암호를 입력한 후에만 TGT를 받을 수 있는지 확인합니다.

    $ klist
    Ticket cache: KCM:0:33945
    Default principal: test_user@IDM.EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    07/07/2021 12:44:44  07/08/2021 12:44:44  krbtgt@IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

34장. 암호 알림 만료 관리

ipa-client-epn 패키지에서 제공하는 EPN(암호 만료 알림) 도구를 사용하여 암호가 구성된 시간 내에 만료되는 IdM(Identity Management) 사용자 목록을 구축할 수 있습니다. EPN 도구를 설치, 구성 및 사용하려면 관련 섹션을 참조하십시오.

34.1. 암호 만료 알림 도구란 무엇입니까?

EPN(Exiring Password Notification) 툴은 암호가 구성된 시간 내에 만료되는 IdM(Identity Management) 사용자 목록을 빌드하는 데 사용할 수 있는 독립 실행형 도구입니다.

IdM 관리자는 EPN을 사용하여 다음을 수행할 수 있습니다.

  • 영향을 받는 사용자 목록을 JSON 형식으로 표시합니다. 이 형식은 시험 실행 모드로 실행될 때 생성됩니다.
  • 지정된 날짜 또는 날짜 범위에 대해 전송할 이메일 수를 계산합니다.
  • 암호 만료 이메일 알림 전송.
  • EPN 도구를 매일 실행하고 암호가 정의된 향후 날짜 범위 내에 만료되는 사용자에게 이메일을 보내도록 ipa-epn.timer 을 구성합니다.
  • 사용자에게 전송하도록 이메일 알림을 사용자 지정합니다.
참고

사용자 계정을 비활성화하면 암호가 만료될 경우 이메일 알림이 전송되지 않습니다.

34.2. 만료 암호 알림 도구 설치

EPN(Expiring Password Notification) 툴을 설치하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM(Identity Management) 복제본에 EPN 도구를 설치하거나 스마트 호스트로 구성된 로컬 Postfix SMTP 서버를 사용하여 IdM 클라이언트에 설치합니다.

절차

  • EPN 도구를 설치합니다.

    # yum install ipa-client-epn
    Copy to Clipboard Toggle word wrap

34.3. EPN 도구를 실행하여 암호가 만료되는 사용자에게 이메일 보내기

Expiring Password Notification (EPN) 툴을 실행하여 암호가 만료되는 사용자에게 이메일을 보내려면 다음 절차를 따르십시오.

참고

EPN 도구는 상태 비저장 도구입니다. EPN 도구가 지정된 날짜에 암호가 만료되는 사용자를 이메일을 보내지 못하면 EPN 툴에서 해당 사용자 목록을 저장하지 않습니다.

사전 요구 사항

절차

  1. epn.conf 구성 파일을 업데이트하여 EPN 도구에 대한 옵션을 설정하여 향후 암호 만료를 알립니다.

    # vi /etc/ipa/epn.conf
    Copy to Clipboard Toggle word wrap
  2. 필요에 따라 notify_ttls 를 업데이트합니다. 기본값은 암호가 28, 14, 7, 3 및 1일 후에 만료되는 사용자에게 알리는 것입니다.

    notify_ttls = 28, 14, 7, 3, 1
    Copy to Clipboard Toggle word wrap
  3. SMTP 서버 및 포트를 구성합니다.

    smtp_server = localhost
    smtp_port = 25
    Copy to Clipboard Toggle word wrap
  4. 이메일 만료 통지가 전송되는 이메일 주소를 지정합니다. 실패한 이메일은 이 주소로 반환됩니다.

    mail_from =admin-email@example.com
    Copy to Clipboard Toggle word wrap
  5. /etc/ipa/epn.conf 파일을 저장합니다.
  6. 시험 실행 모드에서 EPN 도구를 실행하여 --dry-run 옵션 없이 도구를 실행하는 경우 암호 만료 이메일 알림이 전송되는 사용자 목록을 생성합니다.

    ipa-epn --dry-run
    [
        {
         "uid": "user5",
         "cn": "user 5",
         "krbpasswordexpiration": "2020-04-17 15:51:53",
         "mail": "['user5@ipa.test']"
        }
    ]
    [
        {
         "uid": "user6",
         "cn": "user 6",
         "krbpasswordexpiration": "2020-12-17 15:51:53",
         "mail": "['user5@ipa.test']"
         }
    ]
    The IPA-EPN command was successful
    Copy to Clipboard Toggle word wrap
    참고

    반환된 사용자 목록이 매우 크고 --dry-run 옵션 없이 툴을 실행하면 이메일 서버에서 문제가 발생할 수 있습니다.

  7. 시험 실행 모드에서 EPN 도구를 실행할 때 반환된 모든 사용자 목록에 만료 이메일을 보내려면 --dry-run 옵션을 사용하지 않고 EPN 도구를 실행합니다.

    ipa-epn
    [
      {
         "uid": "user5",
         "cn": "user 5",
         "krbpasswordexpiration": "2020-10-01 15:51:53",
         "mail": "['user5@ipa.test']"
      }
    ]
    [
      {
        "uid": "user6",
        "cn": "user 6",
        "krbpasswordexpiration": "2020-12-17 15:51:53",
        "mail": "['user5@ipa.test']"
      }
    ]
    The IPA-EPN command was successful
    Copy to Clipboard Toggle word wrap
  8. 모든 모니터링 시스템에 EPN을 추가하고 --from-nbdays 및 --to- nbdays 옵션으로 호출하여 특정 시간 프레임 내에 만료할 사용자 암호 수를 결정할 수 있습니다.

    # ipa-epn --from-nbdays 8 --to-nbdays 12
    Copy to Clipboard Toggle word wrap
    참고

    --from-nbdays 및 --to-nbdays 옵션을 사용하여 EPN 툴을 호출하면 시험 실행 모드에서 자동으로 실행됩니다.

검증 단계

  • EPN 도구를 실행하고 이메일 알림이 전송되었는지 확인합니다.

34.4. 암호가 만료되는 모든 사용자에게 ipa-epn.timer를 활성화

ipa-epn.timer 를 사용하여 Expiring Password Notification (EPN) 툴을 실행하여 암호가 만료되는 사용자에게 이메일을 보냅니다. ipa-epn.timerepn.conf 파일을 구문 분석하고 해당 파일에 구성된 정의된 향후 날짜 범위 내에 암호가 만료되는 사용자에게 이메일을 전송합니다.

사전 요구 사항

절차

  • ipa-epn.timer 를 시작합니다 :

    systemctl start ipa-epn.timer
    Copy to Clipboard Toggle word wrap

타이머를 시작하면 기본적으로 EPN 툴은 매일 오전 1시에 실행됩니다.

34.5. 만료 암호 알림 이메일 템플릿 수정

EPN(Expiring Password Notification) 이메일 메시지 템플릿을 사용자 지정하려면 다음 절차를 따르십시오.

사전 요구 사항

  • ipa-client-epn 패키지가 설치되어 있습니다.

절차

  1. EPN 메시지 템플릿을 엽니다.

    # vi /etc/ipa/epn/expire_msg.template
    Copy to Clipboard Toggle word wrap
  2. 필요에 따라 템플릿 텍스트를 업데이트합니다.

    Hi {{ fullname }},
    
    Your password will expire on {{ expiration }}.
    
    Please change it as soon as possible.
    Copy to Clipboard Toggle word wrap

    템플릿에서 다음 변수를 사용할 수 있습니다.

    • 사용자 ID: uid
    • 전체 이름: fullname
    • 이름: first
    • 성: 성
    • 암호 만료 날짜: 만료
  3. 메시지 템플릿 파일을 저장합니다.

검증 단계

  • EPN 도구를 실행하고 이메일 알림에 업데이트된 텍스트가 포함되어 있는지 확인합니다.

IdM(Identity Management) 사용자가 IdM LDAP 서버에 저장된 일부 사용자 또는 그룹 속성(예: 로그인 이름, 홈 디렉터리, 인증에 사용되는 인증서 또는 SSH 키)을 재정의하려는 경우 IdM 관리자가 IdM ID 보기를 사용하여 특정 IdM 클라이언트에서 이러한 값을 재정의할 수 있습니다. 예를 들어 사용자가 IdM에 로그인하는 데 가장 일반적으로 사용하는 IdM 클라이언트에서 사용자에 대해 다른 홈 디렉터리를 지정할 수 있습니다.

이 장에서는 IdM에 클라이언트로 등록된 호스트에서 IdM 사용자와 관련된 POSIX 특성 값을 재정의하는 방법을 설명합니다.

35.1. ID 보기

IdM(Identity Management)의 ID 보기는 다음 정보를 지정하는 IdM 클라이언트 측 보기입니다.

  • 중앙에서 정의된 POSIX 사용자 또는 그룹 속성의 새 값
  • 새 값이 적용되는 클라이언트 호스트 또는 호스트입니다.

ID 보기에는 하나 이상의 재정의가 포함되어 있습니다. 재정의는 중앙에서 정의된 POSIX 특성 값을 특정 대체합니다.

IdM 서버에서 중앙에서 IdM 클라이언트에 대한 ID 보기만 정의할 수 있습니다. IdM 클라이언트의 클라이언트 측 덮어쓰기를 로컬로 구성할 수 없습니다.

예를 들어 ID 뷰를 사용하여 다음 목표를 달성할 수 있습니다.

  • 다양한 환경에 대한 다른 특성 값을 정의합니다. 예를 들어 IdM 관리자 또는 다른 IdM 사용자가 다른 IdM 클라이언트에 다른 홈 디렉토리를 가질 수 있습니다. /home/encrypted/username 을 한 IdM 클라이언트 및 /dropbox/username 에서 이 사용자의 홈 디렉토리로 구성할 수 있습니다. 이 상황에서 ID 보기를 사용하는 것은 대체 방법으로 사용할 수 있습니다. 예를 들어 fallback_homedir,override_homedir 또는 클라이언트의 /etc/sssd/sssd.conf 파일의 기타 홈 디렉터리 변수는 모든 사용자에게 영향을 미칩니다. 예제 절차는 IdM 클라이언트에서 IdM 사용자 홈 디렉터리를 덮어쓰려면 ID 보기 추가를 참조하십시오.
  • 이전에 생성한 특성 값을 사용자의 UID 재정의와 같은 다른 값으로 바꿉니다. 이 기능은 LDAP 측에서 수행하기 어려운 시스템 전체 변경을 수행하려는 경우 유용할 수 있습니다(예: IdM 사용자의 UID 1009). IdM 사용자 UID를 생성하는 데 사용되는 IdM ID 범위는 1000 또는 10000으로 시작하지 않습니다. IdM 사용자가 모든 IdM 클라이언트에서 UID 1009를 사용하여 로컬 사용자를 가장하는 이유가 있는 경우 ID 보기를 사용하여 IdM에서 사용자를 생성할 때 생성된 이 IdM 사용자의 UID를 재정의할 수 있습니다.
중요

IdM 서버가 아닌 IdM 클라이언트에만 ID 뷰를 적용할 수 있습니다.

35.2. SSSD 성능에 대한 ID 뷰의 잠재적 영향

ID 뷰를 정의할 때 IdM은 IdM 서버의 SSSD(System Security Services Daemon) 캐시에 원하는 덮어쓰기 값을 배치합니다. 그러면 IdM 클라이언트에서 실행 중인 SSSD가 서버 캐시에서 덮어쓰기 값을 검색합니다.

특정 최적화 및 ID 보기를 동시에 실행할 수 없기 때문에 ID 보기를 적용하면 SSSD(System Security Services Daemon) 성능에 부정적인 영향을 미칠 수 있습니다. 예를 들어 ID 뷰는 SSSD가 서버에서 그룹을 조회하는 프로세스를 최적화하지 못하도록 합니다.

  • ID 보기를 사용하면 그룹 이름이 재정의된 경우 SSSD에서 그룹 구성원 이름에서 반환된 모든 멤버를 확인해야 합니다.
  • ID 보기가 없으면 SSSD는 그룹 오브젝트의 member 속성에서만 사용자 이름만 수집할 수 있습니다.

이러한 부정적인 영향은 SSSD 캐시가 비어 있거나 캐시를 지운 후 모든 항목을 잘못 만드는 경우 가장 드러납니다.

35.3. ID 보기가 재정의할 수 있는 속성

ID 보기는 사용자 및 그룹 ID 재정의로 구성됩니다. 재정의는 새로운 POSIX 특성 값을 정의합니다.

사용자 및 그룹 ID 재정의는 다음 POSIX 속성에 대한 새 값을 정의할 수 있습니다.

사용자 속성
  • 로그인 이름(uid)
  • GECOS 항목(gecos)
  • UID 번호(uidNumber)
  • GID 번호(gidNumber)
  • 로그인 쉘 (loginShell)
  • 홈 디렉토리(homeDirectory)
  • SSH 공개 키(ipaSshPubkey)
  • 인증서(userCertificate)
그룹 속성
  • 그룹 이름(cn)
  • 그룹 GID 번호(gidNumber)

35.4. ID 보기 명령에 대한 도움말 가져오기

IdM CLI(명령줄 인터페이스)에서 IdM(Identity Management) ID 뷰와 관련된 명령에 대한 도움말을 얻을 수 있습니다.

사전 요구 사항

  • IdM 사용자의 Kerberos 티켓을 획득했습니다.

절차

  • ID 보기 및 재정의를 관리하는 데 사용되는 모든 명령을 표시하려면 다음을 수행합니다.

    $ ipa help idviews
    ID Views
    
    Manage ID Views
    
    IPA allows to override certain properties of users and groups[...]
    [...]
    Topic commands:
      idoverridegroup-add          Add a new Group ID override
      idoverridegroup-del          Delete a Group ID override
    [...]
    Copy to Clipboard Toggle word wrap
  • 특정 명령에 대한 자세한 도움말을 표시하려면 명령에 --help 옵션을 추가합니다.

    $ ipa idview-add --help
    Usage: ipa [global-options] idview-add NAME [options]
    
    Add a new ID View.
    Options:
      -h, --help      show this help message and exit
      --desc=STR      Description
    [...]
    Copy to Clipboard Toggle word wrap

다음 절차에 따라 특정 IdM 사용자와 연결된 POSIX 속성 값을 덮어쓰는 특정 IdM 클라이언트에 대한 ID 뷰를 생성합니다. 이 절차에서는 idm_user라는 IdM 사용자가 user_ 1234 로그인 이름을 사용하여 host1 이라는 IdM 클라이언트에 로그인할 수 있는 ID 보기의 예를 사용합니다.

사전 요구 사항

  • IdM 관리자로 로그인했습니다.

절차

  1. 새 ID 보기 생성. 예를 들어 example_for_host1 이라는 ID 보기를 생성하려면 다음을 실행합니다.

    $ ipa idview-add example_for_host1
    ---------------------------
    Added ID View "example_for_host1"
    ---------------------------
      ID View Name: example_for_host1
    Copy to Clipboard Toggle word wrap
  2. example_for_host1 ID 보기에 사용자 재정의를 추가합니다. 사용자 로그인을 재정의하려면 다음을 수행합니다.

    • ipa idoverrideuser-add 명령을 입력합니다.
    • ID 보기의 이름 추가
    • 앵커라고도 하는 사용자 이름 추가
    • login 옵션을 추가합니다.

      $ ipa idoverrideuser-add example_for_host1 idm_user --login=user_1234
      -----------------------------
      Added User ID override "idm_user"
      -----------------------------
        Anchor to override: idm_user
        User login: user_1234
      Copy to Clipboard Toggle word wrap

      사용 가능한 옵션 목록은 ipa idoverrideuser-add --help를 실행합니다.

      참고

      ipa idoverrideuser-add --certificate 명령은 지정된 ID 보기에 있는 계정의 기존 인증서를 모두 대체합니다. 추가 인증서를 추가하려면 대신 ipa idoverrideuser-add-cert 명령을 사용하십시오.

      $ ipa idoverrideuser-add-cert example_for_host1 user --certificate="MIIEATCC..."
      Copy to Clipboard Toggle word wrap
  3. 선택 사항: ipa idoverrideuser-mod 명령을 사용하여 기존 사용자 재정의에 대한 새 속성 값을 지정할 수 있습니다.
  4. example_for_host1host1.idm.example.com 호스트에 적용합니다.

    $ ipa idview-apply example_for_host1 --hosts=host1.idm.example.com
    -----------------------------
    Applied ID View "example_for_host1"
    -----------------------------
    hosts: host1.idm.example.com
    ---------------------------------------------
    Number of hosts the ID View was applied to: 1
    ---------------------------------------------
    Copy to Clipboard Toggle word wrap
    참고

    ipa idview-apply 명령은 --hostgroups 옵션도 허용합니다. 옵션은 지정된 호스트 그룹에 속하는 호스트에 ID 보기를 적용하지만 ID 보기를 호스트 그룹 자체와 연결하지 않습니다. 대신, --hostgroups 옵션은 지정된 호스트 그룹의 멤버를 확장하고 --hosts 옵션을 각 호스트 그룹에 개별적으로 적용합니다.

    즉, 나중에 호스트가 호스트 그룹에 추가되면 ID 보기가 새 호스트에 적용되지 않습니다.

  5. 새 구성을 host1.idm.example.com 시스템에 즉시 적용하려면 다음을 수행합니다.

    1. 시스템에 root로 SSH 연결을 수행합니다.

      $ ssh root@host1
      Password:
      Copy to Clipboard Toggle word wrap
    2. SSSD 캐시를 지웁니다.

      root@host1 ~]# sss_cache -E
      Copy to Clipboard Toggle word wrap
    3. SSSD 데몬을 다시 시작합니다.
    root@host1 ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap

검증 단계

  • user_1234 의 자격 증명이 있는 경우 이를 사용하여 host1 의 IdM에 로그인할 수 있습니다.

    1. user_1234 를 로그인 이름으로 사용하여 host1 에 SSH로 연결합니다.

      [root@r8server ~]# ssh user_1234@host1.idm.example.com
      Password:
      
      Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229
      [user_1234@host1 ~]$
      Copy to Clipboard Toggle word wrap
    2. 작업 디렉터리를 표시합니다.

      [user_1234@host1 ~]$ pwd
      /home/idm_user/
      Copy to Clipboard Toggle word wrap
  • 또는 host1 에 root 자격 증명이 있는 경우 이를 사용하여 id 명령의 출력을 idm_user 및 user_ 1234 에 대해 확인할 수 있습니다.

    [root@host1 ~]# id idm_user
    uid=779800003(user_1234) gid=779800003(idm_user) groups=779800003(idm_user)
    [root@host1 ~]# user_1234
    uid=779800003(user_1234) gid=779800003(idm_user) groups=779800003(idm_user)
    Copy to Clipboard Toggle word wrap

35.6. IdM ID 보기 수정

IdM(Identity Management)의 ID 보기는 특정 IdM 사용자와 관련된 POSIX 특성 값을 재정의합니다. 기존 ID 보기를 수정하려면 다음 절차를 따르십시오. 특히 ID 보기를 수정하여 idm_user 라는 사용자가 host1. idm.example.com IdM 클라이언트에서 /home/user _1234/ 디렉터리를 사용자 홈 디렉터리로 사용하도록 설정하는 방법을 설명합니다.

사전 요구 사항

  • host1.idm.example.com 에 대한 루트 액세스 권한이 있습니다.
  • 필요한 권한(예: admin )이 있는 사용자로 로그인했습니다.
  • host1 IdM 클라이언트에 적용되는 idm_user 에 대해 ID 보기가 구성되어 있습니다.

절차

  1. root로 idm_userhost1.idm.example.com 에서 사용자 홈 디렉터리로 사용할 디렉터리를 생성합니다.

    [root@host1 /]# mkdir /home/user_1234/
    Copy to Clipboard Toggle word wrap
  2. 디렉터리의 소유권을 변경합니다.

    [root@host1 /]# chown idm_user:idm_user /home/user_1234/
    Copy to Clipboard Toggle word wrap
  3. ID 보기가 현재 적용되는 호스트를 포함하여 ID 보기를 표시합니다. example_for_host1 이라는 ID 보기를 표시하려면 다음을 수행합니다.

    $ ipa idview-show example_for_host1 --all
      dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com
      ID View Name: example_for_host1
      User object override: idm_user
      Hosts the view applies to: host1.idm.example.com
      objectclass: ipaIDView, top, nsContainer
    Copy to Clipboard Toggle word wrap

    출력에 ID 보기가 현재 host1.idm.example.com 에 적용됨을 보여줍니다.

  4. example_for_host1 ID 보기의 사용자 재정의를 수정합니다. 사용자 홈 디렉터리를 재정의하려면 다음을 수행합니다.

    • ipa idoverrideuser-add 명령을 입력합니다.
    • ID 보기의 이름 추가
    • 앵커라고도 하는 사용자 이름 추가
    • home dir 옵션을 추가합니다.

      $ ipa idoverrideuser-mod example_for_host1 idm_user --homedir=/home/user_1234
      -----------------------------
      Modified a User ID override "idm_user"
      -----------------------------
        Anchor to override: idm_user
        User login: user_1234
        Home directory: /home/user_1234/
      Copy to Clipboard Toggle word wrap

    사용 가능한 옵션 목록은 ipa idoverrideuser-mod --help 를 실행합니다.

  5. 새 구성을 host1.idm.example.com 시스템에 즉시 적용하려면 다음을 수행합니다.

    1. 시스템에 root로 SSH 연결을 수행합니다.

      $ ssh root@host1
      Password:
      Copy to Clipboard Toggle word wrap
    2. SSSD 캐시를 지웁니다.

      root@host1 ~]# sss_cache -E
      Copy to Clipboard Toggle word wrap
    3. SSSD 데몬을 다시 시작합니다.
    root@host1 ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap

검증 단계

  1. idm_userhost1SSH 를 수행합니다.

    [root@r8server ~]# ssh idm_user@host1.idm.example.com
    Password:
    
    Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229
    [user_1234@host1 ~]$
    Copy to Clipboard Toggle word wrap
  2. 작업 디렉터리를 출력합니다.

    [user_1234@host1 ~]$ pwd
    /home/user_1234/
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)의 ID 보기는 특정 IdM 사용자와 관련된 POSIX 특성 값을 재정의합니다. 다음 절차에 따라 사용자가 /home/idm_user/ 대신 사용자 홈 디렉터리로 /home/user_1234/ 디렉터리를 사용할 수 있도록 IdM 클라이언트의 idm_user 에 적용되는 ID 뷰를 생성합니다.

사전 요구 사항

  • host1.idm.example.com 에 대한 루트 액세스 권한이 있습니다.
  • 필요한 권한(예: admin )이 있는 사용자로 로그인했습니다.

절차

  1. root로 idm_userhost1.idm.example.com 에서 사용자 홈 디렉터리로 사용할 디렉터리를 생성합니다.

    [root@host1 /]# mkdir /home/user_1234/
    Copy to Clipboard Toggle word wrap
  2. 디렉터리의 소유권을 변경합니다.

    [root@host1 /]# chown idm_user:idm_user /home/user_1234/
    Copy to Clipboard Toggle word wrap
  3. ID 뷰를 생성합니다. 예를 들어 example_for_host1 이라는 ID 보기를 생성하려면 다음을 실행합니다.

    $ ipa idview-add example_for_host1
    ---------------------------
    Added ID View "example_for_host1"
    ---------------------------
      ID View Name: example_for_host1
    Copy to Clipboard Toggle word wrap
  4. example_for_host1 ID 보기에 사용자 재정의를 추가합니다. 사용자 홈 디렉터리를 재정의하려면 다음을 수행합니다.

    • ipa idoverrideuser-add 명령을 입력합니다.
    • ID 보기의 이름 추가
    • 앵커라고도 하는 사용자 이름 추가
    • home dir 옵션을 추가합니다.
    $ ipa idoverrideuser-add example_for_host1 idm_user --homedir=/home/user_1234
    -----------------------------
    Added User ID override "idm_user"
    -----------------------------
      Anchor to override: idm_user
      Home directory: /home/user_1234/
    Copy to Clipboard Toggle word wrap
  5. example_for_host1host1.idm.example.com 호스트에 적용합니다.

    $ ipa idview-apply example_for_host1 --hosts=host1.idm.example.com
    -----------------------------
    Applied ID View "example_for_host1"
    -----------------------------
    hosts: host1.idm.example.com
    ---------------------------------------------
    Number of hosts the ID View was applied to: 1
    ---------------------------------------------
    Copy to Clipboard Toggle word wrap
    참고

    ipa idview-apply 명령은 --hostgroups 옵션도 허용합니다. 옵션은 지정된 호스트 그룹에 속하는 호스트에 ID 보기를 적용하지만 ID 보기를 호스트 그룹 자체와 연결하지 않습니다. 대신, --hostgroups 옵션은 지정된 호스트 그룹의 멤버를 확장하고 --hosts 옵션을 각 호스트 그룹에 개별적으로 적용합니다.

    즉, 나중에 호스트가 호스트 그룹에 추가되면 ID 보기가 새 호스트에 적용되지 않습니다.

  6. 새 구성을 host1.idm.example.com 시스템에 즉시 적용하려면 다음을 수행합니다.

    1. 시스템에 root로 SSH 연결을 수행합니다.

      $ ssh root@host1
      Password:
      Copy to Clipboard Toggle word wrap
    2. SSSD 캐시를 지웁니다.

      root@host1 ~]# sss_cache -E
      Copy to Clipboard Toggle word wrap
    3. SSSD 데몬을 다시 시작합니다.
    root@host1 ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap

검증 단계

  1. idm_userhost1SSH 를 수행합니다.

    [root@r8server ~]# ssh idm_user@host1.idm.example.com
    Password:
    Activate the web console with: systemctl enable --now cockpit.socket
    
    Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229
    [idm_user@host1 /]$
    Copy to Clipboard Toggle word wrap
  2. 작업 디렉터리를 출력합니다.

    [idm_user@host1 /]$ pwd
    /home/user_1234/
    Copy to Clipboard Toggle word wrap

35.8. IdM 호스트 그룹에 ID 보기 적용

ipa idview-apply 명령은 --hostgroups 옵션을 허용합니다. 그러나 옵션은 현재 지정된 호스트 그룹에 속해 있지만 ID 보기를 호스트 그룹 자체와 동적으로 연결하지 않는 호스트에 ID 뷰를 적용하는 일회성 작업 역할을 합니다. hostgroups 옵션은 지정된 호스트 그룹의 멤버를 확장하고 --hosts 옵션을 모든 호스트에 개별적으로 적용합니다.

나중에 호스트 그룹에 새 호스트를 추가하는 경우 --hosts 옵션과 함께 ipa idview-apply 명령을 사용하여 새 호스트에 ID 보기를 수동으로 적용해야 합니다.

마찬가지로 호스트 그룹에서 호스트를 제거해도 제거 후에도 ID 뷰가 여전히 호스트에 할당됩니다. 제거된 호스트에서 ID 보기를 적용 취소하려면 ipa idview-unapply id_view_name --hosts=name_of_the_removed_host 명령을 실행해야 합니다.

다음 목표를 달성하려면 다음 절차를 따르십시오.

  1. 호스트 그룹을 생성하고 호스트를 추가하는 방법.
  2. 호스트 그룹에 ID 보기를 적용하는 방법.
  3. 새 호스트를 호스트 그룹에 추가하고 ID 보기를 새 호스트에 적용하는 방법.

사전 요구 사항

절차

  1. 호스트 그룹을 생성하고 호스트를 추가합니다.

    1. 호스트 그룹을 만듭니다. 예를 들어 호스트 그룹을 생성하려면 다음을 실행합니다.

      [root@server ~]# ipa hostgroup-add --desc="Baltimore hosts" baltimore
      ---------------------------
      Added hostgroup "baltimore"
      ---------------------------
      Host-group: baltimore
      Description: Baltimore hosts
      Copy to Clipboard Toggle word wrap
    2. 호스트 그룹에 호스트를 추가합니다. 예를 들어 host 102 및 host 103 을 hub timore 호스트 그룹에 추가하려면 다음을 수행합니다.

      [root@server ~]# ipa hostgroup-add-member --hosts={host102,host103} baltimore
      Host-group: baltimore
      Description: Baltimore hosts
      Member hosts: host102.idm.example.com, host103.idm.example.com
      -------------------------
      Number of members added 2
      -------------------------
      Copy to Clipboard Toggle word wrap
  2. 호스트 그룹의 호스트에 ID 보기를 적용합니다. 예를 들어 example_for_host1 ID 보기를 hub timore 호스트 그룹에 적용하려면 다음을 수행합니다.

    [root@server ~]# ipa idview-apply --hostgroups=baltimore
    ID View Name: example_for_host1
    -----------------------------------------
    Applied ID View "example_for_host1"
    -----------------------------------------
      hosts: host102.idm.example.com, host103.idm.example.com
    ---------------------------------------------
    Number of hosts the ID View was applied to: 2
    ---------------------------------------------
    Copy to Clipboard Toggle word wrap
  3. 새 호스트를 호스트 그룹에 추가하고 새 호스트에 ID 보기를 적용합니다.

    1. 새 호스트를 호스트 그룹에 추가합니다. 예를 들어 somehost.idm.example.com 호스트를 parent timore 호스트 그룹에 추가하려면 다음을 수행합니다.

      [root@server ~]# ipa hostgroup-add-member --hosts=somehost.idm.example.com baltimore
        Host-group: baltimore
        Description: Baltimore hosts
        Member hosts:  host102.idm.example.com, host103.idm.example.com,somehost.idm.example.com
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
    2. 선택적으로 ID 보기 정보를 표시합니다. 예를 들어 example_for_host1 ID 보기에 대한 세부 정보를 표시하려면 다음을 수행합니다.

      [root@server ~]# ipa idview-show example_for_host1 --all
        dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com
        ID View Name: example_for_host1
      [...]
        Hosts the view applies to: host102.idm.example.com, host103.idm.example.com
        objectclass: ipaIDView, top, nsContainer
      Copy to Clipboard Toggle word wrap

      출력에서 ID 보기가 catalog timore 호스트 그룹의 새로 추가된 호스트인 somehost.idm.example.com 에 적용되지 않았음을 보여줍니다.

    3. ID 보기를 새 호스트에 적용합니다. 예를 들어 example_for_host1 ID 보기를 somehost.idm.example.com에 적용하려면 다음을 수행합니다.

      [root@server ~]# ipa idview-apply --host=somehost.idm.example.com
      ID View Name: example_for_host1
      -----------------------------------------
      Applied ID View "example_for_host1"
      -----------------------------------------
        hosts: somehost.idm.example.com
      ---------------------------------------------
      Number of hosts the ID View was applied to: 1
      ---------------------------------------------
      Copy to Clipboard Toggle word wrap

검증 단계

  • ID 보기 정보를 다시 표시합니다.

    [root@server ~]# ipa idview-show example_for_host1 --all
      dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com
      ID View Name: example_for_host1
    [...]
      Hosts the view applies to: host102.idm.example.com, host103.idm.example.com, somehost.idm.example.com
      objectclass: ipaIDView, top, nsContainer
    Copy to Clipboard Toggle word wrap

    출력에서 ID 보기가 이제 satellite timore 호스트 그룹의 새로 추가된 호스트인 somehost.idm.example.com 에 적용됨을 보여줍니다.

idoverrideuser ansible-freeipa 모듈을 사용하여 특정 IdM 사용자와 연결된 POSIX 특성 값을 덮어쓰는 특정 IdM(Identity Management) 클라이언트에 대한 ID 뷰를 생성하려면 이 절차를 완료합니다. 이 절차에서는 idm_user 라는 IdM 사용자가 user_1234 로그인 이름을 사용하여 host1.idm.example.com 이라는 IdM 클라이언트에 로그인할 수 있는 ID 보기 예제를 사용합니다. 또한 ID 보기는 host1에 로그인한 후 사용자 홈 디렉터리는 /home/user_1234/ 이 되도록 idm_user의 홈 디렉토리를 수정합니다.

사전 요구 사항

  • 제어 노드에서 다음을 수행합니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • ansible-freeipa 패키지가 설치되어 있습니다.
    • ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
    • RHEL 8.10 이상을 사용하고 있습니다.
    • ipaadmin_passwordsecret.yml Ansible 자격 증명에 저장했습니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 다음 콘텐츠를 사용하여 Ansible 플레이북 파일 add-idoverrideuser-with-name-and-homedir.yml 을 생성합니다.

    ---
    - name: Playbook to manage idoverrideuser
      hosts: ipaserver
      become: false
      gather_facts: false
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
      - name: Ensure idview_for_host1 is present
        idview:
          ipaadmin_password: ”{{ ipaadmin_password }}"
          name: idview_for_host1
      - name: Ensure idview_for_host1 is applied to host1.idm.example.com
        idview:
          ipaadmin_password: ”{{ ipaadmin_password }}"
          name: idview_for_host1
          host: host1.idm.example.com
          action: member
      - name: Ensure idm_user is present in idview_for_host1 with homedir /home/user_1234 and name user_1234
        ipaidoverrideuser:
          ipaadmin_password: ”{{ ipaadmin_password }}"
          idview: idview_for_host1
          anchor: idm_user
          name: user_1234
          homedir: /home/user_1234
    Copy to Clipboard Toggle word wrap
  2. 플레이북을 실행합니다. 플레이북 파일을 지정하고 secret.yml 파일을 보호하는 암호를 저장하는 파일 및 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/add-idoverrideuser-with-name-and-homedir.yml
    Copy to Clipboard Toggle word wrap
  3. [선택 사항] 루트 인증 정보가 있는 경우 새 구성을 host1.idm.example.com 시스템에 즉시 적용할 수 있습니다.

    1. root 로 시스템에 SSH를 실행하십시오.

      $ ssh root@host1
      Password:
      Copy to Clipboard Toggle word wrap
    2. SSSD 캐시를 지웁니다.

      root@host1 ~]# sss_cache -E
      Copy to Clipboard Toggle word wrap
    3. SSSD 데몬을 다시 시작합니다.

      root@host1 ~]# systemctl restart sssd
      Copy to Clipboard Toggle word wrap

검증

  1. idm_userhost1SSH 를 수행합니다.

    [root@r8server ~]# ssh idm_user@host1.idm.example.com
    Password:
    
    Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229
    [user_1234@host1 ~]$
    Copy to Clipboard Toggle word wrap
  2. 작업 디렉터리를 출력합니다.

    [user_1234@host1 ~]$ pwd
    /home/user_1234/
    Copy to Clipboard Toggle word wrap

idoverrideuser ansible-freeipa 모듈을 사용하여 IdM 사용자가 특정 SSH 키를 사용하여 특정 IdM 클라이언트에 로그인할 수 있는지 확인하려면 다음 절차를 완료합니다. 이 절차에서는 idm_user 라는 IdM 사용자가 SSH 키를 사용하여 host1.idm.example.com 이라는 IdM 클라이언트에 로그인할 수 있는 ID 보기 예제를 사용합니다.

참고

이 ID 보기를 사용하여 특정 HBAC 규칙을 강화할 수 있습니다.

사전 요구 사항

  • 제어 노드에서 다음을 수행합니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • ansible-freeipa 패키지가 설치되어 있습니다.
    • ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
    • RHEL 8.10 이상을 사용하고 있습니다.
    • ipaadmin_passwordsecret.yml Ansible 자격 증명에 저장했습니다.
  • idm_user의 SSH 공개 키에 액세스할 수 있습니다.
  • idview_for_host1 ID 뷰가 있습니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 다음 콘텐츠를 사용하여 Ansible 플레이북 파일 ensure-idoverrideuser-can-login-with-sshkey.yml 을 생성합니다.

    ---
    - name: Playbook to manage idoverrideuser
      hosts: ipaserver
      become: false
      gather_facts: false
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
    
      tasks:
      - name: Ensure test user idm_user is present in idview idview_for_host1 with sshpubkey
        ipaidoverrideuser:
          ipaadmin_password: ”{{ ipaadmin_password }}"
          idview: idview_for_host1
          anchor: idm_user
          sshpubkey:
          - ssh-rsa AAAAB3NzaC1yc2EAAADAQABAAABgQCqmVDpEX5gnSjKuv97Ay ...
      - name: Ensure idview_for_host1 is applied to host1.idm.example.com
        ipaidview:
          ipaadmin_password:  ”{{ ipaadmin_password }}"
          name: idview_for_host1
          host: host1.idm.example.com
          action: member
    Copy to Clipboard Toggle word wrap
  2. 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/ensure-idoverrideuser-can-login-with-sshkey.yml
    Copy to Clipboard Toggle word wrap
  3. [선택 사항] 루트 인증 정보가 있는 경우 새 구성을 host1.idm.example.com 시스템에 즉시 적용할 수 있습니다.

    1. root 로 시스템에 SSH를 실행하십시오.

      $ ssh root@host1
      Password:
      Copy to Clipboard Toggle word wrap
    2. SSSD 캐시를 지웁니다.

      root@host1 ~]# sss_cache -E
      Copy to Clipboard Toggle word wrap
    3. SSSD 데몬을 다시 시작합니다.

      root@host1 ~]# systemctl restart sssd
      Copy to Clipboard Toggle word wrap

검증

  • 공개 키를 사용하여 host1SSH 를 사용하십시오.

    [root@r8server ~]# ssh -i ~/.ssh/id_rsa.pub idm_user@host1.idm.example.com
    
    Last login: Sun Jun 21 22:34:25 2023 from 192.168.122.229
    [idm_user@host1 ~]$
    Copy to Clipboard Toggle word wrap

출력은 사용자가 성공적으로 로그인했음을 확인합니다.

ansible-freeipa 그룹idoverrideuser 모듈을 사용하여 IdM 클라이언트에서 로컬 오디오 그룹의 IdM(Identity Management) 또는 AD(Active Directory) 사용자를 만들 수 있습니다. 이렇게 하면 IdM 또는 AD 사용자에게 호스트의 사운드 카드에 대한 액세스 권한이 부여됩니다. 이 절차에서는 첫 번째 플레이북 작업에 aduser@addomain.com ID 덮어쓰기가 추가된 Default Trust View ID 뷰의 예를 사용합니다. 다음 플레이북 작업에서는 RHEL 호스트의 로컬 오디오 그룹의 GID에 해당하는 63의 GID를 사용하여 IdM에서 오디오 그룹이 생성됩니다. 동시에 aduser@addomain.com ID 덮어쓰기가 IdM 오디오 그룹에 멤버로 추가됩니다.

사전 요구 사항

  • 절차의 첫 번째 부분을 수행할 IdM 클라이언트에 대한 루트 액세스 권한이 있습니다. 이 예에서는 client.idm.example.com 입니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • RHEL 8.10 이상을 사용하고 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • AD 포리스트는 IdM을 신뢰하고 있습니다. 이 예에서 AD 도메인 이름은 addomain.com 이고 로컬 오디오 그룹에 있는 AD 사용자의 FQDN(정규화된 도메인 이름)은 aduser@addomain.com 입니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. client.idm.example.com 에서 [SUCCESS=merge]/etc/nsswitch.conf 파일에 추가합니다.

    [...]
    # Allow initgroups to default to the setting for group.
    initgroups: sss [SUCCESS=merge] files
    Copy to Clipboard Toggle word wrap
  2. 로컬 오디오 그룹의 GID를 식별합니다.

    $ getent group audio
    ---------------------
    audio:x:63
    Copy to Clipboard Toggle word wrap
  3. Ansible 제어 노드에서 작업과 함께 add-aduser-to- audio-group.yml 플레이북을 생성하여 aduser@addomain.com 사용자를 기본 신뢰 뷰에 추가합니다.

    ---
    - name: Playbook to manage idoverrideuser
      hosts: ipaserver
      become: false
    
      tasks:
      - name: Add aduser@addomain.com user to the Default Trust View
        ipaidoverrideuser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          idview: "Default Trust View"
          anchor: aduser@addomain.com
    Copy to Clipboard Toggle word wrap
  4. 동일한 플레이북에서 다른 플레이북 작업을 사용하여 GID 가 63인 IdM에 그룹 오디오를 추가합니다. aduser idoverrideuser를 그룹에 추가합니다.

      - name: Add the audio group with the aduser member and GID of 63
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: audio
          idoverrideuser:
          - aduser@addomain.com
          gidnumber: 63
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory add-aduser-to-audio-group.yml
    Copy to Clipboard Toggle word wrap

검증

  1. AD 사용자로 IdM 클라이언트에 로그인합니다.

    $ ssh aduser@addomain.com@client.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. AD 사용자의 그룹 멤버십을 확인합니다.

    $ id aduser@addomain.com
    uid=702801456(aduser@addomain.com) gid=63(audio) groups=63(audio)
    Copy to Clipboard Toggle word wrap

자체 컴퓨터가 있지만 /home/ 디렉터리가 서버에서 내보낸 공유 드라이브에 있는 랩에서 작업하는 경우 다음 두 명의 사용자가 있을 수 있습니다.

  • 시스템 전체 사용자이며 IdM(Identity Management)에 중앙에 저장됩니다.
  • 계정이 로컬인 경우 해당 시스템에 저장됩니다.

IdM 사용자로 로그인했는지 또는 로컬 사용자로 로그인했는지 여부에 관계없이 파일에 대한 전체 액세스 권한이 필요한 경우 두 사용자에게 동일한 UID 를 부여하여 이를 수행할 수 있습니다.

ansible-freeipa idoverrideuser 모듈을 사용하려면 다음 절차를 완료합니다.

  • idview_for_host01 이라는 ID 보기를 host01에 적용합니다.
  • idview_for_host01에서 UID20001 인 idm_user에 대한 사용자 ID 덮어쓰기가 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • RHEL 8.10 이상을 사용하고 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • idview_for_host1 ID 뷰가 있습니다.

절차

  1. Ansible 제어 노드에서 다음 콘텐츠를 사용하여 ensure-idmuser-and-local-user-have-access-to-same-files.yml 플레이북을 생성합니다.

    ---
    - name: Ensure both local user and IdM user have access to same files
      hosts: ipaserver
      become: false
      gather_facts: false
    
      tasks:
      - name: Ensure idview_for_host1 is applied to host1.idm.example.com
        ipaidview:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: idview_for_host01
          host: host1.idm.example.com
      - name: Ensure idmuser is present in idview_for_host01 with the UID of 20001
        ipaidoverrideuser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          idview: idview_for_host01
          anchor: idm_user
          UID: 20001
    Copy to Clipboard Toggle word wrap
  2. 파일을 저장합니다.
  3. 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-and-local-user-have-access-to-same-files.yml
    Copy to Clipboard Toggle word wrap

스마트 카드만 사용하여 특정 IdM 클라이언트에 인증하기 위해 IdM에 일반적으로 로그인하는 IdM(Identity Management) 사용자를 사용하려면 해당 클라이언트의 사용자에 대한 인증이 필요한 ID 보기를 생성할 수 있습니다.

ansible-freeipa idoverrideuser 모듈을 사용하려면 다음 절차를 완료합니다.

  • idview_for_host01 이라는 ID 보기를 host01에 적용합니다.
  • idview_for_host01에서 두 개의 인증서가 있는 idm_user 에 대한 사용자 ID 덮어쓰기가 있는지 확인합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • RHEL 8.10 이상을 사용하고 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
    • 이 예제에서는 cert1.b64cert2.b64 인증서가 플레이북을 실행하는 동일한 디렉터리에 있다고 가정합니다.
  • idview_for_host01 ID 뷰가 있습니다.

절차

  1. Ansible 제어 노드에서 다음 콘텐츠를 사용하여 ensure-idmuser-present-in-idview-with-certificates.yml 플레이북을 생성합니다.

    ---
    - name: Ensure both local user and IdM user have access to same files
      hosts: ipaserver
      become: false
      gather_facts: false
    
      tasks:
      - name: Ensure idview_for_host1 is applied to host01.idm.example.com
        ipaidview:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: idview_for_host01
          host: host01.idm.example.com
    
      - name: Ensure an IdM user is present in ID view with two certificates
        ipaidoverrideuser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          idview: idview_for_host01
          anchor: idm_user
          certificate:
          - "{{ lookup('file', 'cert1.b64', rstrip=False) }}"
          - "{{ lookup('file', 'cert2.b64', rstrip=False) }}"
    Copy to Clipboard Toggle word wrap

    rstrip=False 지시문을 사용하면 조회 파일의 끝에서 공백이 제거되지 않습니다.

  2. 파일을 저장합니다.
  3. 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-present-in-idview-with-certificates.yml
    Copy to Clipboard Toggle word wrap

ansible-freeipa idviewidoverridegroup 모듈을 사용하여 IdM 클라이언트에서 로컬 오디오 그룹의 IdM(Identity Management) 또는 AD(Active Directory) 사용자를 만들 수 있습니다. 이렇게 하면 IdM 또는 AD 사용자에게 호스트의 사운드 카드에 대한 액세스 권한이 부여됩니다.

이 절차에서는 RHEL 호스트의 로컬 오디오 그룹의 GID에 해당하는 오디오 그룹 ID 덮어쓰기를 GID63 으로 추가하는 idview_for_host01 ID 뷰의 예제를 사용합니다. idview_for_host01 ID 뷰는 host01.idm.example.com 이라는 IdM 클라이언트에 적용됩니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • RHEL 8.10 이상을 사용하고 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.

절차

  1. [선택 사항] RHEL 호스트에서 로컬 오디오 그룹의 GID를 식별합니다.

    $ getent group audio
    ---------------------
    audio:x:63
    Copy to Clipboard Toggle word wrap
  2. Ansible 제어 노드에서 다음 작업을 사용하여 give-idm-group-access-to-sound-card-on-idm-client.yml 플레이북을 생성합니다.

    ---
    - name: Playbook to give IdM group access to sound card on IdM client
      hosts: ipaserver
      become: false
    
      tasks:
      - name: Ensure the audio group exists in IdM
        ipagroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: audio
    
      - name: Ensure idview_for_host01 exists and is applied to host01.idm.example.com
        ipaidview:
          ipaadmin_password:  ”{{ ipaadmin_password }}"
          name: idview_for_host01
          host: host01.idm.example.com
    
      - name: Add an override for the IdM audio group with GID 63 to idview_for_host01
        ipaidoverridegroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          idview: idview_for_host01
          anchor: audio
          GID: 63
    Copy to Clipboard Toggle word wrap
  3. 파일을 저장합니다.
  4. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory give-idm-group-access-to-sound-card-on-idm-client.yml
    Copy to Clipboard Toggle word wrap

검증

  1. IdM 클라이언트에서 IdM 관리자의 인증 정보를 가져옵니다.

    $ kinit admin
    Password:
    Copy to Clipboard Toggle word wrap
  2. 테스트 IdM 사용자를 생성합니다.

    $ ipa user-add testuser --first test --last user --password
    User login [tuser]:
    Password:
    Enter Password again to verify:
    ------------------
    Added user "tuser"
    ------------------
    Copy to Clipboard Toggle word wrap
  3. IdM 오디오 그룹에 사용자를 추가합니다.

    $ ipa group-add-member --tuser audio
    Copy to Clipboard Toggle word wrap
  4. host01.idm.example.com에 tuser로 로그인합니다.

    $ ssh tuser@host01.idm.example.com
    Copy to Clipboard Toggle word wrap
  5. 사용자의 그룹 멤버십을 확인합니다.

    $ id tuser
    uid=702801456(tuser) gid=63(audio) groups=63(audio)
    Copy to Clipboard Toggle word wrap

35.15. NIS 도메인을 Identity Management로 마이그레이션

ID 뷰를 사용하여 기존 호스트에 대한 호스트 특정 UID 및 GID를 설정하여 NIS 도메인을 IdM으로 마이그레이션할 때 파일 및 디렉터리의 권한 변경을 방지할 수 있습니다.

사전 요구 사항

  • kinit admin 명령을 사용하여 자신을 관리자로 인증했습니다.

절차

  1. IdM 도메인에 사용자 및 그룹을 추가합니다.

    1. ipa user-add 명령을 사용하여 사용자를 생성합니다. 자세한 내용은 다음을 참조하십시오. IdM에 사용자 추가
    2. ipa group-add 명령을 사용하여 그룹을 생성합니다. 자세한 내용은 다음을 참조하십시오. IdM에 그룹 추가
  2. 사용자 생성 중에 생성된 ID를 덮어씁니다.

    1. ipa idview-add 명령을 사용하여 새 ID 보기를 생성합니다. 자세한 내용은 다음을 참조하십시오. ID 보기 명령에 대한 도움말 가져오기.
    2. 각각 ipa idoverrideuser-add 및 idoverridegroup-add를 사용하여 ID 보기에 사용자 및 그룹의 ID 재정의를 추가합니다.
  3. ipa idview-apply 명령을 사용하여 ID 보기를 특정 호스트에 할당합니다.
  4. NIS 도메인 해제.

검증

  1. 모든 사용자와 그룹이 ID 보기에 올바르게 추가되었는지 확인하려면 ipa idview-show 명령을 사용합니다.

    $ ipa idview-show example-view
      ID View Name: example-view
      User object overrides: example-user1
      Group object overrides: example-group
    Copy to Clipboard Toggle word wrap

36장. Active Directory 사용자를 위한 ID 보기 사용

ID 보기를 사용하여 IdM-AD 신뢰 환경에서 AD(Active Directory) 사용자의 POSIX 속성에 대한 새 값을 지정할 수 있습니다.

기본적으로 IdM은 기본 신뢰 보기를 모든 AD 사용자에게 적용합니다. 개별 IdM 클라이언트에 추가 ID 뷰를 구성하여 수신하는 POSIX 속성별 사용자를 추가로 조정할 수 있습니다.

36.1. 기본 신뢰 보기의 작동 방식

Default Trust View 는 항상 신뢰 기반 설정의 AD 사용자 및 그룹에 적용되는 기본 ID 보기입니다. ipa-adtrust-install 명령을 사용하여 신뢰를 설정할 때 자동으로 생성되며 삭제할 수 없습니다.

참고

Default Trust View는 IdM 사용자 및 그룹이 아닌 AD 사용자 및 그룹에 대한 덮어쓰기만 허용합니다.

기본 신뢰 보기를 사용하여 AD 사용자 및 그룹에 대해 사용자 지정 POSIX 특성을 정의하여 AD에 정의된 값을 재정의할 수 있습니다.

Expand
표 36.1. 기본 신뢰 보기 적용
 AD의 값기본 신뢰 보기결과

login

ad_user

ad_user

ad_user

UID

111

222

222

GID

111

(값 없음)

111

IdM 클라이언트의 기본 신뢰 보기를 재정의하도록 추가 ID 뷰를 구성할 수도 있습니다. IdM은 기본 신뢰 보기 상단에 호스트별 ID 보기의 값을 적용합니다.

  • 속성이 호스트별 ID 보기에 정의된 경우 IdM은 이 ID 보기의 값을 적용합니다.
  • 속성이 호스트별 ID 보기에 정의되지 않은 경우 IdM은 기본 신뢰 보기의 값을 적용합니다.
Expand
표 36.2. 기본 신뢰 보기 상단에 호스트별 ID 보기 적용
 AD의 값기본 신뢰 보기호스트별 ID 보기결과

login

ad_user

ad_user

(값 없음)

ad_user

UID

111

222

333

333

GID

111

(값 없음)

333

333

참고

호스트별 ID 보기만 적용하여 IdM 클라이언트의 기본 신뢰 보기를 덮어쓸 수 있습니다. IdM 서버와 복제본은 항상 Default Trust View의 값을 적용합니다.

36.2. 기본 신뢰 뷰를 수정하여 AD 사용자의 글로벌 속성 정의

전체 IdM 배포 전반에 걸쳐 AD(Active Directory) 사용자에 대한 POSIX 속성을 재정의하려면 Default Trust View에서 해당 사용자의 항목을 수정하십시오. 이 절차에서는 AD 사용자 ad_user@ad.example.com 의 GID를 732000006으로 설정합니다.

사전 요구 사항

  • IdM 관리자로 인증했습니다.
  • 그룹은 GID가 있는 그룹이어야 합니다. 또는 그룹의 ID 재정의에서 GID를 설정해야 합니다.

절차

  1. IdM 관리자로서 GID 번호를 732000006으로 변경하는 기본 신뢰 보기에서 AD 사용자에 대한 ID를 생성합니다.

    # ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com --gidnumber=732000006
    Copy to Clipboard Toggle word wrap
  2. 모든 IdM 서버 및 클라이언트의 SSSD 캐시에서 ad_user@ad.example.com 사용자의 항목을 지웁니다. 이렇게 하면 오래된 데이터가 제거되고 새로운 덮어쓰기 값을 적용할 수 있습니다.

    # sssctl cache-expire -u ad_user@ad.example.com
    Copy to Clipboard Toggle word wrap

검증

  • ad_user@ad.example.com 사용자의 정보를 검색하여 GID가 업데이트된 값을 반영하는지 확인합니다.

    # id ad_user@ad.example.com
    uid=702801456(ad_user@ad.example.com) gid=732000006(ad_admins)
    groups=732000006(ad_admins),702800513(domain users@ad.example.com)
    Copy to Clipboard Toggle word wrap

AD(Active Directory) 사용자에 대한 기본 신뢰 보기에서 일부 POSIX 속성을 재정의할 수 있습니다. 예를 들어 특정 IdM 클라이언트에 AD 사용자에게 다른 GID를 제공해야 할 수 있습니다. ID 보기를 사용하여 AD 사용자에 대한 기본 신뢰 보기의 값을 재정의하여 단일 호스트에 적용할 수 있습니다. 이 절차에서는 host1.idm.example.com IdM 클라이언트에 있는 ad_user@ad.example.com AD 사용자의 GID를 732001337으로 설정하는 방법을 설명합니다.

사전 요구 사항

  • host1.idm.example.com IdM 클라이언트에 대한 루트 액세스 권한이 있습니다.
  • 필요한 권한이 있는 사용자로 로그인했습니다(예: admin 사용자).

절차

  1. ID 뷰를 생성합니다. 예를 들어 example_for_host1 이라는 ID 보기를 생성하려면 다음을 실행합니다.

    $ ipa idview-add example_for_host1
    ---------------------------
    Added ID View "example_for_host1"
    ---------------------------
      ID View Name: example_for_host1
    Copy to Clipboard Toggle word wrap
  2. example_for_host1 ID 보기에 사용자 재정의를 추가합니다. 사용자의 GID를 덮어쓰려면 다음을 수행합니다.

    • ipa idoverrideuser-add 명령을 입력합니다.
    • ID 보기의 이름 추가
    • 앵커라고도 하는 사용자 이름 추가
    • --gidnumber= 옵션을 추가합니다.
    $ ipa idoverrideuser-add example_for_host1 ad_user@ad.example.com --gidnumber=732001337
    -----------------------------
    Added User ID override "ad_user@ad.example.com"
    -----------------------------
      Anchor to override: ad_user@ad.example.com
      GID: 732001337
    Copy to Clipboard Toggle word wrap
  3. example_for_host1host1.idm.example.com IdM 클라이언트에 적용합니다.

    $ ipa idview-apply example_for_host1 --hosts=host1.idm.example.com
    -----------------------------
    Applied ID View "example_for_host1"
    -----------------------------
    hosts: host1.idm.example.com
    ---------------------------------------------
    Number of hosts the ID View was applied to: 1
    ---------------------------------------------
    Copy to Clipboard Toggle word wrap
    참고

    ipa idview-apply 명령은 --hostgroups 옵션도 허용합니다. 옵션은 지정된 호스트 그룹에 속하는 호스트에 ID 보기를 적용하지만 ID 보기를 호스트 그룹 자체와 연결하지 않습니다. 대신, --hostgroups 옵션은 지정된 호스트 그룹의 멤버를 확장하고 --hosts 옵션을 각 호스트 그룹에 개별적으로 적용합니다.

    즉, 나중에 호스트가 호스트 그룹에 추가되면 ID 보기가 새 호스트에 적용되지 않습니다.

  4. host1.idm.example.com IdM 클라이언트의 SSSD 캐시에서 ad_user@ad.example.com 사용자의 항목을 지웁니다. 이렇게 하면 오래된 데이터가 제거되고 새로운 덮어쓰기 값을 적용할 수 있습니다.

    [root@host1 ~]# sssctl cache-expire -u ad_user@ad.example.com
    Copy to Clipboard Toggle word wrap

검증 단계

  1. SSH to host1 as ad_user@ad.example.com:

    [root@r8server ~]# ssh ad_user@ad.example.com@host1.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. ad_user@ad.example.com 사용자의 정보를 검색하여 GID가 업데이트된 값을 반영하는지 확인합니다.

    [ad_user@ad.example.com@host1 ~]$ id ad_user@ad.example.com
    uid=702801456(ad_user@ad.example.com) gid=732001337(admins2)
    groups=732001337(admins2),702800513(domain users@ad.example.com)
    Copy to Clipboard Toggle word wrap

36.4. IdM 호스트 그룹에 ID 보기 적용

ipa idview-apply 명령은 --hostgroups 옵션을 허용합니다. 그러나 옵션은 현재 지정된 호스트 그룹에 속해 있지만 ID 보기를 호스트 그룹 자체와 동적으로 연결하지 않는 호스트에 ID 뷰를 적용하는 일회성 작업 역할을 합니다. hostgroups 옵션은 지정된 호스트 그룹의 멤버를 확장하고 --hosts 옵션을 모든 호스트에 개별적으로 적용합니다.

나중에 호스트 그룹에 새 호스트를 추가하는 경우 --hosts 옵션과 함께 ipa idview-apply 명령을 사용하여 새 호스트에 ID 보기를 수동으로 적용해야 합니다.

마찬가지로 호스트 그룹에서 호스트를 제거해도 제거 후에도 ID 뷰가 여전히 호스트에 할당됩니다. 제거된 호스트에서 ID 보기를 적용 취소하려면 ipa idview-unapply id_view_name --hosts=name_of_the_removed_host 명령을 실행해야 합니다.

다음 목표를 달성하려면 다음 절차를 따르십시오.

  1. 호스트 그룹을 생성하고 호스트를 추가하는 방법.
  2. 호스트 그룹에 ID 보기를 적용하는 방법.
  3. 새 호스트를 호스트 그룹에 추가하고 ID 보기를 새 호스트에 적용하는 방법.

사전 요구 사항

절차

  1. 호스트 그룹을 생성하고 호스트를 추가합니다.

    1. 호스트 그룹을 만듭니다. 예를 들어 호스트 그룹을 생성하려면 다음을 실행합니다.

      [root@server ~]# ipa hostgroup-add --desc="Baltimore hosts" baltimore
      ---------------------------
      Added hostgroup "baltimore"
      ---------------------------
      Host-group: baltimore
      Description: Baltimore hosts
      Copy to Clipboard Toggle word wrap
    2. 호스트 그룹에 호스트를 추가합니다. 예를 들어 host 102 및 host 103 을 hub timore 호스트 그룹에 추가하려면 다음을 수행합니다.

      [root@server ~]# ipa hostgroup-add-member --hosts={host102,host103} baltimore
      Host-group: baltimore
      Description: Baltimore hosts
      Member hosts: host102.idm.example.com, host103.idm.example.com
      -------------------------
      Number of members added 2
      -------------------------
      Copy to Clipboard Toggle word wrap
  2. 호스트 그룹의 호스트에 ID 보기를 적용합니다. 예를 들어 example_for_host1 ID 보기를 hub timore 호스트 그룹에 적용하려면 다음을 수행합니다.

    [root@server ~]# ipa idview-apply --hostgroups=baltimore
    ID View Name: example_for_host1
    -----------------------------------------
    Applied ID View "example_for_host1"
    -----------------------------------------
      hosts: host102.idm.example.com, host103.idm.example.com
    ---------------------------------------------
    Number of hosts the ID View was applied to: 2
    ---------------------------------------------
    Copy to Clipboard Toggle word wrap
  3. 새 호스트를 호스트 그룹에 추가하고 새 호스트에 ID 보기를 적용합니다.

    1. 새 호스트를 호스트 그룹에 추가합니다. 예를 들어 somehost.idm.example.com 호스트를 parent timore 호스트 그룹에 추가하려면 다음을 수행합니다.

      [root@server ~]# ipa hostgroup-add-member --hosts=somehost.idm.example.com baltimore
        Host-group: baltimore
        Description: Baltimore hosts
        Member hosts:  host102.idm.example.com, host103.idm.example.com,somehost.idm.example.com
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
    2. 선택적으로 ID 보기 정보를 표시합니다. 예를 들어 example_for_host1 ID 보기에 대한 세부 정보를 표시하려면 다음을 수행합니다.

      [root@server ~]# ipa idview-show example_for_host1 --all
        dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com
        ID View Name: example_for_host1
      [...]
        Hosts the view applies to: host102.idm.example.com, host103.idm.example.com
        objectclass: ipaIDView, top, nsContainer
      Copy to Clipboard Toggle word wrap

      출력에서 ID 보기가 catalog timore 호스트 그룹의 새로 추가된 호스트인 somehost.idm.example.com 에 적용되지 않았음을 보여줍니다.

    3. ID 보기를 새 호스트에 적용합니다. 예를 들어 example_for_host1 ID 보기를 somehost.idm.example.com에 적용하려면 다음을 수행합니다.

      [root@server ~]# ipa idview-apply --host=somehost.idm.example.com
      ID View Name: example_for_host1
      -----------------------------------------
      Applied ID View "example_for_host1"
      -----------------------------------------
        hosts: somehost.idm.example.com
      ---------------------------------------------
      Number of hosts the ID View was applied to: 1
      ---------------------------------------------
      Copy to Clipboard Toggle word wrap

검증 단계

  • ID 보기 정보를 다시 표시합니다.

    [root@server ~]# ipa idview-show example_for_host1 --all
      dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com
      ID View Name: example_for_host1
    [...]
      Hosts the view applies to: host102.idm.example.com, host103.idm.example.com, somehost.idm.example.com
      objectclass: ipaIDView, top, nsContainer
    Copy to Clipboard Toggle word wrap

    출력에서 ID 보기가 이제 satellite timore 호스트 그룹의 새로 추가된 호스트인 somehost.idm.example.com 에 적용됨을 보여줍니다.

37장. 수동으로 ID 범위 조정

IdM 서버는 고유한 사용자 ID(UID) 및 그룹 ID(GID) 번호를 생성합니다. 복제본에 다양한 ID 범위를 만들고 할당하면 동일한 ID 번호를 생성하지 않도록 합니다. 기본적으로 이 프로세스는 자동입니다. 그러나 IdM 서버를 설치하는 동안 IdM ID 범위를 수동으로 조정하거나 복제본의 DNA ID 범위를 수동으로 정의할 수 있습니다.

37.1. ID 범위

ID 번호는 ID 범위로 구분됩니다. 개별 서버 및 복제본에 대해 별도의 숫자 범위를 유지하면 항목에 대해 발행된 ID 번호를 다른 서버 또는 복제본의 다른 항목에서 이미 사용할 가능성이 제거됩니다.

두 가지 유형의 ID 범위가 있습니다.

  • 첫 번째 서버를 설치하는 동안 할당되는 IdM ID 범위. 이 범위는 생성된 후에는 수정할 수 없습니다. 그러나 원래 ID 범위 외에 새 IdM ID 범위를 생성할 수 있습니다. 자세한 내용은 자동 ID 범위 할당새 IdM ID 범위 추가를 참조하십시오.
  • 사용자가 수정할 수 있는 DNA( Distributed Numeric Assignment ) ID 범위입니다. 이러한 값은 기존 IdM ID 범위에 적합해야 합니다. 자세한 내용은 DNA ID 범위가 수동으로 할당을 참조하십시오.

    복제본에 다음 DNA ID 범위가 할당될 수도 있습니다. 복제본은 현재 범위의 ID가 부족할 때 다음 범위를 사용합니다. 복제본이 삭제되면 다음 범위는 자동으로 할당되지 않으며 수동으로 할당해야 합니다.

도메인의 백엔드 389 Directory Server 인스턴스의 일부로 DNA 플러그인에 의해 서버와 복제본 간에 범위가 업데이트되고 공유됩니다.

DNA 범위 정의는 다음 두 가지 속성으로 설정됩니다.

  • 서버의 사용 가능한 다음 번호: DNA 범위의 낮은 끝
  • 범위 크기: DNA 범위의 ID 수

초기 하단 범위는 플러그인 인스턴스 구성 중에 설정됩니다. 그런 다음 플러그인은 하단 값을 업데이트합니다. 사용 가능한 숫자를 범위로 분할하면 서버는 서로 겹치지 않고 번호를 계속 할당할 수 있습니다.

37.2. 자동 ID 범위 할당

IdM ID 범위

기본적으로 IdM ID 범위는 IdM 서버 설치 중에 자동으로 할당됩니다. ipa-server-install 명령은 총 10,000개 범위의 ID 범위를 임의로 선택하고 할당합니다. 이와 같이 임의의 범위를 선택하면 향후 두 개의 별도의 IdM 도메인을 병합하기로 결정한 경우 ID 충돌 가능성이 크게 줄어듭니다.

참고

IdM ID 범위를 생성한 후에는 수정할 수 없습니다. DNA ID 범위 할당에 설명된 명령을 사용하여DNA(Distributed Numeric Assignment) 범위만 수동으로 조정할 수 있습니다. IdM ID 범위와 일치하는 DNA 범위가 설치 중에 자동으로 생성됩니다.

DNA ID 범위

IdM 서버가 1개 설치되어 있으면 전체 DNA ID 범위를 제어합니다. 새 복제본을 설치하고 복제본이 고유한 DNA ID 범위를 요청하면 서버 분할의 초기 ID 범위가 분리되고 서버와 복제본 간에 배포됩니다. 복제본은 초기 서버에서 사용할 수 있는 나머지 DNA ID 범위의 절반을 수신합니다. 그런 다음 서버 및 복제본은 새 사용자 또는 그룹 항목에 대해 원래 ID 범위의 각 부분을 사용합니다. 또한 복제본이 할당된 ID 범위를 제거하고 100개 미만의 ID를 유지하는 경우에도 복제본은 사용 가능한 다른 서버에 연결하여 새 DNA ID 범위를 요청합니다.

중요

복제본을 설치하면 ID 범위가 즉시 수신 되지 않습니다. 복제본은 DNA 플러그인이 처음 사용되는 경우(예: 사용자를 처음 추가할 때) ID 범위를 수신합니다.

복제본에서 DNA ID 범위를 요청하기 전에 초기 서버가 작동을 중지하면 복제본이 서버에 연결하여 ID 범위를 요청할 수 없습니다. 복제본에 새 사용자를 추가하려고 하면 실패합니다. 이러한 상황에서는 비활성화된 서버에 할당된 ID 범위를 확인하고 복제본에 ID 범위를 수동으로 할당할 수 있습니다.

37.3. 서버 설치 중 IdM ID 범위 수동 할당

임의로 할당하는 대신 기본 동작을 재정의하고 IdM ID 범위를 수동으로 설정할 수 있습니다.

중요

UID 값이 1000 이하인 ID 범위를 설정하지 마십시오. 이러한 값은 시스템용으로 예약되어 있습니다. 또한 0 값을 포함할 ID 범위를 설정하지 마십시오. SSSD 서비스에서 0 ID 값을 처리하지 않습니다.

절차

  • ipa-server-install 과 함께 다음 두 옵션을 사용하여 서버 설치 중에 IdM ID 범위를 수동으로 정의할 수 있습니다.

    • --idstart 는 UID 및 GID 번호의 시작 값을 제공합니다.
    • --idmax 는 최대 UID 및 GID 번호를 제공합니다. 기본적으로 값은 --idstart 시작 값과 199,999입니다.

검증 단계

  • ID 범위가 올바르게 할당되었는지 확인하려면 ipa idrange-find 명령을 사용하여 할당된 IdM ID 범위를 표시할 수 있습니다.

    # ipa idrange-find
    ---------------
    1 range matched
    ---------------
      Range name: IDM.EXAMPLE.COM_id_range
      First Posix ID of the range: 882200000
      Number of IDs in the range: 200000
      Range type: local domain range
    ----------------------------
    Number of entries returned 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

37.4. 새 IdM ID 범위 추가

경우에 따라 원래 ID 외에도 새 IdM ID 범위를 생성할 수 있습니다(예: 복제본의 ID가 부족하고 원래 IdM ID 범위가 고갈된 경우).

중요

새 IdM ID 범위를 추가하면 새 DNA ID 범위가 자동으로 생성되지 않습니다. 필요에 따라 복제본에 새 DNA ID 범위를 수동으로 할당해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 수동으로 DNA ID 범위 할당을 참조하십시오.

절차

  1. 새 IdM ID 범위를 생성하려면 ipa idrange-add 명령을 사용합니다. 새 범위 이름, 범위의 첫 번째 ID 번호 및 범위 크기를 지정해야 합니다.

    # ipa idrange-add IDM.EXAMPLE.COM_new_range --base-id=1000000 --range-size=200000
    ------------------------------------------
    Added ID range "IDM.EXAMPLE.COM_new_range"
    ------------------------------------------
      Range name: IDM.EXAMPLE.COM_new_range
      First Posix ID of the range: 1000000
      Number of IDs in the range: 200000
      Range type: local domain range
    Copy to Clipboard Toggle word wrap
  2. Directory Server를 다시 시작하십시오.

    # systemctl restart dirsrv@IDM.EXAMPLE.COM.service
    Copy to Clipboard Toggle word wrap

    이렇게 하면 새 범위에서 UID가 있는 사용자를 생성할 때 SID(보안 식별자)가 할당됩니다.

  3. 선택 사항: ID 범위를 즉시 업데이트합니다.

    1. SSSD(System Security Services Daemon) 캐시를 지웁니다.

      # sss_cache -E
      Copy to Clipboard Toggle word wrap
    2. SSSD 데몬을 다시 시작합니다.

      # systemctl restart sssd
      Copy to Clipboard Toggle word wrap
    참고

    SSSD 캐시를 지우지 않고 서비스를 다시 시작하지 않으면 SSSD에서 도메인 목록 및 IdM 서버에 저장된 기타 구성 데이터를 업데이트할 때만 새 ID 범위를 탐지합니다.

검증 단계

  • ipa idrange-find 명령을 사용하여 새 범위가 올바르게 설정되었는지 확인할 수 있습니다.

    # ipa idrange-find
    ----------------
    2 ranges matched
    ----------------
      Range name: IDM.EXAMPLE.COM_id_range
      First Posix ID of the range: 882200000
      Number of IDs in the range: 200000
      Range type: local domain range
    
      Range name: IDM.EXAMPLE.COM_new_range
      First Posix ID of the range: 1000000
      Number of IDs in the range: 200000
      Range type: local domain range
    ----------------------------
    Number of entries returned 2
    ----------------------------
    Copy to Clipboard Toggle word wrap

37.5. IdM ID 범위에서 보안 및 상대 식별자의 역할

IdM(Identity Management) ID 범위는 여러 매개변수로 정의됩니다.

  • 범위 이름
  • 범위의 첫 번째 POSIX ID
  • 범위 크기: 범위의 ID 수
  • 해당 RID 범위의 첫 번째 상대 식별자 (RID)
  • 보조 RID 범위의 첫 번째 RID

ipa idrange-show 명령을 사용하여 이러한 값을 볼 수 있습니다.

$ ipa idrange-show IDM.EXAMPLE.COM_id_range
  Range name: IDM.EXAMPLE.COM_id_range
  First Posix ID of the range: 196600000
  Number of IDs in the range: 200000
  First RID of the corresponding RID range: 1000
  First RID of the secondary RID range: 1000000
  Range type: local domain range
Copy to Clipboard Toggle word wrap

보안 식별자

로컬 도메인의 ID 범위 데이터는 IdM 서버에서 IdM 사용자 및 그룹에 고유한 보안 식별자 (SID)를 할당하는 데 사용됩니다. STS는 사용자 및 그룹 개체에 저장됩니다. 사용자의 SID는 다음으로 구성됩니다.

  • 도메인 SID
  • 사용자 상대 식별자 (RID)는 도메인 STS에 추가된 네 자리 32비트 값입니다.

예를 들어 도메인 SID가 S-1-5-21-123-456-789이고 이 도메인의 사용자 RID가 1008인 경우, 사용자에게 S-1-5-21-123-456-789-1008의 HEAD가 있습니다.

상대 식별자

RID 자체는 다음과 같은 방식으로 계산됩니다.

범위의 첫 번째 POSIX ID를 사용자의 POSIX UID에서 빼고 해당 RID 범위의 첫 번째 RID를 결과에 추가합니다. 예를 들어 idmuser 의 UID가 196600008인 경우 첫 번째 POSIX ID는 jenkinsfile600000이고 첫 번째 RID는 1000이고 idmuser 's RID는 1008입니다.

참고

사용자의 RID 알고리즘을 계산하는 알고리즘은 지정된 POSIX ID가 해당 RID를 계산하기 전에 할당된 ID 범위에 속하는지 확인합니다. 예를 들어 첫 번째 ID가 jenkinsfile600000이고 범위 크기가 200000인 경우, 이 범위의 POSIX ID는 ID 범위 외부에 있고 알고리즘은 RID를 계산하지 않습니다.

보조 상대 식별자

IdM에서 POSIX UID는 POSIX GID와 같을 수 있습니다. 즉, idmuser 가 196600008 UID가 있는 경우 GID가 196600008인 새 idmgroup 그룹을 계속 생성할 수 있습니다.

그러나 STS는 사용자 또는 그룹 한 개만 정의할 수 있습니다. idmuser 용으로 이미 생성된 S-1-5-21-123-456-789-1008의 SID는 idmgroup 과 공유할 수 없습니다. idmgroup 에 대해 대체 STS를 생성해야 합니다.

IdM은 보조 상대 식별자 (또는 보조 RID)를 사용하여 conflict replacess가 발생하지 않습니다. 이 보조 RID는 다음과 같이 구성됩니다.

  • 2차 RID 기반
  • 범위 크기(기본 범위 크기와 기본적으로 동일)

위의 예에서 보조 RID 베이스는 1000000으로 설정됩니다. 새로 생성된 idmgroup 의 RID를 계산하려면 : 사용자의 POSIX UID에서 범위의 첫 번째 POSIX ID를 제거하고 보조 RID 범위의 첫 번째 RID를 결과에 추가합니다. idmgroup 은 RID 1000008이 할당됩니다. 그 결과 idmgroup 의 SID는 S-1-5-21-123-456-789-1000008입니다.

IdM은 보조 RID를 사용하여 사용자 또는 그룹 오브젝트가 이전에 수동으로 설정된 POSIX ID를 사용하여 생성한 경우에만 STS를 계산합니다. 그렇지 않으면 자동 할당으로 동일한 ID를 두 번 할당하지 않습니다.

37.6. Ansible을 사용하여 새 로컬 IdM ID 범위 추가

경우에 따라 원래 ID 범위 외에도 새 IdM(Identity Management) ID 범위를 생성할 수 있습니다. 예를 들어 복제본이 ID가 부족하고 원래 IdM ID 범위가 고갈되는 경우입니다. 다음 예제에서는 Ansible 플레이북을 사용하여 새 IdM ID 범위를 생성하는 방법을 설명합니다.

참고

새 IdM ID 범위를 추가하면 새 DNA ID 범위가 자동으로 생성되지 않습니다. 필요에 따라 새 DNA ID 범위를 수동으로 할당해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 수동으로 DNA ID 범위 할당을 참조하십시오.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. 다음 콘텐츠를 사용하여 idrange-present.yml 플레이북을 생성합니다.

    ---
    - name: Playbook to manage idrange
      hosts: ipaserver
      become: no
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure local idrange is present
        ipaidrange:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: new_id_range
          base_id: 12000000
          range_size: 200000
          rid_base: 1000000
          secondary_rid_base: 200000000
    Copy to Clipboard Toggle word wrap
  3. 파일을 저장합니다.
  4. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory idrange-present.yml
    Copy to Clipboard Toggle word wrap
  5. ipaserver 에 ssh를 설치하고 Directory Server를 다시 시작하십시오.

    # systemctl restart dirsrv@IDM.EXAMPLE.COM.service
    Copy to Clipboard Toggle word wrap

    이렇게 하면 새 범위에서 UID가 있는 사용자를 생성할 때 SID(보안 식별자)가 할당됩니다.

  6. 선택 사항: ID 범위를 즉시 업데이트합니다.

    1. ipaserver 에서 SSSD(System Security Services Daemon) 캐시를 지웁니다.

      # sss_cache -E
      Copy to Clipboard Toggle word wrap
    2. ipaserver 에서 SSSD 데몬을 다시 시작합니다.

      # systemctl restart sssd
      Copy to Clipboard Toggle word wrap
    참고

    SSSD 캐시를 지우지 않고 서비스를 다시 시작하지 않으면 SSSD에서 도메인 목록 및 IdM 서버에 저장된 기타 구성 데이터를 업데이트할 때만 새 ID 범위를 탐지합니다.

검증 단계

  • ipa idrange-find 명령을 사용하여 새 범위가 올바르게 설정되었는지 확인할 수 있습니다.
# ipa idrange-find
----------------
2 ranges matched
----------------
  Range name: IDM.EXAMPLE.COM_id_range
  First Posix ID of the range: 882200000
  Number of IDs in the range: 200000
  Range type: local domain range

  Range name: IDM.EXAMPLE.COM_new_id_range
  First Posix ID of the range: 12000000
  Number of IDs in the range: 200000
  Range type: local domain range
----------------------------
Number of entries returned 2
----------------------------
Copy to Clipboard Toggle word wrap

37.7. 신뢰할 수 있는 AD를 제거한 후 ID 범위 제거

IdM 및 AD(Active Directory) 환경 간에 신뢰가 제거된 경우 연결된 ID 범위를 제거할 수 있습니다.

주의

신뢰할 수 있는 도메인과 연결된 ID 범위에 할당된 ID는 여전히 IdM에 등록된 시스템의 파일 및 디렉터리 소유권에 사용될 수 있습니다.

제거한 AD 트러스트에 해당하는 ID 범위를 제거하면 AD 사용자가 소유한 파일과 디렉터리의 소유권을 확인할 수 없습니다.

사전 요구 사항

  • AD 환경에 대한 신뢰성을 제거했습니다.

절차

  1. 현재 사용 중인 모든 ID 범위를 표시합니다.

    [root@server ~]# ipa idrange-find
    Copy to Clipboard Toggle word wrap
  2. 제거한 신뢰와 연결된 ID 범위의 이름을 식별합니다. ID 범위 이름의 첫 번째 부분은 신뢰의 이름입니다(예: AD.EXAMPLE.COM_id_range ).
  3. 범위를 제거합니다.

    [root@server ~]# ipa idrange-del AD.EXAMPLE.COM_id_range
    Copy to Clipboard Toggle word wrap
  4. SSSD 서비스를 다시 시작하여 제거한 ID 범위에 대한 참조를 제거합니다.

    [root@server ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap

37.8. 현재 할당된 DNA ID 범위 표시

현재 활성화된 DNA(Distributed Numeric Assignment) ID 범위와 서버에 모두 DNA(Distributed Numeric Assignment) ID 범위를 할당한 경우 해당 다음 DNA 범위를 표시할 수 있습니다.

절차

  • 토폴로지의 서버에 구성된 DNA ID 범위를 표시하려면 다음 명령을 사용합니다.

    • ipa-replica-manage dnarange-show 는 모든 서버에 설정된 현재 DNA ID 범위를 표시하거나 지정된 서버에만 서버를 지정하는 경우 다음을 수행합니다.

      # ipa-replica-manage dnarange-show
      serverA.example.com: 1001-1500
      serverB.example.com: 1501-2000
      serverC.example.com: No range set
      
      # ipa-replica-manage dnarange-show serverA.example.com
      serverA.example.com: 1001-1500
      Copy to Clipboard Toggle word wrap
    • ipa-replica-manage dnanextrange-show 는 현재 모든 서버에 설정된 다음 DNA ID 범위를 표시하거나 지정된 서버에만 서버를 지정하는 경우 다음을 표시합니다.

      # ipa-replica-manage dnanextrange-show
      serverA.example.com: 2001-2500
      serverB.example.com: No on-deck range set
      serverC.example.com: No on-deck range set
      
      # ipa-replica-manage dnanextrange-show serverA.example.com
      serverA.example.com: 2001-2500
      Copy to Clipboard Toggle word wrap

37.9. 수동 ID 범위 할당

특정 상황에서는 다음과 같이 DNA(Distributed Numeric Assignment) ID 범위를 수동으로 할당해야 합니다.

  • 복제본에 ID가 부족하고 IdM ID 범위가 제거되었습니다.

    복제본은 할당된 DNA ID 범위를 고갈시키고 IdM 범위에서 사용 가능한 ID를 더 이상 사용할 수 없기 때문에 추가 ID를 요청하지 못했습니다.

    이러한 상황을 해결하려면 복제본에 할당된 DNA ID 범위를 확장합니다. 다음 두 가지 방법으로 이 작업을 수행할 수 있습니다.

    • 다른 복제본에 할당된 DNA ID 범위를 단축한 다음 새로 사용 가능한 값을 고갈된 복제본에 할당합니다.
    • 새 IdM ID 범위를 생성한 다음 이 IdM 범위 내에서 복제본의 새 DNA ID 범위를 설정합니다.

      새 IdM ID 범위를 생성하는 방법에 대한 자세한 내용은 새 IdM ID 범위 추가를 참조하십시오.

  • 복제본의 작동이 중지되었습니다

    복제본의 DNA ID 범위는 복제본이 작동하지 않고 삭제해야 할 때 자동으로 검색되지 않으므로 복제본에 이전에 할당된 DNA ID 범위를 사용할 수 없게 됩니다. DNA ID 범위를 복구하고 다른 복제본에서 사용할 수 있도록 합니다.

    이렇게 하려면 해당 범위를 다른 서버에 수동으로 할당하기 전에 ID 범위 값이 무엇인지 확인합니다. 또한 중복된 UID 또는 GID를 방지하려면 복구된 범위의 ID 값이 사용자 또는 그룹에 할당되지 않았는지 확인합니다. 기존 사용자와 그룹의 UID 및 GID를 검사하여 이 작업을 수행할 수 있습니다.

DNA ID 범위를 수동으로 할당하는 명령을 사용하여 DNA ID 범위를 복제본에 수동으로 할당할 수 있습니다.

참고

새 DNA ID 범위를 할당하면 서버 또는 복제본에 있는 기존 항목의 UID가 동일하게 유지됩니다. 현재 DNA ID 범위를 변경해도 IdM은 과거에 할당된 범위에 대한 레코드를 유지하므로 문제가 발생하지 않습니다.

37.10. 수동으로 DNA ID 범위 할당

경우에 따라 기존 복제본에 DNA(Distributed Numeric Assignment) ID 범위를 수동으로 할당하여 작동하지 않는 복제본에 할당된 DNA ID 범위를 다시 할당해야 할 수 있습니다. 자세한 내용은 수동 ID 범위 할당 을 참조하십시오.

DNA ID 범위를 수동으로 조정할 때 새로 조정된 범위가 IdM ID 범위에 포함되어 있는지 확인합니다. ipa idrange-find 명령을 사용하여 확인할 수 있습니다. 그러지 않으면 명령이 실패합니다.

중요

중복되는 ID 범위를 만들지 않도록 주의하십시오. 서버 또는 복제본에 할당한 ID 범위가 겹치는 경우 서로 다른 두 개의 서버에서 동일한 ID 값을 다른 항목에 할당할 수 있습니다.

사전 요구 사항

절차

  • 지정된 서버에 대한 현재 DNA ID 범위를 정의하려면 ipa-replica-manage dnarange-set 을 사용합니다.

    # ipa-replica-manage dnarange-set serverA.example.com 1250-1499
    Copy to Clipboard Toggle word wrap
  • 지정된 서버에 대한 다음 DNA ID 범위를 정의하려면 ipa-replica-manage dnanextrange-set 를 사용합니다.

    # ipa-replica-manage dnanextrange-set serverB.example.com 1500-5000
    Copy to Clipboard Toggle word wrap

검증 단계

38장. 하위 ID 범위 수동 관리

컨테이너화된 환경에서는 IdM 사용자가 하위 ID 범위를 수동으로 할당해야 하는 경우가 있습니다. 다음 지침은 하위 ID 범위를 관리하는 방법을 설명합니다.

38.1. IdM CLI를 사용하여 subID 범위 생성

IdM(Identity Management) 관리자는 subID 범위를 생성하고 IdM 사용자에게 할당할 수 있습니다.

사전 요구 사항

절차

  1. [선택 사항] 기존 하위 ID 범위를 확인합니다.

    # ipa subid-find
    Copy to Clipboard Toggle word wrap
  2. subID 범위가 없는 경우 다음 옵션 중 하나를 선택합니다.

    • IdM 사용자에게 하위 ID 범위를 생성하고 할당합니다.

      # ipa subid-generate --owner=idmuser
      
      Added subordinate id "359dfcef-6b76-4911-bd37-bb5b66b8c418"
      
        Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418
        Description: auto-assigned subid
        Owner: idmuser
        SubUID range start: 2147483648
        SubUID range size: 65536
        SubGID range start: 2147483648
        SubGID range size: 65536
      Copy to Clipboard Toggle word wrap
    • 모든 IdM 사용자에게 subID 범위를 생성하고 할당합니다.

      # /usr/libexec/ipa/ipa-subids --all-users
      
      Found 2 user(s) without subordinate ids
        Processing user 'user4' (1/2)
        Processing user 'user5' (2/2)
      Updated 2 user(s)
      The ipa-subids command was successful
      Copy to Clipboard Toggle word wrap
  3. [선택 사항] 기본적으로 subID 범위를 새 IdM 사용자에게 할당합니다.

    # ipa config-mod --user-default-subid=True
    Copy to Clipboard Toggle word wrap

검증

  • 사용자에게 subID 범위가 할당되어 있는지 확인합니다.

    # ipa subid-find --owner=idmuser
    
    1 subordinate id matched
    
      Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418
      Owner: idmuser
      SubUID range start: 2147483648
      SubUID range size: 65536
      SubGID range start: 2147483648
      SubGID range size: 65536
    
    Number of entries returned 1
    Copy to Clipboard Toggle word wrap

38.2. IdM WebUI 인터페이스를 사용하여 하위 ID 범위 생성

IdM(Identity Management) 관리자는 subID 범위를 생성하고 IdM WebUI 인터페이스의 사용자에게 할당할 수 있습니다.

사전 요구 사항

  • IdM 사용자가 있습니다.
  • IdM 관리자 Kerberos 티켓(TGT)을 받았습니다. 웹 UI에서 URL에 로그인: 자세한 내용은 Kerberos 티켓 을 사용합니다.
  • 절차를 실행하는 IdM 호스트에 대한 루트 액세스 권한이 있어야 합니다.

절차

  1. IdM WebUI 인터페이스에서 Subordinate ID 탭을 확장하고 Subordinate ID 옵션을 선택합니다.
  2. Subordinate ID 인터페이스가 표시되면 인터페이스의 오른쪽 상단에 있는 Add 버튼을 클릭합니다. 하위 ID 추가 창이 표시됩니다.
  3. 하위 ID 추가 창에서 하위 ID 범위를 할당하려는 사용자인 소유자를 선택합니다.
  4. Add(추가) 버튼을 클릭합니다.

검증

  • Subordinate ID 탭 아래에 있는 테이블을 봅니다. 테이블에 새 레코드가 표시됩니다. 소유자는 하위 ID 범위를 할당한 사용자입니다.

38.3. IdM CLI를 사용하여 IdM 사용자에 대한 하위 ID 정보 보기

IdM(Identity Management) 사용자는 IdM 사용자 subID 범위를 검색하고 관련 정보를 볼 수 있습니다.

사전 요구 사항

절차

  • 하위 ID 범위에 대한 세부 정보를 보려면 다음을 수행합니다.

    • 범위의 소유자인 IdM(Identity Management) 사용자의 고유 ID 해시를 알고 있는 경우:

      $ ipa subid-show 359dfcef-6b76-4911-bd37-bb5b66b8c418
      
        Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418
        Owner: idmuser
        SubUID range start: 2147483648
        SubUID range size: 65536
        SubGID range start: 2147483648
        SubGID range size: 65536
      Copy to Clipboard Toggle word wrap
    • 해당 범위의 특정 하위 ID를 알고 있는 경우:

      $ ipa subid-match --subuid=2147483670
      
      1 subordinate id matched
      
        Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418
        Owner: uid=idmuser
        SubUID range start: 2147483648
        SubUID range size: 65536
        SubGID range start: 2147483648
        SubGID range size: 65536
      
      Number of entries returned 1
      Copy to Clipboard Toggle word wrap

38.4. getsubid 명령을 사용하여 하위 ID 범위 나열

시스템 관리자는 명령줄 인터페이스를 사용하여 IdM(Identity Management) 또는 로컬 사용자의 subID 범위를 나열할 수 있습니다.

사전 요구 사항

  • idmuser 사용자는 IdM에 있습니다.
  • shadow-utils-subid 패키지가 설치됩니다.
  • /etc/nsswitch.conf 파일을 편집할 수 있습니다.

절차

  1. /etc/nsswitch.conf 파일을 열고 subid 변수를 sss 값으로 설정하여 IdM 하위 ID 범위를 사용하도록 shadow-utils 유틸리티를 구성합니다.

    [...]
    subid: sss
    Copy to Clipboard Toggle word wrap
    참고

    subid 필드에는 하나의 값만 제공할 수 있습니다. subid 필드를 파일 값으로 설정하거나 sss 대신 값이 없는 경우 /etc/subuid/etc/subgid 파일의 subID 범위를 사용하도록 shadow-utils 유틸리티를 구성합니다.

  2. IdM 사용자의 하위 ID 범위를 나열합니다.

    $ getsubids idmuser
    0: idmuser 2147483648 65536
    Copy to Clipboard Toggle word wrap

    첫 번째 값인 2147483648은 subID 범위가 시작을 나타냅니다. 두 번째 값인 65536은 범위의 크기를 나타냅니다.

39장. Ansible을 사용하여 IdM의 복제 토폴로지 관리

여러 IdM(Identity Management) 서버를 유지 관리하고 중복을 위해 서로 복제하여 서버 손실을 완화하거나 방지할 수 있습니다. 예를 들어, 한 서버가 실패하면 다른 서버는 계속 도메인에 서비스를 제공합니다. 나머지 서버 중 하나를 기반으로 새 복제본을 만들어 손실된 서버를 복구할 수도 있습니다.

IdM 서버에 저장된 데이터는 복제 계약에 따라 복제됩니다. 두 서버에 복제 계약이 구성된 경우 해당 데이터를 공유합니다. 복제된 데이터는 토폴로지 접미사 에 저장됩니다. 두 복제본에 접미사 간 복제 계약이 있는 경우 접미사는 토폴로지 세그먼트 를 형성합니다.

이 장에서는 Red Hat Ansible Engine 을 사용하여 IdM 복제 계약, 토폴로지 세그먼트 및 토폴로지 접미사를 관리하는 방법을 설명합니다. 장에는 다음 섹션이 포함되어 있습니다.

39.1. Ansible을 사용하여 IdM에 복제 계약이 있는지 확인

IdM(Identity Management) 서버에 저장된 데이터는 복제 계약에 따라 복제됩니다. 두 서버에 복제 계약이 구성된 경우 데이터를 공유합니다. 복제 계약은 항상 양방향입니다. 데이터는 첫 번째 복제본에서 다른 복제본으로는 물론 다른 복제본으로 복제됩니다.

Ansible 플레이북을 사용하여 server.idm.example.comreplica.idm.example.com 사이에 도메인 유형의 복제 계약이 있는지 확인합니다.

사전 요구 사항

  • 토폴로지의 IdM 복제본 연결을 위해 지침에 나열된 IdM 토폴로지를 설계하기 위한 권장 사항을 이해해야 합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/topology/ 디렉터리에 있는 add-topology segment.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml
    Copy to Clipboard Toggle word wrap
  3. add-topologysegment-copy.yml 파일을 열어 편집합니다.
  4. ipatopologysegment 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 추가하려는 세그먼트 유형에 따라 접미사 변수를 domain 또는 ca 로 설정합니다.
    • 복제 계약의 왼쪽 노드가 되고자 하는 IdM 서버의 이름으로 왼쪽 변수를 설정합니다.
    • 올바른 변수를 복제 계약의 올바른 노드로 설정하고자 하는 IdM 서버의 이름으로 설정합니다.
    • state 변수가 present로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to handle topologysegment
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
    - name: Add topology segment
        ipatopologysegment:
          ipaadmin_password: "{{ ipaadmin_password }}"
          suffix: domain
          left: server.idm.example.com
          right: replica.idm.example.com
          state: present
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegment-copy.yml
    Copy to Clipboard Toggle word wrap

39.2. Ansible을 사용하여 여러 IdM 복제본 간에 복제 계약이 있는지 확인

IdM(Identity Management) 서버에 저장된 데이터는 복제 계약에 따라 복제됩니다. 두 서버에 복제 계약이 구성된 경우 데이터를 공유합니다. 복제 계약은 항상 양방향입니다. 데이터는 첫 번째 복제본에서 다른 복제본으로는 물론 다른 복제본으로 복제됩니다.

IdM의 여러 복제본 쌍 간에 복제 계약이 있는지 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 토폴로지의 복제본 연결에 나열된 IdM 토폴로지를 설계하기 위한 권장 사항을 이해해야 합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/topology/ 디렉터리에 있는 add-topologysegments.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegments.yml add-topologysegments-copy.yml
    Copy to Clipboard Toggle word wrap
  3. add-topologysegments-copy.yml 파일을 열어 편집합니다.
  4. vars 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 모든 토폴로지 세그먼트에 대해 ipatopology_segments 섹션에 행을 추가하고 다음 변수를 설정합니다.

      • 추가하려는 세그먼트 유형에 따라 접미사 변수를 domain 또는 ca 로 설정합니다.
      • 복제 계약의 왼쪽 노드가 되고자 하는 IdM 서버의 이름으로 왼쪽 변수를 설정합니다.
      • 올바른 변수를 복제 계약의 올바른 노드로 설정하고자 하는 IdM 서버의 이름으로 설정합니다.
  5. add-topologysegments-copy.yml 파일의 tasks 섹션에서 state 변수가 present로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Add topology segments
      hosts: ipaserver
      gather_facts: false
    
      vars:
        ipaadmin_password: "{{ ipaadmin_password }}"
        ipatopology_segments:
        - {suffix: domain, left: replica1.idm.example.com , right: replica2.idm.example.com }
        - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com }
        - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com }
        - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com }
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Add topology segment
        ipatopologysegment:
          ipaadmin_password: "{{ ipaadmin_password }}"
          suffix: "{{ item.suffix }}"
          name: "{{ item.name | default(omit) }}"
          left: "{{ item.left }}"
          right: "{{ item.right }}"
          state: present
          #state: absent
          #state: checked
          #state: reinitialized
        loop: "{{ ipatopology_segments | default([]) }}"
    Copy to Clipboard Toggle word wrap
  6. 파일을 저장합니다.
  7. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegments-copy.yml
    Copy to Clipboard Toggle word wrap

39.3. Ansible을 사용하여 두 복제본 간에 복제 계약이 있는지 확인

IdM(Identity Management) 서버에 저장된 데이터는 복제 계약에 따라 복제됩니다. 두 서버에 복제 계약이 구성된 경우 데이터를 공유합니다. 복제 계약은 항상 양방향입니다. 데이터는 첫 번째 복제본에서 다른 복제본으로는 물론 다른 복제본으로 복제됩니다.

다음 절차에 따라 IdM의 여러 복제본 쌍 간에 복제 계약이 있는지 확인합니다.

사전 요구 사항

  • 토폴로지의 복제본 연결에 나열된 IdM(Identity Management) 토폴로지를 설계하기 위한 권장 사항을 이해해야 합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/topology/ 디렉터리에 있는 check-topologysegments.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/topology/check-topologysegments.yml check-topologysegments-copy.yml
    Copy to Clipboard Toggle word wrap
  3. check-topologysegments-copy.yml 파일을 열어 편집합니다.
  4. vars 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 모든 토폴로지 세그먼트에 대해 ipatopology_segments 섹션에 행을 추가하고 다음 변수를 설정합니다.

      • 추가하려는 세그먼트 유형에 따라 접미사 변수를 domain 또는 ca 로 설정합니다.
      • 복제 계약의 왼쪽 노드가 되고자 하는 IdM 서버의 이름으로 왼쪽 변수를 설정합니다.
      • 올바른 변수를 복제 계약의 올바른 노드로 설정하고자 하는 IdM 서버의 이름으로 설정합니다.
  5. check-topologysegments-copy.yml 파일의 tasks 섹션에서 state 변수가 present로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Add topology segments
      hosts: ipaserver
      gather_facts: false
    
      vars:
        ipaadmin_password: "{{ ipaadmin_password }}"
        ipatopology_segments:
        - {suffix: domain, left: replica1.idm.example.com, right: replica2.idm.example.com }
        - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com }
        - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com }
        - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com }
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Check topology segment
        ipatopologysegment:
          ipaadmin_password: "{{ ipaadmin_password }}"
          suffix: "{{ item.suffix }}"
          name: "{{ item.name | default(omit) }}"
          left: "{{ item.left }}"
          right: "{{ item.right }}"
          state: checked
        loop: "{{ ipatopology_segments | default([]) }}"
    Copy to Clipboard Toggle word wrap
  6. 파일을 저장합니다.
  7. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory check-topologysegments-copy.yml
    Copy to Clipboard Toggle word wrap

39.4. Ansible을 사용하여 토폴로지 접미사가 IdM에 있는지 확인합니다.

IdM(Identity Management)의 복제 계약 컨텍스트에서 토폴로지 접미사는 복제되는 데이터를 저장합니다. IdM은 두 가지 유형의 토폴로지 접미사인 domainca 를 지원합니다. 각 접미사는 별도의 백엔드인 별도의 복제 토폴로지를 나타냅니다. 복제 계약이 구성되면 서로 다른 두 서버에서 동일한 유형의 두 토폴로지 접미사를 결합합니다.

도메인 접미사에는 사용자, 그룹 및 정책과 같은 모든 도메인 관련 데이터가 포함됩니다. ca 접미사에는 Certificate System 구성 요소에 대한 데이터가 포함되어 있습니다. CA(인증 기관)가 설치된 서버에만 존재합니다.

Ansible 플레이북을 사용하여 IdM에 토폴로지 접미사가 있는지 확인하려면 다음 절차를 따르십시오. 이 예제에서는 도메인 접미사가 IdM에 있는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/topology/ 디렉터리에 있는 verify-topology suffix.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/topology/ verify-topologysuffix.yml verify-topologysuffix-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 verify-topologysuffix-copy.yml Ansible 플레이북 파일을 엽니다.
  4. ipatopologysuffix 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 접미사 변수를 domain 로 설정합니다. ca 접미사가 있는지 확인하는 경우 변수를 ca 로 설정합니다.
    • state 변수가 verify 로 설정되어 있는지 확인합니다 . 다른 옵션은 없습니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to handle topologysuffix
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Verify topology suffix
        ipatopologysuffix:
          ipaadmin_password: "{{ ipaadmin_password }}"
          suffix: domain
          state: verified
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory verify-topologysuffix-copy.yml
    Copy to Clipboard Toggle word wrap

39.5. Ansible을 사용하여 IdM 복제본 다시 초기화

복제본이 장기간 오프라인 상태이거나 데이터베이스가 손상된 경우 다시 초기화할 수 있습니다. 다시 초기화하면 업데이트된 데이터 세트로 복제본을 새로 고칩니다. 예를 들어 백업에서 권한 있는 복원이 필요한 경우 다시 초기화할 수 있습니다.

참고

복제 업데이트와 대조적으로 복제본이 변경된 항목만 상호 전송하는 반면 다시 초기화하면 전체 데이터베이스가 새로 고칩니다.

명령을 실행하는 로컬 호스트는 다시 초기화된 복제본입니다. 데이터를 가져오는 복제본을 지정하려면 direction 옵션을 사용합니다.

Ansible 플레이북을 사용하여 server.idm.example.comreplica.idm.example.com 에서 도메인 데이터를 다시 초기화하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/topology/ 디렉터리에 있는 reinitialize-topology segment.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/topology/reinitialize-topologysegment.yml reinitialize-topologysegment-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 reinitialize-topologysegment-copy.yml 파일을 엽니다.
  4. ipatopologysegment 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 접미사 변수를 domain 로 설정합니다. ca 데이터를 다시 초기화하는 경우 변수를 ca 로 설정합니다.
    • 왼쪽 변수를 복제 계약의 왼쪽 노드로 설정합니다.
    • 올바른 변수를 복제 계약의 올바른 노드로 설정합니다.
    • 방향 변수를 다시 초기화 데이터 방향으로 설정합니다. 왼쪽에서 오른쪽 방향으로 데이터를 왼쪽 노드에서 오른쪽 노드로 이동합니다.
    • state 변수가 다시 초기화 되도록 설정되어 있는지 확인합니다.

      이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

      ---
      - name: Playbook to handle topologysegment
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
        - name: Reinitialize topology segment
          ipatopologysegment:
            ipaadmin_password: "{{ ipaadmin_password }}"
            suffix: domain
            left: server.idm.example.com
            right: replica.idm.example.com
            direction: left-to-right
            state: reinitialized
      Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory reinitialize-topologysegment-copy.yml
    Copy to Clipboard Toggle word wrap

39.6. Ansible을 사용하여 IdM에 복제 계약이 없음

IdM(Identity Management) 서버에 저장된 데이터는 복제 계약에 따라 복제됩니다. 두 서버에 복제 계약이 구성된 경우 데이터를 공유합니다. 복제 계약은 항상 양방향입니다. 데이터는 첫 번째 복제본에서 다른 복제본으로는 물론 다른 복제본으로 복제됩니다.

다음 절차에 따라 두 복제본 간의 복제 계약이 IdM에 없는지 확인합니다. 이 예제에서는 replica01.idm.example.com 및 replica02.idm.example.com IdM 서버 사이에 도메인 유형의 복제 계약이 없는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • 토폴로지의 복제본 연결목록에 나열된 IdM 토폴로지를 설계하기 위한 권장 사항을 이해해야 합니다.
  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. ~/MyPlaybooks/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  2. /usr/share/doc/ansible -freeipa/playbooks/topology/ 디렉터리에 있는 delete-topology segment.yml Ansible 플레이북 파일을 복사합니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/topology/delete-topologysegment.yml delete-topologysegment-copy.yml
    Copy to Clipboard Toggle word wrap
  3. 편집을 위해 delete-topologysegment-copy.yml 파일을 엽니다.
  4. ipatopologysegment 작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.

    • ipaadmin_password 변수를 IdM 관리자의 암호로 설정합니다.
    • 접미사 변수를 domain 로 설정합니다. 또는 왼쪽 및 오른쪽 노드 간에 ca 데이터가 복제되지 않도록 하는 경우 변수를 ca 로 설정합니다.
    • 왼쪽 변수를 복제 계약의 왼쪽 노드인 IdM 서버의 이름으로 설정합니다.
    • 올바른 변수를 복제 계약의 올바른 노드인 IdM 서버의 이름으로 설정합니다.
    • state 변수가 absent 로 설정되어 있는지 확인합니다.

    이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Playbook to handle topologysegment
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
    - name: Delete topology segment
        ipatopologysegment:
          ipaadmin_password: "{{ ipaadmin_password }}"
          suffix: domain
          left: replica01.idm.example.com
          right: replica02.idm.example.com:
          state: absent
    Copy to Clipboard Toggle word wrap
  5. 파일을 저장합니다.
  6. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory delete-topologysegment-copy.yml
    Copy to Clipboard Toggle word wrap

40장. 사용자의 외부 프로비저닝을 위한 IdM 구성

시스템 관리자는 ID 관리를 위해 외부 솔루션에서 사용자의 프로비저닝을 지원하도록 IdM(Identity Management)을 구성할 수 있습니다.

ipa 유틸리티를 사용하는 대신 외부 프로비저닝 시스템 관리자는 ldapmodify 유틸리티를 사용하여 IdM LDAP에 액세스할 수 있습니다. 관리자는 ldapmodify 또는 LDIF 파일을 사용하여 CLI에서 개별 단계 사용자를 추가할 수 있습니다.

IdM 관리자는 검증된 사용자만 추가하도록 외부 프로비저닝 시스템을 완전히 신뢰한다고 가정합니다. 그러나 동시에 외부 프로비저닝 시스템의 관리자에게 사용자 관리자의 IdM 역할을 할당하여 새 활성 사용자를 직접 추가할 수 없습니다.

외부 프로비저닝 시스템에서 생성한 스테이징된 사용자를 활성 사용자로 자동으로 이동하도록 스크립트를 구성할 수 있습니다.

이 장에는 다음 섹션이 포함되어 있습니다.

  1. 외부 프로비저닝 시스템을 사용하여 IdM(Identity Management) 을 준비하여 IdM에 단계 사용자를 추가합니다.
  2. 외부 프로비저닝 시스템에서 추가한 사용자를 스테이지에서 활성 사용자로 이동하는 스크립트를 생성합니다.
  3. 외부 프로비저닝 시스템을 사용하여 IdM 단계 사용자 추가. 다음 두 가지 방법으로 이를 수행할 수 있습니다.

40.1. 단계 사용자 계정의 자동 활성화를 위한 IdM 계정 준비

다음 절차에서는 외부 프로비저닝 시스템에서 사용할 두 개의 IdM 사용자 계정을 구성하는 방법을 설명합니다. 적절한 암호 정책이 있는 그룹에 계정을 추가하면 외부 프로비저닝 시스템에서 IdM의 사용자 프로비저닝을 관리할 수 있습니다. 다음에서는 외부 시스템에서 단계 사용자를 추가하는 데 사용하는 사용자 계정은 provisionator 라고 합니다. 스테이징 사용자를 자동으로 활성화하는 데 사용할 사용자 계정은 활성화 기라고 합니다.

사전 요구 사항

  • 절차를 수행하는 호스트는 IdM에 등록됩니다.

절차

  1. IdM 관리자로 로그인합니다.

    $ kinit admin
    Copy to Clipboard Toggle word wrap
  2. 스테이징 사용자를 추가할 권한이 있는 provisionator 라는 사용자를 만듭니다.

    1. provisionator 사용자 계정을 추가합니다.
    $ ipa user-add provisionator --first=provisioning --last=account --password
    Copy to Clipboard Toggle word wrap
    1. 프로비저너 사용자에게 필요한 권한을 부여합니다.

      1. 사용자 지정 역할인 System Provisioning 을 생성하여 스테이징 사용자 추가를 관리합니다.

        $ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
        Copy to Clipboard Toggle word wrap
      2. 역할에 Stage User Provisioning(사용자 프로비저닝 단계) 권한을 추가합니다. 이 권한은 스테이징 사용자를 추가할 수 있는 기능을 제공합니다.

        $ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
        Copy to Clipboard Toggle word wrap
      3. provisionator 사용자를 역할에 추가합니다.

        $ ipa role-add-member --users=provisionator "System Provisioning"
        Copy to Clipboard Toggle word wrap
      4. 프로비저너가 IdM에 있는지 확인합니다.
      $ ipa user-find provisionator --all --raw
      --------------
      1 user matched
      --------------
        dn: uid=provisionator,cn=users,cn=accounts,dc=idm,dc=example,dc=com
        uid: provisionator
        [...]
      Copy to Clipboard Toggle word wrap
  3. 사용자 계정을 관리할 수 있는 권한을 가진 사용자 활성화 기를 만듭니다.

    1. 활성화기 사용자 계정을 추가합니다.

      $ ipa user-add activator --first=activation --last=account --password
      Copy to Clipboard Toggle word wrap
    2. 사용자를 기본 User Administrator 역할에 추가하여 필요한 권한을 활성화 사용자에게 부여합니다.

      $ ipa role-add-member --users=activator "User Administrator"
      Copy to Clipboard Toggle word wrap
  4. 애플리케이션 계정의 사용자 그룹을 생성합니다.

    $ ipa group-add application-accounts
    Copy to Clipboard Toggle word wrap
  5. 그룹의 암호 정책을 업데이트합니다. 다음 정책은 계정의 암호 만료 및 잠금을 방지하지만 복잡한 암호를 요구하여 잠재적인 위험을 보상합니다.

    $ ipa pwpolicy-add application-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=8 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
    Copy to Clipboard Toggle word wrap
  6. (선택 사항) 암호 정책이 IdM에 있는지 확인합니다.

    $ ipa pwpolicy-show application-accounts
      Group: application-accounts
      Max lifetime (days): 10000
      Min lifetime (hours): 0
      History size: 0
    [...]
    Copy to Clipboard Toggle word wrap
  7. 애플리케이션 계정의 그룹에 프로비저닝 및 활성화 계정을 추가합니다.

    $ ipa group-add-member application-accounts --users={provisionator,activator}
    Copy to Clipboard Toggle word wrap
  8. 사용자 계정의 암호를 변경합니다.

    $ kpasswd provisionator
    $ kpasswd activator
    Copy to Clipboard Toggle word wrap

    새 IdM 사용자 암호가 즉시 만료되기 때문에 암호를 변경해야 합니다.

40.2. IdM 스테이징 사용자 계정의 자동 활성화 구성

다음 절차에서는 스테이징 사용자를 활성화하는 스크립트를 생성하는 방법을 설명합니다. 시스템은 지정된 시간 간격에 따라 자동으로 스크립트를 실행합니다. 이렇게 하면 새 사용자 계정이 자동으로 활성화되고 생성된 직후 사용할 수 있습니다.

중요

이 절차에서는 외부 프로비저닝 시스템의 소유자가 이미 사용자를 검증했으며 스크립트에서 IdM에 추가 검증이 필요하지 않다고 가정합니다.

IdM 서버 중 하나에서만 활성화 프로세스를 활성화할 수 있습니다.

사전 요구 사항

절차

  1. 활성화 계정에 대한 keytab 파일을 생성합니다.

    # ipa-getkeytab -s server.idm.example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
    Copy to Clipboard Toggle word wrap

    둘 이상의 IdM 서버에서 활성화 프로세스를 활성화하려면 하나의 서버에만 keytab 파일을 생성합니다. 그런 다음 키탭 파일을 다른 서버에 복사합니다.

  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
    Copy to Clipboard Toggle word wrap
  3. ipa-activate-all 스크립트의 권한 및 소유권을 편집하여 실행 가능하게 만듭니다.

    # chmod 755 /usr/local/sbin/ipa-activate-all
    # chown root:root /usr/local/sbin/ipa-activate-all
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  6. 새 구성을 다시 로드합니다.

    # systemctl daemon-reload
    Copy to Clipboard Toggle word wrap
  7. ipa-activate-all.timer:

    # systemctl enable ipa-activate-all.timer
    Copy to Clipboard Toggle word wrap
  8. ipa-activate-all.timer 시작 :

    # systemctl start ipa-activate-all.timer
    Copy to Clipboard Toggle word wrap
  9. (선택 사항) ipa-activate-all.timer 데몬이 실행 중인지 확인합니다.

    # systemctl status ipa-activate-all.timer
    ● ipa-activate-all.timer - Scan IdM every minute for any stage users that must be activated
       Loaded: loaded (/etc/systemd/system/ipa-activate-all.timer; enabled; vendor preset: disabled)
       Active: active (waiting) since Wed 2020-06-10 16:34:55 CEST; 15s ago
      Trigger: Wed 2020-06-10 16:35:55 CEST; 44s left
    
    Jun 10 16:34:55 server.idm.example.com systemd[1]: Started Scan IdM every minute for any stage users that must be activated.
    Copy to Clipboard Toggle word wrap

40.3. LDIF 파일에 정의된 IdM 단계 사용자 추가

IdM LDAP에 액세스하고 LDIF 파일을 사용하여 스테이징 사용자를 추가하려면 다음 절차를 따르십시오. 아래 예제에서는 단일 사용자를 추가하는 방법을 보여주지만, 일괄 모드로 하나의 파일에 여러 사용자를 추가할 수 있습니다.

사전 요구 사항

  • IdM 관리자가 프로비저너 계정 과 암호를 생성했습니다. 자세한 내용은 단계 사용자 계정 자동 활성화를 위한 IdM 계정 준비를 참조하십시오.
  • 외부 관리자가 프로비저너 계정의 암호를 알고 있습니다.
  • LDAP 서버에서 IdM 서버에 SSH로 연결할 수 있습니다.
  • IdM 단계 사용자가 사용자 라이프사이클의 올바른 처리를 허용해야 하는 최소한의 속성 세트를 제공할 수 있습니다.

    • 고유 이름 (dn)
    • 일반 이름 (cn)
    • (sn)
    • uid

절차

  1. 외부 서버에서 새 사용자에 대한 정보가 포함된 LDIF 파일을 생성합니다.

    dn: uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
    changetype: add
    objectClass: top
    objectClass: inetorgperson
    uid: stageidmuser
    sn: surname
    givenName: first_name
    cn: full_name
    Copy to Clipboard Toggle word wrap
  2. LDIF 파일을 외부 서버에서 IdM 서버로 전송합니다.

    $ scp add-stageidmuser.ldif provisionator@server.idm.example.com:/provisionator/
    Password:
    add-stageidmuser.ldif                                                                                          100%  364   217.6KB/s   00:00
    Copy to Clipboard Toggle word wrap
  3. SSH 프로토콜을 사용하여 IdM 서버에 프로비저너로 연결합니다.

    $ ssh provisionator@server.idm.example.com
    Password:
    [provisionator@server ~]$
    Copy to Clipboard Toggle word wrap
  4. IdM 서버에서 프로비저너 계정의 Kerberos 티켓을 받습니다.

    [provisionator@server ~]$ kinit provisionator
    Copy to Clipboard Toggle word wrap
  5. f 옵션과 LDIF 파일의 이름을 사용하여 ldapadd 명령을 입력합니다. IdM 서버의 이름과 포트 번호를 지정합니다.

    ~]$ ldapadd -h server.idm.example.com -p 389 -f  add-stageidmuser.ldif
    SASL/GSSAPI authentication started
    SASL username: provisionator@IDM.EXAMPLE.COM
    SASL SSF: 256
    SASL data security layer installed.
    adding the entry "uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

40.4. ldapmodify를 사용하여 CLI에서 직접 IdM 단계 사용자 추가

다음 절차에 따라 IdM(Identity Management) LDAP에 액세스하고 ldapmodify 유틸리티를 사용하여 스테이징 사용자를 추가합니다.

사전 요구 사항

  • IdM 관리자가 프로비저너 계정 과 암호를 생성했습니다. 자세한 내용은 단계 사용자 계정 자동 활성화를 위한 IdM 계정 준비를 참조하십시오.
  • 외부 관리자가 프로비저너 계정의 암호를 알고 있습니다.
  • LDAP 서버에서 IdM 서버에 SSH로 연결할 수 있습니다.
  • IdM 단계 사용자가 사용자 라이프사이클의 올바른 처리를 허용해야 하는 최소한의 속성 세트를 제공할 수 있습니다.

    • 고유 이름 (dn)
    • 일반 이름 (cn)
    • (sn)
    • uid

절차

  1. IdM ID 및 자격 증명을 사용하여 SSH 프로토콜을 사용하여 IdM 서버에 연결합니다.

    $ ssh provisionator@server.idm.example.com
    Password:
    [provisionator@server ~]$
    Copy to Clipboard Toggle word wrap
  2. 새 단계 사용자를 추가하는 역할의 IdM 사용자인 프로비저너 계정의 TGT를 가져옵니다.

    $ kinit provisionator
    Copy to Clipboard Toggle word wrap
  3. ldapmodify 명령을 입력하고 인증에 사용할 SASL(Simple Authentication and Security Layer) 메커니즘으로 GSSAPI(Generic Security Services API)를 지정합니다. IdM 서버 이름 및 포트를 지정합니다.

    # ldapmodify -h server.idm.example.com -p 389 -Y GSSAPI
    SASL/GSSAPI authentication started
    SASL username: provisionator@IDM.EXAMPLE.COM
    SASL SSF: 56
    SASL data security layer installed.
    Copy to Clipboard Toggle word wrap
  4. 추가하려는 사용자의 dn 을 입력합니다.

    dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
  5. 수행 중인 변경 유형으로 add 를 입력합니다.

    changetype: add
    Copy to Clipboard Toggle word wrap
  6. 사용자 라이프 사이클의 올바른 처리를 허용하는 데 필요한 LDAP 오브젝트 클래스 범주를 지정합니다.

    objectClass: top
    objectClass: inetorgperson
    Copy to Clipboard Toggle word wrap

    추가 오브젝트 클래스를 지정할 수 있습니다.

  7. 사용자의 uid 를 입력합니다.

    uid: stageuser
    Copy to Clipboard Toggle word wrap
  8. 사용자의 cn 을 입력합니다.

    cn: Babs Jensen
    Copy to Clipboard Toggle word wrap
  9. 사용자의 성을 입력합니다.

    sn: Jensen
    Copy to Clipboard Toggle word wrap
  10. Enter 를 다시 눌러 이것이 항목의 끝인지 확인합니다.

    [Enter]
    
    adding new entry "uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  11. Ctrl + C 사용하여 연결을 종료합니다.

검증 단계

stage 항목의 콘텐츠를 확인하여 프로비저닝 시스템에서 필요한 모든 POSIX 특성을 추가하고 stage 항목을 활성화할 준비가 되었는지 확인합니다.

  • 새 stage 사용자의 LDAP 속성을 표시하려면 ipa stageuser-show --all --raw 명령을 입력합니다.

    $ ipa stageuser-show stageuser --all --raw
      dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
      uid: stageuser
      sn: Jensen
      cn: Babs Jensen
      has_password: FALSE
      has_keytab: FALSE
      nsaccountlock: TRUE
      objectClass: top
      objectClass: inetorgperson
      objectClass: organizationalPerson
      objectClass: person
    Copy to Clipboard Toggle word wrap
    1. 사용자는 nsaccountlock 특성에 의해 명시적으로 비활성화됩니다.

41장. ldapmodify를 사용하여 IdM 사용자 외부 관리

IdM 관리자는 ipa 명령을 사용하여 디렉터리 콘텐츠를 관리할 수 있습니다. 또는 ldapmodify 명령을 사용하여 유사한 목표를 달성할 수 있습니다. 이 명령을 대화형으로 사용하고 명령줄에서 모든 데이터를 직접 제공할 수 있습니다. LDAP Data Interchange Format(LDIF)에서 ldapmodify 명령에 데이터를 제공할 수도 있습니다.

41.1. 외부에서 IdM 사용자 계정을 관리하는 템플릿

다음 템플릿은 IdM의 다양한 사용자 관리 작업에 사용할 수 있습니다. 템플릿은 다음 목표를 달성하기 위해 ldapmodify 를 사용하여 수정해야 하는 속성을 표시합니다.

  • 새 단계 사용자 추가
  • 사용자 속성 수정
  • 사용자 활성화
  • 사용자 비활성화
  • 사용자 보존

템플릿은 LDAP(LDIF)로 포맷됩니다. LDIF는 LDAP 디렉터리 콘텐츠를 표시하고 요청을 업데이트하기 위한 표준 일반 텍스트 데이터 교환 형식입니다.

템플릿을 사용하여 IdM 사용자 계정을 관리하도록 프로비저닝 시스템의 LDAP 프로바이더를 구성할 수 있습니다.

자세한 예제 절차는 다음 섹션을 참조하십시오.

새 스테이징 사용자를 추가하기 위한 템플릿

  • UID 및 GID가 자동으로 할당된 사용자를 추가하는 템플릿. 생성된 항목의 고유 이름(DN)은 uid=user_login 으로 시작해야 합니다.

    dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
    changetype: add
    objectClass: top
    objectClass: inetorgperson
    uid: user_login
    sn: surname
    givenName: first_name
    cn: full_name
    Copy to Clipboard Toggle word wrap
  • 정적으로 UID 및 GID가 할당된 사용자를 추가하는 템플릿 :

    dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,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
    Copy to Clipboard Toggle word wrap

    스테이징 사용자를 추가할 때 IdM 오브젝트 클래스를 지정할 필요는 없습니다. IdM은 사용자가 활성화된 후 이러한 클래스를 자동으로 추가합니다.

기존 사용자 수정을 위한 템플릿

  • 사용자의 속성 수정:

    dn: distinguished_name
    changetype: modify
    replace: attribute_to_modify
    attribute_to_modify: new_value
    Copy to Clipboard Toggle word wrap
  • 사용자 비활성화:

    dn: distinguished_name
    changetype: modify
    replace: nsAccountLock
    nsAccountLock: TRUE
    Copy to Clipboard Toggle word wrap
  • 사용자 활성화:

    dn: distinguished_name
    changetype: modify
    replace: nsAccountLock
    nsAccountLock: FALSE
    Copy to Clipboard Toggle word wrap

    nssAccountLock 특성을 업데이트해도 단계 및 보존된 사용자에게는 영향을 미치지 않습니다. 업데이트 작업이 성공적으로 완료되었지만 속성 값은 nssAccountLock으로 유지됩니다. TRUE.

  • 사용자 보존:

    dn: distinguished_name
    changetype: modrdn
    newrdn: uid=user_login
    deleteoldrdn: 0
    newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
참고

사용자를 수정하기 전에 사용자의 로그인을 통해 검색하여 사용자의 고유 이름(DN)을 획득합니다. 다음 예에서 user_allowed_to_modify_user_entries 사용자는 활성화 기 또는 IdM 관리자와 같이 사용자 및 그룹 정보를 수정할 수 있는 사용자입니다. 예제의 암호는 이 사용자의 암호입니다.

[...]
# ldapsearch -LLL -x -D "uid=user_allowed_to_modify_user_entries,cn=users,cn=accounts,dc=idm,dc=example,dc=com" -w "Secret123" -H ldap://r8server.idm.example.com -b "cn=users,cn=accounts,dc=idm,dc=example,dc=com" uid=test_user
dn: uid=test_user,cn=users,cn=accounts,dc=idm,dc=example,dc=com
memberOf: cn=ipausers,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
Copy to Clipboard Toggle word wrap

41.2. 외부에서 IdM 그룹 계정을 관리하는 템플릿

다음 템플릿은 IdM의 다양한 사용자 그룹 관리 작업에 사용할 수 있습니다. 템플릿은 다음 목표를 달성하기 위해 ldapmodify 를 사용하여 수정해야 하는 속성을 표시합니다.

  • 새 그룹 생성
  • 기존 그룹 삭제
  • 그룹에 구성원 추가
  • 그룹에서 멤버 제거

템플릿은 LDAP(LDIF)로 포맷됩니다. LDIF는 LDAP 디렉터리 콘텐츠를 표시하고 요청을 업데이트하기 위한 표준 일반 텍스트 데이터 교환 형식입니다.

템플릿을 사용하여 IdM 그룹 계정을 관리하도록 프로비저닝 시스템의 LDAP 프로바이더를 구성할 수 있습니다.

새 그룹 생성

dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
changetype: add
objectClass: top
objectClass: ipaobject
objectClass: ipausergroup
objectClass: groupofnames
objectClass: nestedgroup
objectClass: posixgroup
uid: group_name
cn: group_name
gidNumber: GID_number
Copy to Clipboard Toggle word wrap

그룹 수정

  • 기존 그룹 삭제:

    dn: group_distinguished_name
    changetype: delete
    Copy to Clipboard Toggle word wrap
  • 그룹에 멤버 추가:

    dn: group_distinguished_name
    changetype: modify
    add: member
    member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

    스테이징 또는 보존된 사용자를 그룹에 추가하지 마십시오. 업데이트 작업이 성공적으로 완료되었지만 사용자는 그룹의 구성원으로 업데이트되지 않습니다. 활성 사용자만 그룹에 속할 수 있습니다.

  • 그룹에서 멤버 제거:

    dn: distinguished_name
    changetype: modify
    delete: member
    member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
참고

그룹을 수정하기 전에 그룹 이름을 사용하여 검색하여 그룹의 고유 이름(DN)을 가져옵니다.

# ldapsearch -YGSSAPI -H ldap://server.idm.example.com -b "cn=groups,cn=accounts,dc=idm,dc=example,dc=com" "cn=group_name"
dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
ipaNTSecurityIdentifier: S-1-5-21-1650388524-2605035987-2578146103-11017
cn: testgroup
objectClass: top
objectClass: groupofnames
objectClass: nestedgroup
objectClass: ipausergroup
objectClass: ipaobject
objectClass: posixgroup
objectClass: ipantgroupattrs
ipaUniqueID: 569bf864-9d45-11ea-bea3-525400f6f085
gidNumber: 1997010017
Copy to Clipboard Toggle word wrap

41.3. ldapmodify 명령을 대화형으로 사용

대화형 모드에서 LDAP(Lightweight Directory Access Protocol) 항목을 수정할 수 있습니다.

절차

  1. 명령줄에서 LDAP Data Interchange Format(LDIF) 문을 ldapmodify 명령 뒤에 입력합니다.

    예 41.1. testuser의 전화 번호 변경

    # ldapmodify -Y GSSAPI -H ldap://server.example.com
    dn: uid=testuser,cn=users,cn=accounts,dc=example,dc=com
    changetype: modify
    replace: telephoneNumber
    telephonenumber: 88888888
    Copy to Clipboard Toggle word wrap

    -Y 옵션을 사용하려면 Kerberos 티켓을 받아야 합니다.

  2. Ctlr+D 를 눌러 대화형 모드를 종료합니다.
  3. 또는 ldapmodify 명령 뒤에 LDIF 파일을 제공합니다.

    예 41.2. ldapmodify 명령은 LDIF 파일에서 수정 데이터를 읽습니다.

    # ldapmodify -Y GSSAPI -H ldap://server.example.com -f ~/example.ldif
    Copy to Clipboard Toggle word wrap

41.4. ldapmodify를 사용하여 IdM 사용자 보존

ldapmodify 를 사용하여 IdM 사용자를 보존하려면 다음 절차를 따르십시오. 즉, 직원이 퇴사한 후 사용자 계정을 비활성화하는 방법을 따르십시오.

사전 요구 사항

  • 사용자를 보존하기 위해 역할로 IdM 사용자로 인증할 수 있습니다.

절차

  1. 사용자를 보존하려면 역할을 가진 IdM 사용자로 로그인합니다.

    $ kinit admin
    Copy to Clipboard Toggle word wrap
  2. ldapmodify 명령을 입력하고 인증에 사용할 SASL(Simple Authentication and Security Layer) 메커니즘으로 GSSAPI(Generic Security Services API)를 지정합니다.

    # ldapmodify -Y GSSAPI
    SASL/GSSAPI authentication started
    SASL username: admin@IDM.EXAMPLE.COM
    SASL SSF: 256
    SASL data security layer installed.
    Copy to Clipboard Toggle word wrap
  3. 보존할 사용자의 dn 을 입력합니다.

    dn: uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com
    Copy to Clipboard Toggle word wrap
  4. 수행할 변경 유형으로 modrdn 을 입력합니다.

    changetype: modrdn
    Copy to Clipboard Toggle word wrap
  5. 사용자에 대한 newrdn 을 지정합니다.

    newrdn: uid=user1
    Copy to Clipboard Toggle word wrap
  6. 사용자를 보존할 것을 나타냅니다.

    deleteoldrdn: 0
    Copy to Clipboard Toggle word wrap
  7. 새로운 우수 DN 을 지정합니다.

    newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
    Copy to Clipboard Toggle word wrap

    사용자를 보존하면 DIT(디렉토리 정보 트리)의 새 위치로 항목을 이동합니다. 따라서 새 상위 항목의 DN을 새 우수한 DN으로 지정해야 합니다.

  8. Enter 를 다시 눌러 이것이 항목의 끝인지 확인합니다.

    [Enter]
    
    modifying rdn of entry "uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  9. Ctrl + C 사용하여 연결을 종료합니다.

검증 단계

  • 보존된 모든 사용자를 나열하여 사용자가 보존되었는지 확인합니다.

    $ ipa user-find --preserved=true
    --------------
    1 user matched
    --------------
      User login: user1
      First name: First 1
      Last name: Last 1
      Home directory: /home/user1
      Login shell: /bin/sh
      Principal name: user1@IDM.EXAMPLE.COM
      Principal alias: user1@IDM.EXAMPLE.COM
      Email address: user1@idm.example.com
      UID: 1997010003
      GID: 1997010003
      Account disabled: True
      Preserved user: True
    ----------------------------
    Number of entries returned 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

42장. IdM CLI에서 호스트 관리

이 장에서는 IdM(Identity Management)의 호스트 및 호스트 항목 과 IdM CLI에서 호스트 및 호스트 항목을 관리할 때 수행되는 다음 작업을 소개합니다.

또한 장에는 사전 요구 사항, 컨텍스트 및 이러한 작업 결과에 대한 개요 테이블이 포함되어 있습니다.

42.1. IdM의 호스트

IdM(Identity Management)은 이러한 ID를 관리합니다.

  • 사용자
  • 서비스
  • 호스트

호스트는 시스템을 나타냅니다. IdM ID로 호스트에 IdM LDAP에 항목이 있으며, 이는 IdM 서버의 디렉터리 서버 인스턴스 389입니다.

IdM LDAP의 host 항목은 다른 호스트와 도메인 내의 서비스 간 관계를 설정하는 데 사용됩니다. 이러한 관계는 도메인 내의 호스트에 권한 부여 및 제어 위임 의 일부입니다. 호스트 기반 액세스 제어(HBAC) 규칙에서 모든 호스트 를 사용할 수 있습니다.

IdM 도메인은 공통 ID 정보, 공통 정책 및 공유 서비스가 포함된 시스템 간 공통성을 설정합니다. 도메인 기능에 속한 시스템은 도메인의 클라이언트에 속하므로, 도메인에서 제공하는 서비스를 사용합니다. IdM 도메인은 시스템 전용 세 가지 기본 서비스를 제공합니다.

  • DNS
  • Kerberos
  • 인증서 관리

IdM의 호스트는 실행 중인 서비스와 긴밀하게 연결됩니다.

  • 서비스 항목은 호스트와 연결됩니다.
  • 호스트는 호스트와 서비스 Kerberos 사용자를 모두 저장합니다.

42.2. 호스트 등록

이 섹션에서는 IdM 클라이언트로 호스트 등록 및 등록 중 및 등록 후에 발생하는 사항에 대해 설명합니다. 이 섹션에서는 IdM 호스트 및 IdM 사용자의 등록을 비교합니다. 또한 이 섹션에서는 호스트에서 사용할 수 있는 대체 유형의 인증에 대해 간단히 설명합니다.

호스트 등록은 다음으로 구성됩니다.

  • IdM LDAP에서 호스트 항목 생성: IdM CLI에서 ipa host-add 명령 또는 동등한 IdM 웹 UI 작업을 사용할 수 있습니다.
  • 호스트에서 IdM 서비스 구성(예: SSSD(시스템 보안 서비스 데몬), Kerberos, certmonger) 호스트를 IdM 도메인에 연결합니다.

두 작업은 별도로 또는 함께 수행할 수 있습니다.

개별적으로 수행되는 경우 두 가지 작업을 서로 다른 수준의 권한을 가진 두 사용자 간에 나눌 수 있습니다. 이는 대량 배포에 유용합니다.

ipa-client-install 명령은 두 작업을 함께 수행할 수 있습니다. 해당 항목이 아직 없는 경우 명령은 IdM LDAP에 호스트 항목을 생성하고 호스트에 대한 Kerberos 및 SSSD 서비스를 둘 다 구성합니다. 이 명령은 IdM 도메인에 호스트를 가져와 연결할 IdM 서버를 식별할 수 있습니다. 호스트가 IdM에서 관리하는 DNS 영역에 속하는 경우 ipa-client-install 은 호스트에 대한 DNS 레코드도 추가합니다. 명령은 클라이언트에서 실행해야 합니다.

42.3. 호스트 등록에 필요한 사용자 권한

호스트 등록 작업을 수행하려면 권한이 없는 사용자가 원하지 않는 시스템을 IdM 도메인에 추가하지 못하도록 인증해야 합니다. 필요한 권한은 다음과 같은 여러 요인에 따라 다릅니다.

  • ipa-client-install실행과 별도로 호스트 항목을 생성하는 경우
  • 등록에 OTP(일회용 암호)를 사용하는 경우

IdM LDAP에서 수동으로 호스트 항목을 생성하는 데 필요한 사용자 권한

ipa host-add CLI 명령 또는 IdM 웹 UI를 사용하여 IdM LDAP에서 호스트 항목을 생성하는 데 필요한 사용자 권한은 호스트 관리자입니다. 호스트 관리자 권한은 IT 전문가 역할을 통해 얻을 수 있습니다.

클라이언트를 IdM 도메인에 가입하는 사용자 권한

호스트는 ipa-client-install 명령을 실행하는 동안 IdM 클라이언트로 구성됩니다. ipa-client-install 명령을 실행하는 데 필요한 인증 정보의 수준은 다음 중 본인이 찾은 시나리오에 따라 다릅니다.

등록 후 IdM 호스트는 모든 새 세션을 인증하여 IdM 리소스에 액세스할 수 있도록 합니다. IdM 서버가 시스템을 신뢰하고 해당 시스템에 설치된 클라이언트 소프트웨어에서 IdM 연결을 수락하려면 시스템 인증이 필요합니다. 클라이언트를 인증한 후 IdM 서버는 요청에 응답할 수 있습니다.

42.4. IdM 호스트 및 사용자의 등록 및 인증: 비교

IdM의 사용자와 호스트 간에는 여러 가지가 있으며, 이 중 일부는 등록 단계에서와 배포 단계 중 인증과 관련된 일부 항목을 확인할 수 있습니다.

  • 등록 단계(사용자 및 호스트 등록):

    • 관리자는 사용자 또는 호스트 모두에 대해 IdM에 실제로 참여하기 전에 사용자 및 호스트에 대해 LDAP 항목을 생성할 수 있습니다. stage 사용자의 경우 명령은 ipa stageuser-add 입니다. 호스트에 대해 명령은 ipa host-add 입니다.
    • 키 테이블 또는 일부 익스텐트와 유사한 대칭 키인 keytab을 포함하는 파일은 호스트에서 ipa-client-install 명령 실행 중에 생성됩니다. 그러면 호스트가 IdM 영역에 결합됩니다. 논리적으로는 계정을 활성화할 때 암호를 생성해야 하므로 IdM 영역에 가입해야 합니다.
    • 사용자 password는 사용자의 기본 인증 방법이지만 keytab은 호스트의 기본 인증 방법입니다. 키탭은 호스트의 파일에 저장됩니다.
    Expand
    표 42.1. 사용자 및 호스트 등록
    동작사용자호스트

    사전 등록

    $ ipa stageuser-add user_name [--password]

    $ ipa host-add host_name [--random]

    계정 활성화

    $ ipa stageuser-activate user_name

    $ IPA-client install [--password] (호스트 자체에서 실행해야합니다)

  • 배포 단계(사용자 및 호스트 세션 인증):

    • 사용자가 새 세션을 시작하면 사용자는 암호를 사용하여 인증합니다. 마찬가지로, 콘솔이 켜질 때마다 호스트는 해당 키탭 파일을 표시하여 인증합니다. SSSD(System Security Services Daemon)는 이 프로세스를 백그라운드에서 관리합니다.
    • 인증에 성공하면 사용자 또는 호스트에서 티켓(TGT)을 부여하는 Kerberos 티켓을 가져옵니다.
    • 그런 다음 TGT를 사용하여 특정 서비스의 특정 티켓을 받습니다.
    Expand
    표 42.2. 사용자 및 호스트 세션 인증
     사용자호스트

    기본 인증 수단

    암호

    키탭

    세션 시작 (일반 사용자)

    $ kinit user_name

    [호스트의 전환]

    인증에 성공한 결과

    특정 서비스에 대한 액세스를 얻는 데 사용할 TGT

    특정 서비스에 대한 액세스를 얻는 데 사용할 TGT

TGT 및 기타 Kerberos 티켓은 서버에서 정의한 Kerberos 서비스 및 정책의 일부로 생성됩니다. Kerberos 티켓을 처음 부여하고, Kerberos 자격 증명을 갱신하며, Kerberos 세션 삭제도 IdM 서비스에 의해 자동으로 처리됩니다.

IdM 호스트의 대체 인증 옵션

keytab 외에도 IdM은 두 가지 유형의 시스템 인증을 지원합니다.

  • SSH 키. 호스트의 SSH 공개 키가 생성되어 호스트 항목에 업로드됩니다. 여기에서 SSSD(시스템 보안 서비스 데몬)는 IdM을 ID 프로바이더로 사용하며 OpenSSH 및 기타 서비스와 함께 작업하여 IdM에 있는 공용 키를 참조할 수 있습니다.
  • 시스템 인증서. 이 경우 시스템은 IdM 서버의 인증 기관에서 발급한 SSL 인증서를 사용한 다음 IdM의 디렉터리 서버에 저장됩니다. 그러면 서버에 인증할 때 인증서가 존재하도록 시스템으로 전송됩니다. 클라이언트에서 인증서는 certmonger 라는 서비스에서 관리합니다.

42.5. 호스트 작업

호스트 등록 및 활성화와 관련된 가장 일반적인 작업, 사전 요구 사항, 컨텍스트 및 이러한 작업 수행의 결과는 다음 섹션에 요약되어 있습니다.

Expand
표 42.3. 호스트 운영 파트 1
동작작업의 전제 조건은 무엇입니까?명령을 실행하는 것은 언제 적합합니까?시스템 관리자가 작업을 어떻게 수행합니까? 실행 중인 명령은 무엇입니까?

고객 등록

Identity Management 설치에서 Identity Management 설치 시스템 준비를 참조하십시오.

호스트가 IdM 영역에 가입하려는 경우.

IdM 도메인에서 클라이언트로 시스템을 등록하는 작업은 2부로 구성된 프로세스입니다. ipa host-add 명령이 실행되는 경우 클라이언트에 대한 호스트 항목이 생성되고(389 Directory Server 인스턴스에 저장되고) 클라이언트를 프로비저닝하기 위해 keytab이 생성됩니다. 두 부분 모두 ipa-client-install 명령으로 자동으로 수행됩니다. 이러한 단계를 별도로 수행할 수도 있습니다. 이를 통해 관리자는 실제로 클라이언트를 구성하기 전에 시스템과 IdM을 준비할 수 있습니다. 따라서 대규모 배포를 비롯한 보다 유연한 설정 시나리오가 가능합니다.

클라이언트 비활성화

호스트에 IdM에 항목이 있어야 합니다. 호스트에 활성 키탭이 있어야 합니다.

유지 관리를 위해 IdM 영역에서 임시로 호스트를 제거하려는 경우.

ipa host-disable host_name

클라이언트 활성화

호스트에 IdM에 항목이 있어야 합니다.

일시적으로 비활성화된 호스트를 다시 활성화하려면 다음을 수행합니다.

ipa-getkeytab

클라이언트 재등록

호스트에는 IdM에 en 항목이 있어야 합니다.

원래 호스트가 손실되었지만 동일한 호스트 이름을 가진 호스트를 설치한 경우.

ipa-client-install --keytab 또는 ipa-client-install --force-join

클라이언트 등록 해제

호스트에 IdM에 항목이 있어야 합니다.

IdM 영역에서 호스트를 영구적으로 제거하려는 경우.

ipa-client-install --uninstall

Expand
표 42.4. 호스트 작업 2부
동작관리자가 어떤 시스템에서 명령을 실행할 수 있습니까?작업이 수행되면 어떻게 됩니까? IdM에서 호스트의 기능에 대한 결과는 무엇입니까? 도입/제거된 제한 사항은 무엇입니까?

고객 등록

2단계 등록의 경우: ipa host-add 는 IdM 클라이언트에서 실행될 수 있습니다. ipa-client-install 의 두 번째 단계는 클라이언트 자체에서 실행해야 합니다.

기본적으로 인증 및 권한 부여를 위해 IdM 서버에 연결하도록 SSSD를 구성합니다. 선택적으로 Kerberos 및 LDAP를 통해 IdM 서버에서 작동하도록 PAM(Pluggable Authentication Module) 및 NSS(Name Switching Service)를 구성할 수 있습니다.

클라이언트 비활성화

IdM의 모든 시스템, 호스트 자체

호스트의 Kerberos 키와 SSL 인증서가 무효화되고 호스트에서 실행 중인 모든 서비스가 비활성화됩니다.

클라이언트 활성화

IdM의 모든 시스템. 비활성화 호스트에서 실행되는 경우 LDAP 자격 증명을 제공해야 합니다.

호스트의 Kerberos 키와 SSL 인증서가 다시 유효해지며 호스트에서 실행되는 모든 IdM 서비스가 다시 활성화됩니다.

클라이언트 재등록

다시 등록할 호스트입니다. LDAP 자격 증명을 제공해야 합니다.

호스트에 대해 새 Kerberos 키가 생성되어 이전 키가 교체됩니다.

클라이언트 등록 해제

등록 취소할 호스트입니다.

명령은 IdM을 구성 해제하고 시스템을 이전 상태로 되돌리려고 시도합니다. 이 프로세스의 일부는 IdM 서버에서 호스트 등록을 취소하는 것입니다. Unenrollment는 IdM 서버에서 키 키를 비활성화하도록 구성됩니다. /etc/krb5.keytab 의 시스템 주체(host/<fqdn>@REALM)는 IdM 서버에 인증하여 등록 취소합니다. 이 주체가 없으면 등록 취소가 실패하고 관리자가 호스트 주체(ipahost-disable <fqdn>)를 비활성화해야 합니다.

42.6. IdM LDAP의 호스트 항목

IdM(Identity Management) 호스트 항목에는 호스트에 대한 정보와 해당 호스트에 포함할 수 있는 속성에 대한 정보가 포함되어 있습니다.

LDAP 호스트 항목에는 IdM 내의 클라이언트에 대한 모든 관련 정보가 포함되어 있습니다.

  • 호스트와 관련된 서비스 항목
  • 호스트 및 서비스 주체
  • 액세스 제어 규칙
  • 물리적 위치 및 운영 체제와 같은 시스템 정보
참고

IdM 웹 UI ID호스트 탭에는 IdM LDAP에 저장된 특정 호스트에 대한 모든 정보가 표시되지 않습니다.

호스트 항목 구성 속성

호스트 항목은 실제 위치, MAC 주소, 키 및 인증서와 같이 시스템 구성 외부에 있는 호스트에 대한 정보를 포함할 수 있습니다.

이 정보는 수동으로 만드는 경우 호스트 항목을 생성할 때 설정할 수 있습니다. 또는 호스트가 도메인에 등록된 후 대부분의 이 정보를 host 항목에 추가할 수 있습니다.

Expand
표 42.5. 호스트 구성 속성
UI 필드명령줄 옵션설명

설명

--desc=description

호스트에 대한 설명입니다.

지역

--locality=locality

호스트의 지리적 위치.

위치

--location=location

호스트의 실제 위치(예: 데이터 센터 랙).

플랫폼

--platform=string

호스트 하드웨어 또는 아키텍처.

운영 체제

--os=string

호스트의 운영 체제 및 버전.

MAC 주소

--macaddress=address

호스트의 MAC 주소입니다. 이것은 다중 값 속성입니다. MAC 주소는 NIS 플러그인에서 호스트에 대한 NIS ethers 맵을 만드는 데 사용됩니다.

SSH 공개 키

--sshpubkey=string

호스트에 대한 전체 SSH 공개 키. 이것은 다중 값 속성이므로 여러 키를 설정할 수 있습니다.

주체 이름 (편집할 수 없음)

--principalname=principal

호스트의 Kerberos 주체 이름입니다. 다른 주체가 -p;에 명시적으로 설정되지 않는 한 클라이언트 설치 중에 호스트 이름이 기본값입니다. 이 설정은 명령줄 도구를 사용하여 변경할 수 있지만 UI에서는 변경할 수 없습니다.

일회성 암호 설정

--password=string

이 옵션은 대규모 등록에 사용할 수 있는 호스트의 암호를 설정합니다.

-

--random

이 옵션은 대량 등록에 사용할 임의 암호를 생성합니다.

-

--certificate=string

호스트에 대한 인증서 Blob.

-

--updatedns

이렇게 하면 IP 주소가 변경되면 호스트가 DNS 항목을 동적으로 업데이트할 수 있는지 여부를 설정합니다.

42.7. IdM CLI에서 IdM 호스트 항목 추가

CLI(명령줄 인터페이스)를 사용하여 IdM(Identity Management)에 호스트 항목을 추가하려면 다음 절차를 따르십시오.

호스트 항목은 host-add 명령을 사용하여 생성합니다. 이 명령은 IdM 디렉터리 서버에 호스트 항목을 추가합니다. CLI에 ipa help host 를 입력하여 host -add에 사용할 수 있는 전체 옵션 목록을 가져와 ipa host manpage를 참조합니다.

IdM에 호스트를 추가할 때 몇 가지 시나리오가 있습니다.

  • 가장 기본적인 경우 클라이언트 호스트 이름만 지정하여 Kerberos 영역에 클라이언트를 추가하고 IdM LDAP 서버에서 항목을 생성합니다.

    $ ipa host-add client1.example.com
    Copy to Clipboard Toggle word wrap
  • IdM 서버가 DNS를 관리하도록 구성된 경우 --ip-address 옵션을 사용하여 호스트를 DNS 리소스 레코드에 추가합니다.

    예 42.1. 정적 IP 주소를 사용하여 호스트 항목 생성

    $ ipa host-add --ip-address=192.168.166.31 client1.example.com
    Copy to Clipboard Toggle word wrap
  • 추가할 호스트에 고정 IP 주소가 없거나 클라이언트가 구성될 때 IP 주소를 알 수 없는 경우 ipa host-add 명령과 함께 --force 옵션을 사용합니다.

    예 42.2. DHCP를 사용하여 호스트 항목 생성

    $ ipa host-add --force client1.example.com
    Copy to Clipboard Toggle word wrap

    예를 들어 랩탑은 IdM 클라이언트로 사전 구성될 수 있지만 구성 시 IP 주소는 없습니다. --force 를 사용하면 기본적으로 IdM DNS 서비스에 자리 표시자 항목이 생성됩니다. DNS 서비스에서 레코드를 동적으로 업데이트하면 호스트의 현재 IP 주소가 탐지되고 해당 DNS 레코드가 업데이트됩니다.

42.8. IdM CLI에서 호스트 항목 삭제

  • host-del 명령을 사용하여 호스트 레코드를 삭제합니다. IdM 도메인에 통합된 DNS가 있는 경우 --updatedns 옵션을 사용하여 DNS에서 호스트에 대한 모든 종류의 관련 레코드를 제거합니다.

    $ ipa host-del --updatedns client1.example.com
    Copy to Clipboard Toggle word wrap

42.9. Identity Management 클라이언트 등록

이 섹션에서는 Identity Management 클라이언트를 다시 등록할 수 있는 다양한 방법에 대해 설명합니다.

42.9.1. IdM의 클라이언트 등록

다시 등록하는 동안 클라이언트는 새 Kerberos 키와 SSH 키를 생성하지만 LDAP 데이터베이스의 클라이언트 ID는 변경되지 않습니다. 다시 등록한 후 호스트에 IdM 서버와의 연결이 손실되기 전에 이전과 동일한 FQDN 을 사용하는 동일한 LDAP 오브젝트에 키 및 기타 정보가 있습니다.

중요

도메인 항목이 아직 활성 상태인 클라이언트만 다시 등록할 수 있습니다. 클라이언트를 설치 제거하거나(ipa -client-install --uninstall사용) 호스트 항목(ipa host-disable사용)을 비활성화한 경우 다시 등록할 수 없습니다.

이름을 변경한 후에는 클라이언트를 다시 등록할 수 없습니다. 이는 ID 관리에서 LDAP에서 클라이언트 항목의 키 특성이 클라이언트의 호스트 이름인 해당 FQDN 이기 때문입니다. 클라이언트의 LDAP 오브젝트가 변경되지 않은 상태로 남아 있는 클라이언트를 다시 등록하는 것과 달리, 클라이언트의 이름을 변경한 결과는 새로운 FQDN 을 사용하여 다른 LDAP 오브젝트에 키와 기타 정보가 있다는 것입니다. 따라서 클라이언트 이름을 바꾸는 유일한 방법은 IdM에서 호스트를 제거하고 호스트의 호스트 이름을 변경한 후 새 이름으로 IdM 클라이언트로 설치하는 것입니다. 클라이언트 이름을 변경하는 방법에 대한 자세한 내용은 ID 관리 클라이언트 시스템 Renaming Identity Management 클라이언트 시스템을 참조하십시오.

클라이언트를 다시 등록하는 동안 발생하는 사항

다시 등록하는 동안 ID 관리:

  • 원래 호스트 인증서 취소
  • 새 SSH 키 생성
  • 새 키탭 생성

42.9.2. 사용자 인증 정보를 사용하여 클라이언트 재등록: 대화형 등록

권한 있는 사용자의 자격 증명을 사용하여 ID 관리 클라이언트를 대화식으로 다시 등록하려면 다음 절차를 따르십시오.

  1. 동일한 호스트 이름으로 클라이언트 시스템을 다시 생성합니다.
  2. 클라이언트 시스템에서 ipa-client-install --force-join 명령을 실행합니다.

    # ipa-client-install --force-join
    Copy to Clipboard Toggle word wrap
  3. 이 스크립트는 클라이언트를 다시 등록하는 데 ID를 사용하는 사용자를 묻습니다. 예를 들어 Enrollment Administrator 역할이 있는 hostadmin 사용자는 다음과 같습니다.

    User authorized to enroll computers: hostadmin
    Password for hostadmin@EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap

사전 요구 사항

  • 원래 클라이언트 키탭 파일을 백업합니다(예: /tmp 또는 /root 디렉토리).

절차

클라이언트 시스템의 keytab을 사용하여 IdM(Identity Management) 클라이언트를 비대화형으로 다시 등록하려면 다음 절차를 따르십시오. 예를 들어 클라이언트 keytab을 사용하여 다시 등록하는 것은 자동화된 설치에 적합합니다.

  1. 동일한 호스트 이름으로 클라이언트 시스템을 다시 생성합니다.
  2. 백업 위치의 keytab 파일을 다시 생성된 클라이언트 시스템의 /etc/ 디렉토리로 복사합니다.
  3. ipa-client-install 유틸리티를 사용하여 클라이언트를 다시 등록하고 --keytab 옵션으로 keytab 위치를 지정합니다.

    # ipa-client-install --keytab /etc/krb5.keytab
    Copy to Clipboard Toggle word wrap
    참고

    keytab 옵션에 지정된 key tab 은 인증을 시작하여 등록을 시작할 때만 사용됩니다. 다시 등록하는 동안 IdM은 클라이언트에 대한 새 키탭을 생성합니다.

42.9.4. 설치 후 Identity Management 클라이언트 테스트

명령줄 인터페이스는 ipa-client-install에 성공했지만 자체 테스트를 수행할 수도 있음을 알려줍니다.

ID 관리 클라이언트가 서버에 정의된 사용자에 대한 정보를 가져올 수 있는지 테스트하려면 서버에 정의된 사용자를 확인할 수 있는지 확인합니다. 예를 들어 기본 admin 사용자를 확인하려면 다음을 수행합니다.

[user@client1 ~]$ id admin
uid=1254400000(admin) gid=1254400000(admins) groups=1254400000(admins)
Copy to Clipboard Toggle word wrap

인증이 올바르게 작동하는지 테스트하려면 su - 를 다른 IdM 사용자로 실행하십시오.

[user@client1 ~]$ su - idm_user
Last login: Thu Oct 18 18:39:11 CEST 2018 from 192.168.122.1 on pts/0
[idm_user@client1 ~]$
Copy to Clipboard Toggle word wrap

42.10. Identity Management 클라이언트 시스템 이름 변경

다음 섹션에서는 ID 관리 클라이언트 시스템의 호스트 이름을 변경하는 방법을 설명합니다.

주의

클라이언트 이름 바꾸기는 수동 절차입니다. 호스트 이름을 변경할 필요가 없는 한 수행하지 마십시오.

Identity Management 클라이언트의 이름 변경에는 다음이 포함됩니다.

  1. 호스트 준비. 자세한 내용은 변경에 필요한 IdM 클라이언트 준비를 참조하십시오.
  2. 호스트에서 IdM 클라이언트 설치 제거. 자세한 내용은 Identity Management 클라이언트 설치 제거를 참조하십시오.
  3. 호스트 이름 바꾸기. 자세한 내용은 호스트 시스템 Renaming을 참조하십시오.
  4. 호스트에 새 이름으로 IdM 클라이언트 설치. 자세한 내용은 Identity Management 설치에서 Identity Management 클라이언트 설치를 참조하십시오.
  5. IdM 클라이언트 설치 후 호스트 구성. 자세한 내용은 서비스 추가, 인증서 재 생성 및 호스트 그룹 다시 추가를 참조하십시오.

42.10.1. 변경 작업을 위해 IdM 클라이언트 준비

현재 클라이언트를 제거하기 전에 클라이언트의 특정 설정을 기록해 두십시오. 새 호스트 이름으로 시스템을 다시 등록한 후 이 구성을 적용합니다.

  • 시스템에서 실행 중인 서비스를 확인합니다.

    • ipa service-find 명령을 사용하고 출력에서 인증서가 있는 서비스를 식별합니다.

      $ ipa service-find old-client-name.example.com
      Copy to Clipboard Toggle word wrap
    • 또한 각 호스트에는 ipa service-find 출력에 표시되지 않는 기본 호스트 서비스가 있습니다. host 서비스의 서비스 주체(host principal라고도 함)는 host /old-client-name.example.com 입니다.
  • ipa service-find old-client-name.example.com 에서 표시되는 모든 서비스 주체에 대해 old-client-name.example.com 시스템에서 해당 키 탭의 위치를 확인합니다.

    # find / -name "*.keytab"
    Copy to Clipboard Toggle word wrap

    클라이언트 시스템의 각 서비스에는 ldap/old-client-name.example.com@EXAMPLE.COM 과 같은 service_name/host_name@REALM 형식의 Kerberos 주체가 있습니다.

  • 시스템이 속한 모든 호스트 그룹을 식별합니다.

    # ipa hostgroup-find old-client-name.example.com
    Copy to Clipboard Toggle word wrap

42.10.2. Identity Management 클라이언트 설치 제거

클라이언트를 설치 제거하면 ID 관리 도메인에서 클라이언트가 제거되며 SSSD(System Security Services Daemon)와 같은 시스템 서비스의 모든 특정 ID 관리 구성도 제거됩니다. 이렇게 하면 클라이언트 시스템의 이전 구성이 복원됩니다.

절차

  1. ipa-client-install --uninstall 명령을 실행합니다.

    [root@client]# ipa-client-install --uninstall
    Copy to Clipboard Toggle word wrap
  2. 서버에서 클라이언트 호스트의 DNS 항목을 수동으로 제거합니다.

    [root@server]# ipa dnsrecord-del
    Record name: old-client-client
    Zone name: idm.example.com
    No option to delete specific record provided.
    Delete all? Yes/No (default No): yes
    ------------------------
    Deleted record "old-client-name"
    Copy to Clipboard Toggle word wrap
  3. /etc/krb5.keytab 이외의 식별된 각 키탭에 대해 이전 주체를 제거하십시오.

    [root@client ~]# ipa-rmkeytab -k /path/to/keytab -r EXAMPLE.COM
    Copy to Clipboard Toggle word wrap
  4. IdM 서버에서 호스트 항목을 제거합니다. 이렇게 하면 모든 서비스가 제거되고 해당 호스트에 대해 발급된 모든 인증서가 취소됩니다.

    [root@server ~]# ipa host-del client.example.com
    Copy to Clipboard Toggle word wrap

42.10.3. 호스트 시스템 이름 변경

필요에 따라 시스템의 이름을 변경합니다. 예를 들면 다음과 같습니다.

[root@client]# hostnamectl set-hostname new-client-name.example.com
Copy to Clipboard Toggle word wrap

이제 새 호스트 이름을 사용하여 Identity Management 클라이언트를 Identity Management 도메인에 다시 설치할 수 있습니다.

42.10.4. 서비스 다시 추가, 인증서 재생, 호스트 그룹 다시 추가

절차

  1. IdM(Identity Management) 서버에서 IdM 클라이언트의 이름 변경을 위해 식별된 모든 서비스에 대해 새 키 탭을 추가합니다.

    [root@server ~]# ipa service-add service_name/new-client-name
    Copy to Clipboard Toggle word wrap
  2. 교체를 위해 IdM 클라이언트 준비에 할당된 인증서가 할당된 서비스에 대한 인증서를 생성합니다. 다음을 수행할 수 있습니다.

    • IdM 관리 도구 사용
    • certmonger 유틸리티 사용
  3. 교체를 위해 IdM 클라이언트 준비에서 식별된 호스트 그룹에 클라이언트를 다시 추가합니다.

42.11. 호스트 항목 비활성화 및 재활성화

이 섹션에서는 IdM(Identity Management)에서 호스트를 비활성화하고 다시 활성화하는 방법에 대해 설명합니다.

42.11.1. 호스트 비활성화

IdM에서 호스트 항목을 비활성화하려면 다음 절차를 완료합니다.

도메인 서비스, 호스트 및 사용자가 활성 호스트에 액세스할 수 있습니다. 유지 관리상의 이유로 활성 호스트를 일시적으로 제거해야 하는 상황이 있을 수 있습니다. 예를 들면 다음과 같습니다. 이러한 상황에서 호스트를 삭제하는 것은 호스트 항목 및 연결된 모든 구성을 영구적으로 제거하므로 바람직하지 않습니다. 대신 호스트를 비활성화하는 옵션을 선택합니다.

호스트를 비활성화하면 도메인 사용자가 도메인에서 영구적으로 제거하지 않고 액세스할 수 없습니다.

절차

  • host-disable 명령을 사용하여 호스트를 비활성화합니다. 호스트를 비활성화하면 현재 활성 키탭이 종료됩니다. 예를 들면 다음과 같습니다.

    $ kinit admin
    $ ipa host-disable client.example.com
    Copy to Clipboard Toggle word wrap

호스트를 비활성화하면 모든 IdM 사용자, 호스트 및 서비스에서 호스트를 사용할 수 없게 됩니다.

중요

호스트 항목을 비활성화하면 해당 호스트가 비활성화될 뿐만 아니라. 해당 호스트에서 구성된 모든 서비스도 비활성화합니다.

42.11.2. 호스트 재활성화

비활성화된 IdM 호스트를 다시 활성화하려면 다음 절차를 따르십시오.

호스트를 비활성화하면 활성 키탭이 종료되어 구성 항목을 사용하지 않고 IdM 도메인에서 호스트가 제거되었습니다.

절차

  • 호스트를 다시 활성화하려면 ipa-getkeytab 명령을 사용하여 다음을 추가합니다.

    • 키탭을 요청할 IdM 서버를 지정하는 -s 옵션
    • 주체 이름을 지정하는 -p 옵션
    • keytab을 저장할 파일을 지정하는 -k 옵션.

예를 들어 client.example.com에 대해 server.example.com 에서 새 호스트 키탭을 요청하고 /etc/krb5.keytab 파일에 키탭을 저장하려면 다음을 수행합니다.

$  ipa-getkeytab -s server.example.com -p host/client.example.com -k /etc/krb5.keytab -D "cn=directory manager" -w password
Copy to Clipboard Toggle word wrap
참고

관리자 자격 증명을 사용하여 -D "uid=admin,cn=users,cn=accounts,dc=example,dc=com" 을 지정할 수도 있습니다. 자격 증명은 호스트에 대한 키탭을 만들 수 있는 사용자에게 대응하는 것이 중요합니다.

ipa-getkeytab 명령이 활성 IdM 클라이언트 또는 서버에서 실행되면 사용자에게 TGT를 사용하여 얻은 경우 LDAP 자격 증명(예: kinit admin ) 없이 실행할 수 있습니다. 비활성화된 호스트에서 직접 명령을 실행하려면 IdM 서버에 인증할 LDAP 자격 증명을 제공합니다.

43장. IdM 웹 UI에서 호스트 항목 추가

이 장에서는 IdM(Identity Management)의 호스트와 IdM 웹 UI에 호스트 항목을 추가하는 작업을 소개합니다.

43.1. IdM의 호스트

IdM(Identity Management)은 이러한 ID를 관리합니다.

  • 사용자
  • 서비스
  • 호스트

호스트는 시스템을 나타냅니다. IdM ID로 호스트에 IdM LDAP에 항목이 있으며, 이는 IdM 서버의 디렉터리 서버 인스턴스 389입니다.

IdM LDAP의 host 항목은 다른 호스트와 도메인 내의 서비스 간 관계를 설정하는 데 사용됩니다. 이러한 관계는 도메인 내의 호스트에 권한 부여 및 제어 위임 의 일부입니다. 호스트 기반 액세스 제어(HBAC) 규칙에서 모든 호스트 를 사용할 수 있습니다.

IdM 도메인은 공통 ID 정보, 공통 정책 및 공유 서비스가 포함된 시스템 간 공통성을 설정합니다. 도메인 기능에 속한 시스템은 도메인의 클라이언트에 속하므로, 도메인에서 제공하는 서비스를 사용합니다. IdM 도메인은 시스템 전용 세 가지 기본 서비스를 제공합니다.

  • DNS
  • Kerberos
  • 인증서 관리

IdM의 호스트는 실행 중인 서비스와 긴밀하게 연결됩니다.

  • 서비스 항목은 호스트와 연결됩니다.
  • 호스트는 호스트와 서비스 Kerberos 사용자를 모두 저장합니다.

43.2. 호스트 등록

이 섹션에서는 IdM 클라이언트로 호스트 등록 및 등록 중 및 등록 후에 발생하는 사항에 대해 설명합니다. 이 섹션에서는 IdM 호스트 및 IdM 사용자의 등록을 비교합니다. 또한 이 섹션에서는 호스트에서 사용할 수 있는 대체 유형의 인증에 대해 간단히 설명합니다.

호스트 등록은 다음으로 구성됩니다.

  • IdM LDAP에서 호스트 항목 생성: IdM CLI에서 ipa host-add 명령 또는 동등한 IdM 웹 UI 작업을 사용할 수 있습니다.
  • 호스트에서 IdM 서비스 구성(예: SSSD(시스템 보안 서비스 데몬), Kerberos, certmonger) 호스트를 IdM 도메인에 연결합니다.

두 작업은 별도로 또는 함께 수행할 수 있습니다.

개별적으로 수행되는 경우 두 가지 작업을 서로 다른 수준의 권한을 가진 두 사용자 간에 나눌 수 있습니다. 이는 대량 배포에 유용합니다.

ipa-client-install 명령은 두 작업을 함께 수행할 수 있습니다. 해당 항목이 아직 없는 경우 명령은 IdM LDAP에 호스트 항목을 생성하고 호스트에 대한 Kerberos 및 SSSD 서비스를 둘 다 구성합니다. 이 명령은 IdM 도메인에 호스트를 가져와 연결할 IdM 서버를 식별할 수 있습니다. 호스트가 IdM에서 관리하는 DNS 영역에 속하는 경우 ipa-client-install 은 호스트에 대한 DNS 레코드도 추가합니다. 명령은 클라이언트에서 실행해야 합니다.

43.3. 호스트 등록에 필요한 사용자 권한

호스트 등록 작업을 수행하려면 권한이 없는 사용자가 원하지 않는 시스템을 IdM 도메인에 추가하지 못하도록 인증해야 합니다. 필요한 권한은 다음과 같은 여러 요인에 따라 다릅니다.

  • ipa-client-install실행과 별도로 호스트 항목을 생성하는 경우
  • 등록에 OTP(일회용 암호)를 사용하는 경우

IdM LDAP에서 수동으로 호스트 항목을 생성하는 데 필요한 사용자 권한

ipa host-add CLI 명령 또는 IdM 웹 UI를 사용하여 IdM LDAP에서 호스트 항목을 생성하는 데 필요한 사용자 권한은 호스트 관리자입니다. 호스트 관리자 권한은 IT 전문가 역할을 통해 얻을 수 있습니다.

클라이언트를 IdM 도메인에 가입하는 사용자 권한

호스트는 ipa-client-install 명령을 실행하는 동안 IdM 클라이언트로 구성됩니다. ipa-client-install 명령을 실행하는 데 필요한 인증 정보의 수준은 다음 중 본인이 찾은 시나리오에 따라 다릅니다.

등록 후 IdM 호스트는 모든 새 세션을 인증하여 IdM 리소스에 액세스할 수 있도록 합니다. IdM 서버가 시스템을 신뢰하고 해당 시스템에 설치된 클라이언트 소프트웨어에서 IdM 연결을 수락하려면 시스템 인증이 필요합니다. 클라이언트를 인증한 후 IdM 서버는 요청에 응답할 수 있습니다.

43.4. IdM 호스트 및 사용자의 등록 및 인증: 비교

IdM의 사용자와 호스트 간에는 여러 가지가 있으며, 이 중 일부는 등록 단계에서와 배포 단계 중 인증과 관련된 일부 항목을 확인할 수 있습니다.

  • 등록 단계(사용자 및 호스트 등록):

    • 관리자는 사용자 또는 호스트 모두에 대해 IdM에 실제로 참여하기 전에 사용자 및 호스트에 대해 LDAP 항목을 생성할 수 있습니다. stage 사용자의 경우 명령은 ipa stageuser-add 입니다. 호스트에 대해 명령은 ipa host-add 입니다.
    • 키 테이블 또는 일부 익스텐트와 유사한 대칭 키인 keytab을 포함하는 파일은 호스트에서 ipa-client-install 명령 실행 중에 생성됩니다. 그러면 호스트가 IdM 영역에 결합됩니다. 논리적으로는 계정을 활성화할 때 암호를 생성해야 하므로 IdM 영역에 가입해야 합니다.
    • 사용자 password는 사용자의 기본 인증 방법이지만 keytab은 호스트의 기본 인증 방법입니다. 키탭은 호스트의 파일에 저장됩니다.
    Expand
    표 43.1. 사용자 및 호스트 등록
    동작사용자호스트

    사전 등록

    $ ipa stageuser-add user_name [--password]

    $ ipa host-add host_name [--random]

    계정 활성화

    $ ipa stageuser-activate user_name

    $ IPA-client install [--password] (호스트 자체에서 실행해야합니다)

  • 배포 단계(사용자 및 호스트 세션 인증):

    • 사용자가 새 세션을 시작하면 사용자는 암호를 사용하여 인증합니다. 마찬가지로, 콘솔이 켜질 때마다 호스트는 해당 키탭 파일을 표시하여 인증합니다. SSSD(System Security Services Daemon)는 이 프로세스를 백그라운드에서 관리합니다.
    • 인증에 성공하면 사용자 또는 호스트에서 티켓(TGT)을 부여하는 Kerberos 티켓을 가져옵니다.
    • 그런 다음 TGT를 사용하여 특정 서비스의 특정 티켓을 받습니다.
    Expand
    표 43.2. 사용자 및 호스트 세션 인증
     사용자호스트

    기본 인증 수단

    암호

    키탭

    세션 시작 (일반 사용자)

    $ kinit user_name

    [호스트의 전환]

    인증에 성공한 결과

    특정 서비스에 대한 액세스를 얻는 데 사용할 TGT

    특정 서비스에 대한 액세스를 얻는 데 사용할 TGT

TGT 및 기타 Kerberos 티켓은 서버에서 정의한 Kerberos 서비스 및 정책의 일부로 생성됩니다. Kerberos 티켓을 처음 부여하고, Kerberos 자격 증명을 갱신하며, Kerberos 세션 삭제도 IdM 서비스에 의해 자동으로 처리됩니다.

IdM 호스트의 대체 인증 옵션

keytab 외에도 IdM은 두 가지 유형의 시스템 인증을 지원합니다.

  • SSH 키. 호스트의 SSH 공개 키가 생성되어 호스트 항목에 업로드됩니다. 여기에서 SSSD(시스템 보안 서비스 데몬)는 IdM을 ID 프로바이더로 사용하며 OpenSSH 및 기타 서비스와 함께 작업하여 IdM에 있는 공용 키를 참조할 수 있습니다.
  • 시스템 인증서. 이 경우 시스템은 IdM 서버의 인증 기관에서 발급한 SSL 인증서를 사용한 다음 IdM의 디렉터리 서버에 저장됩니다. 그러면 서버에 인증할 때 인증서가 존재하도록 시스템으로 전송됩니다. 클라이언트에서 인증서는 certmonger 라는 서비스에서 관리합니다.

43.5. IdM LDAP의 호스트 항목

IdM(Identity Management) 호스트 항목에는 호스트에 대한 정보와 해당 호스트에 포함할 수 있는 속성에 대한 정보가 포함되어 있습니다.

LDAP 호스트 항목에는 IdM 내의 클라이언트에 대한 모든 관련 정보가 포함되어 있습니다.

  • 호스트와 관련된 서비스 항목
  • 호스트 및 서비스 주체
  • 액세스 제어 규칙
  • 물리적 위치 및 운영 체제와 같은 시스템 정보
참고

IdM 웹 UI ID호스트 탭에는 IdM LDAP에 저장된 특정 호스트에 대한 모든 정보가 표시되지 않습니다.

호스트 항목 구성 속성

호스트 항목은 실제 위치, MAC 주소, 키 및 인증서와 같이 시스템 구성 외부에 있는 호스트에 대한 정보를 포함할 수 있습니다.

이 정보는 수동으로 만드는 경우 호스트 항목을 생성할 때 설정할 수 있습니다. 또는 호스트가 도메인에 등록된 후 대부분의 이 정보를 host 항목에 추가할 수 있습니다.

Expand
표 43.3. 호스트 구성 속성
UI 필드명령줄 옵션설명

설명

--desc=description

호스트에 대한 설명입니다.

지역

--locality=locality

호스트의 지리적 위치.

위치

--location=location

호스트의 실제 위치(예: 데이터 센터 랙).

플랫폼

--platform=string

호스트 하드웨어 또는 아키텍처.

운영 체제

--os=string

호스트의 운영 체제 및 버전.

MAC 주소

--macaddress=address

호스트의 MAC 주소입니다. 이것은 다중 값 속성입니다. MAC 주소는 NIS 플러그인에서 호스트에 대한 NIS ethers 맵을 만드는 데 사용됩니다.

SSH 공개 키

--sshpubkey=string

호스트에 대한 전체 SSH 공개 키. 이것은 다중 값 속성이므로 여러 키를 설정할 수 있습니다.

주체 이름 (편집할 수 없음)

--principalname=principal

호스트의 Kerberos 주체 이름입니다. 다른 주체가 -p;에 명시적으로 설정되지 않는 한 클라이언트 설치 중에 호스트 이름이 기본값입니다. 이 설정은 명령줄 도구를 사용하여 변경할 수 있지만 UI에서는 변경할 수 없습니다.

일회성 암호 설정

--password=string

이 옵션은 대규모 등록에 사용할 수 있는 호스트의 암호를 설정합니다.

-

--random

이 옵션은 대량 등록에 사용할 임의 암호를 생성합니다.

-

--certificate=string

호스트에 대한 인증서 Blob.

-

--updatedns

이렇게 하면 IP 주소가 변경되면 호스트가 DNS 항목을 동적으로 업데이트할 수 있는지 여부를 설정합니다.

43.6. 웹 UI에서 호스트 항목 추가

  1. Identity(ID ) 탭을 열고 Hosts(호스트) 하위 탭을 선택합니다.
  2. hosts 목록 상단에 있는 Add(추가 )를 클릭합니다.

    그림 43.1. 호스트 항목 추가

  3. 시스템 이름을 입력하고 드롭다운 목록에서 구성된 영역에서 도메인을 선택합니다. 호스트에 이미 정적 IP 주소가 할당된 경우 DNS 항목이 완전히 생성되도록 host 항목으로 해당 주소를 포함합니다.

    Class 필드는 현재 특별한 용도가 없습니다.

    그림 43.2. 호스트 마법사 추가

    DNS 영역은 IdM에서 생성할 수 있습니다. IdM 서버가 DNS 서버를 관리하지 않으면 일반 텍스트 필드와 같이 메뉴 영역에 수동으로 영역을 입력할 수 있습니다.

    참고

    DNS를 통해 호스트를 확인할 수 있는지 여부를 건너뛰려면 Force (강제) 확인란을 선택합니다.

  4. Add and Edit(추가 및 편집 ) 버튼을 클릭하여 확장된 항목 페이지로 바로 이동하고 추가 속성 정보를 입력합니다. 호스트 하드웨어 및 물리적 위치에 대한 정보는 host 항목에 포함할 수 있습니다.

    그림 43.3. 항목 페이지 확장

44장. Ansible 플레이북을 사용하여 호스트 관리

Ansible은 시스템을 구성하고, 소프트웨어를 배포하고, 롤링 업데이트를 수행하는 데 사용되는 자동화 도구입니다. Ansible에는 IdM(Identity Management) 지원이 포함되어 있으며 Ansible 모듈을 사용하여 호스트 관리를 자동화할 수 있습니다.

Ansible 플레이북을 사용하여 호스트 및 호스트 항목을 관리할 때 다음 개념과 작업이 수행됩니다.

Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 항목이 있는지 확인하려면 다음 절차를 따르십시오. 호스트 항목은 FQDN(정규화 된 도메인 이름 )으로만 정의합니다.

다음 조건 중 하나가 적용되는 경우 호스트의 FQDN 이름을 지정하는 것만으로 충분합니다.

  • IdM 서버는 DNS를 관리하도록 구성되어 있지 않습니다.
  • 호스트에 고정 IP 주소가 없거나 호스트가 구성된 시점에는 IP 주소를 알 수 없습니다. FQDN 에서만 정의한 호스트를 추가하면 기본적으로 IdM DNS 서비스에 자리 표시자 항목이 생성됩니다. 예를 들어 랩탑은 IdM 클라이언트로 사전 구성될 수 있지만 구성 시 IP 주소는 없습니다. DNS 서비스에서 레코드를 동적으로 업데이트하면 호스트의 현재 IP 주소가 탐지되고 해당 DNS 레코드가 업데이트됩니다.
참고

Ansible이 없으면 ipa host-add 명령을 사용하여 호스트 항목이 IdM에 생성됩니다. IdM에 호스트를 추가한 결과는 IdM에 있는 호스트의 상태입니다. Ansible은 멱등에 의존하므로 Ansible을 사용하여 IdM에 호스트를 추가하려면 호스트 상태를 present: state: present 로 정의하는 플레이북을 생성해야 합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 확인할 IdM에 있는 호스트의 FQDN 으로 Ansible 플레이북 파일을 생성합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/host/add-host.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Host present
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Host host01.idm.example.com present
        ipahost:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: host01.idm.example.com
          state: present
          force: yes
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
    Copy to Clipboard Toggle word wrap
참고

이 절차에서는 IdM LDAP 서버에 호스트 항목이 생성되지만 호스트를 IdM Kerberos 영역에 등록하지 않습니다. 따라서 호스트를 IdM 클라이언트로 배포해야 합니다. 자세한 내용은 Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치를 참조하십시오.

검증 단계

  1. IdM 서버에 admin으로 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    Copy to Clipboard Toggle word wrap
  2. ipa host-show 명령을 입력하고 호스트 이름을 지정합니다.

    $ ipa host-show host01.idm.example.com
      Host name: host01.idm.example.com
      Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM
      Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM
      Password: False
      Keytab: False
      Managed by: host01.idm.example.com
    Copy to Clipboard Toggle word wrap

출력은 host01.idm.example.com 이 IdM에 있는지 확인합니다.

Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 항목이 있는지 확인하려면 다음 절차를 따르십시오. 호스트 항목은 FQDN(정규화 된 도메인 이름 ) 및 해당 IP 주소로 정의합니다.

참고

Ansible이 없으면 ipa host-add 명령을 사용하여 호스트 항목이 IdM에 생성됩니다. IdM에 호스트를 추가한 결과는 IdM에 있는 호스트의 상태입니다. Ansible은 멱등에 의존하므로 Ansible을 사용하여 IdM에 호스트를 추가하려면 호스트 상태를 present: state: present 로 정의하는 플레이북을 생성해야 합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 확인하고자 하는 IdM에 있는 호스트의 정규화된 도메인 이름 (FQDN)을 사용하여 Ansible 플레이북 파일을 생성합니다. 또한 IdM 서버가 DNS를 관리하고 호스트의 IP 주소를 알고 있는 경우 ip_address 매개 변수의 값을 지정합니다. 호스트가 DNS 리소스 레코드에 있으려면 IP 주소가 필요합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/host/host-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다. 다음과 같은 기타 추가 정보를 포함할 수도 있습니다.

    ---
    - name: Host present
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure host01.idm.example.com is present
        ipahost:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: host01.idm.example.com
          description: Example host
          ip_address: 192.168.0.123
          locality: Lab
          ns_host_location: Lab
          ns_os_version: CentOS 7
          ns_hardware_platform: Lenovo T61
          mac_address:
          - "08:00:27:E3:B1:2D"
          - "52:54:00:BD:97:1E"
          state: present
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
    Copy to Clipboard Toggle word wrap
참고

이 절차에서는 IdM LDAP 서버에 호스트 항목이 생성되지만 호스트를 IdM Kerberos 영역에 등록하지 않습니다. 따라서 호스트를 IdM 클라이언트로 배포해야 합니다. 자세한 내용은 Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치를 참조하십시오.

검증 단계

  1. IdM 서버에 admin으로 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    Copy to Clipboard Toggle word wrap
  2. ipa host-show 명령을 입력하고 호스트 이름을 지정합니다.

    $ ipa host-show host01.idm.example.com
      Host name: host01.idm.example.com
      Description: Example host
      Locality: Lab
      Location: Lab
      Platform: Lenovo T61
      Operating system: CentOS 7
      Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM
      Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM
      MAC address: 08:00:27:E3:B1:2D, 52:54:00:BD:97:1E
      Password: False
      Keytab: False
      Managed by: host01.idm.example.com
    Copy to Clipboard Toggle word wrap

출력은 IdM에 host01.idm.example.com 이 있는지 확인합니다.

ipahost 모듈을 사용하면 시스템 관리자가 하나의 Ansible 작업만 사용하여 IdM에 여러 호스트 항목이 있는지 확인할 수 있습니다. FQDN( 정규화된 도메인 이름 )에서만 정의한 여러 호스트 항목이 있는지 확인하려면 다음 절차를 따르십시오. Ansible 플레이북을 실행하면 호스트에 대한 임의 암호가 생성됩니다.

참고

Ansible이 없으면 ipa host-add 명령을 사용하여 호스트 항목이 IdM에 생성됩니다. IdM에 호스트를 추가한 결과는 IdM에 있는 호스트의 상태입니다. Ansible은 멱등에 의존하므로 Ansible을 사용하여 IdM에 호스트를 추가하려면 호스트 상태를 present: state: present 로 정의하는 플레이북을 생성해야 합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 확인하려는 IdM에 있는 호스트의 정규화된 도메인 이름 (FQDN)을 사용하여 Ansible 플레이북 파일을 생성합니다. 호스트가 이미 IdM에 있고 update_password가 on_ create 로 제한된 경우에도 Ansible 플레이북에서 각 호스트의 임의 암호를 생성하도록 하려면 random: yesforce: yes 옵션을 추가합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/README-host.md Markdown 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Ensure hosts with random password
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Hosts host01.idm.example.com and host02.idm.example.com present with random passwords
        ipahost:
          ipaadmin_password: "{{ ipaadmin_password }}"
          hosts:
          - name: host01.idm.example.com
            random: yes
            force: yes
          - name: host02.idm.example.com
            random: yes
            force: yes
        register: ipahost
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-are-present.yml
    [...]
    TASK [Hosts host01.idm.example.com and host02.idm.example.com present with random passwords]
    changed: [r8server.idm.example.com] => {"changed": true, "host": {"host01.idm.example.com": {"randompassword": "0HoIRvjUdH0Ycbf6uYdWTxH"}, "host02.idm.example.com": {"randompassword": "5VdLgrf3wvojmACdHC3uA3s"}}}
    Copy to Clipboard Toggle word wrap
참고

검증 단계

  1. IdM 서버에 admin으로 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    Copy to Clipboard Toggle word wrap
  2. ipa host-show 명령을 입력하고 호스트 중 하나의 이름을 지정합니다.

    $ ipa host-show host01.idm.example.com
      Host name: host01.idm.example.com
      Password: True
      Keytab: False
      Managed by: host01.idm.example.com
    Copy to Clipboard Toggle word wrap

출력은 임의의 암호가 있는 IdM에 host01.idm.example.com 이 있는지 확인합니다.

Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 항목이 있는지 확인하려면 다음 절차를 따르십시오. 호스트 항목은 FQDN(정규화 된 도메인 이름 ) 및 여러 IP 주소로 정의합니다.

참고

ipa 호스트 유틸리티와 달리 Ansible ipahost 모듈은 호스트에 대해 여러 개의 IPv4 및 IPv6 주소가 있는지 확인할 수 있습니다. ipa host-mod 명령은 IP 주소를 처리할 수 없습니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. Ansible 플레이북 파일을 생성합니다. 확인하려는 IdM 있는 호스트의 정규화된 도메인 이름 (FQDN)을 ipahost 변수의 이름으로 지정합니다. ip_address 구문을 사용하여 별도의 행에서 여러 IPv4 및 IPv6 ip_address 값을 각각 지정합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/host/host-member-ipaddresses-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다. 다음과 같은 추가 정보를 포함할 수도 있습니다.

    ---
    - name: Host member IP addresses present
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure host101.example.com IP addresses present
        ipahost:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: host01.idm.example.com
          ip_address:
          - 192.168.0.123
          - fe80::20c:29ff:fe02:a1b3
          - 192.168.0.124
          - fe80::20c:29ff:fe02:a1b4
          force: yes
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-with-multiple-IP-addreses-is-present.yml
    Copy to Clipboard Toggle word wrap
참고

이 절차에서는 IdM LDAP 서버에 호스트 항목을 생성하지만 호스트를 IdM Kerberos 영역에 등록하지 않습니다. 따라서 호스트를 IdM 클라이언트로 배포해야 합니다. 자세한 내용은 Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치를 참조하십시오.

검증 단계

  1. IdM 서버에 admin으로 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    Copy to Clipboard Toggle word wrap
  2. ipa host-show 명령을 입력하고 호스트 이름을 지정합니다.

    $ ipa host-show host01.idm.example.com
      Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM
      Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM
      Password: False
      Keytab: False
      Managed by: host01.idm.example.com
    Copy to Clipboard Toggle word wrap

    출력은 host01.idm.example.com 이 IdM에 있는지 확인합니다.

  3. 호스트의 여러 IP 주소가 IdM DNS 레코드에 있는지 확인하려면 ipa dnsrecord-show 명령을 입력하고 다음 정보를 지정합니다.

    • IdM 도메인의 이름
    • 호스트 이름

      $ ipa dnsrecord-show idm.example.com host01
      [...]
        Record name: host01
        A record: 192.168.0.123, 192.168.0.124
        AAAA record: fe80::20c:29ff:fe02:a1b3, fe80::20c:29ff:fe02:a1b4
      Copy to Clipboard Toggle word wrap

    출력은 플레이북에 지정된 모든 IPv4 및 IPv6 주소가 host 01.idm.example.com 호스트 항목과 올바르게 연결되어 있는지 확인합니다.

44.5. Ansible 플레이북을 사용하여 IdM 호스트 항목이 없는지 확인

Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 항목이 없는지 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자 인증 정보

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 확인하려는 IdM에 없는 호스트의 정규화된 도메인 이름 (FQDN)을 사용하여 Ansible 플레이북 파일을 생성합니다. IdM 도메인에 통합된 DNS가 있는 경우 updatedns: yes 옵션을 사용하여 DNS에서 호스트의 연결된 레코드를 제거합니다.

    이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/host/delete-host.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Host absent
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Host host01.idm.example.com absent
        ipahost:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: host01.idm.example.com
          updatedns: yes
          state: absent
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-absent.yml
    Copy to Clipboard Toggle word wrap
참고

절차 결과는 다음과 같습니다.

  • IdM Kerberos 영역에 존재하지 않는 호스트.
  • 호스트 항목이 IdM LDAP 서버에 존재하지 않습니다.

클라이언트 호스트 자체에서 SSSD(System Security Services Daemon)와 같은 시스템 서비스의 특정 IdM 구성을 제거하려면 클라이언트에서 ipa-client-install --uninstall 명령을 실행해야 합니다. 자세한 내용은 IdM 클라이언트 설치 제거를 참조하십시오.

검증 단계

  1. admin으로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. host01.idm.example.com 에 대한 정보를 표시 :

    $ ipa host-show host01.idm.example.com
    ipa: ERROR: host01.idm.example.com: host not found
    Copy to Clipboard Toggle word wrap

출력은 호스트가 IdM에 없는지 확인합니다.

45장. IdM CLI를 사용하여 호스트 그룹 관리

다음 작업을 사용하여 CLI(명령줄 인터페이스)에서 호스트 그룹 및 해당 멤버를 관리하는 방법에 대해 자세히 알아보십시오.

  • 호스트 그룹 및 해당 구성원 보기
  • 호스트 그룹 생성
  • 호스트 그룹 삭제
  • 호스트 그룹 구성원 추가
  • 호스트 그룹 구성원 제거
  • 호스트 그룹 멤버 관리자 추가
  • 호스트 그룹 구성원 관리자 제거

45.1. IdM의 호스트 그룹

IdM 호스트 그룹은 중요한 관리 작업, 특히 액세스 제어에 대한 제어를 중앙 집중화하는 데 사용할 수 있습니다.

호스트 그룹의 정의

호스트 그룹은 공통 액세스 제어 규칙 및 기타 특성이 있는 IdM 호스트 집합이 포함된 엔터티입니다. 예를 들어 회사 부서, 물리적 위치 또는 액세스 제어 요구 사항을 기반으로 호스트 그룹을 정의할 수 있습니다.

IdM의 호스트 그룹에는 다음이 포함될 수 있습니다.

  • IdM 서버 및 클라이언트
  • 기타 IdM 호스트 그룹

기본적으로 생성된 호스트 그룹

기본적으로 IdM 서버는 모든 IdM 서버 호스트에 대한 호스트 그룹 ipaservers 를 생성합니다.

직접 및 간접 그룹 구성원

IdM의 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. 호스트 그룹 B가 호스트 그룹 A의 구성원이면 호스트 그룹 B의 모든 구성원이 호스트 그룹 A의 간접 구성원으로 간주됩니다.

45.2. CLI를 사용하여 IdM 호스트 그룹 보기

CLI(명령줄 인터페이스)를 사용하여 IdM 호스트 그룹을 보려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. ipa hostgroup-find 명령을 사용하여 모든 호스트 그룹을 찾습니다.

    $ ipa hostgroup-find
    -------------------
    1 hostgroup matched
    -------------------
      Host-group: ipaservers
      Description: IPA server hosts
    ----------------------------
    Number of entries returned 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

    호스트 그룹의 모든 특성을 표시하려면 --all 옵션을 추가합니다. 예를 들면 다음과 같습니다.

    $ ipa hostgroup-find --all
    -------------------
    1 hostgroup matched
    -------------------
      dn: cn=ipaservers,cn=hostgroups,cn=accounts,dc=idm,dc=local
      Host-group: ipaservers
      Description: IPA server hosts
      Member hosts: xxx.xxx.xxx.xxx
      ipauniqueid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      objectclass: top, groupOfNames, nestedGroup, ipaobject, ipahostgroup
    ----------------------------
    Number of entries returned 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

45.3. CLI를 사용하여 IdM 호스트 그룹 생성

CLI(명령줄 인터페이스)를 사용하여 IdM 호스트 그룹을 생성하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. ipa hostgroup-add 명령을 사용하여 호스트 그룹을 추가합니다.
    예를 들어 group _name이라는 IdM 호스트 그룹을 생성하고 설명을 제공하려면 다음을 수행합니다.

    $ ipa hostgroup-add --desc 'My new host group' group_name
    ---------------------
    Added hostgroup "group_name"
    ---------------------
      Host-group: group_name
      Description: My new host group
    ---------------------
    Copy to Clipboard Toggle word wrap

45.4. CLI를 사용하여 IdM 호스트 그룹 삭제

CLI(명령줄 인터페이스)를 사용하여 IdM 호스트 그룹을 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. ipa hostgroup-del 명령을 사용하여 호스트 그룹을 삭제합니다.
    예를 들어 group _name 이라는 IdM 호스트 그룹을 삭제하려면 다음을 수행합니다.

    $ ipa hostgroup-del group_name
    --------------------------
    Deleted hostgroup "group_name"
    --------------------------
    Copy to Clipboard Toggle word wrap
참고

그룹을 제거해도 IdM에서 그룹 구성원이 삭제되지 않습니다.

45.5. CLI를 사용하여 IdM 호스트 그룹 멤버 추가

단일 명령을 사용하여 호스트 및 호스트 그룹을 IdM 호스트 그룹에 구성원을 추가할 수 있습니다.

사전 요구 사항

절차

  1. 멤버를 호스트 그룹에 추가하려면 ipa hostgroup-add-member 를 사용하고 관련 정보를 제공합니다. 다음 옵션을 사용하여 추가할 멤버 유형을 지정할 수 있습니다.

    • hosts 옵션을 사용하여 IdM 호스트 그룹에 하나 이상의 호스트를 추가합니다.
      예를 들어 example_member라는 호스트를 group_ name 그룹에 추가하려면 다음을 실행합니다.

      $ ipa hostgroup-add-member group_name --hosts example_member
      Host-group: group_name
      Description: My host group
      Member hosts: example_member
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
    • host groups 옵션을 사용하여 IdM 호스트 그룹에 하나 이상의 호스트 그룹을 추가합니다.
      예를 들어 nested_group이라는 호스트 그룹을 group_ name이라는 그룹에 추가하려면 :

      $ ipa hostgroup-add-member group_name --hostgroups nested_group
      Host-group: group_name
      Description: My host group
      Member host-groups: nested_group
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
    • 다음 구문을 사용하여 하나의 단일 명령으로 여러 호스트와 여러 호스트 그룹을 IdM 호스트 그룹에 추가할 수 있습니다.

      $ ipa hostgroup-add-member group_name --hosts={host1,host2} --hostgroups={group1,group2}
      Copy to Clipboard Toggle word wrap
중요

호스트 그룹을 다른 호스트 그룹의 구성원으로 추가할 때 재귀 그룹을 생성하지 마십시오. 예를 들어 그룹 A가 그룹 B의 구성원인 경우 그룹 A의 구성원으로 그룹 B를 추가하지 마십시오. 반복적인 그룹은 예측할 수 없는 동작이 발생할 수 있습니다.

45.6. CLI를 사용하여 IdM 호스트 그룹 멤버 제거

단일 명령을 사용하여 IdM 호스트 그룹에서 호스트 및 호스트 그룹을 제거할 수 있습니다.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • 활성 Kerberos 티켓. 자세한 내용은 kinit를 사용하여 IdM에 수동으로 로그인하는 방법을 참조하십시오.
  • 선택사항입니다. ipa hostgroup-find 명령을 사용하여 그룹에 제거할 멤버가 포함되어 있는지 확인합니다.

절차

  1. 호스트 그룹 구성원을 제거하려면 ipa hostgroup-remove-member 명령을 사용하고 관련 정보를 제공합니다. 다음 옵션을 사용하여 제거할 멤버 유형을 지정할 수 있습니다.

    • IdM 호스트 그룹에서 하나 이상의 호스트를 제거하려면 --hosts 옵션을 사용합니다.
      예를 들어 이름이 group_ name 인 그룹에서 example_member 라는 호스트를 제거하려면 다음을 수행하십시오.

      $ ipa hostgroup-remove-member group_name --hosts example_member
      Host-group: group_name
      Description: My host group
      -------------------------
      Number of members removed 1
      -------------------------
      Copy to Clipboard Toggle word wrap
    • hostnames 옵션을 사용하여 IdM 호스트 그룹에서 하나 이상의 호스트 그룹을 제거합니다.
      예를 들어, nested_group 이라는 호스트 그룹을 group_name:

      $ ipa hostgroup-remove-member group_name --hostgroups example_member
      Host-group: group_name
      Description: My host group
      -------------------------
      Number of members removed 1
      -------------------------
      Copy to Clipboard Toggle word wrap
참고

그룹을 제거해도 IdM에서 그룹 구성원이 삭제되지 않습니다.

  • 다음 구문을 사용하여 하나의 단일 명령으로 IdM 호스트 그룹에서 여러 호스트와 여러 호스트 그룹을 제거할 수 있습니다.

    $ ipa hostgroup-remove-member group_name --hosts={host1,host2} --hostgroups={group1,group2}
    Copy to Clipboard Toggle word wrap

45.7. CLI를 사용하여 IdM 호스트 그룹 멤버 관리자 추가

단일 명령을 사용하여 호스트 및 호스트 그룹과 구성원 관리자를 IdM 호스트 그룹에 추가할 수 있습니다. 멤버 관리자는 IdM 호스트 그룹에 호스트 또는 호스트 그룹을 추가할 수 있지만 호스트 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • 활성 Kerberos 티켓. 자세한 내용은 kinit를 사용하여 IdM에 수동으로 로그인하는 방법을 참조하십시오.
  • 멤버 관리자로 추가하려는 호스트 또는 호스트 그룹의 이름과 관리할 호스트 그룹의 이름이 있어야 합니다.

절차

  1. 선택사항입니다. ipa hostgroup-find 명령을 사용하여 호스트 및 호스트 그룹을 찾습니다.
  2. 멤버 관리자를 호스트 그룹에 추가하려면 ipa hostgroup-add-member-manager 를 사용합니다.

    예를 들어, example_member 라는 사용자를 멤버 관리자로 group _name이라는 그룹에 추가하려면 다음을 수행합니다.

    $ ipa hostgroup-add-member-manager group_name --user example_member
    Host-group: group_name
    Member hosts: server.idm.example.com
    Member host-groups: project_admins
    Member of netgroups: group_name
    Membership managed by users: example_member
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
  3. 하나 이상의 호스트 그룹을 IdM 호스트 그룹에 멤버 관리자로 추가하려면 --groups 옵션을 사용합니다.

    예를 들어 admin_group이라는 호스트 그룹을 멤버 관리자로 group_ name이라는 그룹에 추가하려면 다음을 수행합니다.

    $ ipa hostgroup-add-member-manager group_name --groups admin_group
    Host-group: group_name
    Member hosts: server.idm.example.com
    Member host-groups: project_admins
    Member of netgroups: group_name
    Membership managed by groups: admin_group
    Membership managed by users: example_member
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
참고

호스트 그룹에 멤버 관리자를 추가한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • ipa group-show 명령을 사용하여 호스트 사용자 및 호스트 그룹이 멤버 관리자로 추가되었는지 확인합니다.

    $ ipa hostgroup-show group_name
    Host-group: group_name
    Member hosts: server.idm.example.com
    Member host-groups: project_admins
    Membership managed by groups: admin_group
    Membership managed by users: example_member
    Copy to Clipboard Toggle word wrap

45.8. CLI를 사용하여 IdM 호스트 그룹 멤버 관리자 제거

단일 명령을 사용하여 IdM 호스트 그룹에서 멤버 관리자뿐만 아니라 호스트 그룹을 제거할 수 있습니다. 멤버 관리자는 IdM 호스트 그룹에서 호스트 그룹 구성원 관리자를 제거할 수 있지만 호스트 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • 활성 Kerberos 티켓. 자세한 내용은 kinit를 사용하여 IdM에 수동으로 로그인하는 방법을 참조하십시오.
  • 제거 중인 기존 멤버 관리자 호스트 그룹의 이름과 관리 중인 호스트 그룹의 이름이 있어야 합니다.

절차

  1. 선택사항입니다. ipa hostgroup-find 명령을 사용하여 호스트 및 호스트 그룹을 찾습니다.
  2. 호스트 그룹에서 멤버 관리자를 제거하려면 ipa hostgroup-remove-member-manager 명령을 사용합니다.

    예를 들어 group_ name 이라는 그룹에서 멤버 관리자로 example_member 라는 사용자를 제거하려면 다음을 수행하십시오.

    $ ipa hostgroup-remove-member-manager group_name --user example_member
    Host-group: group_name
    Member hosts: server.idm.example.com
    Member host-groups: project_admins
    Member of netgroups: group_name
    Membership managed by groups: nested_group
    ---------------------------
    Number of members removed 1
    ---------------------------
    Copy to Clipboard Toggle word wrap
  3. IdM 호스트 그룹에서 멤버 관리자로 하나 이상의 호스트 그룹을 제거하려면 --groups 옵션을 사용합니다.

    예를 들어 group_ name 이라는 그룹에서 멤버 관리자로 nested_group 이라는 호스트 그룹을 제거하려면 다음을 수행하십시오.

    $ ipa hostgroup-remove-member-manager group_name --groups nested_group
    Host-group: group_name
    Member hosts: server.idm.example.com
    Member host-groups: project_admins
    Member of netgroups: group_name
    ---------------------------
    Number of members removed 1
    ---------------------------
    Copy to Clipboard Toggle word wrap
참고

호스트 그룹에서 멤버 관리자를 제거한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • ipa group-show 명령을 사용하여 호스트 사용자 및 호스트 그룹이 멤버 관리자로 제거되었는지 확인합니다.

    $ ipa hostgroup-show group_name
    Host-group: group_name
    Member hosts: server.idm.example.com
    Member host-groups: project_admins
    Copy to Clipboard Toggle word wrap

46장. IdM 웹 UI를 사용하여 호스트 그룹 관리

다음 작업을 사용하여 웹 인터페이스(Web UI)에서 호스트 그룹 및 해당 멤버를 관리하는 방법에 대해 자세히 알아보십시오.

  • 호스트 그룹 및 해당 구성원 보기
  • 호스트 그룹 생성
  • 호스트 그룹 삭제
  • 호스트 그룹 구성원 추가
  • 호스트 그룹 구성원 제거
  • 호스트 그룹 멤버 관리자 추가
  • 호스트 그룹 구성원 관리자 제거

46.1. IdM의 호스트 그룹

IdM 호스트 그룹은 중요한 관리 작업, 특히 액세스 제어에 대한 제어를 중앙 집중화하는 데 사용할 수 있습니다.

호스트 그룹의 정의

호스트 그룹은 공통 액세스 제어 규칙 및 기타 특성이 있는 IdM 호스트 집합이 포함된 엔터티입니다. 예를 들어 회사 부서, 물리적 위치 또는 액세스 제어 요구 사항을 기반으로 호스트 그룹을 정의할 수 있습니다.

IdM의 호스트 그룹에는 다음이 포함될 수 있습니다.

  • IdM 서버 및 클라이언트
  • 기타 IdM 호스트 그룹

기본적으로 생성된 호스트 그룹

기본적으로 IdM 서버는 모든 IdM 서버 호스트에 대한 호스트 그룹 ipaservers 를 생성합니다.

직접 및 간접 그룹 구성원

IdM의 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. 호스트 그룹 B가 호스트 그룹 A의 구성원이면 호스트 그룹 B의 모든 구성원이 호스트 그룹 A의 간접 구성원으로 간주됩니다.

46.2. IdM 웹 UI에서 호스트 그룹 보기

웹 인터페이스(Web UI)를 사용하여 IdM 호스트 그룹을 보려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. Identity → Groups(ID → 그룹 )를 클릭하고 Host Groups(호스트 그룹 ) 탭을 선택합니다.

    • 페이지에는 기존 호스트 그룹과 해당 설명이 나열됩니다.
    • 특정 호스트 그룹을 검색할 수 있습니다.

    A screenshot of the IdM Web UI displaying the "Host Groups" page which is part of the "Groups" sub-page from the "Identity" tab. There is a search field above a table listing host groups.

  2. 목록에서 그룹을 클릭하여 이 그룹에 속하는 호스트를 표시합니다. 직접 또는 간접 구성원으로 결과를 제한할 수 있습니다.

    A screenshot of the "Groups" page displaying details about the "ipaservers" host group.

  3. Host Groups(호스트 그룹 ) 탭을 선택하여 이 그룹(nested 호스트 그룹)에 속하는 호스트 그룹을 표시합니다. 직접 또는 간접 구성원으로 결과를 제한할 수 있습니다.

    A screenshot of the "Groups" page displaying details about the "group_name" host group.

46.3. IdM 웹 UI에서 호스트 그룹 생성

웹 인터페이스(Web UI)를 사용하여 IdM 호스트 그룹을 생성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. Identity → Groups(ID → 그룹 )를 클릭하고 Host Groups(호스트 그룹 ) 탭을 선택합니다.
  2. 추가를 클릭합니다. Add host group (호스트 그룹 추가) 대화 상자가 표시됩니다.
  3. 그룹에 대한 정보 제공: name(필수) 및 설명(선택 사항).
  4. Add(추가) 를 클릭하여 확인합니다.

    A screenshot of the "Add host group" pop-up window displaying a "Host-group" field (required) and a Description field. At the bottom there are four buttons: "Add" - "Add and Add Another" - "Add and Edit" - "Cancel."

46.4. IdM 웹 UI에서 호스트 그룹 삭제

웹 인터페이스(Web UI)를 사용하여 IdM 호스트 그룹을 삭제하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. ID → 그룹을 클릭하고 호스트 그룹 탭을 선택합니다.
  2. 제거할 IdM 호스트 그룹을 선택하고 Delete(삭제 )를 클릭합니다. 확인 대화 상자가 나타납니다.
  3. 삭제를 클릭하여 확인합니다.

    Screenshot of the "Remove host groups" pop-up window asking if you are sure you want to delete the selected entries. There are two buttons at the bottom right: "Delete" and "Cancel."

참고

호스트 그룹을 제거해도 IdM의 그룹 구성원이 삭제되지 않습니다.

46.5. IdM 웹 UI에서 호스트 그룹 구성원 추가

웹 인터페이스(웹 UI)를 사용하여 IdM에 호스트 그룹 멤버를 추가하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. ID → 그룹을 클릭하고 호스트 그룹 탭을 선택합니다.
  2. 멤버를 추가할 그룹의 이름을 클릭합니다.
  3. 추가할 구성원 유형에 따라 Hosts(호스트 ) 또는 Host groups (호스트 그룹) 탭을 클릭합니다. 해당 대화 상자가 나타납니다.
  4. 추가할 호스트 또는 호스트 그룹을 선택하고 > 화살표 버튼을 클릭하여 Prospective 열로 이동합니다.
  5. Add(추가) 를 클릭하여 확인합니다.

    Screenshot of the "Add host groups into host group group-name" pop-up window which lets you select from "Available host groups" on the left to add to a "Prospective" list on the right. There is an "Add" button at the lower-right of the window.

46.6. IdM 웹 UI에서 호스트 그룹 구성원 제거

웹 UI(웹 UI)를 사용하여 IdM의 호스트 그룹 멤버를 제거하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.

절차

  1. ID → 그룹을 클릭하고 호스트 그룹 탭을 선택합니다.
  2. 멤버를 제거할 그룹의 이름을 클릭합니다.
  3. 제거할 구성원 유형에 따라 Hosts(호스트 ) 또는 Host groups (호스트 그룹) 탭을 클릭합니다.
  4. 제거할 멤버 옆에 있는 확인란을 선택합니다.
  5. Delete(삭제)를 클릭합니다. 확인 대화 상자가 나타납니다.

    A screenshot of a pop-up window titled "Remove host groups from host group ipaservers." The content says "Are you sure you want to delete the selected entries" and "group_name" below that. There are "Delete" and "Cancel" buttons at the bottom right corner of the window.

  6. Delete(삭제)를 클릭하여 확인합니다. 선택한 멤버가 삭제됩니다.

46.7. 웹 UI를 사용하여 IdM 호스트 그룹 멤버 관리자 추가

웹 인터페이스(웹 UI)를 사용하여 IdM에서 사용자 또는 사용자 그룹을 IdM의 호스트 그룹 멤버 관리자로 추가하려면 다음 절차를 따르십시오. 멤버 관리자는 IdM 호스트 그룹에 호스트 그룹 구성원 관리자를 추가할 수 있지만 호스트 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.
  • 멤버 관리자로 추가하려는 호스트 그룹 이름과 관리할 호스트 그룹의 이름이 있어야 합니다.

절차

  1. ID → 그룹을 클릭하고 호스트 그룹 탭을 선택합니다.

  2. 멤버 관리자를 추가할 그룹의 이름을 클릭합니다.
  3. 추가하려는 멤버 관리자 유형에 따라 멤버 managerss( 사용자 그룹 ) 또는 Users (사용자) 탭을 클릭합니다. 해당 대화 상자가 나타납니다.
  4. 추가를 클릭합니다.

  5. 추가할 사용자 또는 사용자 그룹을 선택하고 > 화살표 버튼을 클릭하여 Prospective 열로 이동합니다.
  6. Add(추가) 를 클릭하여 확인합니다.
참고

호스트 그룹에 멤버 관리자를 추가한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • Host Group(호스트 그룹) 대화 상자에서 사용자 그룹 또는 사용자가 그룹 또는 사용자의 멤버 관리자 목록에 추가되었는지 확인합니다.

46.8. 웹 UI를 사용하여 IdM 호스트 그룹 멤버 관리자 제거

웹 인터페이스(웹 UI)를 사용하여 IdM에서 호스트 그룹 멤버 관리자로 사용자 또는 사용자 그룹을 제거하려면 다음 절차를 따르십시오. 멤버 관리자는 IdM 호스트 그룹에서 호스트 그룹 구성원 관리자를 제거할 수 있지만 호스트 그룹의 특성을 변경할 수는 없습니다.

사전 요구 사항

  • IdM 또는 사용자 관리자 역할을 관리하기 위한 관리자 권한.
  • IdM 웹 UI에 로그인되어 있습니다. 자세한 내용은 웹 브라우저에서 IdM 웹 UI 액세스를 참조하십시오.
  • 제거 중인 기존 멤버 관리자 호스트 그룹의 이름과 관리 중인 호스트 그룹의 이름이 있어야 합니다.

절차

  1. ID → 그룹을 클릭하고 호스트 그룹 탭을 선택합니다.

  2. 멤버 관리자를 제거할 그룹의 이름을 클릭합니다.
  3. 제거할 멤버 관리자의 유형에 따라 멤버 managerss( 사용자 그룹 ) 또는 Users (사용자) 탭을 클릭합니다. 해당 대화 상자가 나타납니다.
  4. 제거할 사용자 또는 사용자 그룹을 선택하고 Delete(삭제 )를 클릭합니다.
  5. Delete(삭제) 를 클릭하여 확인합니다.

    참고

    호스트 그룹에서 멤버 관리자를 제거한 후 업데이트에 Identity Management 환경의 모든 클라이언트에 분배하는 데 다소 시간이 걸릴 수 있습니다.

검증 단계

  • Host Group(호스트 그룹) 대화 상자에서 사용자 그룹 또는 사용자가 그룹 또는 사용자의 멤버 관리자 목록에서 제거되었는지 확인합니다.

47장. Ansible 플레이북을 사용하여 호스트 그룹 관리

IdM( Identity Management)의 호스트 그룹과 관련하여 Ansible을 사용하여 IdM(Identity Management)의 호스트 그룹과 관련된 작업을 수행하려면 다음을 참조하십시오.

47.1. IdM의 호스트 그룹

IdM 호스트 그룹은 중요한 관리 작업, 특히 액세스 제어에 대한 제어를 중앙 집중화하는 데 사용할 수 있습니다.

호스트 그룹의 정의

호스트 그룹은 공통 액세스 제어 규칙 및 기타 특성이 있는 IdM 호스트 집합이 포함된 엔터티입니다. 예를 들어 회사 부서, 물리적 위치 또는 액세스 제어 요구 사항을 기반으로 호스트 그룹을 정의할 수 있습니다.

IdM의 호스트 그룹에는 다음이 포함될 수 있습니다.

  • IdM 서버 및 클라이언트
  • 기타 IdM 호스트 그룹

기본적으로 생성된 호스트 그룹

기본적으로 IdM 서버는 모든 IdM 서버 호스트에 대한 호스트 그룹 ipaservers 를 생성합니다.

직접 및 간접 그룹 구성원

IdM의 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. 호스트 그룹 B가 호스트 그룹 A의 구성원이면 호스트 그룹 B의 모든 구성원이 호스트 그룹 A의 간접 구성원으로 간주됩니다.

47.2. Ansible Playbook을 사용하여 IdM 호스트 그룹이 있는지 확인

Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 그룹이 있는지 확인하려면 다음 절차를 따르십시오.

참고

Ansible이 없으면 ipa hostgroup-add 명령을 사용하여 호스트 그룹 항목이 IdM에 생성됩니다. IdM에 호스트 그룹을 추가한 결과는 IdM에 있는 호스트 그룹의 상태입니다. Ansible은 멱등에 의존하므로 Ansible을 사용하여 호스트 그룹을 IdM에 추가하려면 호스트 그룹의 상태를 present: state: present 로 정의하는 플레이북을 생성해야 합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. inventory .file과 같은 인벤토리 파일을 생성하고 타겟 IdM 서버 목록으로 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 그룹 정보를 사용하여 Ansible 플레이북 파일을 생성합니다. 예를 들어 database라는 호스트 그룹이 있는지 확인하려면 - ipahostgroup 작업에 name: database를 지정합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/user/ensure-hostgroup-is-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Playbook to handle hostgroups
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      # Ensure host-group databases is present
      - ipahostgroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: databases
          state: present
    Copy to Clipboard Toggle word wrap

    플레이북에서 state: present 는 이미 존재하지 않는 한 IdM에 호스트 그룹을 추가하라는 요청을 나타냅니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-present.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. admin으로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. 관리자용 Kerberos 티켓을 요청합니다.

    $ kinit admin
    Password for admin@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap
  3. 확인하고자 하는 IdM에 있는 호스트 그룹에 대한 정보를 표시합니다.

    $ ipa hostgroup-show databases
      Host-group: databases
    Copy to Clipboard Toggle word wrap

데이터베이스 호스트 그룹은 IdM에 있습니다.

Ansible 플레이북을 사용하여 IdM(Identity Management)의 호스트 그룹에 호스트가 있는지 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • Ansible 플레이북에서 참조할 호스트는 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 호스트 항목이 있는지 확인하십시오.
  • Ansible 플레이북 파일에서 참조하는 호스트 그룹이 IdM에 추가되었습니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 호스트 그룹이 있는지 확인합니다.

절차

  1. inventory .file과 같은 인벤토리 파일을 생성하고 타겟 IdM 서버 목록으로 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 정보를 사용하여 Ansible 플레이북 파일을 생성합니다. ipahostgroup 변수의 name 매개 변수를 사용하여 호스트 그룹의 이름을 지정합니다. ipahostgroup 변수의 host 매개 변수를 사용하여 호스트 이름을 지정합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Playbook to handle hostgroups
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      # Ensure host-group databases is present
      - ipahostgroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: databases
          host:
          - db.idm.example.com
          action: member
    Copy to Clipboard Toggle word wrap

    이 플레이북은 db.idm.example.com 호스트를 databases 호스트 그룹에 추가합니다. action: member 행은 플레이북이 실행될 때 데이터베이스 그룹 자체를 추가하기 위한 시도가 수행되지 않았음을 나타냅니다. 대신 db.idm.example.com 을 데이터베이스에 추가하려는 시도만 수행합니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. admin으로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. 관리자용 Kerberos 티켓을 요청합니다.

    $ kinit admin
    Password for admin@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap
  3. 호스트 그룹에 대한 정보를 표시하여 어떤 호스트가 있는지 확인합니다.

    $ ipa hostgroup-show databases
      Host-group: databases
      Member hosts: db.idm.example.com
    Copy to Clipboard Toggle word wrap

db.idm.example.com 호스트는 데이터베이스 호스트 그룹의 멤버로 있습니다.

47.4. Ansible 플레이북을 사용하여 IdM 호스트 그룹 중첩

Ansible 플레이북을 사용하여 IdM(Identity Management) 호스트 그룹에 중첩된 호스트 그룹이 있는지 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • Ansible 플레이북 파일에서 참조하는 호스트 그룹은 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 호스트 그룹이 있는지 확인합니다.

절차

  1. inventory .file과 같은 인벤토리 파일을 생성하고 타겟 IdM 서버 목록으로 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 그룹 정보를 사용하여 Ansible 플레이북 파일을 생성합니다. 중첩된 호스트 그룹 A 가 Ansible 플레이북의 호스트 그룹 B 에 있는지 확인하려면 - ipahostgroup 변수 중 name 변수를 사용하여 호스트 그룹 B이름을 지정합니다. host group 변수를 사용하여 중첩 호스트 그룹의 이름을 지정합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Playbook to handle hostgroups
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      # Ensure hosts and hostgroups are present in existing databases hostgroup
      - ipahostgroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: databases
          hostgroup:
          - mysql-server
          - oracle-server
          action: member
    Copy to Clipboard Toggle word wrap

    이 Ansible 플레이북은 databases 호스트 그룹에 myqsl-serveroracle-server 호스트 그룹이 있는지 확인합니다 . action: member 행은 플레이북이 실행될 때 데이터베이스 그룹 자체를 IdM에 추가하기 위한 시도가 수행되지 않았음을 나타냅니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. admin으로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. 관리자용 Kerberos 티켓을 요청합니다.

    $ kinit admin
    Password for admin@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap
  3. 중첩 호스트 그룹이 있는 호스트 그룹에 대한 정보를 표시합니다.

    $ ipa hostgroup-show databases
      Host-group: databases
      Member hosts: db.idm.example.com
      Member host-groups: mysql-server, oracle-server
    Copy to Clipboard Toggle word wrap

mysql-serveroracle-server 호스트 그룹은 databases 호스트 그룹에 있습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM 호스트 및 호스트 그룹에 구성원 관리자가 있는지 확인하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 멤버 관리자로 추가하려는 호스트 또는 호스트 그룹의 이름과 관리할 호스트 그룹의 이름이 있어야 합니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 및 호스트 그룹 멤버 관리 정보를 사용하여 Ansible 플레이북 파일을 생성합니다.

    ---
    
    - name: Playbook to handle host group membership management
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure member manager user example_member is present for group_name
          ipahostgroup:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: group_name
            membermanager_user: example_member
    
      - name: Ensure member manager group project_admins is present for group_name
          ipahostgroup:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: group_name
            membermanager_group: project_admins
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-host-groups.yml
    Copy to Clipboard Toggle word wrap

검증 단계

ipa group-show 명령을 사용하여 group_name 그룹에 example_memberproject_admins 가 멤버 관리자로 포함되어 있는지 확인할 수 있습니다.

  1. 관리자로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. testhostgroup 에 대한 정보 표시 :

    ipaserver]$ ipa hostgroup-show group_name
      Host-group: group_name
      Member hosts: server.idm.example.com
      Member host-groups: testhostgroup2
      Membership managed by groups: project_admins
      Membership managed by users: example_member
    Copy to Clipboard Toggle word wrap

Ansible 플레이북을 사용하여 IdM(Identity Management)의 호스트 그룹에서 호스트가 없는지 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • Ansible 플레이북에서 참조할 호스트는 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 호스트 항목이 있는지 확인하십시오.
  • Ansible 플레이북 파일에서 참조하는 호스트 그룹은 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 호스트 그룹이 있는지 확인합니다.

절차

  1. inventory .file과 같은 인벤토리 파일을 생성하고 타겟 IdM 서버 목록으로 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 및 호스트 그룹 정보를 사용하여 Ansible 플레이북 파일을 생성합니다. ipahostgroup 변수의 name 매개 변수를 사용하여 호스트 그룹의 이름을 지정합니다. ipahostgroup 변수의 host 매개 변수를 사용하여 확인할 호스트 그룹에 없는 호스트 이름을 지정합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Playbook to handle hostgroups
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      # Ensure host-group databases is absent
      - ipahostgroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: databases
          host:
          - db.idm.example.com
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap

    이 플레이북은 databases 호스트 그룹에서 db.idm.example.com 호스트가 없는지 확인합니다. action: member 행은 플레이북이 실행될 때 데이터베이스 그룹 자체를 제거하기 위한 시도가 수행되지 않았음을 나타냅니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. admin으로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. 관리자용 Kerberos 티켓을 요청합니다.

    $ kinit admin
    Password for admin@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap
  3. 호스트 그룹 및 포함된 호스트에 대한 정보를 표시합니다.

    $ ipa hostgroup-show databases
      Host-group: databases
      Member host-groups: mysql-server, oracle-server
    Copy to Clipboard Toggle word wrap

db.idm.example.com 호스트가 databases 호스트 그룹에 존재하지 않습니다.

Ansible 플레이북을 사용하여 IdM(Identity Management)의 외부 호스트 그룹에서 중첩된 호스트 그룹이 없는지 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • Ansible 플레이북 파일에서 참조하는 호스트 그룹은 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 호스트 그룹이 있는지 확인합니다.

절차

  1. inventory .file과 같은 인벤토리 파일을 생성하고 타겟 IdM 서버 목록으로 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 그룹 정보를 사용하여 Ansible 플레이북 파일을 생성합니다. ipahostgroup 변수 중에 name 변수를 사용하여 외부 호스트 그룹의 이름을 지정합니다. 호스트 그룹 변수를 사용하여 중첩 호스트 그룹의 이름을 지정합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Playbook to handle hostgroups
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      # Ensure hosts and hostgroups are absent in existing databases hostgroup
      - ipahostgroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: databases
          hostgroup:
          - mysql-server
          - oracle-server
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap

    이 플레이북은 데이터베이스 호스트 그룹에 mysql-serveroracle-server 호스트 그룹이 없는지 확인합니다. action: member 행은 플레이북이 실행될 때 데이터베이스 그룹 자체가 IdM에서 삭제되었는지 확인하기 위한 시도가 수행되지 않았음을 나타냅니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. admin으로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. 관리자용 Kerberos 티켓을 요청합니다.

    $ kinit admin
    Password for admin@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap
  3. 중첩 호스트 그룹이 없어야 하는 호스트 그룹에 대한 정보를 표시합니다.

    $ ipa hostgroup-show databases
      Host-group: databases
    Copy to Clipboard Toggle word wrap

출력은 mysql-server 및 oracle- server 중첩 호스트 그룹이 외부 데이터베이스 호스트 그룹에 없는지 확인합니다.

47.8. Ansible 플레이북을 사용하여 IdM 호스트 그룹이 없는지 확인

Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 그룹이 없는지 확인하려면 다음 절차를 따르십시오.

참고

Ansible이 없으면 ipa hostgroup-del 명령을 사용하여 호스트 그룹 항목이 IdM에서 제거됩니다. IdM에서 호스트 그룹을 제거한 결과는 IdM에 없는 호스트 그룹의 상태입니다. Ansible은 멱등에 의존하므로 Ansible을 사용하여 IdM에서 호스트 그룹을 제거하려면 호스트 그룹의 상태를 absent: state: absent 로 정의하는 플레이북을 생성해야 합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. inventory .file과 같은 인벤토리 파일을 생성하고 타겟 IdM 서버 목록으로 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 그룹 정보를 사용하여 Ansible 플레이북 파일을 생성합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/user/ensure-hostgroup-is-absent.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Playbook to handle hostgroups
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - Ensure host-group databases is absent
        ipahostgroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: databases
          state: absent
    Copy to Clipboard Toggle word wrap

    이 플레이북은 IdM에서 데이터베이스 호스트 그룹이 없는지 확인합니다. state: absent 는 이미 삭제되지 않는 한 IdM에서 호스트 그룹을 삭제하도록 요청합니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-absent.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. admin으로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. 관리자용 Kerberos 티켓을 요청합니다.

    $ kinit admin
    Password for admin@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap
  3. 확인하지 않은 호스트 그룹에 대한 정보를 표시합니다.

    $ ipa hostgroup-show databases
    ipa: ERROR: databases: host group not found
    Copy to Clipboard Toggle word wrap

데이터베이스 호스트 그룹은 IdM에 존재하지 않습니다.

다음 절차에서는 Ansible 플레이북을 사용하여 IdM 호스트 및 호스트 그룹에 구성원 관리자가 없는지 확인합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 멤버 관리자로 제거하려는 사용자 또는 사용자 그룹의 이름과 관리 중인 호스트 그룹의 이름이 있어야 합니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 필요한 호스트 및 호스트 그룹 멤버 관리 정보를 사용하여 Ansible 플레이북 파일을 생성합니다.

    ---
    
    - name: Playbook to handle host group membership management
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Ensure member manager host and host group members are absent for group_name
        ipahostgroup:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: group_name
          membermanager_user: example_member
          membermanager_group: project_admins
          action: member
          state: absent
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-host-groups-are-absent.yml
    Copy to Clipboard Toggle word wrap

검증 단계

ipa group-show 명령을 사용하여 group_name 그룹에 example_member 또는 project_admins 가 멤버 관리자로 포함되어 있지 않은지 확인할 수 있습니다.

  1. 관리자로 ipaserver 에 로그인합니다.

    $ ssh admin@server.idm.example.com
    Password:
    [admin@server /]$
    Copy to Clipboard Toggle word wrap
  2. testhostgroup 에 대한 정보 표시 :

    ipaserver]$ ipa hostgroup-show group_name
      Host-group: group_name
      Member hosts: server.idm.example.com
      Member host-groups: testhostgroup2
    Copy to Clipboard Toggle word wrap

48장. 사용자, 호스트 및 서비스에 대한 Kerberos 주체 별칭 관리

새 사용자, 호스트 또는 서비스를 생성하면 다음 형식의 Kerberos 주체가 자동으로 추가됩니다.

  • user_name@REALM
  • host/host_name@REALM
  • service_name/host_name@REALM

관리자는 별칭을 사용하여 Kerberos 애플리케이션에 대해 인증할 수 있는 사용자, 호스트 또는 서비스를 활성화할 수 있습니다. 이는 다음 시나리오에서 유용합니다.

  • 사용자 이름이 변경되었으며 사용자는 이전 사용자 이름과 새 사용자 이름을 사용하여 로그인하려고 합니다.
  • IdM Kerberos 영역이 이메일 도메인과 다른 경우에도 사용자는 이메일 주소를 사용하여 로그인해야 합니다.

사용자 이름을 바꾸면 오브젝트는 별칭과 이전 표준 주체 이름을 유지합니다.

48.1. Kerberos 주체 별칭 추가

IdM(Identity Management) 환경의 기존 Kerberos 주체와 별칭 이름을 연결할 수 있습니다. 이렇게 하면 보안이 강화되고 IdM 도메인 내의 인증 프로세스가 간소화됩니다.

절차

  • 별칭 이름 useralias 를 계정 사용자에 추가하려면 다음을 입력합니다.

    # ipa user-add-principal <user> <useralias>
    --------------------------------
    Added new aliases to user "user"
    --------------------------------
             User login: user
        Principal alias: user@IDM.EXAMPLE.COM, useralias@IDM.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

    호스트 또는 서비스에 별칭을 추가하려면 ipa host-add-principal 또는 ipa service-add-principal 명령을 대신 사용합니다.

    별칭 이름을 사용하여 인증하는 경우 kinit 명령과 함께 -C 옵션을 사용합니다.

    # kinit -C <useralias>
    Password for <user>@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap

48.2. Kerberos 주체 별칭 제거

IdM(Identity Management) 환경에서 Kerberos 주체와 관련된 별칭 이름을 제거할 수 있습니다.

절차

  • 계정 사용자 에서 별칭을 제거하려면 다음을 입력합니다.

    # ipa user-remove-principal <user> <useralias>
    --------------------------------
    Removed aliases from user "user"
    --------------------------------
      User login: user
      Principal alias: user@IDM.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

    호스트 또는 서비스에서 별칭을 제거하려면 ipa host-remove-principal 또는 ipa service-remove-principal 명령을 대신 사용합니다.

    정식 사용자 이름을 제거할 수 없습니다.

    # ipa user-show <user>
      User login: user
      ...
      Principal name: user@IDM.EXAMPLE.COM
      ...
    
    # ipa user-remove-principal user user
    ipa: ERROR: invalid 'krbprincipalname': at least one value equal to the canonical principal name must be present
    Copy to Clipboard Toggle word wrap

48.3. Kerberos 엔터프라이즈 주체 별칭 추가

IdM(Identity Management) 환경의 기존 Kerberos 엔터프라이즈 주체와 엔터프라이즈 주체 이름을 연결할 수 있습니다. 엔터프라이즈 주체 별칭은 사용자 주체 이름(UPN) 접미사, NetBIOS 이름 또는 신뢰할 수 있는 Active Directory 포리스트 도메인의 도메인 이름을 제외한 모든 도메인 접미사를 사용할 수 있습니다.

참고

엔터프라이즈 주체 별칭을 추가하거나 제거하는 경우 두 개의 백슬래시(\\)를 사용하여 @ 기호를 이스케이프합니다. 그렇지 않으면 쉘은 @ 기호를 Kerberos 영역 이름의 일부로 해석하고 다음 오류가 발생합니다.

ipa: ERROR: The realm for the principal does not match the realm for this IPA server
Copy to Clipboard Toggle word wrap

절차

  • 엔터프라이즈 주체 별칭 user@example.com사용자 계정에 추가하려면 다음을 수행합니다.

    # ipa user-add-principal <user> <user\\@example.com>
    --------------------------------
    Added new aliases to user "user"
    --------------------------------
             User login: user
        Principal alias: user@IDM.EXAMPLE.COM, user\@example.com@IDM.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

    호스트 또는 서비스에 엔터프라이즈 별칭을 추가하려면 ipa host-add-principal 또는 ipa service-add-principal 명령을 대신 사용합니다.

    엔터프라이즈 주체 이름을 사용하여 인증하는 경우 kinit 명령과 함께 -E 옵션을 사용합니다.

    # kinit -E <user@example.com>
    Password for user\@example.com@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap

48.4. Kerberos 엔터프라이즈 주체 별칭 제거

IdM(Identity Management) 환경에서 Kerberos 엔터프라이즈 주체와 관련된 엔터프라이즈 주체 이름을 제거할 수 있습니다.

참고

엔터프라이즈 주체 별칭을 추가하거나 제거하는 경우 두 개의 백슬래시(\\)를 사용하여 @ 기호를 이스케이프합니다. 그렇지 않으면 쉘은 @ 기호를 Kerberos 영역 이름의 일부로 해석하고 다음 오류가 발생합니다.

ipa: ERROR: The realm for the principal does not match the realm for this IPA server
Copy to Clipboard Toggle word wrap

절차

  • 엔터프라이즈 주체 별칭 user@example.com 을/를 제거하려면 계정 사용자 에서 다음을 입력합니다.

    # ipa user-remove-principal <user> <user\\@example.com>
    --------------------------------
    Removed aliases from user "user"
    --------------------------------
      User login: user
      Principal alias: user@IDM.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

    호스트 또는 서비스에서 별칭을 제거하려면 ipa host-remove-principal 또는 ipa service-remove-principal 명령을 대신 사용합니다.

49장. Kerberos 플래그 관리

Kerberos 플래그는 Kerberos 사용 네트워크 환경에서 인증 메커니즘, 권한 부여 수준 및 보안 프로토콜을 지정하는 데 중요합니다. Kerberos 플래그를 사용하면 보안 액세스 제어를 보장하고, 무단 액세스를 방지하고, 다양한 Kerberos 구현 간의 상호 운용성을 개선할 수 있습니다.

49.1. 서비스 및 호스트의 Kerberos 플래그

다양한 Kerberos 플래그를 사용하여 Kerberos 티켓 동작의 특정 측면을 정의할 수 있습니다. 이러한 플래그를 서비스 및 호스트 Kerberos 주체에 추가할 수 있습니다.

IdM(Identity Management)의 주체는 다음 Kerberos 플래그를 수락합니다.

  • OK_AS_DELEGATE

    이 플래그를 사용하여 위임에 신뢰할 수 있는 Kerberos 티켓을 지정합니다.

    AD(활성 디렉터리) 클라이언트는 Kerberos 티켓의 OK_AS_DELEGATE 플래그를 확인하여 사용자 인증 정보를 특정 서버에 전달할 수 있는지 여부를 결정합니다. AD는 OK_AS_DELEGATE 가 구성된 서비스 또는 호스트에만 TGT( ticket-granting ticket)를 전달합니다. 이 플래그를 사용하면 SSSD(System Security Services daemon)에서 IdM 클라이언트 시스템의 기본 Kerberos 인증 정보 캐시에 AD 사용자 TGT를 추가할 수 있습니다.

  • REQUIRES_PRE_AUTH

    이 플래그를 사용하여 사전 인증된 티켓만 보안 주체에 인증할 수 있도록 지정합니다.

    REQUIRES_PRE_AUTH 플래그를 설정하면 키 배포 센터(KDC)에 추가 인증이 필요합니다. KDC는 TGT가 사전 인증된 경우에만 REQUIRES_PRE_AUTH 를 사용하여 주체에 대해 TGT를 발행합니다.

    REQUIRES_PRE_AUTH 를 지워 선택한 서비스 또는 호스트에 대해 사전 인증을 비활성화할 수 있습니다. 이렇게 하면 KDC의 부하가 줄어들지만 장기적인 키에 대한 무차별 공격 가능성이 약간 증가합니다.

  • OK_TO_AUTH_AS_DELEGATE

    OK_TO_AUTH_AS_DELEGATE 플래그를 사용하여 서비스를 사용자 대신 Kerberos 티켓을 받을 수 있도록 지정합니다. 사용자를 대신하여 다른 티켓을 얻으려면 OK_AS_DELEGATE 플래그와 키 배포 센터 측에서 허용되는 해당 정책 결정이 필요합니다.

49.2. 웹 UI에서 Kerberos 플래그 설정

IdM 웹 UI를 사용하여 Kerberos 플래그를 설정할 수 있습니다. 다음 절차에서는 Kerberos 플래그를 보안 주체로 설정합니다.

절차

  1. 메뉴에서 IdentityServices 를 선택합니다.

    List of services

  2. 플래그를 추가할 서비스를 클릭합니다.
  3. 설정할 옵션을 선택합니다.

    • OK_AS_DELEGATE 플래그를 설정하려면 위임에 대해 Trusted를 선택합니다.
    • REQUIRES_PRE_AUTH 플래그를 설정하려면 사전 인증 필요 를 확인합니다.
    • OK_TO_AUTH_AS_DELEGATE 플래그를 설정하려면 Trusted 를 선택하여 사용자로 인증합니다.

49.3. 명령줄에서 Kerberos 플래그 설정 및 제거

명령줄을 사용하여 Kerberos 플래그를 추가하거나 제거할 수 있습니다. ipa service-mod 명령은 플래그에 다음 명령 옵션을 사용합니다.

  • --OK-as-delegate for OK_AS_DELEGATE
  • REQUIRES_PRE_AUTH--requires-pre-auth
  • OK_TO_AUTH_AS_DELEGATE에 대해 --OK-to-auth-as-delegate

옵션 값을 1 로 설정하면 원칙에 대한 플래그를 활성화합니다. 옵션 값을 0 으로 설정하면 플래그를 비활성화합니다.

다음 절차에서는 서비스/ipa.example.com@example.com 주체에 대해 OK_AS_DELEGATE 플래그를 활성화하고 비활성화합니다.

절차

  • service/ipa.example.com@example.com 원칙의 OK_AS_DELEGATE 플래그를 추가하려면 다음을 실행합니다.

    $ ipa service-mod service/ipa.example.com@EXAMPLE.COM --ok-as-delegate=1
    Copy to Clipboard Toggle word wrap
  • service/ipa.example.com@example.com 원칙에서 OK_AS_DELEGATE 플래그를 제거하려면 다음을 실행합니다.

    $ ipa service-mod service/ipa.example.com@EXAMPLE.COM --ok-as-delegate=0
    Copy to Clipboard Toggle word wrap

49.4. 명령줄에서 Kerberos 플래그 표시

명령줄을 사용하여 Kerberos 플래그 설정을 표시할 수 있습니다. 다음 절차에서는 demo/ipa.example.com@EXAMPLE.COM 주체의 OK_AS_DELEGATE 플래그를 표시합니다.

절차

보안 주체에 대해 OK_AS_DELEGATE 가 설정되어 있는지 확인하려면 다음을 수행하십시오.

  1. kvno 유틸리티를 실행합니다.

    $ kvno demo/ipa.example.com@EXAMPLE.COM
    Copy to Clipboard Toggle word wrap
  2. 플래그 설정을 표시하려면 klist -f 명령을 실행합니다. 0 문자는 OK_AS_DELEGATE 플래그가 비활성화되어 있음을 의미합니다.

    $ klist -f
    Ticket cache: KEYRING:persistent:0:0
    Default principal: admin@EXAMPLE.COM
    
    Valid starting		Expires			Service principal
    02/19/2024 09:59:02	02/20/2024 08:21:33	demo/ipa/example.com@EXAMPLE.COM
        Flags: FATO
    Copy to Clipboard Toggle word wrap

50장. PAC 정보를 사용하여 Kerberos 보안 강화

RHEL 8.5 이후 기본적으로 PAC(권한 속성 인증서) 정보와 함께 IdM(Identity Management)을 사용할 수 있습니다. 또한 RHEL 8.5 이전에 설치된 IdM 배포에서 SID(Security Identifiers)를 활성화할 수 있습니다.

50.1. IdM에서 권한 속성 인증서(PAC) 사용

RHEL IdM(Identity Management)은 이제 새로운 배포에서 기본적으로 Privilege Attribute Certificate (PAC) 정보를 사용하여 Kerberos 티켓을 발행합니다. PAC에는 SID(Security Identifier), 그룹 멤버십 및 홈 디렉토리 정보를 포함하여 Kerberos 주체에 대한 풍부한 정보가 있습니다.

기본적으로 Microsoft Active Directory(AD)가 사용하는 STSS는 전역적으로 고유한 식별자로 재사용되지 않습니다. STSS는 여러 네임스페이스를 표현합니다. 각 도메인에는 각 오브젝트의 STS에 접두사가 있는 STS가 있습니다.

RHEL 8.5부터 IdM 서버 또는 복제본을 설치할 때 설치 스크립트는 기본적으로 사용자 및 그룹에 대한 STS를 생성합니다. 이를 통해 IdM은 PAC 데이터로 작업할 수 있습니다. RHEL 8.5 이전의 IdM을 설치하고 AD 도메인에 대한 트러스트를 구성하지 않은 경우 IdM 오브젝트에 대해 STS를 생성하지 못할 수 있습니다. IdM 오브젝트의 STS를 생성하는 방법에 대한 자세한 내용은 IdM 의 SID(보안 식별자) 활성화를 참조하십시오.

Kerberos 티켓에서 PAC 정보를 평가하면 훨씬 더 자세히 리소스 액세스를 제어할 수 있습니다. 예를 들어, 한 도메인의 Administrator 계정은 다른 도메인의 Administrator 계정과 고유한 SID를 갖습니다. AD 도메인에 대한 신뢰가 있는 IdM 환경에서는 UID가 0인 모든 Linux 루트 계정과 같이 다른 위치에서 반복할 수 있는 간단한 사용자 이름 또는 UID 대신, 전역적으로 고유한 SID를 기반으로 액세스 제어를 설정할 수 있습니다.

50.2. IdM에서 SID(Security Identifiers) 활성화

RHEL 8.5 이전의 IdM을 설치하고 AD 도메인에 대한 트러스트를 구성하지 않은 경우 IdM 오브젝트에 대해 SID(Security Identifiers)가 생성되지 않을 수 있습니다. 이전에는 SIDs를 생성하는 유일한 방법은 ipa-adtrust-install 명령을 실행하여 IdM 서버에 Trust Controller 역할을 추가하기 때문입니다.

RHEL 8.6부터 IdM의 Kerberos에는 IdM 오브젝트에PAC(Privilege Access Certificate) 정보를 기반으로 보안에 필요한 STS가 있어야 합니다.

사전 요구 사항

  • RHEL 8.5 이전에 IdM을 설치했습니다.
  • Active Directory 도메인을 사용한 신뢰 구성의 일부인 ipa-sidgen 작업을 실행하지 않았습니다.
  • IdM 관리자 계정으로 인증할 수 있습니다.

절차

  • STS를 사용하고 HEAD gen 작업을 트리거하여 기존 사용자 및 그룹에 대한 SID를 생성합니다. 이 작업은 리소스 집약적일 수 있습니다.

    [root@server ~]# ipa config-mod --enable-sid --add-sids
    Copy to Clipboard Toggle word wrap

검증

  • IdM admin 사용자 계정 항목에 도메인 관리자용으로 예약된 -500 로 끝나는 libc가 있는 ipantsecurity tekton 속성이 있는지 확인합니다.

    [root@server ~]# ipa user-show admin --all | grep ipantsecurityidentifier
      ipantsecurityidentifier: S-1-5-21-2633809701-976279387-419745629-500
    Copy to Clipboard Toggle word wrap

51장. Kerberos 티켓 정책 관리

IdM(Identity Management)의 Kerberos 티켓 정책은 Kerberos 티켓 액세스, 기간 및 갱신에 대한 제한을 설정합니다. IdM 서버에서 실행되는 KDC(키 배포 센터)에 대한 Kerberos 티켓 정책을 구성할 수 있습니다.

Kerberos 티켓 정책을 관리할 때 다음 개념과 작업이 수행됩니다.

51.1. IdM KDC의 역할

ID 관리의 인증 메커니즘은 KDC(키 배포 센터)에서 설정한 Kerberos 인프라를 사용합니다. KDC는 자격 증명 정보를 저장하고 IdM 네트워크 내의 엔터티에서 시작된 데이터의 신뢰성을 보장하는 신뢰할 수 있는 권한입니다.

각 IdM 사용자, 서비스 및 호스트는 Kerberos 클라이언트 역할을 하며 고유한 Kerberos 주체 로 식별됩니다.

  • users: identifier@REALM (예: admin@EXAMPLE.COM)
  • 서비스: service/fully-qualified-hostname@REALM (예: http/server.example.com@EXAMPLE.COM)
  • 호스트의 경우: host/fully-qualified-hostname@REALM (예: host/client.example.com@EXAMPLE.COM)

다음 이미지는 Kerberos 클라이언트, KDC 및 클라이언트가 통신하려는 Kerberized 애플리케이션 간의 통신을 간소화한 것입니다.

  1. Kerberos 클라이언트는 Kerberos 주체로 인증하여 KDC를 식별합니다. 예를 들어 IdM 사용자는 kinit 사용자 이름을 수행하고 암호를 제공합니다.
  2. KDC는 데이터베이스의 주체를 확인하고, 클라이언트를 인증하고, Kerberos 티켓 정책을 평가하여 요청을 부여할지 여부를 결정합니다.
  3. KDC는 고객에게 해당 티켓 정책에 따라 라이프사이클 및 인증 표시기 가 포함된 티켓(TGT)을 발행합니다.
  4. TGT를 사용하면 클라이언트는 KDC의 서비스 티켓을 요청하여 대상 호스트에서 Kerberized 서비스와 통신합니다.
  5. KDC는 고객의 TGT가 여전히 유효한지 확인하고, 티켓 정책에 대해 서비스 티켓 요청을 평가합니다.
  6. KDC는 고객에게 서비스 티켓을 발행합니다.
  7. 서비스 티켓을 사용하여 클라이언트는 대상 호스트에서 서비스와 암호화된 통신을 시작할 수 있습니다.

51.2. IdM Kerberos 티켓 정책 유형

IdM Kerberos 티켓 정책은 다음과 같은 티켓 정책 유형을 구현합니다.

연결 정책

서로 다른 보안 수준으로 Kerberized 서비스를 보호하기 위해 연결 정책을 정의하여 TGT(티켓 제공 티켓)를 검색하는 데 사용하는 사전 인증 메커니즘을 기반으로 규칙을 적용할 수 있습니다.

예를 들어 client1.example.com에 연결하는 데 스마트 카드 인증이 필요하며, client2.example.com테스트 서비스 애플리케이션에 액세스하려면 이중 인증이 필요합니다.

연결 정책을 적용하려면 인증 표시기 를 서비스와 연결합니다. 서비스 티켓 요청에 필요한 인증 표시기가 있는 클라이언트만 해당 서비스에 액세스할 수 있습니다. 자세한 내용은 Kerberos 인증 표시기 를 참조하십시오.

티켓 라이프 사이클 정책

각 Kerberos 티켓은 수명 과 잠재적인 갱신 기간이 있습니다. 티켓을 최대 수명에 도달하기 전에 갱신할 수 있지만 최대 갱신 기간을 초과하면 안 됩니다.

기본 글로벌 티켓 수명은 1일(86400초)이며 기본 글로벌 최대 갱신 기간은 1주(604800초)입니다. 이러한 글로벌 값을 조정하려면 글로벌 티켓 라이프사이클 정책 구성을 참조하십시오.

또한 자체 티켓 라이프사이클 정책을 정의할 수도 있습니다.

51.3. Kerberos 인증 표시기

KDC(Kerberos Key Distribution Center)는 클라이언트가 ID를 증명하는 데 사용한 사전 인증 메커니즘을 기반으로 인증 표시기 를 TGT( 티켓 제공 티켓)에 연결합니다.

otp
이중 인증 (암호 + 일회 암호)
마케도니아
RAID 인증(일반적으로 802.1x 인증의 경우)
pkinit
PKINIT, 스마트 카드 또는 인증서 인증
강화
강화된 암호 (SPAKE 또는 FAST)[1]

그런 다음 KDC는 TGT의 인증 표시기를 통해 발생하는 모든 서비스 티켓 요청에 연결합니다. KDC는 인증 지표에 따라 서비스 액세스 제어, 최대 티켓 수명, 최대 재생성 기간 등의 정책을 시행합니다.

인증 표시기 및 IdM 서비스

서비스 또는 호스트를 인증 표시기와 연결할 경우 해당 인증 메커니즘을 사용하여 TGT를 획득한 클라이언트만 액세스할 수 있습니다. 애플리케이션 또는 서비스가 아닌 KDC는 서비스 티켓 요청의 인증 표시기를 확인하고 Kerberos 연결 정책에 따라 요청을 허용하거나 거부합니다.

예를 들어, VPN(Virtual Private Network)에 연결하는 데 2단계 인증이 필요한 경우 otp 인증 표시기를 해당 서비스와 연결합니다. 고유한 TGT를 받기 위해 일회성 암호를 사용한 사용자만 VPN에 로그인할 수 있습니다.

그림 51.1. otp 인증 표시기가 필요한 VPN 서비스의 예

서비스 또는 호스트에 인증 표시기가 할당되지 않은 경우 메커니즘에서 인증된 티켓을 수락합니다.



[1] 강화된 암호는 단일 파티 공개 키-키 인증 키 교환(SPAKE) 사전 인증 및/또는 FAST(Secure 터널링)를 통한 유연한 인증을 사용하여 무차별 암호 사전 공격으로부터 보호됩니다.

51.4. IdM 서비스에 대한 인증 표시기 시행

IdM(Identity Management)에서 지원하는 인증 메커니즘은 인증 힘에 따라 다릅니다. 예를 들어 표준 암호와 함께 OTP(One-time password)를 사용하여 초기의 Kerberos 티켓 작성 티켓(TGT)을 가져오는 것은 표준 암호만 사용하여 인증보다 더 안전한 것으로 간주됩니다.

인증 지표를 특정 IdM 서비스와 연결하면 IdM 관리자로서 TGT( initial ticket-granting ticket)를 받기 위해 특정 사전 인증 메커니즘을 사용한 사용자만 서비스에 액세스할 수 있도록 서비스를 구성할 수 있습니다.

이러한 방식으로 다음과 같이 다양한 IdM 서비스를 구성할 수 있습니다.

  • OTP(one-time password)와 같은 초기 TGT를 얻기 위해 더 강력한 인증 방법을 사용한 사용자만 VPN과 같은 보안에 중요한 서비스에 액세스할 수 있습니다.
  • 암호와 같은 초기 TGT를 얻기 위해 보다 간단한 인증 방법을 사용한 사용자는 로컬 로그인과 같은 중요하지 않은 서비스에만 액세스할 수 있습니다.

그림 51.2. 다른 기술을 사용하여 인증의 예

이 절차에서는 IdM 서비스 생성 및 수신 서비스 티켓 요청의 특정 Kerberos 인증 표시기가 필요하도록 구성하는 방법을 설명합니다.

51.4.1. IdM 서비스 항목 및 Kerberos 키 탭 생성

IdM 호스트에서 실행되는 서비스에 대해 IdM 서비스 항목을 IdM에 추가하면 해당 Kerberos 사용자가 생성되고 서비스에서 SSL 인증서, Kerberos 키탭 또는 둘 다를 요청할 수 있습니다.

다음 절차에서는 IdM 서비스 항목을 생성하고 관련 Kerberos keytab을 생성하여 해당 서비스와의 통신을 암호화하는 방법을 설명합니다.

사전 요구 사항

  • 서비스는 Kerberos 주체, SSL 인증서 또는 둘 다를 저장할 수 있습니다.

절차

  1. ipa service-add 명령으로 IdM 서비스를 추가하여 연결된 Kerberos 주체를 생성합니다. 예를 들어 호스트 client.example.com에서 실행되는 테스트 서비스 애플리케이션에 대한 IdM 서비스 항목을 생성하려면 다음을 수행합니다.

    [root@client ~]# ipa service-add testservice/client.example.com
    -------------------------------------------------------------
    Modified service "testservice/client.example.com@EXAMPLE.COM"
    -------------------------------------------------------------
      Principal name: testservice/client.example.com@EXAMPLE.COM
      Principal alias: testservice/client.example.com@EXAMPLE.COM
      Managed by: client.example.com
    Copy to Clipboard Toggle word wrap
  2. 클라이언트에서 서비스에 대한 Kerberos 키탭을 생성하고 저장합니다.

    [root@client ~]# ipa-getkeytab -k /etc/testservice.keytab -p testservice/client.example.com
    Keytab successfully retrieved and stored in: /etc/testservice.keytab
    Copy to Clipboard Toggle word wrap

검증 단계

  1. ipa service-show 명령을 사용하여 IdM 서비스에 대한 정보를 표시합니다.

    [root@server ~]# ipa service-show testservice/client.example.com
      Principal name: testservice/client.example.com@EXAMPLE.COM
      Principal alias: testservice/client.example.com@EXAMPLE.COM
      Keytab: True
      Managed by: client.example.com
    Copy to Clipboard Toggle word wrap
  2. klist 명령을 사용하여 서비스의 Kerberos keytab 내용을 표시합니다.

    [root@server etc]# klist -ekt /etc/testservice.keytab
    Keytab name: FILE:/etc/testservice.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
       2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
       2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (camellia128-cts-cmac)
       2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (camellia256-cts-cmac)
    Copy to Clipboard Toggle word wrap

51.4.2. IdM CLI를 사용하여 인증 지표와 IdM 서비스 연결

IdM(Identity Management) 관리자는 클라이언트 애플리케이션에서 제공하는 서비스 티켓에 특정 인증 지표가 포함되도록 호스트 또는 서비스를 구성할 수 있습니다. 예를 들어 Kerberos 티켓 생성 티켓(TGT)을 가져올 때 유효한 IdM 2 단계 인증 토큰을 사용하는 사용자만 해당 호스트 또는 서비스에 액세스할 수 있도록 할 수 있습니다.

서비스 티켓 요청에서 특정 Kerberos 인증 지표를 요구하도록 서비스를 구성하려면 다음 절차를 따르십시오.

사전 요구 사항

주의

내부 IdM 서비스에 인증 표시기를 할당 하지 마십시오. 다음 IdM 서비스는 PKINIT 및 다단계 인증 방법에 필요한 대화형 인증 단계를 수행할 수 없습니다.

host/server.example.com@EXAMPLE.COM
HTTP/server.example.com@EXAMPLE.COM
ldap/server.example.com@EXAMPLE.COM
DNS/server.example.com@EXAMPLE.COM
cifs/server.example.com@EXAMPLE.COM
Copy to Clipboard Toggle word wrap

절차

  • ipa service-mod 명령을 사용하여 --auth-ind 인수로 식별된 서비스에 대해 하나 이상의 필수 인증 표시기를 지정합니다.

    Expand
    인증 방법--auth-ind

    이중 인증

    otp

    RADUS 인증

    마케도니아

    PKINIT, 스마트 카드 또는 인증서 인증

    pkinit

    강화된 암호 (SPAKE 또는 FAST)

    강화

    예를 들어 호스트 client.example.com에서 테스트 서비스 주체 에 대한 서비스 티켓을 검색하기 위해 사용자가 스마트 카드 또는 OTP 인증으로 인증되도록 하려면 다음을 수행합니다.

    [root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind otp --auth-ind pkinit
    -------------------------------------------------------------
    Modified service "testservice/client.example.com@EXAMPLE.COM"
    -------------------------------------------------------------
      Principal name: testservice/client.example.com@EXAMPLE.COM
      Principal alias: testservice/client.example.com@EXAMPLE.COM
      Authentication Indicators: otp, pkinit
      Managed by: client.example.com
    Copy to Clipboard Toggle word wrap
참고

서비스에서 모든 인증 표시기를 제거하려면 빈 표시기 목록을 제공합니다.

[root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind ''
------------------------------------------------------
Modified service "testservice/client.example.com@EXAMPLE.COM"
------------------------------------------------------
  Principal name: testservice/client.example.com@EXAMPLE.COM
  Principal alias: testservice/client.example.com@EXAMPLE.COM
  Managed by: client.example.com
Copy to Clipboard Toggle word wrap

검증 단계

  • ipa service-show 명령을 사용하여 필요한 인증 표시기를 포함하여 IdM 서비스에 대한 정보를 표시합니다.

    [root@server ~]# ipa service-show testservice/client.example.com
      Principal name: testservice/client.example.com@EXAMPLE.COM
      Principal alias: testservice/client.example.com@EXAMPLE.COM
      Authentication Indicators: otp, pkinit
      Keytab: True
      Managed by: client.example.com
    Copy to Clipboard Toggle word wrap

51.4.3. IdM 웹 UI를 사용하여 인증 지표와 IdM 서비스 연결

IdM(Identity Management) 관리자는 특정 인증 표시기를 포함하도록 클라이언트 애플리케이션에서 제공하는 서비스 티켓을 요구하도록 호스트 또는 서비스를 구성할 수 있습니다. 예를 들어 Kerberos 티켓 생성 티켓(TGT)을 가져올 때 유효한 IdM 2 단계 인증 토큰을 사용하는 사용자만 해당 호스트 또는 서비스에 액세스할 수 있도록 할 수 있습니다.

IdM 웹 UI를 사용하여 수신되는 티켓 요청에서 특정 Kerberos 인증 지표를 요구하도록 호스트 또는 서비스를 구성하려면 다음 절차를 따르십시오.

사전 요구 사항

  • 관리 사용자로 IdM 웹 UI에 로그인했습니다.

절차

  1. IdentityHostsServices (ID 서비스)를 선택합니다.
  2. 필요한 호스트 또는 서비스의 이름을 클릭합니다.
  3. 인증 지표 아래에서 필요한 인증 방법을 선택합니다.

    • 예를 들어, OTP 를 선택하면 Kerberos TGT를 가져올 때 유효한 IdM 2 단계 인증 토큰을 사용한 사용자만 호스트 또는 서비스에 액세스할 수 있습니다.
    • OTPRADIUS 를 둘 다 선택하는 경우, Kerberos TGT를 얻기 위해 RADIUS 서버를 사용하는 사용자와 Kerberos TGT를 사용하기 위해 RADIUS 서버를 사용하는 사용자는 모두 비밀번호로 유효한 IdM 이중 인증 토큰을 사용하는 사용자 모두 액세스가 허용됩니다.
  4. 페이지 상단에서 저장을 클릭합니다.

51.4.4. IdM 서비스의 Kerberos 서비스 티켓 검색

다음 절차에서는 IdM 서비스에 대한 Kerberos 서비스 티켓을 검색하는 방법을 설명합니다. 이 절차를 사용하여 특정 Kerberos 인증 지표가 TGT(Towering ticket)에 표시되는 것과 같은 Kerberos 티켓 정책을 테스트할 수 있습니다.

사전 요구 사항

절차

  • kvno 명령을 -S 옵션과 함께 사용하여 서비스 티켓을 검색하고 IdM 서비스의 이름과 이를 관리하는 호스트의 정규화된 도메인 이름을 지정합니다.

    [root@server ~]# kvno -S testservice client.example.com
    testservice/client.example.com@EXAMPLE.COM: kvno = 1
    Copy to Clipboard Toggle word wrap
참고

IdM 서비스에 액세스해야 하며 현재 티켓 생성 티켓(TGT)에 연결된 필수 Kerberos 인증 지표가 없는 경우 kdestroy 명령으로 현재 Kerberos 인증 정보 캐시를 지우고 새로운 TGT를 검색합니다.

[root@server ~]# kdestroy
Copy to Clipboard Toggle word wrap

예를 들어, 암호를 사용하여 인증하여 처음에 TGT를 검색하고 해당 인증서와 연결된 pkinit 인증 표시기가 있는 IdM 서비스에 액세스해야 하는 경우 현재 자격 증명 캐시를 삭제하고 스마트 카드로 다시 인증해야 합니다. Kerberos 인증 표시기 를 참조하십시오.

검증 단계

  • klist 명령을 사용하여 서비스 티켓이 기본 Kerberos 자격 증명 캐시에 있는지 확인합니다.

    [root@server etc]# klist_
    Ticket cache: KCM:1000
    Default principal: admin@EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    04/01/2020 12:52:42  04/02/2020 12:52:39  krbtgt/EXAMPLE.COM@EXAMPLE.COM
    04/01/2020 12:54:07 04/02/2020 12:52:39 testservice/client.example.com@EXAMPLE.COM
    Copy to Clipboard Toggle word wrap

51.5. 글로벌 티켓 라이프사이클 정책 구성

글로벌 티켓 정책은 모든 서비스 티켓과 사용자별 티켓 정책이 정의되어 있지 않은 사용자에게 적용됩니다.

다음 절차에서는 ipa krbtpolicy-mod 명령을 사용하여 글로벌 Kerberos 티켓 정책에 대한 최대 티켓 수명 및 최대 티켓 갱신 기간을 조정하는 방법을 설명합니다.

ipa krbtpolicy-mod 명령을 사용하는 동안 다음 인수 중 하나 이상을 지정합니다.

  • --초 단위 최대 티켓 수명의 maxlife
  • --maxrenew: 최대 재생 수명 (초)

절차

  1. 글로벌 티켓 정책을 수정하려면 다음을 수행합니다.

    [root@server ~]# ipa krbtpolicy-mod --maxlife=$((8*60*60)) --maxrenew=$((24*60*60))
      Max life: 28800
      Max renew: 86400
    Copy to Clipboard Toggle word wrap

    이 예에서 최대 수명은 8시간(8 * 60분 * 60초)으로 설정되고 최대 갱신 기간은 1일(24 * 60분 * 60초)으로 설정됩니다.

  2. 선택 사항: 글로벌 Kerberos 티켓 정책을 기본 설치 값으로 재설정하려면 다음을 수행합니다.

    [root@server ~]# ipa krbtpolicy-reset
      Max life: 86400
      Max renew: 604800
    Copy to Clipboard Toggle word wrap

검증 단계

  • 글로벌 티켓 정책을 표시합니다.

    [root@server ~]# ipa krbtpolicy-show
      Max life: 28800
      Max renew: 86640
    Copy to Clipboard Toggle word wrap

51.6. 인증 표시기별로 글로벌 티켓 정책 구성

각 인증 표시기에 대해 글로벌 최대 티켓 수명 및 최대 갱신 가능 기간을 조정하려면 다음 절차를 따르십시오. 이러한 설정은 사용자당 티켓 정책이 정의되지 않은 사용자에게 적용됩니다.

ipa krbtpolicy-mod 명령을 사용하여 연결된 인증 표시자에 따라 Kerberos 티켓의 최대 수명 또는 최대 재생 기간을 지정합니다.

절차

  • 예를 들어, 글로벌 2단계 티켓 수명과 갱신 기간 값을 1주로 설정하고 글로벌 스마트 카드 티켓 수명과 갱신 기간 값을 2주로 설정하려면 다음을 수행합니다.

    [root@server ~]# ipa krbtpolicy-mod --otp-maxlife=604800 --otp-maxrenew=604800 --pkinit-maxlife=172800 --pkinit-maxrenew=172800
    Copy to Clipboard Toggle word wrap

검증 단계

  • 글로벌 티켓 정책을 표시합니다.

    [root@server ~]# ipa krbtpolicy-show
      Max life: 86400
      OTP max life: 604800
      PKINIT max life: 172800
      Max renew: 604800
      OTP max renew: 604800
      PKINIT max renew: 172800
    Copy to Clipboard Toggle word wrap

    OTP 및 PKINIT 값은 글로벌 기본 최대 수명 및 최대 갱신 값과 다릅니다.

51.7. 사용자의 기본 티켓 정책 구성

단일 사용자에게만 적용되는 고유한 Kerberos 티켓 정책을 정의할 수 있습니다. 이러한 사용자별 설정은 모든 인증 지표에 대한 글로벌 티켓 정책을 재정의합니다.

ipa krbtpolicy-mod username 명령을 사용하고 다음 인수 중 하나 이상을 지정합니다.

  • --초 단위 최대 티켓 수명의 maxlife
  • --maxrenew: 최대 재생 수명 (초)

절차

  1. 예를 들어 IdM 관리자의 최대 티켓 수명 기간을 2일, 최대 갱신 기간을 2주로 설정하려면 다음을 수행합니다.

    [root@server ~]# ipa krbtpolicy-mod admin --maxlife=172800 --maxrenew=1209600
      Max life: 172800
      Max renew: 1209600
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: 사용자의 티켓 정책을 재설정하려면 다음을 수행합니다.

    [root@server ~]# ipa krbtpolicy-reset admin
    Copy to Clipboard Toggle word wrap

검증 단계

  • 사용자에게 적용되는 유효 Kerberos 티켓 정책을 표시합니다.

    [root@server ~]# ipa krbtpolicy-show admin
      Max life: 172800
      Max renew: 1209600
    Copy to Clipboard Toggle word wrap

51.8. 사용자에 대한 개별 인증 표시기 티켓 정책 구성

관리자는 인증 표시기별로 다른 사용자에 대해 Kerberos 티켓 정책을 정의할 수 있습니다. 예를 들어 IdM 관리자가 OTP 인증을 통해 얻은 경우 2일 동안 티켓을 갱신할 수 있도록 정책을 구성하고 스마트 카드 인증을 통해 1주일에 걸쳐 티켓을 갱신할 수 있습니다.

이러한 인증별 표시기 설정은 사용자의 기본 티켓 정책, 글로벌 기본 티켓 정책 및 모든 글로벌 인증 표시 티켓 정책을 재정의합니다.

ipa krbtpolicy-mod username 명령을 사용하여 연결된 인증 지표에 따라 사용자 Kerberos 티켓의 최대 수명 및 최대 재생 기간 값을 설정합니다.

절차

  1. 예를 들어 IdM 관리자가 일회성 암호 인증을 받은 경우 Kerberos 티켓을 이틀 동안 갱신하도록 허용하려면 --otp-maxrenew 옵션을 설정합니다.

    [root@server ~]# ipa krbtpolicy-mod admin --otp-maxrenew=$((2*24*60*60))
      OTP max renew: 172800
    Copy to Clipboard Toggle word wrap
  2. 선택 사항: 사용자의 티켓 정책을 재설정하려면 다음을 수행합니다.

    [root@server ~]# ipa krbtpolicy-reset username
    Copy to Clipboard Toggle word wrap

검증 단계

  • 사용자에게 적용되는 유효 Kerberos 티켓 정책을 표시합니다.

    [root@server ~]# ipa krbtpolicy-show admin
      Max life: 28800
      Max renew: 86640
    Copy to Clipboard Toggle word wrap

51.9. krbtpolicy-mod 명령의 인증 표시 옵션

다음 인수를 사용하여 인증 표시기 값을 지정합니다.

Expand
표 51.1. krbtpolicy-mod 명령의 인증 표시 옵션
인증 표시기최대 수명에 대한 인수최대 갱신 기간에 대한 인수

otp

--otp-maxlife

--otp-maxrenew

마케도니아

--radius-maxlife

--radius-maxrenew

pkinit

--pkinit-maxlife

--pkinit-maxrenew

강화

--hardened-maxlife

--hardened-maxrenew

52장. IdM의 Kerberos PKINIT 인증

Kerberos의 초기 인증을 위한 공개 키 암호화(PKINIT)는 Kerberos의 사전 인증 메커니즘입니다. IdM(Identity Management) 서버에는 Kerberos PKINIT 인증을 위한 메커니즘이 포함되어 있습니다.

52.1. 기본 PKINIT 구성

IdM 서버의 기본 PKINIT 구성은 CA(인증 기관) 구성에 따라 다릅니다.

Expand
표 52.1. IdM의 기본 PKINIT 구성
CA 구성PKINIT 구성

CA가 없으면 외부 PKINIT 인증서가 제공되지 않음

로컬 PKINIT: IdM은 서버의 내부 목적으로만 PKINIT를 사용합니다.

CA가 없으면 외부 PKINIT 인증서가 IdM에 제공됨

IdM은 외부 Kerberos 키 배포 센터(KDC) 인증서 및 CA 인증서를 사용하여 PKINIT를 구성합니다.

통합 CA 사용

IdM은 IdM CA에서 서명한 인증서를 사용하여 PKINIT를 구성합니다.

52.2. 현재 PKINIT 구성 표시

IdM은 도메인에서 PKINIT 구성을 쿼리하는 데 사용할 수 있는 여러 명령을 제공합니다.

절차

  • 도메인에서 PKINIT 상태를 확인하려면 ipa pkinit-status 명령을 사용합니다.

    $ ipa pkinit-status
      Server name: server1.example.com
      PKINIT status: enabled
      [...output truncated...]
      Server name: server2.example.com
      PKINIT status: disabled
      [...output truncated...]
    Copy to Clipboard Toggle word wrap

    명령은 PKINIT 구성 상태를 enabled 또는 disabled 로 표시합니다.

    • 활성화됨: PKINIT는 통합 IdM CA에서 서명한 인증서 또는 외부 PKINIT 인증서를 사용하여 구성됩니다.
    • 비활성화됨: IdM은 IdM 서버의 내부 목적으로만 PKINIT를 사용합니다.
  • IdM 클라이언트에 PKINIT를 지원하는 KDC(Kerberos 키 배포 센터)가 있는 IdM 서버를 나열하려면 모든 서버에서 ipa config-show 명령을 사용합니다.

    $ ipa config-show
      Maximum username length: 32
      Home directory base: /home
      Default shell: /bin/sh
      Default users group: ipausers
      [...output truncated...]
      IPA masters capable of PKINIT: server1.example.com
      [...output truncated...]
    Copy to Clipboard Toggle word wrap

52.3. IdM에서 PKINIT 구성

PKINIT가 비활성화된 상태에서 IdM 서버가 실행 중인 경우 다음 단계를 사용하여 활성화합니다. 예를 들어 ipa-server-install 또는 ipa-replica-install 유틸리티를 사용하여 --no-pkinit 옵션을 전달하면 서버가 PKINIT를 비활성화하여 실행되고 있습니다.

사전 요구 사항

  • 설치된 CA(인증 기관)가 있는 모든 IdM 서버가 동일한 도메인 수준에서 실행되고 있는지 확인합니다.

절차

  1. 서버에서 PKINIT가 활성화되어 있는지 확인합니다.

    # kinit admin
    
    Password for admin@IDM.EXAMPLE.COM:
    # ipa pkinit-status --server=server.idm.example.com
    1 server matched
    ----------------
    Server name: server.idm.example.com
    PKINIT status:enabled
    ----------------------------
    Number of entries returned 1
    ----------------------------
    Copy to Clipboard Toggle word wrap

    PKINIT가 비활성화된 경우 다음 출력이 표시됩니다.

    # ipa pkinit-status --server server.idm.example.com
    -----------------
    0 servers matched
    -----------------
    ----------------------------
    Number of entries returned 0
    ----------------------------
    Copy to Clipboard Toggle word wrap

    --server <server_fqdn> 매개변수를 생략하면 명령을 사용하여 PKINIT가 활성화된 모든 서버 를 찾을 수도 있습니다.

  2. CA 없이 IdM을 사용하는 경우:

    1. IdM 서버에서 KDC(Kerberos 키 배포 센터) 인증서에 서명한 CA 인증서를 설치합니다.

      # ipa-cacert-manage install -t CT,C,C ca.pem
      Copy to Clipboard Toggle word wrap
    2. 모든 IPA 호스트를 업데이트하려면 모든 복제본 및 클라이언트에서 ipa-certupdate 명령을 반복합니다.

      # ipa-certupdate
      Copy to Clipboard Toggle word wrap
    3. ipa-cacert-manage list 명령을 사용하여 CA 인증서가 이미 추가되었는지 확인합니다. 예를 들면 다음과 같습니다.

      # ipa-cacert-manage list
      CN=CA,O=Example Organization
      The ipa-cacert-manage command was successful
      Copy to Clipboard Toggle word wrap
    4. ipa-server-certinstall 유틸리티를 사용하여 외부 KDC 인증서를 설치합니다. KDC 인증서는 다음 조건을 충족해야 합니다.

      • CN=fully_qualified_domain_name,certificate_subject_base 로 발행됩니다.
      • Kerberos 주체 krbtgt/realM_NAME@REALM_NAME 이 포함됩니다.
      • KDC 인증을 위한 OID(Object Identifier)가 포함되어 있습니다. 1.3.6.1.5.2.3.5.

        # ipa-server-certinstall --kdc kdc.pem kdc.key
        
        # systemctl restart krb5kdc.service
        Copy to Clipboard Toggle word wrap
    5. PKINIT 상태를 참조하십시오.

      # ipa pkinit-status
        Server name: server1.example.com
        PKINIT status: enabled
        [...output truncated...]
        Server name: server2.example.com
        PKINIT status: disabled
        [...output truncated...]
      Copy to Clipboard Toggle word wrap
  3. CA 인증서가 있는 IdM을 사용하는 경우 다음과 같이 PKINIT를 활성화합니다.

    # ipa-pkinit-manage enable
      Configuring Kerberos KDC (krb5kdc)
      [1/1]: installing X509 Certificate for PKINIT
      Done configuring Kerberos KDC (krb5kdc).
      The ipa-pkinit-manage command was successful
    Copy to Clipboard Toggle word wrap

    IdM CA를 사용하는 경우 명령은 CA에서 PKINIT KDC 인증서를 요청합니다.

53장. IdM Kerberos 키탭 파일 유지

Kerberos keytab 파일이 무엇인지, IdM(Identity Management)에서 이를 사용하여 서비스가 Kerberos로 안전하게 인증하는 방법에 대해 자세히 알아보십시오.

이 정보를 사용하여 중요한 파일을 보호하고 IdM 서비스 간의 통신 문제를 해결해야 하는 이유를 파악할 수 있습니다.

자세한 내용은 다음 항목을 참조하십시오.

53.1. Identity Management에서 Kerberos 키탭 파일을 사용하는 방법

Kerberos keytab은 Kerberos 보안 주체 및 해당 암호화 키를 포함하는 파일입니다. 호스트, 서비스, 사용자 및 스크립트는 키탭을 사용하여 KDC(Kerberos 키 배포 센터)에 안전하게 인증할 수 있습니다.

IdM 서버의 모든 IdM 서비스에는 Kerberos 데이터베이스에 저장된 고유한 Kerberos 사용자가 있습니다. 예를 들어 IdM 서버 east.idm.example.com 에서 DNS 서비스를 제공하는 경우, IdM은 이러한 서비스를 확인하기 위해 두 개의 고유한 DNS Kerberos 주체를 생성하여 이름 지정 규칙 < service>/host.domain.com@REALM.COM:

  • DNS/east.idm.example.com@IDM.EXAMPLE.COM
  • DNS/west.idm.example.com@IDM.EXAMPLE.COM

IdM은 이러한 서비스마다 서버에 키 탭을 생성하여 Kerberos 키의 로컬 사본을 KVNO(Key Version Numbers)와 함께 저장합니다. 예를 들어 기본 키탭 파일 /etc/krb5.keytab 은 Kerberos 영역에서 해당 시스템을 나타내며 로그인 인증에 사용되는 호스트 주체를 저장합니다. NetNamespace는 aes256-cts-hmac-sha1-96es128 -cts-hmac-sha1-96과 같이 지원하는 다양한 암호화 알고리즘에 대한 암호화 키를 생성합니다.

klist 명령을 사용하여 키탭 파일의 내용을 표시할 수 있습니다.

[root@idmserver ~]# klist -ekt /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes256-cts-hmac-sha1-96)
   2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes128-cts-hmac-sha1-96)
   2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia128-cts-cmac)
   2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia256-cts-cmac)
Copy to Clipboard Toggle word wrap

53.2. Kerberos 키탭 파일이 IdM 데이터베이스와 동기화되어 있는지 확인

Kerberos 암호를 변경하면 IdM에서 해당하는 Kerberos 키를 자동으로 생성하고 KVNO(키 버전 번호)를 늘립니다. Kerberos 키탭이 새 키 및 KVNO로 업데이트되지 않은 경우 유효한 키를 검색하기 위해 해당 키탭에 의존하는 모든 서비스는 Kerberos Key Distribution Center(KDC)에 인증되지 못할 수 있습니다.

IdM 서비스 중 하나가 다른 서비스와 통신할 수 없는 경우 다음 절차에 따라 Kerberos 키탭 파일이 IdM 데이터베이스에 저장된 키와 동기화되어 있는지 확인합니다. 동기화되지 않은 경우 업데이트된 키와 KVNO를 사용하여 Kerberos 키 탭을 검색합니다. 이 예에서는 IdM 서버에 대해 업데이트된 DNS 주체를 비교하고 검색합니다.

사전 요구 사항

  • 키탭 파일을 검색하려면 IdM 관리자 계정으로 인증해야 합니다.
  • 다른 사용자가 소유한 키탭 파일을 수정하려면 root 계정으로 인증해야 합니다.

절차

  1. 확인 중인 키 탭에 보안 주체의 KVNO를 표시합니다. 다음 예에서 /etc/named.keytab 파일에는 DNS/server1.idm.example.com@EXAMPLE.COM 의 KVNO가 2인 키가 있습니다.

    [root@server1 ~]# klist -ekt /etc/named.keytab
    Keytab name: FILE:/etc/named.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac)
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
    Copy to Clipboard Toggle word wrap
  2. IdM 데이터베이스에 저장된 보안 주체의 KVNO를 표시합니다. 이 예에서 IdM 데이터베이스의 키 KVNO는 키 탭의 KVNO와 일치하지 않습니다.

    [root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM
    DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 3
    Copy to Clipboard Toggle word wrap
  3. IdM 관리자 계정으로 인증합니다.

    [root@server1 ~]# kinit admin
    Password for admin@IDM.EXAMPLE.COM:
    Copy to Clipboard Toggle word wrap
  4. 보안 주체에 대해 업데이트된 Kerberos 키를 검색하여 해당 키 탭에 저장합니다. 이름이 지정된 사용자가 소유한 /etc/ named.keytab 파일을 수정할 수 있도록 이 단계를 root 사용자로 수행합니다.

    [root@server1 ~]# ipa-getkeytab -s server1.idm.example.com -p DNS/server1.idm.example.com -k /etc/named.keytab
    Copy to Clipboard Toggle word wrap

검증

  1. 키 탭에 보안 주체의 업데이트된 KVNO를 표시합니다.

    [root@server1 ~]# klist -ekt /etc/named.keytab
    Keytab name: FILE:/etc/named.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac)
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
    Copy to Clipboard Toggle word wrap
  2. IdM 데이터베이스에 저장된 보안 주체의 KVNO를 표시하고 키탭의 KVNO와 일치하는지 확인합니다.

    [root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM
    DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 4
    Copy to Clipboard Toggle word wrap

53.3. IdM Kerberos keytab 파일 및 해당 콘텐츠 목록

다음 표에는 IdM Kerberos 키탭 파일의 위치, 콘텐츠, 용도가 표시되어 있습니다.

Expand
표 53.1. 테이블
키탭 위치내용목적

/etc/krb5.keytab

호스트 주체

nfs 주체가 없는 경우 NFS에서 사용하는 로그인 시 사용자 자격 증명 확인

/etc/dirsrv/ds.keytab

LDAP 주체

IdM 데이터베이스에 사용자 인증, IdM 복제본 간에 데이터베이스 콘텐츠를 안전하게 복제

/var/lib/ipa/gssproxy/http.keytab

HTTP 주체

Apache 서버에 인증

/etc/named.keytab

DNS 주체

DNS 레코드 보안 업데이트

/etc/ipa/dnssec/ipa-dnskeysyncd.keytab

ipa-dnskeysyncd principal

LDAP와 OpenDNSSEC 동기화

/etc/pki/pki-tomcat/dogtag.keytab

Dogtag principal

CA(인증 기관)와의 통신

/etc/samba/samba.keytab

CIFS호스트 주체

Samba 서비스와의 통신

/var/lib/sss/keytabs/ad-domain.com.keytab

HOSTNAME$@AD-DOMAIN.COM형식의 활성 디렉터리(AD) 도메인 컨트롤러(DC) 보안 주체

IdM-AD 트러스트를 통해 AD DC와 통신

53.4. IdM 마스터 키의 암호화 유형 보기

IdM(Identity Management) 관리자는 IdM 마스터 키의 암호화 유형을 볼 수 있습니다. 이 키는 IdM Kerberos 배포 센터(KDC)에서 저장 시 다른 모든 주체를 암호화하는 데 사용하는 키입니다. 암호화 유형을 알고 있으면 FIPS 표준과 배포의 호환성을 결정하는 데 도움이 됩니다.

RHEL 8.7부터 암호화 유형은 aes256-cts-hmac-sha384-192 입니다. 이 암호화 유형은 FIPS 140-3을 준수하려는 기본 RHEL 9 FIPS 암호화 정책과 호환됩니다.

이전 RHEL 버전에서 사용된 암호화 유형은 FIPS 140-3 표준을 준수하는 RHEL 9 시스템과 호환되지 않습니다. RHEL 8 FIPS CHAP 배포와 호환되는 FIPS 모드에서 RHEL 9 시스템을 만들려면 RHEL 9 시스템에서 FIPS:AD-SUPPORT 암호화 정책을 활성화합니다.

참고

Microsoft의 Active Directory 구현에서는 SHA-2 HMAC를 사용하는 RFC8009 Kerberos 암호화 유형을 아직 지원하지 않습니다. IdM-AD 신뢰가 구성된 경우 IdM 마스터 키의 암호화 유형이 aes256-cts-hmac-sha384-192 인 경우에도 FIPS:AD-SUPPORT 암호화 하위 정책 사용이 필요합니다.

사전 요구 사항

  • IdM 배포의 모든 RHEL 8 복제본에 대한 루트 액세스 권한이 있습니다.

절차

  • 복제본에서 명령줄 인터페이스의 암호화 유형을 확인합니다.

    # kadmin.local getprinc K/M | grep -E '^Key:'
    Key: vno 1, aes256-cts-hmac-sha1-96
    Copy to Clipboard Toggle word wrap

    출력의 aes256-cts-hmac-sha1-96 키는 IdM 배포가 RHEL 8.6 이하를 실행하는 서버에 설치되었음을 나타냅니다. 출력에 aes256-cts-hmac-sha384-192 키가 있으면 IdM 배포가 RHEL 8.7 이상을 실행하는 서버에 설치되었음을 나타냅니다.

54장. IdM에서 KDC 프록시 사용

일부 관리자는 배포에 기본 Kerberos 포트에 액세스할 수 없도록 선택할 수 있습니다. 사용자, 호스트 및 서비스에서 Kerberos 자격 증명을 얻을 수 있도록 허용하기 위해 HTTPS 서비스를 HTTPS 포트 443을 통해 Kerberos와 통신하는 프록시로 사용할 수 있습니다.

IdM(Identity Management)에서 KKD CP(Kerberos 키 배포 센터 프록시 )는 이 기능을 제공합니다.

IdM 서버에서 KKDCP는 기본적으로 활성화되어 있으며 https://server.idm.example.com/KdcProxy 에서 사용할 수 있습니다. IdM 클라이언트에서 KKDCP에 액세스하도록 Kerberos 구성을 변경해야 합니다.

54.1. KKDCP를 사용하도록 IdM 클라이언트 구성

IdM(Identity Management) 시스템 관리자는 IdM 서버에서 Kerberos KKDCP(키 배포 센터 프록시)를 사용하도록 IdM 클라이언트를 구성할 수 있습니다. 이는 기본 Kerberos 포트에 IdM 서버에서 액세스할 수 없으며 HTTPS 포트 443이 Kerberos 서비스에 액세스하는 유일한 방법인 경우 유용합니다.

사전 요구 사항

  • IdM 클라이언트에 대한 루트 액세스 권한이 있습니다.

절차

  1. 편집을 위해 /etc/krb5.conf 파일을 엽니다.
  2. [realms] 섹션에서 kdc,admin_server, k passwd_server 옵션에 대한 KKDCP의 URL을 입력합니다.

    [realms]
    EXAMPLE.COM = {
      kdc = https://kdc.example.com/KdcProxy
      admin_server = https://kdc.example.com/KdcProxy
      kpasswd_server = https://kdc.example.com/KdcProxy
      default_domain = example.com
    }
    Copy to Clipboard Toggle word wrap

    중복성을 위해 kdc,admin_server, k passwd_server 매개 변수를 여러 번 추가하여 다른 KKDCP 서버를 나타낼 수 있습니다.

  3. sssd 서비스를 다시 시작하여 변경 사항을 적용합니다.

    ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap

54.2. IdM 서버에서 KKDCP가 활성화되었는지 확인

IdM(Identity Management) 서버에서는 특성 및 값 쌍 ipaConfigString=kdcProxyEnabled 가 디렉터리에 존재하는 경우 Apache 웹 서버가 시작될 때마다 KDCP(Kerberos Key Distribution Center Proxy)가 자동으로 활성화됩니다. 이 경우에는 심볼릭 링크 /etc/httpd/conf.d/ipa-kdc-proxy.conf 가 생성됩니다.

권한이 없는 사용자로도 IdM 서버에서 KKDCP가 활성화되어 있는지 확인할 수 있습니다.

절차

  • 심볼릭 링크가 있는지 확인합니다.
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
lrwxrwxrwx. 1 root root 36 Jun 21  2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
Copy to Clipboard Toggle word wrap

출력은 KKDCP가 활성화되었는지 확인합니다.

54.3. IdM 서버에서 KKDCP 비활성화

IdM(Identity Management) 시스템 관리자는 IdM 서버에서 Kerberos KKDCP(키 배포 센터 프록시)를 비활성화할 수 있습니다.

사전 요구 사항

  • IdM 서버에 대한 루트 액세스 권한이 있습니다.

절차

  1. 디렉터리에서 ipaConfigString=kdcProxyEnabled 속성 및 값 쌍을 제거합니다.

    # ipa-ldap-updater /usr/share/ipa/kdcproxy-disable.uldif
    Update complete
    The ipa-ldap-updater command was successful
    Copy to Clipboard Toggle word wrap
  2. httpd 서비스를 다시 시작하십시오.

    # systemctl restart httpd.service
    Copy to Clipboard Toggle word wrap

KKDCP는 현재 IdM 서버에서 비활성화되어 있습니다.

검증 단계

  • 심볼릭 링크가 없는지 확인합니다.

    $ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
    ls: cannot access '/etc/httpd/conf.d/ipa-kdc-proxy.conf': No such file or directory
    Copy to Clipboard Toggle word wrap

54.4. IdM 서버에서 KKDCP 재활성화

IdM 서버에서 KKDCP(Kerberos 키 배포 센터 프록시)는 기본적으로 활성화되어 있으며 https://server.idm.example.com/KdcProxy 에서 사용할 수 있습니다.

KKDCP가 서버에서 비활성화된 경우 다시 활성화할 수 있습니다.

사전 요구 사항

  • IdM 서버에 대한 루트 액세스 권한이 있습니다.

절차

  1. ipaConfigString=kdcProxyEnabled 속성 및 값 쌍을 디렉터리에 추가합니다.

    # ipa-ldap-updater /usr/share/ipa/kdcproxy-enable.uldif
    Update complete
    The ipa-ldap-updater command was successful
    Copy to Clipboard Toggle word wrap
  2. httpd 서비스를 다시 시작하십시오.

    # systemctl restart httpd.service
    Copy to Clipboard Toggle word wrap

KKDCP는 현재 IdM 서버에서 활성화되었습니다.

검증 단계

  • 심볼릭 링크가 있는지 확인합니다.

    $ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
    lrwxrwxrwx. 1 root root 36 Jun 21  2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
    Copy to Clipboard Toggle word wrap

54.5. KKDCP 서버 I 구성

다음 구성을 사용하면 여러 Kerberos 서버가 사용되는 IdM KKDCP와 Active Directory(AD) 영역 간의 전송 프로토콜로 TCP를 활성화할 수 있습니다.

사전 요구 사항

  • 루트 액세스 권한이 있습니다.

절차

  1. /etc/ipa/kdcproxy/kdcproxy.conf 파일의 [global] 섹션에서 use_dns 매개 변수를 false 로 설정합니다.

    [global]
    use_dns = false
    Copy to Clipboard Toggle word wrap
  2. 프록시된 영역 정보를 /etc/ipa/kdcproxy/kdcproxy.conf 파일에 넣습니다. 예를 들어 프록시가 있는 [AD.EXAMPLE.COM] 영역의 경우 다음과 같이 영역 구성 매개변수가 나열됩니다.

    [AD.EXAMPLE.COM]
    kerberos = kerberos+tcp://1.2.3.4:88 kerberos+tcp://5.6.7.8:88
    kpasswd = kpasswd+tcp://1.2.3.4:464 kpasswd+tcp://5.6.7.8:464
    Copy to Clipboard Toggle word wrap
    중요

    영역 구성 매개 변수는 /etc/krb5.confkdc.conf 와 달리 공백으로 구분된 여러 서버를 나열해야 하며, 이 경우 특정 옵션이 여러 번 지정될 수 있습니다.

  3. IdM(Identity Management) 서비스를 다시 시작합니다.

    # ipactl restart
    Copy to Clipboard Toggle word wrap

54.6. KKDCP 서버 II 구성

다음 서버 구성은 DNS 서비스 레코드를 사용하여 통신할 Active Directory(AD) 서버를 찾습니다.

사전 요구 사항

  • 루트 액세스 권한이 있습니다.

절차

  1. /etc/ipa/kdcproxy/kdcproxy.conf 파일에서 use_dns 매개 변수를 true 로 설정합니다.

    [global]
    configs = mit
    use_dns = true
    Copy to Clipboard Toggle word wrap

    configs 매개변수를 사용하면 다른 구성 모듈을 로드할 수 있습니다. 이 경우 해당 구성은 MIT libkrb5 라이브러리에서 읽습니다.

  2. 선택 사항: DNS 서비스 레코드를 사용하지 않으려면 /etc/krb5.conf 파일의 [realms] 섹션에 명시적 AD 서버를 추가합니다. 프록시가 있는 영역이(예: AD.EXAMPLE.COM )인 경우 다음을 추가합니다.

    [realms]
    AD.EXAMPLE.COM = {
        kdc = ad-server.ad.example.com
        kpasswd_server = ad-server.ad.example.com
    }
    Copy to Clipboard Toggle word wrap
  3. IdM(Identity Management) 서비스를 다시 시작합니다.

    # ipactl restart
    Copy to Clipboard Toggle word wrap

55장. IdM 클라이언트의 IdM 사용자에게 sudo 액세스 권한 부여

Identity Management에서 사용자에게 sudo 액세스 권한을 부여하는 방법에 대해 자세히 알아보십시오.

55.1. IdM 클라이언트에서 sudo 액세스

시스템 관리자는 루트가 아닌 사용자가 일반적으로 root 사용자에게 예약된 관리 명령을 실행할 수 있도록 sudo 액세스 권한을 부여할 수 있습니다. 따라서 사용자가 일반적으로 root 사용자로 예약된 관리 명령을 수행해야 하는 경우 sudo 를 사용하여 해당 명령 앞에 추가합니다. 암호를 입력한 후에는 루트 사용자인 것처럼 명령이 실행됩니다. 데이터베이스 서비스 계정과 같은 다른 사용자 또는 그룹으로 sudo 명령을 실행하려면 sudo 규칙에 대해 RunAs 별칭 을 구성할 수 있습니다.

RHEL(Red Hat Enterprise Linux) 8 호스트가 IdM(Identity Management) 클라이언트에 등록된 경우 다음 방법으로 호스트에서 수행할 수 있는 IdM 사용자를 정의하는 sudo 규칙을 지정할 수 있습니다.

  • 로컬로 /etc/sudoers 파일에서
  • IdM에서 중앙 집중식으로

CLI(명령줄 인터페이스) 및 IdM 웹 UI를 사용하여 IdM 클라이언트에 대한 중앙 sudo 규칙을 생성할 수 있습니다.

RHEL 8.4 이상에서는 UNIX 기반 운영 체제가 Kerberos 서비스에 액세스하고 인증하는 기본 방법인 GSSAPI(Generic Security Service Application Programming Interface)를 사용하여 sudo 에 대해 암호 없는 인증을 구성할 수도 있습니다. pam_sss_gss.so PAM(Pluggable Authentication Module)을 사용하여 SSSD 서비스를 통해 GSSAPI 인증을 호출할 수 있으므로 사용자는 유효한 Kerberos 티켓을 사용하여 sudo 명령을 인증할 수 있습니다.

IdM(Identity Management)에서는 특정 IdM 호스트의 IdM 사용자 계정에 대한 sudo 액세스 권한을 특정 명령에 부여할 수 있습니다. 먼저 sudo 명령을 추가한 다음 하나 이상의 명령에 대한 sudo 규칙을 만듭니다.

예를 들어 idm_user _reboot sudo 규칙을 생성하여 idmclient 시스템에서 /usr/sbin/reboot 명령을 실행할 수 있는 권한을 부여합니다.

사전 요구 사항

  • IdM 관리자로 로그인했습니다.
  • IdM에 idm_user 의 사용자 계정을 생성하고 사용자 암호를 생성하여 계정 잠금을 해제합니다. CLI를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 명령줄을 사용하여 사용자 추가를 참조하십시오.
  • idmclient 호스트에 로컬 idm_user 계정이 없습니다. idm_user 사용자는 로컬 /etc/passwd 파일에 나열되지 않습니다.

절차

  1. IdM 관리자로 Kerberos 티켓을 검색합니다.

    [root@idmclient ~]# kinit admin
    Copy to Clipboard Toggle word wrap
  2. /usr/sbin/reboot 명령을 sudo 명령의 IdM 데이터베이스에 추가합니다.

    [root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot
    -------------------------------------
    Added Sudo Command "/usr/sbin/reboot"
    -------------------------------------
      Sudo Command: /usr/sbin/reboot
    Copy to Clipboard Toggle word wrap
  3. idm_user_reboot:라는 sudo 규칙을 만듭니다.

    [root@idmclient ~]# ipa sudorule-add idm_user_reboot
    ---------------------------------
    Added Sudo Rule "idm_user_reboot"
    ---------------------------------
      Rule name: idm_user_reboot
      Enabled: TRUE
    Copy to Clipboard Toggle word wrap
  4. /usr/sbin/reboot 명령을 idm_user_reboot 규칙에 추가합니다.

    [root@idmclient ~]# ipa sudorule-add-allow-command idm_user_reboot --sudocmds '/usr/sbin/reboot'
      Rule name: idm_user_reboot
      Enabled: TRUE
      Sudo Allow Commands: /usr/sbin/reboot
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
  5. IdM idmclient 호스트에 idm_user_reboot 규칙을 적용합니다.

    [root@idmclient ~]# ipa sudorule-add-host idm_user_reboot --hosts idmclient.idm.example.com
    Rule name: idm_user_reboot
    Enabled: TRUE
    Hosts: idmclient.idm.example.com
    Sudo Allow Commands: /usr/sbin/reboot
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
  6. idm_user 계정을 idm_user_reboot 규칙에 추가합니다.

    [root@idmclient ~]# ipa sudorule-add-user idm_user_reboot --users idm_user
    Rule name: idm_user_reboot
    Enabled: TRUE
    Users: idm_user
    Hosts: idmclient.idm.example.com
    Sudo Allow Commands: /usr/sbin/reboot
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
  7. 선택적으로 idm_user_reboot 규칙의 유효성을 정의합니다.

    1. sudo 규칙이 유효한 시간을 정의하려면 ipa sudo rule-mod sudo_rule_name 명령과 --setattr sudonotbefore=DATE 옵션을 사용합니다. DATE 값은 yyyymmddHHMMSSZ 형식을 따라야 하며, 초는 명시적으로 지정해야 합니다. 예를 들어, idm_user_reboot 규칙의 유효성 시작을 2025년 12월 31일 12:34:00으로 설정하려면 다음을 입력합니다.

      [root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotbefore=20251231123400Z
      Copy to Clipboard Toggle word wrap
    2. sudo 규칙이 유효한 중지 시간을 정의하려면 --setattr sudonotafter=DATE 옵션을 사용합니다. 예를 들어, idm_user_reboot 규칙 유효 기간을 2026년 12월 31일 12:34:00으로 설정하려면 다음을 입력합니다.

      [root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotafter=20261231123400Z
      Copy to Clipboard Toggle word wrap
참고

서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.

검증 단계

  1. idmclient 호스트에 idm_user 계정으로 로그인합니다.
  2. idm_user 계정에서 수행할 수 있는 sudo 규칙을 표시합니다.

    [idm_user@idmclient ~]$ sudo -l
    Matching Defaults entries for idm_user on idmclient:
        !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
        env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
        env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
        env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
        env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
        env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
        secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User idm_user may run the following commands on idmclient:
        (root) /usr/sbin/reboot
    Copy to Clipboard Toggle word wrap
  3. sudo 를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면 idm_user 의 암호를 입력합니다.

    [idm_user@idmclient ~]$ sudo /usr/sbin/reboot
    [sudo] password for idm_user:
    Copy to Clipboard Toggle word wrap

IdM(Identity Management) 시스템 관리자는 IdM 사용자 그룹을 사용하여 IdM 사용자에 대한 액세스 권한, 호스트 기반 액세스 제어, sudo 규칙 및 기타 제어를 설정할 수 있습니다. IdM 사용자 그룹은 IdM 도메인 리소스에 대한 액세스 권한을 부여하고 제한합니다.

AD(Active Directory) 사용자와 AD 그룹을 모두 IdM 사용자 그룹에 추가할 수 있습니다. 다음을 수행하려면 다음을 수행합니다.

  1. POSIX가 아닌 외부 IdM 그룹에 AD 사용자 또는 그룹을 추가합니다.
  2. POSIX 이외의 외부 IdM 그룹을 IdM POSIX 그룹에 추가합니다.

그런 다음 POSIX 그룹의 권한을 관리하여 AD 사용자의 권한을 관리할 수 있습니다. 예를 들어 특정 IdM 호스트의 IdM POSIX 사용자 그룹에 특정 명령에 대한 sudo 액세스 권한을 부여할 수 있습니다.

참고

AD 사용자 그룹을 IdM 외부 그룹의 멤버로 추가할 수도 있습니다. 이렇게 하면 단일 AD 영역 내에서 사용자와 그룹 관리를 유지하여 Windows 사용자에 대한 정책을 보다 쉽게 정의할 수 있습니다.

중요

IdM의 SUDO 규칙에 AD 사용자의 ID 덮어쓰기를 사용하지 마십시오. AD 사용자의 ID 덮어쓰기는 AD 사용자가 아닌 AD 사용자의 POSIX 속성만 나타냅니다.

그룹 멤버로 ID 덮어쓰기를 추가할 수 있습니다. 그러나 이 기능은 IdM API에서 IdM 리소스를 관리하는 데만 사용할 수 있습니다. 그룹 멤버가 POSIX 환경으로 확장되지 않으므로 ID 덮어쓰기를 POSIX 환경으로 확장할 수 없으므로 sudo 또는 HBAC(Host-based Access Control) 규칙의 멤버십에는 사용할 수 없습니다.

다음 절차에 따라 administrator@ad-domain.com AD 사용자에게 root 사용자를 위해 예약된 idmclient IdM 호스트에서 /usr/sbin/reboot 명령을 실행할 수 있는 권한을 부여하는 ad_users_reboot sudo 규칙을 생성합니다. administrator@ad-domain.comad_users_external 비POSIX 그룹의 멤버입니다. 다음으로 ad_users POSIX 그룹의 멤버입니다.

사전 요구 사항

  • IdM admin Kerberos 티켓(TGT)이 있습니다.
  • IdM 도메인과 ad-domain.com AD 도메인 사이에 교차 신뢰가 있습니다.
  • idmclient 호스트에 로컬 관리자 계정이 없습니다. administrator 사용자는 로컬 /etc/passwd 파일에 나열되지 않습니다.

절차

  1. administrator@ad-domain 멤버가 있는 ad_users _external 그룹이 포함된 ad_users 그룹을 생성합니다.

    1. 선택 사항: IdM 영역에서 AD 사용자를 관리하는 데 사용할 AD 도메인에서 해당 그룹을 생성하거나 선택합니다. 여러 AD 그룹을 사용하여 IdM 측면의 다른 그룹에 추가할 수 있습니다.
    2. ad_users_external 그룹을 생성하고 --external 옵션을 추가하여 IdM 도메인 외부에서 멤버가 포함되어 있음을 나타냅니다.

      [root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external
      -------------------------------
      Added group "ad_users_external"
      -------------------------------
        Group name: ad_users_external
        Description: AD users external map
      Copy to Clipboard Toggle word wrap
      참고

      여기에서 지정하는 외부 그룹이 Active Directory 보안 그룹 문서에 정의된 대로 글로벌 또는 Universal 그룹 범위가 있는 AD 보안 그룹 인지 확인합니다. 예를 들어, 해당 그룹 범위가 도메인 로컬 이므로 도메인 사용자 또는 도메인 관리자 AD 보안 그룹을 사용할 수 없습니다.

    3. ad_users 그룹을 생성합니다.

      [root@ipaserver ~]# ipa group-add --desc='AD users' ad_users
      ----------------------
      Added group "ad_users"
      ----------------------
        Group name: ad_users
        Description: AD users
        GID: 129600004
      Copy to Clipboard Toggle word wrap
    4. administrator@ad-domain.com AD 사용자를 ad_users_external 에 외부 멤버로 추가합니다.

      [root@ipaserver ~]# ipa group-add-member ad_users_external --external "administrator@ad-domain.com"
       [member user]:
       [member group]:
        Group name: ad_users_external
        Description: AD users external map
        External member: S-1-5-21-3655990580-1375374850-1633065477-513
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap

      AD 사용자는 DOMAIN\user_name 또는 user_name@DOMAIN 과 같은 정규화된 이름으로 식별되어야 합니다. 그러면 AD ID가 사용자의 AD SID에 매핑됩니다. AD 그룹 추가에도 동일하게 적용됩니다.

    5. ad_users_externalad_users 에 멤버로 추가합니다.

      [root@ipaserver ~]# ipa group-add-member ad_users --groups ad_users_external
        Group name: ad_users
        Description: AD users
        GID: 129600004
        Member groups: ad_users_external
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
  2. ad_users 의 멤버에게 idmclient 호스트에서 /usr/sbin/reboot 를 실행할 수 있는 권한을 부여합니다.

    1. /usr/sbin/reboot 명령을 sudo 명령의 IdM 데이터베이스에 추가합니다.

      [root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot
      -------------------------------------
      Added Sudo Command "/usr/sbin/reboot"
      -------------------------------------
        Sudo Command: /usr/sbin/reboot
      Copy to Clipboard Toggle word wrap
    2. ad_users_reboot:라는 sudo 규칙을 만듭니다.

      [root@idmclient ~]# ipa sudorule-add ad_users_reboot
      ---------------------------------
      Added Sudo Rule "ad_users_reboot"
      ---------------------------------
        Rule name: ad_users_reboot
        Enabled: True
      Copy to Clipboard Toggle word wrap
    3. ad_users_reboot 규칙에 /usr/sbin/reboot 명령을 추가합니다.

      [root@idmclient ~]# ipa sudorule-add-allow-command ad_users_reboot --sudocmds '/usr/sbin/reboot'
        Rule name: ad_users_reboot
        Enabled: True
        Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
    4. IdM idmclient 호스트에 ad_users_reboot 규칙을 적용합니다.

      [root@idmclient ~]# ipa sudorule-add-host ad_users_reboot --hosts idmclient.idm.example.com
      Rule name: ad_users_reboot
      Enabled: True
      Hosts: idmclient.idm.example.com
      Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
    5. ad_users _ reboot 규칙에 ad_users 그룹을 추가합니다.

      [root@idmclient ~]# ipa sudorule-add-user ad_users_reboot --groups ad_users
      Rule name: ad_users_reboot
      Enabled: TRUE
      User Groups: ad_users
      Hosts: idmclient.idm.example.com
      Sudo Allow Commands: /usr/sbin/reboot
      -------------------------
      Number of members added 1
      -------------------------
      Copy to Clipboard Toggle word wrap
참고

서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.

검증 단계

  1. idmclient 호스트에 administrator@ad-domain.com, ad_users 그룹의 간접 멤버로 로그인합니다.

    $ ssh administrator@ad-domain.com@ipaclient
    Password:
    Copy to Clipboard Toggle word wrap
  2. 필요한 경우 administrator@ad-domain.com 을 실행할 수 있는 sudo 명령을 표시합니다.

    [administrator@ad-domain.com@idmclient ~]$ sudo -l
    Matching Defaults entries for administrator@ad-domain.com on idmclient:
        !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
        env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
        env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
        env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
        env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
        env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
        secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User administrator@ad-domain.com may run the following commands on idmclient:
        (root) /usr/sbin/reboot
    Copy to Clipboard Toggle word wrap
  3. sudo 를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면 administrator@ad-domain.com 의 암호를 입력합니다.

    [administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot
    [sudo] password for administrator@ad-domain.com:
    Copy to Clipboard Toggle word wrap

IdM(Identity Management)에서는 특정 IdM 호스트의 IdM 사용자 계정에 대한 sudo 액세스 권한을 특정 명령에 부여할 수 있습니다. 먼저 sudo 명령을 추가한 다음 하나 이상의 명령에 대한 sudo 규칙을 만듭니다.

idm_user_reboot sudo 규칙을 생성하여 idm _user 계정에 idm client 시스템에서 /usr/sbin/reboot 명령을 실행할 수 있는 권한을 부여하려면 이 절차를 완료합니다.

사전 요구 사항

  • IdM 관리자로 로그인했습니다.
  • IdM에서 idm_user 에 대한 사용자 계정을 생성하고 사용자의 암호를 만들어 계정의 잠금을 해제했습니다. 명령줄 인터페이스를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 명령줄을 사용하여 사용자 추가를 참조하십시오.
  • idm client 호스트에 로컬 idm_user 계정이 없습니다. idm_user 사용자는 로컬 /etc/passwd 파일에 나열되지 않습니다.

절차

  1. /usr/sbin/reboot 명령을 sudo 명령의 IdM 데이터베이스에 추가합니다.

    1. 정책Sudo → Sudo 명령으로 이동합니다.
    2. 오른쪽 상단 모서리에서 Add (추가)를 클릭하여 Add sudo 명령 대화 상자를 엽니다.
    3. sudo:/usr/sbin/reboot 를 사용하여 사용자가 수행할 수 있는 명령을 입력합니다.

      그림 55.1. IdM sudo 명령 추가

    4. 추가를 클릭합니다.
  2. sudo 명령 항목을 사용하여 idm_user가 idm client 시스템을 재부팅할 수 있도록 sudo 규칙을 생성합니다.

    1. 정책Sudo → Sudo 규칙으로 이동합니다.
    2. 오른쪽 상단 모서리에서 Add(추가 )를 클릭하여 Add sudo rule( sudo 규칙 추가) 대화 상자를 엽니다.
    3. sudo 규칙의 이름을 idm_user_reboot 로 입력합니다.
    4. Add and Edit(추가 및 편집)를 클릭합니다.
    5. 사용자를 지정합니다.

      1. who(사용자 ) 섹션에서 Specified Users and Groups(지정된 사용자 및 그룹 ) 라디오 단추를 선택합니다.
      2. User 카테고리에서 규칙이 하위 섹션에 적용되는 경우 Add(추가)를 클릭하여 Add users into sudo rule "idm_user_reboot" 대화 상자를 엽니다.
      3. Add users into sudo rule "idm_user_reboot" 대화 상자의 Available 열에서 idm_user 확인란을 선택하고 Prospective 열로 이동합니다.
      4. 추가를 클릭합니다.
    6. 호스트를 지정합니다.

      1. Access this host (이 호스트에 액세스) 섹션에서 Specified Hosts and Groups(지정된 호스트 및 그룹 ) 라디오 단추를 선택합니다.
      2. 호스트 범주에서 이 규칙이 하위 섹션에 적용되는 경우 Add(추가 )를 클릭하여 Add hosts into sudo rule "idm_user_reboot" 대화 상자를 엽니다.
      3. Add hosts to sudo rule "idm_user_reboot" 대화 상자의 Available 열에서 idmclient.idm.example.com 확인란을 선택하고 Prospective 열로 이동합니다.
      4. 추가를 클릭합니다.
    7. 명령을 지정합니다.

      1. Command 카테고리에서 규칙이 Run Commands(명령 실행) 섹션의 하위 섹션에 적용되는 경우 Specified Commands and Groups(지정된 명령) 및 Groups (그룹) 라디오 버튼을 선택합니다.
      2. Sudo Allow Commands (Sudo Allow Commands) 하위 섹션에서 Add allow sudo 명령을 sudo rule "idm_user_reboot" 대화 상자에 엽니다.
      3. Add allow sudo 명령을 sudo 규칙 "idm_user_reboot" 대화 상자의 Available 열에서 /usr/sbin/reboot 확인란을 선택하고 Prospective 열로 이동합니다.
      4. Add(추가 )를 클릭하여 idm_sudo_reboot 페이지로 돌아갑니다.

      그림 55.2. IdM sudo 규칙 추가

    8. 왼쪽 상단 모서리에서 Save(저장 )를 클릭합니다.

새 규칙은 기본적으로 활성화되어 있습니다.

참고

서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.

검증 단계

  1. idmclient에 idm _user 로 로그인합니다.
  2. sudo 를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면 idm_user 의 암호를 입력합니다.

    $ sudo /usr/sbin/reboot
    [sudo] password for idm_user:
    Copy to Clipboard Toggle word wrap

sudo 규칙이 올바르게 구성되면 시스템이 재부팅됩니다.

IdM에서는 RunAs 별칭 을 사용하여 sudo 규칙을 구성하여 sudo 명령을 다른 사용자 또는 그룹으로 실행할 수 있습니다. 예를 들어 데이터베이스 애플리케이션을 호스팅하는 IdM 클라이언트가 있을 수 있으며 해당 애플리케이션에 해당하는 로컬 서비스 계정으로 명령을 실행해야 합니다.

이 예제를 사용하면 idm _ user 계정이 idmclient 호스트에서 타사 서비스 계정으로 /opt/third-party-app/bin/report 명령을 실행할 수 있도록 run_ third-party-app _report 라는 명령줄에서 sudo 규칙을 만듭니다.

사전 요구 사항

  • IdM 관리자로 로그인했습니다.
  • IdM에서 idm_user 에 대한 사용자 계정을 생성하고 사용자의 암호를 만들어 계정의 잠금을 해제했습니다. CLI를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 명령줄을 사용하여 사용자 추가를 참조하십시오.
  • idm client 호스트에 로컬 idm_user 계정이 없습니다. idm_user 사용자는 로컬 /etc/passwd 파일에 나열되지 않습니다.
  • idmclient 호스트에 third-party-app 이라는 사용자 지정 애플리케이션이 설치되어 있어야 합니다.
  • third-party-app 애플리케이션의 report 명령은 /opt/third-party-app/bin/report 디렉터리에 설치됩니다.
  • 타사-애플리케이션 애플리케이션에 대한 명령을 실행하기 위한 third partyapp 이라는 로컬 서비스 계정을 생성했습니다.

절차

  1. IdM 관리자로 Kerberos 티켓을 검색합니다.

    [root@idmclient ~]# kinit admin
    Copy to Clipboard Toggle word wrap
  2. /opt/third-party-app/bin/report 명령을 sudo 명령의 IdM 데이터베이스에 추가합니다.

    [root@idmclient ~]# ipa sudocmd-add /opt/third-party-app/bin/report
    ----------------------------------------------------
    Added Sudo Command "/opt/third-party-app/bin/report"
    ----------------------------------------------------
      Sudo Command: /opt/third-party-app/bin/report
    Copy to Clipboard Toggle word wrap
  3. run_third-party-app_report 라는 sudo 규칙을 만듭니다.

    [root@idmclient ~]# ipa sudorule-add run_third-party-app_report
    --------------------------------------------
    Added Sudo Rule "run_third-party-app_report"
    --------------------------------------------
      Rule name: run_third-party-app_report
      Enabled: TRUE
    Copy to Clipboard Toggle word wrap
  4. users =<user> 옵션을 사용하여 sudorule-add-runasuser 명령에 RunAs 사용자를 지정합니다.

    [root@idmclient ~]# ipa sudorule-add-runasuser run_third-party-app_report --users=thirdpartyapp
      Rule name: run_third-party-app_report
      Enabled: TRUE
      RunAs External User: thirdpartyapp
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap

    로컬 서비스 계정 또는 Active Directory 사용자와 같이 IdM 외부에 지정된 사용자(또는 --groups=* )는 IdM 외부에 있을 수 있습니다. 그룹 이름에 대해 % 접두사를 추가하지 마십시오.

  5. /opt/ bad-party-app/bin/report 명령을 run_knative-party-app_report 규칙에 추가합니다.

    [root@idmclient ~]# ipa sudorule-add-allow-command run_third-party-app_report --sudocmds '/opt/third-party-app/bin/report'
    Rule name: run_third-party-app_report
    Enabled: TRUE
    Sudo Allow Commands: /opt/third-party-app/bin/report
    RunAs External User: thirdpartyapp
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
  6. IdM idmclient 호스트에 run_third-party-app_report 규칙을 적용합니다.

    [root@idmclient ~]# ipa sudorule-add-host run_third-party-app_report --hosts idmclient.idm.example.com
    Rule name: run_third-party-app_report
    Enabled: TRUE
    Hosts: idmclient.idm.example.com
    Sudo Allow Commands: /opt/third-party-app/bin/report
    RunAs External User: thirdpartyapp
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
  7. idm_user 계정을 run_third-party-app_report 규칙에 추가합니다.

    [root@idmclient ~]# ipa sudorule-add-user run_third-party-app_report --users idm_user
    Rule name: run_third-party-app_report
    Enabled: TRUE
    Users: idm_user
    Hosts: idmclient.idm.example.com
    Sudo Allow Commands: /opt/third-party-app/bin/report
    RunAs External User: thirdpartyapp
    -------------------------
    Number of members added 1
    Copy to Clipboard Toggle word wrap
참고

서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.

검증 단계

  1. idmclient 호스트에 idm _user 계정으로 로그인합니다.
  2. 새 sudo 규칙을 테스트합니다.

    1. idm_user 계정이 수행할 수 있는 sudo 규칙을 표시합니다.

      [idm_user@idmclient ~]$ sudo -l
      Matching Defaults entries for idm_user@idm.example.com on idmclient:
          !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
          env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
          env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
          env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
          env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
          env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
          secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
      
      User idm_user@idm.example.com may run the following commands on idmclient:
          (thirdpartyapp) /opt/third-party-app/bin/report
      Copy to Clipboard Toggle word wrap
    2. third partyapp 서비스 계정으로 report 명령을 실행합니다.

      [idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report
      [sudo] password for idm_user@idm.example.com:
      Executing report...
      Report successful.
      Copy to Clipboard Toggle word wrap

IdM에서는 RunAs 별칭 을 사용하여 sudo 규칙을 구성하여 sudo 명령을 다른 사용자 또는 그룹으로 실행할 수 있습니다. 예를 들어 데이터베이스 애플리케이션을 호스팅하는 IdM 클라이언트가 있을 수 있으며 해당 애플리케이션에 해당하는 로컬 서비스 계정으로 명령을 실행해야 합니다.

이 예제를 사용하여 idm _ user 계정이 idmclient 호스트에서 타사 서비스 계정으로 /opt/third-party-app/bin/report 명령을 실행할 수 있도록 run_ third-party-app_report 라는 IdM WebUI에 sudo 규칙을 생성합니다.

사전 요구 사항

  • IdM 관리자로 로그인했습니다.
  • IdM에서 idm_user 에 대한 사용자 계정을 생성하고 사용자의 암호를 만들어 계정의 잠금을 해제했습니다. CLI를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 명령줄을 사용하여 사용자 추가를 참조하십시오.
  • idm client 호스트에 로컬 idm_user 계정이 없습니다. idm_user 사용자는 로컬 /etc/passwd 파일에 나열되지 않습니다.
  • idmclient 호스트에 third-party-app 이라는 사용자 지정 애플리케이션이 설치되어 있어야 합니다.
  • third-party-app 애플리케이션의 report 명령은 /opt/third-party-app/bin/report 디렉터리에 설치됩니다.
  • 타사-애플리케이션 애플리케이션에 대한 명령을 실행하기 위한 third partyapp 이라는 로컬 서비스 계정을 생성했습니다.

절차

  1. /opt/third-party-app/bin/report 명령을 sudo 명령의 IdM 데이터베이스에 추가합니다.

    1. 정책Sudo → Sudo 명령으로 이동합니다.
    2. 오른쪽 상단 모서리에서 Add (추가)를 클릭하여 Add sudo 명령 대화 상자를 엽니다.
    3. 명령 /opt/third-party-app/bin/report 를 입력합니다.

    4. 추가를 클릭합니다.
  2. sudo 명령 항목을 사용하여 새 sudo 규칙을 만듭니다.

    1. 정책Sudo → Sudo 규칙으로 이동합니다.
    2. 오른쪽 상단 모서리에서 Add(추가 )를 클릭하여 Add sudo rule( sudo 규칙 추가) 대화 상자를 엽니다.
    3. sudo 규칙 이름 run_third-party-app_report 를 입력합니다.

    4. Add and Edit(추가 및 편집)를 클릭합니다.
    5. 사용자를 지정합니다.

      1. who(사용자 ) 섹션에서 Specified Users and Groups(지정된 사용자 및 그룹 ) 라디오 단추를 선택합니다.
      2. User(사용자) 카테고리에서 규칙이 하위 섹션에 적용되는 경우 Add(추가 )를 클릭하여 sudo 규칙 "run_third-party-app_report" 대화 상자를 엽니다.
      3. Available (사용 가능) 열의 Add users into sudo 규칙 "run_third-party-app_report" 대화 상자에서 idm_user 확인란을 선택한 다음 Prospective 열로 이동합니다.

      4. 추가를 클릭합니다.
    6. 호스트를 지정합니다.

      1. Access this host (이 호스트에 액세스) 섹션에서 Specified Hosts and Groups(지정된 호스트 및 그룹 ) 라디오 단추를 선택합니다.
      2. 이 규칙이 하위 섹션에 적용되는 호스트 범주에서 Add(추가 )를 클릭하여 sudo 규칙 "run_third-party-app_report" 대화 상자를 엽니다.
      3. Available (사용 가능) 열의 Add hosts rule "run_third-party-app_report" 대화 상자에서 idmclient.idm.example.com 확인란을 선택하여 Prospective 열로 이동합니다.

      4. 추가를 클릭합니다.
    7. 명령을 지정합니다.

      1. Command 카테고리에서 규칙이 Run Commands(명령 실행) 섹션의 하위 섹션에 적용되는 경우 Specified Commands and Groups(지정된 명령) 및 Groups (그룹) 라디오 버튼을 선택합니다.
      2. Sudo Allow Commands 하위 섹션에서 Add allow sudo 명령을 sudo 규칙 "run_third-party-app_report" 대화 상자에 엽니다.
      3. Add allow sudo 명령을 sudo 규칙 "run_third-party-app_report" 대화 상자에서 Available 열의 /opt/third-party-app/bin/report 확인란을 선택하여 Prospective 열로 이동합니다.

      4. Add(추가 )를 클릭하여 run_third-party-app_report 페이지로 돌아갑니다.
    8. RunAs 사용자를 지정합니다.

      1. As whom 섹션에서 Specified Users and Groups(지정된 사용자 및 그룹 ) 라디오 단추를 선택합니다.
      2. RunAs Users(As 사용자 실행) 하위 섹션에서 Add As(추가)를 클릭하여 AddAs users into sudo 규칙 "run_third-party-app_report" 대화 상자를 엽니다.
      3. RunAs 사용자를 sudo 규칙 "run_third-party-app_report" 대화 상자에서 External 상자에 third partyapp 서비스 계정을 입력하고 Prospective 열로 이동합니다.

      4. Add(추가 )를 클릭하여 run_third-party-app_report 페이지로 돌아갑니다.
    9. 왼쪽 상단 모서리에서 Save(저장 )를 클릭합니다.

새 규칙은 기본적으로 활성화되어 있습니다.

그림 55.3. sudo 규칙의 세부 정보

참고

서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.

검증 단계

  1. idmclient 호스트에 idm _user 계정으로 로그인합니다.
  2. 새 sudo 규칙을 테스트합니다.

    1. idm_user 계정이 수행할 수 있는 sudo 규칙을 표시합니다.

      [idm_user@idmclient ~]$ sudo -l
      Matching Defaults entries for idm_user@idm.example.com on idmclient:
          !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
          env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
          env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
          env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
          env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
          env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
          secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
      
      User idm_user@idm.example.com may run the following commands on idmclient:
          (thirdpartyapp) /opt/third-party-app/bin/report
      Copy to Clipboard Toggle word wrap
    2. third partyapp 서비스 계정으로 report 명령을 실행합니다.

      [idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report
      [sudo] password for idm_user@idm.example.com:
      Executing report...
      Report successful.
      Copy to Clipboard Toggle word wrap

55.7. IdM 클라이언트에서 sudo에 대해 GSSAPI 인증 활성화

다음 절차에서는 sudo pam_sss_gss.so PAM 모듈을 통해 IdM 클라이언트에서 GSSAPI(Generic Security Service Application Program Interface) 인증 활성화를 설명합니다. 이 구성을 사용하면 IdM 사용자가 Kerberos 티켓을 사용하여 sudo 명령에 인증할 수 있습니다.

사전 요구 사항

  • IdM 호스트에 적용되는 IdM 사용자에 대한 sudo 규칙을 생성했습니다. 이 예제에서는 idm_user 계정에 idm_ sbin/reboot 명령을 실행할 수 있는 권한을 부여하는 idm _user_ reboot sudo 규칙을 생성했습니다.
  • idmclient 호스트는 RHEL 8.4 이상을 실행하고 있습니다.
  • /etc/ pam.d / 디렉토리에서 /etc/sssd/sssd.conf 파일과 PAM 파일을 수정하려면 root 권한이 필요합니다.

절차

  1. /etc/sssd/sssd.conf 구성 파일을 엽니다.
  2. 다음 항목을 [domain/<domain_name>] 섹션에 추가합니다.

    [domain/<domain_name>]
    pam_gssapi_services = sudo, sudo-i
    Copy to Clipboard Toggle word wrap
  3. /etc/sssd/sssd.conf 파일을 저장하고 닫습니다.
  4. SSSD 서비스를 다시 시작하여 구성 변경 사항을 로드합니다.

    [root@idmclient ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap
  5. RHEL 8.8 이상을 실행하는 경우:

    1. [선택 사항] sssd authselect 프로필을 선택한 경우 확인합니다.

      # authselect current
      Profile ID: sssd
      Copy to Clipboard Toggle word wrap

      출력에 sssd authselect 프로필이 선택됩니다.

    2. sssd authselect 프로필이 선택된 경우 GSSAPI 인증을 활성화합니다.

      # authselect enable-feature with-gssapi
      Copy to Clipboard Toggle word wrap
    3. sssd authselect 프로필이 선택되어 있지 않으면 해당 프로필을 선택하고 GSSAPI 인증을 활성화합니다.

      # authselect select sssd with-gssapi
      Copy to Clipboard Toggle word wrap
  6. RHEL 8.7 이하를 실행하는 경우:

    1. /etc/pam.d/sudo PAM 구성 파일을 엽니다.
    2. 다음 항목을 /etc/pam.d/sudo 파일에 있는 auth 섹션의 첫 번째 행으로 추가합니다.

      #%PAM-1.0
      auth sufficient pam_sss_gss.so
      auth       include      system-auth
      account    include      system-auth
      password   include      system-auth
      session    include      system-auth
      Copy to Clipboard Toggle word wrap
    3. /etc/pam.d/sudo 파일을 저장하고 닫습니다.

검증 단계

  1. idm_user 계정으로 호스트에 로그인합니다.

    [root@idm-client ~]# ssh -l idm_user@idm.example.com localhost
    idm_user@idm.example.com's password:
    Copy to Clipboard Toggle word wrap
  2. 티켓이 idm_user 계정으로 티켓을 부여했는지 확인합니다.

    [idmuser@idmclient ~]$ klist
    Ticket cache: KCM:1366201107
    Default principal: idm_user@IDM.EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    01/08/2021 09:11:48  01/08/2021 19:11:48  krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
    	renew until 01/15/2021 09:11:44
    Copy to Clipboard Toggle word wrap
  3. (선택 사항) idm_user 계정에 대한 Kerberos 인증 정보가 없는 경우 현재 Kerberos 자격 증명을 삭제하고 올바른 정보를 요청합니다.

    [idm_user@idmclient ~]$ kdestroy -A
    
    [idm_user@idmclient ~]$ kinit idm_user@IDM.EXAMPLE.COM
    Password for idm_user@idm.example.com:
    Copy to Clipboard Toggle word wrap
  4. 암호를 지정하지 않고 sudo 를 사용하여 시스템을 재부팅합니다.

    [idm_user@idmclient ~]$ sudo /usr/sbin/reboot
    Copy to Clipboard Toggle word wrap

다음 절차에서는 sudo pam_sss_gss.so PAM 모듈을 통해 IdM 클라이언트에서 GSSAPI(Generic Security Service Application Program Interface) 인증 활성화를 설명합니다. 또한 스마트 카드로 로그인한 사용자만 Kerberos 티켓을 사용하여 해당 명령에 인증됩니다.

참고

이 절차를 템플릿으로 사용하여 다른 PAM 인식 서비스에 대해 SSSD를 사용하여 GSSAPI 인증을 구성하고, Kerberos 티켓에 특정 인증 표시기가 연결된 사용자에게만 액세스를 제한할 수 있습니다.

사전 요구 사항

  • IdM 호스트에 적용되는 IdM 사용자에 대한 sudo 규칙을 생성했습니다. 이 예제에서는 idm_user 계정에 idm_ sbin/reboot 명령을 실행할 수 있는 권한을 부여하는 idm _user_ reboot sudo 규칙을 생성했습니다.
  • idmclient 호스트에 대해 스마트 카드 인증을 구성했습니다.
  • idmclient 호스트는 RHEL 8.4 이상을 실행하고 있습니다.
  • /etc/ pam.d / 디렉토리에서 /etc/sssd/sssd.conf 파일과 PAM 파일을 수정하려면 root 권한이 필요합니다.

절차

  1. /etc/sssd/sssd.conf 구성 파일을 엽니다.
  2. 다음 항목을 [domain/<domain_name>] 섹션에 추가합니다.

    [domain/<domain_name>]
    pam_gssapi_services = sudo, sudo-i
    pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
    Copy to Clipboard Toggle word wrap
  3. /etc/sssd/sssd.conf 파일을 저장하고 닫습니다.
  4. SSSD 서비스를 다시 시작하여 구성 변경 사항을 로드합니다.

    [root@idmclient ~]# systemctl restart sssd
    Copy to Clipboard Toggle word wrap
  5. /etc/pam.d/sudo PAM 구성 파일을 엽니다.
  6. 다음 항목을 /etc/pam.d/sudo 파일에 있는 auth 섹션의 첫 번째 행으로 추가합니다.

    #%PAM-1.0
    auth sufficient pam_sss_gss.so
    auth       include      system-auth
    account    include      system-auth
    password   include      system-auth
    session    include      system-auth
    Copy to Clipboard Toggle word wrap
  7. /etc/pam.d/sudo 파일을 저장하고 닫습니다.
  8. /etc/pam.d/sudo-i PAM 구성 파일을 엽니다.
  9. 다음 항목을 /etc/pam.d/sudo-i 파일에 있는 auth 섹션의 첫 행으로 추가합니다.

    #%PAM-1.0
    auth sufficient pam_sss_gss.so
    auth       include      sudo
    account    include      sudo
    password   include      sudo
    session    optional     pam_keyinit.so force revoke
    session    include      sudo
    Copy to Clipboard Toggle word wrap
  10. /etc/pam.d/sudo-i 파일을 저장하고 닫습니다.

검증 단계

  1. idm_user 계정으로 호스트에 로그인하고 스마트 카드로 인증합니다.

    [root@idmclient ~]# ssh -l idm_user@idm.example.com localhost
    PIN for smart_card
    Copy to Clipboard Toggle word wrap
  2. 스마트 카드 사용자로 티켓이 제공된지 확인합니다.

    [idm_user@idmclient ~]$ klist
    Ticket cache: KEYRING:persistent:1358900015:krb_cache_TObtNMd
    Default principal: idm_user@IDM.EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    02/15/2021 16:29:48  02/16/2021 02:29:48  krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
    	renew until 02/22/2021 16:29:44
    Copy to Clipboard Toggle word wrap
  3. idm_user 계정이 수행할 수 있는 sudo 규칙을 표시합니다.

    [idm_user@idmclient ~]$ sudo -l
    Matching Defaults entries for idmuser on idmclient:
        !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
        env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
        env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
        env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
        env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
        env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME",
        secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
    
    User idm_user may run the following commands on idmclient:
        (root) /usr/sbin/reboot
    Copy to Clipboard Toggle word wrap
  4. 암호를 지정하지 않고 sudo 를 사용하여 시스템을 재부팅합니다.

    [idm_user@idmclient ~]$ sudo /usr/sbin/reboot
    Copy to Clipboard Toggle word wrap

55.9. PAM 서비스에 대한 GSSAPI 인증을 제어하는 SSSD 옵션

/etc/sssd/sssd.conf 구성 파일에 다음 옵션을 사용하여 SSSD 서비스 내에서 GSSAPI 구성을 조정할 수 있습니다.

pam_gssapi_services
SSSD를 사용한 GSSAPI 인증은 기본적으로 비활성화되어 있습니다. 이 옵션을 사용하여 pam_ss_gss.so PAM 모듈을 사용하여 GSSAPI 인증을 시도할 수 있는 PAM 서비스의 쉼표로 구분된 목록을 지정할 수 있습니다. GSSAPI 인증을 명시적으로 비활성화하려면 이 옵션을 - 로 설정합니다.
pam_gssapi_indicators_map

이 옵션은 IdM(Identity Management) 도메인에만 적용됩니다. 이 옵션을 사용하여 서비스에 대한 PAM 액세스 권한을 부여하는 데 필요한 Kerberos 인증 표시기를 나열합니다. 쌍은 <PAM_service> :_< required_authentication_indicator>_ 형식이어야 합니다.

유효한 인증 표시기는 다음과 같습니다.

  • 이중 인증을 위한 OTP
  • RADIUS 인증을 위한 준비
  • PKINIT, 스마트 카드 또는 인증서 인증을 위한 Pk init
  • 강화된 암호를 위한 강화
pam_gssapi_check_upn
이 옵션은 활성화되어 있으며 기본적으로 true 로 설정됩니다. 이 옵션을 활성화하면 SSSD 서비스에 사용자 이름이 Kerberos 자격 증명과 일치해야 합니다. false인 경우 pam_sss_gss.so PAM 모듈은 필수 서비스 티켓을 가져올 수 있는 모든 사용자를 인증합니다.

다음 옵션을 사용하면 sudo 및 sudo -i 서비스에 Kerberos 인증을 사용하려면 sudo 사용자가 일회성 암호로 인증해야 하며 사용자 이름은 Kerberos 주체와 일치해야 합니다. 이러한 설정은 [pam] 섹션에 있으므로 모든 도메인에 적용됩니다.

[pam]
pam_gssapi_services = sudo, sudo-i
pam_gssapi_indicators_map = sudo:otp
pam_gssapi_check_upn = true
Copy to Clipboard Toggle word wrap

이러한 옵션을 개별 [domain] 섹션에 설정하여 [pam] 섹션의 전역 값을 덮어쓸 수도 있습니다. 다음 옵션은 각 도메인에 다른 GSSAPI 설정을 적용합니다.

idm.example.com 도메인의 경우
  • sudo 및 sudo -i 서비스에 대해 GSSAPI 인증을 활성화합니다.
  • sudo 명령에는 인증서 또는 스마트 카드 인증 인증기가 필요합니다.
  • sudo -i 명령에 대해 일회성 암호 인증 프로그램이 필요합니다.
  • 일치하는 사용자 이름과 Kerberos 주체 적용.
ad.example.com 도메인의 경우
  • sudo 서비스에 대해서만 GSSAPI 인증을 활성화합니다.
  • 일치하는 사용자 이름과 주체를 적용하지 마십시오.
[domain/idm.example.com]
pam_gssapi_services = sudo, sudo-i
pam_gssapi_indicators_map = sudo:pkinit, sudo-i:otp
pam_gssapi_check_upn = true
...

[domain/ad.example.com]
pam_gssapi_services = sudo
pam_gssapi_check_upn = false
...
Copy to Clipboard Toggle word wrap

55.10. sudo에 대한 GSSAPI 인증 문제 해결

IdM에서 Kerberos 티켓을 사용하여 sudo 서비스를 인증할 수 없는 경우 다음 시나리오를 사용하여 구성 문제를 해결합니다.

사전 요구 사항

절차

  • 다음 오류가 표시되면 Kerberos 서비스에서 호스트 이름을 기반으로 서비스 티켓에 대한 올바른 영역을 확인할 수 없습니다.

    Server not found in Kerberos database
    Copy to Clipboard Toggle word wrap

    이 경우 /etc/krb5.conf Kerberos 구성 파일의 [domain_realm] 섹션에 직접 호스트 이름을 추가합니다.

    [idm-user@idm-client ~]$ cat /etc/krb5.conf
    ...
    
    [domain_realm]
     .example.com = EXAMPLE.COM
     example.com = EXAMPLE.COM
     server.example.com = EXAMPLE.COM
    Copy to Clipboard Toggle word wrap
  • 다음 오류가 표시되면 Kerberos 인증 정보가 없습니다.

    No Kerberos credentials available
    Copy to Clipboard Toggle word wrap

    이 경우 kinit 유틸리티를 사용하여 Kerberos 인증 정보를 검색하거나 SSSD로 인증합니다.

    [idm-user@idm-client ~]$ kinit idm-user@IDM.EXAMPLE.COM
    Password for idm-user@idm.example.com:
    Copy to Clipboard Toggle word wrap
  • /var/log/sssd/sssd_pam.log 로그 파일에 다음 중 하나가 표시되면 Kerberos 자격 증명이 현재 로그인한 사용자의 사용자 이름과 일치하지 않습니다.

    User with UPN [<UPN>] was not found.
    
    UPN [<UPN>] does not match target user [<username>].
    Copy to Clipboard Toggle word wrap

    이 경우 SSSD로 인증했는지 또는 /etc/sssd/sssd.conf 파일에서 pam_gssapi_check_upn 옵션을 비활성화하는 것이 좋습니다.

    [idm-user@idm-client ~]$ cat /etc/sssd/sssd.conf
    ...
    
    pam_gssapi_check_upn = false
    Copy to Clipboard Toggle word wrap
  • 추가 문제 해결을 위해 pam_sss_gss.so PAM 모듈에 대한 디버깅 출력을 활성화할 수 있습니다.

    • PAM 파일의 모든 pam_sss_gss.so 항목(예: /etc/pam.d/ sudo 및 /etc/pam.d/sudo -i)의 끝에 debug 옵션을 추가합니다.

      [root@idm-client ~]# cat /etc/pam.d/sudo
      #%PAM-1.0
      auth       sufficient   pam_sss_gss.so   debug
      auth       include      system-auth
      account    include      system-auth
      password   include      system-auth
      session    include      system-auth
      Copy to Clipboard Toggle word wrap
      [root@idm-client ~]# cat /etc/pam.d/sudo-i
      #%PAM-1.0
      auth       sufficient   pam_sss_gss.so   debug
      auth       include      sudo
      account    include      sudo
      password   include      sudo
      session    optional     pam_keyinit.so force revoke
      session    include      sudo
      Copy to Clipboard Toggle word wrap
    • pam_sss_gss.so 모듈로 인증을 시도하고 콘솔 출력을 검토합니다. 이 예제에서 사용자에게 Kerberos 자격 증명이 없습니다.

      [idm-user@idm-client ~]$ sudo ls -l /etc/sssd/sssd.conf
      pam_sss_gss: Initializing GSSAPI authentication with SSSD
      pam_sss_gss: Switching euid from 0 to 1366201107
      pam_sss_gss: Trying to establish security context
      pam_sss_gss: SSSD User name: idm-user@idm.example.com
      pam_sss_gss: User domain: idm.example.com
      pam_sss_gss: User principal:
      pam_sss_gss: Target name: host@idm.example.com
      pam_sss_gss: Using ccache: KCM:
      pam_sss_gss: Acquiring credentials, principal name will be derived
      pam_sss_gss: Unable to read credentials from [KCM:] [maj:0xd0000, min:0x96c73ac3]
      pam_sss_gss: GSSAPI: Unspecified GSS failure.  Minor code may provide more information
      pam_sss_gss: GSSAPI: No credentials cache found
      pam_sss_gss: Switching euid from 1366200907 to 0
      pam_sss_gss: System error [5]: Input/output error
      Copy to Clipboard Toggle word wrap

IdM(Identity Management)에서는 특정 명령에 대한 sudo 액세스 권한이 특정 IdM 호스트의 IdM 사용자 계정에 부여되도록 할 수 있습니다.

idm_user_reboot 라는 sudo 규칙이 있는지 확인하려면 다음 절차를 완료합니다. 규칙은 idm_useridmclient 시스템에서 /usr/sbin/reboot 명령을 실행할 수 있는 권한을 부여합니다.

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • IdM에 idm_user 의 사용자 계정이 있는지 확인하고 사용자의 암호를 만들어 계정의 잠금을 해제했습니다. 명령줄 인터페이스를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 링크를 참조하십시오. 명령줄을 사용하여 사용자 추가.
  • idm client 에 로컬 idm_user 계정이 없습니다. idm_user 사용자는 idmclient/etc/passwd 파일에 나열되지 않습니다.

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaservers 를 정의합니다.

    [ipaservers]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 하나 이상의 sudo 명령을 추가합니다.

    1. sudo 명령의 IdM 데이터베이스에 /usr/sbin/ reboot 명령이 있는지 확인하는 ensure-reboot -sudocmd-is-present.yml Ansible 플레이북을 생성합니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

      ---
      - name: Playbook to manage sudo command
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
        # Ensure sudo command is present
        - ipasudocmd:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: /usr/sbin/reboot
            state: present
      Copy to Clipboard Toggle word wrap
    2. 플레이북을 실행합니다.

      $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
      Copy to Clipboard Toggle word wrap
  3. 명령을 참조하는 sudo 규칙을 생성합니다.

    1. sudo 명령 항목을 사용하여 sudo 규칙이 있는지 확인하는 ensure-sudorule-for-idmuser-on-idmclient-is-present.yml Ansible 플레이북을 만듭니다. sudo 규칙을 사용하면 idm_useridmclient 시스템을 재부팅할 수 있습니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/sudorule/ensure-sudorule-is-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

      ---
      - name: Tests
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
        # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient
        - ipasudorule:
            ipaadmin_password: "{{ ipaadmin_password }}"
            name: idm_user_reboot
            description: A test sudo rule.
            allow_sudocmd: /usr/sbin/reboot
            host: idmclient.idm.example.com
            user: idm_user
            state: present
      Copy to Clipboard Toggle word wrap
    2. 플레이북을 실행합니다.

      $ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
      Copy to Clipboard Toggle word wrap

검증 단계

idm _usersudo 를 사용하여 idmclient 를 재부팅할 수 있는지 확인하여 IdM 서버에서 IdM 서버가 작동하는지 확인하는 sudo 규칙이 idmclient 에서 작동하는지 테스트합니다. 서버에서 변경한 사항이 클라이언트에 적용되는 데 몇 분이 걸릴 수 있습니다.

  1. idmclient에 idm _user 로 로그인합니다.
  2. sudo 를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면 idm_user 의 암호를 입력합니다.

    $ sudo /usr/sbin/reboot
    [sudo] password for idm_user:
    Copy to Clipboard Toggle word wrap

sudo 가 올바르게 구성되면 시스템이 재부팅됩니다.

56장. 호스트 기반 액세스 제어 규칙 구성

HBAC(Host-based access control) 규칙을 사용하여 IdM(Identity Management) 도메인에서 액세스 제어를 관리할 수 있습니다. HBAC 규칙은 서비스 그룹의 서비스 또는 서비스를 사용하여 지정된 호스트 또는 호스트 그룹에 액세스할 수 있는 사용자 또는 사용자 그룹을 정의합니다. 예를 들어 HBAC 규칙을 사용하여 다음 목표를 달성할 수 있습니다.

  • 도메인의 지정된 시스템에 대한 액세스를 특정 사용자 그룹의 멤버로 제한합니다.
  • 특정 서비스만 도메인의 시스템에 액세스할 수 있도록 허용합니다.

기본적으로 IdM은 allow_all 이라는 기본 HBAC 규칙을 사용하여 구성되므로 전체 IdM 도메인의 모든 관련 서비스를 통해 모든 사용자의 모든 호스트에 대한 범용 액세스가 가능합니다.

기본 allow_all 규칙을 자체 HBAC 규칙 세트로 교체하여 다른 호스트에 대한 액세스를 미세 조정할 수 있습니다. 중앙 집중적이고 단순화된 액세스 제어 관리를 위해 개별 사용자, 호스트 또는 서비스 대신 사용자 그룹, 호스트 그룹 또는 서비스 그룹에 HBAC 규칙을 적용할 수 있습니다.

56.1. WebUI를 사용하여 IdM 도메인에서 HBAC 규칙 구성

호스트 기반 액세스 제어를 위해 도메인을 구성하려면 다음 단계를 완료합니다.

참고

사용자 정의 HBAC 규칙을 만들기 전에 allow_all 규칙을 비활성화하지 마십시오. 이렇게 하면 사용자가 호스트에 액세스할 수 없습니다.

56.1.1. IdM WebUI에서 HBAC 규칙 생성

IdM WebUI를 사용하여 호스트 기반 액세스 제어를 위해 도메인을 구성하려면 다음 단계를 따르십시오. 이 예제의 목적을 위해 이 절차에서는 모든 서비스를 사용하여 도메인의 모든 시스템에 대한 단일 사용자, sysadmin 액세스 권한을 부여하는 방법을 보여줍니다.

참고

IdM은 사용자의 기본 그룹을 IdM 그룹 오브젝트에 대한 링크 대신 gidNumber 속성의 숫자 값으로 저장합니다. 이러한 이유로 HBAC 규칙은 기본 그룹이 아닌 사용자의 보조 그룹만 참조할 수 있습니다.

사전 요구 사항

  • 사용자 sysadmin 이 IdM에 있습니다.

절차

  1. 정책> 호스트 기반 액세스 제어>HBAC 규칙을 선택합니다.
  2. 추가 를 클릭하여 새 규칙 추가를 시작합니다.
  3. 규칙의 이름을 입력하고 추가 및 편집을 클릭하여 HBAC 규칙 구성 페이지를 엽니다.
  4. who 영역에서 지정된 사용자 및 그룹을 선택합니다. 그런 다음 추가 를 클릭하여 사용자 또는 그룹을 추가합니다.
  5. 사용 가능한 사용자 목록에서 sysadmin 사용자를 선택하고 >을 클릭하여 Prospective 사용자 목록으로 이동하고 추가 를 클릭합니다.
  6. 액세스 영역에서 모든 호스트 를 선택하여 모든 호스트에 HBAC 규칙을 적용합니다.
  7. Via 서비스 영역에서 모든 서비스를 선택하여 모든 서비스에 HBAC 규칙을 적용합니다.

    참고

    가장 일반적인 서비스 및 서비스 그룹만 기본적으로 HBAC 규칙에 대해 구성됩니다.

    • 현재 사용 가능한 서비스 목록을 표시하려면 정책> 호스트 기반 액세스 제어>HBAC Services 를 선택합니다.
    • 현재 사용 가능한 서비스 그룹 목록을 표시하려면 정책> 호스트 기반 액세스 제어>HBAC 서비스 그룹을 선택합니다.

    더 많은 서비스 및 서비스 그룹을 추가하려면 사용자 정의 HBAC 서비스에 대한 HBAC 서비스 항목 추가 및 HBAC 서비스 그룹 추가 를 참조하십시오.

  8. HBAC 규칙 구성 페이지에서 변경 사항을 저장하려면 페이지 상단에서 저장을 클릭합니다.

56.1.2. IdM WebUI에서 HBAC 규칙 테스트

IdM을 사용하면 시뮬레이션된 시나리오를 사용하여 다양한 상황에서 HBAC 구성을 테스트할 수 있습니다. 이러한 시뮬레이션 테스트를 수행하면 HBAC 규칙을 프로덕션에 배포하기 전에 잘못된 문제 또는 보안 위험을 확인할 수 있습니다.

중요

프로덕션 환경에서 사용하기 전에 항상 사용자 정의 HBAC 규칙을 테스트합니다.

IdM은 신뢰할 수 있는 AD(Active Directory) 사용자에 대한 HBAC 규칙의 영향을 테스트하지 않습니다. IdM LDAP 디렉터리는 AD 데이터를 저장하지 않기 때문에 HBAC 시나리오를 시뮬레이션할 때 IdM은 AD 사용자의 그룹 멤버십을 확인할 수 없습니다.

절차

  1. Policy>Host-Based Access Control>HBAC Test 를 선택합니다.
  2. who 창에서 테스트를 수행하려는 ID 아래에 사용자를 지정하고 다음을 클릭합니다.
  3. 액세스 창에서 사용자가 액세스를 시도할 호스트를 지정하고 다음을 클릭합니다.
  4. Via 서비스 창에서 사용자가 사용할 서비스를 지정하고 Next 를 클릭합니다.
  5. 규칙 창에서 테스트할 HBAC 규칙을 선택하고 다음을 클릭합니다. 규칙을 선택하지 않으면 모든 규칙이 테스트됩니다.

    상태가 활성화된 모든 규칙에서 테스트를 실행하려면 Include Enabled 를 선택합니다. Disabled 를 선택하여 상태가 Disabled 인 모든 규칙에서 테스트를 실행합니다. HBAC 규칙의 상태를 보고 변경하려면 정책> 호스트 기반 액세스 제어>HBAC 규칙을 선택합니다.

    중요

    테스트가 여러 규칙에서 실행되면 선택한 규칙 중 하나 이상이 액세스를 허용하는 경우 성공적으로 전달됩니다.

  6. Run Test 창에서 Run Test 를 클릭합니다.
  7. 테스트 결과를 검토합니다.

    • ACCESS DENIED 가 표시되면 사용자에게 테스트에서 액세스 권한이 부여되지 않습니다.
    • ACCESS GRANTED 가 표시되면 사용자가 호스트에 성공적으로 액세스할 수 있습니다.

    기본적으로 IdM은 테스트 결과를 표시할 때 테스트된 모든 HBAC 규칙을 나열합니다.

    • Matched 를 선택하여 성공적으로 액세스할 수 있는 규칙을 표시합니다.
    • Unmatched 를 선택하여 액세스를 금지한 규칙을 표시합니다.

56.1.3. IdM WebUI에서 HBAC 규칙 비활성화

HBAC 규칙을 비활성화할 수는 있지만 규칙을 비활성화하여 삭제하지 않습니다. HBAC 규칙을 비활성화하면 나중에 다시 활성화할 수 있습니다.

참고

HBAC 규칙을 비활성화하면 사용자 정의 HBAC 규칙을 처음 구성할 때 유용합니다. 새 구성이 기본 allow_all HBAC 규칙으로 재정의되지 않도록 하려면 allow_all 을 비활성화해야 합니다.

절차

  1. 정책> 호스트 기반 액세스 제어>HBAC 규칙을 선택합니다.
  2. 비활성화할 HBAC 규칙을 선택합니다.
  3. Disable 을 클릭합니다.
  4. OK 를 클릭하여 선택한 HBAC 규칙을 비활성화하도록 확인합니다.

56.2. CLI를 사용하여 IdM 도메인에서 HBAC 규칙 구성

호스트 기반 액세스 제어를 위해 도메인을 구성하려면 다음 단계를 완료합니다.

참고

사용자 정의 HBAC 규칙을 만들기 전에 allow_all 규칙을 비활성화하지 마십시오. 사용자 지정 규칙을 만들기 전에 비활성화하면 모든 사용자의 모든 호스트에 대한 액세스가 거부됩니다.

56.2.1. IdM CLI에서 HBAC 규칙 생성

IdM CLI를 사용하여 호스트 기반 액세스 제어를 위해 도메인을 구성하려면 다음 단계를 따르십시오. 이 예제의 목적을 위해 이 절차에서는 단일 사용자인 sysadmin 에게 서비스를 사용하여 도메인의 모든 시스템에 대한 액세스 권한을 부여하는 방법을 보여줍니다.

참고

IdM은 사용자의 기본 그룹을 IdM 그룹 오브젝트에 대한 링크 대신 gidNumber 속성의 숫자 값으로 저장합니다. 이러한 이유로 HBAC 규칙은 기본 그룹이 아닌 사용자의 보조 그룹만 참조할 수 있습니다.

사전 요구 사항

  • 사용자 sysadmin 이 IdM에 있습니다.

절차

  1. ipa hbacrule-add 명령을 사용하여 규칙을 추가합니다.

    $ ipa hbacrule-add
    Rule name: rule_name
    ---------------------------
    Added HBAC rule "rule_name"
    ---------------------------
      Rule name: rule_name
      Enabled: TRUE
    Copy to Clipboard Toggle word wrap
  2. sysadmin 사용자에게 HBAC 규칙을 적용하려면 ipa hbacrule-add-user 명령을 사용합니다.

    $ ipa hbacrule-add-user --users=sysadmin
    Rule name: rule_name
      Rule name: rule_name
      Enabled: True
      Users: sysadmin
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap
    참고

    모든 사용자에게 HBAC 규칙을 적용하려면 ipa hbacrule-mod 명령을 사용하고 모든 사용자 카테고리 --usercat=all 을 지정합니다. HBAC 규칙이 개별 사용자 또는 그룹과 연결된 경우 ipa hbacrule-mod --usercat=all 이 실패합니다. 이 경우 ipa hbacrule-remove-user 명령을 사용하여 사용자와 그룹을 제거합니다.

  3. 대상 호스트를 지정합니다. 모든 호스트에 HBAC 규칙을 적용하려면 ipa hbacrule-mod 명령을 사용하고 모든 호스트 범주를 지정합니다.

    $ ipa hbacrule-mod rule_name --hostcat=all
    ------------------------------
    Modified HBAC rule "rule_name"
    ------------------------------
      Rule name: rule_name
      Host category: all
      Enabled: TRUE
      Users: sysadmin
    Copy to Clipboard Toggle word wrap
    참고

    HBAC 규칙이 개별 호스트 또는 그룹과 연결된 경우 ipa hbacrule-mod --hostcat=all 이 실패합니다. 이 경우 ipa hbacrule-remove-host 명령을 사용하여 호스트와 그룹을 제거합니다.

  4. 대상 HBAC 서비스를 지정합니다. 모든 서비스에 HBAC 규칙을 적용하려면 ipa hbacrule-mod 명령을 사용하고 모든 서비스 범주를 지정합니다.

    $ ipa hbacrule-mod rule_name --servicecat=all
    ------------------------------
    Modified HBAC rule "rule_name"
    ------------------------------
      Rule name: rule_name
      Host category: all
      Service category: all
      Enabled: True
      Users: sysadmin
    Copy to Clipboard Toggle word wrap
참고

HBAC 규칙이 개별 서비스 또는 그룹과 연결된 경우 ipa hbacrule-mod --servicecat=all 이 실패합니다. 이 경우 ipa hbacrule-remove-service 명령을 사용하여 서비스 및 그룹을 제거합니다.

검증

  • HBAC 규칙이 올바르게 추가되었는지 확인합니다.

    1. ipa hbacrule-find 명령을 사용하여 IdM에 HBAC 규칙이 있는지 확인합니다.
    2. ipa hbacrule-show 명령을 사용하여 HBAC 규칙의 속성을 확인합니다.

56.2.2. IdM CLI에서 HBAC 규칙 테스트

IdM을 사용하면 시뮬레이션된 시나리오를 사용하여 다양한 상황에서 HBAC 구성을 테스트할 수 있습니다. 이러한 시뮬레이션 테스트를 수행하면 HBAC 규칙을 프로덕션에 배포하기 전에 잘못된 문제 또는 보안 위험을 확인할 수 있습니다.

프로덕션 환경에서 사용하기 전에 항상 사용자 정의 HBAC 규칙을 테스트합니다.

IdM은 신뢰할 수 있는 AD(Active Directory) 사용자에 대한 HBAC 규칙의 영향을 테스트하지 않습니다. IdM LDAP 디렉터리는 AD 데이터를 저장하지 않기 때문에 HBAC 시나리오를 시뮬레이션할 때 IdM은 AD 사용자의 그룹 멤버십을 확인할 수 없습니다.

절차

  1. ipa hbactest 명령을 사용하여 HBAC 규칙을 테스트합니다. 단일 HBAC 규칙 또는 여러 HBAC 규칙을 테스트할 수 있는 옵션이 있습니다.

    • 단일 HBAC 규칙을 테스트하려면 다음을 수행합니다.

      $ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name
      ---------------------
      Access granted: True
      ---------------------
        Matched rules: rule_name
      Copy to Clipboard Toggle word wrap
    • 여러 HBAC 규칙을 테스트하려면 다음을 수행합니다.

      1. sysadmin 이 모든 호스트에서 ssh 를 사용하도록 허용하는 두 번째 규칙을 추가합니다.

        $ ipa hbacrule-add --hostcat=all rule2_name
        $ ipa hbacrule-add-user --users sysadmin rule2_name
        $ ipa hbacrule-add-service --hbacsvcs=sshd rule2_name
          Rule name: rule2_name
          Host category: all
          Enabled: True
          Users: admin
          HBAC Services: sshd
        -------------------------
        Number of members added 1
        -------------------------
        Copy to Clipboard Toggle word wrap
      2. 다음 명령을 실행하여 여러 HBAC 규칙을 테스트합니다.

        $ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --rules=rule2_name
        --------------------
        Access granted: True
        --------------------
          Matched rules: rule_name
          Not matched rules: rule2_name
        Copy to Clipboard Toggle word wrap

출력에서 일치된 규칙에 는 성공적으로 액세스할 수 있는 규칙이 나열되고 일치하지 않는 규칙에는 액세스를 방지할 수 있는 규칙이 나열됩니다. --rules 옵션을 지정하지 않으면 모든 규칙이 적용됩니다. --rules 를 사용하면 각 규칙을 독립적으로 테스트하는 데 유용합니다.

56.2.3. IdM CLI에서 HBAC 규칙 비활성화

HBAC 규칙을 비활성화할 수는 있지만 규칙을 비활성화하여 삭제하지 않습니다. HBAC 규칙을 비활성화하면 나중에 다시 활성화할 수 있습니다.

참고

HBAC 규칙을 비활성화하면 사용자 정의 HBAC 규칙을 처음 구성할 때 유용합니다. 새 구성이 기본 allow_all HBAC 규칙으로 재정의되지 않도록 하려면 allow_all 을 비활성화해야 합니다.

절차

  • ipa hbacrule-disable 명령을 사용합니다. 예를 들어 allow_all 규칙을 비활성화하려면 다음을 수행합니다.

    $ ipa hbacrule-disable allow_all
    ------------------------------
    Disabled HBAC rule "allow_all"
    ------------------------------
    Copy to Clipboard Toggle word wrap

56.3. 사용자 정의 HBAC 서비스에 대한 HBAC 서비스 항목 추가

가장 일반적인 서비스 및 서비스 그룹은 기본적으로 HBAC 규칙에 대해 구성되지만 다른 PAM(플러그형 인증 모듈) 서비스를 HBAC 서비스로 구성할 수도 있습니다. 이를 통해 HBAC 규칙에서 사용자 지정 PAM 서비스를 정의할 수 있습니다. 이러한 PAM 서비스 파일은 RHEL 시스템의 etc/pam.d 디렉토리에 있습니다.

참고

서비스를 HBAC 서비스로 추가하는 것은 도메인에 서비스를 추가하는 것과 다릅니다. 도메인에 서비스를 추가하면 도메인의 다른 리소스에서 사용할 수 있지만 HBAC 규칙에서 서비스를 사용할 수 없습니다.

사용자 정의 HBAC 서비스 항목을 추가하려면 아래 설명된 단계를 따르십시오.

절차

  1. Policy>Host-Based Access Control>HBAC Services 를 선택합니다.
  2. 추가 를 클릭하여 HBAC 서비스 항목을 추가합니다.
  3. 서비스 이름을 입력하고 추가 를 클릭합니다.

사용자 정의 HBAC 서비스 항목을 추가하려면 아래 설명된 단계를 따르십시오.

절차

  • ipa hbacsvc-add 명령을 사용합니다. 예를 들어 tftp 서비스에 대한 항목을 추가하려면 다음을 수행합니다.

    $ ipa hbacsvc-add tftp
    -------------------------
    Added HBAC service "tftp"
    -------------------------
      Service name: tftp
    Copy to Clipboard Toggle word wrap

56.4. HBAC 서비스 그룹 추가

HBAC 서비스 그룹은 HBAC 규칙 관리를 단순화할 수 있습니다. 예를 들어 HBAC 규칙에 개별 서비스를 추가하는 대신 전체 서비스 그룹을 추가할 수 있습니다.

56.4.1. IdM WebUI에 HBAC 서비스 그룹 추가

IdM WebUI에 HBAC 서비스 그룹을 추가하려면 아래 설명된 단계를 따르십시오.

절차

  1. Policy>Host-Based Access Control>HBAC 서비스 그룹을 선택합니다.
  2. 추가 를 클릭하여 HBAC 서비스 그룹을 추가합니다.
  3. 서비스 그룹의 이름을 입력하고 편집을 클릭합니다.
  4. 서비스 그룹 구성 페이지에서 추가를 클릭하여 HBAC 서비스를 그룹 멤버로 추가합니다.

56.4.2. IdM CLI에서 HBAC 서비스 그룹 추가

IdM CLI에 HBAC 서비스 그룹을 추가하려면 아래 설명된 단계를 따르십시오.

절차

  1. 터미널에서 ipa hbacsvcgroup-add 명령을 사용하여 HBAC 서비스 그룹을 추가합니다. 예를 들어 login 이라는 그룹을 추가하려면 다음을 수행합니다.

    $ ipa hbacsvcgroup-add
    Service group name: login
    --------------------------------
    Added HBAC service group "login"
    --------------------------------
      Service group name: login
    Copy to Clipboard Toggle word wrap
  2. ipa hbacsvcgroup-add-member 명령을 사용하여 HBAC 서비스를 그룹 멤버로 추가합니다. 예를 들어 sshd 서비스를 로그인 그룹에 추가하려면 다음을 수행합니다.

    $ ipa hbacsvcgroup-add-member
    Service group name: login
    [member HBAC service]: sshd
      Service group name: login
      Member HBAC service: sshd
    -------------------------
    Number of members added 1
    -------------------------
    Copy to Clipboard Toggle word wrap

Ansible은 시스템을 구성하고, 소프트웨어를 배포하고, 롤링 업데이트를 수행하는 데 사용되는 자동화 도구입니다. IdM(Identity Management) 지원이 포함되어 있습니다.

IdM(Identity Management) 호스트 기반 액세스 정책과 Ansible 을 사용하여 정의하는 방법에 대해 자세히 알아보십시오.

57.1. IdM의 호스트 기반 액세스 제어 규칙

호스트 기반 액세스 제어(HBAC) 규칙은 서비스 그룹의 서비스 또는 서비스를 사용하여 어떤 호스트나 호스트 그룹에 액세스할 수 있는 사용자 또는 사용자 그룹을 정의합니다. 시스템 관리자는 HBAC 규칙을 사용하여 다음 목표를 달성할 수 있습니다.

  • 도메인의 지정된 시스템에 대한 액세스를 특정 사용자 그룹의 멤버로 제한합니다.
  • 특정 서비스만 도메인의 시스템에 액세스하도록 허용합니다.

기본적으로 IdM은 allow_all 이라는 기본 HBAC 규칙으로 구성되며, 이는 전체 IdM 도메인의 모든 관련 서비스를 통해 모든 사용자에 대한 모든 호스트에 대한 범용 액세스를 의미합니다.

기본 allow_all 규칙을 자체 HBAC 규칙 세트로 교체하여 다른 호스트에 대한 액세스를 미세 조정할 수 있습니다. 중앙 집중적이고 단순화된 액세스 제어 관리를 위해 개별 사용자, 호스트 또는 서비스 대신 사용자 그룹, 호스트 그룹 또는 서비스 그룹에 HBAC 규칙을 적용할 수 있습니다.

57.2. Ansible 플레이북을 사용하여 IdM에 HBAC 규칙이 있는지 확인

Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 기반 액세스 제어(HBAC) 규칙이 있는지 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. 인벤토리 파일(예: inventory.file )을 생성하고 여기에 ipaserver 를 정의합니다.

    [ipaserver]
    server.idm.example.com
    Copy to Clipboard Toggle word wrap
  2. 확인할 HBAC 정책을 정의하는 Ansible 플레이북 파일을 만듭니다. 이 단계를 간소화하기 위해 /usr/share/doc/ansible-freeipa/playbooks/hbacrule/ensure-hbacrule-allhosts-present.yml 파일에서 예제를 복사하고 수정할 수 있습니다.

    ---
    - name: Playbook to handle hbacrules
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      # Ensure idm_user can access client.idm.example.com via the sshd service
      - ipahbacrule:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: login
          user: idm_user
          host: client.idm.example.com
          hbacsvc:
          - sshd
          state: present
    Copy to Clipboard Toggle word wrap
  3. 플레이북을 실행합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-new-hbacrule-present.yml
    Copy to Clipboard Toggle word wrap

검증 단계

  1. IdM 웹 UI에 관리자로 로그인합니다.
  2. 정책호스트 기반 액세스 제어HBAC 테스트로 이동합니다.
  3. who( 사용자 ) 탭에서 idm_user를 선택합니다.
  4. Accessing(액세스 ) 탭에서 client.idm.example.com 을 선택합니다.
  5. Via service 탭에서 sshd 를 선택합니다.
  6. Rules(규칙 ) 탭에서 로그인을 선택합니다.
  7. Run test(테스트 실행 ) 탭에서 Run test( 테스트 실행 ) 단추를 클릭합니다. ACCESS GRANTED가 표시되면 HBAC 규칙이 성공적으로 구현됩니다.