3장. 관리형 노드 설정
Ansible Automation Platform은 자동화 작업을 실행하기 위해 관리하는 장치에 원격으로 연결하는 데 의존하는 에이전트 없는 기술입니다.
이 장에서는 Ansible Automation Platform과 관리형 노드 간의 원격 연결을 포함하여 Ansible Automation Platform에서 자동화된 관리 노드의 보안 상태를 개선하는 방법에 대한 권장 사항을 제공합니다.
관리 노드 구성은 운영 체제, 규정 준수 프로필, 구성 및 조직 정책과 같은 요인에 따라 크게 다를 수 있습니다.
여기에 제공된 관리형 노드 구성에 대한 권장 사항은 구현 전에 철저히 테스트 및 검토하여 조직 정책 및 요구 사항을 충족해야 합니다.
3.1. Red Hat Enterprise Linux 관리 노드 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에서는 RHEL( Red Hat Enterprise Linux ) 관리 노드에 대한 지침을 제공하지만 다른 Linux 배포에도 해당할 수 있습니다.
RHEL 관리형 노드의 수동 구성에 대한 예는 다음과 같습니다. 이러한 단계는 Ansible Automation Platform을 사용하여 자동화하거나 Red Hat Insights 이미지 빌더와 같은 툴을 사용하여 생성된 SOE( 표준 운영 환경 ) 또는 "golden 이미지"에 추가할 수 있습니다.
3.1.1. 액세스 제한이 있는 전용 서비스 계정 생성 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform은 다양한 사용자 또는 계정을 사용하여 관리형 노드에 연결하도록 구성할 수 있습니다.
이 가이드에서는 이러한 목적으로 단일 전용 서비스 계정을 생성하는 것이 좋습니다. 외부 인증 메커니즘에 중단된 경우에도 자동화 작업이 계속 실행되도록 각 관리 노드의 로컬 계정이어야 합니다. 이 권장 사항은 조직 정책이 중앙에서 관리되는 서비스 계정을 요구하지 않는 한 적용됩니다. 서비스 계정의 이름이 명확하게 지정되어야 합니다(예: ansible
또는 aapsvc
).
이 섹션의 나머지 부분에서는 예제에서 로컬 서비스 계정에 대한 가정된 이름으로 "ansible"을 사용합니다.
로컬 서비스 계정은 다음과 같은 방식으로 구성됩니다.
- 필요한 자동화 작업을 실행하기에 충분한 권한이 부여됩니다.
- SSH 키 인증으로만 제한됩니다. 암호 인증이 허용되지 않습니다.
액세스 권한은 Ansible Automation Platform {ControllerNames}s 및 실행 노드에서 만든 연결에만 부여됩니다.
참고서비스 계정이 아닌 사용자로 Ansible 플레이북 또는 작업 템플릿에서 작업을 실행하려면
become
및become_user
키워드를 사용합니다. 다른 사용자로 관리형 노드에 연결하는 것은 필요하지 않습니다.-
useradd
명령을 사용하여 로컬 서비스 계정을 생성할 수 있습니다. 예를 들면 다음과 같습니다.
sudo useradd ansible \ --system --create-home \ --comment "Ansible Automation Platform service account"
sudo useradd ansible \
--system --create-home \
--comment "Ansible Automation Platform service account"
3.1.1.1. 서비스 계정에 대한 sudo 권한 구성 링크 복사링크가 클립보드에 복사되었습니다!
서비스 계정에는 관리 노드에서 현재 또는 향후 자동화 작업을 실행하기에 충분한 권한이 필요합니다. 이 섹션에서는 다른 권한 에스컬레이션 방법을 사용할 수 있지만 sudo
사용에 대해 설명합니다.
Ansible Automation Platform은 기본적으로 ansible.builtin.sudo
를 사용하여 Linux 기반 관리 노드에서 플러그인 을 사용하므로 sudo 명령을 사용하여 RHEL 관리 노드에서 모든 명령을 실행할 수 있어야 합니다.
이를 구성하려면 다음 절차를 사용하십시오.
프로세스
/etc/sudoers.d/ansible
파일을 생성하고 다음 콘텐츠를 포함합니다.Rules for the ansible service account
# Rules for the ansible service account ansible ALL=(ALL) NOPASSWD: ALL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파일에 제한적인 권한을 설정합니다.
sudo chmod 600 /etc/sudoers.d/ansible`
파일에서 적절한 구문을 사용하는지 확인합니다.
sudo visudo -cf /etc/sudoers.d/ansible
3.1.1.2. 서비스 계정에 대한 SSH 키 인증 필요 링크 복사링크가 클립보드에 복사되었습니다!
서비스 계정은 관리 노드에 대한 SSH 연결에서 암호 인증을 사용하도록 허용해서는 안 됩니다.
다음 절차에 따라 SSH 데몬을 구성합니다.
프로세스
/etc/sshd/sshd_config.d/60-ansible.conf
파일을 생성하고 다음 내용을 포함합니다.sshd config applied to the ansible service account
# sshd config applied to the ansible service account Match User ansible PasswordAuthentication no Match all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파일에서 적절한 구문을 사용하는지 확인합니다.
sudo sshd -t
SSH 데몬 다시 시작
sudo systemctl restart sshd.service
암호 인증이 금지되면 하나 이상의 SSH 공개 키를 서비스 계정의 authorized_keys 파일(일반적으로 /home/ansible/.ssh/authorized_keys
)에 추가해야 합니다.
이러한 공개 키는 Ansible Automation Platform에서 머신 인증 정보를 설정하는 데 사용되는 개인 키와 일치해야 합니다. 이러한 인증 정보는 RHEL 관리 노드에 쉽게 연결할 수 있기 때문입니다.
이 가이드에서는 관리형 RHEL 노드 연결에 대한 단일 서비스 계정에 대한 호의를 제기하지만 모든 노드에서 단일 SSH 키를 사용해야 하는 것은 아닙니다. 대규모 조직에서 RHEL 서버를 관리하는 개별 팀은 Ansible Automation Platform 내에서 자체 머신 인증 정보를 생성할 수 있습니다. 그런 다음 팀은 해당 키를 특정 RHEL 서버의 인증된 키 파일에 추가할 수 있습니다. 이 방법을 사용하면 공통 서비스 계정을 사용하여 조직 전체에서 관리 노드에 대한 일관된 액세스를 보장하고 각 팀이 할당된 노드의 인증 정보를 독립적으로 관리할 수 있습니다.
3.1.1.3. 서비스 계정에 대한 pam_access 제어 활성화 및 구성 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 자동화 컨트롤러 및 실행 노드에서 시작된 연결에 대한 원격 로그인 액세스를 제한하고 Ansible Automation Platform에서 서비스 계정을 독점적으로 사용하려면 다음 절차를 사용하십시오.
프로세스
자동화 컨트롤러 및 실행 노드의 FQDN을 사용하여 컨트롤러 노드 및 실행 노드의 FQDN을 사용하여
/etc/security/access.conf
파일에 다음 콘텐츠를 추가합니다.allow the ansible service account to log in from local sources and the hybrid controller or execution nodes, and deny all other sources
# allow the ansible service account to log in from local sources and # the hybrid controller or execution nodes, and deny all other sources +:ansible:LOCAL controller1.example.com controller2.example.com en1.example.com -:ansible:ALL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 현재 authselect 프로필에서
with-pamaccess
기능을 활성화합니다. RHEL에 기본적으로 포함된 모든 authselect 프로필에는 이 기능이 있습니다.sudo authselect enable-feature with-pamaccess
3.1.2. 컴플라이언스 프로필 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
대부분의 환경에서는 Ansible Automation Platform을 사용하여 관리형 RHEL 노드에 보안 제어가 적용된 시스템을 관리하여 CIS, PCI/DSS, DISA STIG 등의 규정 준수 프로필의 요구 사항을 충족할 수 있습니다. 다음 섹션에서는 이러한 환경에서 RHEL 노드를 올바르게 관리하기 위해 Ansible Automation Platform에 맞게 수정해야 하는 특정 보안 제어 세트에 대해 자세히 설명합니다.
3.1.2.1. 관리형 RHEL 노드의 fapolicyd 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 작업이 RHEL 관리 노드에 대해 실행되면 Python 코드를 관리 노드에 복사한 다음 로컬로 실행하여 대부분의 작업이 실행됩니다. RHEL과 함께 제공되는 기본 규칙 세트가 이 Python 코드가 실행되지 않기 때문에 관리 노드에서 fapolicyd
서비스가 활성화된 경우 작업이 실패합니다.
이 문제가 발생하지 않도록 하려면 다음 방법 중 하나를 사용합니다.
- 옵션 1: fapolicyd 서비스를 허용 모드로 설정
- 옵션 2: 사용자 정의 fapolicyd 규칙 생성
3.1.2.2. 옵션 1: fapolicyd 서비스를 허용 모드로 설정 링크 복사링크가 클립보드에 복사되었습니다!
fapolicyd 서비스는 "허용" 모드로 설정할 수 있습니다. 즉, fapolicyd 규칙 위반만 기록합니다.
fapolicyd에 대한 허용 모드를 구성하려면 다음 절차를 사용하십시오.
프로세스
-
/etc/fapolicyd/fapolicyd.conf
파일을 편집하고 "permissive = 1"을 설정합니다. -
systemctl restart fapolicyd.service
를 실행하여fapolicy
서비스를 다시 시작합니다.
이 구성이 필요한 규정 준수 프로필 또는 로컬 정책을 충족하지 않을 수 있는 환경에서는 보안 감사자와 관련 보안 제어를 포기하는 방법에 대해 논의합니다.
3.1.2.3. 옵션 2: 사용자 정의 fapolicyd 규칙 생성 링크 복사링크가 클립보드에 복사되었습니다!
fapolicyd
서비스가 규칙을 적용해야 하는 경우 Ansible Automation Platform에서 Python 코드를 실행할 수 있도록 사용자 지정 규칙 세트를 작성하는 것이 좋습니다.
다음 예제 절차에서는 "ansible" 서비스 계정을 신뢰할 수 있는 엔터티로 처리하고 로컬 Ansible 임시 디렉터리(기본값: $HOME/.ansible/tmp
)에서 콘텐츠를 실행할 수 있습니다.
프로세스
다음 콘텐츠를 사용하여
/etc/fapolicy/rules.d/50-ansible.rules
파일을 생성합니다.허용 perm=any uid=ansible trust=1 : dir=/home/ansible/.ansible/tmp/
fapolicyd 서비스를 다시 시작합니다.
sudo systemctl restart fapolicyd.service
이 예제 규칙은 관리형 RHEL 노드에 존재하는 기타 fapolicyd
규칙에서 작동하도록 수정해야 하며 프로덕션에 적용하기 전에 보안 감사자가 철저히 테스트하고 승인해야 합니다.