Ansible을 사용하여 ID 관리 설치 및 관리
Ansible을 사용하여 IdM 환경 유지 관리
초록
ansible-freeipa
패키지를 제공합니다. 플레이북을 사용하여 IdM을 설치하고 사용자, 그룹, 호스트, 액세스 제어 및 구성 설정을 관리할 수 있습니다.
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서 및 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Identity Management에서 계획된 용어 교체는 다음과 같습니다.
- 차단 목록 대체 블랙리스트
- 목록 교체 허용 화이트리스트
- 2차 대체 슬레이브
master 라는 단어는 컨텍스트에 따라 더 정확한 언어로 교체됩니다.
- IdM 서버가 IdM 마스터교체
- CA 갱신 서버가 CA 갱신 마스터교체
- CRL 게시자 서버가 CRL 마스터교체
- 멀티 공급자 대체 멀티 마스터
Red Hat 문서에 관한 피드백 제공
문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.
Jira를 통해 피드백 제출 (등록 필요)
- Jira 웹 사이트에 로그인합니다.
- 상단 탐색 모음에서 생성 을 클릭합니다.
- Summary (요약) 필드에 설명 제목을 입력합니다.
- Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
- 대화 상자 하단에서 생성 을 클릭합니다.
1장. Ansible 용어
이 제목의 장에서는 공식 Ansible 용어를 사용합니다. 용어에 익숙하지 않은 경우 다음 섹션을 진행하기 전에 공식 Ansible 업스트림 설명서 를 읽어 보십시오.
- Ansible의 기본 개념은 Ansible에서 가장 일반적으로 사용되는 개념에 대한 개요를 제공합니다.
- 사용자 가이드는 명령줄 사용, 인벤토리 작업, 데이터 상호 작용, 작업, 플레이북 실행 등 Ansible을 시작할 때 가장 일반적인 상황과 질문을 간략하게 설명합니다.
- 인벤토리를 구축하는 방법은 재고 설계에 대한 팁을 제공합니다. 인벤토리는 Ansible이 인프라의 여러 관리 노드 또는 호스트에 대해 작업하는 데 사용하는 목록 또는 목록 그룹입니다.
- 플레이북 소개 에서는 구성 관리, 시스템 배포, 복잡한 애플리케이션 배포를 위한 반복 가능하고 재사용 가능한 시스템으로 Ansible 플레이북의 개념을 소개합니다.
- Ansible roles 섹션에서는 알려진 파일 구조를 기반으로 변수, 작업 및 핸들러 로드를 자동화하는 방법을 설명합니다.
- Glossary 는 Ansible 설명서의 다른 곳에서 사용되는 용어를 설명합니다.
2장. Ansible 플레이북을 사용하여 Identity 관리 서버 설치
Ansible 을 사용하여 시스템을 IdM 서버로 구성하는 방법에 대해 자세히 알아보십시오. 시스템을 IdM 서버로 구성하면 IdM 도메인을 설정하고 시스템이 IdM 클라이언트에 IdM 서비스를 제공할 수 있습니다. ipaserver
Ansible 역할을 사용하여 배포를 관리할 수 있습니다.
사전 요구 사항
Ansible 및 IdM 개념을 이해할 수 있습니다.
- Ansible 역할
- Ansible 노드
- Ansible 인벤토리
- Ansible 작업
- Ansible 모듈
- Ansible 플레이 및 플레이북
2.1. Ansible 및 IdM 설치의 이점
Ansible은 시스템을 구성하고, 소프트웨어를 배포하고, 롤링 업데이트를 수행하는 데 사용되는 자동화 도구입니다. Ansible에는 IdM(Identity Management) 지원이 포함되어 있으며 Ansible 모듈을 사용하여 IdM 서버, 복제본, 클라이언트 또는 전체 IdM 토폴로지 설정과 같은 설치 작업을 자동화할 수 있습니다.
Ansible을 사용하여 IdM 설치의 이점
다음 목록은 수동 설치와 달리 Ansible을 사용하여 Identity Management를 설치하는 경우의 장점을 보여줍니다.
- 관리 노드에 로그인할 필요가 없습니다.
- 개별적으로 배포되도록 각 호스트에서 설정을 구성할 필요는 없습니다. 대신 하나의 인벤토리 파일을 사용하여 전체 클러스터를 배포할 수 있습니다.
- 나중에 관리 작업에 대해 인벤토리 파일을 재사용할 수 있습니다(예: 사용자 및 호스트 추가). 등의 작업을 위해 IdM과 관련이 없는 경우에도 인벤토리 파일을 재사용할 수 있습니다.
2.2. ansible-freeipa 패키지 설치
IdM(Identity Management)을 설치하고 관리하기 위한 Ansible 역할 및 모듈을 제공하는 ansible-freeipa
패키지를 설치하려면 다음 절차를 따르십시오.
사전 요구 사항
관리 노드에서:
- 관리 노드가 고정 IP 주소와 작업 패키지 관리자가 있는 Red Hat Enterprise Linux 8 시스템인지 확인합니다.
컨트롤러에서:
- 컨트롤러가 유효한 서브스크립션이 있는 Red Hat Enterprise Linux 시스템인지 확인합니다. 그렇지 않은 경우 대체 설치 지침은 공식 Ansible 설명서 설치 가이드를 참조하십시오.
-
컨트롤러의
SSH
프로토콜을 통해 관리 노드에 연결할 수 있는지 확인합니다. 관리 노드가 컨트롤러의/root/.ssh/known_hosts
파일에 나열되어 있는지 확인합니다.
절차
Ansible 컨트롤러에서 다음 절차를 사용합니다.
시스템이 RHEL 8.5 및 이전 버전에서 실행중인 경우 필요한 리포지토리를 활성화합니다.
# subscription-manager repos --enable ansible-2.8-for-rhel-8-x86_64-rpms
시스템이 RHEL 8.5 이하에서 실행 중인 경우
ansible
패키지를 설치합니다.# yum install ansible
ansible-freeipa
패키지를 설치합니다.# yum install ansible-freeipa
역할 및 모듈은
/usr/share/ansible/roles/
및/usr/share/ansible/plugins/modules
디렉터리에 설치됩니다.
2.3. 파일 시스템의 Ansible 역할 위치
기본적으로 ansible-freeipa
역할은 /usr/share/ansible/roles/
디렉터리에 설치됩니다. ansible-freeipa
패키지의 구조는 다음과 같습니다.
/usr/share/ansible/roles/
디렉터리는 Ansible 컨트롤러에
역할을 저장합니다. 각 역할 디렉터리는ipaserver
,ipareplica
및 ipaclientREADME.md
마크다운 파일에서 역할에 대한 예제, 기본 개요, 라이센스 및 문서를 저장합니다.[root@server]# ls -1 /usr/share/ansible/roles/ ipaclient ipareplica ipaserver
/usr/share/doc/ansible-freeipa/
디렉터리는README.md
마크다운 파일에 개별 역할 및 토폴로지에 대한 문서를 저장합니다. 또한playbooks/
하위 디렉터리를 저장합니다.[root@server]# ls -1 /usr/share/doc/ansible-freeipa/ playbooks README-client.md README.md README-replica.md README-server.md README-topology.md
/usr/share/doc/ansible-freeipa/playbooks/
디렉터리에 예제 플레이북이 저장됩니다.[root@server]# ls -1 /usr/share/doc/ansible-freeipa/playbooks/ install-client.yml install-cluster.yml install-replica.yml install-server.yml uninstall-client.yml uninstall-cluster.yml uninstall-replica.yml uninstall-server.yml
2.4. 통합 DNS를 사용한 배포 매개 변수 및 통합 CA를 루트 CA로 설정
IdM 통합 DNS 솔루션을 사용하는 환경에서 통합 CA를 root CA로 사용하여 IdM 서버를 설치하기 위한 인벤토리 파일을 구성하려면 다음 절차를 완료합니다.
이 절차의 인벤토리에는 INI
형식을 사용합니다. 또는 YAML
또는 JSON
형식을 사용할 수 있습니다.
절차
~/MyPlaybooks/
디렉터리를 생성합니다.$ mkdir MyPlaybooks
-
~/MyPlaybooks/inventory
파일을 만듭니다. 편집할 인벤토리 파일을 엽니다. IdM 서버로 사용할 호스트의
FQDN
(정규화된 도메인 이름)을 지정합니다.FQDN
이 다음 기준을 충족하는지 확인합니다.- 영숫자 및 하이픈(-)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다.
- 호스트 이름은 모두 소문자여야 합니다.
- IdM 도메인 및 영역 정보를 지정합니다.
다음 옵션을 추가하여 통합 DNS를 사용하도록 지정합니다.
ipaserver_setup_dns=yes
DNS 전달 설정을 지정합니다. 다음 옵션 중 하나를 선택합니다.
-
설치 프로그램이
/etc/resolv.conf
파일의 forwarder를 사용하도록 하려면ipaserver_auto_forwarders=yes
옵션을 사용합니다./etc/resolv.conf
파일에 지정된 이름 서버가 localhost 127.0.0.1 주소이거나 가상 프라이빗 네트워크에 있고 사용 중인 DNS 서버는 일반적으로 공용 인터넷에서 연결할 수 없는 경우 이 옵션을 사용하지 마십시오. -
ipaserver_forwarders
옵션을 사용하여 전달자를 수동으로 지정합니다. 설치 프로세스에서는 설치된 IdM 서버의/etc/named.conf
파일에 전달자 IP 주소를 추가합니다. ipaserver_no_forwarders=yes
옵션을 사용하여 대신 사용할 루트 DNS 서버를 구성합니다.참고DNS 전달자가 없으면 환경이 분리되어 있으며 인프라의 다른 DNS 도메인의 이름은 확인되지 않습니다.
-
설치 프로그램이
DNS 역방향 레코드 및 영역 설정을 지정합니다. 다음 옵션 중에서 선택합니다.
-
영역이 이미 해결 가능한 경우에도
ipaserver_allow_zone_overlap=yes
옵션을 사용하여 (파트) 영역을 생성할 수 있습니다. -
ipaserver_reverse_zones
옵션을 사용하여 역방향 영역을 수동으로 지정합니다. 설치 프로그램이 역방향 DNS 영역을 생성하지 않도록 하려면
ipaserver_no_reverse=yes
옵션을 사용합니다.참고IdM을 사용하여 역방향 영역을 관리하는 것은 선택 사항입니다. 대신 외부 DNS 서비스를 사용할 수 있습니다.
-
영역이 이미 해결 가능한 경우에도
-
admin
및Directory Manager
의 암호를 지정합니다. Ansible Vault를 사용하여 암호를 저장하고 플레이북 파일에서 Vault 파일을 참조합니다. 또는 인벤토리 파일에서 직접 암호를 지정합니다. (선택 사항) IdM 서버에서 사용할 사용자 지정
firewalld
영역을 지정합니다. 사용자 지정 영역을 설정하지 않으면 IdM이 해당 서비스를 기본firewalld
영역에 추가합니다. 사전 정의된 기본 영역은public
입니다.중요지정된
firewalld
영역이 있어야 하며 영구적이어야 합니다.필요한 서버 정보가 있는 인벤토리 파일의 예(암호 제외)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes [...]
필요한 서버 정보가 있는 인벤토리 파일의 예(암호 포함)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
사용자 지정
firewalld
영역을 사용하는 인벤토리 파일의 예[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone
Ansible Vault 파일에 저장된 admin 및 Directory Manager 암호를 사용하여 IdM 서버를 설정하는 예제 플레이북
--- - name: Playbook to configure IPA server hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaserver state: present
인벤토리 파일에서 admin 및 Directory Manager 암호를 사용하여 IdM 서버를 설정하는 예제
--- - name: Playbook to configure IPA server hosts: ipaserver become: true roles: - role: ipaserver state: present
추가 리소스
-
전달 정책 기본 설정은
ipa-dns-install(1)
매뉴얼 페이지의--forward-policy
설명을 참조하십시오. -
ipaserver
역할에서 사용하는 DNS 변수에 대한 자세한 내용은/usr/share/doc/ansible-freeipa
디렉터리의README-server.md
파일의 DNS 변수 섹션을 참조하십시오. - 인벤토리 파일에 대한 자세한 내용은 인벤토리 빌드 방법을 참조하십시오.
2.5. 외부 DNS를 사용한 배포 매개 변수와 통합 CA를 루트 CA로 설정
통합 CA를 사용하여 외부 DNS 솔루션을 사용하는 환경의 루트 CA로 IdM 서버를 설치하기 위한 인벤토리 파일을 구성하려면 다음 절차를 완료합니다.
이 절차의 인벤토리 파일은 INI
형식을 사용합니다. 또는 YAML
또는 JSON
형식을 사용할 수 있습니다.
절차
~/MyPlaybooks/
디렉터리를 생성합니다.$ mkdir MyPlaybooks
-
~/MyPlaybooks/inventory
파일을 만듭니다. 편집할 인벤토리 파일을 엽니다. IdM 서버로 사용할 호스트의
FQDN
(정규화된 도메인 이름)을 지정합니다.FQDN
이 다음 기준을 충족하는지 확인합니다.- 영숫자 및 하이픈(-)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다.
- 호스트 이름은 모두 소문자여야 합니다.
- IdM 도메인 및 영역 정보를 지정합니다.
-
ipaserver_setup_dns
옵션이no
로 설정되어 있는지 확인합니다. -
admin
및Directory Manager
의 암호를 지정합니다. Ansible Vault를 사용하여 암호를 저장하고 플레이북 파일에서 Vault 파일을 참조합니다. 또는 인벤토리 파일에서 직접 암호를 지정합니다. (선택 사항) IdM 서버에서 사용할 사용자 지정
firewalld
영역을 지정합니다. 사용자 지정 영역을 설정하지 않으면 IdM이 해당 서비스를 기본firewalld
영역에 추가합니다. 사전 정의된 기본 영역은public
입니다.중요지정된
firewalld
영역이 있어야 하며 영구적이어야 합니다.필요한 서버 정보가 있는 인벤토리 파일의 예(암호 제외)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no [...]
필요한 서버 정보가 있는 인벤토리 파일의 예(암호 포함)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
사용자 지정
firewalld
영역을 사용하는 인벤토리 파일의 예[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone
Ansible Vault 파일에 저장된 admin 및 Directory Manager 암호를 사용하여 IdM 서버를 설정하는 예제 플레이북
--- - name: Playbook to configure IPA server hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaserver state: present
인벤토리 파일에서 admin 및 Directory Manager 암호를 사용하여 IdM 서버를 설정하는 예제
--- - name: Playbook to configure IPA server hosts: ipaserver become: true roles: - role: ipaserver state: present
추가 리소스
- 인벤토리 파일에 대한 자세한 내용은 인벤토리 빌드 방법을 참조하십시오.
2.6. Ansible 플레이북을 사용하여 통합 CA를 루트 CA로 사용하여 IdM 서버 배포
Ansible 플레이북을 사용하여 CA(통합 인증 기관)를 루트 CA로 사용하여 IdM 서버를 배포하려면 이 절차를 완료합니다.
이 절차의 인벤토리에는 INI
형식을 사용합니다. 또는 YAML
또는 JSON
형식을 사용할 수 있습니다.
사전 요구 사항
다음 절차 중 하나를 선택하여 시나리오에 해당하는 매개변수를 설정했습니다.
-
/usr/share/doc/ansible-freeipa/README-server.md
파일에 설명된 대로ipaserver
역할과 함께 사용할 수 있는 변수를 읽고 이해했습니다.
절차
플레이북 파일의 이름으로
ansible-playbook
명령을 실행합니다(예:install-server.yml
). i옵션을
사용하여 인벤토리 파일을 지정합니다.$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server.yml
v, -vv 또는
-v
vv
CLI(명령줄 인터페이스)에서 Ansible 플레이북 스크립트의 출력을 볼 수 있습니다. 다음 출력에서는 0개의 작업이 실패하므로 스크립트가 성공적으로 실행되었음을 보여줍니다.
PLAY RECAP server.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
다음 옵션 중 하나를 선택합니다.
IdM 배포에서 외부 DNS를 사용하는 경우:
/tmp/ipa.system. recordss.UFRPto.db
파일에 포함된 DNS 리소스 레코드를 기존 외부 DNS 서버에 추가합니다. DNS 레코드를 업데이트하는 프로세스는 특정 DNS 솔루션에 따라 다릅니다.... Restarting the KDC Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db Restarting the web server ...
중요기존 DNS 서버에 DNS 레코드를 추가할 때까지 서버 설치가 완료되지 않습니다.
IdM 배포에서 통합 DNS를 사용하는 경우:
상위 도메인의 DNS 위임을 IdM DNS 도메인에 추가합니다. 예를 들어 IdM DNS 도메인이
idm.example.com
이면example.com
상위 도메인에 이름 서버(NS) 레코드를 추가합니다.중요IdM DNS 서버를 설치한 후 매번 이 단계를 반복합니다.
-
시간 서버의
_ntp._udp
서비스(SRV) 레코드를 IdM DNS에 추가합니다. IdM DNS에 새로 설치한 IdM 서버의 시간 서버에 대한 SRV 레코드가 있으면 향후 복제본 및 클라이언트 설치가 이 기본 IdM 서버에서 사용하는 시간 서버와 동기화되도록 자동으로 구성됩니다.
추가 리소스
- 외부 CA를 사용하여 IdM 서버를 루트 CA로 배포하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 외부 CA를 루트 CA로 IdM 서버배포를 참조하십시오.
2.7. 통합 DNS를 사용한 배포의 매개 변수 및 외부 CA를 루트 CA로 설정
IdM 통합 DNS 솔루션을 사용하는 환경에서 외부 CA를 루트 CA로 설치하기 위한 인벤토리 파일을 구성하려면 다음 절차를 완료합니다.
이 절차의 인벤토리 파일은 INI
형식을 사용합니다. 또는 YAML
또는 JSON
형식을 사용할 수 있습니다.
절차
~/MyPlaybooks/
디렉터리를 생성합니다.$ mkdir MyPlaybooks
-
~/MyPlaybooks/inventory
파일을 만듭니다. 편집할 인벤토리 파일을 엽니다. IdM 서버로 사용할 호스트의
FQDN
(정규화된 도메인 이름)을 지정합니다.FQDN
이 다음 기준을 충족하는지 확인합니다.- 영숫자 및 하이픈(-)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다.
- 호스트 이름은 모두 소문자여야 합니다.
- IdM 도메인 및 영역 정보를 지정합니다.
다음 옵션을 추가하여 통합 DNS를 사용하도록 지정합니다.
ipaserver_setup_dns=yes
DNS 전달 설정을 지정합니다. 다음 옵션 중 하나를 선택합니다.
-
설치 프로세스가
/etc/resolv.conf
파일의 forwarder를 사용하도록 하려면ipaserver_auto_forwarders=yes
옵션을 사용합니다./etc/resolv.conf
파일에 지정된 이름 서버가 localhost 127.0.0.1 주소이거나 가상 사설 네트워크에 있고 사용 중인 DNS 서버는 일반적으로 공용 인터넷에서 연결할 수 없는 경우 이 옵션을 사용하지 않는 것이 좋습니다. -
ipaserver_forwarders
옵션을 사용하여 전달자를 수동으로 지정합니다. 설치 프로세스에서는 설치된 IdM 서버의/etc/named.conf
파일에 전달자 IP 주소를 추가합니다. ipaserver_no_forwarders=yes
옵션을 사용하여 대신 사용할 루트 DNS 서버를 구성합니다.참고DNS 전달자가 없으면 환경이 분리되어 있으며 인프라의 다른 DNS 도메인의 이름은 확인되지 않습니다.
-
설치 프로세스가
DNS 역방향 레코드 및 영역 설정을 지정합니다. 다음 옵션 중에서 선택합니다.
-
영역이 이미 해결 가능한 경우에도
ipaserver_allow_zone_overlap=yes
옵션을 사용하여 (파트) 영역을 생성할 수 있습니다. -
ipaserver_reverse_zones
옵션을 사용하여 역방향 영역을 수동으로 지정합니다. 설치 프로세스에서 역방향 DNS 영역을 생성하지 않으려면
ipaserver_no_reverse=yes
옵션을 사용합니다.참고IdM을 사용하여 역방향 영역을 관리하는 것은 선택 사항입니다. 대신 외부 DNS 서비스를 사용할 수 있습니다.
-
영역이 이미 해결 가능한 경우에도
-
admin
및Directory Manager
의 암호를 지정합니다. Ansible Vault를 사용하여 암호를 저장하고 플레이북 파일에서 Vault 파일을 참조합니다. 또는 인벤토리 파일에서 직접 암호를 지정합니다. (선택 사항) IdM 서버에서 사용할 사용자 지정
firewalld
영역을 지정합니다. 사용자 지정 영역을 설정하지 않으면 IdM에서 서비스를 기본firewalld
영역에 추가합니다. 사전 정의된 기본 영역은public
입니다.중요지정된
firewalld
영역이 있어야 하며 영구적이어야 합니다.필요한 서버 정보가 있는 인벤토리 파일의 예(암호 제외)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes [...]
필요한 서버 정보가 있는 인벤토리 파일의 예(암호 포함)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
사용자 지정
firewalld
영역을 사용하는 인벤토리 파일의 예[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone [...]
설치 첫 번째 단계에 대한 플레이북을 만듭니다. CSR(인증서 서명 요청)을 생성하고 컨트롤러에서 관리 노드로 복사하기 위한 지침을 입력합니다.
--- - name: Playbook to configure IPA server Step 1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_ca: yes roles: - role: ipaserver state: present post_tasks: - name: Copy CSR /root/ipa.csr from node to "{{ groups.ipaserver[0] + '-ipa.csr' }}" fetch: src: /root/ipa.csr dest: "{{ groups.ipaserver[0] + '-ipa.csr' }}" flat: yes
설치의 마지막 단계에 대해 다른 플레이북을 생성합니다.
--- - name: Playbook to configure IPA server Step -1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_cert_files: "/root/chain.crt" pre_tasks: - name: Copy "{{ groups.ipaserver[0] + '-chain.crt' }}" to /root/chain.crt on node copy: src: "{{ groups.ipaserver[0] + '-chain.crt' }}" dest: "/root/chain.crt" force: yes roles: - role: ipaserver state: present
추가 리소스
-
전달 정책 기본 설정은
ipa-dns-install(1)
매뉴얼 페이지의--forward-policy
설명을 참조하십시오. -
ipaserver
역할에서 사용하는 DNS 변수에 대한 자세한 내용은/usr/share/doc/ansible-freeipa
디렉터리의README-server.md
파일의 DNS 변수 섹션을 참조하십시오. - 인벤토리 파일에 대한 자세한 내용은 인벤토리 빌드 방법을 참조하십시오.
2.8. 외부 DNS를 사용한 배포 매개 변수와 외부 CA를 루트 CA로 설정
외부 DNS 솔루션을 사용하는 환경에서 외부 CA를 루트 CA로 설치하도록 IdM 서버를 설치하기 위한 인벤토리 파일을 구성하려면 다음 절차를 완료합니다.
이 절차의 인벤토리 파일은 INI
형식을 사용합니다. 또는 YAML
또는 JSON
형식을 사용할 수 있습니다.
절차
~/MyPlaybooks/
디렉터리를 생성합니다.$ mkdir MyPlaybooks
-
~/MyPlaybooks/inventory
파일을 만듭니다. 편집할 인벤토리 파일을 엽니다. IdM 서버로 사용할 호스트의
FQDN
(정규화된 도메인 이름)을 지정합니다.FQDN
이 다음 기준을 충족하는지 확인합니다.- 영숫자 및 하이픈(-)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다.
- 호스트 이름은 모두 소문자여야 합니다.
- IdM 도메인 및 영역 정보를 지정합니다.
-
ipaserver_setup_dns
옵션이no
로 설정되어 있는지 확인합니다. -
admin
및Directory Manager
의 암호를 지정합니다. Ansible Vault를 사용하여 암호를 저장하고 플레이북 파일에서 Vault 파일을 참조합니다. 또는 인벤토리 파일에서 직접 암호를 지정합니다. (선택 사항) IdM 서버에서 사용할 사용자 지정
firewalld
영역을 지정합니다. 사용자 지정 영역을 설정하지 않으면 IdM이 해당 서비스를 기본firewalld
영역에 추가합니다. 사전 정의된 기본 영역은public
입니다.중요지정된
firewalld
영역이 있어야 하며 영구적이어야 합니다.필요한 서버 정보가 있는 인벤토리 파일의 예(암호 제외)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no [...]
필요한 서버 정보가 있는 인벤토리 파일의 예(암호 포함)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
사용자 지정
firewalld
영역을 사용하는 인벤토리 파일의 예[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone [...]
설치 첫 번째 단계에 대한 플레이북을 만듭니다. CSR(인증서 서명 요청)을 생성하고 컨트롤러에서 관리 노드로 복사하기 위한 지침을 입력합니다.
--- - name: Playbook to configure IPA server Step 1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_ca: yes roles: - role: ipaserver state: present post_tasks: - name: Copy CSR /root/ipa.csr from node to "{{ groups.ipaserver[0] + '-ipa.csr' }}" fetch: src: /root/ipa.csr dest: "{{ groups.ipaserver[0] + '-ipa.csr' }}" flat: yes
설치의 마지막 단계에 대해 다른 플레이북을 생성합니다.
--- - name: Playbook to configure IPA server Step -1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_cert_files: "/root/chain.crt" pre_tasks: - name: Copy "{{ groups.ipaserver[0] + '-chain.crt' }}" to /root/chain.crt on node copy: src: "{{ groups.ipaserver[0] + '-chain.crt' }}" dest: "/root/chain.crt" force: yes roles: - role: ipaserver state: present
추가 리소스
- 외부 DNS 및 외부 서명된 CA를 사용하여 IdM 서버를 설치할 때 사용할 수 있는 옵션에 대한 자세한 내용은 Installing an IdM server를 참조하십시오. 통합 DNS가 없으면 외부 CA를 루트 CA 로 사용합니다.
- 인벤토리 파일에 대한 자세한 내용은 인벤토리 빌드 방법을 참조하십시오.
2.9. Ansible 플레이북을 사용하여 외부 CA가 루트 CA로 있는 IdM 서버 배포
Ansible 플레이북을 사용하여 외부 CA(인증 기관)를 루트 CA로 사용하여 IdM 서버를 배포하려면 이 절차를 완료합니다.
이 절차의 인벤토리 파일은 INI
형식을 사용합니다. 또는 YAML
또는 JSON
형식을 사용할 수 있습니다.
사전 요구 사항
다음 절차 중 하나를 선택하여 시나리오에 해당하는 매개변수를 설정했습니다.
-
/usr/share/doc/ansible-freeipa/README-server.md
파일에 설명된 대로ipaserver
역할과 함께 사용할 수 있는 변수를 읽고 이해했습니다.
절차
설치의 첫 번째 단계에 대한 지침(예:
install
명령을 실행합니다. i-server-step1.yml)이 포함된 플레이북 파일의 이름으로 ansible-
playbook옵션을
사용하여 인벤토리 파일을 지정합니다.$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-step1.yml
v, -
vv 또는
옵션을 사용하여 세부 정보 표시 수준을 지정합니다.-v
vvCLI(명령줄 인터페이스)에서 Ansible 플레이북 스크립트의 출력을 볼 수 있습니다. 다음 출력에서는 0개의 작업이 실패하므로 스크립트가 성공적으로 실행되었음을 보여줍니다.
PLAY RECAP server.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
-
컨트롤러에서
ipa.csr
인증서 서명 요청 파일을 찾아 외부 CA에 제출합니다. - 외부 CA에서 서명한 IdM CA 인증서를 컨트롤러 파일 시스템에 배치하여 다음 단계의 플레이북에서 찾을 수 있도록 합니다.
설치의 최종 단계에 대한 지침이 포함된 플레이북 파일의 이름으로
ansible-playbook
명령을 실행합니다(예:install-server-step2.yml
). i옵션을
사용하여 인벤토리 파일을 지정합니다.$ ansible-playbook -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-step2.yml
다음 옵션 중 하나를 선택합니다.
IdM 배포에서 외부 DNS를 사용하는 경우:
/tmp/ipa.system. recordss.UFRPto.db
파일에 포함된 DNS 리소스 레코드를 기존 외부 DNS 서버에 추가합니다. DNS 레코드를 업데이트하는 프로세스는 특정 DNS 솔루션에 따라 다릅니다.... Restarting the KDC Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db Restarting the web server ...
중요기존 DNS 서버에 DNS 레코드를 추가할 때까지 서버 설치가 완료되지 않습니다.
IdM 배포에서 통합 DNS를 사용하는 경우:
상위 도메인의 DNS 위임을 IdM DNS 도메인에 추가합니다. 예를 들어 IdM DNS 도메인이
idm.example.com
이면example.com
상위 도메인에 이름 서버(NS) 레코드를 추가합니다.중요IdM DNS 서버를 설치한 후 매번 이 단계를 반복합니다.
-
시간 서버의
_ntp._udp
서비스(SRV) 레코드를 IdM DNS에 추가합니다. IdM DNS에 새로 설치한 IdM 서버의 시간 서버에 대한 SRV 레코드가 있으면 향후 복제본 및 클라이언트 설치가 이 기본 IdM 서버에서 사용하는 시간 서버와 동기화되도록 자동으로 구성됩니다.
추가 리소스
통합 CA를 사용하여 IdM 서버를 루트 CA로 배포하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 통합 CA가 있는 IdM 서버배포를 참조하십시오.
2.10. Ansible 플레이북을 사용하여 IdM 서버 설치 제거
기존 IdM(Identity Management) 배포에서 복제본 과 서버는 서로 바꿔 사용할 수 있습니다.
Ansible 플레이북을 사용하여 IdM 복제본을 제거하려면 다음 절차를 완료합니다. 이 예제에서는 다음을 수행합니다.
- server123.idm.example.com 에서 IdM 구성이 제거됩니다.
- server123.idm.example.com 및 관련 호스트 항목이 IdM 토폴로지에서 제거됩니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다. 이 예에서 FQDN은 server123.idm.example.com 입니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다. -
ipaserver_remove_from_topology
옵션이 작동하려면 RHEL 8.9 이상에서 시스템을 실행해야 합니다.
관리 노드에서 다음을 수행합니다.
- 시스템은 RHEL 7.6 이상에서 실행되고 있습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 uninstall-server.yml 을 생성합니다.
--- - name: Playbook to uninstall an IdM replica hosts: ipaserver become: true roles: - role: ipaserver ipaserver_remove_from_domain: true state: absent
ipaserver_remove_from_domain
옵션은 IdM 토폴로지에서 호스트를 등록 해제합니다.참고server123.idm.example.com을 제거해도 연결이 끊긴 토폴로지가 발생하면 제거가 중단됩니다. 자세한 내용은 연결이 끊긴 토폴로지로 이어지는 경우에도 Ansible 플레이북을 사용하여 IdM 서버 설치 제거를 참조하십시오.
복제본을 제거합니다.
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/uninstall-server.yml
- server123.idm.example.com 을 가리키는 모든 이름 서버(NS) DNS 레코드가 DNS 영역에서 삭제되었는지 확인합니다. 이는 IdM 또는 외부 DNS에서 관리하는 통합 DNS를 사용하는지 여부에 관계없이 적용됩니다. IdM에서 DNS 레코드를 삭제하는 방법에 대한 자세한 내용은 IdM CLI에서 DNS 레코드 삭제를 참조하십시오.
2.11. Ansible 플레이북을 사용하여 연결이 끊긴 토폴로지로 이어지는 경우에도 IdM 서버를 설치 제거
기존 IdM(Identity Management) 배포에서 복제본 과 서버는 서로 바꿔 사용할 수 있습니다.
연결이 끊긴 IdM 토폴로지가 발생하는 경우에도 Ansible 플레이북을 사용하여 IdM 복제본을 제거하려면 다음 절차를 완료합니다. 예제에서 server456.idm.example.com 은 토폴로지에서 server123.idm.example.com 의 FQDN이 있는 복제본 및 관련 호스트 항목을 제거하여 특정 복제본의 server456.idm.example.com 과 나머지 토폴로지의 연결이 끊어진 상태로 유지됩니다.
remove_server_from_domain
만 사용하여 토폴로지에서 복제본을 제거하면 연결이 끊긴 토폴로지가 발생하지 않으며 다른 옵션은 필요하지 않습니다. 결과가 연결 해제된 토폴로지인 경우 보존할 도메인의 일부를 지정해야 합니다. 이 경우 다음을 수행해야 합니다.
-
ipaserver_remove_on_server
값을 지정합니다. -
ipaserver_ignore_topology_disconnect
를 True로 설정합니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
- 시스템이 RHEL 8.9 이상에서 실행되고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다. 이 예에서 FQDN은 server123.idm.example.com 입니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
관리 노드에서 다음을 수행합니다.
- 시스템은 RHEL 7.6 이상에서 실행되고 있습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 uninstall-server.yml 을 생성합니다.
--- - name: Playbook to uninstall an IdM replica hosts: ipaserver become: true roles: - role: ipaserver ipaserver_remove_from_domain: true ipaserver_remove_on_server: server456.idm.example.com ipaserver_ignore_topology_disconnect: true state: absent
참고일반적인 상황에서 server123을 제거하면 연결이 끊긴 토폴로지가 발생하지 않습니다.
ipaserver_remove_on_server
의 값이 설정되지 않은 경우 server123이 제거된 복제본은 server123의 복제 계약을 사용하여 자동으로 결정됩니다.복제본을 제거합니다.
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/uninstall-server.yml
- server123.idm.example.com 을 가리키는 모든 이름 서버(NS) DNS 레코드가 DNS 영역에서 삭제되었는지 확인합니다. 이는 IdM 또는 외부 DNS에서 관리하는 통합 DNS를 사용하는지 여부에 관계없이 적용됩니다. IdM에서 DNS 레코드를 삭제하는 방법에 대한 자세한 내용은 IdM CLI에서 DNS 레코드 삭제를 참조하십시오.
2.12. 추가 리소스
- 복제본 토폴로지 계획
- Ansible 플레이북을 사용하여 IdM 서버 백업 및 복원
- 인벤토리 기본 사항: 형식, 호스트 및 그룹
-
IdM 서버 설치를 위한 샘플 Ansible 플레이북과
ansible-freeipa
업스트림 문서에서 가능한 변수 목록을 확인할 수 있습니다.
3장. Ansible 플레이북을 사용하여 Identity Management 복제본 설치
Ansible 을 사용하여 시스템을 IdM 복제본으로 구성하여 IdM 도메인에 등록하고, 시스템이 도메인의 IdM 서버에서 IdM 서비스를 사용할 수 있도록 합니다.
배포는 ipareplica
Ansible 역할로 관리합니다. 역할은 자동 검색 모드를 사용하여 IdM 서버, 도메인 및 기타 설정을 식별할 수 있습니다. 그러나 다양한 복제본 그룹이 서로 다른 시점에 배포되는 계층과 같은 모델에 여러 복제본을 배포하는 경우 각 그룹에 대해 특정 서버 또는 복제본을 정의해야 합니다.
사전 요구 사항
- Ansible 제어 노드에 ansible-freeipa 패키지를 설치했습니다.
Ansible 및 IdM 개념을 이해할 수 있습니다.
- Ansible 역할
- Ansible 노드
- Ansible 인벤토리
- Ansible 작업
- Ansible 모듈
- Ansible 플레이 및 플레이북
추가 리소스
3.1. IdM 복제본 설치를 위한 기본, 서버 및 클라이언트 변수 지정
IdM 복제본을 설치하기 위한 인벤토리 파일을 구성하려면 다음 절차를 완료합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
편집할 인벤토리 파일을 엽니다. IdM 복제본이 될 호스트의 FQDN(정규화된 도메인 이름)을 지정합니다. FQDN은 유효한 DNS 이름이어야 합니다.
-
숫자, 영문자 및 하이픈(
-
)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다. 호스트 이름은 모두 소문자여야 합니다.
복제본의 FQDN만 정의된 간단한 인벤토리 호스트 파일의 예
[ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...]
IdM 서버가 이미 배포되어 있고 SRV 레코드가 IdM DNS 영역에 올바르게 설정된 경우 스크립트는 기타 필요한 모든 값을 자동으로 검색합니다.
-
숫자, 영문자 및 하이픈(
[선택 사항] 토폴로지 설계 방법에 따라 인벤토리 파일에 추가 정보를 제공하십시오.
- 시나리오 1
자동 검색을 방지하고
[ipareplicas]
섹션에 모든 복제본이 나열된 경우 특정 IdM 서버를 사용하는 경우 인벤토리 파일의[ipaservers]
섹션에 서버를 설정합니다.IdM 서버 및 복제본의 FQDN이 정의된 인벤토리 호스트 파일 예
[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...]
- 시나리오 2
또는 자동 검색을 피하지만 특정 서버에 특정 복제본을 배포하려는 경우 인벤토리 파일의
[ipareplicas]
섹션에서 특정 복제본의 서버를 개별적으로 설정합니다.특정 복제본에 대해 정의된 특정 IdM 서버가 있는 인벤토리 파일의 예
[ipaservers] server.idm.example.com replica1.idm.example.com [ipareplicas] replica2.idm.example.com replica3.idm.example.com ipareplica_servers=replica1.idm.example.com
위의 예에서
replica3.idm.example.com
은 이미 배포된replica1.idm.example.com
을 복제 소스로 사용합니다.- 시나리오 3
여러 복제본을 한 배치에 배포하고 있으며 시간이 중요한 경우 다계층 복제본 배포가 유용할 수 있습니다. 인벤토리 파일에 특정 복제본 그룹(예:
[ipareplicas_tier1]
및[ipareplicas_tier2]
을 정의하고install-replica.yml
플레이북에서 각 그룹에 대해 별도의 플레이를 설계합니다.복제본 계층이 정의된 인벤토리 파일의 예
[ipaservers] server.idm.example.com [ipareplicas_tier1] replica1.idm.example.com [ipareplicas_tier2] replica2.idm.example.com \ ipareplica_servers=replica1.idm.example.com,server.idm.example.com
ipareplica_servers
의 첫 번째 항목이 사용됩니다. 두 번째 항목은 대체 옵션으로 사용됩니다. IdM 복제본을 배포하는 데 여러 계층을 사용하는 경우, 먼저 tier1에서 복제본을 배포하기 위해 플레이북에 별도의 작업이 있어야 하고 tier2에서 복제본을 배포해야 합니다.다른 복제본 그룹에 대해 다른 플레이가 있는 플레이북 파일의 예
--- - name: Playbook to configure IPA replicas (tier1) hosts: ipareplicas_tier1 become: true roles: - role: ipareplica state: present - name: Playbook to configure IPA replicas (tier2) hosts: ipareplicas_tier2 become: true roles: - role: ipareplica state: present
[선택 사항]
firewalld
및 DNS에 대한 추가 정보를 제공하십시오.- 시나리오 1
복제본에서 기본 영역 대신 지정된
firewalld
영역을 사용하려면 인벤토리 파일에서 지정할 수 있습니다. 예를 들어, 기본값으로 설정된 공용 영역 대신 IdM 설치에 내부firewalld
영역을 사용하려는 경우 유용할 수 있습니다.사용자 지정 영역을 설정하지 않으면 IdM이 해당 서비스를 기본
firewalld
영역에 추가합니다. 사전 정의된 기본 영역은public
입니다.중요지정된
firewalld
영역이 있어야 하며 영구적이어야 합니다.사용자 지정
firewalld
영역을 사용하는 간단한 인벤토리 호스트 파일 예[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...] [ipareplicas:vars] ipareplica_firewalld_zone=custom zone
- 시나리오 2
복제본이 IdM DNS 서비스를 호스팅하려면 ipareplica_setup_dns=yes 행을
[ipareplicas:vars]
섹션에 추가합니다. 또한 서버당 DNS 전달자를 사용하려는 경우 다음을 지정합니다.-
서버별 전달자를 구성하려면
ipareplica_forwarders
변수와 문자열 목록을[ipareplicas:vars]
섹션에 추가하십시오(예: ipareplica_forwarders=192.0.2.1,192.0.2.2 -
서버별 전달자를 구성하지 않으려면
[ipareplicas:vars]
섹션에 다음 행을 추가합니다. ipareplica_no_forwarders=yes. -
복제본의
/etc/resolv.conf
파일에 나열된 전달자를 기반으로 서버별 전달자를 구성하려면ipareplica_auto_forwarders
변수를[ipareplicas:vars]
섹션에 추가합니다.
복제본에 DNS 및 서버 전달자를 설정하는 지침이 포함된 인벤토리 파일의 예
[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...] [ipareplicas:vars] ipareplica_setup_dns=yes ipareplica_forwarders=192.0.2.1,192.0.2.2
-
서버별 전달자를 구성하려면
- 시나리오 3
ipaclient_configure_dns_resolve
및ipaclient_dns_servers
옵션(사용 가능한 경우)을 사용하여 클러스터 배포를 단순화하여 DNS 확인 프로그램을 지정합니다. IdM 배포가 통합된 DNS를 사용하는 경우 특히 유용합니다.DNS 확인자를 지정하는 인벤토리 파일 스니펫:
[...] [ipaclient:vars] ipaclient_configure_dns_resolver=true ipaclient_dns_servers=192.168.100.1
참고ipaclient_dns_servers
목록에는 IP 주소만 포함되어야 합니다. 호스트 이름은 허용되지 않습니다.
추가 리소스
-
ipareplica
변수에 대한 자세한 내용은/usr/share/ansible/roles/ipareplica/README.md
Markdown 파일을 참조하십시오.
3.2. Ansible Playbook을 사용하여 IdM 복제본을 설치하기 위한 자격 증명 지정
IdM 복제본 설치를 위한 권한 부여를 구성하려면 다음 절차를 완료합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
복제본을 배포하도록 인증된 사용자의 암호를 지정합니다(예: IdM
관리자
).Red Hat은 Ansible Vault를 사용하여 암호를 저장하고 플레이북 파일에서 Vault 파일을 참조하는 것이 좋습니다(예:
install-replica.yml
).Ansible Vault 파일의 인벤토리 파일 및 암호를 사용하는 플레이북 파일의 예
- name: Playbook to configure IPA replicas hosts: ipareplicas become: true vars_files: -
playbook_sensitive_data.yml
roles: - role: ipareplica state: presentAnsible Vault를 사용하는 방법에 대한 자세한 내용은 공식 Ansible Vault 설명서를 참조하십시오.
덜 안전하게, 인벤토리 파일에서 직접
admin
의 자격 증명을 제공합니다. 인벤토리 파일의[ipareplicas:vars]
섹션에ipaadmin_password
옵션을 사용합니다. 그런 다음 인벤토리 파일과install-replica.yml
플레이북 파일은 다음과 같이 표시됩니다.인벤토리 hosts.replica 파일 예
[...] [ipareplicas:vars] ipaadmin_password=Secret123
인벤토리 파일에서 주체 및 암호를 사용하는 플레이북의 예
- name: Playbook to configure IPA replicas hosts: ipareplicas become: true roles: - role: ipareplica state: present
또는 인벤토리 파일에 직접 복제본을 배포할 권한이 있는 다른 사용자의 자격 증명을 제공합니다. 권한 있는 다른 사용자를 지정하려면 사용자 이름에
ipaadmin_principal
옵션과 암호에ipaadmin_password
옵션을 사용합니다. 그런 다음 인벤토리 파일과install-replica.yml
플레이북 파일은 다음과 같이 표시됩니다.인벤토리 hosts.replica 파일 예
[...] [ipareplicas:vars] ipaadmin_principal=my_admin ipaadmin_password=my_admin_secret123
인벤토리 파일에서 주체 및 암호를 사용하는 플레이북의 예
- name: Playbook to configure IPA replicas hosts: ipareplicas become: true roles: - role: ipareplica state: present
추가 리소스
-
ipareplica
Ansible 역할에서 수락한 옵션에 대한 자세한 내용은/usr/share/ansible/roles/ipareplica/README.md
Markdown 파일을 참조하십시오.
3.3. Ansible 플레이북을 사용하여 IdM 복제본 배포
Ansible 플레이북을 사용하여 IdM 복제본을 배포하려면 다음 절차를 완료합니다.
사전 요구 사항
- IdM 복제본을 설치하기 위해 인벤토리 파일을 구성했습니다.
- IdM 복제본 설치를 위한 권한 부여를 구성했습니다.
절차
Ansible 플레이북을 사용하여 IdM 복제본을 설치하려면 플레이북 파일 이름과 함께
ansible-playbook
명령을 사용합니다(예:install-replica.yml
). i옵션을
사용하여 인벤토리 파일을 지정합니다.$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts.replica <path_to_playbooks_directory>/install-replica.yml
v, -
vv 또는
옵션을 사용하여 세부 정보 표시 수준을 지정합니다.-v
vvAnsible은 Ansible 플레이북 스크립트의 실행에 대해 알려줍니다. 다음 출력에서는 0개의 작업이 실패하므로 스크립트가 성공적으로 실행되었음을 보여줍니다.
PLAY RECAP replica.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
IdM 복제본을 설치했습니다.
3.4. Ansible 플레이북을 사용하여 IdM 복제본 설치 제거
기존 IdM(Identity Management) 배포에서 복제본 과 서버는 서로 바꿔 사용할 수 있습니다. IdM 서버를 제거하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM 서버 설치 제거 또는 Ansible 플레이북 을 사용하여 연결이 끊긴 토폴로지로 이어지는 경우에도 IdM 서버를 설치 제거합니다.
추가 리소스
4장. Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치
Ansible 을 사용하여 IdM(Identity Management) 클라이언트로 시스템을 구성하는 방법에 대해 자세히 알아보십시오. 시스템을 IdM 클라이언트로 구성하여 IdM 도메인에 등록하고 시스템이 도메인의 IdM 서버에서 IdM 서비스를 사용할 수 있도록 합니다.
배포는 ipaclient
Ansible 역할에서 관리합니다. 기본적으로 이 역할은 IdM 서버, 도메인 및 기타 설정을 식별하기 위해 자동 검색 모드를 사용합니다. Ansible 플레이북에서 지정된 설정을 사용하도록 역할을 수정할 수 있습니다(예: 인벤토리 파일).
사전 요구 사항
- Ansible 제어 노드에 ansible-freeipa 패키지를 설치했습니다.
Ansible 및 IdM 개념을 이해할 수 있습니다.
- Ansible 역할
- Ansible 노드
- Ansible 인벤토리
- Ansible 작업
- Ansible 모듈
- Ansible 플레이 및 플레이북
4.1. 자동 검색 클라이언트 설치 모드에 대한 인벤토리 파일의 매개 변수 설정
Ansible 플레이북을 사용하여 Identity Management 클라이언트를 설치하려면 인벤토리 파일에서 대상 호스트 매개 변수를 구성합니다(예: inventory/hosts
).
- 호스트에 대한 정보
- 작업 권한 부여
인벤토리 파일은 보유한 인벤토리 플러그인에 따라 다양한 형식 중 하나에 있을 수 있습니다. INI와 유사한
형식은 Ansible의 기본값 중 하나이며 아래 예제에서 사용됩니다.
RHEL에서 그래픽 사용자 인터페이스에서 스마트 카드를 사용하려면 Ansible 플레이북에 ipaclient_mkhomedir
변수를 포함해야 합니다.
사전 요구 사항
- 제어 노드에서 배포 지침을 확인하고 install-client.yml 파일의 매개변수 확인을 참조하십시오.
절차
IdM 클라이언트가 될 호스트의 정규화된 호스트 이름(FQDN)을 지정합니다. 정규화된 도메인 이름은 유효한 DNS 이름이어야 합니다.
-
숫자, 영문자 및 하이픈(
-
)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다. - 호스트 이름은 모두 소문자여야 합니다. 대문자는 허용되지 않습니다.
SRV 레코드가 IdM DNS 영역에 올바르게 설정된 경우 스크립트는 기타 필요한 모든 값을 자동으로 검색합니다.
정의된 클라이언트 FQDN만 있는 간단한 인벤토리 호스트 파일의 예
[ipaclients] client.idm.example.com [...]
-
숫자, 영문자 및 하이픈(
클라이언트 등록에 필요한 자격 증명을 지정합니다. 다음과 같은 인증 방법을 사용할 수 있습니다.
고객 등록에 승인된 사용자의 암호입니다. 기본 옵션입니다.
Red Hat은 Ansible Vault를 사용하여 암호를 저장하고 플레이북 파일에서 Vault 파일을 참조하는 것이 좋습니다(예:
install-client.yml
).Ansible Vault 파일의 인벤토리 파일 및 암호를 사용하는 플레이북 파일의 예
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaclient state: present
덜 안전하게,
inventory/hosts
파일의[ipaclients:vars]
섹션에서ipaadmin_password
옵션을 사용하여admin
의 자격 증명을 제공합니다. 또는 권한 있는 다른 사용자를 지정하려면 사용자 이름에ipaadmin_principal
옵션을 사용하고 암호에ipaadmin_password
옵션을 사용합니다.inventory/hosts
인벤토리 파일과install-client.yml
플레이북 파일은 다음과 같이 표시될 수 있습니다.인벤토리 호스트 파일 예
[...] [ipaclients:vars] ipaadmin_principal=my_admin ipaadmin_password=Secret123
인벤토리 파일에서 주체 및 암호를 사용하는 플레이북의 예
- name: Playbook to unconfigure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true
이전 등록의 클라이언트 키탭 이 계속 사용 가능한 경우.
이 옵션은 이전에 시스템이 ID 관리 클라이언트로 등록된 경우 사용할 수 있습니다. 이 인증 방법을 사용하려면
#ipaclient_keytab
옵션의 주석을 제거하고 keytab을 저장하는 파일의 경로를 지정합니다(예:inventory/hosts
의[ipaclient:vars]
섹션).등록 중에 생성되는 임의의 OTP(one-time password )입니다. 이 인증 방법을 사용하려면 인벤토리 파일에서
ipaclient_use_otp=yes
옵션을 사용합니다. 예를 들어inventory/hosts
파일의[ipa
옵션의 주석을 해제할 수 있습니다. OTP에서는 다음 옵션 중 하나를 지정해야 합니다.clients:vars] 섹션에서 ipaclient
_use_otp=yes-
예를 들어
inventory/hosts
파일의[ipaclients:vars]
섹션에ipaadmin_password
값을 제공하여 클라이언트를 등록하도록 인증된 사용자의 암호입니다. -
예를 들어 admin keytab (예: 인벤토리/호스트의
[ipaclients:vars]
섹션에ipaadmin_keytab
값을 제공하여).
-
예를 들어
[선택 사항] [선택 사항]
ipaclient_configure_dns_resolve
및ipaclient_dns_servers
옵션(사용 가능한 경우)을 사용하여 DNS 확인 프로그램을 지정하여 클러스터 배포를 단순화합니다. IdM 배포가 통합된 DNS를 사용하는 경우 특히 유용합니다.DNS 확인자를 지정하는 인벤토리 파일 스니펫:
[...] [ipaclients:vars] ipaadmin_password: "{{ ipaadmin_password }}" ipaclient_domain=idm.example.com ipaclient_configure_dns_resolver=true ipaclient_dns_servers=192.168.100.1
참고ipaclient_dns_servers
목록에는 IP 주소만 포함되어야 합니다. 호스트 이름은 허용되지 않습니다.-
RHEL 8.9부터
ipaclient_subid: true
옵션을 지정하여 IdM 수준에서 IdM 사용자에 대해 하위 범위를 구성할 수도 있습니다.
추가 리소스
-
/usr/share/ansible/roles/ipaclient/README.md
- 수동으로 subID 범위 관리
4.2. 클라이언트 설치 중에 자동 검색을 수행할 수 없는 경우 인벤토리 파일의 매개 변수 설정
Ansible 플레이북을 사용하여 Identity Management 클라이언트를 설치하려면 인벤토리 파일에서 대상 호스트 매개 변수를 구성합니다(예: inventory/hosts
).
- 호스트, IdM 서버, IdM 도메인 또는 IdM 영역에 대한 정보
- 작업 권한 부여
인벤토리 파일은 보유한 인벤토리 플러그인에 따라 다양한 형식 중 하나에 있을 수 있습니다. INI와 유사한
형식은 Ansible의 기본값 중 하나이며 아래 예제에서 사용됩니다.
RHEL에서 그래픽 사용자 인터페이스에서 스마트 카드를 사용하려면 Ansible 플레이북에 ipaclient_mkhomedir
변수를 포함해야 합니다.
사전 요구 사항
- 제어 노드에서 배포 지침을 확인하고 install-client.yml 파일의 매개변수 확인을 참조하십시오.
절차
IdM 클라이언트가 될 호스트의 정규화된 호스트 이름(FQDN)을 지정합니다. 정규화된 도메인 이름은 유효한 DNS 이름이어야 합니다.
-
숫자, 영문자 및 하이픈(
-
)만 허용됩니다. 예를 들어 밑줄은 허용되지 않으며 DNS 오류가 발생할 수 있습니다. - 호스트 이름은 모두 소문자여야 합니다. 대문자는 허용되지 않습니다.
-
숫자, 영문자 및 하이픈(
inventory/hosts
파일의 관련 섹션에 다른 옵션을 지정합니다.-
클라이언트가 등록할 IdM 서버를 나타내는
[ipaservers]
섹션에 있는 서버의 FQDN 다음 두 옵션 중 하나입니다.
-
클라이언트가 등록할 IdM 서버의 DNS 도메인 이름을 나타내는
[ipaclients:vars]
섹션의ipaclient_domain
옵션 IdM 서버에서 제어하는 Kerberos 영역의 이름을 나타내는
[ipaclients:vars]
섹션의ipaclient_realm
옵션클라이언트 FQDN, 서버 FQDN 및 정의된 도메인이 있는 인벤토리 호스트 파일의 예
[ipaclients] client.idm.example.com [ipaservers] server.idm.example.com [ipaclients:vars] ipaclient_domain=idm.example.com [...]
-
클라이언트가 등록할 IdM 서버의 DNS 도메인 이름을 나타내는
-
클라이언트가 등록할 IdM 서버를 나타내는
클라이언트 등록에 필요한 자격 증명을 지정합니다. 다음과 같은 인증 방법을 사용할 수 있습니다.
고객 등록에 승인된 사용자의 암호입니다. 기본 옵션입니다.
Red Hat은 Ansible Vault를 사용하여 암호를 저장하고 플레이북 파일에서 Vault 파일을 참조하는 것이 좋습니다(예:
install-client.yml
).Ansible Vault 파일의 인벤토리 파일 및 암호를 사용하는 플레이북 파일의 예
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaclient state: present
덜 안전하게,
inventory/hosts
파일의[
옵션을 사용하여 제공할 관리자의 자격 증명입니다. 또는 권한 있는 다른 사용자를 지정하려면 사용자 이름에ipaclients:vars]
섹션에서 ipaadmin
_passwordipaadmin_principal
옵션을 사용하고 암호에ipaadmin_password
옵션을 사용합니다.install-client.yml
플레이북 파일은 다음과 같이 표시됩니다.인벤토리 호스트 파일 예
[...] [ipaclients:vars] ipaadmin_principal=my_admin ipaadmin_password=Secret123
인벤토리 파일에서 주체 및 암호를 사용하는 플레이북의 예
- name: Playbook to unconfigure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true
이전 등록에서 계속 사용할 수 있는 경우 client keytab 입니다.
이 옵션은 이전에 시스템이 ID 관리 클라이언트로 등록된 경우 사용할 수 있습니다. 이 인증 방법을 사용하려면
ipaclient_keytab
옵션의 주석을 제거하고 keytab을 저장하는 파일의 경로를 지정합니다(예:inventory/hosts
의[ipaclient:vars]
섹션).등록 중에 생성되는 임의의 OTP(one-time password )입니다. 이 인증 방법을 사용하려면 인벤토리 파일에서
ipaclient_use_otp=yes
옵션을 사용합니다. 예를 들어inventory/hosts
파일의[
옵션의 주석을 해제할 수 있습니다. OTP에서는 다음 옵션 중 하나를 지정해야 합니다.ipaclients:vars] 섹션에서 #ipaclient
_use_otp=yes-
예를 들어
inventory/hosts
파일의[ipaclients:vars]
섹션에ipaadmin_password
값을 제공하여 클라이언트를 등록하도록 인증된 사용자의 암호입니다. -
예를 들어 admin keytab (예: 인벤토리/호스트의
[ipaclients:vars]
섹션에ipaadmin_keytab
값을 제공하여).
-
예를 들어
-
RHEL 8.9부터
ipaclient_subid: true
옵션을 지정하여 IdM 수준에서 IdM 사용자에 대해 하위 범위를 구성할 수도 있습니다.
추가 리소스
-
ipaclient
Ansible 역할에서 허용하는 옵션에 대한 자세한 내용은/usr/share/ansible/roles/ipaclient/README.md
파일을 참조하십시오. - 수동으로 subID 범위 관리
4.3. install-client.yml 파일에서 매개변수 확인
install-client.yml
플레이북 파일에는 IdM 클라이언트 배포 지침이 포함되어 있습니다.
절차
파일을 열고 플레이북의 지침이 배포 계획과 일치하는지 확인합니다. 일반적으로 내용은 다음과 같습니다.
--- - name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true roles: - role: ipaclient state: present
개별 항목이 의미하는 바는 다음과 같습니다.
-
hosts 항목은 ansible 스크립트에서
ipa-client-install
스크립트를 실행할 호스트의FQDN을
검색하는inventory/hosts
파일의 섹션을 지정합니다. -
become: true
항목은ipa-client-install
스크립트를 실행하는 동안 루트 자격 증명이 호출되도록 지정합니다. -
역할: ipaclient
항목은 호스트에 설치할 역할을 지정합니다. 이 경우 ipa 클라이언트 역할입니다. -
state: present
항목은 클라이언트를 설치 제거하지 않고 설치해야 함(없음)을 지정합니다.
-
hosts 항목은 ansible 스크립트에서
4.4. Ansible Playbook을 사용하여 IdM 클라이언트 등록에 대한 권한 부여 옵션
인벤토리 및 플레이북 파일의 예와 함께 IdM 클라이언트 등록에 대한 개별 권한 부여 옵션은 다음과 같습니다.
표 4.1. Ansible을 사용하여 IdM 클라이언트 등록에 대한 권한 부여 옵션
권한 부여 옵션 | 참고 | 인벤토리 파일 예 | install-client.yml 플레이북 파일 예 |
---|---|---|---|
클라이언트 등록 권한이 있는 사용자의 암호: 옵션 1 | Ansible vault에 저장된 암호 |
[ipaclients:vars] [...] |
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaclient state: present |
클라이언트 등록 권한이 있는 사용자의 암호: 옵션 2 | 인벤토리 파일에 저장된 암호 |
[ipaclients:vars] ipaadmin_password=Secret123 |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
임의의 OTP(one-time password): 옵션 1 | OTP + 관리자 암호 |
[ipaclients:vars] ipaadmin_password=Secret123 ipaclient_use_otp=true |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
임의의 OTP(one-time password): 옵션 2 | OTP + 관리자 키탭 |
[ipaclients:vars] ipaadmin_keytab=/root/admin.keytab ipaclient_use_otp=true |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
이전 등록의 클라이언트 키탭 |
[ipaclients:vars] ipaclient_keytab=/root/krb5.keytab |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
RHEL 8.8에서 위에서 설명한 두 개의 OTP 인증 시나리오에서 kinit
명령을 사용하여 관리자의 TGT 요청은 첫 번째 지정 또는 검색된 IdM 서버에서 실행됩니다. 따라서 Ansible 제어 노드를 추가로 수정할 필요가 없습니다. RHEL 8.8 이전에는 제어 노드에 CloudEvent5-workstation
패키지가 필요했습니다.
4.5. Ansible 플레이북을 사용하여 IdM 클라이언트 배포
Ansible 플레이북을 사용하여 IdM 환경에 IdM 클라이언트를 배포하려면 이 절차를 완료합니다.
사전 요구 사항
IdM 클라이언트 배포의 매개변수가 배포 시나리오에 일치하도록 설정되어 있습니다.
- install-client.yml에서 매개변수를 확인했습니다.
절차
Ansible 플레이북을 사용하여 IdM 클라이언트를 설치하려면 플레이북 파일 이름과 함께
ansible-playbook
명령을 사용합니다(예:install-client.yml
). i옵션을
사용하여 인벤토리 파일을 지정합니다.$ ansible-playbook --vault-password-file=password_file -v -i inventory/hosts install-client.yml
v, -
vv 또는
옵션을 사용하여 세부 정보 표시 수준을 지정합니다.-v
vvAnsible은 Ansible 플레이북 스크립트의 실행에 대해 알려줍니다. 다음 출력은 작업이 실패하지 않아 스크립트가 성공적으로 실행되었음을 보여줍니다.
PLAY RECAP client1.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
참고Ansible은 다양한 컬러를 사용하여 실행 중인 프로세스에 대한 다양한 유형의 정보를 제공합니다.
/etc/ansible/ansible.cfg 파일의
[colors]
섹션에서 기본 컬러를 수정할 수 있습니다.[colors] [...] #error = red #debug = dark gray #deprecate = purple #skip = cyan #unreachable = red #ok = green #changed = yellow [...]
이제 Ansible 플레이북을 사용하여 호스트에 IdM 클라이언트를 설치했습니다.
4.6. Ansible 설치 후 Identity Management 클라이언트 테스트
CLI(명령줄 인터페이스)는 ansible-playbook
명령이 성공했지만 자체 테스트를 수행할 수도 있음을 알려줍니다.
ID 관리 클라이언트가 서버에 정의된 사용자에 대한 정보를 가져올 수 있는지 테스트하려면 서버에 정의된 사용자를 확인할 수 있는지 확인합니다. 예를 들어 기본 admin
사용자를 확인하려면 다음을 수행합니다.
[user@client1 ~]$ id admin
uid=1254400000(admin) gid=1254400000(admins) groups=1254400000(admins)
인증이 올바르게 작동하는지 테스트하려면 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 ~]$
4.7. Ansible 플레이북을 사용하여 IdM 클라이언트 설치 제거
Ansible 플레이북을 사용하여 호스트를 IdM 클라이언트로 제거하려면 다음 절차를 완료합니다.
사전 요구 사항
- IdM 관리자 자격 증명.
절차
IdM 클라이언트를 제거하려면 플레이북 파일의 이름과 함께
ansible-playbook
명령을 사용합니다(예:uninstall-client.yml
). i옵션을 사용하여 인벤토리 파일을 지정하고 선택적으로 -
v, -vv 또는
사용하여 자세한 정보 표시 수준을 지정합니다.-vv
v$ ansible-playbook --vault-password-file=password_file -v -i inventory/hosts uninstall-client.yml
클라이언트를 제거하면 호스트에서 기본 IdM 구성만 제거되지만 클라이언트를 다시 설치하기로 결정한 경우 호스트에 구성 파일이 남아 있습니다. 또한 설치 제거에는 다음과 같은 제한 사항이 있습니다.
- IdM LDAP 서버에서 클라이언트 호스트 항목을 제거하지 않습니다. 설치 제거만 호스트에 대한 등록을 취소합니다.
- IdM에서 클라이언트에 상주하는 서비스는 제거되지 않습니다.
- IdM 서버에서 클라이언트의 DNS 항목을 제거하지 않습니다.
-
/etc/krb5.keytab 이외의 keytab
의 이전 주체는 제거하지 않습니다.
설치 제거는 IdM CA에서 호스트에 대해 발급한 모든 인증서가 제거됩니다.
추가 리소스
- IdM 클라이언트 제거를 참조하십시오.
5장. Ansible 플레이북을 사용하여 IdM을 관리하기 위한 환경 준비
IdM(Identity Management)을 관리하는 시스템 관리자로서 Red Hat Ansible Engine을 사용하여 작업할 때 다음을 수행하는 것이 좋습니다.
- 홈 디렉터리에 있는 Ansible 플레이북 전용 하위 디렉터리를 유지합니다(예: ~/MyPlaybooks ).
-
/usr
/share/doc/ansible-freeipa/* 및
디렉터리 및 하위 디렉터리에서 ~/MyPlaybooks 디렉터리에 샘플 Ansible 플레이북을 복사 및 조정합니다./usr/share/doc
/rhel-system-roles/* - 인벤토리 파일을 ~/MyPlaybooks 디렉터리에 포함합니다.
이 방법을 사용하면 한 곳에서 모든 플레이북을 찾을 수 있습니다.
관리 노드에서 root
권한을 호출하지 않고 ansible-freeipa
플레이북을 실행할 수 있습니다. 예외적으로 ipaserver
,ipareplica
, ipaclient ,ipaclient
,ipasmartcard_server
,ipasmartcard_client
및 ipabackup
ansible-freeipa
역할을 사용하는 플레이북이 있습니다. 이러한 역할을 수행하려면 디렉터리 및 dnf
소프트웨어 패키지 관리자에 대한 액세스 권한이 필요합니다.
Red Hat Enterprise Linux IdM 문서의 플레이북은 다음과 같은 보안 구성 을 가정합니다.
-
IdM
관리자는
관리 노드의 원격 Ansible 사용자입니다. -
암호화된 IdM
관리자
암호를 Ansible 자격 증명 모음에 저장합니다. - 암호 파일에서 Ansible 자격 증명 모음을 보호하는 암호를 저장했습니다.
- 로컬 ansible 사용자를 제외한 모든 사용자에 대해 vault 암호 파일에 대한 액세스를 차단합니다.
- 자격 증명 모음 암호 파일을 정기적으로 제거하고 다시 만듭니다.
대체 보안 구성도 고려하십시오.
5.1. Ansible 플레이북을 사용하여 IdM 관리를 위한 제어 노드 및 관리형 노드 준비
Ansible 플레이북을 저장하고 실행하는 데 사용할 수 있도록 ~/MyPlaybooks 디렉터리를 생성하고 구성하려면 다음 절차를 따르십시오.
사전 요구 사항
- 관리형 노드인 server.idm.example .com 및 replica.idm.example.com에 IdM 서버를 설치했습니다.
- 제어 노드에서 직접 관리형 노드인 server.idm.example.com 및 replica.idm.example.com 에 로그인할 수 있도록 DNS 및 네트워킹을 구성했습니다.
-
IdM
관리자
암호를 알고 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 변경합니다.
$ cd ~/MyPlaybooks
다음 콘텐츠를 사용하여 ~/Myplaybooks/ansible.cfg 파일을 만듭니다.
[defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
다음 콘텐츠를 사용하여 ~/Myplaybooks/inventory 파일을 만듭니다.
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
이 구성은 이러한 위치에 있는 호스트에 대한 두 개의 호스트 그룹인 eu 와 us 를 정의합니다. 또한 이 구성은 eu 및 us 그룹의 모든 호스트를 포함하는 ipaserver 호스트 그룹을 정의합니다.
[선택 사항] SSH 공개 및 개인 키를 생성합니다. 테스트 환경에서 액세스를 간소화하려면 개인 키에 암호를 설정하지 마십시오.
$ ssh-keygen
SSH 공개 키를 각 관리 노드의 IdM
admin
계정에 복사합니다.$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
이러한 명령을 사용하려면 IdM
관리자
암호를 입력해야 합니다.vault 암호가 포함된 password_file 파일을 생성합니다.
redhat
파일을 수정하려면 권한을 변경합니다.
$ chmod 0600 password_file
IdM
관리자
암호를 저장할 secret.yml Ansible 자격 증명 모음을 생성합니다.vault 암호를 저장하도록 password_file 을 구성합니다.
$ ansible-vault create --vault-password-file=password_file secret.yml
메시지가 표시되면 secret.yml 파일의 내용을 입력합니다.
ipaadmin_password: Secret123
플레이북에서 암호화된 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
플레이북을 실행하는 경우 --vault-password-file=password_file옵션을 추가하여 Ansible에서 Vault 암호를 사용하여
의 암호를 해독하도록 지시합니다. 예를 들면 다음과 같습니다.
ipaadmin_password
ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
보안상의 이유로 각 세션이 끝날 때 자격 증명 모음 암호 파일을 제거하고 각 새 세션이 시작될 때 7-9 단계를 반복합니다.
5.2. ansible-freeipa 플레이북에 필요한 자격 증명을 제공하는 다양한 방법
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 플레이북을 사용하는 경우 자격 증명 모음 암호를 대화형으로 입력해야 하는 경우 불편할 수 있습니다.
6장. Ansible 플레이북을 사용하여 글로벌 IdM 설정 구성
Ansible config
모듈을 사용하면 IdM(Identity Management)에 대한 글로벌 구성 매개 변수를 검색하고 설정할 수 있습니다.
6.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 클라이언트, 서버 또는 복제본입니다.
절차
편집을 위해
/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 }}"
다음을 변경하여 파일을 조정합니다.
- IdM 관리자의 암호입니다.
- 필요한 경우 기타 값입니다.
- 파일을 저장합니다.
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 } }
6.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 클라이언트, 서버 또는 복제본입니다.
절차
선택 사항: 현재 IdM CA 갱신 서버를 식별합니다.
$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
편집을 위해
/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
다음과 같이 변경하여 파일을 조정합니다.
-
ipaadmin_password
변수로 설정한 IdM 관리자의 암호입니다. -
ca_renewal_master_server
변수에서 설정한 CA 갱신 서버의 이름입니다.
-
- 파일을 저장합니다.
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
검증 단계
CA 갱신 서버가 변경되었는지 확인할 수 있습니다.
IdM 관리자로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
IdM CA 갱신 서버의 ID를 요청합니다.
$ ipa config-show | grep ‘CA renewal’ IPA CA renewal master: carenewal.idm.example.com
출력에 carenewal.idm.example.com 서버가 새 CA 갱신 서버임을 보여줍니다.
6.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 클라이언트, 서버 또는 복제본입니다.
절차
-
선택 사항:
retrieve-config.yml
Ansible 플레이북을 사용하여 IdM 사용자의 현재 쉘을 식별합니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 구성 검색에서 참조하십시오. 인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
편집을 위해
/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
다음을 변경하여 파일을 조정합니다.
-
ipaadmin_password
변수로 설정한 IdM 관리자의 암호입니다. -
default
shell 변수로 설정한 IdM 사용자의 기본
쉘은/bin/sh
에 있습니다.
-
- 파일을 저장합니다.
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
검증 단계
IdM에서 새 세션을 시작하여 기본 사용자 쉘이 변경되었는지 확인할 수 있습니다.
IdM 관리자로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
현재 쉘을 표시합니다.
[admin@server /]$ echo "$SHELL" /bin/sh
로그인한 사용자는
sh
쉘을 사용하고 있습니다.
6.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
를 저장하고 자격 증명 모음 파일 암호를 알고 있다고 가정합니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
- netbios-domain-name-present.yml Ansible 플레이북 파일을 생성합니다.
파일에 다음 내용을 추가합니다.
--- - 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
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory netbios-domain-name-present.yml
메시지가 표시되면 자격 증명 모음 파일 암호를 입력합니다.
추가 리소스
6.5. Ansible을 사용하여 IdM 사용자 및 그룹에 CloudEvent가 있는지 확인
IdM(Identity Management) 서버는 로컬 도메인의 ID 범위에 있는 데이터에 따라 내부적으로 IdM(보안 식별자)을 IdM 사용자 및 그룹에 할당할 수 있습니다. CloudEvents는 사용자 및 그룹 오브젝트에 저장됩니다.
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
를 저장하고 자격 증명 모음 파일 암호를 알고 있다고 가정합니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
- sids-for-users-and-groups-present.yml Ansible 플레이북 파일을 생성합니다.
파일에 다음 내용을 추가합니다.
--- - 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
enable_sid
변수를 사용하면 향후 IdM 사용자 및 그룹에 대해 CloudEvent 생성을 활성화합니다.add_sids
변수는 기존 IdM 사용자 및 그룹에 대한 dotnets를 생성합니다.참고add_sids: true
를 사용하는 경우enable_sid
변수를true
로 설정해야 합니다.- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory sids-for-users-and-groups-present.yml
메시지가 표시되면 자격 증명 모음 파일 암호를 입력합니다.
추가 리소스
6.6. 추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-config.md
를 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/config
디렉터리에서 샘플 플레이북을 참조하십시오.
7장. Ansible 플레이북을 사용하여 사용자 계정 관리
Ansible 플레이북을 사용하여 IdM에서 사용자를 관리할 수 있습니다. 사용자 라이프사이클 을 제공한 후 이 장에서는 다음 작업에 Ansible 플레이북을 사용하는 방법을 설명합니다.
7.1. 사용자 라이프 사이클
IdM(Identity Management)은 세 가지 사용자 계정 상태를 지원합니다.
- 스테이징 사용자는 인증이 허용되지 않습니다. 초기 상태입니다. 활성 사용자에게 필요한 일부 사용자 계정 속성은 예를 들어 그룹 멤버십을 설정할 수 없습니다.
- 활성 사용자는 인증을 허용합니다. 필요한 모든 사용자 계정 속성은 이 상태에서 설정해야 합니다.
- 보존된 사용자는 비활성으로 간주되고 IdM에 인증할 수 없는 이전 활성 사용자입니다. 보존된 사용자는 활성 사용자로 보유한 계정 속성의 대부분을 유지하지만 사용자 그룹의 일부가 아닙니다.
IdM 데이터베이스에서 영구적으로 사용자 항목을 삭제할 수 있습니다.
삭제된 사용자 계정은 복원할 수 없습니다. 사용자 계정을 삭제하면 계정과 연결된 모든 정보가 영구적으로 손실됩니다.
새 관리자는 기본 admin 사용자와 같은 관리자 권한이 있는 사용자만 만들 수 있습니다. 모든 관리자 계정을 실수로 삭제한 경우 Directory Manager에서 Directory Server에서 새 관리자를 수동으로 생성해야 합니다.
admin
사용자를 삭제하지 마십시오. admin
은 IdM에 필요한 사전 정의된 사용자이므로 이 작업으로 인해 특정 명령에서 문제가 발생합니다. 대체 admin 사용자를 정의하고 사용하려는 경우 하나 이상의 다른 사용자에게 admin
권한을 부여한 후 ipa 사용자 비활성화
admin으로 사전 정의된 admin 사용자를 비활성화합니다.
IdM에 로컬 사용자를 추가하지 마십시오. NSS(Name Service Switch)는 로컬 사용자 및 그룹을 확인하기 전에 항상 IdM 사용자 및 그룹을 확인합니다. 즉, IdM 그룹 멤버십은 로컬 사용자에게 작동하지 않습니다.
7.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 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
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
사용자를 추가하려면 다음 옵션을 사용해야 합니다.
- name: 로그인 이름
- first: 첫 번째 이름 문자열
- last: 성 문자열
사용 가능한 사용자 옵션의 전체 목록은
/usr/share/doc/ansible-freeipa/README-user.md
Markdown 파일을 참조하십시오.참고update_password: on_create
옵션을 사용하는 경우 Ansible은 사용자를 생성할 때만 사용자 암호를 생성합니다. 사용자가 이미 암호를 사용하여 생성된 경우 Ansible에서 새 암호를 생성하지 않습니다.플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-IdM-user.yml
검증 단계
ipa user-show
명령을 사용하여 새 사용자 계정이 IdM에 있는지 확인할 수 있습니다.admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
관리자용 Kerberos 티켓을 요청합니다.
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
idm_user 에 대한 정보를 요청합니다.
$ ipa user-show idm_user User login: idm_user First name: Alice Last name: Acme ....
이름이 idm_user 인 사용자는 IdM에 있습니다.
7.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 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
IdM에서 확인할 사용자의 데이터로 Ansible 플레이북 파일을 생성합니다. 이 단계를 간소화하기 위해
/usr/share/doc/ansible-freeipa/playbooks/user/ensure-users-present.yml
파일에서 예제를 복사하고 수정할 수 있습니다. 예를 들어 idm_user_1, idm_user _2 및 idm_user _3 사용자를 생성하고, Password123 을 idm_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
참고update_password: on_create 옵션을 지정하지 않으면 Ansible은 플레이북을 실행할 때마다 사용자 암호를 다시 설정합니다. 플레이북이 마지막으로 실행된 이후 사용자가 암호를 변경한 경우 Ansible은 암호를 다시 설정합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-users.yml
검증 단계
ipa user-show
명령을 사용하여 사용자 계정이 IdM에 있는지 확인할 수 있습니다.관리자로
ipaserver
에 로그인합니다.$ ssh administrator@server.idm.example.com Password: [admin@server /]$
idm_user_1 에 대한 정보 표시:
$ ipa user-show idm_user_1 User login: idm_user_1 First name: Alice Last name: Acme Password: True ....
IdM에 idm_user_1 이라는 사용자가 있습니다.
7.4. Ansible 플레이북을 사용하여 JSON 파일에서 여러 IdM 사용자가 있는지 확인
다음 절차에서는 Ansible 플레이북을 사용하여 IdM에 여러 사용자가 있는지 확인하는 방법을 설명합니다. 사용자는 JSON
파일에 저장됩니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 작업을 사용하여 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 }}"
users.json
파일을 생성하고 IdM 사용자를 추가합니다. 이 단계를 간소화하기 위해/usr/share/doc/ansible-freeipa/playbooks/user/users.json
파일에서 예제를 복사하고 수정할 수 있습니다. 예를 들어 idm_user_1, idm_user _2 및 idm_user _3 사용자를 생성하고, Password123 을 idm_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" } ] }
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
검증 단계
ipa user-show
명령을 사용하여 사용자 계정이 IdM에 있는지 확인할 수 있습니다.관리자로
ipaserver
에 로그인합니다.$ ssh administrator@server.idm.example.com Password: [admin@server /]$
idm_user_1 에 대한 정보 표시:
$ ipa user-show idm_user_1 User login: idm_user_1 First name: Alice Last name: Acme Password: True ....
IdM에 idm_user_1 이라는 사용자가 있습니다.
7.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 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
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
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
검증 단계
ipa user-show
명령을 사용하여 사용자 계정이 IdM에 없는지 확인할 수 있습니다.
관리자로
ipaserver
에 로그인합니다.$ ssh administrator@server.idm.example.com Password: [admin@server /]$
idm_user_1 에 대한 정보를 요청합니다.
$ ipa user-show idm_user_1 ipa: ERROR: idm_user_1: user not found
이름이 idm_user_1 인 사용자는 IdM에 없습니다.
7.6. 추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-user.md
마크다운 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/user
디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.
8장. Ansible 플레이북을 사용하여 사용자 그룹 관리
이 섹션에서는 Ansible 플레이북을 사용한 사용자 그룹 관리에 대해 소개합니다.
사용자 그룹은 공통 권한, 암호 정책 및 기타 특성을 가진 사용자 집합입니다.
IdM(Identity Management)의 사용자 그룹은 다음을 포함할 수 있습니다.
- IdM 사용자
- 기타 IdM 사용자 그룹
- 외부 사용자 - IdM 외부에 존재하는 사용자
섹션에는 다음 주제가 포함됩니다.
8.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가 정의되어 있지 않습니다.
표 8.1. 기본적으로 생성된 사용자 그룹
그룹 이름 | 기본 그룹 멤버 |
---|---|
| 모든 IdM 사용자 |
|
기본 |
| 이는 더 이상 특수 권한이 없는 레거시 그룹입니다. |
| Active Directory 신뢰 관리를 위한 권한이 있는 사용자 |
사용자를 사용자 그룹에 추가하면 사용자에게 그룹과 관련된 권한 및 정책이 부여됩니다. 예를 들어 사용자에게 관리 권한을 부여하려면 사용자를 admins
그룹에 추가합니다.
admins
그룹을 삭제하지 마십시오. admins
는 IdM에 필요한 사전 정의된 그룹이므로 이 작업으로 인해 특정 명령에 문제가 발생합니다.
또한 IdM에서 새 사용자가 생성될 때마다 IdM은 기본적으로 사용자 개인 그룹을 생성합니다. 개인 그룹에 대한 자세한 내용은 개인 그룹이 없는 사용자 추가를 참조하십시오.
8.2. 직접 및 간접 그룹 구성원
IdM의 사용자 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. B 그룹이 A 그룹의 구성원이면 B 그룹의 모든 사용자는 A 그룹의 간접 구성원으로 간주됩니다.
예를 들어 다음 다이어그램에서 다음을 수행합니다.
- User 1 및 User 2는 A 그룹의 직접 구성원입니다.
- User 3, User 4 및 User 5는 A 그룹의 간접 구성원입니다.
그림 8.1. 직접 및 간접 그룹 멤버십
사용자 그룹 A에 대한 암호 정책을 설정하면 이 정책은 사용자 그룹 B의 모든 사용자에게도 적용됩니다.
8.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 플레이북을 사용하여 사용자 계정 관리를 참조하십시오.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 사용자 및 그룹 정보를 사용하여 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
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-group-members.yml
검증 단계
ipa group-show
명령을 사용하여 ops 그룹에 sysops 및 appops 가 직접 멤버로 포함되고 idm_user 가 간접 구성원으로 포함되어 있는지 확인할 수 있습니다.
관리자로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
ops 에 대한 정보를 표시합니다 :
ipaserver]$ ipa group-show ops Group name: ops GID: 1234 Member groups: sysops, appops Indirect Member users: idm_user
appops 및 sysops 그룹 - idm_user 사용자를 포함하는 후자는 IdM에 있습니다.
추가 리소스
-
/usr/share/doc/ansible-freeipa/README-group.md
Markdown 파일을 참조하십시오.
8.4. Ansible을 사용하여 단일 작업에 여러 IdM 그룹 추가
ansible-freeipa
ipagroup
모듈을 사용하여 단일 Ansible 작업으로 여러 IdM(Identity Management) 사용자 그룹을 추가, 수정, 삭제할 수 있습니다. 이를 위해 ipagroup
모듈의 groups
옵션을 사용합니다.
groups
옵션을 사용하여 특정 그룹에만 적용되는 그룹 변수를 여러 개 지정할 수도 있습니다. groups
옵션의 유일한 필수 변수인 name
변수로 이 그룹을 정의합니다.
단일 작업에서 IdM에 sysops 및 appops 그룹이 있는지 확인하려면 다음 절차를 완료합니다. sysops 그룹을 비posix 그룹으로 정의하고 appops 그룹을 외부 그룹으로 정의합니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
- RHEL 8.9 이상을 사용하고 있습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
절차
다음 콘텐츠를 사용하여 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
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/add-nonposix-and-external-groups.yml
8.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
다음 콘텐츠를 사용하여
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
예에서는 다음을 수행합니다.
-
Secret123은 IdM
관리자
암호입니다. -
관리자는
ad_user@ad.example.com ID 덮어쓰기를 추가하는 IdM POSIX 그룹의 이름입니다. 이 그룹의 멤버는 전체 관리자 권한이 있습니다. - ad_user@ad.example.com 은 AD 관리자의 사용자 ID 덮어쓰기입니다. 사용자가 신뢰가 설정된 AD 도메인에 저장됩니다.
-
Secret123은 IdM
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-useridoverride-to-group.yml
추가 리소스
- AD 사용자의 ID 덮어쓰기
- /usr/share/doc/ansible-freeipa/README-group.md
- /usr/share/doc/ansible-freeipa/playbooks/user
- Active Directory 환경에서 ID 보기 사용
- AD 사용자가 IdM을 관리하도록 활성화
8.6. 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 클라이언트, 서버 또는 복제본입니다. - 멤버 관리자로 추가하려는 사용자 또는 그룹의 이름과 관리하려는 그룹의 이름이 있어야 합니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 사용자 및 그룹 구성원 관리 정보를 사용하여 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
플레이북을 실행합니다.
$ 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
검증 단계
ipa group-show
명령을 사용하여 group_a 그룹에 test 가 구성원 관리자로 포함되어 있고 group_admins 가 group_a 의 멤버 관리자인지 확인할 수 있습니다.
관리자로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
managergroup1 에 대한 정보 표시 :
ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test
추가 리소스
-
ipa host-add-member-manager --help를
참조하십시오. -
ipa
도움말 페이지를 참조하십시오.
8.7. 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 클라이언트, 서버 또는 복제본입니다. - 제거 중인 기존 멤버 관리자 사용자 또는 그룹의 이름과 관리 중인 그룹의 이름이 있어야 합니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 사용자 및 그룹 구성원 관리 정보를 사용하여 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
플레이북을 실행합니다.
$ 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
검증 단계
ipa group-show
명령을 사용하여 group_a 그룹에 test 가 구성원 관리자로 포함되어 있지 않은지, group_admins 가 group_a 의 멤버 관리자로 포함되어 있지 않은지 확인할 수 있습니다.
관리자로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
group_a에 대한 정보를 표시합니다.
ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009
추가 리소스
-
ipa host-remove-member-manager --help를
참조하십시오. -
ipa
도움말 페이지를 참조하십시오.
9장. Ansible을 사용하여 IdM의 그룹 멤버십 자동화
자동 그룹 멤버십을 사용하면 해당 속성에 따라 사용자 및 호스트 사용자 그룹 및 호스트 그룹을 자동으로 할당할 수 있습니다. 예를 들면 다음을 수행할 수 있습니다.
-
직원의 사용자 항목을 직원의 관리자, 위치, 위치 또는 기타 속성에 따라 그룹으로 나눕니다. 명령줄에
ipa user-add --help
를 입력하여 모든 속성을 나열할 수 있습니다. -
클래스, 위치 또는 기타 특성을 기반으로 호스트를 그룹으로 나눕니다. 명령줄에서
ipa host-add --help
를 입력하여 모든 속성을 나열할 수 있습니다. - 모든 사용자 또는 모든 호스트를 단일 글로벌 그룹에 추가합니다.
Red Hat Ansible Engine을 사용하여 IdM(Identity Management)의 자동 그룹 멤버십 관리를 자동화할 수 있습니다.
이 섹션에서는 다음 주제를 다룹니다.
9.1. Ansible을 사용하여 IdM 사용자 그룹에 대한 automember 규칙이 있는지 확인합니다.
다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹에 대한 자동 구성원
규칙이 있는지 확인하는 방법을 설명합니다. 이 예에서 automember
규칙의 존재는 testing_group 사용자 그룹에 대해 확인합니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. - testing_group 사용자 그룹이 IdM에 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집할
automember-group-present-copy.yml
파일을 엽니다. ipaautomember
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 testing_group 로 설정합니다. -
automember_type
변수를 그룹 으로 설정합니다. -
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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-present-copy.yml
9.2. Ansible을 사용하여 IdM 사용자 그룹 자동 구성원 규칙에 지정된 조건이 있는지 확인합니다.
추가 리소스
다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹에 대한 자동 구성원
규칙에 지정된 조건이 있는지 확인하는 방법을 설명합니다. 이 예에서 automember
규칙에 UID 관련 조건이 있으면 testing_group 그룹에 대해 확인합니다. .* 조건을 지정하면 향후 모든 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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/automember/
디렉터리에 있는automember-hostgroup-rule-present.yml
Ansible 플레이북 파일을 복사하고 이름을 automember-usergroup-rule-rule-present.yml이라고 합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-usergroup-rule-present.yml
-
편집할
automember-usergroup-rule-present.yml
파일을 엽니다. 다음 매개 변수를 수정하여 파일을 조정합니다.
- 다음과 같이 사용 사례에 맞게 플레이북 이름을 변경합니다. automember user group rule member present.
- 사용 사례에 대응하도록 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다. 사용자 그룹의 automember 조건이 있는지 확인합니다.
ipaautomember
작업 섹션에서 다음 변수를 설정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 testing_group 로 설정합니다. -
automember_type
변수를그룹
으로 설정합니다. -
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: .*
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-present.yml
검증 단계
IdM 관리자로 로그인합니다.
$ kinit admin
사용자를 추가합니다. 예를 들면 다음과 같습니다.
$ 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 ...
9.3. Ansible을 사용하여 IdM 사용자 그룹 자동 멤버십 규칙의 조건이 없는지 확인합니다.
추가 리소스
다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹에 대한 automember
규칙의 조건이 없는지 확인하는 방법을 설명합니다. 이 예에서 automember
규칙에서 조건이 없으면 초기인 사용자가 dp 를 포함해야 함을 지정합니다. automember 규칙은 testing_group 그룹에 적용됩니다. 조건을 적용하면 초기인 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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집할
automember-usergroup-rule-absent.yml
파일을 엽니다. 다음 매개 변수를 수정하여 파일을 조정합니다.
- 다음과 같이 사용 사례에 맞게 플레이북 이름을 변경합니다. automember user group rule member absent.
- 사용 사례에 대응하도록 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다. 사용자 그룹의 automember 조건이 없는지 확인합니다.
ipaautomember
작업 섹션에서 다음 변수를 설정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 testing_group 로 설정합니다. -
automember_type
변수를 그룹 으로 설정합니다. -
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
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-absent.yml
검증 단계
IdM 관리자로 로그인합니다.
$ kinit admin
automember 그룹을 확인합니다.
$ ipa automember-show --type=group testing_group Automember Rule: testing_group
출력에 Inclusive Regex: initials=dp
항목이 없으면 testing_group automember 규칙에 지정된 조건이 포함되어 있지 않습니다.
9.4. Ansible을 사용하여 IdM 사용자 그룹에 대한 automember 규칙이 없는지 확인합니다.
추가 리소스
다음 절차에서는 Ansible 플레이북을 사용하여 IdM(Identity Management) 그룹에 automember
규칙이 없는지 확인하는 방법을 설명합니다. 이 예제에서는 automember
규칙의 부재는 testing_group 그룹에 대해 확인합니다.
자동 구성원 규칙을 삭제하면 규칙과 연결된 모든 조건도 삭제됩니다. 규칙에서 특정 조건만 제거하려면 Ansible 사용을 참조하여 IdM 사용자 그룹 자동 구성원 규칙에 조건이 없는지 확인하십시오.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집할
automember-group-absent-copy.yml
파일을 엽니다. ipaautomember
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 testing_group 로 설정합니다. -
automember_type
변수를 그룹 으로 설정합니다. -
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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-absent.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-automember.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/automember
디렉토리를 참조하십시오.
9.5. Ansible을 사용하여 IdM 호스트 그룹 자동 구성원 규칙에 조건이 있는지 확인합니다.
Ansible을 사용하여 IdM 호스트 그룹 automember 규칙에 조건이 있는지 확인합니다. 이 예제에서는 FQDN
이 .*.idm.example.com 인 호스트가 primary_dns_domain_hosts 호스트 그룹의 멤버이고 FQDN
이 .*.example.org 인 호스트가 primary_dns_domain_hosts 호스트 그룹의 멤버가 아닌지 확인하는 방법을 설명합니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. - primary_dns_domain_hosts 호스트 그룹과 호스트 그룹 규칙이 IdM에 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집할
automember-hostgroup-rule-copy.yml
파일을 엽니다. ipaautomember
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 primary_dns_domain_hosts 로 설정합니다. -
automember_type
변수를 hostgroup 로 설정합니다. -
state
변수가present로 설정되어 있는지 확인합니다
. -
action
변수가member
로 설정되어 있는지 확인합니다. -
inclusive
key
변수가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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-hostgroup-rule-present-copy.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-automember.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/automember
디렉토리를 참조하십시오.
10장. Ansible 플레이북을 사용하여 IdM에서 셀프 서비스 규칙 관리
이 섹션에서는 IdM(Identity Management)의 셀프 서비스 규칙을 소개하고 Ansible 플레이북을 사용하여 셀프 서비스 액세스 규칙을 생성하고 편집하는 방법을 설명합니다. 셀프 서비스 액세스 제어 규칙을 사용하면 IdM 엔터티에서 IdM 디렉터리 서버 항목에서 지정된 작업을 수행할 수 있습니다.
10.1. IdM의 셀프 서비스 액세스 제어
셀프 서비스 액세스 제어 규칙은 IdM(Identity Management) 엔터티가 IdM Directory Server 항목에서 수행할 수 있는 작업을 정의합니다. 예를 들어 IdM 사용자는 자신의 암호를 업데이트할 수 있습니다.
이 제어 방법을 사용하면 인증된 IdM 엔터티에서 LDAP 항목 내에서 특정 속성을 편집할 수 있지만 전체 항목에서 작업을 추가하거나
삭제할
수는 없습니다.
셀프 서비스 액세스 제어 규칙으로 작업할 때 주의하십시오. 액세스 제어 규칙을 부적절하게 구성하면 엔터티의 권한을 의도치 않게 높일 수 있습니다.
10.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집할
selfservice-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-present-copy.yml
추가 리소스
- IdM의 셀프 서비스 액세스 제어를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-selfservice.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
디렉토리를 참조하십시오.
10.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
selfservice-absent-copy.yml
Ansible 플레이북 파일을 편집하여 편집합니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-absent-copy.yml
추가 리소스
- IdM의 셀프 서비스 액세스 제어를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-selfservice.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
디렉터리에서 샘플 플레이북을 참조하십시오.
10.4. Ansible을 사용하여 셀프 서비스 규칙에 특정 특성이 있는지 확인합니다.
다음 절차에서는 Ansible 플레이북을 사용하여 기존 셀프 서비스 규칙에 특정 설정이 있는지 확인하는 방법을 설명합니다. 이 예제에서는 사용자가 자신의 이름 세부 정보 셀프 서비스 규칙에 성
멤버 속성도 관리할 수 있는지 확인합니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - 사용자는 IdM에 있는 고유한 이름 세부 정보 셀프 서비스 규칙을 관리할 수 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
selfservice-member-present-copy.yml
Ansible 플레이북 파일을 편집하여 편집합니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-present-copy.yml
추가 리소스
- IdM의 셀프 서비스 액세스 제어를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에서 사용 가능한README-selfservice.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
디렉터리에서 샘플 플레이북을 참조하십시오.
10.5. Ansible을 사용하여 셀프 서비스 규칙에 특정 속성이 없는지 확인합니다.
다음 절차에서는 Ansible 플레이북을 사용하여 셀프 서비스 규칙에 특정 설정이 없는지 확인하는 방법을 설명합니다. 이 플레이북을 사용하여 셀프 서비스 규칙이 바람직하지 않은 액세스 권한을 부여하지 않도록 할 수 있습니다. 이 예에서 사용자는 이름 세부 정보 셀프 서비스 규칙에 지정된 이름과
성
멤버 속성이 없는지 확인합니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - 사용자는 IdM에 있는 고유한 이름 세부 정보 셀프 서비스 규칙을 관리할 수 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
selfservice-member-absent-copy.yml
Ansible 플레이북 파일을 편집하여 편집합니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-absent-copy.yml
추가 리소스
- IdM의 셀프 서비스 액세스 제어를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-selfservice.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
디렉터리에서 샘플 플레이북을 참조하십시오.
11장. Ansible 플레이북을 사용하여 사용자를 관리하기 위해 사용자 그룹에 권한을 위임
위임은 IdM의 액세스 제어 방법 중 하나로 셀프 서비스 규칙 및 역할 기반 액세스 제어(RBAC)와 함께 사용됩니다. 위임을 사용하여 한 사용자 그룹에 권한을 할당하여 다른 사용자 그룹의 항목을 관리할 수 있습니다.
이 섹션에서는 다음 주제를 다룹니다.
11.1. 위임 규칙
위임 규칙을 만들어 사용자 그룹에 권한을 위임하여 사용자를 관리할 수 있습니다.
위임 규칙을 사용하면 특정 사용자 그룹이 다른 사용자 그룹의 특정 속성에 대한 쓰기(편집) 작업을 수행할 수 있습니다. 이 형태의 액세스 제어 규칙은 위임 규칙에서 지정한 속성의 값 편집으로 제한됩니다. 전체 항목을 추가 또는 제거하는 기능을 부여하지 않습니다. 지정되지 않은 속성에 대해 전체 항목을 추가하거나 제어하는 기능을 부여하지 않습니다.
위임 규칙은 IdM의 기존 사용자 그룹에 권한을 부여합니다. 예를 들어 위임을 사용하여 managers
사용자 그룹이 employees
사용자 그룹에서 선택한 사용자 속성을 관리할 수 있습니다.
11.2. IdM용 Ansible 인벤토리 파일 생성
Ansible을 사용하는 경우 홈 디렉터리에서 /usr/share/doc/ ansible-freeipa/* 및 /usr/share/doc
하위 디렉터리를 복사하고 적응하는 Ansible 플레이북 전용 하위 디렉터리를 생성하는 것이 좋습니다. 이 연습에는 다음과 같은 이점이 있습니다.
-roles/*
- 모든 플레이북을 한 곳에서 찾을 수 있습니다.
-
루트
권한을 호출하지 않고 플레이북을 실행할 수 있습니다.
절차
홈 디렉터리에서 Ansible 구성 및 플레이북의 디렉터리를 생성합니다.
$ mkdir ~/MyPlaybooks/
~/MyPlaybooks/ 디렉터리로 변경합니다.
$ cd ~/MyPlaybooks
다음 콘텐츠를 사용하여 ~/Myplaybooks/ansible.cfg 파일을 만듭니다.
[defaults] inventory = /home/<username>/MyPlaybooks/inventory [privilege_escalation] become=True
다음 콘텐츠를 사용하여 ~/Myplaybooks/inventory 파일을 만듭니다.
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
이 구성은 이러한 위치에 있는 호스트에 대한 두 개의 호스트 그룹인 eu 와 us 를 정의합니다. 또한 이 구성은 eu 및 us 그룹의 모든 호스트를 포함하는 ipaserver 호스트 그룹을 정의합니다.
11.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집
할 delegation-present-copy.yml
Ansible 플레이북 파일을 엽니다. ipadelegation
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자의 암호로 설정합니다. -
name
변수를 새 위임 규칙의 이름으로 설정합니다. -
권한
변수를 쉼표로 구분된 권한 목록(읽기
및쓰기
)으로 설정합니다. -
속성
변수를 위임된 사용자 그룹이 관리할 수 있는 속성 목록(businesscategory
,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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-present-copy.yml
추가 리소스
- 위임 규칙을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉터리의README-delegation.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
디렉터리에서 샘플 플레이북을 참조하십시오.
11.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks>/
/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
-
편집
할 delegation-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-absent-copy.yml
추가 리소스
- 위임 규칙을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉터리의README-delegation.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
디렉터리에서 샘플 플레이북을 참조하십시오.
11.5. 위임 규칙에 특정 속성이 있는지 확인하려면 Ansible을 사용합니다.
다음 절차에서는 Ansible 플레이북을 사용하여 위임 규칙에 특정 설정이 있는지 확인하는 방법을 설명합니다. 이 플레이북을 사용하여 이전에 만든 위임 역할을 수정할 수 있습니다. 이 예제에서는 기본 관리자 속성 위임 규칙에 departmentnumber
멤버 속성만 있는지 확인합니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - 기본 관리자 속성 위임 규칙은 IdM에 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집
할 delegation-member-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-present-copy.yml
추가 리소스
- 위임 규칙을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉터리의README-delegation.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
디렉터리에서 샘플 플레이북을 참조하십시오.
11.6. 위임 규칙에 특정 속성이 없는지 확인하려면 Ansible을 사용합니다.
다음 절차에서는 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에 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집
할 delegation-member-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-absent-copy.yml
추가 리소스
- 위임 규칙을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉터리의README-delegation.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
디렉터리에서 샘플 플레이북을 참조하십시오.
12장. Ansible 플레이북을 사용하여 IdM에서 역할 기반 액세스 제어 관리
RBAC(역할 기반 액세스 제어)는 역할 및 권한에 대해 정의된 정책 중립 액세스 제어 메커니즘입니다. IdM(Identity Management)의 RBAC 구성 요소는 역할, 권한 및 권한입니다.
- 권한 은 사용자 추가 또는 삭제, 그룹 수정, 읽기 액세스 활성화와 같은 특정 작업을 수행할 수 있는 권한을 부여합니다.
- 권한은 권한을 결합합니다(예: 새 사용자를 추가하는 데 필요한 모든 권한).
- 역할은 사용자, 사용자 그룹, 호스트 또는 호스트 그룹에 일련의 권한을 부여합니다.
특히 대기업에서는 RBAC를 사용하면 개별 책임을 수행하는 관리자의 계층적 시스템을 만들 수 있습니다.
이 장에서는 Ansible 플레이북을 사용하여 RBAC를 관리할 때 수행되는 다음 작업을 설명합니다.
- Ansible을 사용하여 권한이 있는 IdM RBAC 역할이 있는지 확인합니다.
- Ansible을 사용하여 IdM RBAC 역할이 없는지 확인합니다.
- Ansible을 사용하여 사용자 그룹이 IdM RBAC 역할에 할당되었는지 확인합니다.
- Ansible을 사용하여 특정 사용자가 IdM RBAC 역할에 할당되지 않도록 합니다.
- 서비스가 IdM RBAC 역할의 멤버인지 확인하려면 Ansible을 사용합니다.
- 호스트가 IdM RBAC 역할의 멤버인지 확인하려면 Ansible을 사용합니다.
- Ansible을 사용하여 호스트 그룹이 IdM RBAC 역할의 멤버인지 확인합니다.
12.1. IdM의 권한
권한은 역할 기반 액세스 제어의 최하위 단위이며, 해당 작업이 적용되는 LDAP 항목과 함께 작업을 정의합니다. 구성 요소와 비교했을 때 필요한 수의 권한에 권한을 할당할 수 있습니다.
하나 이상의 권한은 다음을 허용하는 작업을 정의합니다.
-
write
-
read
-
search
-
비교
-
add
-
delete
-
all
이러한 작업은 세 개의 기본 대상에 적용됩니다 :
-
subtree
: 도메인 이름(DN), 이 DN 아래의 하위 트리 -
대상 필터
: LDAP 필터 -
대상
: 항목을 지정하는 데 사용할 수 있는 와일드카드가 있는 DN
또한 다음과 같은 편의성 옵션은 해당 특성을 설정합니다.
-
type
: 유형의 개체 (사용자, 그룹 등)는subtree
및target filter
를 설정합니다. -
memberOf
: 그룹의 구성원;대상 필터를
설정합니다. -
targetGroup
: 특정 그룹을 수정할 액세스 권한을 부여합니다(예: 그룹 멤버십을 관리할 수 있는 권한 부여).대상을
설정합니다.
IdM 권한을 사용하면 어떤 사용자가 어떤 오브젝트에 대한 액세스 권한이 있는지 그리고 이러한 오브젝트의 속성까지 제어할 수 있습니다. IdM을 사용하면 개별 속성을 허용 또는 차단하거나 사용자, 그룹 또는 sudo와 같은 특정 IdM 기능의 전체 가시성을 모든 익명 사용자, 모든 인증된 사용자 또는 특정 권한 있는 사용자 그룹에 변경할 수 있습니다.
예를 들어 이 접근 방식의 권한의 유연성은 사용자 또는 그룹에 대한 액세스만 제한하려는 관리자에게 유용합니다. 사용자 또는 그룹이 액세스해야 하는 특정 섹션으로만 액세스하고 다른 섹션에 완전히 숨길 수 있도록 합니다.
권한에는 다른 권한이 포함될 수 없습니다.
12.2. 기본 관리 권한
관리 권한은 기본적으로 IdM과 함께 제공되는 권한입니다. 다음과 같은 차이점을 사용하여 사용자가 생성한 다른 권한처럼 작동합니다.
- 해당 파일을 삭제하거나 이름, 위치, 대상 특성을 수정할 수 없습니다.
여기에는 세 가지 속성 세트가 있습니다.
- 기본 속성은 IdM에서 관리하므로 사용자가 수정할 수 없습니다.
- 사용자가 추가한 속성인 포함된 속성
- 사용자가 제거하는 속성인 제외된 속성
관리되는 권한은 기본 및 포함된 특성 세트에 표시되지만 제외된 속성 세트에는 표시되지 않는 모든 속성에 적용됩니다.
관리 권한을 삭제할 수는 없지만 바인딩 유형을 권한으로 설정하고 모든 권한에서 관리 권한을 제거하면 효과적으로 비활성화됩니다.
관리되는 모든 권한의 이름은 시스템:(예:
시스템): Sudo rule
또는 시스템을 추가합니다: Services
를 수정합니다. 이전 버전의 IdM에서는 기본 권한에 다른 체계를 사용했습니다. 예를 들어 사용자는 삭제할 수 없으며 권한에만 할당할 수 있었습니다. 이러한 기본 권한은 대부분 관리 권한으로 설정되었지만 다음 권한은 여전히 이전 체계를 사용합니다.
- Automember Rebuild Membership 작업 추가
- 구성 하위 항목 추가
- 복제 계약 추가
- 인증서 제거 보류
- CA에서 인증서 상태 가져오기
- DNA 범위 읽기
- DNA 범위 수정
- PassSync 관리자 구성 읽기
- PassSync 관리자 구성 수정
- 복제 계약 읽기
- 복제 계약 수정
- 복제 계약 제거
- LDBM 데이터베이스 구성 읽기
- 요청 인증서
- CA ACL을 무시하는 인증서 요청
- 다른 호스트의 인증서 요청
- CA에서 인증서 검색
- 인증서 해지
- IPA 설정 쓰기
명령줄에서 관리 권한을 수정하려고 하면 시스템에서 수정할 수 없는 특성을 변경할 수 없으므로 명령이 실패합니다. 웹 UI에서 관리 권한을 수정하려고 하면 수정할 수 없는 속성이 비활성화됩니다.
12.3. IdM의 권한
권한은 역할에 적용할 수 있는 권한 그룹입니다.
권한은 단일 작업을 수행할 수 있는 권한을 제공하지만 성공하려면 여러 권한이 필요한 특정 IdM 작업이 있습니다. 따라서 권한은 특정 작업을 수행하는 데 필요한 다양한 권한을 결합합니다.
예를 들어 새 IdM 사용자의 계정을 설정하려면 다음과 같은 권한이 필요합니다.
- 새 사용자 항목 생성
- 사용자 암호 재설정
- 새 사용자를 기본 IPA 사용자 그룹에 추가
이러한 세 가지 하위 수준 작업을 이름이 지정된 사용자 지정 권한의 형태로 더 높은 수준의 작업(예: 사용자 추가) 에 결합하면 시스템 관리자가 역할을 쉽게 관리할 수 있습니다. IdM에는 이미 몇 가지 기본 권한이 포함되어 있습니다. 사용자 및 사용자 그룹 외에도 호스트 및 호스트 그룹은 네트워크 서비스에도 권한이 할당됩니다. 이 방법을 사용하면 특정 네트워크 서비스를 사용하는 호스트 집합의 사용자 집합에 의한 작업을 세부적으로 제어할 수 있습니다.
권한에는 다른 권한이 없을 수 있습니다.
12.4. IdM의 역할
역할은 역할에 지정된 사용자가 보유하는 권한 목록입니다.
실제로 권한은 지정된 하위 수준 작업(예: 사용자 항목 생성 및 그룹에 항목을 추가하는 등)을 수행할 수 있는 기능을 부여하며, 권한은 상위 수준 작업(예: 지정된 그룹에서 새 사용자를 만드는 등)에 필요한 이러한 권한 중 하나 이상을 결합합니다. 역할은 필요에 따라 권한을 함께 수집합니다. 예를 들어 사용자 관리자 역할은 사용자를 추가, 수정, 삭제할 수 있습니다.
역할은 허용된 작업을 분류하는 데 사용됩니다. 권한 분리를 구현하거나 권한 에스컬레이션으로부터 보호하는 툴로 사용되지 않습니다.
역할에 다른 역할은 포함할 수 없습니다.
12.5. ID 관리에 사전 정의된 역할
Red Hat Identity Management는 다음과 같은 일련의 사전 정의 역할을 제공합니다.
표 12.1. ID 관리에서 사전 정의된 역할
Role | 권한 | 설명 |
---|---|---|
등록 관리자 | 호스트 등록 | 클라이언트 또는 호스트, 등록 |
helpdesk | 사용자 및 암호 재설정, 그룹 멤버십 수정 | 간단한 사용자 관리 작업 수행 담당 |
IT 보안 전문가 | Netgroups 관리자, HBAC 관리자, Sudo 관리자 | 호스트 기반 액세스 제어와 같은 보안 정책 관리, sudo 규칙 |
IT 전문가 | 호스트 관리자, 호스트 그룹 관리자, 서비스 관리자, 자동 마운트 관리자 | 호스트 관리 담당 |
보안 설계자 | 위임 관리자, 복제 관리자, 쓰기 IPA 구성, 암호 정책 관리자 | Identity Management 환경 관리, 신뢰 생성, 복제 계약 생성 |
사용자 관리자 | 사용자 관리자, 그룹 관리자, 단계 사용자 관리자 | 사용자 및 그룹 생성 담당 |
12.6. Ansible을 사용하여 권한이 있는 IdM RBAC 역할이 있는지 확인합니다.
기본 역할이 제공하는 기본 역할보다 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 클라이언트, 서버 또는 복제본입니다.
절차
~/<MyPlaybooks>/ 디렉터리로 이동합니다.
$ cd ~/<MyPlaybooks>/
/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
-
편집할
role-member-user-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-present-copy.yml
추가 리소스
- Ansible Vault를 사용하여 콘텐츠 암호화 를 참조하십시오.
- IdM의 역할을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-role
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/iparole
디렉터리에서 샘플 플레이북을 참조하십시오.
12.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 클라이언트, 서버 또는 복제본입니다.
절차
~/<MyPlaybooks>/ 디렉터리로 이동합니다.
$ cd ~/<MyPlaybooks>/
/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
-
편집할
role-is-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-is-absent-copy.yml
추가 리소스
- Ansible Vault를 사용하여 콘텐츠 암호화 를 참조하십시오.
- IdM의 역할을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-role
Markdown 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/iparole
디렉터리에서 샘플 플레이북을 참조하십시오.
12.8. Ansible을 사용하여 사용자 그룹이 IdM RBAC 역할에 할당되었는지 확인합니다.
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 클라이언트, 서버 또는 복제본입니다.
절차
~/<MyPlaybooks>/ 디렉터리로 이동합니다.
$ cd ~/<MyPlaybooks>/
/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
-
편집할
role-member-group-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-group-present-copy.yml
추가 리소스
- Ansible Vault를 사용하여 콘텐츠 암호화 를 참조하십시오.
- IdM의 역할을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-role
Markdown 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/iparole
디렉터리에서 샘플 플레이북을 참조하십시오.
12.9. Ansible을 사용하여 특정 사용자가 IdM RBAC 역할에 할당되지 않도록 합니다.
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 클라이언트, 서버 또는 복제본입니다.
절차
~/<MyPlaybooks>/ 디렉터리로 이동합니다.
$ cd ~/<MyPlaybooks>/
/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
-
편집할
role-member-user-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-absent-copy.yml
추가 리소스
- Ansible Vault를 사용하여 콘텐츠 암호화 를 참조하십시오.
- IdM의 역할을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-role
Markdown 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/iparole
디렉터리에서 샘플 플레이북을 참조하십시오.
12.10. 서비스가 IdM RBAC 역할의 멤버인지 확인하려면 Ansible을 사용합니다.
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에 있습니다.
절차
~/<MyPlaybooks>/ 디렉터리로 이동합니다.
$ cd ~/<MyPlaybooks>/
/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
-
role-member-service-present-copy.yml
Ansible 플레이북 파일을 편집하여 편집합니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-service-present-copy.yml
추가 리소스
- Ansible Vault를 사용하여 콘텐츠 암호화 를 참조하십시오.
- IdM의 역할을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-role
Markdown 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/iparole
디렉터리에서 샘플 플레이북을 참조하십시오.
12.11. 호스트가 IdM RBAC 역할의 멤버인지 확인하려면 Ansible을 사용합니다.
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에 있습니다.
절차
~/<MyPlaybooks>/ 디렉터리로 이동합니다.
$ cd ~/<MyPlaybooks>/
/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
-
role-member-host-present-copy.yml
Ansible 플레이북 파일을 편집하여 편집합니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-host-present-copy.yml
추가 리소스
- Ansible Vault를 사용하여 콘텐츠 암호화 를 참조하십시오.
- IdM의 역할을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-role
Markdown 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/iparole
디렉터리에서 샘플 플레이북을 참조하십시오.
12.12. Ansible을 사용하여 호스트 그룹이 IdM RBAC 역할의 멤버인지 확인합니다.
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에 있습니다.
절차
~/<MyPlaybooks>/ 디렉터리로 이동합니다.
$ cd ~/<MyPlaybooks>/
/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
-
편집할
role-member-hostgroup-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-hostgroup-present-copy.yml
추가 리소스
- Ansible Vault를 사용하여 콘텐츠 암호화 를 참조하십시오.
- IdM의 역할을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-role
Markdown 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/iparole
디렉터리에서 샘플 플레이북을 참조하십시오.
13장. Ansible 플레이북을 사용하여 RBAC 권한 관리
RBAC(역할 기반 액세스 제어)는 역할, 권한 및 권한에 대해 정의된 정책 중립 액세스 제어 메커니즘입니다. 특히 대기업에서는 RBAC를 사용하면 개별 책임을 수행하는 관리자의 계층적 시스템을 만들 수 있습니다.
이 장에서는 IdM(Identity Management)에서 RBAC 권한을 관리하기 위해 Ansible 플레이북을 사용하는 작업에 대해 설명합니다.
사전 요구 사항
- RBAC의 개념과 원칙을 이해합니다.
13.1. Ansible을 사용하여 사용자 지정 IdM RBAC 권한이 있는지 확인
IdM(Identity Management) 역할 기반 액세스 제어(RBAC)에서 사용자 지정 권한을 완전히 작동하려면 단계를 진행해야 합니다.
- 권한이 연결되지 않고 권한을 생성합니다.
- 선택한 권한을 권한에 추가합니다.
다음 절차에서는 나중에 권한을 추가할 수 있도록 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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
privilege-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-present-copy.yml
13.2. Ansible을 사용하여 멤버 권한이 사용자 지정 IdM RBAC 권한에 있는지 확인
IdM(Identity Management) 역할 기반 액세스 제어(RBAC)에서 사용자 지정 권한을 완전히 작동하려면 단계를 진행해야 합니다.
- 권한이 연결되지 않고 권한을 생성합니다.
- 선택한 권한을 권한에 추가합니다.
다음 절차에서는 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 사용을 참조하십시오.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
privilege-member-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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"
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-present-copy.yml
13.3. Ansible을 사용하여 IdM RBAC 권한에 권한이 포함되지 않도록 합니다.
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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
privilege-member-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-absent-copy.yml
13.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 권한이 있는지 를 참조하십시오.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
파일의 복사본을 만듭니다.-freeipa/playbooks/privilege/ 디렉터리에 있는 privilege-
present.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml rename-privilege.yml
-
편집할
rename-privilege.yml
Ansible 플레이북 파일을 엽니다. ipaprivilege
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자의 암호로 설정합니다. -
name
변수를 권한의 현재 이름으로 설정합니다. -
rename
변수를 추가하고 권한의 새 이름으로 설정합니다. -
state
변수를 추가하고이름을 바꿉니다
.
-
플레이북 자체의 이름을 변경합니다. 예를 들면 다음과 같습니다.
--- - name: Rename a privilege hosts: ipaserver
플레이북의 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다.
[...] tasks: - name: Ensure the full_host_administration privilege is renamed to limited_host_administration ipaprivilege: [...]
이는 현재 예제에 대한 수정된 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
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory rename-privilege.yml
13.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
privilege-absent-copy.yml
Ansible 플레이북 파일을 엽니다. ipaprivilege
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자의 암호로 설정합니다. -
name
변수를 제거할 권한의 이름으로 설정합니다. -
state
변수가absent
로 설정되어 있는지 확인합니다.
-
플레이북의 작업의 이름을 변경합니다. 예를 들면 다음과 같습니다.
[...] tasks: - name: Ensure privilege "CA administrator" is absent ipaprivilege: [...]
이는 현재 예제에 대한 수정된 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
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-absent-copy.yml
13.6. 추가 리소스
- IdM의 Privileges을 참조하십시오.
- IdM의 권한 참조.
-
/usr/share/doc/ansible-freeipa/
디렉토리에서 사용 가능한README-privilege
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/ipaprivilege
디렉터리의 샘플 플레이북을 참조하십시오.
14장. Ansible 플레이북을 사용하여 IdM에서 RBAC 권한 관리
RBAC(역할 기반 액세스 제어)는 역할, 권한 및 권한에 대해 정의된 정책 중립 액세스 제어 메커니즘입니다. 특히 대기업에서는 RBAC를 사용하면 개별 책임을 수행하는 관리자의 계층적 시스템을 만들 수 있습니다.
이 장에서는 Ansible 플레이북을 사용하여 IdM(Identity Management)에서 RBAC 권한을 관리할 때 수행되는 다음 작업을 설명합니다.
사전 요구 사항
- RBAC의 개념과 원칙을 이해합니다.
14.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집할
permission-present-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-copy.yml
14.2. Ansible을 사용하여 속성이 있는 RBAC 권한이 있는지 확인합니다.
IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어(RBAC)를 사용자 지정할 수 있습니다.
다음 절차에서는 Ansible 플레이북을 사용하여 권한에 권한을 추가할 수 있도록 IdM에 권한을 제공하는 방법을 설명합니다. 예제에서는 다음 대상 상태를 확인하는 방법을 설명합니다.
- MyPermission 권한이 있습니다.
- MyPermission 권한은 호스트를 추가하는 데만 사용할 수 있습니다.
권한이 포함된 권한이 부여된 사용자는 호스트 항목에서 다음과 같은 모든 작업을 수행할 수 있습니다.
- 쓰기
- 읽기
- 검색
- 비교
- add
- delete
-
MyPermission 권한이 포함된 권한이 부여된 사용자가 생성한 호스트 항목은
description
값을 가질 수 있습니다.
권한을 만들거나 수정할 때 지정할 수 있는 속성 유형은 IdM LDAP 스키마에 의해 제한되지 않습니다. 그러나 object_type이
를 지정하면 나중에 호스트
일 경우 attrs:car_
licenceipa가 됩니다. 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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
permission-present-with-attribute.yml
Ansible 플레이북 파일을 엽니다. 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
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-with-attribute.yml
추가 리소스
- RHEL 7의 Linux 도메인 ID, 인증 및 정책 가이드의 사용자 및 그룹 스키마 를 참조하십시오.
14.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
permission-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-absent-copy.yml
14.4. Ansible을 사용하여 속성이 IdM RBAC 권한의 멤버인지 확인합니다.
IdM(Identity Management)의 시스템 관리자는 IdM 역할 기반 액세스 제어(RBAC)를 사용자 지정할 수 있습니다.
다음 절차에서는 Ansible 플레이북을 사용하여 속성이 IdM에서 RBAC 권한의 멤버인지 확인하는 방법을 설명합니다. 결과적으로 권한이 있는 사용자는 특성이 있는 항목을 생성할 수 있습니다.
이 예제에서는 MyPermission 권한을 포함하는 권한이 있는 사용자가 생성한 호스트 항목에 gecos
및 description
값을 가질 수 있도록 하는 방법을 설명합니다.
권한을 만들거나 수정할 때 지정할 수 있는 속성 유형은 IdM LDAP 스키마에 의해 제한되지 않습니다. 그러나 object_type이
를 지정하면 나중에 호스트
일 경우 attrs:car_
licenceipa가 됩니다. 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 권한이 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
permission-member-present-copy.yml
Ansible 플레이북 파일을 엽니다. ipapermission
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
사용 사례에 대응하도록 작업
이름을
조정합니다. -
ipaadmin_password
변수를 IdM 관리자의 암호로 설정합니다. -
name
변수를 권한의 이름으로 설정합니다. -
attrs
목록을description
및gecos
변수로 설정합니다. -
작업
변수가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
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-present-copy.yml
14.5. Ansible을 사용하여 속성이 IdM RBAC 권한의 멤버가 아닌지 확인합니다.
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 권한이 있습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
permission-member-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-absent-copy.yml
14.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에 존재하지 않습니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/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
-
편집을 위해
permission-renamed-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-renamed-copy.yml
14.7. 추가 리소스
- IdM의 권한 참조.
- IdM의 Privileges을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에서 사용 가능한README-permission
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/ipapermission
디렉터리에서 샘플 플레이북을 참조하십시오.
15장. Ansible을 사용하여 IdM의 복제 토폴로지 관리
여러 IdM(Identity Management) 서버를 유지 관리하고 중복을 위해 서로 복제하여 서버 손실을 완화하거나 방지할 수 있습니다. 예를 들어, 한 서버가 실패하면 다른 서버는 계속 도메인에 서비스를 제공합니다. 나머지 서버 중 하나를 기반으로 새 복제본을 만들어 손실된 서버를 복구할 수도 있습니다.
IdM 서버에 저장된 데이터는 복제 계약에 따라 복제됩니다. 두 서버에 복제 계약이 구성된 경우 해당 데이터를 공유합니다. 복제된 데이터는 토폴로지 접미사
에 저장됩니다. 두 복제본에 접미사 간 복제 계약이 있는 경우 접미사는 토폴로지 세그먼트
를 형성합니다.
이 장에서는 Red Hat Ansible Engine 을 사용하여 IdM 복제 계약, 토폴로지 세그먼트 및 토폴로지 접미사를 관리하는 방법을 설명합니다. 장에는 다음 섹션이 포함되어 있습니다.
15.1. Ansible을 사용하여 IdM에 복제 계약이 있는지 확인
IdM(Identity Management) 서버에 저장된 데이터는 복제 계약에 따라 복제됩니다. 두 서버에 복제 계약이 구성된 경우 데이터를 공유합니다. 복제 계약은 항상 양방향입니다. 데이터는 첫 번째 복제본에서 다른 복제본으로는 물론 다른 복제본으로 복제됩니다.
Ansible 플레이북을 사용하여 server.idm.example.com 과 replica.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/topology/ 디렉터리에 있는 add-topology
segment.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml
-
add-topologysegment-copy.yml
파일을 열어 편집합니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegment-copy.yml
추가 리소스
- 복제 계약, Topology Suffixes, Topology Segments를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에 있는README-topology.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/topology
디렉터리에서 샘플 플레이북을 참조하십시오.
15.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/topology/ 디렉터리에 있는 add-topologysegments
.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegments.yml add-topologysegments-copy.yml
-
add-topologysegments-copy.yml
파일을 열어 편집합니다. vars
섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. 모든 토폴로지 세그먼트에 대해
ipatopology_segments
섹션에 행을 추가하고 다음 변수를 설정합니다.-
추가하려는 세그먼트 유형에 따라
접미사
변수를domain
또는ca
로 설정합니다. -
복제 계약의
왼쪽
노드가 되고자 하는 IdM 서버의 이름으로 왼쪽 변수를 설정합니다. -
올바른
변수를 복제 계약의 올바른 노드로 설정하고자 하는 IdM 서버의 이름으로 설정합니다.
-
추가하려는 세그먼트 유형에 따라
-
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([]) }}"
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegments-copy.yml
추가 리소스
- 복제 계약, Topology Suffixes, Topology Segments를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에 있는README-topology.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/topology
디렉터리에서 샘플 플레이북을 참조하십시오.
15.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/topology/ 디렉터리에 있는 check-topologysegments
.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/check-topologysegments.yml check-topologysegments-copy.yml
-
check-topologysegments-copy.yml
파일을 열어 편집합니다. vars
섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. 모든 토폴로지 세그먼트에 대해
ipatopology_segments
섹션에 행을 추가하고 다음 변수를 설정합니다.-
추가하려는 세그먼트 유형에 따라
접미사
변수를domain
또는ca
로 설정합니다. -
복제 계약의
왼쪽
노드가 되고자 하는 IdM 서버의 이름으로 왼쪽 변수를 설정합니다. -
올바른
변수를 복제 계약의 올바른 노드로 설정하고자 하는 IdM 서버의 이름으로 설정합니다.
-
추가하려는 세그먼트 유형에 따라
-
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([]) }}"
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory check-topologysegments-copy.yml
추가 리소스
- 토폴로지 계약, 접미사 및 세그먼트의 개념에 대한 자세한 내용은 복제 계약, 토폴로지 Suffixes 및 토폴로지 시나리오 설명을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에 있는README-topology.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/topology
디렉터리에서 샘플 플레이북을 참조하십시오.
15.4. Ansible을 사용하여 토폴로지 접미사가 IdM에 있는지 확인합니다.
IdM(Identity Management)의 복제 계약 컨텍스트에서 토폴로지 접미사는 복제되는 데이터를 저장합니다. IdM은 두 가지 유형의 토폴로지 접미사인 domain
과 ca
를 지원합니다. 각 접미사는 별도의 백엔드인 별도의 복제 토폴로지를 나타냅니다. 복제 계약이 구성되면 서로 다른 두 서버에서 동일한 유형의 두 토폴로지 접미사를 결합합니다.
도메인
접미사에는 사용자, 그룹 및 정책과 같은 모든 도메인 관련 데이터가 포함됩니다. 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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/topology/ 디렉터리에 있는 verify-topology
suffix.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/ verify-topologysuffix.yml verify-topologysuffix-copy.yml
-
편집을 위해
verify-topologysuffix-copy.yml
Ansible 플레이북 파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory verify-topologysuffix-copy.yml
추가 리소스
- 복제 계약, Topology Suffixes, Topology Segments를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에 있는README-topology.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/topology
디렉터리에서 샘플 플레이북을 참조하십시오.
15.5. Ansible을 사용하여 IdM 복제본 다시 초기화
복제본이 장기간 오프라인 상태이거나 데이터베이스가 손상된 경우 다시 초기화할 수 있습니다. 다시 초기화하면 업데이트된 데이터 세트로 복제본을 새로 고칩니다. 예를 들어 백업에서 권한 있는 복원이 필요한 경우 다시 초기화할 수 있습니다.
복제 업데이트와 대조적으로 복제본이 변경된 항목만 상호 전송하는 반면 다시 초기화하면 전체 데이터베이스가 새로 고칩니다.
명령을 실행하는 로컬 호스트는 다시 초기화된 복제본입니다. 데이터를 가져오는 복제본을 지정하려면 direction
옵션을 사용합니다.
Ansible 플레이북을 사용하여 server.idm.example.com 의 replica.idm.example.com 에서 도메인
데이터를 다시 초기화하려면 다음 절차를 따르십시오.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/topology/ 디렉터리에 있는 reinitialize-topology
segment.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/reinitialize-topologysegment.yml reinitialize-topologysegment-copy.yml
-
편집을 위해
reinitialize-topologysegment-copy.yml
파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory reinitialize-topologysegment-copy.yml
추가 리소스
- 복제 계약, Topology Suffixes, Topology Segments를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에 있는README-topology.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/topology
디렉터리에서 샘플 플레이북을 참조하십시오.
15.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 클라이언트, 서버 또는 복제본입니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/topology/ 디렉터리에 있는 delete-topology
segment.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/delete-topologysegment.yml delete-topologysegment-copy.yml
-
편집을 위해
delete-topologysegment-copy.yml
파일을 엽니다. 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
-
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory delete-topologysegment-copy.yml
추가 리소스
- 복제 계약, Topology Suffixes, Topology Segments를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리에 있는README-topology.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/topology
디렉터리에서 샘플 플레이북을 참조하십시오.
15.7. 추가 리소스
- 복제본 토폴로지 계획에서 참조하십시오.
- IdM 복제본 설치를 참조하십시오.
16장. Ansible을 사용하여 IdM 서버 관리
Red Hat Ansible Engine
을 사용하여 IdM(Identity Management) 토폴로지의 서버를 관리할 수 있습니다. ansible-freeipa
패키지에서 server
모듈을 사용하여 IdM 토폴로지에 서버가 있는지 확인할 수 있습니다. 복제본을 숨기거나 복제본을 볼 수도 있습니다.
섹션에는 다음 항목이 포함되어 있습니다.
- Ansible을 사용하여 IdM 서버가 있는지 확인
- Ansible을 사용하여 IdM 서버가 IdM 토폴로지에서 없음을 확인
- 마지막 IdM 서버 역할을 호스팅해도 IdM 서버가 없는지 확인
- IdM 서버가 없음을 확인하지만 다른 IdM 서버와 분리할 필요는 없습니다.
- Ansible 플레이북을 사용하여 기존 IdM 서버가 숨겨져 있는지 확인합니다.
- Ansible 플레이북을 사용하여 기존 IdM 서버가 표시되는지 확인합니다.
- 기존 IdM 서버에 IdM DNS 위치가 할당되어 있는지 확인합니다.
- 기존 IdM 서버에 IdM DNS 위치가 할당되지 않았는지 확인합니다.
16.1. Ansible을 사용하여 IdM 서버가 있는지 확인
Ansible 플레이북에서 ipaserver
ansible-freeipa
모듈을 사용하여 IdM(Identity Management) 서버가 있는지 확인할 수 있습니다.
ipaserver
Ansible 모듈은 IdM 서버를 설치하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
디렉터리에 있는server-present.yml
Ansible 플레이북 파일을 복사합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-present.yml server-present-copy.yml
-
편집할
server-present-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 서버의FQDN
으로 설정합니다. 예제 서버의FQDN
은 server123.idm.example.com 입니다.
--- - name: Server present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-present-copy.yml
추가 리소스
- Ansible 플레이북을 사용하여 Identity Management 서버 설치를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
16.2. Ansible을 사용하여 IdM 서버가 IdM 토폴로지에서 없음을 확인
Ansible 플레이북을 사용하여 IdM(Identity Management) 서버가 호스트로도 IdM 토폴로지에 없는지 확인합니다.
ansible-freeipa
ipaserver
역할과 달리 이 플레이북에서 사용되는 ipaserver
모듈은 서버에서 IdM 서비스를 제거하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
디렉터리에 있는server-absent.yml
Ansible 플레이북 파일을 복사합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent.yml server-absent-copy.yml
-
편집할
server-absent-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 서버의FQDN
으로 설정합니다. 예제 서버의FQDN
은 server123.idm.example.com 입니다. -
state
변수가absent
로 설정되어 있는지 확인합니다.
--- - name: Server absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is absent ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com state: absent
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-copy.yml
- server123.idm.example.com 을 가리키는 모든 이름 서버(NS) DNS 레코드가 DNS 영역에서 삭제되었는지 확인합니다. 이는 IdM 또는 외부 DNS에서 관리하는 통합 DNS를 사용하는지 여부에 관계없이 적용됩니다.
추가 리소스
- IdM 서버 제거를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
16.3. 마지막 IdM 서버 역할을 호스팅해도 IdM 서버가 없는지 확인
Ansible을 사용하여 서버에서 마지막 IdM 서비스 인스턴스가 실행 중인 경우에도 IdM(Identity Management) 서버가 없는지 확인할 수 있습니다. CA(인증 기관), 키 복구 기관(KRA) 또는 DNS 서버는 모두 IdM 서비스의 예입니다.
CA, KRA 또는 DNS 서버로 사용되는 마지막 서버를 제거하면 IdM 기능이 크게 중단됩니다. ipa service-find
명령을 사용하여 어떤 IdM 서버에서 실행 중인지 수동으로 확인할 수 있습니다. CA 서버의 기본 이름은 dogtag/server_name/tektonM_NAME
입니다.
ansible-freeipa
ipaserver
역할과 달리 이 플레이북에서 사용되는 ipaserver
모듈은 서버에서 IdM 서비스를 제거하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/server/
디렉터리에 있는 server-absent-ignore-last-role.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore-last-of-role.yml server-absent-ignore-last-of-role-copy.yml
-
편집할
server-absent-ignore-last-role-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 서버의FQDN
으로 설정합니다. 예제 서버의FQDN
은 server123.idm.example.com 입니다. -
ignore_last_of_role
변수가yes
로 설정되어 있는지 확인합니다. -
state
변수를absent
로 설정합니다.
--- - name: Server absent with last of role skip example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” is absent with last of role skip ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_last_of_role: yes state: absent
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore-last-of-role-copy.yml
- server123.idm.example.com 을 가리키는 모든 이름 서버(NS) DNS 레코드가 DNS 영역에서 삭제되었는지 확인합니다. 이는 IdM 또는 외부 DNS에서 관리하는 통합 DNS를 사용하는지 여부에 관계없이 적용됩니다.
추가 리소스
- IdM 서버 제거를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
16.4. IdM 서버가 없음을 확인하지만 다른 IdM 서버와 분리할 필요는 없습니다.
토폴로지에서 IdM(Identity Management) 서버를 제거하는 경우 Ansible 플레이북을 사용하여 복제 계약을 그대로 유지할 수 있습니다. 또한 이 플레이북은 IdM 서버가 호스트로도 IdM에 존재하지 않도록 합니다.
제거하려는 다른 서버가 제대로 작동하는 경우에만 서버의 복제 계약을 무시하는 것이 좋습니다. 토폴로지의 중앙 지점 역할을 하는 서버를 제거하면 토폴로지를 두 개의 연결이 끊긴 클러스터로 분할할 수 있습니다.
ipa server-del
명령을 사용하여 토폴로지에서 일관성 있는 서버를 제거할 수 있습니다.
CA(인증 기관), 키 복구 기관(KRA) 또는 DNS 서버 역할을 하는 마지막 서버를 제거하면 IdM(Identity Management) 기능이 크게 손상됩니다. 이 문제를 방지하기 위해 플레이북에서는 CA, KRA 또는 DNS 서버 역할을 하는 서버를 제거하기 전에 이러한 서비스가 도메인의 다른 서버에서 실행 중인지 확인합니다.
ansible-freeipa
ipaserver
역할과 달리 이 플레이북에서 사용되는 ipaserver
모듈은 서버에서 IdM 서비스를 제거하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
디렉터리에 있는server-absent-ignore_topology_disconnect.yml
Ansible 플레이북 파일을 복사합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore_topology_disconnect.yml server-absent-ignore_topology_disconnect-copy.yml
-
편집할
server-absent-ignore_topology_disconnect-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 서버의FQDN
으로 설정합니다. 예제 서버의FQDN
은 server123.idm.example.com 입니다. -
ignore_topology_disconnect
변수가yes
로 설정되어 있는지 확인합니다. -
state
변수가absent
로 설정되어 있는지 확인합니다.
--- - name: Server absent with ignoring topology disconnects example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” with ignoring topology disconnects ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_topology_disconnect: yes state: absent
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore_topology_disconnect-copy.yml
- [선택 사항] server123.idm.example.com 을 가리키는 모든 이름 서버(NS) DNS 레코드가 DNS 영역에서 삭제되었는지 확인합니다. 이는 IdM 또는 외부 DNS에서 관리하는 통합 DNS를 사용하는지 여부에 관계없이 적용됩니다.
추가 리소스
- IdM 서버 제거를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
16.5. Ansible 플레이북을 사용하여 기존 IdM 서버가 숨겨져 있는지 확인합니다.
Ansible 플레이북에서 ipaserver
ansible-freeipa
모듈을 사용하여 기존 IdM(Identity Management) 서버가 숨겨졌는지 확인합니다. 이 Playbook은 IdM 서버를 설치하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
디렉터리에 있는server-hidden.yml
Ansible 플레이북 파일을 복사합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-hidden.yml server-hidden-copy.yml
-
편집할
server-hidden-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 서버의FQDN
으로 설정합니다. 예제 서버의FQDN
은 server123.idm.example.com 입니다. -
숨겨진
변수가True
로 설정되어 있는지 확인합니다.
--- - name: Server hidden example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is hidden ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com hidden: True
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-hidden-copy.yml
추가 리소스
- Ansible 플레이북을 사용하여 Identity Management 서버 설치를 참조하십시오.
- 숨겨진 복제본 모드를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
16.6. Ansible 플레이북을 사용하여 기존 IdM 서버가 표시되는지 확인합니다.
Ansible 플레이북에서 ipaserver
ansible-freeipa
모듈을 사용하여 기존 IdM(Identity Management) 서버가 표시되는지 확인합니다. 이 Playbook은 IdM 서버를 설치하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
디렉터리에 있는server-not-hidden.yml
Ansible 플레이북 파일을 복사합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-not-hidden.yml server-not-hidden-copy.yml
-
편집할
server-not-hidden-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 서버의FQDN
으로 설정합니다. 예제 서버의FQDN
은 server123.idm.example.com 입니다. -
숨겨진
변수가no
로 설정되어 있는지 확인합니다.
--- - name: Server not hidden example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is not hidden ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com hidden: no
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-not-hidden-copy.yml
추가 리소스
- Ansible 플레이북을 사용하여 Identity Management 서버 설치를 참조하십시오.
- 숨겨진 복제본 모드를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
16.7. 기존 IdM 서버에 IdM DNS 위치가 할당되어 있는지 확인합니다.
Ansible 플레이북에서 ipaserver
ansible-freeipa
모듈을 사용하여 기존 IdM(Identity Management) 서버에 특정 IdM DNS 위치가 할당되었는지 확인합니다.
ipaserver
Ansible 모듈은 IdM 서버를 설치하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. - IdM DNS 위치가 있습니다. 예를 들어 location은 germany 입니다.
-
서버에 대한
루트
액세스 권한이 있어야 합니다. 예제 서버는 server123.idm.example.com 입니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
디렉터리에 있는server-location.yml
Ansible 플레이북 파일을 복사합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-location.yml server-location-copy.yml
-
편집할
server-location-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 server123.idm.example.com 으로 설정합니다. -
위치
변수를 germany 로 설정합니다.
이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Server enabled example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com with location “germany” is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: germany
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-location-copy.yml
SSH
를 사용하여 server123.idm.example.com 에root
로 연결합니다.ssh root@server123.idm.example.com
업데이트가 즉시 적용되도록 서버에서
named-pkcs11
서비스를 다시 시작하십시오.[root@server123.idm.example.com ~]# systemctl restart named-pkcs11
추가 리소스
- Ansible 플레이북을 사용하여 Identity Management 서버 설치를 참조하십시오.
- IdM 위치가 있는지 확인하려면 Ansible 사용을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
16.8. 기존 IdM 서버에 IdM DNS 위치가 할당되지 않았는지 확인합니다.
Ansible 플레이북에서 ipaserver
ansible-freeipa
모듈을 사용하여 기존 IdM(Identity Management) 서버에 IdM DNS 위치가 할당되어 있지 않은지 확인합니다. 지리적 위치를 자주 변경하는 서버에 DNS 위치를 할당하지 마십시오. Playbook은 IdM 서버를 설치하지 않습니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. -
서버에 대한
루트
액세스 권한이 있어야 합니다. 예제 서버는 server123.idm.example.com 입니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
SSH
연결이 제대로 작동합니다.
-
제어 노드에서 인벤토리 파일에 정의된 IdM 서버로의
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
디렉터리에 있는server-no-location.yml
Ansible 플레이북 파일을 복사합니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-no-location.yml server-no-location-copy.yml
-
편집할
server-no-location-copy.yml
파일을 엽니다. ipaserver
작업 섹션에서 다음 변수를 설정하고 파일을 저장하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 server123.idm.example.com 으로 설정합니다. -
위치
변수가 "" 로 설정되어 있는지 확인합니다.
--- - name: Server no location example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present with no location ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: “”
-
Ansible 플레이북을 실행하고 플레이북 파일 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-no-location-copy.yml
SSH
를 사용하여 server123.idm.example.com 에root
로 연결합니다.ssh root@server123.idm.example.com
업데이트가 즉시 적용되도록 서버에서
named-pkcs11
서비스를 다시 시작하십시오.[root@server123.idm.example.com ~]# systemctl restart named-pkcs11
추가 리소스
- Ansible 플레이북을 사용하여 Identity Management 서버 설치를 참조하십시오.
- Ansible을 사용하여 IdM의 DNS 위치 관리를 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-server.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/server
디렉터리에서 샘플 플레이북을 참조하십시오.
17장. Ansible 플레이북을 사용하여 호스트 관리
Ansible은 시스템을 구성하고, 소프트웨어를 배포하고, 롤링 업데이트를 수행하는 데 사용되는 자동화 도구입니다. Ansible에는 IdM(Identity Management) 지원이 포함되어 있으며 Ansible 모듈을 사용하여 호스트 관리를 자동화할 수 있습니다.
Ansible 플레이북을 사용하여 호스트 및 호스트 항목을 관리할 때 다음 개념과 작업이 수행됩니다.
17.1. Ansible Playbook을 사용하여 FQDN과 함께 IdM 호스트 항목이 있는지 확인
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 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
확인할 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
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
이 절차에서는 IdM LDAP 서버에 호스트 항목이 생성되지만 호스트를 IdM Kerberos 영역에 등록하지 않습니다. 따라서 호스트를 IdM 클라이언트로 배포해야 합니다. 자세한 내용은 Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치를 참조하십시오.
검증 단계
IdM 서버에 admin으로 로그인합니다.
$ ssh admin@server.idm.example.com Password:
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
출력은 host01.idm.example.com 이 IdM에 있는지 확인합니다.
17.2. Ansible Playbook을 사용하여 DNS 정보가 포함된 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 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
확인하고자 하는 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
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
이 절차에서는 IdM LDAP 서버에 호스트 항목이 생성되지만 호스트를 IdM Kerberos 영역에 등록하지 않습니다. 따라서 호스트를 IdM 클라이언트로 배포해야 합니다. 자세한 내용은 Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치를 참조하십시오.
검증 단계
IdM 서버에 admin으로 로그인합니다.
$ ssh admin@server.idm.example.com Password:
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
출력은 IdM에 host01.idm.example.com 이 있는지 확인합니다.
17.3. Ansible Playbook을 사용하여 임의의 암호와 함께 여러 IdM 호스트 항목이 있는지 확인
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 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
확인하려는 IdM에 있는 호스트의
정규화된 도메인 이름
(FQDN)을 사용하여 Ansible 플레이북 파일을 생성합니다. 호스트가 이미 IdM에 있고update_password가
로 제한된 경우에도 Ansible 플레이북에서 각 호스트의 임의 암호를 생성하도록 하려면on_
createrandom: yes
및force: 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
플레이북을 실행합니다.
$ 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"}}}
임의의 일회성 암호(one-time passwords)를 사용하여 호스트를 IdM 클라이언트로 배포하려면 Ansible 플레이북 또는 회용 클라이언트를 한 번 사용하여 IdM 클라이언트 등록에 대한 권한 부여 옵션을 참조하십시오. 대화식 설치.
검증 단계
IdM 서버에 admin으로 로그인합니다.
$ ssh admin@server.idm.example.com Password:
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
출력은 임의의 암호가 있는 IdM에 host01.idm.example.com 이 있는지 확인합니다.
17.4. Ansible Playbook을 사용하여 여러 IP 주소가 있는 IdM 호스트 항목이 있는지 확인
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 클라이언트, 서버 또는 복제본입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
Ansible 플레이북 파일을 생성합니다. 확인하려는 IdM
에
있는 호스트의정규화된 도메인 이름
(FQDN)을ipahost
변수의 이름으로 지정합니다. ip_address 구문을 사용하여 별도의 행에서 여러 IPv4 및 IPv6ip_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
플레이북을 실행합니다.
$ 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
이 절차에서는 IdM LDAP 서버에 호스트 항목을 생성하지만 호스트를 IdM Kerberos 영역에 등록하지 않습니다. 따라서 호스트를 IdM 클라이언트로 배포해야 합니다. 자세한 내용은 Ansible 플레이북을 사용하여 Identity Management 클라이언트 설치를 참조하십시오.
검증 단계
IdM 서버에 admin으로 로그인합니다.
$ ssh admin@server.idm.example.com Password:
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
출력은 host01.idm.example.com 이 IdM에 있는지 확인합니다.
호스트의 여러 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
출력은 플레이북에 지정된 모든 IPv4 및 IPv6 주소가 host 01.idm.example.com 호스트 항목과 올바르게 연결되어 있는지 확인합니다.
17.5. Ansible 플레이북을 사용하여 IdM 호스트 항목이 없는지 확인
Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 항목이 없는지 확인하려면 다음 절차를 따르십시오.
사전 요구 사항
- IdM 관리자 인증 정보
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
확인하려는 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
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-absent.yml
절차 결과는 다음과 같습니다.
- IdM Kerberos 영역에 존재하지 않는 호스트.
- 호스트 항목이 IdM LDAP 서버에 존재하지 않습니다.
클라이언트 호스트 자체에서 SSSD(System Security Services Daemon)와 같은 시스템 서비스의 특정 IdM 구성을 제거하려면 클라이언트에서 ipa-client-install --uninstall
명령을 실행해야 합니다. 자세한 내용은 IdM 클라이언트 설치 제거를 참조하십시오.
검증 단계
admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
host01.idm.example.com 에 대한 정보를 표시 :
$ ipa host-show host01.idm.example.com ipa: ERROR: host01.idm.example.com: host not found
출력은 호스트가 IdM에 없는지 확인합니다.
17.6. 추가 리소스
-
/usr/share/doc/ansible-freeipa/README-host.md
Markdown 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/host
디렉터리에서 추가 플레이북을 참조하십시오.
18장. Ansible 플레이북을 사용하여 호스트 그룹 관리
IdM( Identity Management)의 호스트 그룹과 관련하여 Ansible을 사용하여 IdM(Identity Management)의 호스트 그룹과 관련된 작업을 수행하려면 다음을 참조하십시오.
18.1. IdM의 호스트 그룹
IdM 호스트 그룹은 중요한 관리 작업, 특히 액세스 제어에 대한 제어를 중앙 집중화하는 데 사용할 수 있습니다.
호스트 그룹의 정의
호스트 그룹은 공통 액세스 제어 규칙 및 기타 특성이 있는 IdM 호스트 집합이 포함된 엔터티입니다. 예를 들어 회사 부서, 물리적 위치 또는 액세스 제어 요구 사항을 기반으로 호스트 그룹을 정의할 수 있습니다.
IdM의 호스트 그룹에는 다음이 포함될 수 있습니다.
- IdM 서버 및 클라이언트
- 기타 IdM 호스트 그룹
기본적으로 생성된 호스트 그룹
기본적으로 IdM 서버는 모든 IdM 서버 호스트에 대한 호스트 그룹 ipaservers
를 생성합니다.
직접 및 간접 그룹 구성원
IdM의 그룹 속성은 직접 및 간접 구성원 모두에 적용됩니다. 호스트 그룹 B가 호스트 그룹 A의 구성원이면 호스트 그룹 B의 모든 구성원이 호스트 그룹 A의 간접 구성원으로 간주됩니다.
18.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 클라이언트, 서버 또는 복제본입니다.
절차
inventory
.file과 같은 인벤토리
파일을 생성하고 타겟 IdM 서버 목록으로ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 그룹 정보를 사용하여 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
플레이북에서 state: present 는 이미 존재하지 않는 한 IdM에 호스트 그룹을 추가하라는 요청을 나타냅니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-present.yml
검증 단계
admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
관리자용 Kerberos 티켓을 요청합니다.
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
확인하고자 하는 IdM에 있는 호스트 그룹에 대한 정보를 표시합니다.
$ ipa hostgroup-show databases Host-group: databases
데이터베이스 호스트 그룹은 IdM에 있습니다.
18.3. Ansible Playbook을 사용하여 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 호스트 그룹이 있는지 확인합니다.
절차
inventory
.file과 같은 인벤토리
파일을 생성하고 타겟 IdM 서버 목록으로ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 정보를 사용하여 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
이 플레이북은 db.idm.example.com 호스트를 databases 호스트 그룹에 추가합니다.
action: member
행은 플레이북이 실행될 때 데이터베이스 그룹 자체를 추가하기 위한 시도가 수행되지 않았음을 나타냅니다. 대신 db.idm.example.com 을 데이터베이스에 추가하려는 시도만 수행합니다.플레이북을 실행합니다.
$ 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
검증 단계
admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
관리자용 Kerberos 티켓을 요청합니다.
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
호스트 그룹에 대한 정보를 표시하여 어떤 호스트가 있는지 확인합니다.
$ ipa hostgroup-show databases Host-group: databases Member hosts: db.idm.example.com
db.idm.example.com 호스트는 데이터베이스 호스트 그룹의 멤버로 있습니다.
18.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 호스트 그룹이 있는지 확인합니다.
절차
inventory
.file과 같은 인벤토리
파일을 생성하고 타겟 IdM 서버 목록으로ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 그룹 정보를 사용하여 Ansible 플레이북 파일을 생성합니다. 중첩된 호스트 그룹 A 가 Ansible 플레이북의 호스트 그룹 B 에 있는지 확인하려면
- ipahostgroup
변수 중 name 변수를 사용하여 호스트 그룹 B 의이름을
지정합니다. hostgroup 변수를 사용하여 중첩 호스트
그룹의 이름을 지정합니다. 이 단계를 간소화하기 위해/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
이 Ansible 플레이북은 databases 호스트 그룹에 myqsl-server 및 oracle-server 호스트 그룹이 있는지 확인합니다 .
action: member
행은 플레이북이 실행될 때 데이터베이스 그룹 자체를 IdM에 추가하기 위한 시도가 수행되지 않았음을 나타냅니다.플레이북을 실행합니다.
$ 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
검증 단계
admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
관리자용 Kerberos 티켓을 요청합니다.
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
중첩 호스트 그룹이 있는 호스트 그룹에 대한 정보를 표시합니다.
$ ipa hostgroup-show databases Host-group: databases Member hosts: db.idm.example.com Member host-groups: mysql-server, oracle-server
mysql-server 및 oracle-server 호스트 그룹은 databases 호스트 그룹에 있습니다.
18.5. 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 클라이언트, 서버 또는 복제본입니다. - 멤버 관리자로 추가하려는 호스트 또는 호스트 그룹의 이름과 관리할 호스트 그룹의 이름이 있어야 합니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 및 호스트 그룹 멤버 관리 정보를 사용하여 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
플레이북을 실행합니다.
$ 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
검증 단계
ipa group-show
명령을 사용하여 group_name 그룹에 example_member 및 project_admins 가 멤버 관리자로 포함되어 있는지 확인할 수 있습니다.
관리자로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
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
추가 리소스
-
ipa hostgroup-add-member-manager --help를
참조하십시오. -
ipa
도움말 페이지를 참조하십시오.
18.6. 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 호스트 항목이 있는지 확인하십시오.
- Ansible 플레이북 파일에서 참조하는 호스트 그룹은 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 IdM 호스트 그룹이 있는지 확인합니다.
절차
inventory
.file과 같은 인벤토리
파일을 생성하고 타겟 IdM 서버 목록으로ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 및 호스트 그룹 정보를 사용하여 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
이 플레이북은 databases 호스트 그룹에서 db.idm.example.com 호스트가 없는지 확인합니다. action: member 행은 플레이북이 실행될 때 데이터베이스 그룹 자체를 제거하기 위한 시도가 수행되지 않았음을 나타냅니다.
플레이북을 실행합니다.
$ 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
검증 단계
admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
관리자용 Kerberos 티켓을 요청합니다.
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
호스트 그룹 및 포함된 호스트에 대한 정보를 표시합니다.
$ ipa hostgroup-show databases Host-group: databases Member host-groups: mysql-server, oracle-server
db.idm.example.com 호스트가 databases 호스트 그룹에 존재하지 않습니다.
18.7. 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 호스트 그룹이 있는지 확인합니다.
절차
inventory
.file과 같은 인벤토리
파일을 생성하고 타겟 IdM 서버 목록으로ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 그룹 정보를 사용하여 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
이 플레이북은 데이터베이스 호스트 그룹에 mysql-server 및 oracle-server 호스트 그룹이 없는지 확인합니다.
action: member
행은 플레이북이 실행될 때 데이터베이스 그룹 자체가 IdM에서 삭제되었는지 확인하기 위한 시도가 수행되지 않았음을 나타냅니다.플레이북을 실행합니다.
$ 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
검증 단계
admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
관리자용 Kerberos 티켓을 요청합니다.
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
중첩 호스트 그룹이 없어야 하는 호스트 그룹에 대한 정보를 표시합니다.
$ ipa hostgroup-show databases Host-group: databases
출력은 mysql-server 및 oracle- server 중첩 호스트 그룹이 외부 데이터베이스 호스트 그룹에 없는지 확인합니다.
18.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 클라이언트, 서버 또는 복제본입니다.
절차
inventory
.file과 같은 인벤토리
파일을 생성하고 타겟 IdM 서버 목록으로ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 그룹 정보를 사용하여 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
이 플레이북은 IdM에서 데이터베이스 호스트 그룹이 없는지 확인합니다.
state: absent
는 이미 삭제되지 않는 한 IdM에서 호스트 그룹을 삭제하도록 요청합니다.플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-absent.yml
검증 단계
admin으로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
관리자용 Kerberos 티켓을 요청합니다.
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
확인하지 않은 호스트 그룹에 대한 정보를 표시합니다.
$ ipa hostgroup-show databases ipa: ERROR: databases: host group not found
데이터베이스 호스트 그룹은 IdM에 존재하지 않습니다.
18.9. 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 클라이언트, 서버 또는 복제본입니다. - 멤버 관리자로 제거하려는 사용자 또는 사용자 그룹의 이름과 관리 중인 호스트 그룹의 이름이 있어야 합니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
필요한 호스트 및 호스트 그룹 멤버 관리 정보를 사용하여 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
플레이북을 실행합니다.
$ 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
검증 단계
ipa group-show
명령을 사용하여 group_name 그룹에 example_member 또는 project_admins 가 멤버 관리자로 포함되어 있지 않은지 확인할 수 있습니다.
관리자로
ipaserver
에 로그인합니다.$ ssh admin@server.idm.example.com Password: [admin@server /]$
testhostgroup 에 대한 정보 표시 :
ipaserver]$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: testhostgroup2
추가 리소스
-
ipa hostgroup-add-member-manager --help를
참조하십시오. -
ipa
도움말 페이지를 참조하십시오.
19장. IdM 암호 정책 정의
이 장에서는 IdM(Identity Management) 암호 정책과 Ansible 플레이북을 사용하여 IdM에 새 암호 정책을 추가하는 방법을 설명합니다.
19.1. 암호 정책이란 무엇입니까
암호 정책은 암호가 충족해야 하는 규칙 집합입니다. 예를 들어 암호 정책은 최소 암호 길이와 최대 암호 기간을 정의할 수 있습니다. 이 정책의 영향을 받는 모든 사용자는 충분히 긴 암호를 설정하고 지정된 조건을 충족하기 위해 암호를 자주 변경해야 합니다. 이러한 방식으로 암호 정책은 사용자의 암호를 검색하고 오용할 위험을 줄이는 데 도움이 됩니다.
19.2. IdM의 암호 정책
IdM(Identity Management) 사용자가 IdM(Identity Management) 도메인에 인증하는 가장 일반적인 방법입니다. 암호 정책은 이러한 IdM 사용자 암호를 충족해야 하는 요구 사항을 정의합니다.
IdM 암호 정책은 기본 LDAP 디렉터리에 설정되지만 Kerberos KDC(키 배포 센터)는 암호 정책을 적용합니다.
암호 정책 속성은 IdM에서 암호 정책을 정의하는 데 사용할 수 있는 속성을 나열합니다.
표 19.1. 암호 정책 속성
속성 | 설명 | 예제 |
---|---|---|
최대 수명 | 암호가 유효한 최대 시간(사용자가 재설정해야 함). 기본값은 90일입니다. 속성이 0으로 설정되면 암호가 만료되지 않습니다. | 최대 수명 = 180 사용자 암호는 180일 동안만 유효합니다. 그런 다음 IdM은 사용자에게 변경하라는 메시지를 표시합니다. |
최소 수명 주기 | 두 개의 암호 변경 작업 간에 경과해야 하는 최소 시간(시간)입니다. | 최소 수명 주기 = 1 사용자가 암호를 변경한 후 1시간 이상 기다린 후 다시 변경해야 합니다. |
기록 크기 | 저장된 이전 암호의 수입니다. 사용자는 암호 기록에서 암호를 재사용할 수 없지만 저장되지 않은 이전 암호를 재사용할 수 있습니다. | 기록 크기 = 0 이 경우 암호 기록이 비어 있으며 사용자는 이전 암호를 재사용할 수 있습니다. |
문자 클래스 | 사용자가 암호에서 사용해야 하는 다른 문자 클래스의 수입니다. 문자 클래스는 다음과 같습니다. * 대문자 * 소문자 * 숫자 * 쉼표 (,), 마침표 (.), 별표 (*)와 같은 특수 문자 * 기타 UTF-8 문자 행에서 세 번 이상 문자를 사용하면 문자 클래스가 1씩 줄어듭니다. 예를 들면 다음과 같습니다.
*
* | 문자 클래스 = 0
필요한 기본 클래스 수는 0입니다. 번호를 구성하려면 이 표 아래에 있는 중요한 참고 사항도 참조하십시오. |
최소 길이 | 암호의 최소 문자 수입니다. 추가 암호 정책 옵션이 설정되어 있으면 최소 암호 길이는 6자입니다. | 최소 길이 = 8 사용자는 8자보다 짧은 암호를 사용할 수 없습니다. |
최대 실패 | IdM이 사용자 계정을 잠그기 전에 실패한 최대 로그인 횟수입니다. | 최대 실패 = 6 IdM은 사용자가 잘못된 암호를 7번 입력하면 사용자 계정을 잠급니다. |
실패 재설정 간격 | IdM이 실패한 로그인 시도의 현재 수를 재설정한 후 시간(초)입니다. | 실패 재설정 간격 = 60
사용자가 |
잠금 기간 |
| 잠금 기간 = 600 잠긴 계정이 있는 사용자는 10분 동안 로그인할 수 없습니다. |
국제 문자와 기호에 액세스할 수 없는 다양한 하드웨어 세트가 있는 경우 문자 클래스 요구 사항에 영어 알파벳 및 공통 기호를 사용하십시오. 암호의 문자 클래스 정책에 대한 자세한 내용은 Red Hat Knowledgebase의 암호에 유효한 문자를 참조하십시오.
19.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에 있는지 확인하는 그룹입니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고[ipaserver]
섹션에 IdM 서버의FQDN
을 정의합니다.[ipaserver] server.idm.example.com
확인할 암호 정책을 정의하는 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
개별 변수의 의미에 대한 자세한 내용은 암호 정책 속성을 참조하십시오.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/new_pwpolicy_present.yml
Ansible 플레이북을 사용하여 IdM에 ops 그룹의 암호 정책이 있는지 확인합니다.
ops 암호 정책의 우선 순위는 1 로 설정되어 있지만 global_policy 암호 정책에는 우선 순위가 설정되어 있지 않습니다. 이러한 이유로 ops 정책은 ops 그룹에 대해 global_policy 를 자동으로 대체하며 즉시 적용됩니다.
global_policy 는 사용자에 대한 그룹 정책이 설정되지 않은 경우 대체 정책으로 작동하며 그룹 정책보다 우선할 수 없습니다.
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-pwpolicy.md
파일을 참조하십시오. - 암호 정책 우선 순위를 참조하십시오.
19.4. IdM의 추가 암호 정책 옵션
IdM(Identity Management) 관리자는 libpwquality
기능 세트를 기반으로 추가 암호 정책 옵션을 활성화하여 기본 암호 요구 사항을 강화할 수 있습니다. 추가 암호 정책 옵션에는 다음이 포함됩니다.
--maxrepeat
- 새 암호에서 동일한 연속 문자의 최대 허용 가능한 수를 지정합니다.
--maxsequence
- 새 암호의 최대 단일 문자 시퀀스 길이를 지정합니다. 이러한 시퀀스의 예는 12345 또는 fedcb 입니다. 이러한 암호는 대부분 단순성 검사를 통과하지 않습니다.
--dictcheck
-
0이 아닌 경우 가능한 수정 가능한 암호를 사용하여 사전의 단어와 일치하는지 확인합니다. 현재
libpwquality
는 thecracklib
라이브러리를 사용하여 사전 검사를 수행합니다. --usercheck
- 0이 아니면 암호를 수정할 수 있는지 여부를 확인하고 일부 형식으로 사용자 이름을 포함합니다. 3자 미만 사용자 이름에 대해서는 수행되지 않습니다.
추가 암호 정책 옵션은 기존 암호에 적용할 수 없습니다. 추가 옵션을 적용하는 경우 IdM은 암호의 최소 문자 수인 --minlength
옵션을 6 자로 자동 설정합니다.
RHEL 7 및 RHEL 8 서버와 혼합된 환경에서는 RHEL 8.4 이상에서 실행되는 서버에만 추가 암호 정책 설정을 적용할 수 있습니다. 사용자가 IdM 클라이언트에 로그인하고 IdM 클라이언트가 RHEL 8.3 또는 이전 버전에서 실행되는 IdM 서버와 통신하는 경우 시스템 관리자가 설정한 새 암호 정책 요구 사항이 적용되지 않습니다. 일관된 동작을 보장하기 위해 모든 서버를 RHEL 8.4 이상으로 업그레이드하거나 업데이트합니다.
추가 리소스:
- IdM 그룹에 추가 암호 정책 적용
-
pwquality(3)
도움말 페이지
19.5. IdM 그룹에 추가 암호 정책 옵션 적용
IdM(Identity Management)의 추가 암호 정책 옵션을 적용하려면 다음 절차를 따르십시오. 이 예제에서는 새 암호에 사용자의 각 사용자 이름이 포함되지 않고 암호에 연속해서 두 개 이상의 동일한 문자가 포함되어 있는지 확인하여 managers 그룹에 대한 암호 정책을 강화하는 방법을 설명합니다.
사전 요구 사항
- IdM 관리자로 로그인했습니다.
- managers 그룹은 IdM에 있습니다.
- managers 암호 정책은 IdM에 있습니다.
절차
managers 그룹의 사용자가 제안한 모든 새 암호에 사용자 이름 검사를 적용합니다.
$ ipa pwpolicy-mod --usercheck=True managers
참고암호 정책의 이름을 지정하지 않으면 기본
global_policy
가 수정됩니다.managers 암호 정책에서 동일한 연속 문자의 최대 수를 2로 설정합니다.
$ ipa pwpolicy-mod --maxrepeat=2 managers
2개 이상의 동일한 연속 문자가 포함된 경우 이제 암호가 허용되지 않습니다. 예를 들어 eR873mUi111YJQ 조합은 연속적으로 3개의 1s가 포함되어 있기 때문에 허용되지 않습니다.
검증
test _user라는 테스트 사용자를 추가합니다.
$ ipa user-add test_user First name: test Last name: user ---------------------------- Added user "test_user" ----------------------------
test 사용자를 managers 그룹에 추가합니다.
- IdM 웹 UI에서 Identity → Groups(ID 그룹) User Groups (사용자 그룹) 를 클릭합니다.
- managers 를 클릭합니다.
-
추가
를 클릭합니다. - Add users into user group 'managers' 페이지에서 test_user 를 확인합니다.
-
>
화살표를 클릭하여 사용자를Prospective
열로 이동합니다. -
추가
를 클릭합니다.
테스트 사용자의 암호를 재설정합니다.
- Identity(ID) Users(사용자) 로 이동합니다.
- test_user 를 클릭합니다.
-
Actions(작업)
메뉴에서Reset Password(암호 재설정
)를 클릭합니다. - 사용자의 임시 암호를 입력합니다.
명령줄에서 test_user 에 대한 Kerberos 티켓 부여 티켓(TGT)을 가져옵니다.
$ kinit test_user
- 임시 암호를 입력합니다.
시스템에서 암호를 변경해야 함을 알려줍니다. 사용자 이름이 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.
참고Kerberos에는 세부적인 오류 암호 정책 보고가 없으며 특정 경우에는 암호가 거부된 명확한 이유를 제공하지 않습니다.
시스템은 입력한 암호가 거부되었음을 알려줍니다. 연속해서 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:
시스템은 입력한 암호가 거부되었음을 알려줍니다. 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:
가져온 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
managers 암호 정책이 managers 그룹의 사용자에 대해 올바르게 작동합니다.
추가 리소스
19.6. Ansible 플레이북을 사용하여 IdM 그룹에 추가 암호 정책 옵션 적용
Ansible Playbook을 사용하여 특정 IdM 그룹에 대한 암호 정책 요구 사항을 강화하기 위해 추가 암호 정책 옵션을 적용할 수 있습니다. 이를 위해 maxrepoy
,maxsequence
,dictcheck
및 usercheck
암호 정책 옵션을 사용할 수 있습니다. 이 예제에서는 managers 그룹에 다음 요구 사항을 설정하는 방법을 설명합니다.
- 사용자의 새 암호에는 사용자의 각 사용자 이름이 포함되어 있지 않습니다.
- 암호에는 연속에 두 개 이상의 동일한 문자가 포함되어 있지 않습니다.
- 암호의 단조 문자 시퀀스는 3자를 넘지 않습니다. 즉, 시스템은 1234 또는 abcd 와 같은 시퀀스의 암호를 허용하지 않습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
- 암호 정책이 IdM에 있는지 확인하는 그룹입니다.
절차
확인하려는 암호 정책을 정의하는 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
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/manager_pwpolicy_present.yml
검증
test _user라는 테스트 사용자를 추가합니다.
$ ipa user-add test_user First name: test Last name: user ---------------------------- Added user "test_user" ----------------------------
test 사용자를 managers 그룹에 추가합니다.
- IdM 웹 UI에서 Identity → Groups(ID 그룹) User Groups (사용자 그룹) 를 클릭합니다.
- managers 를 클릭합니다.
-
추가
를 클릭합니다. - Add users into user group 'managers' 페이지에서 test_user 를 확인합니다.
-
>
화살표를 클릭하여 사용자를Prospective
열로 이동합니다. -
추가
를 클릭합니다.
테스트 사용자의 암호를 재설정합니다.
- Identity(ID) Users(사용자) 로 이동합니다.
- test_user 를 클릭합니다.
-
Actions(작업)
메뉴에서Reset Password(암호 재설정
)를 클릭합니다. - 사용자의 임시 암호를 입력합니다.
명령줄에서 test_user 에 대한 Kerberos 티켓 부여 티켓(TGT)을 가져옵니다.
$ kinit test_user
- 임시 암호를 입력합니다.
시스템에서 암호를 변경해야 함을 알려줍니다. 사용자 이름이 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.
참고Kerberos에는 세부적인 오류 암호 정책 보고가 없으며 특정 경우에는 암호가 거부된 명확한 이유를 제공하지 않습니다.
시스템은 입력한 암호가 거부되었음을 알려줍니다. 연속해서 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:
시스템은 입력한 암호가 거부되었음을 알려줍니다. 3자를 초과하는 단조 문자 시퀀스가 포함된 암호를 입력합니다. 이러한 서열의 예는 1234 및 fedc 를 포함한다:
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
시스템은 입력한 암호가 거부되었음을 알려줍니다. 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:
유효한 암호를 입력한 후에만 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
추가 리소스
- IdM의 추가 암호 정책
-
/usr/share/doc/ansible-freeipa/README-pwpolicy.md
-
/usr/share/doc/ansible-freeipa/playbooks/pwpolicy
20장. IdM 클라이언트의 IdM 사용자에게 sudo 액세스 권한 부여
Identity Management에서 사용자에게 sudo
액세스 권한을 부여하는 방법에 대해 자세히 알아보십시오.
20.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
명령을 인증할 수 있습니다.
추가 리소스
- sudo 액세스 관리를 참조하십시오.
20.2. CLI를 사용하여 IdM 클라이언트의 IdM 사용자에게 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
파일에 나열되지 않습니다.
절차
IdM
관리자로
Kerberos 티켓을 검색합니다.[root@idmclient ~]# kinit admin
/usr/sbin/reboot
명령을sudo
명령의 IdM 데이터베이스에 추가합니다.[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
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
/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 -------------------------
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 -------------------------
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 -------------------------
선택적으로 idm_user_reboot 규칙의 유효성을 정의합니다.
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
sudo 규칙이 유효한 중지 시간을 정의하려면
--setattr sudonotafter=DATE
옵션을 사용합니다. 예를 들어, idm_user_reboot 규칙 유효 기간을 2026년 12월 31일 12:34:00으로 설정하려면 다음을 입력합니다.[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotafter=20261231123400Z
서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.
검증 단계
- idmclient 호스트에 idm_user 계정으로 로그인합니다.
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
sudo
를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면 idm_user 의 암호를 입력합니다.[idm_user@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for idm_user:
20.3. CLI를 사용하여 IdM 클라이언트의 AD 사용자에게 sudo 액세스 권한 부여
IdM(Identity Management) 시스템 관리자는 IdM 사용자 그룹을 사용하여 IdM 사용자에 대한 액세스 권한, 호스트 기반 액세스 제어, sudo
규칙 및 기타 제어를 설정할 수 있습니다. IdM 사용자 그룹은 IdM 도메인 리소스에 대한 액세스 권한을 부여하고 제한합니다.
AD(Active Directory) 사용자와 AD 그룹을 모두 IdM 사용자 그룹에 추가할 수 있습니다. 다음을 수행하려면 다음을 수행합니다.
- POSIX가 아닌 외부 IdM 그룹에 AD 사용자 또는 그룹을 추가합니다.
- 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.com 는 ad_users_external 비POSIX 그룹의 멤버입니다. 다음으로 ad_users POSIX 그룹의 멤버입니다.
사전 요구 사항
-
IdM
admin
Kerberos 티켓(TGT)이 있습니다. - IdM 도메인과 ad-domain.com AD 도메인 사이에 교차 신뢰가 있습니다.
-
idmclient 호스트에 로컬 관리자 계정이 없습니다. administrator 사용자는 로컬
/etc/passwd
파일에 나열되지 않습니다.
절차
administrator@ad-domain 멤버가 있는 ad_users _external 그룹이 포함된 ad_users 그룹을 생성합니다.
- 선택 사항: IdM 영역에서 AD 사용자를 관리하는 데 사용할 AD 도메인에서 해당 그룹을 생성하거나 선택합니다. 여러 AD 그룹을 사용하여 IdM 측면의 다른 그룹에 추가할 수 있습니다.
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
참고여기에서 지정하는 외부 그룹이 Active Directory 보안 그룹 문서에 정의된 대로
글로벌
또는Universal
그룹 범위가 있는 AD 보안 그룹 인지 확인합니다. 예를 들어, 해당 그룹 범위가 도메인로컬
이므로 도메인 사용자 또는 도메인 관리자 AD 보안 그룹을 사용할 수 없습니다.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
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 -------------------------
AD 사용자는
DOMAIN\user_name
또는user_name@DOMAIN
과 같은 정규화된 이름으로 식별되어야 합니다. 그러면 AD ID가 사용자의 AD SID에 매핑됩니다. AD 그룹 추가에도 동일하게 적용됩니다.ad_users_external 을 ad_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 -------------------------
ad_users 의 멤버에게 idmclient 호스트에서
/usr/sbin/reboot
를 실행할 수 있는 권한을 부여합니다./usr/sbin/reboot
명령을sudo
명령의 IdM 데이터베이스에 추가합니다.[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
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
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 -------------------------
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 -------------------------
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 -------------------------
서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.
검증 단계
idmclient 호스트에 administrator@ad-domain.com,
ad_users
그룹의 간접 멤버로 로그인합니다.$ ssh administrator@ad-domain.com@ipaclient Password:
필요한 경우
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
sudo
를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면administrator@ad-domain.com
의 암호를 입력합니다.[administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for administrator@ad-domain.com:
20.4. IdM 웹 UI를 사용하여 IdM 클라이언트에서 IdM 사용자에게 sudo 액세스 권한 부여
IdM(Identity Management)에서는 특정 IdM 호스트의 IdM 사용자 계정에 대한 sudo
액세스 권한을 특정 명령에 부여할 수 있습니다. 먼저 sudo
명령을 추가한 다음 하나 이상의 명령에 대한 sudo
규칙을 만듭니다.
idm_user_reboot sudo 규칙을 생성하여 idm
_user
계정에 idmclient
시스템에서 /usr/sbin/reboot
명령을 실행할 수 있는 권한을 부여하려면 이 절차를 완료합니다.
사전 요구 사항
- IdM 관리자로 로그인했습니다.
-
IdM에서
idm_user
에 대한 사용자 계정을 생성하고 사용자의 암호를 만들어 계정의 잠금을 해제했습니다. 명령줄 인터페이스를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 명령줄을 사용하여 사용자 추가를 참조하십시오. -
idm
계정이 없습니다.client
호스트에 로컬 idm_useridm_user
사용자는 로컬/etc/passwd
파일에 나열되지 않습니다.
절차
/usr/sbin/reboot
명령을sudo
명령의 IdM 데이터베이스에 추가합니다.- 정책 → Sudo → Sudo 명령으로 이동합니다.
- 오른쪽 상단 모서리에서 Add (추가)를 클릭하여 Add sudo 명령 대화 상자를 엽니다.
sudo
:/usr/sbin/reboot
를 사용하여 사용자가 수행할 수 있는 명령을 입력합니다.그림 20.1. IdM sudo 명령 추가
- 추가를 클릭합니다.
새
sudo
명령 항목을 사용하여 idm_user가 idm client 시스템을 재부팅할 수 있도록 sudo 규칙을 생성합니다.- 정책 → Sudo → Sudo 규칙으로 이동합니다.
- 오른쪽 상단 모서리에서 Add(추가 )를 클릭하여 Add sudo rule( sudo 규칙 추가) 대화 상자를 엽니다.
-
sudo
규칙의 이름을 idm_user_reboot 로 입력합니다. - Add and Edit(추가 및 편집)를 클릭합니다.
사용자를 지정합니다.
- who(사용자 ) 섹션에서 Specified Users and Groups(지정된 사용자 및 그룹 ) 라디오 단추를 선택합니다.
- User 카테고리에서 규칙이 하위 섹션에 적용되는 경우 Add(추가)를 클릭하여 Add users into sudo rule "idm_user_reboot" 대화 상자를 엽니다.
- Add users into sudo rule "idm_user_reboot" 대화 상자의 Available 열에서 idm_user 확인란을 선택하고 Prospective 열로 이동합니다.
- 추가를 클릭합니다.
호스트를 지정합니다.
- Access this host (이 호스트에 액세스) 섹션에서 Specified Hosts and Groups(지정된 호스트 및 그룹 ) 라디오 단추를 선택합니다.
- 호스트 범주에서 이 규칙이 하위 섹션에 적용되는 경우 Add(추가 )를 클릭하여 Add hosts into sudo rule "idm_user_reboot" 대화 상자를 엽니다.
- Add hosts to sudo rule "idm_user_reboot" 대화 상자의 Available 열에서 idmclient.idm.example.com 확인란을 선택하고 Prospective 열로 이동합니다.
- 추가를 클릭합니다.
명령을 지정합니다.
- Command 카테고리에서 규칙이 Run Commands(명령 실행) 섹션의 하위 섹션에 적용되는 경우 Specified Commands and Groups(지정된 명령) 및 Groups (그룹) 라디오 버튼을 선택합니다.
- Sudo Allow Commands (Sudo Allow Commands) 하위 섹션에서 Add allow sudo 명령을 sudo rule "idm_user_reboot" 대화 상자에 엽니다.
-
Add allow sudo 명령을 sudo 규칙 "idm_user_reboot" 대화 상자의 Available 열에서
/usr/sbin/reboot
확인란을 선택하고 Prospective 열로 이동합니다. - Add(추가 )를 클릭하여 idm_sudo_reboot 페이지로 돌아갑니다.
그림 20.2. IdM sudo 규칙 추가
- 왼쪽 상단 모서리에서 Save(저장 )를 클릭합니다.
새 규칙은 기본적으로 활성화되어 있습니다.
서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.
검증 단계
-
idmclient에 idm
_user
로 로그인합니다. sudo
를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면idm_user
의 암호를 입력합니다.$ sudo /usr/sbin/reboot [sudo] password for idm_user:
sudo
규칙이 올바르게 구성되면 시스템이 재부팅됩니다.
20.5. IdM 클라이언트에서 명령을 서비스 계정으로 실행하는 CLI에서 sudo 규칙 생성
IdM에서 RunAs 별칭으로 sudo
규칙을 구성하여 다른 사용자 또는 그룹으로 sudo
명령을 실행할 수 있습니다. 예를 들어 데이터베이스 애플리케이션을 호스팅하는 IdM 클라이언트가 있을 수 있으며 해당 애플리케이션에 해당하는 로컬 서비스 계정으로 명령을 실행해야 할 수 있습니다.
이 예제를 사용하여 run_third-party-app_report
라는 명령줄에 sudo
규칙을 생성하여 idm_user 계정이 idm
client
호스트에서 third
명령을 실행할 수 있습니다.
partyapp 서비스 계정으로 /opt/third-party-app
/bin/report
사전 요구 사항
- IdM 관리자로 로그인했습니다.
-
IdM에서
idm_user
에 대한 사용자 계정을 생성하고 사용자의 암호를 만들어 계정의 잠금을 해제했습니다. CLI를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 명령줄을 사용하여 사용자 추가를 참조하십시오. -
idm
계정이 없습니다.client
호스트에 로컬 idm_useridm_user
사용자는 로컬/etc/passwd
파일에 나열되지 않습니다. -
idmclient
호스트에third-party-app
이라는 사용자 지정 애플리케이션이 설치되어 있어야 합니다. -
타사-app
애플리케이션의report
명령은/opt/third-party-app/bin/report
디렉터리에 설치됩니다. -
타사
-app 애플리케이션에
대한 명령을 실행하기 위해thirdpartyapp
이라는 로컬 서비스 계정을 생성했습니다.
절차
IdM
관리자로
Kerberos 티켓을 검색합니다.[root@idmclient ~]# kinit admin
/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
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
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 -------------------------
로컬 서비스 계정 또는 Active Directory 사용자와 같은 사용자(또는
--groups=*
옵션으로 지정된 그룹)는 IdM 외부에 있을 수 있습니다. 그룹 이름에%
접두사를 추가하지 마십시오./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 -------------------------
run_third-party-app_report
규칙을 IdMidmclient
호스트에 적용합니다.[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 -------------------------
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
서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.
검증 단계
-
idmclient 호스트에 idm
_user
계정으로 로그인합니다. 새 sudo 규칙을 테스트합니다.
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
report
명령을thirdpartyapp
서비스 계정으로 실행합니다.[idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report [sudo] password for idm_user@idm.example.com: Executing report... Report successful.
20.6. IdM 클라이언트에서 서비스 계정으로 명령을 실행하는 IdM WebUI에서 sudo 규칙 생성
IdM에서 RunAs 별칭으로 sudo
규칙을 구성하여 다른 사용자 또는 그룹으로 sudo
명령을 실행할 수 있습니다. 예를 들어 데이터베이스 애플리케이션을 호스팅하는 IdM 클라이언트가 있을 수 있으며 해당 애플리케이션에 해당하는 로컬 서비스 계정으로 명령을 실행해야 할 수 있습니다.
이 예제를 사용하여 IdM WebUI에서 run_third-party-app_report
라는 sudo
규칙을 생성하여 idm_user
계정이 idmclient
호스트에서 third
명령을 실행할 수 있도록 합니다.
partyapp 서비스 계정으로 /opt/third-party-app
/bin/report
사전 요구 사항
- IdM 관리자로 로그인했습니다.
-
IdM에서
idm_user
에 대한 사용자 계정을 생성하고 사용자의 암호를 만들어 계정의 잠금을 해제했습니다. CLI를 사용하여 새 IdM 사용자를 추가하는 방법에 대한 자세한 내용은 명령줄을 사용하여 사용자 추가를 참조하십시오. -
idm
계정이 없습니다.client
호스트에 로컬 idm_useridm_user
사용자는 로컬/etc/passwd
파일에 나열되지 않습니다. -
idmclient
호스트에third-party-app
이라는 사용자 지정 애플리케이션이 설치되어 있어야 합니다. -
타사-app
애플리케이션의report
명령은/opt/third-party-app/bin/report
디렉터리에 설치됩니다. -
타사
-app 애플리케이션에
대한 명령을 실행하기 위해thirdpartyapp
이라는 로컬 서비스 계정을 생성했습니다.
절차
/opt/third-party-app/bin/report
명령을sudo
명령의 IdM 데이터베이스에 추가합니다.- 정책 → Sudo → Sudo 명령으로 이동합니다.
- 오른쪽 상단 모서리에서 Add (추가)를 클릭하여 Add sudo 명령 대화 상자를 엽니다.
/opt/third-party-app/bin/report
명령을 입력합니다.- 추가를 클릭합니다.
새
sudo
명령 항목을 사용하여 새sudo
규칙을 생성합니다.- 정책 → Sudo → Sudo 규칙으로 이동합니다.
- 오른쪽 상단 모서리에서 Add(추가 )를 클릭하여 Add sudo rule( sudo 규칙 추가) 대화 상자를 엽니다.
sudo
규칙의 이름을 run_third-party-app_report 로 입력합니다.- Add and Edit(추가 및 편집)를 클릭합니다.
사용자를 지정합니다.
- who(사용자 ) 섹션에서 Specified Users and Groups(지정된 사용자 및 그룹 ) 라디오 단추를 선택합니다.
- 사용자 범주에서 규칙이 하위 섹션에 적용되는 경우 Add(추가)를 클릭하여 Add users into sudo rule "run_ third-party-app_report" 대화 상자를 엽니다.
Add users into sudo rule "run_ third-party-app_report" 대화 상자의 Available 열에서 idm_user 확인란을 선택하고 Prospective 열로 이동합니다.
- 추가를 클릭합니다.
호스트를 지정합니다.
- Access this host (이 호스트에 액세스) 섹션에서 Specified Hosts and Groups(지정된 호스트 및 그룹 ) 라디오 단추를 선택합니다.
- 이 규칙이 하위 섹션에 적용되는 호스트 카테고리에서 Add(추가)를 클릭하여 Add hosts into sudo rule "run_ third-party-app_report" 대화 상자를 엽니다.
Add hosts into sudo rule "run_ third-party-app_report" 대화 상자의 Available 열에서 idmclient.idm.example.com 확인란을 선택하고 Prospective 열로 이동합니다.
- 추가를 클릭합니다.
명령을 지정합니다.
- Command 카테고리에서 규칙이 Run Commands(명령 실행) 섹션의 하위 섹션에 적용되는 경우 Specified Commands and Groups(지정된 명령) 및 Groups (그룹) 라디오 버튼을 선택합니다.
- Sudo Allow Commands (Sudo Allow Commands) 하위 섹션에서 Add allow sudo 명령을 sudo 규칙 "run_ third-party-app_report" 대화 상자에 엽니다.
Add allow sudo command to sudo rule "run_ third-party-app_report" 대화 상자의 Available 열에서
/opt/third-party-app/bin/report
확인란을 선택하고 Prospective 열로 이동합니다.- Add(추가 )를 클릭하여 run_third-party-app_report 페이지로 돌아갑니다.
RunAs 사용자를 지정합니다.
- As whom(사용자 및 그룹 지정) 섹션에서 Specified Users and Groups(지정된 사용자 및 그룹 ) 라디오 단추를 선택합니다.
- RunAs Users (사용자 실행) 하위 섹션에서 Add(추가 )를 클릭하여 Add RunAs 사용자를 sudo 규칙 "run_ third-party-app_report" 대화 상자에 엽니다.
Add RunAs users into sudo rule "run_ third-party-app_report" 대화 상자에서 외부 상자에
thirdpartyapp
서비스 계정을 입력하고 Prospective 열로 이동합니다.- Add(추가 )를 클릭하여 run_third-party-app_report 페이지로 돌아갑니다.
- 왼쪽 상단 모서리에서 Save(저장 )를 클릭합니다.
새 규칙은 기본적으로 활성화되어 있습니다.
그림 20.3. sudo 규칙의 세부 정보
서버에서 클라이언트로 변경 사항을 전파하는 데 몇 분이 걸릴 수 있습니다.
검증 단계
-
idmclient 호스트에 idm
_user
계정으로 로그인합니다. 새 sudo 규칙을 테스트합니다.
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
report
명령을thirdpartyapp
서비스 계정으로 실행합니다.[idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report [sudo] password for idm_user@idm.example.com: Executing report... Report successful.
20.7. IdM 클라이언트에서 sudo에 대해 GSSAPI 인증 활성화
다음 절차에서는 pam_sss_gss.so
PAM 모듈을 통해 sudo
및 sudo -i
명령에 대한 IdM 클라이언트에서 Generic Security Service Application Program Interface(GSSAPI) 인증을 활성화하는 방법을 설명합니다. 이 구성을 통해 IdM 사용자는 Kerberos 티켓을 사용하여 sudo
명령으로 인증할 수 있습니다.
사전 요구 사항
-
IdM 호스트에 적용되는 IdM 사용자에 대한
sudo
규칙을 생성했습니다. 이 예제에서는idm_user 계정에 idm_
sbin/reboot
명령을 실행할 수 있는 권한을 부여하는idm
_user_
rebootsudo
규칙을 생성했습니다. -
idmclient
호스트는 RHEL 8.4 이상을 실행하고 있습니다. -
/etc/
pam.d
파일과 PAM 파일을 수정하려면/ 디렉토리에서
/etc/sssd/sssd.confroot
권한이 필요합니다.
절차
-
/etc/sssd/sssd.conf
구성 파일을 엽니다. 다음 항목을
[domain/<domain_name>]
섹션에 추가합니다.[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i
-
/etc/sssd/sssd.conf
파일을 저장하고 닫습니다. SSSD 서비스를 다시 시작하여 구성 변경 사항을 로드합니다.
[root@idmclient ~]# systemctl restart sssd
RHEL 8.8 이상을 실행하는 경우:
[선택 사항]
sssd
authselect
프로필을 선택한 경우 확인합니다.# authselect current Profile ID: sssd
출력에
sssd
authselect
프로필이 선택됩니다.sssd
authselect
프로필이 선택된 경우 GSSAPI 인증을 활성화합니다.# authselect enable-feature with-gssapi
sssd
authselect
프로필이 선택되어 있지 않으면 해당 프로필을 선택하고 GSSAPI 인증을 활성화합니다.# authselect select sssd with-gssapi
RHEL 8.7 이하를 실행하는 경우:
-
/etc/pam.d/sudo
PAM 구성 파일을 엽니다. 다음 항목을
/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
-
/etc/pam.d/sudo
파일을 저장하고 닫습니다.
-
검증 단계
idm_user
계정으로 호스트에 로그인합니다.[root@idm-client ~]# ssh -l idm_user@idm.example.com localhost idm_user@idm.example.com's password:
티켓이
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
(선택 사항)
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:
암호를 지정하지 않고
sudo
를 사용하여 시스템을 재부팅합니다.[idm_user@idmclient ~]$ sudo /usr/sbin/reboot
추가 리소스
- IdM 용어 목록의 GSSAPI 항목
- IdM 웹 UI를 사용하여 IdM 클라이언트의 IdM 사용자에게 sudo 액세스 권한 부여
- CLI를 사용하여 IdM 클라이언트의 IdM 사용자에게 sudo 액세스 권한 부여
-
pam_sss_gss (8)
도움말 페이지 -
sssd.conf (5)
도움말 페이지
20.8. GSSAPI 인증 활성화 및 IdM 클라이언트에서 sudo에 대한 Kerberos 인증 표시기 적용
다음 절차에서는 pam_sss_gss.so
PAM 모듈을 통해 sudo
및 sudo -i
명령에 대한 IdM 클라이언트에서 Generic Security Service Application Program Interface(GSSAPI) 인증을 활성화하는 방법을 설명합니다. 또한 스마트 카드로 로그인한 사용자만 Kerberos 티켓을 사용하여 해당 명령에 인증됩니다.
이 절차를 템플릿으로 사용하여 다른 PAM 인식 서비스에 대해 SSSD를 사용하여 GSSAPI 인증을 구성하고, Kerberos 티켓에 특정 인증 표시기가 연결된 사용자에게만 액세스를 제한할 수 있습니다.
사전 요구 사항
-
IdM 호스트에 적용되는 IdM 사용자에 대한
sudo
규칙을 생성했습니다. 이 예제에서는idm_user 계정에 idm_
sbin/reboot
명령을 실행할 수 있는 권한을 부여하는idm
_user_
rebootsudo
규칙을 생성했습니다. -
idmclient
호스트에 대해 스마트 카드 인증을 구성했습니다. -
idmclient
호스트는 RHEL 8.4 이상을 실행하고 있습니다. -
/etc/
pam.d
파일과 PAM 파일을 수정하려면/ 디렉토리에서
/etc/sssd/sssd.confroot
권한이 필요합니다.
절차
-
/etc/sssd/sssd.conf
구성 파일을 엽니다. 다음 항목을
[domain/<domain_name>]
섹션에 추가합니다.[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
-
/etc/sssd/sssd.conf
파일을 저장하고 닫습니다. SSSD 서비스를 다시 시작하여 구성 변경 사항을 로드합니다.
[root@idmclient ~]# systemctl restart sssd
-
/etc/pam.d/sudo
PAM 구성 파일을 엽니다. 다음 항목을
/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
-
/etc/pam.d/sudo
파일을 저장하고 닫습니다. -
/etc/pam.d/sudo-i
PAM 구성 파일을 엽니다. 다음 항목을
/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
-
/etc/pam.d/sudo-i
파일을 저장하고 닫습니다.
검증 단계
idm_user
계정으로 호스트에 로그인하고 스마트 카드로 인증합니다.[root@idmclient ~]# ssh -l idm_user@idm.example.com localhost PIN for smart_card
스마트 카드 사용자로 티켓이 제공된지 확인합니다.
[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
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
암호를 지정하지 않고
sudo
를 사용하여 시스템을 재부팅합니다.[idm_user@idmclient ~]$ sudo /usr/sbin/reboot
추가 리소스
- PAM 서비스의 GSSAPI 인증을 제어하는 SSSD 옵션
- IdM 용어 목록의 GSSAPI 항목
- 스마트 카드 인증을 위한 Identity Management 구성
- Kerberos 인증 표시기
- IdM 웹 UI를 사용하여 IdM 클라이언트의 IdM 사용자에게 sudo 액세스 권한 부여
- CLI를 사용하여 IdM 클라이언트의 IdM 사용자에게 sudo 액세스 권한 부여.
-
pam_sss_gss (8)
도움말 페이지 -
sssd.conf (5)
도움말 페이지
20.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
이러한 옵션을 개별 [domain] 섹션에 설정하여
섹션의 전역 값을 덮어쓸 수도 있습니다. 다음 옵션은 각 도메인에 다른 GSSAPI 설정을 적용합니다.
[pam]
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 ...
추가 리소스
20.10. sudo에 대한 GSSAPI 인증 문제 해결
IdM에서 Kerberos 티켓을 사용하여 sudo
서비스를 인증할 수 없는 경우 다음 시나리오를 사용하여 구성 문제를 해결합니다.
사전 요구 사항
-
sudo
서비스에 대해 GSSAPI 인증을 활성화했습니다. IdM 클라이언트에서 sudo에 대한 GSSAPI 인증 활성화를 참조하십시오. -
/etc/
pam.d
파일과 PAM 파일을 수정하려면/ 디렉토리에서
/etc/sssd/sssd.confroot
권한이 필요합니다.
절차
다음 오류가 표시되면 Kerberos 서비스에서 호스트 이름을 기반으로 서비스 티켓에 대한 올바른 영역을 확인할 수 없습니다.
Server not found in Kerberos database
이 경우
/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
다음 오류가 표시되면 Kerberos 인증 정보가 없습니다.
No Kerberos credentials available
이 경우
kinit
유틸리티를 사용하여 Kerberos 인증 정보를 검색하거나 SSSD로 인증합니다.[idm-user@idm-client ~]$ kinit idm-user@IDM.EXAMPLE.COM Password for idm-user@idm.example.com:
/var/log/sssd/sssd_pam.log
로그 파일에 다음 중 하나가 표시되면 Kerberos 자격 증명이 현재 로그인한 사용자의 사용자 이름과 일치하지 않습니다.User with UPN [<UPN>] was not found. UPN [<UPN>] does not match target user [<username>].
이 경우 SSSD로 인증했는지 또는
/etc/sssd/sssd.conf 파일에서
pam_gssapi_check_upn
옵션을 비활성화하는 것이 좋습니다.[idm-user@idm-client ~]$ cat /etc/sssd/sssd.conf ... pam_gssapi_check_upn = false
추가 문제 해결을 위해
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
[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
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
20.11. Ansible 플레이북을 사용하여 IdM 클라이언트에서 IdM 사용자에 대한 sudo 액세스 권한 확인
IdM(Identity Management)에서는 특정 명령에 대한 sudo
액세스 권한이 특정 IdM 호스트의 IdM 사용자 계정에 부여되도록 할 수 있습니다.
idm_user_reboot 라는 sudo
규칙이 있는지 확인하려면 다음 절차를 완료합니다. 규칙은 idm_user 에 idmclient 시스템에서 /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
파일에 나열되지 않습니다.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaservers
를 정의합니다.[ipaservers] server.idm.example.com
하나 이상의
sudo
명령을 추가합니다.sudo
명령의 IdM 데이터베이스에/usr/sbin/
Ansible 플레이북을 생성합니다. 이 단계를 간소화하기 위해reboot 명령이 있는지 확인하는 ensure-reboot
-sudocmd-is-present.yml/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
플레이북을 실행합니다.
$ 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
명령을 참조하는
sudo
규칙을 생성합니다.sudo 명령 항목을 사용하여 sudo
규칙이있는지 확인하는 ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
Ansible 플레이북을 만듭니다. sudo 규칙을 사용하면 idm_user 가 idmclient 시스템을 재부팅할 수 있습니다. 이 단계를 간소화하기 위해/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
플레이북을 실행합니다.
$ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
검증 단계
idm _user 가 sudo
를 사용하여 idmclient 를 재부팅할 수 있는지 확인하여 IdM 서버에서 IdM 서버가 작동하는지 확인하는 sudo 규칙이 idmclient 에서 작동하는지 테스트합니다
. 서버에서 변경한 사항이 클라이언트에 적용되는 데 몇 분이 걸릴 수 있습니다.
- idmclient에 idm _user 로 로그인합니다.
sudo
를 사용하여 시스템을 재부팅합니다. 메시지가 표시되면 idm_user 의 암호를 입력합니다.$ sudo /usr/sbin/reboot [sudo] password for idm_user:
sudo
가 올바르게 구성되면 시스템이 재부팅됩니다.
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉터리의README-sudocmdgroup.md
및README-sudorule.md
파일을 참조하십시오.
21장. Ansible 플레이북을 사용하여 IdM에 호스트 기반 액세스 제어 규칙이 있는지 확인
Ansible은 시스템을 구성하고, 소프트웨어를 배포하고, 롤링 업데이트를 수행하는 데 사용되는 자동화 도구입니다. IdM(Identity Management) 지원이 포함되어 있습니다.
IdM(Identity Management) 호스트 기반 액세스 정책과 Ansible 을 사용하여 정의하는 방법에 대해 자세히 알아보십시오.
21.1. IdM의 호스트 기반 액세스 제어 규칙
호스트 기반 액세스 제어(HBAC) 규칙은 서비스 그룹의 서비스 또는 서비스를 사용하여 어떤 호스트나 호스트 그룹에 액세스할 수 있는 사용자 또는 사용자 그룹을 정의합니다. 시스템 관리자는 HBAC 규칙을 사용하여 다음 목표를 달성할 수 있습니다.
- 도메인의 지정된 시스템에 대한 액세스를 특정 사용자 그룹의 멤버로 제한합니다.
- 특정 서비스만 도메인의 시스템에 액세스하도록 허용합니다.
기본적으로 IdM은 allow_all 이라는 기본 HBAC 규칙으로 구성되며, 이는 전체 IdM 도메인의 모든 관련 서비스를 통해 모든 사용자에 대한 모든 호스트에 대한 범용 액세스를 의미합니다.
기본 allow_all 규칙을 자체 HBAC 규칙 세트로 교체하여 다른 호스트에 대한 액세스를 미세 조정할 수 있습니다. 중앙 집중적이고 단순화된 액세스 제어 관리를 위해 개별 사용자, 호스트 또는 서비스 대신 사용자 그룹, 호스트 그룹 또는 서비스 그룹에 HBAC 규칙을 적용할 수 있습니다.
21.2. Ansible 플레이북을 사용하여 IdM에 HBAC 규칙이 있는지 확인
Ansible 플레이북을 사용하여 IdM(Identity Management)에 호스트 기반 액세스 제어(HBAC) 규칙이 있는지 확인하려면 다음 절차를 따르십시오.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - HBAC 규칙에 사용할 사용자 및 사용자 그룹이 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 사용자 계정 관리 및 Ansible 플레이북을 사용하여 IdM 그룹 및 그룹 구성원이 있는지 확인하십시오.
- HBAC 규칙을 적용하려는 호스트 및 호스트 그룹은 IdM에 있습니다. 자세한 내용은 Ansible 플레이북을 사용하여 호스트 관리 및 Ansible 플레이북을 사용하여 호스트 관리를 참조하십시오.
절차
인벤토리 파일(예:
inventory.file
)을 생성하고 여기에ipaserver
를 정의합니다.[ipaserver] server.idm.example.com
확인할 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
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-new-hbacrule-present.yml
검증 단계
- IdM 웹 UI에 관리자로 로그인합니다.
- 정책 → 호스트 기반 액세스 제어 → HBAC 테스트로 이동합니다.
- who( 사용자 ) 탭에서 idm_user를 선택합니다.
- Accessing(액세스 ) 탭에서 client.idm.example.com 을 선택합니다.
- Via service 탭에서 sshd 를 선택합니다.
- Rules(규칙 ) 탭에서 로그인을 선택합니다.
- Run test(테스트 실행 ) 탭에서 Run test( 테스트 실행 ) 단추를 클릭합니다. ACCESS GRANTED가 표시되면 HBAC 규칙이 성공적으로 구현됩니다.
추가 리소스
-
/usr/share/doc/ansible-freeipa
디렉터리의README-hbacsvc.md
,README-hbacsvcgroup.md
-
/usr/share/doc/ansible-freeipa/playbooks
디렉터리의 하위 디렉터리에 있는 플레이북을 참조하십시오.
22장. Ansible을 사용하여 IdM 인증서 관리
ansible-freeipa
ipacert
모듈을 사용하여 IdM(Identity Management) 사용자, 호스트 및 서비스에 대한 SSL 인증서를 요청, 취소 및 검색할 수 있습니다. 보류 중인 인증서를 복원할 수도 있습니다.
22.1. Ansible을 사용하여 IdM 호스트, 서비스 및 사용자에 대한 SSL 인증서 요청
ansible-freeipa
ipacert
모듈을 사용하여 IdM(Identity Management) 사용자, 호스트 및 서비스에 대한 SSL 인증서를 요청할 수 있습니다. 그런 다음 이러한 인증서를 사용하여 IdM에 인증할 수 있습니다.
Ansible 플레이북을 사용하여 IdM 인증 기관(CA)에서 HTTP 서버의 인증서를 요청하려면 다음 절차를 완료합니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
- IdM 배포에 통합 CA가 있습니다.
절차
사용자, 호스트 또는 서비스에 대한 CSR(인증서 서명 요청)을 생성합니다. 예를 들어
openssl
유틸리티를 사용하여 client.idm.example.com에서 실행되는HTTP
서비스에 대한 CSR을 생성하려면 다음을 입력합니다.# openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout new.key -out new.csr -subj '/CN=client.idm.example.com,O=IDM.EXAMPLE.COM'
결과적으로 CSR은 new.csr 에 저장됩니다.
다음 내용으로 Ansible 플레이북 파일 request-certificate.yml 을 생성합니다.
--- - name: Playbook to request a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Request a certificate for a web server ipacert: ipaadmin_password: "{{ ipaadmin_password }}" state: requested csr: | -----BEGIN CERTIFICATE REQUEST----- MIGYMEwCAQAwGTEXMBUGA1UEAwwOZnJlZWlwYSBydWxlcyEwKjAFBgMrZXADIQBs HlqIr4b/XNK+K8QLJKIzfvuNK0buBhLz3LAzY7QDEqAAMAUGAytlcANBAF4oSCbA 5aIPukCidnZJdr491G4LBE+URecYXsPknwYb+V+ONnf5ycZHyaFv+jkUBFGFeDgU SYaXm/gF8cDYjQI= -----END CERTIFICATE REQUEST----- principal: HTTP/client.idm.example.com register: cert
인증서 요청을 new.csr 의 CSR으로 바꿉니다.
인증서를 요청합니다.
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/request-certificate.yml
22.2. Ansible을 사용하여 IdM 호스트, 서비스 및 사용자의 SSL 인증서 취소
ansible-freeipa
ipacert
모듈을 사용하여 IdM(Identity Management) 사용자, 호스트 및 서비스에서 IdM을 인증하는 SSL 인증서를 취소할 수 있습니다.
Ansible 플레이북을 사용하여 HTTP 서버의 인증서를 취소하려면 다음 절차를 완료합니다. 인증서를 취소하는 이유는 "keyCompromise"입니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다. -
예를 들어
openssl x509 -noout -text -in <path_to_certificate
> 명령을 입력하여 인증서의 일련 번호를 가져왔습니다. 이 예에서 인증서의 일련 번호는 123456789입니다.
- IdM 배포에 통합 CA가 있습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 revoke-certificate.yml 을 생성합니다.
--- - name: Playbook to revoke a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Revoke a certificate for a web server ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 revocation_reason: "keyCompromise" state: revoked
인증서를 취소하십시오.
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/revoke-certificate.yml
추가 리소스
-
ansible-freeipa
업스트림 문서의 cert 모듈 - RFC 5280의 이유 코드
22.3. Ansible을 사용하여 IdM 사용자, 호스트 및 서비스의 SSL 인증서 복원
ansible-freeipa
ipacert
모듈을 사용하여 IdM(Identity Management) 사용자, 호스트 또는 서비스에서 이전에 IdM을 인증하는 취소된 SSL 인증서를 복원할 수 있습니다.
보류 중인 인증서만 복원할 수 있습니다. 예를 들어 개인 키가 손실되었는지 확실하지 않았기 때문에 보류 중일 수 있습니다. 그러나 이제 키를 복구했으며 그동안 아무나 액세스하지 않았으므로 인증서를 다시 사용하려고 합니다.
Ansible 플레이북을 사용하여 IdM에 등록된 서비스의 인증서를 해제하려면 다음 절차를 완료합니다. 이 예에서는 HTTP 서비스의 인증서를 보류에서 해제하는 방법을 설명합니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
- IdM 배포에 통합 CA가 있습니다.
-
예를 들어
openssl x509 -noout -text -in path/to/certificate
명령을 입력하여 인증서의 일련 번호를 가져왔습니다. 이 예에서 인증서 일련 번호는 123456789 입니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 restore-certificate.yml 을 생성합니다.
--- - name: Playbook to restore a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Restore a certificate for a web service ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 state: released
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/restore-certificate.yml
22.4. Ansible을 사용하여 IdM 사용자, 호스트 및 서비스의 SSL 인증서 검색
ansible-freeipa
ipacert
모듈을 사용하여 IdM(Identity Management) 사용자, 호스트 또는 서비스에 대해 발행된 SSL 인증서를 검색하고 관리 노드의 파일에 저장할 수 있습니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
-
예를 들어
openssl x509 -noout -text -in <path_to_certificate
> 명령을 입력하여 인증서의 일련 번호를 가져왔습니다. 이 예에서 인증서의 일련 번호는 123456789이고 검색된 인증서를 저장하는 파일은 cert.pem 입니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 retrieve-certificate.yml 을 생성합니다.
--- - name: Playbook to retrieve a certificate and store it locally on the managed node hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve a certificate and save it to file 'cert.pem' ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 certificate_out: cert.pem state: retrieved
인증서를 검색합니다.
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/retrieve-certificate.yml
23장. IdM의 자격 증명 모음
이 장에서는 IdM(Identity Management)의 자격 증명 모음에 대해 설명합니다. 다음 주제를 소개합니다.
23.1. 자격 증명 모음 및 이점
자격 증명 모음은 중요한 모든 데이터를 한 곳에서 안전하게 저장하지만 편리하게 저장하려는 IdM(Identity Management) 사용자에게 유용합니다. 다양한 유형의 자격 증명 모음이 있으며 요구 사항에 따라 사용할 자격 증명을 선택해야 합니다.
자격 증명 모음은 비밀 저장, 검색, 공유 및 복구를 위한 안전한 위치(IdM)입니다. 시크릿은 제한된 사용자 또는 엔터티 그룹만 액세스할 수 있는 보안에 민감한 데이터(일반적으로 인증 자격 증명)입니다. 예를 들어 보안에는 다음이 포함됩니다.
- 암호
- PIN
- 개인 SSH 키
자격 증명 모음은 암호 관리자와 유사합니다. 암호 관리자와 마찬가지로 자격 증명 모음은 일반적으로 사용자가 자격 증명 모음에 저장된 정보를 잠금 해제하고 액세스하기 위해 하나의 기본 암호를 생성하고 기억해야 합니다. 그러나 사용자는 표준 자격 증명 모음을 보유하도록 결정할 수도 있습니다. 표준 자격 증명 모음에서는 사용자가 자격 증명 모음에 저장된 시크릿에 액세스하기 위해 암호를 입력할 필요가 없습니다.
IdM에서 자격 증명 모음의 목적은 외부의 IdM이 아닌 서비스에 인증할 수 있는 인증 자격 증명을 저장하는 것입니다.
IdM 자격 증명 모음의 기타 중요한 특성은 다음과 같습니다.
- 자격 증명 모음 소유자는 자격 증명 모음 소유자와 자격 증명 모음 소유자가 자격 증명 모음 구성원으로 선택한 해당 IdM 사용자만 액세스할 수 있습니다. 또한 IdM 관리자는 자격 증명 모음에 액세스할 수 있습니다.
- 사용자에게 자격 증명 모음을 생성하는 데 충분한 권한이 없는 경우 IdM 관리자는 자격 증명 모음을 생성하고 사용자를 소유자로 설정할 수 있습니다.
- 사용자 및 서비스는 IdM 도메인에 등록된 시스템에서 자격 증명 모음에 저장된 시크릿에 액세스할 수 있습니다.
- 하나의 자격 증명 모음은 하나의 비밀(예: 파일 한 개)만 포함할 수 있습니다. 그러나 파일 자체에는 암호, 키탭 또는 인증서와 같은 여러 시크릿이 포함될 수 있습니다.
Vault는 IdM 웹 UI가 아닌 IdM CLI(명령줄)에서만 사용할 수 있습니다.
23.2. Vault 소유자, 멤버 및 관리자
IdM(Identity Management)은 다음 자격 증명 모음 사용자 유형을 구분합니다.
- Vault 소유자
자격 증명 모음 소유자는 자격 증명 모음에 대한 기본 관리 권한이 있는 사용자 또는 서비스입니다. 예를 들어, 자격 증명 모음 소유자는 자격 증명 모음의 속성을 수정하거나 새 자격 증명 모음 멤버를 추가할 수 있습니다.
각 자격 증명 모음에는 소유자가 하나 이상 있어야 합니다. 자격 증명 모음에는 여러 소유자가 있을 수도 있습니다.
- Vault 멤버
- 자격 증명 모음 멤버는 다른 사용자 또는 서비스에서 만든 자격 증명 모음에 액세스할 수 있는 사용자 또는 서비스입니다.
- Vault 관리자
Vault 관리자는 모든 자격 증명 모음에 대한 무제한 액세스 권한을 가지며 모든 자격 증명 모음 작업을 수행할 수 있습니다.
참고대칭 및 비대칭 자격 증명 모음은 암호 또는 키로 보호되며 특수 액세스 제어 규칙을 적용합니다( Vault 유형참조). 관리자는 다음을 위해 다음 규칙을 충족해야 합니다.
- 대칭 및 비대칭 자격 증명 모음의 액세스 보안.
- vault 암호 또는 키를 변경하거나 재설정합니다.
자격 증명 모음
관리자는 Vault
관리자 권한이 있는 모든 사용자입니다. IdM의 역할 기반 액세스 제어(RBAC)의 컨텍스트에서 권한은 역할에 적용할 수 있는 권한 그룹입니다.- Vault 사용자
자격 증명 모음 사용자는 자격 증명 모음에 있는 컨테이너에 있는 사용자를 나타냅니다.
Vault 사용자
정보는ipa vault-show
와 같은 특정 명령의 출력에 표시됩니다.$ ipa vault-show my_vault Vault name: my_vault Type: standard Owner users: user Vault user: user
vault 컨테이너 및 사용자 자격 증명 모음에 대한 자세한 내용은 Vault 컨테이너를 참조하십시오.
추가 리소스
- 자격 증명 모음에 대한 자세한 내용은 표준, 대칭 및 symmetric 자격 증명 모음을 참조하십시오.
23.3. 표준, 대칭 및 비대칭 자격 증명 모음
보안 및 액세스 제어 수준에 따라 IdM은 자격 증명 모음을 다음 유형으로 분류합니다.
- 표준 자격 증명 모음
- Vault 소유자 및 자격 증명 모음 멤버는 암호나 키를 사용하지 않고도 시크릿을 보관하고 검색할 수 있습니다.
- 대칭 자격 증명 모음
- 자격 증명 모음의 비밀은 대칭 키로 보호됩니다. Vault 소유자와 멤버는 시크릿을 보관하고 검색할 수 있지만 vault 암호를 제공해야 합니다.
- 비대칭 자격 증명 모음
- 자격 증명 모음의 비밀은 비대칭 키로 보호됩니다. 사용자는 공개 키를 사용하여 비밀을 보관하고 개인 키를 사용하여 검색합니다. Vault 멤버는 비밀만 보관할 수 있지만, 자격 증명 모음 소유자는 시크릿을 모두 수행할 수 있으며, 시크릿을 보관하고 검색할 수 있습니다.
23.4. 사용자, 서비스 및 공유 자격 증명 모음
IdM은 소유권에 따라 자격 증명을 여러 유형으로 분류합니다. 아래 테이블에 는 각 유형, 해당 소유자 및 사용에 대한 정보가 포함되어 있습니다.
표 23.1. 소유권 기반 IdM 자격 증명 모음
유형 | 설명 | 소유자 | 참고 |
---|---|---|---|
사용자 자격 증명 모음 | 사용자의 개인 자격 증명 모음 | 단일 사용자 | 모든 사용자는 IdM 관리자가 허용한 경우 하나 이상의 사용자 자격 증명 모음을 소유할 수 있습니다. |
서비스 자격 증명 모음 | 서비스의 개인 자격 증명 모음 | 단일 서비스 | 모든 서비스는 IdM 관리자가 허용한 경우 하나 이상의 사용자 자격 증명 모음을 소유할 수 있습니다. |
공유 자격 증명 모음 | 여러 사용자 및 서비스에서 공유하는 자격 증명 모음 | 자격 증명 모음을 만든 자격 증명 모음 관리자 | IdM 관리자가 허용하는 경우 사용자와 서비스는 하나 이상의 사용자 자격 증명 모음을 소유할 수 있습니다. 자격 증명 모음을 만든 관리자 이외의 자격 증명 모음 관리자에게도 자격 증명 모음에 대한 전체 액세스 권한이 있습니다. |
23.5. Vault 컨테이너
자격 증명 모음 컨테이너는 자격 증명 모음입니다. 아래 표에 는 IdM(Identity Management)에서 제공하는 기본 자격 증명 모음 컨테이너가 나열되어 있습니다.
표 23.2. IdM의 기본 자격 증명 모음 컨테이너
유형 | 설명 | 목적 |
---|---|---|
사용자 컨테이너 | 사용자의 개인 컨테이너 | 특정 사용자의 사용자 자격 증명 모음 저장 |
서비스 컨테이너 | 서비스용 개인 컨테이너 | 특정 서비스에 대한 서비스 자격 증명 모음 저장 |
공유 컨테이너 | 여러 사용자 및 서비스의 컨테이너 | 여러 사용자 또는 서비스에서 공유할 수 있는 자격 증명 모음을 저장합니다. |
IdM은 사용자 또는 서비스의 첫 번째 개인 자격 증명 모음이 생성될 때 각 사용자 또는 서비스에 대한 사용자 및 서비스 컨테이너를 자동으로 생성합니다. 사용자 또는 서비스를 삭제한 후 IdM은 컨테이너 및 해당 콘텐츠를 제거합니다.
23.6. 기본 IdM 자격 증명 모음 명령
아래에 설명된 기본 명령을 사용하여 IdM(Identity Management) 자격 증명 모음을 관리할 수 있습니다. 아래 표에 는 목적의 설명과 함께 ipa vault-*
명령 목록이 포함되어 있습니다.
ipa vault-*
명령을 실행하기 전에 IdM 도메인의 하나 이상의 서버에 KRA(Key Recovery Authority) 인증서 시스템 구성 요소를 설치합니다. 자세한 내용은 IdM에 키 복구 권한 설치를 참조하십시오.
표 23.3. 설명과 함께 기본 IdM 자격 증명 모음 명령
명령 | 목적 |
---|---|
| IdM 자격 증명 모음 및 샘플 자격 증명 모음 명령에 대한 개념 정보를 표시합니다. |
|
특정 |
| 자격 증명 모음 멤버로 자격 증명 모음에 액세스하는 경우 자격 증명 모음 소유자를 지정해야 합니다. 자격 증명 모음 소유자를 지정하지 않으면 IdM에서 자격 증명 모음을 찾지 못했음을 알려줍니다. [admin@server ~]$ ipa vault-show user_vault ipa: ERROR: user_vault: vault not found |
| 공유 자격 증명 모음에 액세스할 때 액세스하려는 자격 증명 모음이 공유 자격 증명 모음임을 지정해야 합니다. 그러지 않으면 IdM에서 자격 증명 모음을 찾지 못했음을 알려줍니다. [admin@server ~]$ ipa vault-show shared_vault ipa: ERROR: shared_vault: vault not found |
23.7. IdM에 키 복구 권한 설치
다음 절차에 따라 특정 IdM 서버에 KRA(Key Recovery Authority) 인증 시스템(CS) 구성 요소를 설치하여 IdM(Identity Management)에서 자격 증명 모음을 활성화합니다.
사전 요구 사항
-
IdM 서버에서
root
로 로그인했습니다. - IdM 인증 기관이 IdM 서버에 설치되어 있습니다.
-
Directory Manager
자격 증명이 있습니다.
절차
KRA를 설치합니다.
# ipa-kra-install
숨겨진 복제본에 IdM 클러스터의 첫 번째 KRA를 설치할 수 있습니다. 그러나 추가 KRA를 설치하려면 숨기지 않은 복제본에 KRA 복제본을 설치하기 전에 임시로 숨겨진 복제본을 활성화해야 합니다. 그런 다음 원래 숨겨진 복제본을 다시 숨길 수 있습니다.
자격 증명 모음 서비스의 가용성과 복원력을 높이려면 두 개의 IdM 서버에 KRA를 설치해야 합니다. 여러 KRA 서버를 유지 관리하면 데이터 손실이 발생하지 않습니다.
추가 리소스
- 숨겨진 복제본 데모 또는 승격을 참조하십시오.
- 숨겨진 복제본 모드를 참조하십시오.
24장. Ansible을 사용하여 IdM 사용자 자격 증명 모음 관리: 시크릿 저장 및 검색
이 장에서는 Ansible vault
모듈을 사용하여 ID 관리에서 사용자 자격 증명 모음을 관리하는 방법을 설명합니다. 특히 사용자가 Ansible 플레이북을 사용하여 다음 세 가지 연속 작업을 수행하는 방법을 설명합니다.
사용자는 두 개의 서로 다른 IdM 클라이언트에서 저장 및 검색을 수행할 수 있습니다.
사전 요구 사항
- IdM 도메인에 있는 하나 이상의 서버에 KRA(Key Recovery Authority) 인증 시스템 구성 요소가 설치되었습니다. 자세한 내용은 IdM에 키 복구 권한 설치를 참조하십시오.
24.1. Ansible을 사용하여 IdM에 표준 사용자 자격 증명 모음이 있는지 확인
중요한 정보를 안전하게 저장하기 위해 Ansible 플레이북을 사용하여 하나 이상의 개인 자격 증명 모음 컨테이너를 생성하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 idm_user 사용자는 my_ vault 라는 표준 유형의 자격 증명 모음을 생성합니다. 표준 자격 증명 모음 유형을 사용하면 파일에 액세스할 때 idm_user 가 인증할 필요가 없습니다. idm_user 는 사용자가 로그인한 모든 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
- 절차의 단계를 실행하는 호스트인 Ansible 컨트롤러에 ansible-freeipa 패키지를 설치했습니다.
- idm_user 의 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일을 생성합니다(예: inventory.file:
$ touch inventory.file
inventory.file 을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-standard-vault-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp ensure-standard-vault-is-present.yml ensure-standard-vault-is-present-copy.yml
- 편집을 위해 ensure-standard-vault-is-present-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_principal
변수를 idm_user 로 설정합니다. -
ipaadmin_password
변수를 idm_user 의 암호로 설정합니다. -
사용자
변수를 idm_user 로 설정합니다. -
name
변수를 my_vault 로 설정합니다. vault_type
변수를 standard 로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault vault_type: standard
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-standard-vault-is-present-copy.yml
24.2. Ansible을 사용하여 IdM의 표준 사용자 자격 증명 모음에 비밀 보관
Ansible 플레이북을 사용하여 중요한 정보를 개인 자격 증명 모음에 저장하려면 다음 절차를 따르십시오. 사용된 예제에서 idm_user 사용자는 my_ vault 라는 자격 증명 모음에 password.txt 라는 중요한 정보로 파일을 보관합니다.
사전 요구 사항
- 절차의 단계를 실행하는 호스트인 Ansible 컨트롤러에 ansible-freeipa 패키지를 설치했습니다.
- idm_user 의 암호를 알고 있습니다.
- idm_user 는 소유자이거나 최소 my_vault 멤버 사용자입니다.
- my_vault 에 보관하려는 시크릿인 password.txt 에 액세스할 수 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
data-archive-in-symmetric-vault.yml Ansible 플레이북 파일의 복사본을 만들지만 "대칭"을 "표준"으로 바꿉니다. 예를 들면 다음과 같습니다.
$ cp data-archive-in-symmetric-vault.yml data-archive-in-standard-vault-copy.yml
- 편집을 위해 data-archive-in-standard-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_principal
변수를 idm_user 로 설정합니다. -
ipaadmin_password
변수를 idm_user 의 암호로 설정합니다. -
사용자
변수를 idm_user 로 설정합니다. -
name
변수를 my_vault 로 설정합니다. -
중요한 정보를 사용하여 변수
의
을 파일의 전체 경로로 설정합니다. action
변수를 member 로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault in: /usr/share/doc/ansible-freeipa/playbooks/vault/password.txt action: member
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-standard-vault-copy.yml
24.3. Ansible을 사용하여 IdM의 표준 사용자 자격 증명 모음에서 시크릿 검색
Ansible 플레이북을 사용하여 사용자 개인 자격 증명 모음에서 시크릿을 검색하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 idm_user 사용자는 Ansible이 설치된 IdM 클라이언트에 my_vault 라는 표준 유형의 자격 증명 모음에서 중요한 데이터가 있는 파일을 검색합니다 . idm_user 는 파일에 액세스할 때 인증할 필요가 없습니다. idm_user 는 Ansible을 사용하여 Ansible이 설치된 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - idm_user 의 암호를 알고 있습니다.
- idm_user 는 my_vault 의 소유자입니다.
- idm_user 가 시크릿을 my_vault에 저장했습니다.
- Ansible은 비밀을 검색할 IdM 호스트의 디렉터리에 쓸 수 있습니다.
- idm_user 는 IdM 호스트의 디렉터리에서 시크릿을 검색할 수 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일을 열고 명확하게 정의된 섹션에서 시크릿을 검색하려는 IdM 클라이언트를 언급합니다. 예를 들어 host01.idm.example.com에서 비밀을 검색하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipahost] host01.idm.example.com
retrive-data-symmetric-vault.yml Ansible 플레이북 파일의 복사본을 만듭니다. "대칭"을 "표준"으로 바꿉니다. 예를 들면 다음과 같습니다.
$ cp retrive-data-symmetric-vault.yml retrieve-data-standard-vault.yml-copy.yml
- 편집을 위해 retrieve-data-standard-vault.yml-copy.yml 파일을 엽니다.
-
hosts
변수를 ipahost 로 설정하여 파일을 조정합니다. ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_principal
변수를 idm_user 로 설정합니다. -
ipaadmin_password
변수를 idm_user 의 암호로 설정합니다. -
사용자
변수를 idm_user 로 설정합니다. -
name
변수를 my_vault 로 설정합니다. -
보안을 내보낼 파일의 전체 경로로
out
변수를 설정합니다. state
변수를 불러오도록 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipahost gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault out: /tmp/password_exported.txt state: retrieved
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-standard-vault.yml-copy.yml
검증 단계
user01로 host01 에
SSH
로 :$ ssh user01@host01.idm.example.com
Ansible 플레이북 파일에서
out
변수로 지정한 파일을 확인합니다.$ vim /tmp/password_exported.txt
이제 내보낸 보안이 표시됩니다.
-
Ansible을 사용하여 IdM 자격 증명 모음 및 사용자 시크릿 및 플레이북 변수에 대한 자세한 내용은
/usr/share/doc/ansible-freeipa/ 디렉터리에 사용 가능한 README-vault.md Markdown 파일과
디렉터리에 있는 샘플 플레이북을 참조하십시오./usr/
share/doc/ansible-freeipa/playbooks/vault/
25장. Ansible을 사용하여 IdM 서비스 자격 증명 모음 관리: 시크릿 저장 및 검색
이 섹션에서는 관리자가 ansible-freeipa
vault
모듈을 사용하여 서비스 시크릿을 중앙 집중식 위치에 안전하게 저장하는 방법을 보여줍니다. 예제에 사용되는 자격 증명 모음 은 CloudEvent입니다. 즉, 관리자는 다음 단계를 수행해야 함을 의미합니다.
-
예를 들어
openssl
유틸리티를 사용하여 개인 키를 생성합니다. - 개인 키를 기반으로 공개 키를 생성합니다.
서비스 비밀은 관리자가 자격 증명 모음에 보관할 때 공개 키로 암호화됩니다. 이후 도메인의 특정 시스템에서 호스팅되는 서비스 인스턴스는 개인 키를 사용하여 비밀을 검색합니다. 서비스와 관리자만 비밀에 액세스할 수 있습니다.
보안이 손상되면 관리자는 서비스 자격 증명 모음에서 암호를 교체한 다음 손상되지 않은 개별 서비스 인스턴스에 재배포할 수 있습니다.
사전 요구 사항
- IdM 도메인에 있는 하나 이상의 서버에 KRA(Key Recovery Authority) 인증 시스템 구성 요소가 설치되었습니다. 자세한 내용은 IdM에 키 복구 권한 설치를 참조하십시오.
이 섹션에는 다음 절차가 포함됩니다.
절차에서 다음을 수행합니다.
- admin 은 서비스 암호를 관리하는 관리자입니다.
- private-key-to-an-externally-signed-certificate.pem 은 서비스 비밀을 포함하는 파일입니다(이 경우 외부 서명 인증서에 대한 개인 키). 자격 증명 모음에서 비밀을 검색하는 데 사용되는 개인 키와 이 개인 키를 혼동하지 마십시오.
- secret_vault 는 서비스 시크릿을 저장하기 위해 생성된 자격 증명 모음입니다.
- HTTP/webserver1.idm.example.com 은 자격 증명 모음의 소유자인 서비스입니다.
- HTTP/webserver2.idm.example.com 및 HTTP/webserver3.idm.example.com 은 자격 증명 모음 멤버 서비스입니다.
- service-public.pem 은 password _vault 에 저장된 암호를 암호화하는 데 사용되는 서비스 공개 키입니다.
- service-private.pem 은 secret_vault 에 저장된 암호를 해독하는 데 사용되는 서비스 개인 키입니다.
25.1. Ansible을 사용하여 IdM에 비대칭 서비스 자격 증명 모음이 있는지 확인
중요한 정보를 안전하게 저장하기 위해 Ansible 플레이북을 사용하여 하나 이상의 개인 자격 증명 모음 컨테이너를 생성하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 관리자는 secret_vault 라는 비대칭 자격 증명 모음을 생성합니다. 이렇게 하면 자격 증명 모음 멤버가 개인 키를 사용하여 자격 증명 모음의 시크릿을 검색해야 합니다. 자격 증명 모음 멤버는 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
서비스 인스턴스의 공개 키를 가져옵니다. 예를 들어
openssl
유틸리티를 사용합니다.service-private.pem
개인 키를 생성합니다.$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
개인 키를 기반으로
service-public.pem
공개 키를 생성합니다.$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
선택 사항: 인벤토리 파일이 없는 경우(예: inventory.file)를 생성합니다.
$ touch inventory.file
인벤토리 파일을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-asymmetric-vault-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp ensure-asymmetric-vault-is-present.yml ensure-asymmetric-service-vault-is-present-copy.yml
- 편집을 위해 ensure-asymmetric-vault-is-present-copy.yml 파일을 엽니다.
- service-public.pem 공개 키를 Ansible 컨트롤러에서 server. idm.example.com 서버로 복사하는 작업을 추가합니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 나머지 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name 변수를 사용하여 자격 증명 모음의
이름을
정의합니다(예: secret_vault ). -
vault_type
변수를 비대칭 으로 설정합니다. -
서비스
변수를 자격 증명 모음을 소유하는 서비스의 주체(예: HTTP/webserver1.idm.example.com )로 설정합니다. public_key_file
을 공개 키의 위치로 설정합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Copy public key to ipaserver. copy: src: /path/to/service-public.pem dest: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem mode: 0600 - name: Add data to vault, from a LOCAL file. ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault vault_type: asymmetric service: HTTP/webserver1.idm.example.com public_key_file: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.yml
25.2. Ansible을 사용하여 멤버 서비스 추가
Ansible 플레이북을 사용하여 서비스 자격 증명 모음에 멤버 서비스를 추가하여 모두 자격 증명 모음에 저장된 시크릿을 검색할 수 있도록 다음 절차를 따르십시오. 아래 절차에서 사용되는 예제에서 IdM 관리자는 HTTP/webserver2.idm.example.com 및 HTTP/webserver3. idm.example.com 서비스 주체를 HTTP/webserver1.idm.example.com 에서 소유한 secret_vault 자격 증명 모음에 추가합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장할 비대칭 자격 증명 모음을 생성했습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
선택 사항: 인벤토리 파일이 없는 경우(예: inventory.file)를 생성합니다.
$ touch inventory.file
인벤토리 파일을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
data-archive-in-asymmetric-vault.yml Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp data-archive-in-asymmetric-vault.yml add-services-to-an-asymmetric-vault.yml
- 편집을 위해 data-archive-in-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
services 변수를 사용하여 자격 증명 모음 시크릿에 액세스할
서비스를
정의합니다. action
변수를member
로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com services: - HTTP/webserver2.idm.example.com - HTTP/webserver3.idm.example.com action: member
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file add-services-to-an-asymmetric-vault.yml
25.3. Ansible을 사용하여 비대칭 자격 증명 모음에 IdM 서비스 시크릿 저장
나중에 서비스에서 검색할 수 있도록 Ansible 플레이북을 사용하여 서비스 자격 증명 모음에 시크릿을 저장하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 관리자는 시크릿과 함께 PEM
파일을 secret_vault 라는 비대칭 자격 증명 모음에 저장합니다. 이렇게 하면 서비스가 개인 키를 사용하여 자격 증명 모음에서 시크릿을 검색해야 합니다. 자격 증명 모음 멤버는 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장할 비대칭 자격 증명 모음을 생성했습니다.
- 시크릿은 Ansible 컨트롤러에 로컬로 저장됩니다(예: /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem ).
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
선택 사항: 인벤토리 파일이 없는 경우(예: inventory.file)를 생성합니다.
$ touch inventory.file
인벤토리 파일을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
data-archive-in-asymmetric-vault.yml Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
- 편집을 위해 data-archive-in-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
변수
의 를 "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}" 로 설정합니다. 이렇게 하면 Ansible이 IdM 서버가 아닌 Ansible 컨트롤러의 작업 디렉터리에서 개인 키를 사용하여 파일을 검색할 수 있습니다. action
변수를member
로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com in: "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
25.4. Ansible을 사용하여 IdM 서비스의 서비스 시크릿 검색
Ansible 플레이북을 사용하여 서비스 대신 서비스 자격 증명 모음에서 시크릿을 검색하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 플레이북을 실행하면 secret _vault라는 비대칭 자격 증명 모음의 시크릿 이 있는 PEM
파일을 검색하여 Ansible 인벤토리 파일에 나열된 모든 호스트의 지정된 위치에 ipaservers
로 저장합니다.
서비스는 키탭을 사용하여 IdM에 인증하고 개인 키를 사용하여 자격 증명 모음에 인증합니다. ansible-freeipa
가 설치된 IdM 클라이언트에서 서비스를 대신하여 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장할 비대칭 자격 증명 모음을 생성했습니다.
- 자격 증명 모음에 비밀을 보관합니다.
-
Ansible 컨트롤러의
private_key_file
변수에서 지정한 위치에서 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키를 저장했습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
선택 사항: 인벤토리 파일이 없는 경우(예: inventory.file)를 생성합니다.
$ touch inventory.file
인벤토리 파일을 열고 다음 호스트를 정의합니다.
-
[ipaserver]
섹션에 IdM 서버를 정의합니다. -
[webservers]
섹션에서 시크릿을 검색할 호스트를 정의합니다. 예를 들어 webserver1.idm.example.com, webserver2.idm.example.com 및 webserver3.idm.example.com 에 대한 시크릿을 검색하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com webserver3.idm.example.com
-
retrieve-data-asymmetric-vault.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp retrieve-data-asymmetric-vault.yml retrieve-data-asymmetric-vault-copy.yml
- 편집을 위해 retrieve-data-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
private_key_file
변수를 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키의 위치로 설정합니다. -
out
변수를 private-key-to-an-externally-signed-certificate.pem 시크릿(예: 현재 작업 디렉터리)을 검색하려는 IdM 서버의 위치로 설정합니다. action
변수를member
로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve data from the service vault ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com vault_type: asymmetric private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}" out: private-key-to-an-externally-signed-certificate.pem state: retrieved
-
IdM 서버에서 Ansible 컨트롤러에 데이터 파일을 검색하는 섹션을 플레이북에 추가합니다.
--- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false tasks: [...] - name: Retrieve data file fetch: src: private-key-to-an-externally-signed-certificate.pem dest: ./ flat: yes mode: 0600
의 Ansible 컨트롤러에서 인벤토리 파일의 webservers 섹션에 나열된 webservers로 검색된 private-key-to-an-externally-signed-certificate.pem 파일을 전송하는 플레이북에
섹션을
추가합니다.--- - name: Send data file to webservers become: no gather_facts: no hosts: webservers tasks: - name: Send data to webservers copy: src: private-key-to-an-externally-signed-certificate.pem dest: /etc/pki/tls/private/httpd.key mode: 0444
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
25.5. Ansible을 사용하여 손상된 경우 IdM 서비스 자격 증명 모음 시크릿 변경
서비스 인스턴스가 손상될 때 서비스 자격 증명 모음에 저장된 시크릿을 변경하기 위해 Ansible 플레이북을 재사용하려면 다음 절차를 따르십시오. 다음 예제의 시나리오에서는 webserver3.idm.example.com 에서 검색된 시크릿이 손상되었지만 시크릿을 저장하는 비대칭 자격 증명 모음의 키가 손상되었다고 가정합니다. 이 예제에서 관리자는 비대칭 자격 증명 모음에 비밀을 저장하고 IdM 호스트에 비대칭 자격 증명 모음에서 시크릿 을 검색할 때 사용하는 Ansible 플레이북을 재사용합니다. 절차 시작 시 IdM 관리자는 비대칭 자격 증명 모음에 새 시크릿을 사용하여 새 PEM
파일을 저장하고, 에서 손상된 웹 서버 webserver3.idm.example.com 에 새 시크릿을 검색하지 않도록 인벤토리 파일을 조정한 다음 두 절차를 다시 실행합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장할 비대칭 자격 증명 모음을 생성했습니다.
-
손상된 이전 키를 교체하기 위해 IdM 호스트에서 실행 중인 웹 서비스에 대한 새
httpd
키를 생성했습니다. -
새
httpd
키는 Ansible 컨트롤러에 로컬로 저장됩니다(예: /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem ).
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일을 열고 다음 호스트가 올바르게 정의되었는지 확인합니다.
-
[ipaserver]
섹션의 IdM 서버. [webservers]
섹션에서 시크릿을 검색할 호스트입니다. 예를 들어 webserver1.idm.example.com 및 webserver2.idm.example.com 에 대한 시크릿을 검색하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com
중요현재 예제 webserver3.idm.example.com 에 손상된 웹 서버가 포함되어 있지 않은지 확인합니다.
-
- 편집을 위해 data-archive-in-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver.idm.example.com )로 설정합니다. -
변수
의 를 "{{ lookup('file'), 'new-private-key-to-an-externally-signed-certificate.pem') | b64encode }}" 로 설정합니다. 이렇게 하면 Ansible이 IdM 서버가 아닌 Ansible 컨트롤러의 작업 디렉터리에서 개인 키를 사용하여 파일을 검색할 수 있습니다. action
변수를member
로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver.idm.example.com in: "{{ lookup('file', 'new-private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
- 편집을 위해 retrieve-data-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
private_key_file
변수를 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키의 위치로 설정합니다. -
out
변수를 new-private-key-to-an-externally-signed-certificate.pem 시크릿(예: 현재 작업 디렉터리)을 검색하려는 IdM 서버의 위치로 설정합니다. action
변수를member
로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve data from the service vault ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com vault_type: asymmetric private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}" out: new-private-key-to-an-externally-signed-certificate.pem state: retrieved
-
IdM 서버에서 Ansible 컨트롤러에 데이터 파일을 검색하는 섹션을 플레이북에 추가합니다.
--- - name: Retrieve data from vault hosts: ipaserver become: true gather_facts: false tasks: [...] - name: Retrieve data file fetch: src: new-private-key-to-an-externally-signed-certificate.pem dest: ./ flat: yes mode: 0600
의 Ansible 컨트롤러에서 인벤토리 파일의 webservers 섹션에 나열된 webservers로 검색된 new-private-key-to-an-externally-signed-certificate.pem 파일을 전송하는 플레이북에
섹션을
추가합니다.--- - name: Send data file to webservers become: true gather_facts: no hosts: webservers tasks: - name: Send data to webservers copy: src: new-private-key-to-an-externally-signed-certificate.pem dest: /etc/pki/tls/private/httpd.key mode: 0444
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
25.6. 추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에서 README-vault.md 마크다운 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/vault/
디렉터리에서 샘플 플레이북을 참조하십시오.
26장. Ansible을 사용하여 IdM에 서비스가 있는지 여부 확인
Ansible service
모듈을 사용하여 IdM(Identity Management) 관리자는 IdM에 고유하지 않거나 IdM에 없는 특정 서비스가 있는지 확인할 수 있습니다. 예를 들어 service
모듈을 사용하여 다음을 수행할 수 있습니다.
수동으로 설치한 서비스가 IdM 클라이언트에 있는지 확인하고 해당 서비스가 없는 경우 자동으로 설치합니다. 자세한 내용은 다음을 참조하십시오.
- IdM에 등록된 서비스에 인증서가 연결되어 있고 해당 인증서가 없는 경우 자동으로 설치되었는지 확인합니다. 자세한 내용은 다음을 참조하십시오.
- IdM 서비스 항목에 외부 서명된 인증서가 있는지 확인합니다.
IdM 사용자와 호스트에서 서비스 키탭을 검색하고 생성할 수 있도록 허용합니다. 자세한 내용은 다음을 참조하십시오.
IdM 사용자와 호스트에서 Kerberos 별칭을 서비스에 추가할 수 있도록 허용합니다. 자세한 내용은 다음을 참조하십시오.
서비스가 IdM 클라이언트에 없는지 확인하고 해당 서비스가 있는 경우 자동으로 제거합니다. 자세한 내용은 다음을 참조하십시오.
26.1. Ansible 플레이북을 사용하여 IdM에 HTTP 서비스가 있는지 확인
Ansible 플레이북을 사용하여 IdM에 HTTP 서버가 있는지 확인하려면 다음 절차를 따르십시오.
사전 요구 사항
- HTTP 서비스를 호스팅하는 시스템은 IdM 클라이언트입니다.
- IdM 관리자 암호가 있습니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-present.yml
Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-copy.yml
편집을 위해
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-copy.yml
Ansible 플레이북 파일을 엽니다.--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com
파일을 조정합니다.
-
ipaadmin_password
변수에 정의된 IdM 관리자 암호를 변경합니다. -
ipaservice
작업의 name 변수에 정의된 대로 HTTP 서비스가 실행 중인 IdM 클라이언트의이름을
변경합니다.
-
- 파일을 저장하고 종료합니다.
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/service/service-is-present-copy.yml
검증 단계
- IdM 관리자로 IdM 웹 UI에 로그인합니다.
-
ID
→서비스로
이동합니다.
HTTP/client.idm.example.com@IDM.EXAMPLE.COM 이 서비스 목록에 나열되면 Ansible 플레이북이 IdM에 성공적으로 추가되었습니다.
추가 리소스
- HTTP 서버와 브라우저 클라이언트 간의 통신을 보호하려면 Apache HTTP 서버에 TLS 암호화 추가 를 참조하십시오.
- HTTP 서비스의 인증서를 요청하려면 certmonger를 사용하여 서비스에 대한 IdM 인증서 가져오기 에 설명된 절차를 참조하십시오.
26.2. 단일 Ansible 작업을 사용하여 IdM 클라이언트에 IdM에 여러 서비스가 있는지 확인
ansible-freeipa
ipaservice
모듈을 사용하여 단일 Ansible 작업으로 여러 IdM(Identity Management) 서비스를 추가, 수정, 삭제할 수 있습니다. 이를 위해 ipaservice
모듈의 services
옵션을 사용합니다.
services
옵션을 사용하여 특정 서비스에만 적용되는 여러 서비스 변수를 지정할 수도 있습니다. services
옵션에 대한 유일한 필수 변수인 name
변수로 이 서비스를 정의합니다.
단일 작업을 사용하여 IdM에 HTTP/client01.idm.example.com@IDM.EXAMPLE.COM 및 ftp/client02.idm.example.com@IDM.EXAMPLE.COM 서비스가 있는지 확인하려면 다음 절차를 완료합니다.
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
- RHEL 8.9 이상을 사용하고 있습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 add-http-and-ftp-services.yml 을 생성합니다.
--- - name: Playbook to add multiple services in a single task hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add HTTP and ftp services ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" services: - name: HTTP/client01.idm.example.com@IDM.EXAMPLE.COM - name: ftp/client02.idm.example.com@IDM.EXAMPLE.COM
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-http-and-ftp-services.yml
26.3. Ansible 플레이북을 사용하여 비IdM 클라이언트에서 IdM에 HTTP 서비스가 있는지 확인
다음 절차에 따라 Ansible 플레이북을 사용하는 IdM 클라이언트가 아닌 호스트의 IdM에 HTTP 서버가 있는지 확인합니다. IdM에 HTTP 서버를 추가하여 IdM에 호스트를 추가합니다.
사전 요구 사항
- 호스트에 HTTP 서비스를 설치했습니다.
- HTTP를 설정한 호스트는 IdM 클라이언트가 아닙니다. 그렇지 않으면 HTTP 서비스를 IdM에 등록한 단계를 수행합니다.
- IdM 관리자 암호가 있습니다.
- 호스트에 대해 IPv6를 사용하는 경우 DNS A 레코드 또는 AAAA 레코드가 사용됩니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check.yml
Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check-copy.yml
복사된 파일
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check-copy.yml
을 열어 편집합니다.ipa
및service
작업에서 ipaadmin_password이름
변수를 찾습니다.--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/www2.example.com skip_host_check: yes
파일을 조정합니다.
-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 HTTP 서비스가 실행 중인 호스트의 이름으로 설정합니다.
-
- 파일을 저장하고 종료합니다.
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/service/service-is-present-without-host-check-copy.yml
검증 단계
- IdM 관리자로 IdM 웹 UI에 로그인합니다.
-
ID
→서비스로
이동합니다.
이제 서비스 목록에 HTTP/client.idm.example.com@IDM.EXAMPLE.COM 이 표시됩니다.
추가 리소스
- 통신을 보호하려면 Apache HTTP Server에 TLS 암호화 추가를 참조하십시오.
26.4. Ansible Playbook을 사용하여 DNS 없이 IdM 클라이언트에 HTTP 서비스가 있는지 확인
Ansible 플레이북을 사용하는 DNS 항목이 없는 IdM 클라이언트에서 실행 중인 HTTP 서버가 있는지 확인하려면 다음 절차를 따르십시오. 시나리오는 IdM 호스트에 사용 가능한 DNS A 항목이 없으며 IPv4 대신 IPv6를 사용하는 경우 DNS AAAA 항목이 없다는 것입니다.
사전 요구 사항
- HTTP 서비스를 호스트하는 시스템은 IdM에 등록되어 있습니다.
- 호스트의 DNS A 또는 DNS AAAA 레코드가 없을 수 있습니다. 그렇지 않으면 호스트의 DNS 레코드가 있는 경우 Ansible 플레이북을 사용하여 IdM에 HTTP 서비스가 있는지 확인하는 절차를 따르십시오.
- IdM 관리자 암호가 있습니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force.yml
Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force-copy.yml
복사된 파일
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force-copy.yml
을 열어 편집합니다.ipa
및service
작업에서 ipaadmin_password이름
변수를 찾습니다.--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/ihavenodns.info force: yes
파일을 조정합니다.
-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 HTTP 서비스가 실행 중인 호스트의 이름으로 설정합니다.
-
- 파일을 저장하고 종료합니다.
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/service/service-is-present-with-host-force-copy.yml
검증 단계
- IdM 관리자로 IdM 웹 UI에 로그인합니다.
-
ID
→서비스로
이동합니다.
이제 서비스 목록에 HTTP/client.idm.example.com@IDM.EXAMPLE.COM 이 표시됩니다.
추가 리소스
- 통신을 보호하려면 Apache HTTP Server에 TLS 암호화 추가를 참조하십시오.
26.5. Ansible Playbook을 사용하여 IdM 서비스 항목에 외부 서명된 인증서가 있는지 확인
ansible-freeipa
service
모듈을 사용하여 외부 CA(인증 기관)에서 발급한 인증서가 HTTP 서비스의 IdM 항목에 연결되어 있는지 확인하려면 다음 절차를 따르십시오. IdM CA가 자체 서명된 인증서를 사용하는 경우 IdM CA가 아닌 외부 CA에서 서명한 HTTP 서비스의 인증서를 보유하는 것이 특히 유용합니다.
사전 요구 사항
- 호스트에 HTTP 서비스를 설치했습니다.
- HTTP 서비스를 IdM에 등록했습니다.
- IdM 관리자 암호가 있습니다.
- 주체가 HTTP 서비스의 주체에 해당하는 외부 서명 인증서가 있습니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml 파일의 복사본을 만듭니다.
예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
선택 사항: 인증서가 PEM(개인 정보 보호 강화 메일) 형식인 경우 CLI(명령줄 인터페이스)를 통해 더 쉽게 처리할 수 있도록 인증서를 DER(고급 인코딩 규칙) 형식으로 변환합니다.
$ openssl x509 -outform der -in cert1.pem -out cert1.der
base64
명령을 사용하여DER
파일을 표준 출력으로 디코딩합니다. w0
옵션을 사용하여 래핑을 비활성화합니다.$ base64 cert1.der -w0 MIIC/zCCAeegAwIBAgIUV74O+4kXeg21o4vxfRRtyJm...
- 인증서를 표준 출력에서 클립보드로 복사합니다.
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
파일을 열어 내용을 편집하고 봅니다.--- - name: Service certificate present. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service certificate is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com certificate: | - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/... [...] action: member state: present
파일을 조정합니다.
-
인증서 변수를 사용하여 정의한
인증서를
CLI에서 복사한 인증서로 바꿉니다. 표시된 대로 "|" 파이프 문자가 있는certificate:
변수를 사용하는 경우 한 줄에 입력하지 않고 인증서 THIS WAY를 입력할 수 있습니다. 이렇게 하면 인증서를 더 쉽게 읽을 수 있습니다. -
ipaadmin_password
변수에 정의된 IdM 관리자 암호를 변경합니다. -
name 변수에서 정의한 HTTP 서비스가 실행 중인 IdM 클라이언트의
이름을
변경합니다. - 기타 관련 변수를 변경합니다.
-
인증서 변수를 사용하여 정의한
- 파일을 저장하고 종료합니다.
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/service/service-member-certificate-present-copy.yml
검증 단계
- IdM 관리자로 IdM 웹 UI에 로그인합니다.
-
ID
→서비스로
이동합니다. - 새로 추가된 인증서(예: HTTP/client.idm.example.com )를 사용하여 서비스 이름을 클릭합니다.
오른쪽에 있는 Service Certificate(서비스 인증서
) 섹션에서 새로 추가된 인증서를 볼 수 있습니다.
26.6. Ansible 플레이북을 사용하여 IdM 사용자, 그룹, 호스트 또는 호스트 그룹을 사용하여 서비스의 키탭을 생성할 수 있습니다.
keytab은 Kerberos 주체와 암호화된 키의 쌍을 포함하는 파일입니다. 키탭 파일은 일반적으로 일반 텍스트 파일에 저장된 암호나 사람의 상호 작용 없이도 Kerberos를 사용하여 스크립트를 자동으로 인증할 수 있도록 하는 데 사용됩니다. 그런 다음 스크립트가 가져온 자격 증명을 사용하여 원격 시스템에 저장된 파일에 액세스할 수 있습니다.
IdM(Identity Management) 관리자는 다른 사용자가 IdM에서 실행되는 서비스에 대한 키탭을 검색하거나 만들 수 있습니다. 특정 사용자와 사용자 그룹이 키탭을 만들 수 있도록 허용하면 IdM 관리자 암호를 공유하지 않고 서비스 관리를 위임할 수 있습니다. 이 위임은 보다 세부적인 시스템 관리를 제공합니다.
특정 IdM 사용자, 사용자 그룹, 호스트 및 호스트 그룹이 IdM 클라이언트에서 실행되는 HTTP 서비스에 대한 키탭을 생성하도록 하려면 다음 절차를 따르십시오. 특히 user01 IdM 사용자가 client. idm.example.com 이라는 IdM 클라이언트에서 실행되는 HTTP 서비스에 대한 키탭을 생성하는 방법을 설명합니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - HTTP 서비스를 IdM에 등록했습니다.
- HTTP 서비스를 호스팅하는 시스템은 IdM 클라이언트입니다.
- 키탭을 생성할 수 있도록 허용하려는 IdM 사용자 및 사용자 그룹은 IdM에 있습니다.
- 키탭을 생성할 수 있도록 허용하려는 IdM 호스트 및 호스트 그룹은 IdM에 있습니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml
Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
-
편집을 위해
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
Ansible 플레이북 파일을 엽니다. 다음을 변경하여 파일을 조정합니다.
-
ipaadmin_password
변수에 지정된 IdM 관리자 암호입니다. - HTTP 서비스가 실행 중인 IdM 클라이언트의 이름입니다. 현재 예제에서는 HTTP/client.idm.example.com입니다.
-
allow_create_keytab_user:
섹션에 나열된 IdM 사용자의 이름입니다. 현재 예제에서는 user01 입니다. -
allow_create_keytab_group:
섹션에 나열된 IdM 사용자 그룹의 이름입니다. -
allow_create_keytab_host:
섹션에 나열된 IdM 호스트의 이름입니다. -
allow_create_keytab_hostgroup:
섹션에 나열된 IdM 호스트 그룹의 이름입니다. tasks
섹션의name
변수에서 지정한 작업의 이름입니다.현재 예제에 맞게 수정한 후 복사된 파일은 다음과 같습니다.
--- - name: Service member allow_create_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_create_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_create_keytab_user: - user01 action: member
-
- 파일을 저장합니다.
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/service/service-member-allow_create_keytab-present-copy.yml
검증 단계
특정 HTTP 서비스에 대한 keytab을 생성할 권한이 있는 IdM 사용자로 IdM 서버에 SSH 연결을 수행합니다.
$ ssh user01@server.idm.example.com Password:
ipa-getkeytab
명령을 사용하여 HTTP 서비스에 대한 새 keytab을 생성합니다.$ ipa-getkeytab -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
s
옵션은 키 탭을 생성할 KDC(키 배포 센터) 서버를 지정합니다.p
옵션은
생성하려는 주체를 지정합니다.k
옵션은
새 키를 추가할 키탭 파일을 지정합니다. 파일이 없는 경우 생성됩니다.
명령이 오류가 발생하지 않으면 user01 로 HTTP/client.idm.example.com 의 키탭을 성공적으로 생성했습니다.
26.7. Ansible 플레이북을 사용하여 IdM 사용자, 그룹, 호스트 또는 호스트 그룹을 통해 서비스의 키탭 검색 가능
keytab은 Kerberos 주체와 암호화된 키의 쌍을 포함하는 파일입니다. 키탭 파일은 일반적으로 일반 텍스트 파일에 저장된 암호나 사람의 상호 작용 없이도 스크립트를 Kerberos로 자동으로 인증할 수 있도록 하는 데 사용됩니다. 그런 다음 스크립트가 가져온 자격 증명을 사용하여 원격 시스템에 저장된 파일에 액세스할 수 있습니다.
IdM 관리자는 다른 사용자가 IdM에서 실행되는 서비스에 대한 키탭을 검색하거나 만들 수 있습니다.
특정 IdM 사용자, 사용자 그룹, 호스트 및 호스트 그룹이 IdM 클라이언트에서 실행되는 HTTP 서비스의 키탭을 검색하도록 하려면 다음 절차를 따르십시오. 특히 user01 IdM 사용자가 client.idm.example.com 에서 실행되는 HTTP 서비스의 keytab을 검색할 수 있도록 하는 방법을 설명합니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - HTTP 서비스를 IdM에 등록했습니다.
- 키탭을 검색하려는 IdM 사용자 및 사용자 그룹은 IdM에 있습니다.
- 키탭을 검색할 수 있도록 허용하려는 IdM 호스트 및 호스트 그룹은 IdM에 있습니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retmasterve_keytab-present.yml
Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
-
편집을 위해 복사된 파일
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retmasterve_keytab-present-copy.yml
을 엽니다. 파일을 조정합니다.
-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
ipaservice
작업의name
변수를 HTTP 서비스의 주체로 설정합니다. 현재 예제에서는 HTTP/client.idm.example.com입니다. -
allow_retmasterve_keytab_group:
섹션에서 IdM 사용자의 이름을 지정합니다. 현재 예제에서는 user01 입니다. -
allow_retmasterve_keytab_group:
섹션에서 IdM 사용자 그룹의 이름을 지정합니다. -
allow_retmasterve_keytab_group:
섹션에서 IdM 호스트의 이름을 지정합니다. -
allow_retmasterve_keytab_group:
섹션에서 IdM 호스트 그룹의 이름을 지정합니다. tasks
섹션에서name
변수를 사용하여 작업 이름을 지정합니다.현재 예제에 맞게 수정한 후 복사된 파일은 다음과 같습니다.
--- - name: Service member allow_retrieve_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_retrieve_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_retrieve_keytab_user: - user01 action: member
-
- 파일을 저장합니다.
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/service/service-member-allow_retrieve_keytab-present-copy.yml
검증 단계
HTTP 서비스의 keytab을 검색할 권한이 있는 IdM 사용자로 IdM 서버에 SSH로 연결합니다.
$ ssh user01@server.idm.example.com Password:
ipa-getkeytab
명령을-r
옵션과 함께 사용하여 keytab을 검색합니다.$ ipa-getkeytab -r -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
s
옵션은 키 탭을 검색할 KDC(키 배포 센터) 서버를 지정합니다.p
옵션은
검색할 키탭의 주체를 지정합니다.k
옵션은
검색된 키를 추가할 keytab 파일을 지정합니다. 파일이 없는 경우 생성됩니다.
명령이 오류가 발생하지 않으면 user01 로 HTTP/client.idm.example.com 의 키탭을 성공적으로 불러왔습니다.
26.8. Ansible Playbook을 사용하여 서비스의 Kerberos 기본 별칭이 있는지 확인
일부 시나리오에서는 IdM 관리자가 Kerberos 주체 별칭을 사용하여 IdM 사용자, 호스트 또는 서비스를 Kerberos 애플리케이션에 인증할 수 있도록 하는 것이 좋습니다. 이러한 시나리오는 다음과 같습니다.
- 사용자 이름이 변경되었지만 사용자는 이전 및 새 사용자 이름을 모두 사용하여 시스템에 로그인할 수 있어야 합니다.
- IdM Kerberos 영역이 이메일 도메인과 다른 경우에도 사용자는 이메일 주소를 사용하여 로그인해야 합니다.
client.idm.example.com 에서 실행되는 HTTP 서비스에 대한 HTTP/mycompany.idm.example.com 의 주요 별칭을 생성하려면 다음 절차를 따르십시오.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - 호스트에 HTTP 서비스를 설정했습니다.
- HTTP 서비스를 IdM에 등록했습니다.
- HTTP를 설정한 호스트는 IdM 클라이언트입니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present.yml
Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present-copy.yml
-
편집을 위해
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present-copy.yml
Ansible 플레이북 파일을 엽니다. 다음을 변경하여 파일을 조정합니다.
-
ipaadmin_password
변수에 지정된 IdM 관리자 암호입니다. -
name 변수에서 지정한 서비스의
이름입니다
. 이는 서비스의 정식 주체 이름입니다. 현재 예제에서는 HTTP/client.idm.example.com 입니다. -
principal
변수에서 지정한 Kerberos 주체 별칭입니다.name
변수로 정의한 서비스에 추가하려는 별칭입니다. 현재 예제에서는 host/mycompany.idm.example.com 입니다. tasks
섹션의name
변수에서 지정한 작업의 이름입니다.현재 예제에 맞게 수정한 후 복사된 파일은 다음과 같습니다.
--- - name: Service member principal present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com member principals host/mycompany.idm.exmaple.com present ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com principal: - host/mycompany.idm.example.com action: member
-
- 파일을 저장합니다.
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/service/service-member-principal-present-copy.yml
플레이북을 실행하면 0에 연결할 수 없고 0개의 실패한 작업이 생성되면 HTTP /client.idm.example.com 서비스에 대한 host/mycompany.idm.example.com Kerberos 사용자가 성공적으로 생성되었습니다.
추가 리소스
- 사용자, 호스트 및 서비스의 Kerberos 보안 주체 별칭 관리를 참조하십시오.
26.9. Ansible 플레이북을 사용하여 IdM에 HTTP 서비스가 없는지 확인
IdM에서 서비스를 등록 취소하려면 다음 절차를 따르십시오. 보다 구체적으로는 Ansible 플레이북을 사용하여 IdM에 HTTP /client.idm.example.com이라는 HTTP 서버가 없는지 확인하는 방법을 설명합니다.
사전 요구 사항
- IdM 관리자 암호가 있습니다.
절차
인벤토리 파일을 생성합니다(예:
inventory.file
:$ touch inventory.file
inventory.file
을 열고[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent.yml
Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent-copy.yml
-
편집을 위해
/usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent-copy.yml
Ansible 플레이북 파일을 엽니다. 다음을 변경하여 파일을 조정합니다.
-
ipaadmin_password
변수로 정의된 IdM 관리자 암호입니다. ipaservice
작업의name
변수에 정의된 HTTP 서비스의 Kerberos 주체입니다.현재 예제에 맞게 수정한 후 복사된 파일은 다음과 같습니다.
--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is absent - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com state: absent
-
- 파일을 저장하고 종료합니다.
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/service/service-is-absent-copy.yml
검증 단계
- IdM 관리자로 IdM 웹 UI에 로그인합니다.
-
ID
→서비스로
이동합니다.
서비스 목록에 HTTP/client.idm.example.com@IDM.EXAMPLE.COM 서비스가 표시되지 않으면 IdM에 없는지 확인해야 합니다.
26.10. 추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉터리의README-service.md
마크다운 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/config
디렉터리에서 샘플 플레이북을 참조하십시오.
27장. Ansible 플레이북을 사용하여 IdM에서 글로벌 DNS 구성 관리
Red Hat Ansible Engine dnsconfig
모듈을 사용하면 IdM(Identity Management) DNS에 대한 글로벌 구성을 구성할 수 있습니다. 글로벌 DNS 구성에 정의된 설정은 모든 IdM DNS 서버에 적용됩니다. 그러나 글로벌 구성은 특정 IdM DNS 영역의 구성보다 우선 순위가 낮습니다.
dnsconfig
모듈은 다음 변수를 지원합니다.
- 글로벌 전달자, 특히 해당 IP 주소 및 통신에 사용되는 포트입니다.
- 글로벌 전달 정책: only, first 또는 none. 이러한 유형의 DNS 전달 정책에 대한 자세한 내용은 IdM의 DNS 전달 정책을 참조하십시오.
- 정방향 조회 및 역방향 조회 영역의 동기화.
사전 요구 사항
DNS 서비스는 IdM 서버에 설치되어 있습니다. 통합된 DNS로 IdM 서버를 설치하는 방법에 대한 자세한 내용은 다음 링크 중 하나를 참조하십시오.
이 장에는 다음 섹션이 포함되어 있습니다.
- IdM을 통해 NetworkManager에서 /etc/resolv.conf의 글로벌 전달자를 제거하지 않는 방법
- Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인
- Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 없는지 확인
-
ipadnsconfig ansible-freeipa 모듈의
action: member
옵션 - IdM의 DNS 전달 정책소개
- Ansible 플레이북을 사용하여 IdM DNS 글로벌 구성에 전달 첫 번째 정책이 설정되었는지 확인합니다.
- Ansible 플레이북을 사용하여 글로벌 전달자가 IdM DNS에서 비활성화되었는지 확인합니다.
- Ansible 플레이북을 사용하여 IdM DNS에서 정방향 및 역방향 조회 영역의 동기화가 비활성화되었는지 확인합니다.
27.1. IdM을 통해 NetworkManager에서 /etc/resolv.conf의 글로벌 전달자를 제거하지 않는 방법
통합 DNS로 IdM(Identity Management)을 설치하면 127.0.0.1
localhost 주소를 가리키도록 /etc/resolv.conf
파일을 구성합니다.
# Generated by NetworkManager search idm.example.com nameserver 127.0.0.1
DHCP( Dynamic Host Configuration Protocol)
를 사용하는 네트워크와 같은 특정 환경에서 NetworkManager
서비스는 /etc/resolv.conf
파일의 변경 사항을 되돌릴 수 있습니다. DNS 구성을 영구적으로 만들기 위해 IdM DNS 설치 프로세스는 다음과 같은 방식으로 NetworkManager
서비스를 구성합니다.
DNS 설치 스크립트는 검색 순서 및 DNS 서버 목록을 제어하는
/etc/NetworkManager/conf.d/zzz-ipa.conf
NetworkManager
구성 파일을 생성합니다.# auto-generated by IPA installer [main] dns=default [global-dns] searches=$DOMAIN [global-dns-domain-*] servers=127.0.0.1
-
NetworkManager
서비스가 다시 로드됩니다. 이 서비스는 항상/etc/
. 이 경우NetworkManager/conf.d/ 디렉터리에 있는 마지막 파일에서 설정을 사용하여 /etc/resolv
.conf 파일을 만듭니다zzz-ipa.conf
파일입니다.
/etc/resolv.conf
파일을 수동으로 수정하지 마십시오.
27.2. Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인
Ansible 플레이북을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서 IdM 관리자는 IP(인터넷 프로토콜) v4 주소가 7.7이고 IP v6 주소
포트 2001:db8::1:0
에 DNS 글로벌 전달자가 DNS 서버에 있는지 확인합니다.53
에.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
-
편집을 위해
ensure-presence-of-a-global-forwarder.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에 글로벌 전달자가 있는지 확인합니다
. -
tasks 섹션에서 작업
이름을
변경하여DNS 글로벌 전달자가 포트 53에 7.7. 및 2001:db8::1:0으로 있는지 확인합니다
. ipadnsconfig
부분의forwarders
섹션에서 다음을 수행합니다.-
첫 번째
ip_address
값을 글로벌 전달자의 IPv4 주소로 변경합니다.7.7.9.9
. -
두 번째
ip_address
값을 글로벌 전달자의 IPv6 주소로 변경합니다.2001:db8::1:0
. -
port
값이53
으로 설정되어 있는지 확인합니다.
-
첫 번째
상태를
present
로 변경합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to ensure the presence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a DNS global forwarder to 7.7.9.9 and 2001:db8::1:0 on port 53 ipadnsconfig: forwarders: - ip_address: 7.7.9.9 - ip_address: 2001:db8::1:0 port: 53 state: present
-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일을 참조하십시오.
27.3. Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 없는지 확인
Ansible 플레이북을 사용하여 IdM에 DNS 글로벌 전달자가 없는지 확인하려면 다음 절차를 따르십시오. 아래의 예제 절차에서는 IdM 관리자가 인터넷 프로토콜(IP) v4 주소가 8.8.6.6
이고 IP v6 주소는 포트 53
에서 2001:4860:4860::8800
인 DNS 글로벌 전달자가 없음을 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
-
편집을 위해
ensure-absence-of-a-global-forwarder.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에서 글로벌 전달자가 없는지 확인합니다
. -
tasks
섹션에서DNS 글로벌 전달자가 없는지 확인하고 포트 53에 2001:4860:4860::8800
으로 작업이름을
변경합니다. ipadnsconfig
부분의forwarders
섹션에서 다음을 수행합니다.-
첫 번째
ip_address
값을 글로벌 전달자의 IPv4 주소로 변경합니다.8.8.6.6
. -
두 번째
ip_address
값을 글로벌 전달자의 IPv6 주소로 변경합니다.2001:4860:4860::8800
. -
port
값이53
으로 설정되어 있는지 확인합니다.
-
첫 번째
-
action
변수를member
로 설정합니다. -
상태가
absent
로 설정되어 있는지 확인합니다.
이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to ensure the absence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 on port 53 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 action: member state: absent
중요action: member
를 사용하지 않고 플레이북에서state: absent
옵션만 사용하면 플레이북이 실패합니다.-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일 -
ipadnsconfig ansible-freeipa 모듈의
action: member
옵션
27.4. ipadnsconfig ansible-freeipa 모듈의 action: member
옵션
ansible-freeipa
ipadnsconfig
모듈을 사용하여 IdM(Identity Management)에서 글로벌 전달자를 제외하려면 state: absent
옵션 외에 action: member
옵션을 사용해야 합니다. action: member
를 사용하지 않고 플레이북에서 state: absent
만 사용하면 플레이북이 실패합니다. 결과적으로 모든 글로벌 전달자를 제거하려면 플레이북에서 모두 개별적으로 지정해야 합니다. 반면 state: 현재
옵션에는 action: member
가 필요하지 않습니다.
다음 표에서 는 action: member 옵션의 올바른 사용을 보여주는 DNS 글로벌 전달자 추가 및 제거에 대한 구성 예제를 제공합니다. 표는 각 줄에 표시됩니다.
- 플레이북을 실행하기 전에 구성된 글로벌 전달자
- 플레이북의 발췌 내용
- 플레이북을 실행한 후 구성된 글로벌 전달자
표 27.1. 글로벌 전달자의 ipadnsconfig 관리
이전 버전과의 전달자 | 플레이북 발췌 내용 | 이후의 forwarders |
---|---|---|
8.8.6.6 |
[...] tasks: - name: Ensure the presence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 state: present | 8.8.6.7 |
8.8.6.6 |
[...] tasks: - name: Ensure the presence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 action: member state: present | 8.8.6.6, 8.8.6.7 |
8.8.6.6, 8.8.6.7 |
[...] tasks: - name: Ensure the absence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 state: absent | 플레이북을 실행하면 오류가 발생합니다. 원래 설정 - 8.8.6.6, 8.8.6.7은 변경되지 않습니다. |
8.8.6.6, 8.8.6.7 |
[...] tasks: - name: Ensure the absence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 action: member state: absent | 8.8.6.6 |
27.5. IdM의 DNS 전달 정책
IdM은 첫
번째 및 표준
BIND 전달 정책과 none
IdM별 전달 정책을 지원합니다.
- 전달 먼저 (기본값)
-
IdM BIND 서비스는 DNS 쿼리를 구성된 전달자로 전달합니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND는 인터넷에서 서버를 사용하여 재귀적 해결으로 대체합니다.
forward first
정책은 기본 정책이며 DNS 트래픽을 최적화하는 데 적합합니다. - 앞으로만
-
IdM BIND 서비스는 DNS 쿼리를 구성된 전달자로 전달합니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND에서 클라이언트에 오류를 반환합니다. DNS 구성이 분할된 환경에
만 전달
정책이 권장됩니다. - 없음 (전달 비활성화)
-
DNS 쿼리는
none
전달 정책으로 전달되지 않습니다. 전달 비활성화는 전역 전달 구성의 영역별 재정의에서만 유용합니다. 이 옵션은 BIND 구성에서 비어 있는 전달자 목록을 지정하는 것과 동일한 IdM입니다.
전달을 사용하여 IdM의 데이터를 다른 DNS 서버의 데이터와 결합할 수 없습니다. IdM DNS에서 기본 영역의 특정 하위 영역에 대한 쿼리만 전달할 수 있습니다.
기본적으로 쿼리된 DNS 이름이 IdM 서버에 권한이 있는 영역에 속하는 경우 BIND 서비스는 다른 서버로 쿼리를 전달하지 않습니다. 이러한 상황에서 쿼리된 DNS 이름을 IdM 데이터베이스에서 찾을 수 없는 경우 NXDOMAIN
응답이 반환됩니다. 전달은 사용되지 않습니다.
예 27.1. 시나리오 예
IdM 서버에는 test.example에 대한 권한이 있습니다. DNS 영역. BIND는 192.0.2.254 IP 주소를 사용하여 DNS 서버로 쿼리를 전달하도록 구성됩니다.
클라이언트가 존재하지 않는.test.example에 대한 쿼리를 보낼 때. DNS 이름 BIND는 IdM 서버가 test.example. 영역에 대해 권한이 있음을 감지하고 192. 0.2.254. 서버로 쿼리를 전달하지 않습니다. 결과적으로 DNS 클라이언트는 NXDomain
오류 메시지를 수신하여 쿼리된 도메인이 없음을 사용자에게 알립니다.
27.6. Ansible 플레이북을 사용하여 IdM DNS 글로벌 구성에 전달 첫 번째 정책이 설정되었는지 확인합니다.
Ansible 플레이북을 사용하여 IdM DNS의 글로벌 전달 정책이 먼저 전달되도록 설정하려면 다음 절차를 따르십시오.
전달 첫 번째 DNS 전달 정책을 사용하는 경우 DNS 쿼리가 구성된 전달자로 전달됩니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND는 인터넷에서 서버를 사용하여 재귀적 해결으로 대체합니다. forward first 정책은 기본 정책입니다. 트래픽 최적화에 적합합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- IdM 환경에는 통합된 DNS 서버가 포함되어 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
set-configuration.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp set-configuration.yml set-forward-policy-to-first.yml
- 편집을 위해 set-forward-policy-to-first.yml 파일을 엽니다.
ipadnsconfig
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. forward_policy
변수를 먼저 로 설정합니다.원본 플레이북의 다른 모든 행을 관련성이 없는 모든 행을 삭제합니다. 이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to set global forwarding policy to first hosts: ipaserver become: true tasks: - name: Set global forwarding policy to first. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" forward_policy: first
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file set-forward-policy-to-first.yml
추가 리소스
- IdM의 DNS 전달 정책을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일을 참조하십시오. -
자세한 샘플 플레이북은
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리를 참조하십시오.
27.7. Ansible 플레이북을 사용하여 글로벌 전달자가 IdM DNS에서 비활성화되었는지 확인합니다.
Ansible 플레이북을 사용하여 IdM DNS에서 글로벌 전달자가 비활성화되었는지 확인하려면 다음 절차를 따르십시오. 비활성화는 forward_policy
변수를 none 으로 설정하여 수행됩니다.
전역 전달자를 비활성화하면 DNS 쿼리가 전달되지 않습니다. 전달 비활성화는 전역 전달 구성의 영역별 재정의에서만 유용합니다. 이 옵션은 BIND 구성에서 비어 있는 전달자 목록을 지정하는 것과 동일한 IdM입니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- IdM 환경에는 통합된 DNS 서버가 포함되어 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
disable-global-forwarders.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp disable-global-forwarders.yml disable-global-forwarders-copy.yml
- 편집할 disable-global-forwarders-copy.yml 파일을 엽니다.
ipadnsconfig
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. forward_policy
변수를 none 으로 설정합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to disable global DNS forwarders hosts: ipaserver become: true tasks: - name: Disable global forwarders. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" forward_policy: none
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders-copy.yml
추가 리소스
- IdM의 DNS 전달 정책을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리에서 더 많은 샘플 플레이북을 참조하십시오.
27.8. Ansible 플레이북을 사용하여 IdM DNS에서 정방향 및 역방향 조회 영역의 동기화가 비활성화되었는지 확인합니다.
Ansible 플레이북을 사용하여 IdM DNS에서 정방향 및 역방향 조회 영역이 동기화되지 않도록 하려면 다음 절차를 따르십시오.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- IdM 환경에는 통합된 DNS 서버가 포함되어 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
disallow -reverse-sync.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp disallow-reverse-sync.yml disallow-reverse-sync-copy.yml
- 편집을 위해 disallow-reverse-sync-copy.yml 파일을 엽니다.
ipadnsconfig
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. allow_sync_ptr
변수를 no 로 설정합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to disallow reverse record synchronization hosts: ipaserver become: true tasks: - name: Disallow reverse record synchronization. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" allow_sync_ptr: no
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disallow-reverse-sync-copy.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일을 참조하십시오. -
자세한 샘플 플레이북은
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리를 참조하십시오.
28장. Ansible 플레이북을 사용하여 IdM DNS 영역 관리
IdM(Identity Management) 관리자는 ansible-freeipa
패키지에서 사용할 수 있는 dnszone
모듈을 사용하여 IdM DNS 영역이 작동하는 방식을 관리할 수 있습니다.
사전 요구 사항
- DNS 서비스는 IdM 서버에 설치되어 있습니다. 통합된 DNS로 IdM 서버를 설치하는 데 Red Hat Ansible Engine을 사용하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 ID 관리 서버 설치를 참조하십시오.
28.1. 지원되는 DNS 영역 유형
IdM(Identity Management)은 두 가지 유형의 DNS 영역, 즉 기본 및 전달 영역을 지원합니다. DNS 전달 시나리오를 포함하여 이러한 두 가지 유형의 영역에 대해 설명합니다.
이 가이드에서는 Microsoft Windows DNS에 사용되는 용어와 다른 영역 유형에 BIND 용어를 사용합니다. BIND의 기본 영역은 Microsoft Windows DNS에서 정방향 조회 영역 및 역방향 조회 영역과 동일한 목적을 제공합니다. BIND의 전달 영역은 Microsoft Windows DNS의 조건부 전달자 와 동일한 목적을 제공합니다.
- 기본 DNS 영역
기본 DNS 영역에는 권한 있는 DNS 데이터가 포함되어 있으며 동적 DNS 업데이트를 허용할 수 있습니다. 이 동작은 표준 BIND 구성의
유형 마스터
설정과 동일합니다.ipa dnszone-*
명령을 사용하여 기본 영역을 관리할 수 있습니다.표준 DNS 규칙을 준수하려면 모든 기본 영역에
권한 시작
(SOA) 및 NS(이름서버
) 레코드가 포함되어야 합니다. DNS 영역을 생성할 때 IdM은 이러한 레코드를 자동으로 생성하지만 적절한 위임을 생성하려면 NS 레코드를 상위 영역에 수동으로 복사해야 합니다.표준 BIND 동작에 따라 서버가 권한이 없는 이름에 대한 쿼리가 다른 DNS 서버로 전달됩니다. forwarders와 같은 이러한 DNS 서버는 쿼리에 대한 권한이 있을 수도 있고 그렇지 않을 수 있습니다.
예 28.1. DNS 전달 시나리오의 예
IdM 서버에는
test.example.
기본 영역이 포함되어 있습니다. 이 영역에는sub.test.example. 이름에
대한 NS 위임 레코드가 포함됩니다. 또한test.example.
영역은sub.text
전달자 IP 주소로 구성됩니다..example 하위 영역에 대해 192.0.2.
254비존재
.test.example.
이름을 쿼리하는 클라이언트는NXDomain
응답을 수신하고 IdM 서버가 이 이름에 대한 권한이 있기 때문에 전달이 발생하지 않습니다.반면, IdM 서버가 이 이름에 대한 권한이 없기 때문에
host1.sub.test.example
. 이름을 쿼리하는 것은 구성된 forwarder 192.0.2.254
로 전달됩니다.- DNS 영역 전달
IdM의 관점에서, 전달 DNS 영역에는 권한 있는 데이터가 포함되어 있지 않습니다. 실제로 forward "zone"에는 일반적으로 두 가지 정보만 포함됩니다.
- 도메인 이름
- 도메인과 연결된 DNS 서버의 IP 주소
정의된 도메인에 속하는 이름에 대한 모든 쿼리는 지정된 IP 주소로 전달됩니다. 이 동작은 표준 BIND 구성의 type forward
설정과 동일합니다. ipa dnsforwardzone-*
명령을 사용하여 전달 영역을 관리할 수 있습니다.
정방향 DNS 영역은 IdM-AD(Active Directory) 신뢰 컨텍스트에서 특히 유용합니다. IdM DNS 서버에 idm.example.com 영역에 대한 권한이 있고 AD DNS 서버가 ad.example.com 영역에 대해 권한이 있는 경우 ad.example.com 은 idm.example.com 기본 영역의 DNS 전달 영역입니다. 즉, 쿼리가 somehost.ad.example.com의 IP 주소에 대한 IdM 클라이언트에서 제공되면 쿼리가 ad.example.com IdM DNS 전달 영역에 지정된 AD 도메인 컨트롤러로 전달됩니다.
28.2. 기본 IdM DNS 영역의 구성 특성
IdM(Identity Management)은 새로 고침 기간, 전송 설정 또는 캐시 설정과 같은 특정 기본 구성으로 새 영역을 생성합니다. IdM DNS 영역 속성에서 는 다음 옵션 중 하나를 사용하여 수정할 수 있는 기본 영역 구성의 속성을 찾을 수 있습니다.
-
CLI(명령줄 인터페이스)의
dnszone-mod
명령. 자세한 내용은 IdM CLI에서 기본 DNS 영역의 구성 편집 을 참조하십시오. - IdM 웹 UI. 자세한 내용은 IdM 웹 UI에서 기본 DNS 영역의 구성 편집 을 참조하십시오.
-
ipadnszone
모듈을 사용하는 Ansible 플레이북. 자세한 내용은 IdM의 DNS 영역 관리를 참조하십시오.
영역에 대한 실제 정보를 설정하는 것과 함께 설정은 DNS 서버가 권한 시작 (SOA) 레코드 항목을 처리하는 방법과 DNS 이름 서버에서 레코드를 업데이트하는 방법을 정의합니다.
표 28.1. IdM DNS 영역 속성
속성 | ansible-freeipa 변수 | 설명 |
---|---|---|
인가된 이름 서버 |
| SOA MNAME이라고도 하는 기본 DNS 이름 서버의 도메인 이름을 설정합니다.
기본적으로 각 IdM 서버는 SOA MNAME 필드에 자체적으로 알립니다. 결과적으로 |
관리자 이메일 주소 |
| 영역 관리자에게 사용할 이메일 주소를 설정합니다. 기본값은 호스트의 root 계정으로 설정됩니다. |
SOA 직렬 |
| SOA 레코드에 일련 번호를 설정합니다. IdM은 버전 번호를 자동으로 설정하고 사용자가 수정하지 않아야 합니다. |
SOA 새로 고침 |
| 보조 DNS 서버가 기본 DNS 서버에서 업데이트를 요청하기 전에 대기할 간격(초)을 설정합니다. |
SOA 재시도 |
| 실패한 새로 고침 작업을 재시도하기 전에 대기할 시간(초)을 설정합니다. |
SOA 만료 |
| 보조 DNS 서버가 작업 시도를 종료하기 전에 새로 고침 업데이트를 수행하는 시간을 초 단위로 설정합니다. |
SOA 최소 |
| RFC 2308 에 따라 음수 캐싱의 TTL(Time to Live) 값을 초 단위로 설정합니다. |
SOA 수명 |
|
zone apex에서 레코드에 TTL(초)을 설정합니다. 영역 |
기본 수명 |
|
개별 TTL 값이 없는 영역의 모든 값에 대해 음수 캐싱을 위해 기본 TTL(Time to Live) 값을 초 단위로 설정합니다. 변경 사항을 적용한 후 모든 IdM DNS 서버에서 |
BIND 업데이트 정책 |
| DNS 영역에서 허용된 권한을 클라이언트에 설정합니다. |
동적 업데이트 |
| 클라이언트의 DNS 레코드에 대한 동적 업데이트를 활성화합니다. 이 값을 false로 설정하면 IdM 클라이언트 시스템에서 IP 주소를 추가하거나 업데이트할 수 없습니다. |
전송 허용 |
| 세미콜론(;)으로 구분된 지정된 영역을 전송할 수 있는 IP 주소 또는 네트워크 이름 목록을 제공합니다.
영역 전송은 기본적으로 비활성화되어 있습니다. 기본 |
쿼리 허용 |
| 세미콜론(;)으로 구분된 DNS 쿼리를 실행할 수 있는 IP 주소 또는 네트워크 이름 목록을 제공합니다. |
PTR 동기화 허용 |
| 영역에 대한 A 또는 AAAA 레코드(전달 레코드)가 PTR(역방향) 레코드와 자동으로 동기화되는지 여부를 설정합니다. |
영역 전달기 |
| DNS 영역에 구체적으로 구성된 전달자를 지정합니다. IdM 도메인에서 사용되는 모든 글로벌 전달자와는 별개입니다. 여러 전달자를 지정하려면 옵션을 여러 번 사용합니다. |
전달 정책 |
| 전달 정책을 지정합니다. 지원되는 정책에 대한 자세한 내용은 IdM의 DNS 전달 정책을 참조하십시오. |
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnszone.md
파일을 참조하십시오.
28.3. Ansible을 사용하여 IdM DNS에서 기본 영역 생성
Ansible 플레이북을 사용하여 기본 DNS 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서는 zone.idm.example.com DNS 영역이 있는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnszone
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
dnszone-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp dnszone-present.yml dnszone-present-copy.yml
- 편집할 dnszone-present-copy.yml 파일을 엽니다.
ipadnszone
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. zone_name
변수를 zone.idm.example.com 으로 설정합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: zone.idm.example.com state: present
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-present-copy.yml
추가 리소스
- 지원되는 DNS 영역 유형을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnszone.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/dnszone
디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.
28.4. Ansible 플레이북을 사용하여 여러 변수와 함께 IdM에 기본 DNS 영역이 있는지 확인합니다.
Ansible 플레이북을 사용하여 기본 DNS 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 IdM 관리자는 zone.idm.example.com DNS 영역이 있는지 확인합니다. Ansible 플레이북은 영역의 여러 매개 변수를 구성합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnszone
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
dnszone-all-params.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp dnszone-all-params.yml dnszone-all-params-copy.yml
- 편집할 dnszone-all-params-copy.yml 파일을 엽니다.
ipadnszone
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
zone_name
변수를 zone.idm.example.com 으로 설정합니다. -
PTR 레코드와 A 및 AAAA 레코드의 동기화인 정방향 및 역방향 레코드의 동기화를 허용하려면
allow_sync_ptr
변수를 true로 설정합니다. -
IdM 클라이언트 시스템에서 IP 주소를 추가하거나 업데이트할 수 있도록
dynamic_update
변수를 true로 설정합니다. -
영역에 있는 레코드의 인라인 DNSSEC 서명을 허용하려면
dnssec
변수를 true로 설정합니다. -
allow_transfer
변수를 영역의 보조 이름 서버의 IP 주소로 설정합니다. -
allow_query
변수를 쿼리를 발행할 수 있는 IP 주소 또는 네트워크로 설정합니다. -
forwarders
변수를 글로벌 전달자의 IP 주소로 설정합니다. -
serial
변수를 SOA 레코드 일련 번호로 설정합니다. -
영역의 DNS 레코드에 대한
refresh
,retry
,expire
,
minimum
,ttl 및 default_ttl
값을 정의합니다. -
nsec3param_rec 변수를 사용하여 영역에 대한 NSEC3
PARAM 레코드를 정의합니다. -
기존 영역과 겹치는 경우에도 DNS 생성을 강제 하려면
skip_overlap_check
변수를 true로 설정합니다. 이름 서버를 확인할 수 없는 경우에도 DNS 영역을 강제로 생성하려면
skip_nameserver_check
를 true로 설정합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: zone.idm.example.com allow_sync_ptr: true dynamic_update: true dnssec: true allow_transfer: - 1.1.1.1 - 2.2.2.2 allow_query: - 1.1.1.1 - 2.2.2.2 forwarders: - ip_address: 8.8.8.8 - ip_address: 8.8.4.4 port: 52 serial: 1234 refresh: 3600 retry: 900 expire: 1209600 minimum: 3600 ttl: 60 default_ttl: 90 name_server: server.idm.example.com. admin_email: admin.admin@idm.example.com nsec3param_rec: "1 7 100 0123456789abcdef" skip_overlap_check: true skip_nameserver_check: true state: present
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-all-params-copy.yml
추가 리소스
- 지원되는 DNS 영역 유형을 참조하십시오.
- 기본 IdM DNS 영역의 구성 속성 을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnszone.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/dnszone
디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.
28.5. IP 주소가 제공될 때 역방향 DNS 조회에 영역이 있는지 확인하는 데 Ansible 플레이북을 사용합니다.
Ansible 플레이북을 사용하여 역방향 DNS 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 IdM 관리자는 IdM 호스트의 IP 주소 및 접두사 길이를 사용하여 역방향 DNS 조회 영역을 확인합니다.
name_from_ip
변수를 사용하여 DNS 서버의 IP 주소 접두사 길이를 제공하면 영역 이름을 제어할 수 있습니다. 접두사 길이를 설명하지 않으면 시스템은 DNS 서버에 영역에 대해 쿼리하고 name_from_ip
값 192.168.1.2 를 기준으로 쿼리에서 다음 DNS 영역을 반환할 수 있습니다.
- 1.168.192.in-addr.arpa.
- 168.192.in-addr.arpa.
- 192.in-addr.arpa.
쿼리에서 반환한 영역이 예상과 다를 수 있으므로 name_from_ip
는 실수로 영역이 제거되지 않도록 state
옵션과 함께만 사용할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnszone
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
dnszone-reverse-from-ip.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp dnszone-reverse-from-ip.yml dnszone-reverse-from-ip-copy.yml
- 편집을 위해 dnszone-reverse-from-ip-copy.yml 파일을 엽니다.
ipadnszone
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. name_from_ip
변수를 IdM 이름 서버의 IP로 설정하고 해당 접두사 길이를 제공합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone for reverse DNS lookup is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" name_from_ip: 192.168.1.2/24 state: present register: result - name: Display inferred zone name. debug: msg: "Zone name: {{ result.dnszone.name }}"
플레이북은 192.168.1.2 IP 주소 및 접두사 길이 24에서 역방향 DNS 조회 영역을 생성합니다. 그런 다음 플레이북에 결과 영역 이름이 표시됩니다.
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-reverse-from-ip-copy.yml
추가 리소스
- 지원되는 DNS 영역 유형을 참조하십시오.
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnszone.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/dnszone
디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.
29장. Ansible을 사용하여 IdM에서 DNS 위치 관리
IdM(Identity Management) 관리자는 ansible-freeipa
패키지에서 사용할 수 있는 위치
모듈을 사용하여 IdM DNS 위치를 관리할 수 있습니다.
29.1. DNS 기반 서비스 검색
DNS 기반 서비스 검색은 클라이언트에서 DNS 프로토콜을 사용하여 LDAP
또는 Kerberos
와 같은 특정 서비스를 제공하는 네트워크에서 서버를 찾는 프로세스입니다. 일반적인 작업 유형 중 하나는 클라이언트가 가장 가까운 네트워크 인프라 내에서 인증 서버를 찾을 수 있도록 허용하는 것입니다. 이는 처리량이 증가하고 네트워크 대기 시간이 단축되어 전체 비용이 절감되기 때문입니다.
서비스 검색의 주요 장점은 다음과 같습니다.
- 가까운 서버의 이름으로 클라이언트를 명시적으로 구성할 필요가 없습니다.
- DNS 서버는 정책의 중앙 공급업체로 사용됩니다. 동일한 DNS 서버를 사용하는 클라이언트는 서비스 프로바이더 및 해당 기본 순서에 대해 동일한 정책에 액세스할 수 있습니다.
IdM(Identity Management) 도메인에서는 LDAP
,Kerberos
및 기타 서비스에 대한 SRV 레코드(DNS 서비스 레코드)가 있습니다. 예를 들어 다음 명령은 IdM DNS 도메인에서 TCP 기반 Kerberos
서비스를 제공하는 호스트를 DNS 서버에 쿼리합니다.
예 29.1. DNS 위치 독립 결과
$ dig -t SRV +short _kerberos._tcp.idm.example.com
0 100 88 idmserver-01.idm.example.com.
0 100 88 idmserver-02.idm.example.com.
출력에는 다음 정보가 포함됩니다.
-
0
(우선 순위): 대상 호스트의 우선 순위입니다. 더 낮은 값이 우선합니다. -
100
(가벼움). 우선순위가 동일한 항목의 상대 가중치를 지정합니다. 자세한 내용은 RFC 2782, 섹션 3을 참조하십시오. -
88
(포트 번호): 서비스의 포트 번호입니다. - 서비스를 제공하는 호스트의 정식 이름입니다.
이 예에서 반환된 두 호스트 이름은 우선 순위와 가중치가 동일합니다. 이 경우 클라이언트는 결과 목록의 임의 항목을 사용합니다.
대신 클라이언트가 DNS 위치에 구성된 DNS 서버를 쿼리하도록 구성된 경우 출력은 다릅니다. 위치에 할당된 IdM 서버의 경우 맞춤형 값이 반환됩니다. 아래 예제에서 클라이언트는 위치 germany
에서 DNS 서버를 쿼리하도록 구성됩니다.
예 29.2. DNS 위치 기반 결과
$ dig -t SRV +short _kerberos._tcp.idm.example.com
_kerberos._tcp.germany._locations.idm.example.com.
0 100 88 idmserver-01.idm.example.com.
50 100 88 idmserver-02.idm.example.com.
IdM DNS 서버는 로컬 서버를 선호하는 DNS 위치별 SRV 레코드를 가리키는 DNS 별칭(CNAME)을 자동으로 반환합니다. 이 CNAME 레코드는 출력의 첫 번째 줄에 표시됩니다. 이 예제에서 호스트 idmserver-01.idm.example.com 은 우선 순위 값이 가장 낮으므로 선호됩니다. idmserver-02.idm.example.com 은 우선 순위가 높으므로 기본 호스트를 사용할 수 없는 경우에 대해서만 백업으로 사용됩니다.
29.2. DNS 위치에 대한 배포 고려 사항
IdM(Identity Management)은 통합 DNS를 사용할 때 SRV(위치별 서비스) 레코드를 생성할 수 있습니다. 각 IdM DNS 서버는 위치별 SRV 레코드를 생성하므로 각 DNS 위치에 하나 이상의 IdM DNS 서버를 설치해야 합니다.
DNS 위치에 대한 클라이언트의 선호도는 클라이언트가 수신한 DNS 레코드에서만 정의합니다. 이러한 이유로 IdM DNS 서버를 비IdM DNS 소비자 서버와 결합하고 DNS 서비스 검색을 수행하는 클라이언트가 IdM DNS 서버의 위치별 레코드를 분석하는 경우 재귀할 수 있습니다.
혼합 IdM 및 비IdM DNS 서비스가 있는 대부분의 배포에서 DNS 재귀는 왕복 시간 지표를 사용하여 가장 가까운 IdM DNS 서버를 자동으로 선택합니다. 일반적으로, IdM이 아닌 DNS 서버를 사용하는 클라이언트가 가장 가까운 DNS 위치에 대한 레코드를 확보하므로 최적의 IdM 서버 세트를 사용할 수 있습니다.
29.3. DNS Time to Live (TTL)
클라이언트는 영역 구성에 설정된 기간 동안 DNS 리소스 레코드를 캐시할 수 있습니다. 이 캐싱으로 인해 클라이언트는 TTL(Time To Live) 값이 만료될 때까지 클라이언트에서 변경 사항을 받지 못할 수 있습니다. IdM(Identity Management)의 기본 TTL 값은 1일입니다
.
클라이언트 컴퓨터가 사이트 간에 로밍되는 경우 IdM DNS 영역의 TTL 값을 조정해야 합니다. 클라이언트가 사이트 간에 로밍해야 하는 시간보다 낮은 값으로 값을 설정합니다. 이렇게 하면 클라이언트에 캐시된 DNS 항목이 다른 사이트에 다시 연결되기 전에 만료되도록 하므로 DNS 서버를 쿼리하여 위치별 SRV 레코드를 새로 고칩니다.
추가 리소스
- 기본 IdM DNS 영역의 구성 속성 을 참조하십시오.
29.4. Ansible을 사용하여 IdM 위치가 있는지 확인
IdM(Identity Management)의 시스템 관리자는 클라이언트가 가장 가까운 네트워크 인프라 내에서 인증 서버를 찾을 수 있도록 IdM DNS 위치를 구성할 수 있습니다.
다음 절차에서는 Ansible 플레이북을 사용하여 DNS 위치가 IdM에 있는지 확인하는 방법을 설명합니다. 이 예제에서는 IdM에 germany DNS 위치가 있는지 확인하는 방법을 설명합니다. 결과적으로 로컬 IdM 클라이언트가 이를 사용하여 서버 응답 시간을 줄일 수 있도록 특정 IdM 서버를 이 위치에 할당할 수 있습니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - DNS 위치에 대한 배포 고려 사항을 이해합니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
파일의 복사본을 만듭니다.-freeipa/playbooks/location/ 디렉터리에 있는 location-
present.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/location/location-present.yml location-present-copy.yml
-
편집할
location-present-copy.yml
Ansible 플레이북 파일을 엽니다. ipalocation
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
사용 사례에 대응하도록 작업
이름을
조정합니다. -
ipaadmin_password
변수를 IdM 관리자의 암호로 설정합니다. -
name
변수를 위치 이름으로 설정합니다.
이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: location present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "germany" location is present ipalocation: ipaadmin_password: "{{ ipaadmin_password }}" name: germany
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory location-present-copy.yml
29.5. Ansible을 사용하여 IdM 위치가 없는지 확인
IdM(Identity Management)의 시스템 관리자는 클라이언트가 가장 가까운 네트워크 인프라 내에서 인증 서버를 찾을 수 있도록 IdM DNS 위치를 구성할 수 있습니다.
다음 절차에서는 Ansible 플레이북을 사용하여 IdM에 DNS 위치가 없는지 확인하는 방법을 설명합니다. 이 예제에서는 IdM에 germany DNS 위치가 없는지 확인하는 방법을 설명합니다. 따라서 특정 IdM 서버를 이 위치에 할당할 수 없으며 로컬 IdM 클라이언트는 사용할 수 없습니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
- IdM 서버가 germany DNS 위치에 할당되지 않습니다.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - 예제에서는 ~/MyPlaybooks/ 디렉터리를 샘플 플레이북의 복사본을 저장하기 위한 중앙 위치로 생성 및 구성 했다고 가정합니다.
절차
~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
파일의 복사본을 만듭니다.-freeipa/playbooks/location/ 디렉터리에 있는 location-
absent.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/location/location-absent.yml location-absent-copy.yml
-
편집할
location-absent-copy.yml
Ansible 플레이북 파일을 엽니다. ipalocation
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
사용 사례에 대응하도록 작업
이름을
조정합니다. -
ipaadmin_password
변수를 IdM 관리자의 암호로 설정합니다. -
name
변수를 DNS 위치의 이름으로 설정합니다. -
state
변수가absent
로 설정되어 있는지 확인합니다.
이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: location absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "germany" location is absent ipalocation: ipaadmin_password: "{{ ipaadmin_password }}" name: germany state: absent
-
사용 사례에 대응하도록 작업
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory location-absent-copy.yml
29.6. 추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에 있는README-location.md
파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/location
디렉터리에서 샘플 Ansible 플레이북을 참조하십시오.
30장. IdM에서 DNS 전달 관리
다음 절차에 따라 IdM(Identity Management) 웹 UI, IdM CLI 및 Ansible을 사용하여 DNS 글로벌 전달자 및 DNS 전달 영역을 구성합니다.
- IdM DNS 서버의 두 가지 역할
- IdM의 DNS 전달 정책
- IdM 웹 UI에 글로벌 전달자 추가
- CLI에 글로벌 전달자 추가
- IdM 웹 UI에 DNS Forward Zone 추가
- CLI에서 DNS Forward Zone 추가
- Ansible을 사용하여 IdM에서 DNS Global Forwarder 설정
- Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인
- Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 없는지 확인
- Ansible을 사용하여 IdM에서 DNS Global Forwarders가 비활성화되었는지 확인
- Ansible을 사용하여 IdM에 DNS Forward Zone이 있는지 확인
- Ansible을 사용하여 IdM에 DNS Forward Zone이 여러 전달자가 있는지 확인
- Ansible을 사용하여 IdM에서 DNS Forward Zone이 비활성화되었는지 확인
- Ansible을 사용하여 IdM의 DNS 전달 영역이 없는지 확인
30.1. IdM DNS 서버의 두 가지 역할
DNS 전달은 DNS 서비스가 DNS 쿼리에 응답하는 방법에 영향을 미칩니다. 기본적으로 IdM과 통합된 Berkeley Internet Name Domain(BIND) 서비스는 권한 있는 DNS 서버 및 재귀적 DNS 서버 역할을 합니다.
- 인가된 DNS 서버
- DNS 클라이언트가 IdM 서버에 권한이 있는 DNS 영역에 속하는 이름을 쿼리하면 BIND에서 구성된 영역에 포함된 데이터로 응답합니다. 신뢰할 수 있는 데이터는 항상 다른 데이터보다 우선합니다.
- 재귀 DNS 서버
- DNS 클라이언트가 IdM 서버에 권한이 없는 이름을 쿼리하면 BIND에서 다른 DNS 서버를 사용하여 쿼리를 확인합니다. 전달자가 정의되지 않은 경우 BIND는 인터넷의 루트 서버에 요청하고 재귀적 확인 알고리즘을 사용하여 DNS 쿼리에 응답합니다.
경우에 따라 BIND가 다른 DNS 서버에 직접 연락하고 인터넷에서 사용 가능한 데이터를 기반으로 재귀를 수행하는 것이 바람직하지 않습니다. 쿼리를 확인하기 위해 다른 DNS 서버인 forwarder 를 사용하도록 BIND를 구성할 수 있습니다.
전달자를 사용하도록 BIND를 구성하면 IdM 서버와 전달자 간에 쿼리 및 응답을 앞뒤로 전달하고 IdM 서버는 권한이 없는 데이터의 DNS 캐시 역할을 합니다.
30.2. IdM의 DNS 전달 정책
IdM은 첫
번째 및 표준
BIND 전달 정책과 none
IdM별 전달 정책을 지원합니다.
- 전달 먼저 (기본값)
-
IdM BIND 서비스는 DNS 쿼리를 구성된 전달자로 전달합니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND는 인터넷에서 서버를 사용하여 재귀적 해결으로 대체합니다.
forward first
정책은 기본 정책이며 DNS 트래픽을 최적화하는 데 적합합니다. - 앞으로만
-
IdM BIND 서비스는 DNS 쿼리를 구성된 전달자로 전달합니다. 서버 오류 또는 시간 초과로 인해 쿼리가 실패하면 BIND에서 클라이언트에 오류를 반환합니다. DNS 구성이 분할된 환경에
만 전달
정책이 권장됩니다. - 없음 (전달 비활성화)
-
DNS 쿼리는
none
전달 정책으로 전달되지 않습니다. 전달 비활성화는 전역 전달 구성의 영역별 재정의에서만 유용합니다. 이 옵션은 BIND 구성에서 비어 있는 전달자 목록을 지정하는 것과 동일한 IdM입니다.
전달을 사용하여 IdM의 데이터를 다른 DNS 서버의 데이터와 결합할 수 없습니다. IdM DNS에서 기본 영역의 특정 하위 영역에 대한 쿼리만 전달할 수 있습니다.
기본적으로 쿼리된 DNS 이름이 IdM 서버에 권한이 있는 영역에 속하는 경우 BIND 서비스는 다른 서버로 쿼리를 전달하지 않습니다. 이러한 상황에서 쿼리된 DNS 이름을 IdM 데이터베이스에서 찾을 수 없는 경우 NXDOMAIN
응답이 반환됩니다. 전달은 사용되지 않습니다.
예 30.1. 시나리오 예
IdM 서버에는 test.example에 대한 권한이 있습니다. DNS 영역. BIND는 192.0.2.254 IP 주소를 사용하여 DNS 서버로 쿼리를 전달하도록 구성됩니다.
클라이언트가 존재하지 않는.test.example에 대한 쿼리를 보낼 때. DNS 이름 BIND는 IdM 서버가 test.example. 영역에 대해 권한이 있음을 감지하고 192. 0.2.254. 서버로 쿼리를 전달하지 않습니다. 결과적으로 DNS 클라이언트는 NXDomain
오류 메시지를 수신하여 쿼리된 도메인이 없음을 사용자에게 알립니다.
30.3. IdM 웹 UI에서 글로벌 전달자 추가
IdM(Identity Management) 웹 UI에 글로벌 DNS 전달자를 추가하려면 다음 절차를 따르십시오.
사전 요구 사항
- IdM 관리자로 IdM WebUI에 로그인했습니다.
- 쿼리를 전달할 DNS 서버의 IP(Internet Protocol) 주소를 알고 있습니다.
절차
IdM 웹 UI에서
네트워크 서비스
→DNS 글로벌 구성 → DNS
를 선택합니다.
DNS Global Configuration(DNS 글로벌 구성)
섹션에서Add(추가
)를 클릭합니다.전달된 DNS 쿼리를 수신할 DNS 서버의 IP 주소를 지정합니다.
Forward policy(전달 정책을
선택합니다.-
창 맨 위에 있는
Save(저장
)를 클릭합니다.
검증 단계
네트워크 서비스
→DNS 글로벌 구성
→DNS
를 선택합니다.지정한 전달 정책이 있는 글로벌 전달자가 IdM 웹 UI에 있고 활성화되어 있는지 확인합니다.
30.4. CLI에서 글로벌 전달자 추가
CLI(명령줄 인터페이스)를 사용하여 글로벌 DNS 전달자를 추가하려면 다음 절차를 따르십시오.
사전 요구 사항
- IdM 관리자로 로그인했습니다.
- 쿼리를 전달할 DNS 서버의 IP(Internet Protocol) 주소를 알고 있습니다.
절차
ipa dnsconfig-mod
명령을 사용하여 새 글로벌 전달자를 추가합니다.--forwarder
옵션을 사용하여 DNS 전달자의 IP 주소를 지정합니다.[user@server ~]$ ipa dnsconfig-mod --forwarder=10.10.0.1 Server will check DNS forwarder(s). This may take some time, please wait ... Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
검증 단계
dnsconfig-show
명령을 사용하여 글로벌 전달자를 표시합니다.[user@server ~]$ ipa dnsconfig-show Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
30.5. IdM 웹 UI에서 DNS 전달 영역 추가
IdM(Identity Management) 웹 UI에 DNS 전달 영역을 추가하려면 다음 절차를 따르십시오.
필요하지 않은 한 전달 영역을 사용하지 마십시오. 전달 영역은 표준 솔루션이 아니며 이를 사용하면 예기치 않고 문제가 있는 동작이 발생할 수 있습니다. 전달 영역을 사용해야 하는 경우 글로벌 전달 구성을 재정의하도록 사용을 제한합니다.
새 DNS 영역을 생성하는 경우 Red Hat은 NS(이름 서버) 레코드를 사용하여 표준 DNS 위임을 항상 사용하고 전달 영역을 방지하는 것이 좋습니다. 대부분의 경우 글로벌 전달자를 사용하는 것이 충분하며 전달 영역은 필요하지 않습니다.
사전 요구 사항
- IdM 관리자로 IdM WebUI에 로그인했습니다.
- 쿼리를 전달할 DNS 서버의 IP(Internet Protocol) 주소를 알고 있습니다.
절차
IdM 웹 UI에서
네트워크 서비스
→DNS 전달 영역 → DNS
를 선택합니다.
DNS Forward Zones
(DNS 전달 영역) 섹션에서Add(추가
)를 클릭합니다.Add DNS forward zone
(DNS 전달 영역 추가) 창에서 전달 영역 이름을 지정합니다.Add(추가
) 버튼을 클릭하고 DNS 서버의 IP 주소를 지정하여 전달 요청을 받습니다. 전달 영역당 여러 개의 전달자를 지정할 수 있습니다.Forward policy(전달 정책을
선택합니다.-
창 하단에서
Add(추가
)를 클릭하여 새 전달 영역을 추가합니다.
검증 단계
IdM 웹 UI에서
네트워크 서비스
→DNS 전달 영역 → DNS
를 선택합니다.
지정한 전달자 및 전달 정책을 사용하여 생성한 전달 영역이 IdM 웹 UI에 있는지 확인합니다.
30.6. CLI에서 DNS 전달 영역 추가
CLI(명령줄 인터페이스)를 사용하여 DNS 전달 영역을 추가하려면 다음 절차를 따르십시오.
필요하지 않은 한 전달 영역을 사용하지 마십시오. 전달 영역은 표준 솔루션이 아니며 이를 사용하면 예기치 않고 문제가 있는 동작이 발생할 수 있습니다. 전달 영역을 사용해야 하는 경우 글로벌 전달 구성을 재정의하도록 사용을 제한합니다.
새 DNS 영역을 생성하는 경우 Red Hat은 NS(이름 서버) 레코드를 사용하여 표준 DNS 위임을 항상 사용하고 전달 영역을 방지하는 것이 좋습니다. 대부분의 경우 글로벌 전달자를 사용하는 것이 충분하며 전달 영역은 필요하지 않습니다.
사전 요구 사항
- IdM 관리자로 로그인했습니다.
- 쿼리를 전달할 DNS 서버의 IP(Internet Protocol) 주소를 알고 있습니다.
절차
dnsforwardzone-add
명령을 사용하여 새 전달 영역을 추가합니다. forward 정책이없음
인 경우--forwarder
옵션을 사용하여 하나 이상의 전달자를 지정하고--forward-policy
옵션을 사용하여 전달 정책을 지정합니다.[user@server ~]$ ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first
검증 단계
dnsforwardzone-show
명령을 사용하여 방금 생성한 DNS 전달 영역을 표시합니다.[user@server ~]$ ipa dnsforwardzone-show forward.example.com. Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first
30.7. Ansible을 사용하여 IdM에 DNS Global Forwarder 설정
Ansible 플레이북을 사용하여 IdM에서 DNS 글로벌 전달자를 설정하려면 다음 절차를 따르십시오.
아래 예제 절차에서 IdM 관리자는 IP(인터넷 프로토콜) v4 주소 8.8.6.6
및 IPv6 주소 2001:4860:4860:4860::8800
의 DNS 글로벌 전달자를 DNS 서버로 생성합니다 .
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
set-configuration.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp set-configuration.yml establish-global-forwarder.yml
-
편집을 위해
establish-global-forwarder.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에서 글로벌 전달자를
설정합니다. -
tasks 섹션에서 작업
이름을
Create a DNS global forwarder(DNS 글로벌 전달자를 8.8.6.6 및 2001:4860:4860::8800
)로 변경합니다. ipadnsconfig
부분의forwarders
섹션에서 다음을 수행합니다.-
첫 번째
ip_address
값을 글로벌 전달자의 IPv4 주소로 변경합니다.8.8.6.6
. -
두 번째
ip_address
값을 글로벌 전달자의 IPv6 주소로 변경합니다.2001:4860:4860::8800
. -
port
값이53
으로 설정되어 있는지 확인합니다.
-
첫 번째
forward_policy
를먼저
로 변경합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to establish a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 forward_policy: first allow_sync_ptr: yes
-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file establish-global-forwarder.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일을 참조하십시오.
30.8. Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인
Ansible 플레이북을 사용하여 IdM에 DNS 글로벌 전달자가 있는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서 IdM 관리자는 IP(인터넷 프로토콜) v4 주소가 7.7이고 IP v6 주소
포트 2001:db8::1:0
에 DNS 글로벌 전달자가 DNS 서버에 있는지 확인합니다.53
에.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
-
편집을 위해
ensure-presence-of-a-global-forwarder.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에 글로벌 전달자가 있는지 확인합니다
. -
tasks 섹션에서 작업
이름을
변경하여DNS 글로벌 전달자가 포트 53에 7.7. 및 2001:db8::1:0으로 있는지 확인합니다
. ipadnsconfig
부분의forwarders
섹션에서 다음을 수행합니다.-
첫 번째
ip_address
값을 글로벌 전달자의 IPv4 주소로 변경합니다.7.7.9.9
. -
두 번째
ip_address
값을 글로벌 전달자의 IPv6 주소로 변경합니다.2001:db8::1:0
. -
port
값이53
으로 설정되어 있는지 확인합니다.
-
첫 번째
상태를
present
로 변경합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to ensure the presence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a DNS global forwarder to 7.7.9.9 and 2001:db8::1:0 on port 53 ipadnsconfig: forwarders: - ip_address: 7.7.9.9 - ip_address: 2001:db8::1:0 port: 53 state: present
-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일을 참조하십시오.
30.9. Ansible을 사용하여 IdM에 DNS 글로벌 전달자가 없는지 확인
Ansible 플레이북을 사용하여 IdM에 DNS 글로벌 전달자가 없는지 확인하려면 다음 절차를 따르십시오. 아래의 예제 절차에서는 IdM 관리자가 인터넷 프로토콜(IP) v4 주소가 8.8.6.6
이고 IP v6 주소는 포트 53
에서 2001:4860:4860::8800
인 DNS 글로벌 전달자가 없음을 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
-
편집을 위해
ensure-absence-of-a-global-forwarder.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에서 글로벌 전달자가 없는지 확인합니다
. -
tasks
섹션에서DNS 글로벌 전달자가 없는지 확인하고 포트 53에 2001:4860:4860::8800
으로 작업이름을
변경합니다. ipadnsconfig
부분의forwarders
섹션에서 다음을 수행합니다.-
첫 번째
ip_address
값을 글로벌 전달자의 IPv4 주소로 변경합니다.8.8.6.6
. -
두 번째
ip_address
값을 글로벌 전달자의 IPv6 주소로 변경합니다.2001:4860:4860::8800
. -
port
값이53
으로 설정되어 있는지 확인합니다.
-
첫 번째
-
action
변수를member
로 설정합니다. -
상태가
absent
로 설정되어 있는지 확인합니다.
이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Playbook to ensure the absence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 on port 53 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 action: member state: absent
중요action: member
를 사용하지 않고 플레이북에서state: absent
옵션만 사용하면 플레이북이 실패합니다.-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일 -
ipadnsconfig ansible-freeipa 모듈의
action: member
옵션
30.10. Ansible을 사용하여 DNS Global Forwarders가 IdM에서 비활성화되었는지 확인
다음 절차에 따라 Ansible 플레이북을 사용하여 IdM에서 DNS 글로벌 전달자가 비활성화되었는지 확인합니다. 아래 예제 절차에서 IdM 관리자는 글로벌 전달자의 전달 정책이 none
으로 설정되어 글로벌 전달자를 효과적으로 비활성화합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
모든 DNS 글로벌 전달자를 비활성화하도록 이미 구성된
disable-global-forwarders.yml
Ansible 플레이북 파일의 내용을 확인합니다. 예를 들면 다음과 같습니다.$ cat disable-global-forwarders.yml --- - name: Playbook to disable global DNS forwarders hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Disable global forwarders. ipadnsconfig: forward_policy: none
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리의README-dnsconfig.md
파일을 참조하십시오.
30.11. Ansible을 사용하여 IdM에 DNS 전달 영역이 있는지 확인
Ansible 플레이북을 사용하여 IdM에 DNS 전달 영역이 있는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서 IdM 관리자는 IP(인터넷 프로토콜) 주소가 8.8.8.8
인 DNS 서버에 example.com
의 DNS 전달 영역이 있는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-presence-forwardzone.yml
-
편집을 위해
ensure-presence-forwardzone.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에 dnsforwardzone이 있는지 확인합니다
. -
tasks
섹션에서example.com에 대한 dnsforwardzone이 있는지 확인하도록 작업
변경합니다.이름을
8.8.8.8로 -
tasks
섹션에서ipadnsconfig 제목을
으로 변경합니다.ipadns
forwardzone ipadnsforwardzone
섹션에서 다음을 수행합니다.-
ipaadmin_password
변수를 추가하고 IdM 관리자 암호로 설정합니다. -
name
변수를 추가하고example.com
으로 설정합니다. forwarders
섹션에서 다음을 수행합니다.-
ip_address
및포트
행을 제거합니다. 대시 다음에 지정하여 전달된 요청을 받기 위해 DNS 서버의 IP 주소를 추가합니다.
- 8.8.8.8
-
-
forwardpolicy
변수를 추가하고first
로 설정합니다. -
skip_overlap_check
변수를 추가하고true
로 설정합니다. -
state
변수를present
로 변경합니다.
이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
-
--- - name: Playbook to ensure the presence of a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a dnsforwardzone for example.com to 8.8.8.8 ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com forwarders: - 8.8.8.8 forwardpolicy: first skip_overlap_check: true state: present
-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-forwardzone.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-dnsforwardzone.md
파일을 참조하십시오.
30.12. Ansible을 사용하여 DNS Forward Zone에 IdM에 여러 개의 전달자가 있는지 확인
Ansible 플레이북을 사용하여 IdM의 DNS 전달 영역에 여러 전달자가 있는지 확인하려면 다음 절차를 따르십시오. 아래 예제 절차에서 IdM 관리자는 example.com의 DNS 전달 영역이
로 전달되고 있는지 확인합니다.
8.8.8.8
및 4.4.4.
4
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-presence-multiple-forwarders.yml
-
편집을 위해
ensure-presence-multiple-forwarders.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS의 dnsforwardzone에 여러 전달자가 있는지 확인합니다
. -
tasks
섹션에서example.com의 dnsforwardzone에서 8.8.8.8 및 4.4.4.4 전달자가 있는지
확인하도록 작업이름을
변경합니다. -
tasks
섹션에서ipadnsconfig 제목을
으로 변경합니다.ipadns
forwardzone ipadnsforwardzone
섹션에서 다음을 수행합니다.-
ipaadmin_password
변수를 추가하고 IdM 관리자 암호로 설정합니다. -
name
변수를 추가하고example.com
으로 설정합니다. forwarders
섹션에서 다음을 수행합니다.-
ip_address
및포트
행을 제거합니다. 확인하려는 DNS 서버의 IP 주소를 추가합니다. 앞에 대시가 있습니다.
- 8.8.8.8 - 4.4.4.4
-
- state 변수를 present로 변경합니다.
이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
-
--- - name: name: Playbook to ensure the presence of multiple forwarders in a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of 8.8.8.8 and 4.4.4.4 forwarders in dnsforwardzone for example.com ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com forwarders: - 8.8.8.8 - 4.4.4.4 state: present
-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-forwarders.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-dnsforwardzone.md
파일을 참조하십시오.
30.13. Ansible을 사용하여 IdM에서 DNS 전달 영역이 비활성화되어 있는지 확인
IdM에서 DNS 전달 영역이 비활성화되어 있는지 확인하려면 Ansible 플레이북을 사용하려면 다음 절차를 따르십시오. 아래 예제 절차에서 IdM 관리자는 example.com
의 DNS 전달 영역이 비활성화되었는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-disabled-forwardzone.yml
-
편집을 위해
ensure-disabled-forwardzone.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에서 dnsforwardzone이 비활성화되었는지 확인합니다
. -
tasks
섹션에서example.com의 dnsforwardzone이 비활성화되어 있는지
확인하도록 작업이름을
변경합니다. -
tasks
섹션에서ipadnsconfig 제목을
으로 변경합니다.ipadns
forwardzone ipadnsforwardzone
섹션에서 다음을 수행합니다.-
ipaadmin_password
변수를 추가하고 IdM 관리자 암호로 설정합니다. -
name
변수를 추가하고example.com
으로 설정합니다. -
전체
forwarders
섹션을 제거합니다. -
state
변수를disabled
로 변경합니다.
이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
-
--- - name: Playbook to ensure a dnsforwardzone is disabled in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure a dnsforwardzone for example.com is disabled ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com state: disabled
-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-disabled-forwardzone.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-dnsforwardzone.md
파일을 참조하십시오.
30.14. Ansible을 사용하여 IdM에 DNS 전달 영역이 없는지 확인
다음 절차에 따라 Ansible 플레이북을 사용하여 IdM에 DNS 전달 영역이 없는지 확인합니다. 아래 예제 절차에서 IdM 관리자는 example.com
에 대한 DNS 전달 영역이 없는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsconfig
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com
forwarders-absent.yml
Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.$ cp forwarders-absent.yml ensure-absence-forwardzone.yml
-
편집을 위해
ensure-absence-forwardzone.yml
파일을 엽니다. 다음 변수를 설정하여 파일을 조정합니다.
-
플레이북의
name
변수를플레이북으로 변경하여 IdM DNS에 dnsforwardzone이 없는지 확인합니다
. -
tasks
섹션에서example.com에 대한 dnsforwardzone이 없으면
작업이름을
변경합니다. -
tasks
섹션에서ipadnsconfig 제목을
으로 변경합니다.ipadns
forwardzone ipadnsforwardzone
섹션에서 다음을 수행합니다.-
ipaadmin_password
변수를 추가하고 IdM 관리자 암호로 설정합니다. -
name
변수를 추가하고example.com
으로 설정합니다. -
전체
forwarders
섹션을 제거합니다. -
state
변수를absent
로 둡니다.
이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
-
--- - name: Playbook to ensure the absence of a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a dnsforwardzone for example.com ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com state: absent
-
플레이북의
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-forwardzone.yml
추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에서README-dnsforwardzone.md
파일을 참조하십시오.
31장. Ansible을 사용하여 IdM에서 DNS 레코드 관리
이 장에서는 Ansible 플레이북을 사용하여 IdM(Identity Management)에서 DNS 레코드를 관리하는 방법을 설명합니다. IdM 관리자는 IdM에서 DNS 레코드를 추가, 수정, 삭제할 수 있습니다. 장에는 다음 섹션이 포함되어 있습니다.
31.1. IdM의 DNS 레코드
IdM(Identity Management)은 다양한 DNS 레코드 유형을 지원합니다. 다음 4가지가 가장 자주 사용됩니다.
- A
호스트 이름과 IPv4 주소에 대한 기본 맵입니다. A 레코드의 레코드 이름은
www
와 같은 호스트 이름입니다. A 레코드의IP 주소
값은192.0.2.1
과 같은 IPv4 주소입니다.A 레코드에 대한 자세한 내용은 RFC 1035 를 참조하십시오.
- AAAA
호스트 이름과 IPv6 주소에 대한 기본 맵입니다. AAAA 레코드의 레코드 이름은
www
와 같은 호스트 이름입니다.IP 주소
값은2001:DB8::1111
과 같은 IPv6 주소입니다.AAAA 레코드에 대한 자세한 내용은 RFC 3596 을 참조하십시오.
- SRV
서비스(SRV) 리소스 레코드 는 서비스 이름을 특정 서비스를 제공하고 있는 서버의 DNS 이름에 매핑합니다. 예를 들어 이 레코드 유형은 LDAP 디렉터리와 같은 서비스를 관리하는 서버에 매핑할 수 있습니다.
SRV 레코드의 레코드 이름은
_service 형식을 갖습니다._
. SRV 레코드의 구성 옵션에는 대상 서비스의 우선 순위, 가중치, 포트 번호 및 호스트 이름이 포함됩니다.ldap._tcp와 같은 _
protocolSRV 레코드에 대한 자세한 내용은 RFC 2782 을 참조하십시오.
- PTR
PTR( 포인터 레코드)은 IP 주소를 도메인 이름에 매핑하는 역방향 DNS 레코드를 추가합니다.
참고IPv4 주소에 대한 모든 역방향 DNS 조회는
in-addr.arpa. 도메인에
정의된 역방향 항목을 사용합니다. 역방향 주소는 사람이 읽을 수 있는 형식으로, 일반 IP 주소의 정확한 역순이며in-addr.arpa.
도메인이 추가됩니다. 예를 들어 네트워크 주소192.0.2.0/24
의 경우 역방향 영역은2.0.192.in-addr.arpa
입니다.PTR의 레코드 이름은 RFC 1035에 지정된 표준 형식이어야 하며 RFC 2317 및 RFC 3596 에서 확장되어야 합니다. 호스트 이름 값은 레코드를 만들 호스트의 정식 호스트 이름이어야 합니다.
참고또한.
ip6.arpa. 도메인의 영역을 사용하여 IPv6
주소에 대해 역방향 영역을 구성할 수 있습니다. IPv6 역방향 영역에 대한 자세한 내용은 RFC 3596 을 참조하십시오.
DNS 리소스 레코드를 추가할 때 많은 레코드에 다른 데이터가 필요합니다. 예를 들어 CNAME 레코드에는 호스트 이름이 필요하지만 A 레코드에는 IP 주소가 필요합니다. IdM 웹 UI에서 현재 선택한 레코드 유형에 필요한 데이터를 반영하도록 새 레코드를 추가하기 위한 양식의 필드가 자동으로 업데이트됩니다.
31.2. 일반적인 ipa dnsrecord-* 옵션
IdM(Identity Management)에서 가장 일반적인 DNS 리소스 레코드 유형을 추가, 수정 및 삭제할 때 다음 옵션을 사용할 수 있습니다.
- A (IPv4)
- AAAA (IPv6)
- SRV
- PTR
Bash
에서는 중괄호 안의 쉼표로 구분된 목록에 값을 나열하여 여러 항목을 정의할 수 있습니다(예: --option={val1,val2,val3}
).
표 31.1. 일반 레코드 옵션
옵션 | 설명 |
---|---|
| 레코드에 사용할 시간을 설정합니다. |
| 원시 DNS 레코드를 구문 분석하고 구조화된 형식으로 반환합니다. |
표 31.2. "a" 레코드 옵션
옵션 | 설명 | 예 |
---|---|---|
| 하나의 A 레코드 또는 하나의 A 레코드 목록을 전달합니다. |
|
지정된 IP 주소가 있는 와일드카드 A 레코드를 만들 수 있습니다. |
| |
|
레코드의 IP 주소를 제공합니다. 레코드를 만들 때 |
|
[a]
이 예제에서는 IP 주소가 192.0.2.123인 와일드카드 A 레코드를 생성합니다.
|
표 31.3. "AAAA" 레코드 옵션
옵션 | 설명 | 예제 |
---|---|---|
| 단일 AAAA(IPv6) 레코드 또는 AAAA 레코드 목록을 전달합니다. |
|
|
레코드에 IPv6 주소를 제공합니다. 레코드를 만들 때 |
|
표 31.4. "PTR" 레코드 옵션
옵션 | 설명 | 예제 |
---|---|---|
|
단일 PTR 레코드 또는 PTR 레코드 목록을 전달합니다. 역방향 DNS 레코드를 추가할 때 다른 DNS 레코드를 추가하는 사용과 비교하여 |
|
| ||
| 레코드의 호스트 이름을 제공합니다. |
표 31.5. "SRV" 레코드 옵션
옵션 | 설명 | 예제 |
---|---|---|
|
단일 SRV 레코드 또는 SRV 레코드 목록을 전달합니다. 오른쪽 예제에서 _ldap._tcp 는 SRV 레코드의 서비스 유형 및 연결 프로토콜을 정의합니다. srv |
|
| ||
| 레코드의 우선 순위를 설정합니다. 서비스 유형에 대한 SRV 레코드가 여러 개 있을 수 있습니다. 우선 순위 (0 - 65535)는 레코드의 순위를 설정합니다. 숫자가 작을수록 우선 순위가 높습니다. 서비스는 우선 순위가 가장 높은 레코드를 먼저 사용해야 합니다. |
|
| 레코드의 가중치를 설정합니다. 이렇게 하면 동일한 우선 순위의 SRV 레코드 순서를 결정하는 데 도움이 됩니다. 설정 가중치는 특정 레코드가 사용되는 가능성(백분율)을 나타내는 최대 100개까지 추가해야 합니다. |
|
| 대상 호스트에서 서비스에 대한 포트를 제공합니다. |
|
| 대상 호스트의 도메인 이름을 제공합니다. 도메인에서 서비스를 사용할 수 없는 경우 단일 마침표(.)일 수 있습니다. |
추가 리소스
-
ipa dnsrecord-add --help
를 실행합니다.
31.3. Ansible을 사용하여 IdM에 A 및 AAAA DNS 레코드가 있는지 확인
Ansible 플레이북을 사용하여 특정 IdM 호스트의 A 및 AAAA 레코드가 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 IdM 관리자는 idm.example.com DNS 영역에 host1 에 대한 A 및 AAAA 레코드가 있는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- idm.example.com 영역이 존재하며 IdM DNS에 의해 관리됩니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-A-and-AAAA-records-are-present.yml Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp ensure-A-and-AAAA-records-are-present.yml ensure-A-and-AAAA-records-are-present-copy.yml
- 편집을 위해 ensure-A-and-AAAA-records-are-present-copy.yml 파일을 엽니다.
ipadnsrecord
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
zone_name
변수를 idm.example.com 으로 설정합니다. -
records
변수에서name
변수를 host1 로 설정하고a_ip_address
변수를 192.168.122.123 으로 설정합니다. records
변수에서name
변수를 host1 로 설정하고aaaa_ip_address
변수를 ::1 로 설정합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Ensure A and AAAA records are present hosts: ipaserver become: true gather_facts: false tasks: # Ensure A and AAAA records are present - name: Ensure that 'host1' has A and AAAA records. ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: idm.example.com records: - name: host1 a_ip_address: 192.168.122.123 - name: host1 aaaa_ip_address: ::1
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-A-and-AAAA-records-are-present-copy.yml
추가 리소스
- IdM의 DNS 레코드를 참조하십시오.
-
/usr/share/doc/ansible
파일을 참조하십시오.-freeipa/
디렉토리의 README-dns history.md -
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리의 샘플 Ansible 플레이북을 참조하십시오.
31.4. Ansible을 사용하여 IdM에 A 및 PTR DNS 레코드가 있는지 확인
Ansible 플레이북을 사용하여 특정 IdM 호스트의 A 레코드가 해당 PTR 레코드와 함께 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 IdM 관리자는 IP 주소가 192.168.122.45 인 host1 에 대해 idm.example.com 영역에 A 및 PTR 레코드가 있는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- idm.example.com DNS 영역이 존재하며 IdM DNS에서 관리합니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-dnsrecord-with-reverse-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp ensure-dnsrecord-with-reverse-is-present.yml ensure-dnsrecord-with-reverse-is-present-copy.yml
- 편집을 위해 ensure-dnsrecord-with-reverse-is-present-copy.yml 파일을 엽니다.
ipadnsrecord
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name 변수를 host
1 로 설정합니다. -
zone_name
변수를 idm.example.com 으로 설정합니다. -
ip_address
변수를 192.168.122.45 로 설정합니다. create_reverse
변수를 yes 로 설정합니다.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Ensure DNS Record is present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure that dns record is present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" name: host1 zone_name: idm.example.com ip_address: 192.168.122.45 create_reverse: yes state: present
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-dnsrecord-with-reverse-is-present-copy.yml
추가 리소스
- IdM의 DNS 레코드를 참조하십시오.
-
/usr/share/doc/ansible
파일을 참조하십시오.-freeipa/
디렉토리의 README-dns history.md -
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리의 샘플 Ansible 플레이북을 참조하십시오.
31.5. Ansible을 사용하여 IdM에 여러 DNS 레코드가 있는지 확인
Ansible 플레이북을 사용하여 여러 값이 특정 IdM DNS 레코드와 연결되어 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 IdM 관리자는 idm.example.com DNS 영역에 host1 에 대해 여러 A 레코드가 있는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- idm.example.com 영역이 존재하며 IdM DNS에 의해 관리됩니다. IdM DNS에서 기본 DNS 영역 추가에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리에 대한 내용을 참조하십시오.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-presence-multiple-records.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp ensure-presence-multiple-records.yml ensure-presence-multiple-records-copy.yml
- 편집을 위해 ensure-presence-multiple-records-copy.yml 파일을 엽니다.
ipadnsrecord
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
records
섹션에서name
변수를 host1 로 설정합니다. -
records
섹션에서zone_name
변수를 idm.example.com 으로 설정합니다. -
records
섹션에서a_rec
변수를 192.168.122.112로 설정하고 192.168.122. 122 로 설정합니다. records 섹션에 두 번째 레코드
를 정의합니다.-
name 변수를 host
1 로 설정합니다. -
zone_name
변수를 idm.example.com 으로 설정합니다. -
aaaa_rec
변수를 ::1 로 설정합니다.
이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
-
--- - name: Test multiple DNS Records are present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure that multiple dns records are present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" records: - name: host1 zone_name: idm.example.com a_rec: 192.168.122.112 a_rec: 192.168.122.122 - name: host1 zone_name: idm.example.com aaaa_rec: ::1
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-records-copy.yml
추가 리소스
- IdM의 DNS 레코드를 참조하십시오.
-
/usr/share/doc/ansible
파일을 참조하십시오.-freeipa/
디렉토리의 README-dns history.md -
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리의 샘플 Ansible 플레이북을 참조하십시오.
31.6. Ansible을 사용하여 IdM에 여러 CNAME 레코드가 있는지 확인
CNAME 레코드(CNAME 레코드)는 하나의 도메인 이름, 별칭을 다른 이름인 정식 이름에 매핑하는 DNS(Domain Name System)의 리소스 레코드 유형입니다.
CNAME 레코드는 단일 IP 주소에서 여러 서비스를 실행할 때 유용합니다(예: FTP 서비스 및 웹 서비스는 각각 다른 포트에서 실행됨).
Ansible 플레이북을 사용하여 IdM DNS에 여러 CNAME 레코드가 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 host03 은 HTTP 서버와 FTP 서버 둘 다입니다. IdM 관리자는 idm.example.com 영역에 host03 A 레코드에 대한 www 및 ftp CNAME 레코드가 있는지 확인합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- idm.example.com 영역이 존재하며 IdM DNS에 의해 관리됩니다. IdM DNS에서 기본 DNS 영역 추가에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리에 대한 내용을 참조하십시오.
- host03 A 레코드는 idm.example.com 영역에 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-CNAME-record-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.yml
- 편집을 위해 ensure-CNAME-record-is-present-copy.yml 파일을 엽니다.
ipadnsrecord
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
(선택 사항) 플레이
이름에
제공된 설명을 설명합니다. -
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
zone_name
변수를 idm.example.com 으로 설정합니다. records
변수 섹션에서 다음 변수와 값을 설정합니다.-
name
변수를 www 로 설정합니다. -
cname_hostname
변수를 host03 으로 설정합니다. -
name
변수를 ftp 로 설정합니다. -
cname_hostname
변수를 host03 으로 설정합니다.
이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
-
--- - name: Ensure that 'www.idm.example.com' and 'ftp.idm.example.com' CNAME records point to 'host03.idm.example.com'. hosts: ipaserver become: true gather_facts: false tasks: - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: idm.example.com records: - name: www cname_hostname: host03 - name: ftp cname_hostname: host03
-
(선택 사항) 플레이
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-CNAME-record-is-present.yml
추가 리소스
-
/usr/share/doc/ansible
파일을 참조하십시오.-freeipa/
디렉토리의 README-dns history.md -
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리의 샘플 Ansible 플레이북을 참조하십시오.
31.7. Ansible을 사용하여 IdM에 SRV 레코드가 있는지 확인
SRV(DNS 서비스) 레코드는 도메인에서 사용할 수 있는 서비스의 호스트 이름, 포트 번호, 전송 프로토콜, 우선 순위 및 가중치를 정의합니다. IdM(Identity Management)에서는 SRV 레코드를 사용하여 IdM 서버 및 복제본을 찾을 수 있습니다.
Ansible 플레이북을 사용하여 IdM DNS에 SRV 레코드가 있는지 확인하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 IdM 관리자는 값이 10 50 88 idm. example.com인 _kerberos._udp.idm.example.com SRV 레코드가 있는지 확인합니다. 이렇게 하면 다음 값이 설정됩니다.
- 서비스의 우선 순위를 10으로 설정합니다.
- 서비스의 weight를 50으로 설정합니다.
- 서비스에서 사용할 포트를 88으로 설정합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- idm.example.com 영역이 존재하며 IdM DNS에 의해 관리됩니다. IdM DNS에서 기본 DNS 영역을 추가하는 방법에 대한 자세한 내용은 Ansible 플레이북을 사용하여 IdM DNS 영역 관리를 참조하십시오.
절차
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-SRV-record-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp ensure-SRV-record-is-present.yml ensure-SRV-record-is-present-copy.yml
- 편집을 위해 ensure-SRV-record-is-present-copy.yml 파일을 엽니다.
ipadnsrecord
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 _kerberos._udp.idm.example.com 으로 설정합니다. -
srv_rec
변수를 '10 50 88 idm.example.com' 으로 설정합니다. zone_name
변수를 idm.example.com 으로 설정합니다.이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.
--- - name: Test multiple DNS Records are present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure a SRV record is present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" name: _kerberos._udp.idm.example.com srv_rec: ’10 50 88 idm.example.com’ zone_name: idm.example.com state: present
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-SRV-record-is-present.yml
추가 리소스
- IdM의 DNS 레코드를 참조하십시오.
-
/usr/share/doc/ansible
파일을 참조하십시오.-freeipa/
디렉토리의 README-dns history.md -
/usr/share/doc/ansible-freeipa/playbooks/dnsrecord
디렉터리의 샘플 Ansible 플레이북을 참조하십시오.
32장. Ansible을 사용하여 IdM 사용자의 NFS 공유 자동 마운트
자동 마운트는 여러 시스템에서 디렉토리를 관리, 구성 및 액세스하는 방법입니다. 자동 마운트는 요청이 있을 때마다 디렉토리를 자동으로 마운트합니다. IdM(Identity Management) 도메인 내에서는 도메인 내 클라이언트의 디렉터리를 쉽게 공유할 수 있으므로 이 도메인은 잘 작동합니다.
IdM 사용자가 IdM 위치에 IdM 클라이언트에 로그인하기 위해 Ansible을 사용하여 자동으로 마운트되도록 NFS 공유를 구성할 수 있습니다.
이 장의 예제에서는 다음 시나리오를 사용합니다.
- NFS-server.idm.example.com 은 NFS(네트워크 파일 시스템) 서버의 정규화된 도메인 이름(FQDN)입니다.
- nfs-server.idm.example.com 은 raleigh 자동 마운트 위치에 있는 IdM 클라이언트입니다.
- NFS 서버는 /exports/project 디렉터리를 읽기-쓰기로 내보냅니다.
- developers 그룹에 속하는 IdM 사용자는 NFS 서버와 동일한 raleigh 자동 마운트 위치에 있는 IdM 클라이언트의 /devel/project/ 로 내보낸 디렉터리의 콘텐츠에 액세스할 수 있습니다.
- IdM -client.idm.example.com 은 raleigh 자동 마운트 위치에 있는 IdM 클라이언트입니다.
NFS 서버 대신 Samba 서버를 사용하여 IdM 클라이언트의 공유를 제공하려면 IPA 환경의 Autofs로 kerberized CIFS 마운트를 구성하려면 How do the How do I configure kerberized CIFS mount with Autofs in an IPA environment? KCS 솔루션.
장에는 다음 섹션이 포함되어 있습니다.
32.1. IdM의 NetNamespace 및 자동 마운트
Net Namespace
서비스는 자동 마운트
데몬을 통해 액세스 시 디렉토리를 마운트하도록 하여 필요에 따라 디렉터리 마운트를 자동화합니다. 또한, disabled에서는 period of inactivity을 통해 자동
마운트
된 디렉토리를 마운트 해제하도록 mount에 지시합니다. 정적 마운트와 달리 온디맨드 마운트는 시스템 리소스를 절약합니다.
- 자동 마운트 맵
NetNamespace 를 사용하는
시스템에서는
자동 마운트
설정이 여러 다른 파일에 저장됩니다. 기본자동 마운트
설정 파일은 자동 마운트 마운트 지점의 마스터 매핑과 시스템의 관련 리소스가 포함된/etc/auto.master
입니다.이 매핑을 자동 마운트 맵 이라고 합니다.
/etc/auto.master
구성 파일에는 마스터 맵이 포함되어 있습니다. 다른 맵에 대한 참조를 포함할 수 있습니다. 이러한 맵은 직접 또는 간접일 수 있습니다. 직접 맵은 마운트 지점에 절대 경로 이름을 사용하지만 간접 맵은 상대 경로 이름을 사용합니다.- IdM의 자동 마운트 설정
자동 마운트
는 일반적으로 로컬/etc/auto.master
및 관련 파일에서 맵 데이터를 검색하지만 다른 소스에서 맵 데이터를 검색할 수도 있습니다. 일반적인 소스 중 하나는 LDAP 서버입니다. IdM(Identity Management)의 컨텍스트에서는 389 Directory Server입니다.NetNamespace를 사용하는
시스템이
IdM 도메인의 클라이언트이면자동 마운트
구성이 로컬 구성 파일에 저장되지 않습니다. 대신 맵, 위치 및 키와 같은 NetNamespace 구성이 IdM 디렉터리에 LDAP 항목으로 저장됩니다.예를 들어
idm.example.com
IdM 도메인의 경우 기본 마스터 맵 은 다음과 같이 저장됩니다.dn: automountmapname=auto.master,cn=default,cn=automount,dc=idm,dc=example,dc=com objectClass: automountMap objectClass: top automountMapName: auto.master
추가 리소스
32.2. Red Hat Identity Management 도메인에서 Kerberos를 사용하여 NFS 서버 설정
Red Hat IdM(Identity Management)을 사용하는 경우 NFS 서버를 IdM 도메인에 연결할 수 있습니다. 이를 통해 사용자와 그룹을 중앙에서 관리하고 인증, 무결성 보호 및 트래픽 암호화에 Kerberos를 사용할 수 있습니다.
사전 요구 사항
- NFS 서버는 Red Hat IdM(Identity Management) 도메인에 등록되어 있습니다.
- NFS 서버가 실행 중이고 구성되어 있습니다.
절차
IdM 관리자로 kerberos 티켓을 받습니다.
# kinit admin
nfs/<FQDN> 서비스
주체를 생성합니다.# ipa service-add nfs/nfs_server.idm.example.com
IdM에서
nfs
서비스 주체를 검색하여/etc/krb5.keytab
파일에 저장합니다.# ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
선택 사항:
/etc/krb5.keytab
파일에 주체를 표시합니다.# klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
기본적으로 IdM 클라이언트는 호스트를 IdM 도메인에 결합할 때
/etc/krb5.keytab
파일에 호스트 주체를 추가합니다. 호스트 주체가 없는 경우ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_server.idm.example.com -k /etc/krb5.keytab
명령을 사용하여 추가합니다.ipa-client-automount
유틸리티를 사용하여 IdM ID의 매핑을 구성합니다.# ipa-client-automount Searching for IPA server... IPA server: DNS discovery Location: default Continue to configure the system with these values? [no]: yes Configured /etc/idmapd.conf Restarting sssd, waiting for it to become available. Started autofs
/etc/exports
파일을 업데이트하고 Kerberos 보안 방법을 클라이언트 옵션에 추가합니다. 예를 들면 다음과 같습니다./nfs/projects/ 192.0.2.0/24(rw,sec=krb5i)
클라이언트가 여러 보안 방법 중에서 선택할 수 있도록 하려면 해당 방법을 콜론으로 구분하여 지정합니다.
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
내보낸 파일 시스템을 다시 로드합니다.
# exportfs -r
32.3. Ansible을 사용하여 IdM에서 자동 마운트 위치, 맵 및 키 구성
IdM(Identity Management) 시스템 관리자는 IdM에서 자동 마운트 위치 및 맵을 구성하여 지정된 위치의 IdM 사용자가 호스트의 특정 마운트 지점으로 이동하여 NFS 서버에서 내보낸 공유에 액세스할 수 있습니다. 내보낸 NFS 서버 디렉터리와 마운트 지점은 모두 맵에 지정됩니다. LDAP 용어에서 위치는 이러한 맵 항목의 컨테이너입니다.
이 예제에서는 Ansible을 사용하여 raleigh 위치를 구성하는 방법과 IdM 클라이언트의 /devel/project 마운트 지점에 nfs-server.idm.example.com:/exports/project 공유를 읽기-쓰기 디렉터리로 마운트하는 맵을 구성하는 방법을 설명합니다.
사전 요구 사항
-
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
Ansible 제어 노드에서 ~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible
Ansible 플레이북 파일을 복사합니다.-freeipa/playbooks/automount/
디렉터리에 있는mount-location-present.yml$ cp /usr/share/doc/ansible-freeipa/playbooks/automount/automount-location-present.yml automount-location-map-and-key-present.yml
-
편집을
위해 autoscale-location-map-and-key-present.yml
파일을 엽니다. ipaautomountlocation
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_password
변수를 IdM관리자의
암호로 설정합니다. -
name
변수를 raleigh 로 설정합니다. state
변수가present로 설정되어 있는지 확인합니다
.이는 현재 예제에 대한 수정된 Ansible 플레이북 파일입니다.
--- - name: Automount location present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure automount location is present ipaautomountlocation: ipaadmin_password: "{{ ipaadmin_password }}" name: raleigh state: present
-
autoscaling
-location-map-and-key-present.yml
파일을 계속 편집합니다.tasks
섹션에서 자동 마운트 맵이 있는지 확인하는 작업을 추가합니다.[...] vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: [...] - name: ensure map named auto.devel in location raleigh is created ipaautomountmap: ipaadmin_password: "{{ ipaadmin_password }}" name: auto.devel location: raleigh state: present
다른 작업을 추가하여 매핑에 마운트 지점 및 NFS 서버 정보를 추가합니다.
[...] vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: [...] - name: ensure automount key /devel/project is present ipaautomountkey: ipaadmin_password: "{{ ipaadmin_password }}" location: raleigh mapname: auto.devel key: /devel/project info: nfs-server.idm.example.com:/exports/project state: present
auto.devel 이 auto.master 에 연결되어 있는지 확인하는 다른 작업을 추가합니다.
[...] vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: [...] - name: Ensure auto.devel is connected in auto.master: ipaautomountkey: ipaadmin_password: "{{ ipaadmin_password }}" location: raleigh mapname: auto.map key: /devel info: auto.devel state: present
- 파일을 저장합니다.
Ansible 플레이북을 실행하고 플레이북 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory automount-location-map-and-key-present.yml
32.4. Ansible을 사용하여 NFS 공유를 소유하는 그룹에 IdM 사용자 추가
IdM(Identity Management) 시스템 관리자는 Ansible을 사용하여 NFS 공유에 액세스할 수 있는 사용자 그룹을 생성하고 이 그룹에 IdM 사용자를 추가할 수 있습니다.
이 예제에서는 Ansible 플레이북을 사용하여 idm_user 계정이 developers 그룹에 속하도록 하는 방법을 설명하므로 idm_user 는 /exports/project NFS 공유에 액세스할 수 있습니다.
사전 요구 사항
-
nfs-server.idm.example.com NFS 서버에 대한
루트
액세스 권한이 있습니다. 이 서버는 raleigh 자동 마운트 위치에 있는 IdM 클라이언트입니다. -
IdM
관리자
암호를 알고 있습니다. 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.-
~/MyPlaybooks/
.에서 Ansible을 사용하여 자동 마운트 위치 구성, 맵 및 키 구성의 작업이 이미 포함된mount-location-map-and -key-present.yml
파일을 생성했습니다.
-
~/MyPlaybooks/
절차
Ansible 제어 노드에서 ~/MyPlaybooks/ 디렉터리로 이동합니다.
$ cd ~/MyPlaybooks/
-
편집을
위해 autoscale-location-map-and-key-present.yml
파일을 엽니다. tasks
섹션에서 IdM 개발자 그룹이 존재하고 idm_user 가 이 그룹에 추가되었는지 확인하는 작업을 추가합니다.[...] vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: [...] - ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: developers user: - idm_user state: present
- 파일을 저장합니다.
Ansible 플레이북을 실행하고 플레이북 및 인벤토리 파일을 지정합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory automount-location-map-and-key-present.yml
NFS 서버에서 /exports/project 디렉터리의 그룹 소유권을 developers 로 변경하여 그룹의 모든 IdM 사용자가 디렉터리에 액세스할 수 있도록 합니다.
# chgrp developers /exports/project
32.5. IdM 클라이언트에서 자동 마운트 구성
IdM(Identity Management) 시스템 관리자는 사용자가 클라이언트에 로그인할 때 클라이언트가 추가된 위치에 NFS 공유에 액세스할 수 있도록 IdM 클라이언트의 자동 자동 마운트 서비스를 구성할 수 있습니다. 이 예제에서는 raleigh 위치에서 사용할 수 있는 자동 마운트 서비스를 사용하도록 IdM 클라이언트를 구성하는 방법을 설명합니다.
사전 요구 사항
-
IdM 클라이언트에 대한
루트
액세스 권한이 있습니다. - IdM 관리자로 로그인했습니다.
- 자동 마운트 위치가 있습니다. 예를 들어 location은 raleigh 입니다.
절차
IdM 클라이언트에서
ipa-client-automount
명령을 입력하고 위치를 지정합니다.-U
옵션을 사용하여 축소 스크립트를 실행합니다.# ipa-client-automount --location raleigh -U
NetNamespace 서비스를 중지하고 SSSD 캐시를 지우고 NetNamespace 서비스를 시작하여 새 구성 설정을 로드합니다.
# systemctl stop autofs ; sss_cache -E ; systemctl start autofs
32.6. IdM 사용자가 IdM 클라이언트의 NFS 공유에 액세스할 수 있는지 확인
IdM(Identity Management) 시스템 관리자는 특정 그룹의 멤버인 IdM 사용자가 특정 IdM 클라이언트에 로그인할 때 NFS 공유에 액세스할 수 있는지 테스트할 수 있습니다.
이 예제에서는 다음 시나리오를 테스트합니다.
- developers 그룹에 속하는 idm_user 라는 IdM 사용자는 /devel/project 디렉터리에 있는 idm-client.idm.example.com 에 자동 마운트된 파일의 내용을 읽고 쓸 수 있습니다.
사전 요구 사항
- IdM 호스트에 Kerberos가 있는 NFS 서버를 설정했습니다.
- IdM 사용자가 NFS 공유에 액세스할 수 있는 방법을 구성한 IdM에 자동 마운트 위치, 맵, 마운트 지점을 구성했습니다.
- Ansible을 사용하여 NFS 공유를 보유한 developers 그룹에 IdM 사용자를 추가했습니다.
- IdM 클라이언트에 자동 마운트를 구성했습니다.
절차
IdM 사용자가
읽기-쓰기
디렉터리에 액세스할 수 있는지 확인합니다.IdM 사용자로 IdM 클라이언트에 연결합니다.
$ ssh idm_user@idm-client.idm.example.com Password:
IdM 사용자의 티켓 통합 티켓 (TGT)을 받으십시오.
$ kinit idm_user
[선택 사항] IdM 사용자의 그룹 멤버십을 확인합니다.
$ ipa user-show idm_user User login: idm_user [...] Member of groups: developers, ipausers
/devel/project 디렉터리로 이동합니다.
$ cd /devel/project
디렉터리 콘텐츠를 나열합니다.
$ ls rw_file
디렉터리의 파일에 행을 추가하여
쓰기
권한을 테스트합니다.$ echo "idm_user can write into the file" > rw_file
[선택 사항] 파일의 업데이트된 콘텐츠를 봅니다.
$ cat rw_file this is a read-write file idm_user can write into the file
출력에서 idm_user 가 파일에 쓸 수 있는지 확인합니다.
33장. Ansible을 사용하여 IdM을 NIS 도메인 및 넷그룹과 통합
33.1. NIS 및 그 혜택
UNIX 환경에서 NIS(네트워크 정보 서비스)는 ID 및 인증을 중앙에서 관리하는 일반적인 방법입니다. 원래 YP( Yellow Pages )라고 하는 NIS는 다음과 같은 인증 및 ID 정보를 중앙에서 관리합니다.
- 사용자 및 암호
- 호스트 이름 및 IP 주소
- POSIX 그룹
최신 네트워크 인프라의 경우 NIS는 예를 들어 호스트 인증을 제공하지 않으며 네트워크를 통해 암호화된 데이터가 아니므로 너무 안전하지 않은 것으로 간주됩니다. 문제를 해결하기 위해 NIS는 종종 보안을 강화하기 위해 다른 프로토콜과 통합되어 있습니다.
IdM(Identity Management)을 사용하는 경우 NIS 서버 플러그인을 사용하여 IdM으로 완전히 마이그레이션할 수 없는 클라이언트를 연결할 수 있습니다. IdM은 넷 그룹 및 기타 NIS 데이터를 IdM 도메인에 통합합니다. 또한 사용자 및 호스트 ID를 NIS 도메인에서 IdM으로 쉽게 마이그레이션할 수 있습니다.
넷그룹은 NIS 그룹이 예상되는 모든 곳에서 사용할 수 있습니다.
33.2. IdM의 NIS
IdM의 NIS 오브젝트
NIS 객체는 RFC 2307 을 준수하여 Directory Server 백엔드에 통합 및 저장됩니다. IdM은 LDAP 디렉터리에 NIS 오브젝트를 생성하고 클라이언트는 암호화된 LDAP 연결을 사용하여 SSSD(System Security Services Daemon) 또는 nss_ldap
와 같이 이를 검색합니다.
IdM은 네트워크 그룹, 계정, 그룹, 호스트 및 기타 데이터를 관리합니다. IdM은 NIS 리스너를 사용하여 암호, 그룹 및 넷그룹을 IdM 항목에 매핑합니다.
IdM의 NIS 플러그인
NIS 지원의 경우 IdM은 slapi-nis 패키지에 제공된 다음 플러그인을 사용합니다.
- NIS 서버 플러그인
- NIS 서버 플러그인을 사용하면 IdM 통합 LDAP 서버가 클라이언트의 NIS 서버로 작동할 수 있습니다. 이 역할에서 Directory Server는 구성에 따라 NIS 맵을 동적으로 생성하고 업데이트합니다. IdM은 플러그인을 사용하여 NIS 프로토콜을 NIS 서버로 사용하는 클라이언트에 서비스를 제공합니다.
- 스키마 호환성 플러그인
스키마 호환성 플러그인을 사용하면 Directory Server 백엔드를 통해 디렉터리 정보 트리(DIT)의 부분에 저장된 항목을 대체적으로 볼 수 있습니다. 여기에는 특성 값 추가, 삭제 또는 이름 변경 및 선택적으로 트리의 여러 항목에서 속성에 대한 값을 검색하는 작업이 포함됩니다.
자세한 내용은
/usr/share/doc/slapi-nis-version/sch-getting-started.txt
파일을 참조하십시오.
33.3. IdM의 NIS netgroups
NIS 엔티티는 netgroups에 저장할 수 있습니다. UNIX 그룹과 비교하여 netgroups는 다음을 지원합니다.
- 중첩 그룹(그룹은 다른 그룹의 멤버임).
- 호스트 그룹화.
netgroup은 host, user, domain 등 정보 세트를 정의합니다. 이 세트를 중점이라고 합니다. 다음 세 개의 필드는 포함할 수 있습니다.
- 값.
-
"유효한 값"을 지정하는 대시(
-
) - 값이 없습니다. 빈 필드는 와일드카드를 지정합니다.
(host.example.com,,nisdomain.example.com) (-,user,nisdomain.example.com)
클라이언트가 NIS netgroup을 요청하면 IdM이 LDAP 항목을 변환합니다.
- 기존 NIS 맵으로 NIS 플러그인을 사용하여 NIS 프로토콜을 통해 클라이언트에 보냅니다.
- RFC 2307 또는 RFC 2307bis와 호환되는 LDAP 형식입니다.
33.4. Ansible을 사용하여 netgroup이 있는지 확인
Ansible 플레이북을 사용하여 IdM netgroup이 있는지 확인할 수 있습니다. 이 예제에서는 TestNetgroup1 그룹이 있는지 확인하는 방법을 설명합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 netgroup-present.yml 을 생성합니다.
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-present.yml
추가 리소스
- IdM의 NIS
-
/usr/share/doc/ansible-freeipa/README-netgroup.md
-
/usr/share/doc/ansible-freeipa/playbooks/netgroup
33.5. Ansible을 사용하여 멤버가 netgroup에 있는지 확인
Ansible 플레이북을 사용하여 IdM 사용자, 그룹 및 netgroup이 netgroup의 멤버인지 확인할 수 있습니다. 이 예제에서는 TestNetgroup1 그룹에 다음 멤버가 있는지 확인하는 방법을 설명합니다.
- user1 및 user2 IdM 사용자
- group1 IdM 그룹
- admins netgroup
- IdM 클라이언트인 idmclient1 호스트
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
- TestNetgroup1 IdM netgroup이 있습니다.
- user1 및 user2 IdM 사용자가 있습니다.
- group1 IdM 그룹이 있습니다.
- admins IdM netgroup이 있습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 IdM-members-present-in-a-netgroup.yml 을 생성합니다.
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: user1,user2 group: group1 host: idmclient1 netgroup: admins action: member
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-members-present-in-a-netgroup.yml
추가 리소스
- IdM의 NIS
-
/usr/share/doc/ansible-freeipa/README-netgroup.md
-
/usr/share/doc/ansible-freeipa/playbooks/netgroup
33.6. Ansible을 사용하여 netgroup에서 멤버가 없는지 확인
Ansible 플레이북을 사용하여 IdM 사용자가 netgroup의 멤버인지 확인할 수 있습니다. 이 예제에서는 TestNetgroup1 그룹에 멤버 중 user1 IdM 사용자가 없는지 확인하는 방법을 설명합니다. netgroup
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
- TestNetgroup1 netgroup이 있습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 IdM-member-absent-from-a-netgroup.yml 을 생성합니다.
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup user, "user1", is absent ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: "user1" action: member state: absent
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-member-absent-from-a-netgroup.yml
추가 리소스
- IdM의 NIS
-
/usr/share/doc/ansible-freeipa/README-netgroup.md
-
/usr/share/doc/ansible-freeipa/playbooks/netgroup
33.7. Ansible을 사용하여 netgroup이 없는지 확인
Ansible 플레이북을 사용하여 netgroup이 IdM(Identity Management)에 없는지 확인할 수 있습니다. 이 예제에서는 TestNetgroup1 그룹이 IdM 도메인에 없는지 확인하는 방법을 설명합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 netgroup-absent.yml 을 생성합니다.
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup my_netgroup1 is absent ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: my_netgroup1 state: absent
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-absent.yml
추가 리소스
- IdM의 NIS
-
/usr/share/doc/ansible-freeipa/README-netgroup.md
-
/usr/share/doc/ansible-freeipa/playbooks/netgroup
34장. Ansible을 사용하여 IdM에서 HBAC 및 sudo 규칙 구성
IdM(Identity Management)에서 HBAC(Host-based Access Control)를 사용하여 다음을 기반으로 호스트 또는 서비스에 대한 액세스를 제한하는 정책을 정의할 수 있습니다.
- 로그인하려는 사용자 및 이 사용자의 그룹
- 사용자가 액세스하려고 하는 호스트 및 해당 호스트가 속하는 호스트 그룹
- 호스트에 액세스하는 데 사용되는 서비스
sudo
를 사용하여 사용자는 다른 권한이 있는 다른 사용자로 프로그램을 실행할 수 있습니다(예: root
권한). IdM에서는 sudo 규칙을 중앙에서 관리할 수 있습니다. 사용자 그룹, 호스트 그룹 및 명령 그룹과 개별 사용자, 호스트 및 명령을 기반으로 sudo
규칙을 정의할 수 있습니다.
IdM 사용자에 대해 다음 HBAC 및 sudo
규칙이 있는지 확인하려면 다음 절차를 완료합니다.
- Jane 은 호스트 client01.idm.example.com 에만 액세스할 수 있습니다.
- 존은 호스트 client02.idm.example.com 에만 액세스할 수 있습니다.
-
기본
admin
사용자와 일반 alice 사용자를 포함하는admins
그룹의 멤버는 IdM 호스트에 액세스할 수 있습니다. admins
그룹의 멤버는 IdM 호스트에서 다음 명령을 사용하여sudo
를 실행할 수 있습니다.-
/usr/sbin/reboot
-
/usr/bin/less
-
/usr/sbin/setenforce
-
다음 다이어그램은 위에서 설명한 원하는 구성을 나타냅니다.
그림 34.1. IdM HBAC 및 SUDO 규칙 다이어그램
사전 요구 사항
제어 노드에서 다음을 수행합니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
ansible-freeipa
패키지가 설치되어 있습니다. - ~/MyPlaybook/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password
를 secret.yml Ansible 자격 증명에 저장했습니다.
- 사용자 jane,john 및 alice 는 IdM에 있습니다. 이러한 계정에 대해 암호가 구성됩니다.
절차
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 add-hbac-and-sudo-rules-to-idm.yml 을 생성합니다.
--- - name: Playbook to manage IPA HBAC and SUDO rules hosts: ipaserver become: false gather_facts: false vars_files: - /home/<user_name>/MyPlaybooks/secret.yml module_defaults: ipahbacrule: ipaadmin_password: "{{ ipaadmin_password }}" ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" ipasudocmdgroup: ipaadmin_password: "{{ ipaadmin_password }}" ipasudorule: ipaadmin_password: "{{ ipaadmin_password }}" tasks: - name: HBAC Rule for Jane - can log in to client01 ipahbacrule: # Creates the rule name: Jane_rule hbacsvc: - sshd - login host: # Host name - client01.idm.example.com user: - jane - name: HBAC Rule for John - can log in to client02 ipahbacrule: # Creates the rule name: john_rule hbacsvc: - sshd - login host: # Host name - client02.idm.example.com user: - john - name: Add user member alice to group admins ipagroup: name: admins action: member user: - alice - name: HBAC Rule for IdM administrators ipahbacrule: # Rule to allow admins full access name: admin_access # Rule name servicecat: all # All services hostcat: all # All hosts group: # User group - admins - name: Add reboot command to SUDO ipasudocmd: name: /usr/sbin/reboot state: present - name: Add less command to SUDO ipasudocmd: name: /usr/bin/less state: present - name: Add setenforce command to SUDO ipasudocmd: name: /usr/sbin/setenforce state: present - name: Create a SUDO command group ipasudocmdgroup: name: cmd_grp_1 description: "Group of important commands" sudocmd: - /usr/sbin/setenforce - /usr/bin/less - /usr/sbin/reboot action: sudocmdgroup state: present - name: Create a SUDO rule with a SUDO command group ipasudorule: name: sudo_rule_1 allow_sudocmdgroup: - cmd_grp_1 group: admins state: present - name: Disable allow_all HBAC Rule ipahbacrule: # Rule to allow admins full access name: allow_all # Rule name state: disabled # Disables rule to allow everyone the ability to login
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -i inventory add-hbac-and-sudo-rules-to-idm.yml
검증
jane 사용자로 client01에 연결합니다.
~]$ ssh jane@client01 Password: Last login: Fri Aug 11 15:32:18 2023 from 192.168.122.1 [jane@client01 ~]$
jane이 client01에 로그인했는지 확인합니다.
jane 사용자로 client02에 연결을 시도합니다.
~]$ ssh jane@client02 Password: Connection closed by 192.168.122.47 port 22
jane이 client02에 로그인할 수 없는지 확인합니다.
alice 사용자로 client02에 연결합니다.
~]$ ssh alice@client02 Password: Last login: Fri Aug 10 16:13:43 2023 from 192.168.122.1
출력에서 alice가 client02에 로그인했는지 확인합니다.
슈퍼유저 권한을 호출하지 않고
less
를 사용하여/etc/sssd/sssd.conf
파일의 내용을 봅니다.[alice@client02 ~]$ less /etc/sssd/sssd.conf /etc/sssd/sssd.conf: Permission denied
root
인 파일의 소유자를 제외한 모든 사람이 파일을 읽을 수 없으므로 시도에 실패합니다.root
권한을 호출하여less
를 사용하여/etc/sssd/sssd.conf
파일의 내용을 봅니다.[alice@client02 ~]$ sudo less /etc/sssd/sssd.conf [sudo] password for alice: [domain/idm.example.com] id_provider = ipa ipa_server_mode = True [...]
출력은 alice가
/etc/sssd/sssd.conf
파일에서less
명령을 실행할 수 있는지 확인합니다.
35장. RHEL 시스템 역할을 사용하여 Ansible과 직접 AD에 RHEL 시스템 통합
ad_integration
시스템 역할을 사용하면 Red Hat Ansible Automation Platform을 사용하여 RHEL 시스템을 AD(Active Directory)와 직접 통합할 수 있습니다.
ad_integration
시스템 역할은 ansible-freeipa
패키지에 포함되어 있지 않습니다. rhel-system-roles
패키지의 일부입니다. Red Hat Enterprise Linux Server
서브스크립션이 연결된 시스템에 rhel-system-roles
를 설치할 수 있습니다.
35.1. ad_integration
시스템 역할
ad_integration
시스템 역할을 사용하여 RHEL 시스템을 AD(Active Directory)에 직접 연결할 수 있습니다.
역할은 다음 구성 요소를 사용합니다.
- 중앙 ID 및 인증 소스와 상호 작용하는 SSSD
-
사용 가능한 AD 도메인을 감지하고 기본 RHEL 시스템 서비스(이 경우 SSSD)를 구성하여 선택한 AD 도메인에 연결합니다.
ad_integration
역할은 IdM(Identity Management) 환경 없이 직접 AD 통합을 사용하는 배포용입니다. IdM 환경의 경우 ansible-freeipa
역할을 사용합니다.
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.ad_integration/README.md
파일 -
/usr/share/doc/rhel-system-roles/ad_integration/
directory - SSSD를 사용하여 RHEL 시스템을 AD에 직접 연결
35.2. ad_integration
RHEL 시스템 역할의 변수
ad_integration
RHEL 시스템 역할은 다음 매개변수를 사용합니다.
역할 변수 | 설명 |
---|---|
ad_integration_realm | 연결할 Active Directory 영역 또는 도메인 이름입니다. |
ad_integration_password | 시스템을 영역에 결합할 때 인증하는 데 사용되는 사용자의 암호입니다. 일반 텍스트를 사용하지 마십시오. 대신 Ansible Vault를 사용하여 값을 암호화합니다. |
ad_integration_manage_crypto_policies |
기본값: |
ad_integration_allow_rc4_crypto |
이 변수를 제공하면
기본값: |
ad_integration_timesync_source |
시스템 클록을 동기화할 시간 소스의 호스트 이름 또는 IP 주소입니다. 이 변수를 제공하면 |
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.ad_integration/README.md
파일 -
/usr/share/doc/rhel-system-roles/ad_integration/
directory
35.3. ad_integration
시스템 역할을 사용하여 RHEL 시스템을 AD에 직접 연결
ad_integration
시스템 역할을 사용하여 Ansible 플레이북을 실행하여 RHEL 시스템과 AD 도메인 간의 직접 통합을 구성할 수 있습니다.
RHEL8부터 RHEL은 기본적으로 RC4 암호화를 더 이상 지원하지 않습니다. AD 도메인에서 AES를 활성화할 수 없는 경우 AD-SUPPORT
암호화 정책을 활성화하고 플레이북에서 RC4 암호화를 허용해야 합니다.
RHEL 서버와 AD 사이의 시간은 동기화되어야 합니다. 플레이북에서 timesync
시스템 역할을 사용하여 이를 확인할 수 있습니다.
이 예에서 RHEL 시스템은 AD Administrator
사용자 및 Ansible 자격 증명 모음에 저장된 이 사용자의 암호를 사용하여 domain.example.com
AD 도메인을 결합합니다. 이 플레이북은 AD-SUPPORT
암호화 정책도 설정하고 RC4 암호화를 허용합니다. RHEL 시스템과 AD 간의 시간 동기화를 보장하기 위해 플레이북은 adserver.domain.example.com
서버를 timesync
소스로 설정합니다.
사전 요구 사항
- 컨트롤 노드 및 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는
sudo
권한이 있습니다. AD 도메인 컨트롤러의 다음 포트는 RHEL 서버에서 열려 있고 액세스할 수 있습니다.
표 35.1.
ad_integration
시스템 역할을 사용하여 Linux 시스템을 AD로 직접 통합하는 데 필요한 포트소스 포트 대상 포트 프로토콜 Service 1024:65535
53
UDP 및 TCP
DNS
1024:65535
389
UDP 및 TCP
LDAP
1024:65535
636
TCP
LDAPS
1024:65535
88
UDP 및 TCP
Kerberos
1024:65535
464
UDP 및 TCP
Kerberos 변경/설정 암호(
kadmin
)1024:65535
3268
TCP
LDAP 글로벌 카탈로그
1024:65535
3269
TCP
LDAP 글로벌 카탈로그 SSL/TLS
1024:65535
123
UDP
NTP/Chrony(선택 사항)
1024:65535
323
UDP
NTP/Chrony(선택 사항)
절차
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml
)을 생성합니다.--- - name: Configure a direct integration between a RHEL system and an AD domain hosts: managed-node-01.example.com roles: - rhel-system-roles.ad_integration vars: ad_integration_realm: "domain.example.com" ad_integration_password: !vault | vault encrypted password ad_integration_manage_crypto_policies: true ad_integration_allow_rc4_crypto: true ad_integration_timesync_source: "adserver.domain.example.com"
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml
이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
플레이북을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
관리자와
같은 AD 사용자 세부 정보를 표시합니다.$ getent passwd administrator@ad.example.com administrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bash
추가 리소스
-
/usr/share/ansible/roles/rhel-system-roles.ad_integration/README.md
파일 -
/usr/share/doc/rhel-system-roles/ad_integration/
directory