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.13 이상을 사용하고 있습니다.
-
ansible-freeipa패키지가 설치되어 있습니다. - ~/MyPlaybooks/ 디렉터리에 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했습니다.
-
ipaadmin_password를 secret.yml Ansible vault에 저장했습니다.
- 사용자 jane,john 및 alice 는 IdM에 있습니다. 이러한 계정에 대해 암호가 구성됩니다.
프로세스
다음 콘텐츠를 사용하여 Ansible 플레이북 파일 add-hbac-and-sudo-rules-to-idm.yml 을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook을 실행합니다.
ansible-playbook --vault-password-file=password_file -i inventory add-hbac-and-sudo-rules-to-idm.yml
$ ansible-playbook --vault-password-file=password_file -i inventory add-hbac-and-sudo-rules-to-idm.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
jane 사용자로 client01에 연결합니다.
ssh jane@client01
~]$ ssh jane@client01 Password: Last login: Fri Aug 11 15:32:18 2023 from 192.168.122.1 [jane@client01 ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow jane이 client01에 로그인했는지 확인합니다.
jane 사용자로 client02에 연결을 시도합니다.
ssh jane@client02
~]$ ssh jane@client02 Password: Connection closed by 192.168.122.47 port 22Copy to Clipboard Copied! Toggle word wrap Toggle overflow jane이 client02에 로그인할 수 없는지 확인합니다.
alice 사용자로 client02에 연결합니다.
ssh alice@client02
~]$ ssh alice@client02 Password: Last login: Fri Aug 10 16:13:43 2023 from 192.168.122.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에서 alice가 client02에 로그인했는지 확인합니다.
슈퍼유저 권한을 호출하지 않고
less를 사용하여/etc/sssd/sssd.conf파일의 내용을 봅니다.less /etc/sssd/sssd.conf
[alice@client02 ~]$ less /etc/sssd/sssd.conf /etc/sssd/sssd.conf: Permission deniedCopy to Clipboard Copied! Toggle word wrap Toggle overflow root인 파일의 소유자를 제외한 모든 사람이 파일을 읽을 수 없으므로 시도에 실패합니다.root권한을 호출하여less를 사용하여/etc/sssd/sssd.conf파일의 내용을 봅니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력은 alice가
/etc/sssd/sssd.conf파일에서less명령을 실행할 수 있는지 확인합니다.