2장. Ansible Automation Platform 강화
이 가이드에서는 배포 계획 및 아키텍처 단계부터 시작하여 설치 단계에 대한 특정 지침을 다루는 Ansible Automation Platform 보안 태세를 강화하기 위한 실용적인 접근 방식을 취합니다. 이 가이드에서는 Red Hat Enterprise Linux에서 실행되는 Ansible Automation Platform에 대해 구체적으로 설명하므로 Red Hat Enterprise Linux의 강화 지침은 자동화 플랫폼 구성 요소에 영향을 미치는 위치에 대해 설명합니다.
2.1. 계획 고려 사항
Red Hat Ansible Automation Platform은 다음과 같은 주요 구성 요소로 구성됩니다.
- 자동화 컨트롤러
- 자동화 메시
- 프라이빗 자동화 허브
- 이벤트 기반 Ansible 컨트롤러
사용자 제공 PostgreSQL 데이터베이스도 사용할 수 있지만 PostgreSQL 데이터베이스도 제공됩니다. Red Hat은 고객이 Ansible Automation Platform의 모든 구성 요소를 항상 배포하여 추가 조치를 취할 필요 없이 모든 기능과 기능을 사용할 수 있도록 권장합니다.
자세한 내용은 Red Hat Ansible Automation Platform Architecture를 참조하십시오.
2.1.1. Ansible Automation Platform 배포 토폴로지
테스트된 배포 모델에 정의된 문서화된 배포 토폴로지 중 하나를 기반으로 Ansible Automation Platform 2.5를 설치합니다. 엔터프라이즈 조직은 최고 수준의 가동 시간, 성능 및 지속적인 확장성을 보장하기 위해 프로덕션 배포를 위해 엔터프라이즈 토폴로지 중 하나를 사용해야 합니다. 리소스 제한에 해당하는 조직 또는 배포는 "확장" 토폴로지를 사용할 수 있습니다. 테스트된 배포 모델 문서를 검토하여 요구 사항에 가장 적합한 토폴로지를 확인합니다. 선택한 토폴로지에는 토폴로지 다이어그램, Red Hat Enterprise Linux 서버 수, 배포에 사용되는 네트워크 포트 및 프로토콜, 엔터프라이즈 토폴로지를 위한 로드 밸런서 정보가 포함됩니다.
다양한 인프라 토폴로지 및 다양한 환경 구성에 Ansible Automation Platform을 설치할 수 있습니다. Red Hat은 게시된 배포 모델 이외의 토폴로지를 완전히 테스트하지 않습니다.
다음 다이어그램은 테스트된 컨테이너 엔터프라이즈 토폴로지입니다.
그림 2.1. 참조 아키텍처 개요
![고객이 Ansible Automation Platform을 직접 관리할 때 사용할 수 있도록 Red Hat에서 테스트한 인프라 토폴로지](https://access.redhat.com/webassets/avalon/d/Red_Hat_Ansible_Automation_Platform-2.5-Hardening_and_compliance-ko-KR/images/ecfa30eeadb7fc6da11116f69aef2bcc/cont-b-env-a.png)
Ansible Automation Platform과 관련된 방화벽 또는 클라우드 네트워크 보안 그룹 구성을 계획할 때 방화벽 또는 보안 그룹에서 열어야 하는 네트워크 포트를 이해하기 위해 테스트 배포 모델에서 선택한 토폴로지의 "네트워크 포트" 섹션을 참조하십시오.
인터넷에 연결된 시스템의 경우 설치 계획의 네트워크 및 프로토콜 섹션에서는 Red Hat 자동화 허브, Ansible Automation Platform용 Insights, Ansible Galaxy, registry.redhat.io 컨테이너 이미지 레지스트리 등과 같이 Ansible Automation Platform을 사용하도록 구성할 수 있는 서비스에 대한 발신 트래픽 요구 사항을 정의합니다.
Ansible Automation Platform 구성 요소에서 사용하는 포트에 대한 액세스를 보호된 네트워크 및 클라이언트에 제한합니다. 다음과 같은 제한 사항이 권장됩니다.
- 다른 Ansible Automation Platform 구성 요소 서버(자동화 컨트롤러, 자동화 허브, 이벤트 기반 Ansible 컨트롤러)만 허용되도록 데이터베이스 서버에서 PostgreSQL 데이터베이스 포트(5432)를 제한합니다.
- 설치 호스트 및 Ansible Automation Platform 서버에 대한 유지 관리 액세스에 사용되는 기타 신뢰할 수 있는 시스템에서 Ansible Automation Platform 서버에 대한 SSH 액세스를 제한합니다.
- 신뢰할 수 있는 네트워크 및 클라이언트에서 자동화 컨트롤러, 자동화 허브 및 이벤트 기반 Ansible 컨트롤러에 대한 HTTPS 액세스를 제한합니다.
2.1.2. DNS, NTP 및 서비스 계획
2.1.2.1. DNS
Ansible Automation Platform을 설치할 때 설치 프로그램 스크립트는 설치 프로그램 인벤토리에서 특정 인프라 서버가 FQDN( 정규화된 도메인 이름 )으로 정의되었는지 확인합니다. 이 가이드에서는 모든 Ansible Automation Platform 인프라 노드에 라우팅 가능한 IP 주소로 확인되는 DNS에 정의된 유효한 FQDN이 있고 설치 프로그램 인벤토리 파일에서 이러한 FQDN을 사용하도록 권장합니다.
2.1.2.2. DNS 및 로드 밸런싱
배포 토폴로지에 설명된 대로 Ansible Automation Platform에서 로드 밸런서를 사용하는 경우 로드 밸런서에 추가 FQDN이 필요합니다. 예를 들어 aap.example.com
과 같은 FQDN을 로드 밸런서에 사용할 수 있으며, 이 경우 설치 인벤토리에 정의된 각 플랫폼 게이트웨이 구성 요소로 트래픽을 전달합니다.
2.1.2.3. NTP
Ansible Automation Platform 인프라에서 각 서버를 구성하여 시간을 NTP 풀 또는 조직의 NTP 서비스와 동기화합니다. 이렇게 하면 Ansible Automation Platform에서 생성한 로깅 및 감사 이벤트의 정확한 타임스탬프가 있고 자동화 컨트롤러에서 실행 중인 예약된 작업이 올바른 시간에 실행되도록 합니다.
NTP 동기화를 위한 chrony 서비스 구성에 대한 자세한 내용은 Red Hat Enterprise Linux 설명서에서 Chrony 사용을 참조하십시오.
2.1.2.4. Ansible Automation Platform 인증
자동화 컨트롤러는 현재 플랫폼 게이트웨이 UI를 통해 다음과 같은 외부 인증 메커니즘을 지원합니다.
- 로컬
- LDAP
- SAML
- TACACS+
- RADIUS
- Azure Active Directory
- Google OAuth
- 일반 OIDC
- Keycloak
- GitHub Single Sign-On
- GitHub
- GitHub 조직
- GitHub 팀
- GitHub enterprise
- GitHub 엔터프라이즈 조직
- GitHub 엔터프라이즈 팀
조직의 인증 정책을 준수하는 인증 메커니즘을 선택합니다. 사용되는 인증 메커니즘은 트래픽이 퍼블릭 또는 비보안 네트워크(예: TLS를 통해 LDAPS 또는 LDAP, OAuth2 및 SAML 공급자의 HTTPS 등)에서 발생할 때 Ansible Automation Platform과 인증 백엔드 간의 인증 관련 트래픽이 암호화되도록 해야 합니다.
인증 방법에 대한 자세한 내용은 인증 유형 구성을 참조하십시오.
플랫폼 게이트웨이에서 "시스템 관리자" 계정은 인벤토리 또는 자동화 정의를 편집, 변경 및 업데이트할 수 있습니다. 이러한 계정 권한을 낮은 수준의 Ansible Automation Platform 구성 및 재해 복구에 가능한 최소 사용자 세트로 제한합니다.
2.1.3. Ansible Automation Platform의 인증 정보 관리 계획
Red Hat Ansible Automation Platform은 인증 정보를 사용하여 머신에 대한 작업에 대한 요청을 인증하고, 인벤토리 소스와 동기화하고, 버전 제어 시스템에서 프로젝트 콘텐츠를 가져옵니다. 자동화 컨트롤러는 다음 세 가지 보안 세트를 관리합니다.
- 로컬 Ansible Automation Platform 사용자의 사용자 암호입니다.
- Ansible Automation Platform 작동을 위한 시크릿(데이터베이스 암호, 메시지 버스 암호 등)
- 자동화에 사용되는 시크릿(SSH 키, 클라우드 인증 정보, 외부 암호 자격 증명 모음 인증 정보 등)
인증 정보를 손상시키지 않도록 보호하기 위해 권한 있는 액세스 또는 인증 정보 관리 솔루션을 구현하는 것이 좋습니다. 조직은 사용을 감사하고 추가 프로그래밍 방식의 제어, 액세스 및 권한 에스컬레이션을 제공해야 합니다.
자동화 인증 정보가 고유하고 자동화 컨트롤러에만 저장되도록 하여 자동화 인증 정보를 추가로 보호할 수 있습니다. OpenSSH와 같은 서비스는 특정 주소의 연결에서만 인증 정보를 허용하도록 구성할 수 있습니다. 시스템 관리자가 서버에 로그인하는 것과 다른 인증 정보를 사용하여 자동화합니다. 가능한 경우 직접 액세스를 제한해야 하지만 재해 복구 또는 기타 임시 관리에 사용할 수 있으므로 감사가 더 쉬워집니다.
자동화 작업이 서로 다른 수준에서 시스템에 액세스해야 할 수 있습니다. 예를 들어 상위 수준의 자동화 부분은 애플리케이션을 배포하는 반면, 낮은 수준의 시스템 자동화를 통해 패치를 적용하고 보안 기준 검사를 수행할 수 있습니다. 각 자동화 부분에 서로 다른 키 또는 인증 정보를 사용하면 하나의 주요 취약점이 미치는 영향을 최소화합니다. 또한 기준 감사를 쉽게 수행할 수 있습니다.
2.1.3.1. 자동화 사용 보안
자동화 컨트롤러는 자동화에 사용되거나 자동화 결과인 다양한 시크릿을 데이터베이스에 저장합니다. 자동화 사용 보안은 다음과 같습니다.
- 모든 인증 정보 유형의 모든 시크릿 필드(암호, 시크릿 키, 인증 토큰, 시크릿 클라우드 인증 정보)
- 자동화 컨트롤러 설정에 정의된 외부 서비스의 시크릿 토큰 및 암호입니다.
- "암호" 유형 설문 조사 필드 항목.
인증 정보를 사용자에게 실제로 노출하지 않고도 이러한 인증 정보를 사용할 수 있는 기능을 사용자 및 팀에 부여할 수 있습니다. 즉, 사용자가 다른 팀으로 이동하거나 조직을 떠나면 모든 시스템을 다시 입력할 필요가 없습니다.
자동화 컨트롤러는 SSH(또는 Windows 동등한)를 사용하여 원격 호스트에 연결합니다. 자동화 컨트롤러에서 SSH로 키를 전달하려면 키의 암호를 해독해야 이름이 지정된 파이프에 쓸 수 있습니다. 자동화 컨트롤러는 해당 파이프를 사용하여 SSH로 키를 보냅니다(디스크에 기록되지 않음). 암호를 사용하는 경우 자동화 컨트롤러는 암호 프롬프트에 직접 응답하고 프롬프트에 쓰기 전에 암호를 해독하여 처리합니다.
슈퍼유저 액세스 권한이 있는 관리자는 YAML/JSON과 같은 정의를 사용하여 표준 형식으로 사용자 정의 인증 정보 유형을 정의하여 작업 및 인벤토리 업데이트에 새 인증 정보 유형을 할당할 수 있습니다. 이를 통해 기존 인증 정보 유형과 유사한 방식으로 작동하는 사용자 정의 인증 정보 유형을 정의할 수 있습니다. 예를 들어 타사 웹 서비스의 API 토큰을 플레이북 또는 사용자 지정 인벤토리 스크립트에서 사용할 수 있는 환경 변수에 삽입하는 사용자 정의 인증 정보 유형을 생성할 수 있습니다.
Ansible Automation Platform은 시크릿 필드를 암호화하기 위해 암호화에 256비트 키를 사용하여 CBC 모드에서 AES를 사용하고 PKCS7 패딩 및 인증에 SHA256을 사용하여 HMAC를 사용합니다. 암호화/암호 해독 프로세스는 SECRET_KEY
, model 필드의 필드 이름 및 데이터베이스 할당 자동 증가 레코드 ID에서 AES-256 비트 암호화 키를 가져옵니다. 따라서 키 생성 프로세스에 사용된 속성이 변경되면 Ansible Automation Platform에서 시크릿을 올바르게 해독하지 못합니다. Ansible Automation Platform은 Ansible Automation Platform이 시작되는 플레이북에서 SECRET_KEY
를 읽을 수 없으므로 Ansible Automation Platform 사용자가 이러한 시크릿을 읽을 수 없으며 Ansible Automation Platform REST API를 통해 시크릿 필드 값을 사용할 수 없습니다. 시크릿 값이 플레이북에 사용되는 경우 실수로 기록되지 않도록 작업에 no_log
를 사용해야 합니다. 자세한 내용은 로그 없이 중요한 데이터 보호를 참조하십시오.
2.1.4. 로깅 및 로그 캡처
가시성 및 분석은 Enterprise Security 및 Zero Trust Architecture의 중요한 요소입니다. 로깅은 작업을 캡처하고 감사를 전달하는 핵심입니다. Red Hat Enterprise Linux 보안 강화 가이드의 시스템 감사 섹션에 설명된 기본 제공 감사 지원을 사용하여 로깅 및 감사를 관리할 수 있습니다. Ansible Automation Platform의 내장 로깅 및 활동 스트림 지원 Red Hat Ansible Automation Platform은 감사 목적으로 Red Hat Ansible Automation Platform 및 자동화 로그 내의 모든 변경 사항을 기록합니다. 자세한 내용은 자동화 실행 구성의 로깅 및 집계 섹션에서 확인할 수 있습니다.
이 가이드에서는 로컬 시스템에서 검토하지 않고 로깅 및 감사를 중앙에서 수집하도록 Ansible Automation Platform 및 기본 Red Hat Enterprise Linux 시스템을 구성하는 것이 좋습니다. Ansible Automation Platform은 외부 로깅을 사용하여 Ansible Automation Platform 서버 내의 여러 구성 요소에서 로그 레코드를 컴파일하도록 구성해야 합니다. 발생하는 이벤트는 정확한 법의학 분석을 수행하는 것과 관련이 있어야합니다. 즉, Ansible Automation Platform 서버는 로깅 수집기 서비스와 Ansible Automation Platform의 대상에서도 사용하는 NTP 서버로 구성해야 합니다. 상관관계는 특정 산업 허용 요구사항을 충족해야 합니다. 즉, 로그된 다양한 이벤트의 타임스탬프가 x 초보다 크게 달라지지 않아야 한다는 다양한 요구 사항이 있을 수 있습니다. 이 기능은 외부 로깅 서비스에서 사용할 수 있어야 합니다.
로깅의 또 다른 중요한 기능은 암호화를 사용하여 로그 툴의 무결성을 보호하는 기능입니다. 로그 데이터에는 정보 시스템 활동을 성공적으로 기록하는 데 필요한 모든 정보(예: 로그 레코드, 로그 설정 및 로그 보고서)가 포함됩니다. 공격자는 로그 도구를 교체하거나 기존 도구에 코드를 삽입하여 로그에서 시스템 활동을 숨기거나 지우는 것이 일반적입니다. 이 위험을 해결하려면 로그 도구가 수정, 조작 또는 교체되었는지 확인할 수 있도록 로그 툴을 암호화 방식으로 서명해야 합니다. 예를 들어 로그 툴이 수정, 조작 또는 교체되지 않았는지 확인하는 한 가지 방법은 툴 파일에 대해 체크섬 해시를 사용하는 것입니다. 이렇게 하면 툴의 무결성이 손상되지 않습니다.
2.1.5. 감사 및 사고 탐지
Ansible Automation Platform은 다음과 같은 일반적인 사용 사례에 NIST Cybersecurity Framework를 적용하여 보안 정책 요구 사항을 충족하는 데 사용해야 합니다.
- Red Hat Enterprise Linux의 웹 서버에 HTTPS가 필요합니다.
- Red Hat Enterprise Linux의 웹 서버와 데이터베이스 서버 간의 내부 통신을 위해 TLS 암호화가 필요합니다.
- 정책이 올바르게 배포되었음을 나타내는 보고서를 생성합니다.
- 정책을 위반하는 드리프트 모니터링.
- 정책 위반의 자동화.
이 작업은 보안 보안 프레임 워크의 5 단계로 수행 할 수 있습니다.
- 식별
- 보안 정책에 따라 구현할 요구 사항을 정의합니다.
- 보호
- 요구 사항을 Ansible 플레이북으로 구현하고 적용합니다.
- DETECT
- 드리프트 모니터링 및 감사 보고서를 생성합니다.
- 응답
- 사고가 감지될 때 수행할 수 있는 작업을 살펴봅니다.
- 복구
- Ansible을 사용하여 시스템을 알려진 양호한 구성으로 복원합니다.
2.1.6. Red Hat Enterprise Linux 호스트 계획
Ansible Automation Platform의 보안은 기본 Red Hat Enterprise Linux 서버의 구성에 부분적으로 의존합니다. 이러한 이유로 각 Ansible Automation Platform 구성 요소에 대한 기본 Red Hat Enterprise Linux 호스트는 Red Hat Enterprise Linux 8의 보안 강화 또는 Red Hat Enterprise Linux 9의 보안 강화 (사용할 운영 체제에 따라 다름) 및 조직에서 사용하는 모든 보안 프로필 요구 사항(CIS, STIG, HIPAA 등)에 따라 설치 및 구성해야 합니다. 새로운 배포를 위해 이 문서는 모든 새로운 배포에 대해 Red Hat Enterprise Linux 9를 권장합니다. 컨테이너 기반 설치 방법을 사용하는 경우 Red Hat Enterprise Linux 9가 필요합니다.
2.1.6.1. Ansible Automation Platform 및 추가 소프트웨어
Red Hat Enterprise Linux 서버에 Ansible Automation Platform 구성 요소를 설치할 때 Red Hat Enterprise Linux 서버는 단독으로 사용하도록 전용으로 사용해야 합니다. Ansible Automation Platform 외에도 추가 서버 기능을 설치하지 않아야 합니다. 이는 지원되지 않는 구성이므로 Ansible Automation Platform 소프트웨어의 보안 및 성능에 영향을 미칠 수 있습니다.
마찬가지로 Ansible Automation Platform이 Red Hat Enterprise Linux 호스트에 배포된 경우 nginx 웹 서버, Pulp 소프트웨어 리포지토리 및 PostgreSQL 데이터베이스 서버(사용자 제공 외부 데이터베이스가 사용되지 않는 경우)와 같은 소프트웨어를 설치합니다. 이 소프트웨어는 보다 일반적인 방식으로 수정하거나 사용해서는 안 됩니다(예: 추가 데이터베이스를 호스팅하는 데 nginx를 사용하지 마십시오). 이는 지원되지 않는 구성이며 Ansible Automation Platform의 보안 및 성능에 영향을 미칠 수 있기 때문입니다. 이 소프트웨어의 구성은 Ansible Automation Platform 설치 프로그램에서 관리하며 업그레이드를 수행할 때 수동 변경 사항을 취소할 수 있습니다.