2.2. 설치
Ansible Automation Platform의 보안 준비에 영향을 미치는 설치 시간 결정이 있습니다. 설치 프로세스에는 여러 변수를 설정하는 작업이 포함되며, 그 중 일부는 Ansible Automation Platform 인프라 강화와 관련이 있습니다. Ansible Automation Platform을 설치하기 전에 이 가이드의 설치 섹션에서 지침을 고려하십시오.
2.2.1. 전용 설치 호스트에서 설치 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 설치 프로그램은 자동화 컨트롤러와 같은 인프라 서버 중 하나 또는 Ansible Automation Platform 인프라 서버에 대한 SSH 액세스 권한이 있는 외부 시스템에서 실행할 수 있습니다. Ansible Automation Platform 설치 프로그램은 설치뿐만 아니라 백업 및 복원과 같은 2일차 작업 및 업그레이드에도 사용됩니다. 이 가이드에서는 여기에서 설치 호스트라는 전용 외부 서버에서 설치 및 Day-two 작업을 수행할 것을 권장합니다. 이렇게 하면 이러한 기능을 실행하기 위해 인프라 서버 중 하나에 로그인할 필요가 없습니다. 설치 호스트는 Ansible Automation Platform 관리에만 사용해야 하며 다른 서비스 또는 소프트웨어를 실행하지 않아야 합니다.
설치 호스트는 Red Hat Enterprise Linux의 보안 강화 및 조직 관련 보안 프로필 요구 사항(CIS, STIG 등)에 따라 설치 및 구성된 Red Hat Enterprise Linux 서버여야 합니다. Automation Platform 계획 가이드에 설명된 대로 Ansible Automation Platform 설치 프로그램을 가져오고 자동화 플랫폼 설치 가이드에서 설명하는 설치 프로그램 인벤토리 파일을 생성합니다. 이 인벤토리 파일은 업그레이드, 인프라 구성 요소 추가, 설치 프로그램에서 Day-two 작업 등에 사용되므로 향후 작동을 위해 설치 후 파일을 유지합니다.
설치 호스트에 대한 액세스는 Ansible Automation Platform 인프라 관리를 담당하는 인력으로만 제한되어야 합니다. 시간이 지남에 따라 설치 프로그램 인벤토리(Ansible Automation Platform의 초기 로그인 인증 정보 포함), 사용자 제공 PKI 키 및 인증서, 백업 파일 등 중요한 정보가 포함됩니다. 인프라 관리 및 유지 관리에 필요한 경우 SSH를 통해 Ansible Automation Platform 인프라 서버에 로그인하는 데 설치 호스트를 사용해야 합니다.
2.2.2. 설치 인벤토리의 security-relevant 변수 링크 복사링크가 클립보드에 복사되었습니다!
설치 인벤토리 파일은 Ansible Automation Platform 인프라의 아키텍처를 정의하고 인프라 구성 요소의 초기 구성을 수정하는 데 사용할 수 있는 여러 변수를 제공합니다. 설치 프로그램 인벤토리에 대한 자세한 내용은 Ansible Automation Platform 설치 가이드를 참조하십시오.
다음 표에는 여러 security-relevant 변수와 설치 인벤토리를 생성하기 위한 권장 값이 나열되어 있습니다.
| Variable | 권장 값 | 세부 정보 |
|
| true | 설치 프로그램은 이 변수가 설정될 때 SSL 기반 연결을 수락하도록 설치 관리자 관리 Postgres 데이터베이스를 구성합니다. |
|
| verify-full |
기본적으로 컨트롤러가 데이터베이스에 연결하면 암호화된 연결을 시도하지만 적용되지는 않습니다. 이 변수를 "verify-full"으로 설정하려면 컨트롤러와 데이터베이스 간의 상호 TLS 협상이 필요합니다. 이 참고: 설치 관리자 관리 데이터베이스 대신 타사 데이터베이스를 사용하는 경우 mTLS 연결을 수락하도록 타사 데이터베이스를 독립적으로 설정해야 합니다. |
|
| false | "true"로 설정하면 이 변수는 컨트롤러에 대한 HTTPS 연결을 비활성화합니다. 기본값은 "false"이므로 이 변수가 설치 프로그램 인벤토리에서 없는 경우 "false"로 변수를 명시적으로 정의하는 것과 사실상 동일합니다. |
|
| false | "true"로 설정하면 이 변수는 프라이빗 자동화 허브에 대한 HTTPS 연결을 비활성화합니다. 기본값은 "false"이므로 이 변수가 설치 프로그램 인벤토리에서 없는 경우 "false"로 변수를 명시적으로 정의하는 것과 사실상 동일합니다. |
|
| false | "true"로 설정하면 이 변수는 이벤트 기반 Ansible 컨트롤러에 대한 HTTPS 연결을 비활성화합니다. 기본값은 "false"이므로 이 변수가 설치 프로그램 인벤토리에서 없는 경우 "false"로 변수를 명시적으로 정의하는 것과 사실상 동일합니다. |
로드 밸런서가 여러 컨트롤러 또는 허브와 함께 사용되는 참조 아키텍처와 같은 시나리오에서는 로드 밸런서에서 SSL 클라이언트 연결을 종료하거나 개별 Ansible Automation Platform 서버로 전달할 수 있습니다. 로드 밸런서에서 SSL을 종료하는 경우 이 가이드에서는 트래픽을 로드 밸런서에서 개별 Ansible Automation Platform 서버로 재암호화하여 엔드 투 엔드 암호화를 사용할 것을 권장합니다. 이 시나리오에서는 표 2.3에 나열된 *_disable_https 변수는 기본값 "false"로 유지됩니다.
이 가이드에서는 프로덕션 환경에서 외부 데이터베이스를 사용하는 것을 권장하지만 개발 및 테스트 시나리오에는 데이터베이스를 자동화 컨트롤러에서 함께 배치할 수 있습니다. 현재 PostgreSQL 13 제한으로 인해 데이터베이스가 자동화 컨트롤러에 공동 배치될 때 pg_sslmode = verify-full 을 설정하면 TLS 협상 중에 호스트 이름을 검증하는 동안 오류가 발생합니다. 이 문제가 해결될 때까지 외부 데이터베이스를 사용하여 자동화 컨트롤러와 데이터베이스 간의 상호 TLS 인증을 확인해야 합니다.
2.2.3. 사용자 제공 PKI 인증서로 설치 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Ansible Automation Platform은 플랫폼의 인프라 구성 요소에 대해 자체 서명된 PKI 인증서를 생성합니다. 기존 PKI 인프라를 사용할 수 있는 경우 자동화 컨트롤러, 프라이빗 자동화 허브, 이벤트 기반 Ansible 컨트롤러 및 사후 데이터베이스 서버에 대한 인증서를 생성해야 합니다. 인증서를 확인하는 데 사용되는 CA 인증서와 함께 인증서 파일 및 관련 키 파일을 설치 프로그램 디렉터리에 복사합니다.
다음 인벤토리 변수를 사용하여 새 인증서로 인프라 구성 요소를 구성합니다.
| Variable | 세부 정보 |
|
| 설치 프로그램 디렉터리에 있는 CA 인증서의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 자동화 컨트롤러 PKI 인증서의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 자동화 컨트롤러 PKI 키의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 프라이빗 자동화 허브 PKI 인증서의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 개인 자동화 허브 PKI 키의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 데이터베이스 서버 PKI 인증서의 파일 이름입니다. 이 변수는 타사 데이터베이스가 사용되는 경우가 아니라 설치 관리자 관리 데이터베이스 서버에만 필요합니다. |
|
| 설치 프로그램 디렉터리에 있는 데이터베이스 서버 PKI 인증서의 파일 이름입니다. 이 변수는 타사 데이터베이스가 사용되는 경우가 아니라 설치 관리자 관리 데이터베이스 서버에만 필요합니다. |
|
| 설치 프로그램 디렉터리에 있는 이벤트 기반 Ansible 컨트롤러 PKI 인증서의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 이벤트 기반 Ansible 컨트롤러 PKI 키의 파일 이름입니다. |
로드 밸런서를 사용하여 여러 자동화 컨트롤러를 배포하면 각 컨트롤러에서 web_server_ssl_cert 및 web_server_ssl_key 를 공유합니다. 호스트 이름이 일치하지 않도록 하려면 인증서의 CN(일반 이름)이 로드 밸런서에서 사용하는 DNS FQDN과 일치해야 합니다. 이는 여러 개인 자동화 허브와 automationhub_ssl_cert 및 automationhub_ssl_key 변수를 배포할 때도 적용됩니다. 조직 정책에 각 서비스에 대한 고유한 인증서가 필요한 경우 각 인증서에 로드 밸런싱 서비스에 사용되는 DNS FQDN과 일치하는 SAN(주체 대체 이름)이 필요합니다. 각 자동화 컨트롤러에 고유한 인증서와 키를 설치하려면 설치 인벤토리 파일의 인증서 및 키 변수를 [all:vars] 섹션 대신 호스트별 변수로 정의해야 합니다. 예를 들면 다음과 같습니다.
[automationcontroller]
controller0.example.com web_server_ssl_cert=/path/to/cert0 web_server_ssl_key=/path/to/key0
controller1.example.com web_server_ssl_cert=/path/to/cert1 web_server_ssl_key=/path/to/key1
controller2.example.com web_server_ssl_cert=/path/to/cert2 web_server_ssl_key=/path/to/key2
[automationhub]
hub0.example.com automationhub_ssl_cert=/path/to/cert0 automationhub_ssl_key=/path/to/key0
hub1.example.com automationhub_ssl_cert=/path/to/cert1 automationhub_ssl_key=/path/to/key1
hub2.example.com automationhub_ssl_cert=/path/to/cert2 automationhub_ssl_key=/path/to/key2
2.2.4. 설치 인벤토리의 중요한 변수 링크 복사링크가 클립보드에 복사되었습니다!
설치 인벤토리 파일에는 주로 Ansible Automation Platform에서 사용하는 초기 암호를 설정하는 데 사용되는 여러 중요한 변수가 포함되어 있으며 일반적으로 인벤토리 파일의 일반 텍스트로 유지됩니다. 이러한 변수를 무단으로 보지 못하도록 이러한 변수를 암호화된 Ansible 자격 증명 모음에 유지할 수 있습니다. 이렇게 하려면 설치 프로그램 디렉터리로 이동하여 자격 증명 모음 파일을 생성합니다.
-
cd /path/to/ansible-automation-platform-setup-bundle-2.4-1-x86_64 -
ansible-vault create vault.yml
새 Ansible 자격 증명 모음에 대한 암호를 입력하라는 메시지가 표시됩니다. 2일차 작업 및 백업 프로시저를 포함하여 자격 증명 모음 파일에 액세스해야 할 때마다 자격 증명 모음 암호를 손실하지 마십시오. 암호화된 암호 관리자에 저장하거나 암호를 안전하게 저장하기 위한 조직 정책에 따라 vault 암호를 보호할 수 있습니다.
중요한 변수를 자격 증명 모음에 추가합니다. 예를 들면 다음과 같습니다.
admin_password: <secure_controller_password>
pg_password: <secure_db_password>
automationhub_admin_password: <secure_hub_password>
automationhub_pg_password: <secure_hub_db_password>
automationhub_ldap_bind_password: <ldap_bind_password>
automationedacontroller_admin_password: <secure_eda_password>
automationedacontroller_pg_password: <secure_eda_db_password>
이러한 변수가 설치 인벤토리 파일에도 표시되지 않는지 확인합니다. 설치 프로그램과 함께 새 Ansible 자격 증명 모음을 사용하려면 ./setup.sh -e @vault.yml Cryostat-Engine--ask-vault-pass 명령을 사용하여 실행합니다.
2.2.5. 자동화 컨트롤러 STIG 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
DISA(D Defense Information Systems Agency)를 전체 보안 전략의 일부로 사용하는 조직의 경우 Ansible Automation Platform 자동화 컨트롤러의 STIG 를 사용할 수 있습니다. STIG는 현재 Ansible Automation Platform의 자동화 컨트롤러 구성 요소만 다룹니다. 자동화 컨트롤러에 STIG를 적용할 때 고려해야 할 여러 가지 고려 사항이 있습니다.
자동화 컨트롤러 STIG 개요 문서에는 Red Hat Enterprise Linux 8용 STIG와 함께 사용해야 합니다. 이 자동화 컨트롤러 STIG는 Red Hat Enterprise Linux 9용 STIG 이전에 릴리스되었으므로 자동화 컨트롤러 STIG를 적용할 때 Red Hat Enterprise Linux 8을 기본 호스트 OS로 사용해야 합니다. 특정 Red Hat Enterprise Linux 8 STIG 제어는 Ansible Automation Platform 설치 및 작업과 충돌하며 다음 섹션에 설명된 대로 완화할 수 있습니다.
2.2.5.1. Fapolicyd 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux 8 STIG를 사용하려면 fapolicyd 데몬이 실행 중이어야 합니다. 그러나 Ansible Automation Platform은 현재 fapolicyd enforcing policy로 인해 Ansible Automation Platform 설치 및 작동 중 오류가 발생하기 때문에 현재 지원되지 않습니다. 이로 인해 설치 프로그램은 fapolicyd가 강제 정책인 경우 설치를 중지하는 pre-flight 검사를 실행합니다. 이 가이드에서는 다음 단계를 사용하여 자동화 컨트롤러에서 fapolicyd를 허용 모드로 설정하는 것이 좋습니다.
-
/etc/fapolicyd/fapolicyd.conf파일을 편집하고 "permissive = 1"을 설정합니다. -
sudo systemctl restart fapolicyd.service명령을 사용하여 서비스를 다시 시작합니다.
STIG 제어가 정기적으로 감사되는 환경에서는 보안 감사자와 fapolicy 관련 STIG 제어와 관련된 내용을 논의합니다.
Red Hat Enterprise Linux 8 STIG도 설치 호스트에 적용되는 경우 기본 fapolicyd 구성으로 Ansible Automation Platform 설치 프로그램이 실패합니다. 이 경우 설치 호스트에서 fapolicyd를 허용 모드로 설정하는 것이 좋습니다.
2.2.5.2. "noexec"로 마운트된 파일 시스템 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux 8 STIG를 사용하려면 이러한 파일 시스템에 있는 바이너리 실행을 방지하기 위해 noexec 옵션으로 여러 파일 시스템을 마운트해야 합니다. Ansible Automation Platform 설치 프로그램에서는 noexec 옵션을 사용하여 다음 파일 시스템이 마운트되면 실패하는 전일 검사를 실행합니다.
-
/tmp -
/var -
/var/tmp
Ansible Automation Platform을 설치하려면 noexec 옵션을 제거한 상태로 이러한 파일 시스템을 다시 마운트해야 합니다. 설치가 완료되면 다음 단계를 진행합니다.
-
noexec옵션을/tmp및/var/tmp파일 시스템에 다시 적용합니다. -
자동화 컨트롤러 작업 실행 경로를
/tmp에서noexec옵션이 활성화되어 있지 않은 대체 디렉터리로 변경합니다. - 이 변경을 수행하려면 관리자로 자동화 컨트롤러 UI에 로그인하고 이동한 다음 작업 설정을 선택합니다.
- "작업 실행 경로" 설정을 대체 디렉터리로 변경합니다.
일반적인 작업 중에 /var/lib/awx 하위 디렉터리(일반적으로 /var)가 포함된 파일 시스템은 noexec 옵션을 사용하여 마운트하지 않아야 합니다. 그렇지 않으면 자동화 컨트롤러에서 실행 환경에서 자동화 작업을 실행할 수 없습니다.
STIG 제어가 정기적으로 감사되는 환경에서는 보안 감사자와 함께 noexec 와 관련된 STIG 제어를 포기합니다.
2.2.5.3. 사용자 네임스페이스 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux 8 STIG에서는 커널 설정 user.max_user_namespaces 를 "0"으로 설정해야 하지만 Linux 컨테이너를 사용하지 않는 경우에만 사용됩니다. Ansible Automation Platform은 컨테이너를 실행 환경 기능의 일부로 사용하므로 이 STIG 제어는 자동화 컨트롤러에 적용되지 않습니다.
user.max_user_namespaces 커널 설정을 확인하려면 다음 단계를 완료합니다.
- 명령줄에서 자동화 컨트롤러에 로그인합니다.
-
sudo sysctl user.max_user_namespaces명령을 실행합니다. -
출력에 값이 0임을 나타내는 경우
/etc/sysctl.conf파일의 내용과/etc/sysctl.d/아래의 모든 파일을 살펴보고user.max_user_namespaces설정을 포함하는 파일을 편집하고 값을 "65535"로 설정합니다. -
이 새 값을 적용하려면
sudo sysctl -p <file> 명령을 실행합니다. 여기서 <file>은 방금 수정된 파일입니다. -
sudo sysctl user.max_user_namespaces명령을 다시 실행하고 값이 이제 "65535"로 설정되어 있는지 확인합니다.
2.2.5.4. sudo 및 NOPASSWD 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux 8 STIG에서는 sudo 권한이 있는 모든 사용자가 암호를 제공해야 합니다(즉, sudoers 파일에서 "NOPASSWD" 지시문을 사용해서는 안 함). Ansible Automation Platform 설치 프로그램은 권한 있는 사용자로 많은 작업을 실행하고 기본적으로 암호 없이 권한을 승격할 수 있을 것으로 예상합니다. 권한 상승을 위해 설치 프로그램에 암호를 제공하려면 설치 프로그램 스크립트를 시작할 때 ./setup.sh <setup options> Cryostat- Cryostat-ask-become-pass.
이는 백업 및 복원과 같은 Day-two 작업에 대해 설치 프로그램 스크립트를 실행하는 경우에도 적용됩니다.