강화 및 컴플라이언스
Red Hat Enterprise Linux에서 실행되는 Ansible Automation Platform을 안전한 방식으로 설치, 구성 및 유지 관리
초록
머리말
이 가이드에서는 Red Hat Enterprise Linux에서 Ansible Automation Platform을 안전한 방식으로 설치, 구성 및 유지 관리하는 데 필요한 다양한 프로세스에 대한 권장 사례를 제공합니다.
Red Hat 문서에 관한 피드백 제공
이 문서를 개선하기 위한 제안이 있거나 오류를 찾을 수 있는 경우 https://access.redhat.com 에서 기술 지원에 문의하여 요청을 열 수 있습니다.
1장. Ansible Automation Platform 강화 소개
이 문서에서는 Red Hat Enterprise Linux에서 Red Hat Ansible Automation Platform 배포의 보안 상태(이 가이드 전체에서 "하드화"라고 함)를 개선하기 위한 지침을 제공합니다.
다음은 현재 이 가이드의 범위에 포함되지 않습니다.
- OpenShift와 같은 Ansible Automation Platform의 기타 배포 대상입니다.
- 클라우드 서비스 공급자 마켓플레이스를 통해 제공되는 Ansible Automation Platform 관리 서비스.
Ansible Automation Platform 2.4의 강화 및 규정 준수에는 자동화 컨트롤러에 대한 특정 DISA( Security Technical Implementation Guides)의 DISA( Security Technical Implementation Guides )에 대한 추가 고려 사항이 포함되어 있지만 이 지침은 Ansible Automation Platform 2.5에는 적용되지 않습니다.
이 가이드에서는 배포 계획 및 아키텍처 단계에서 시작한 다음 설치, 초기 구성, 일 2 작업에 대한 특정 지침을 다루는 Ansible Automation Platform 보안 준비 단계를 강화하기 위한 실용적인 접근 방식을 취합니다. 이 가이드에서는 Red Hat Enterprise Linux에서 실행되는 Ansible Automation Platform에 대해 구체적으로 설명하므로 Red Hat Enterprise Linux의 강화 지침은 자동화 플랫폼 구성 요소에 영향을 미치는 위치에 대해 설명합니다. DISA STIGs for Red Hat Enterprise Linux와 관련된 추가 고려 사항은 DISA STIG를 전체 보안 전략의 일부로 통합하는 조직을 위해 제공됩니다.
이러한 권장 사항은 Ansible Automation Platform 배포의 보안 또는 컴플라이언스를 보장하지 않습니다. 특정 위협 및 위험을 해결하고 구현 요인과 균형을 유지하기 위해 조직의 고유한 요구 사항의 보안을 평가해야 합니다.
1.1. 대상
이 안내서는 Red Hat Enterprise Linux에 배포할 때 Ansible Automation Platform 2.5를 설치, 구성 및 유지 관리를 담당하는 인력을 위해 작성되었습니다. 보안 운영, 규정 준수 평가 및 관련 보안 프로세스와 관련된 기타 기능에 추가 정보가 제공됩니다.
1.2. Ansible Automation Platform 개요
Ansible은 Python으로 작성된 오픈 소스 명령줄 IT 자동화 소프트웨어 애플리케이션입니다. Ansible Automation Platform을 사용하여 시스템을 구성하고, 소프트웨어를 배포하고, 고급 워크플로를 오케스트레이션하여 애플리케이션 배포, 시스템 업데이트 등을 지원할 수 있습니다. Ansible의 주요 강점은 단순성과 사용 편의성입니다. 또한 최소한의 이동 부분을 특징으로 하는 보안 및 안정성에 중점을 두고 있습니다. SSH, HTTPS 및 WinRM과 같은 안전하고 잘 알려진 통신 프로토콜을 사용하며 광범위한 교육없이 빠르게 시작하도록 설계된 사람이 읽을 수 있는 언어를 사용합니다.
Ansible Automation Platform은 RBAC( 역할 기반 액세스 제어 ), 중앙 집중식 로깅 및 감사, 인증 정보 관리, 작업 스케줄링 및 복잡한 자동화 워크플로우와 같은 엔터프라이즈급 기능으로 Ansible 언어를 향상시킵니다. Ansible Automation Platform을 사용하면 Red Hat의 강력한 파트너 에코시스템에서 인증된 컨텐츠, 보안, 보고 및 분석과 조직 전체의 자동화를 확장하기 위한 라이프 사이클 기술 지원을 받을 수 있습니다. Ansible Automation Platform은 엔터프라이즈 애플리케이션 인프라의 라이프사이클을 관리하기 위해 자동화 워크로드의 개발 및 운영을 단순화합니다. 운영, 네트워킹, 보안 및 개발뿐만 아니라 다양한 하이브리드 환경에서도 여러 IT 도메인에서 작동합니다.
1.2.1. Red Hat Ansible Automation Platform 배포 방법
Ansible Automation Platform의 세 가지 설치 방법이 있습니다.
- RPM 기반 Red Hat Enterprise Linux
- Red Hat Enterprise Linux를 기반으로 하는 컨테이너
- Red Hat OpenShift Container Platform에서 Operator 기반
이 문서에서는 처음 두 설치 방법(RPM 기반 또는 컨테이너 기반)을 사용하여 설치할 때 Ansible Automation Platform 강화에 대한 지침을 제공합니다. 이 문서는 RPM 기반 설치 프로그램이 향후 릴리스에서 더 이상 사용되지 않으므로 새 배포에 컨테이너 기반 설치 방법을 사용하는 것이 좋습니다.
자세한 내용은 더 이상 사용되지 않는 기능을 참조하십시오.
Operator 기반 배포는 이 문서에 설명되지 않습니다.
1.2.2. Ansible Automation Platform 구성 요소
Ansible Automation Platform은 자동화 컨트롤러, 플랫폼 게이트웨이, 자동화 허브, 이벤트 기반 Ansible 컨트롤러를 포함하여 서로 연결할 수 있는 별도의 구성 요소로 구성된 모듈식 플랫폼입니다.
추가 리소스
Ansible Automation Platform 내에서 제공되는 구성 요소에 대한 자세한 내용은 설치 계획 의 Red Hat Ansible Automation Platform 구성 요소를 참조하십시오.
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은 게시된 참조 아키텍처 외부에서 아키텍처를 완전히 테스트하지 않습니다. Red Hat은 테스트된 참조 아키텍처를 모든 신규 배포에 사용할 것을 권장하며 최소 요구 사항을 충족하는 배포에 대해 상업적으로 합리적인 지원을 제공합니다.
다음 다이어그램은 테스트된 컨테이너 엔터프라이즈 아키텍처입니다.
그림 2.1. 참조 아키텍처 개요

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( Network Time Protocol ) 풀 또는 조직의 NTP 서비스와 동기화합니다. 이렇게 하면 Ansible Automation Platform에서 생성한 로깅 및 감사 이벤트의 정확한 타임스탬프가 있고 자동화 컨트롤러에서 실행 중인 예약된 작업이 올바른 시간에 실행되도록 합니다. 또한 Ansible Automation Platform 내의 시스템 간 통신이 시간 초과에 따라 메시지를 거부하지 않도록 합니다.
NTP 동기화를 위한 chrony 서비스 구성에 대한 자세한 내용은 Red Hat Enterprise Linux 설명서에서 Chrony 사용을 참조하십시오.
2.1.3. Ansible Automation Platform의 인증 정보 관리 계획
Red Hat Ansible Automation Platform은 인증 정보를 사용하여 머신에 대한 작업에 대한 요청을 인증하고, 인벤토리 소스와 동기화하고, 버전 제어 시스템에서 프로젝트 콘텐츠를 가져옵니다.
자동화 컨트롤러는 다음 세 가지 보안 세트를 관리합니다.
- 로컬 Ansible Automation Platform 사용자의 사용자 암호입니다.
- Ansible Automation Platform 작동을 위한 시크릿(데이터베이스 암호, 메시지 버스 암호 등)
- 자동화에 사용되는 시크릿(SSH 키, 클라우드 인증 정보, 외부 암호 자격 증명 모음 인증 정보 등)
인증 정보를 손상시키지 않도록 보호하기 위해 권한 있는 액세스 또는 인증 정보 관리 솔루션을 구현하는 것이 좋습니다. 조직은 사용을 감사하고 추가 프로그래밍 방식의 제어, 액세스 및 권한 에스컬레이션을 제공해야 합니다.
자동화 인증 정보가 고유하고 자동화 컨트롤러에만 저장되도록 하여 자동화 인증 정보를 추가로 보호할 수 있습니다. OpenSSH와 같은 서비스는 특정 주소의 연결에서만 인증 정보를 허용하도록 구성할 수 있습니다. 시스템 관리자가 서버에 로그인하는 것과 다른 인증 정보를 사용하여 자동화합니다. 가능한 경우 직접 액세스를 제한해야 하지만 재해 복구 또는 기타 임시 관리에 사용할 수 있으므로 감사가 더 쉬워집니다.
자동화 작업이 서로 다른 수준에서 시스템에 액세스해야 할 수 있습니다. 예를 들어 상위 수준의 자동화 부분은 애플리케이션을 배포하는 반면, 낮은 수준의 시스템 자동화를 통해 패치를 적용하고 보안 기준 검사를 수행할 수 있습니다. 각 자동화 부분에 서로 다른 키 또는 인증 정보를 사용하면 하나의 주요 취약점이 미치는 영향을 최소화합니다. 또한 기준 감사를 쉽게 수행할 수 있습니다.
2.1.3.1. Ansible Automation Platform 운영 시크릿
Ansible Automation Platform은 여러 시크릿(암호, 키 등)을 운영적으로 사용합니다. 이러한 비밀은 시작 시 각 구성 요소 서비스에서 읽을 수 있으므로 다양한 Ansible Automation Platform 서버에 암호화되지 않은 상태로 저장됩니다. 모든 파일은 Unix 권한으로 보호되며 root 사용자 또는 적절한 서비스 계정 사용자로 제한됩니다. 이러한 파일은 무단 액세스 또는 수정이 없는지 확인하기 위해 정기적으로 모니터링해야 합니다.
2.1.3.1.1. RPM 기반 설치 시크릿
다음 표에서는 Ansible Automation Platform의 RPM 기반 설치를 위한 이러한 시크릿의 위치를 제공합니다.
자동화 컨트롤러 보안 | |
파일 경로 | description |
|
데이터베이스에서 자동화 시크릿을 암호화하는 데 사용되는 시크릿 키입니다. |
| 자동화 컨트롤러 웹 서비스에 대한 SSL 인증서 및 키입니다.
자체 서명된 인증서 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 데이터베이스 연결에 TLS 인증이 사용되지 않는 한 자동화 컨트롤러에서 데이터베이스에 연결하는 데 사용하는 암호가 포함됩니다. |
| 웹 소켓 브로드캐스트에 자동화 컨트롤러에서 사용하는 시크릿을 포함합니다. |
| 자동화 컨트롤러에서 플랫폼 게이트웨이와 상태를 동기화하는 데 사용하는 키가 포함되어 있습니다. |
플랫폼 게이트웨이 보안 | |
파일 경로 | description |
|
데이터베이스에서 자동화 시크릿을 암호화하는 데 사용되는 시크릿 키입니다. |
| 플랫폼 게이트웨이 웹 서비스에 대한 SSL 인증서입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 플랫폼 게이트웨이 웹 서비스의 SSL 키입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 플랫폼 게이트웨이에서 사용하는 Redis 캐시를 사용한 상호 TLS(mTLS) 인증에 사용되는 SSL 인증서입니다. |
| 플랫폼 게이트웨이에서 사용하는 Redis 캐시를 사용한 상호 TLS(mTLS) 인증에 사용되는 SSL 키입니다. |
| 데이터베이스 연결에 TLS 인증이 사용되지 않는 한 플랫폼 게이트웨이에서 데이터베이스에 연결하는 데 사용하는 암호가 포함됩니다. 플랫폼 게이트웨이에서 사용하는 Redis 캐시에 연결하는 데 사용되는 암호도 포함되어 있습니다. |
자동화 허브 보안 | |
파일 경로 | description |
| 데이터베이스 연결에 TLS 인증이 사용되지 않는 한 자동화 허브에서 데이터베이스에 연결하는 데 사용하는 암호가 포함됩니다. 자동화 허브 웹 서비스에서 사용하는 Django 시크릿 키가 포함되어 있습니다. |
|
자동화 허브 EE 토큰 인증에 대한 PEM 형식의 OpenSSL 공개 키입니다. 기본적으로 |
|
자동화 허브 EE 토큰 인증에 대한 PEM 형식의 OpenSSL 개인 키입니다. 사용자는 |
| 자동화 허브 웹 서비스에 대한 SSL 인증서입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 자동화 허브 웹 서비스의 SSL 키입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 자동화 허브 데이터베이스 테이블에서 중요한 필드를 암호화하는 데 사용되는 키입니다. 키가 변경되거나 알 수 없는 경우 자동화 허브는 데이터베이스의 암호화된 필드에 액세스할 수 없습니다. |
이벤트 기반 Ansible 시크릿 | |
파일 경로 | description |
| 이벤트 기반 Ansible 컨트롤러 데이터베이스 테이블의 필드를 암호화하는 데 사용되는 시크릿 키입니다. SECRET_KEY가 변경되거나 알 수 없는 경우 이벤트 기반 Ansible 컨트롤러는 데이터베이스의 암호화된 필드에 액세스할 수 없습니다. |
| 데이터베이스 연결에 TLS 인증이 사용되지 않는 한, Event-Driven Ansible 게이트웨이에서 데이터베이스에 연결하는 데 사용하는 암호가 포함됩니다. Event-Driven Ansible 컨트롤러에서 사용하는 Redis 캐시에 연결하는 데 사용되는 암호를 포함합니다. 이벤트 기반 Ansible 컨트롤러에서 플랫폼 게이트웨이와 상태를 동기화하는 데 사용하는 키가 포함됩니다. |
| 이벤트 기반 Ansible 컨트롤러 웹 서비스에 대한 SSL 인증서입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 이벤트 기반 Ansible 컨트롤러 웹 서비스의 SSL 키입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 이벤트 기반 Ansible 컨트롤러에서 사용하는 Redis 캐시와 상호 TLS(mTLS) 인증에 사용되는 SSL 인증서 |
| 이벤트 기반 Ansible 컨트롤러에서 사용하는 Redis 캐시와 상호 TLS(mTLS) 인증에 사용되는 SSL 키 |
| 이벤트 기반 Ansible 컨트롤러 웹 소켓 끝점에 대한 SSL 인증서입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
| 이벤트 기반 Ansible 컨트롤러 웹 소켓 끝점의 SSL 키입니다. 사용자 제공 인증서 및 키 쌍을 사용할 수 있지만 자체 서명된 인증서는 기본적으로 설치됩니다. 자세한 내용은 사용자 제공 PKI 인증서를 사용한 설치를 참조하십시오. |
Redis 보안 | |
파일 경로 | description |
| 설치 프로그램에서 각 구성 요소 서비스에 대한 기본 자체 서명 인증서를 생성하는 데 사용하는 내부 자체 서명 인증 기관의 SSL 인증서입니다. |
| 설치 프로그램에서 각 구성 요소 서비스에 대한 기본 자체 서명 인증서를 생성하는 데 사용하는 내부 자체 서명 인증 기관의 SSL 키입니다. |
이러한 파일 위치 중 일부는 이전에 Ansible Tower라는 이전 자동화 컨트롤러 이름을 반영합니다.
2.1.3.1.2. 컨테이너 기반 설치 보안
RPM 기반 설치에 나열된 시크릿은 컨테이너 기반 설치에서도 사용되지만 다른 방식으로 저장됩니다. Red Hat Ansible Automation Platform의 컨테이너 기반 설치는 Podman 시크릿을 사용하여 운영 시크릿을 저장합니다. 이러한 시크릿은 podman secret list
명령을 사용하여 나열할 수 있습니다.
기본적으로 Podman은 컨테이너화된 Red Hat Ansible Automation Platform 서비스를 설치하고 실행하는 사용자의 홈 디렉터리에 데이터를 저장합니다. Podman 시크릿은 $HOME/.local/share/containers/storage/secrets/filedriver/secretsdata.json
파일에 저장되므로, 일반 텍스트에 없는 동안 값은 난독 처리되어 있습니다.
podman secret inspect --showsecret <secret> 명령을 사용하여 Podman 보안에 저장된 데이터를 표시할 수 있습니다
.
이 파일은 무단 액세스 또는 수정이 없는지 확인하기 위해 정기적으로 모니터링해야 합니다.
2.1.3.2. 자동화 사용 보안
자동화 컨트롤러는 자동화에 사용되거나 자동화 결과인 다양한 시크릿을 데이터베이스에 저장합니다. 자동화 사용 보안은 다음과 같습니다.
- 모든 인증 정보 유형의 모든 시크릿 필드(암호, 시크릿 키, 인증 토큰, 시크릿 클라우드 인증 정보)
- 자동화 컨트롤러 설정에 정의된 외부 서비스의 시크릿 토큰 및 암호입니다.
- "암호" 유형 설문 조사 필드 항목.
인증 정보를 사용자에게 실제로 노출하지 않고도 이러한 인증 정보를 사용할 수 있는 기능을 사용자 및 팀에 부여할 수 있습니다. 즉, 사용자가 다른 팀으로 이동하거나 조직을 떠나면 모든 시스템을 다시 입력할 필요가 없습니다.
자동화 컨트롤러는 SSH(또는 Windows 동등한)를 사용하여 원격 호스트에 연결합니다. 자동화 컨트롤러에서 SSH로 키를 전달하려면 키를 해독해야 이름이 지정된 파이프에 쓸 수 있습니다. 자동화 컨트롤러는 해당 파이프를 사용하여 SSH로 키를 보냅니다(디스크에 기록되지 않음). 암호를 사용하는 경우 자동화 컨트롤러는 암호 프롬프트에 직접 응답하고 프롬프트에 쓰기 전에 암호를 해독하여 처리합니다.
슈퍼유저 액세스 권한이 있는 관리자는 YAML/JSON과 같은 정의를 사용하여 표준 형식으로 사용자 정의 인증 정보 유형을 정의하여 작업 및 인벤토리 업데이트에 새 인증 정보 유형을 할당할 수 있습니다. 이를 통해 기존 인증 정보 유형과 유사한 방식으로 작동하는 사용자 정의 인증 정보 유형을 정의할 수 있습니다. 예를 들어 타사 웹 서비스의 API 토큰을 플레이북 또는 사용자 지정 인벤토리 스크립트에서 사용할 수 있는 환경 변수에 삽입하는 사용자 정의 인증 정보 유형을 생성할 수 있습니다.
Ansible Automation Platform은 시크릿 필드를 암호화하기 위해 암호화에 256비트 키와 함께 CBC( Advanced Encryption Standard ) 모드의 AES(Advanced Encryption Standard)를 사용하고, PKI( Public-Key cryptography Standard, 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.3.3. no_log로 민감한 데이터 보호
Ansible 출력을 로그에 저장하면 암호 및 사용자 이름과 같은 Ansible 출력에 보안 데이터를 노출합니다. 중요한 값을 로그에서 유지하려면 no_log: True
특성으로 표시하는 작업을 표시하십시오. 그러나 no_log
속성은 디버깅 출력에 영향을 미치지 않으므로 프로덕션 환경에서 플레이북을 디버그하지 않도록 주의하십시오.
2.1.4. 사용자 인증 계획
Ansible Automation Platform 환경에서 고려해야 할 두 가지 유형의 사용자 계정이 있습니다.
- 인프라 계정: Ansible Automation Platform 서비스를 실행하는 RHEL 서버의 사용자 계정입니다.
- 애플리케이션 계정: Ansible Automation Platform 웹 UI 및 API의 사용자 계정입니다.
2.1.4.1. 인프라 서버 계정 계획
Ansible Automation Platform 서비스를 실행하는 RHEL 서버의 사용자 계정의 경우 조직 정책에 따라 개별 사용자 계정이 로컬이어야 하는지 또는 외부 인증 소스를 사용해야 하는지 결정합니다. Ansible Automation Platform 구성 요소에서 유지 관리 작업을 수행해야 하는 사용자만 암호화 키 및 서비스 암호와 같은 중요한 정보가 포함된 구성 파일을 저장하므로 기본 RHEL 서버에 대한 액세스 권한을 부여해야 합니다. 이러한 개인은 Ansible Automation Platform 서비스를 유지 관리하려면 권한 있는 액세스 권한이 있어야 하므로 기본 RHEL 서버에 대한 액세스를 최소화하는 것이 중요합니다. 신뢰할 수 없는 사용자에게 root 계정 또는 로컬 Ansible Automation Platform 서비스 계정(awx, pulp, postgres)에 대한 sudo 액세스 권한을 부여하지 마십시오.
일부 로컬 서비스 계정은 RPM 기반 설치 프로그램으로 생성 및 관리됩니다. 기본 RHEL 호스트의 이러한 특정 계정은 외부 인증 소스에서 가져올 수 없습니다.
2.1.4.2. Ansible Automation Platform 계정 계획
사용자 인터페이스 또는 API에 액세스하기 위한 Ansible Automation Platform 사용자 계정은 로컬(Ansible Automation Platform 데이터베이스에 저장)이거나 LDAP( Lightweight Directory Access Protocol ) 서버와 같은 외부 인증 소스에 매핑될 수 있습니다. 이 가이드에서는 가능한 경우 모든 기본 사용자 계정을 외부 인증 소스에 매핑해야 합니다. 외부 계정 소스를 사용하면 이 컨텍스트에서 권한을 사용하여 작업할 때 오류 소스가 제거되며 Ansible Automation Platform에서만 전체 사용자 세트를 유지 관리하는 데 소요되는 시간을 최소화합니다. 여기에는 외부 애플리케이션 통합을 위해 사용되는 서비스 계정과 같이 개별 개인에게 할당된 계정뿐만 아니라 비인사 엔티티에 대해 할당되는 계정이 포함됩니다. 외부 인증 메커니즘을 사용할 수 없는 긴급 액세스 또는 "트래킹" 시나리오의 경우 기본 "admin" 계정과 같은 모든 로컬 계정을 예약합니다.
- LDAP
- SAML
- TACACS+
- RADIUS
- Azure Active Directory
- Google OAuth
- 일반 OIDC
- Keycloak
- GitHub
- GitHub 조직
- GitHub 팀
- GitHub enterprise
- GitHub 엔터프라이즈 조직
- GitHub 엔터프라이즈 팀
조직의 인증 정책을 준수하는 인증 메커니즘을 선택하고 액세스 관리 및 인증을 참조하여 관련 인증 메커니즘에 대한 사전 요구 사항을 파악합니다. 사용되는 인증 메커니즘은 트래픽이 퍼블릭 또는 비보안 네트워크(예: TLS를 통해 LDAPS 또는 LDAP, OAuth2 및 SAML 공급자의 HTTPS 등)에서 발생할 때 Ansible Automation Platform과 인증 백엔드 간의 인증 관련 트래픽이 암호화되도록 해야 합니다.
Ansible Automation Platform UI에서 "시스템 관리자" 계정은 인벤토리 또는 자동화 정의를 편집, 변경 및 업데이트할 수 있습니다. 이러한 계정 권한을 낮은 수준의 자동화 컨트롤러 구성 및 재해 복구에 가능한 최소 사용자 세트로 제한합니다.
Ansible Automation Platform 2.5에는 모든 플랫폼 구성 요소에서 사용하는 새로운 중앙 인증 메커니즘이 도입되었습니다.
- 자동화 컨트롤러
- 프라이빗 자동화 허브
- 이벤트 기반 Ansible 컨트롤러
2.5 이전에는 이러한 각 구성 요소에 고유한 인증 구성이 있었습니다.
2.1.5. 로깅 및 로그 캡처
가시성 및 분석은 Enterprise Security 및 Zero Trust Architecture의 중요한 요소입니다. 로깅은 작업을 캡처하고 감사를 전달하는 핵심입니다. Red Hat Enterprise Linux 보안 강화 가이드의 시스템 감사 섹션에 설명된 기본 제공 감사 지원을 사용하여 로깅 및 감사를 관리할 수 있습니다. 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.6. 감사 및 사고 탐지
Ansible Automation Platform은 다음과 같은 일반적인 사용 사례에 NIST Cybersecurity Framework를 적용하여 보안 정책 요구 사항을 충족하는 데 사용해야 합니다.
- Red Hat Enterprise Linux의 웹 서버에 HTTPS가 필요합니다.
- Red Hat Enterprise Linux의 웹 서버와 데이터베이스 서버 간의 내부 통신을 위해 TLS 암호화가 필요합니다.
- 정책이 올바르게 배포되었음을 나타내는 보고서를 생성합니다.
- 정책을 위반하는 드리프트 모니터링.
- 정책 위반의 자동화.
이 작업은 보안 보안 프레임 워크의 5 단계로 수행 할 수 있습니다.
- 식별
- 보안 정책에 따라 구현할 요구 사항을 정의합니다.
- 보호
- 요구 사항을 Ansible 플레이북으로 구현하고 적용합니다.
- DETECT
- 드리프트 모니터링 및 감사 보고서를 생성합니다.
- 응답
- 사고가 감지될 때 수행할 수 있는 작업을 살펴봅니다.
- 복구
- Ansible을 사용하여 시스템을 알려진 양호한 구성으로 복원합니다.
2.1.7. 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(Internet Security ), STIG, HIPAA( Health Insurance Portability and Accountability Act ) 및 조직에서 사용하는 조직). 이 문서에서는 모든 새로운 배포에 대해 Red Hat Enterprise Linux 9를 권장합니다. 컨테이너 기반 설치 방법을 사용하는 경우 Red Hat Enterprise Linux 9가 필요합니다.
2.1.7.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 설치 프로그램에서 관리하며 업그레이드를 수행할 때 수동 변경 사항을 취소할 수 있습니다.
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 서버여야 합니다. 설치 계획에 설명된 대로 Ansible Automation Platform 설치 프로그램을 가져오고 Red Hat Ansible Automation Platform 설치 프로그램 인벤토리 파일 편집에 설명된 대로 설치 프로그램 인벤토리 파일을 생성합니다. 이 인벤토리 파일은 업그레이드, 인프라 구성 요소 추가, 설치 프로그램에서 Day-two 작업 등에 사용되므로 향후 작동을 위해 설치 후 파일을 보존합니다.
설치 호스트에 대한 액세스는 Ansible Automation Platform 인프라 관리를 담당하는 인력으로만 제한되어야 합니다. 시간이 지남에 따라 설치 인벤토리(Ansible Automation Platform의 초기 로그인 인증 정보 포함), 사용자 제공 PKI 키 및 인증서, 백업 파일 등 중요한 정보가 포함됩니다. 인프라 관리 및 유지 관리에 필요한 경우 SSH를 통해 Ansible Automation Platform 인프라 서버에 로그인하는 데 설치 호스트를 사용해야 합니다.
2.2.2. 설치 인벤토리의 security-relevant 변수
설치 인벤토리 파일은 Ansible Automation Platform 인프라의 아키텍처를 정의하고 인프라 구성 요소의 초기 구성을 수정하는 데 사용할 수 있는 여러 변수를 제공합니다. 설치 프로그램 인벤토리에 대한 자세한 내용은 설치 프로그램 인벤토리 파일 정보를 참조하십시오.
다음 표에는 여러 보안 관련 변수와 RPM 기반 배포에 권장되는 값이 나열되어 있습니다.
RPM 배포 변수 | 권장 값 | 세부 정보 |
---|---|---|
| true | 설치 프로그램은 이 변수가 설정될 때 SSL 기반 연결을 수락하도록 설치 관리자 관리 Postgres 데이터베이스를 구성합니다. 이 변수의 기본값은 false입니다. 즉 PostgreSQL 연결에 SSL/TLS가 사용되지 않습니다. true로 설정하면 플랫폼이 SSL/TLS를 사용하여 PostgreSQL에 연결됩니다. |
| verify-full | 이러한 변수는 데이터베이스에 대한 상호 TLS(mTLS) 인증을 제어합니다. 기본적으로 각 서비스가 데이터베이스에 연결하면 암호화된 연결을 시도하지만 적용되지는 않습니다.
이 변수를 참고: 설치 관리자 관리 데이터베이스 대신 타사 데이터베이스를 사용하는 경우 mTLS 연결을 수락하도록 타사 데이터베이스를 독립적으로 설정해야 합니다. |
| false |
기본값은 |
다음 표에는 컨테이너 기반 배포에 대한 여러 보안 관련 변수와 권장 값이 나열되어 있습니다.
컨테이너 배포 변수 | 권장 값 | 세부 정보 |
---|---|---|
| false |
기본값은
설치 프로그램 인벤토리에서 이 변수가 없는 경우 변수를 |
| verify-full | 이러한 변수는 데이터베이스에 대한 상호 TLS(mTLS) 인증을 제어합니다.
기본적으로 각 서비스가 데이터베이스에 연결하면 암호화된 연결을 시도하지만 적용되지는 않습니다. 이 변수를 참고 설치 관리자 관리 데이터베이스 대신 타사 데이터베이스를 사용하는 경우 mTLS 연결을 수락하도록 타사 데이터베이스를 독립적으로 설정해야 합니다. |
|
|
기본값은
이러한 변수가 설치 프로그램 인벤토리에 없는 경우 변수를 |
|
| 'true'로 설정하면 이러한 변수는 각 구성 요소 웹 서비스에 대한 HTTPS Strict Transport Security(HSTS) 연결을 비활성화합니다.
기본값은
설치 프로그램 인벤토리에서 이러한 변수가 없는 경우 변수를 |
로드 밸런서가 여러 플랫폼 게이트웨이 앞에 사용되는 엔터프라이즈 아키텍처에서는 로드 밸런서에서 SSL 클라이언트 연결을 종료하거나 개별 AAP 서버로 전달할 수 있습니다. 로드 밸런서에서 SSL을 종료하는 경우 이 가이드에서는 트래픽을 로드 밸런서에서 개별 Ansible Automation Platform 서버로 다시 암호화할 것을 권장합니다. 이렇게 하면 엔드 투 엔드 암호화를 사용할 수 있습니다. 이 시나리오에서는 나열된 *_disable_https
변수가 기본값 false
로 설정됩니다.
2.2.3. 사용자 제공 PKI 인증서로 설치
기본적으로 Ansible Automation Platform은 플랫폼의 인프라 구성 요소에 대해 자체 서명된 PKI( Public Key Infrastructure ) 인증서를 생성합니다. 기존 PKI 인프라를 사용할 수 있는 경우 자동화 컨트롤러, 프라이빗 자동화 허브, 이벤트 기반 Ansible 컨트롤러 및 사후 데이터베이스 서버에 대한 인증서를 생성해야 합니다. 인증서를 확인하는 데 사용되는 CA 인증서와 함께 인증서 파일 및 관련 키 파일을 설치 프로그램 디렉터리에 복사합니다.
다음 인벤토리 변수를 사용하여 새 인증서로 인프라 구성 요소를 구성합니다.
RPM 변수 | 컨테이너화된 변수 | 세부 정보 |
|
| 사용자 정의 CA 인증서 파일의 경로입니다. 설정된 경우 사용자 정의 CA 인증서가 시스템 신뢰 저장소에 설치됩니다. |
|
| 설치 프로그램 디렉터리에 있는 자동화 컨트롤러 PKI 인증서의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 자동화 컨트롤러 PKI 키의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 프라이빗 자동화 허브 PKI 인증서의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 개인 자동화 허브 PKI 키의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 데이터베이스 서버 PKI 인증서의 파일 이름입니다. 이 변수는 타사 데이터베이스가 사용되는 경우가 아니라 설치 관리자 관리 데이터베이스 서버에만 필요합니다. |
|
| 설치 프로그램 디렉터리에 있는 데이터베이스 서버 PKI 키의 파일 이름입니다. 이 변수는 타사 데이터베이스가 사용되는 경우가 아니라 설치 관리자 관리 데이터베이스 서버에만 필요합니다. |
|
| 설치 프로그램 디렉터리에 있는 이벤트 기반 Ansible 컨트롤러 PKI 인증서의 파일 이름입니다. |
|
| 설치 프로그램 디렉터리에 있는 이벤트 기반 Ansible 컨트롤러 PKI 키의 파일 이름입니다. |
- |
| 설치 프로그램 디렉터리에 있는 플랫폼 게이트웨이 PKI 인증서의 파일 이름입니다. |
- |
| 설치 프로그램 디렉터리에 있는 플랫폼 게이트웨이 PKI 키의 파일 이름입니다. |
로드 밸런서와 함께 여러 플랫폼 게이트웨이가 배포되면 gateway_tls_cert
및 gateway_tls_key
는 각 플랫폼 게이트웨이에서 공유합니다. 호스트 이름이 일치하지 않도록 하려면 인증서의 CN( 일반 이름 )이 로드 밸런서에서 사용하는 DNS FQDN과 일치해야 합니다. 조직 정책에 각 서비스에 대한 고유한 인증서가 필요한 경우 각 인증서에 로드 밸런싱 서비스에 사용되는 DNS FQDN과 일치하는 SAN( 주체 대체 이름 )이 필요합니다. 각 플랫폼 게이트웨이에 고유한 인증서와 키를 설치하려면 설치 인벤토리 파일의 인증서 및 키 변수를 [all:vars]
섹션 대신 호스트별 변수로 정의해야 합니다. 예를 들면 다음과 같습니다.
[automationgateway] gateway0.example.com gateway_tls_cert=/path/to/cert0 gateway_tls_key=/path/to/key0 gateway1.example.com gateway_tls_cert=/path/to/cert1 gateway_tls_key=/path/to/key1 [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
[automationgateway]
gateway0.example.com gateway_tls_cert=/path/to/cert0 gateway_tls_key=/path/to/key0
gateway1.example.com gateway_tls_cert=/path/to/cert1 gateway_tls_key=/path/to/key1
[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.5-1-x86_64
-
ansible-vault create vault.yml
새 Ansible 자격 증명 모음에 대한 암호를 입력하라는 메시지가 표시됩니다. 2일차 작업 및 백업 프로시저를 포함하여 자격 증명 모음 파일에 액세스해야 할 때마다 자격 증명 모음 암호를 손실하지 마십시오. 암호화된 암호 관리자에 저장하거나 암호를 안전하게 저장하기 위한 조직 정책에 따라 vault 암호를 보호할 수 있습니다.
중요한 변수를 자격 증명 모음에 추가합니다. 예를 들면 다음과 같습니다.
admin_password/controller_admin_password: <secure_controller_password> pg_password/controller_pg_password: <secure_db_password> automationhub_admin_password/hub_admin_password: <secure_hub_password> automationhub_pg_password/hub_pg_password: <secure_hub_db_password> automationedacontroller_admin_password/eda_admin_password: <secure_eda_password> automationedacontroller_pg_password/eda_pg_password: <secure_eda_db_password> -/gateway_admin_password: <secure_gateway_password> -/gateway_pg_password:<secure_gateway_db_password>
admin_password/controller_admin_password: <secure_controller_password>
pg_password/controller_pg_password: <secure_db_password>
automationhub_admin_password/hub_admin_password: <secure_hub_password>
automationhub_pg_password/hub_pg_password: <secure_hub_db_password>
automationedacontroller_admin_password/eda_admin_password: <secure_eda_password>
automationedacontroller_pg_password/eda_pg_password: <secure_eda_db_password>
-/gateway_admin_password: <secure_gateway_password>
-/gateway_pg_password:<secure_gateway_db_password>
이러한 변수가 설치 인벤토리 파일에도 표시되지 않는지 확인합니다. 새 Ansible 자격 증명 모음을 설치 프로그램과 함께 사용하려면 ./setup.sh -e @vault.ymlEngine-listener--ask-vault-pass
명령으로 실행합니다.
2.2.5. 컴플라이언스 프로필 고려 사항
대부분의 환경에서는 CIS Critical Security Controls, PCI/DSS( Payment Card Industry/Data Security Standard ), DISA STIG 또는 유사한 프로필과 같은 규정 준수 프로필의 요구 사항을 충족하기 위해 보안 제어가 적용된 Red Hat Enterprise Linux 시스템에 Ansible Automation Platform을 설치해야 할 수 있습니다. 이러한 환경에는 Ansible Automation Platform이 올바르게 실행되도록 수정해야 하는 특정 보안 제어 세트가 있습니다. 설치 전에 Ansible Automation Platform에 사용되는 Red Hat Enterprise Linux 서버에 규정 준수 프로필 제어를 적용한 다음 필요에 따라 다음 보안 제어를 수정합니다.
이러한 제어가 필요한 환경에서는 보안 감사자와의 제어를 포기합니다.
2.2.5.1. fapolicyd
규정 준수 정책에서 fapolicyd
데몬을 실행해야 할 수 있습니다. 그러나 Ansible Automation Platform은 현재 fapolicyd
정책을 강제할 때 지원되지 않습니다. 이로 인해 Ansible Automation Platform 설치 및 작동 중 오류가 발생합니다. 이로 인해 설치 프로그램은 fapolicyd
가 강제 정책인 경우 설치를 중지하는 pre-flight 검사를 실행합니다. 이 가이드에서는 다음 단계를 사용하여 fapolicyd
를 Ansible Automation Platform에서 허용 모드로 설정하는 것이 좋습니다.
-
/etc/fapolicyd/fapolicyd.conf
파일을 편집하고 "permissive = 1"을 설정합니다. 명령을 사용하여 서비스를 다시 시작
sudo systemctl restart fapolicyd.service
이 보안 제어도 설치 호스트에 적용되면 기본 fapolicyd
구성으로 Ansible Automation Platform 설치 프로그램이 실패합니다. 이 경우 설치 호스트에서 fapolicyd
를 허용 모드로 설정하는 것이 좋습니다.
2.2.5.2. "noexec"로 마운트된 파일 시스템
규정 준수 프로필에서는 이러한 파일 시스템에 있는 바이너리 실행을 방지하기 위해 noexec
옵션으로 특정 파일 시스템을 마운트해야 할 수 있습니다. Ansible Automation Platform RPM 기반 설치 프로그램은 다음 파일 시스템 중 하나가 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. 사용자 네임스페이스
Linux 컨테이너의 시작을 방지하려면 규정 준수 프로필에서 커널 설정 user.max_user_namespaces
를 "0"으로 설정해야 할 수 있습니다. 예를 들어 DISA STIG는 특히 Linux 컨테이너가 필요하지 않은 경우에만 이 제어가 필요합니다. Ansible Automation Platform은 컨테이너에서 설치 및 작동할 수 있으며 컨테이너를 실행 환경 기능의 일부로 사용하므로 Linux 컨테이너를 비활성화해야 합니다.
user.max_user_namespaces
커널 설정을 확인하려면 설치 인벤토리의 각 Ansible Automation Platform 구성 요소에서 다음 단계를 완료합니다.
- 명령줄에서 자동화 컨트롤러에 로그인합니다.
-
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. 대화형 세션 시간 초과
규정 준수 프로필을 사용하려면 대화형 세션 시간 초과를 적용해야 할 수 있습니다. 예를 들어 DISA STIG에서는 모든 사용자가 15분 동안 활동이 없으면 자동으로 로그아웃해야 합니다. 설치 프로세스를 완료하는 데 1시간 이상 걸리는 경우가 많으며, 이 제어로 인해 설치가 완료되기 전에 설치 프로세스를 중지하고 사용자를 로그아웃할 수 있습니다. 이는 백업 및 복원과 같은 2일차 운영에도 적용됩니다. 이 작업에서는 프로덕션 환경에서 권장되는 대화형 세션 시간 초과보다 오래 걸리는 경우가 많습니다. 이러한 작업 중에 대화형 세션 시간 제한을 늘리면 작업이 성공적으로 수행됩니다.
쉘 시간 제한 변수, systemd-logind
에 대한 유휴 세션 시간 제한 설정, SSH 연결 시간 초과 설정 등 이 제어를 적용할 수 있는 방법은 여러 가지가 있으며, 다른 규정 준수 프로필은 이러한 방법 중 하나 이상을 사용할 수 있습니다. 설치를 가장 자주 중단하고 2일차 작업은 systemd-logind
의 유휴 세션 시간 초과로, DISA STIG 버전 V2R1 및 V2R2(Red Hat Enterprise Linux 9)에 도입된 systemd-logind의 유휴 세션 시간 초과입니다. root 사용자로 systemd-logind
의 유휴 세션 시간 초과를 늘리려면 다음을 수행합니다.
-
/etc/systemd/logind.conf
파일을 편집합니다. -
StopIdleSessionSec
설정이 0으로 설정된 경우 변경이 필요하지 않습니다. StopIdleSessionSec
설정이 0이 아닌 경우 해당 시간 후에 세션이 종료됨을 나타냅니다.StopIdleSessionSec=7200
을 변경하여 시간 제한을 증가한 다음systemctl restart systemd-logind
를 실행하여 변경 사항을 적용합니다.- 대화형 세션에서 완전히 로그아웃하고 새 설정이 현재 로그인 세션에 적용되도록 다시 로그인합니다.
이러한 변경은 설치 호스트에서만 수행하거나 설치 호스트를 사용하지 않는 경우 Ansible Automation Platform 설치 프로그램이 실행되는 호스트만 변경해야 합니다.
2.2.5.5. sudo 및 NOPASSWD
규정 준수 프로필을 사용하려면 sudo 권한이 있는 모든 사용자가 암호를 제공해야 합니다(즉, sudoers 파일에서 NOPASSWD
지시문을 사용해서는 안 됩니다). Ansible Automation Platform 설치 프로그램은 권한 있는 사용자로 많은 작업을 실행하고 기본적으로 암호 없이 권한을 승격할 수 있을 것으로 예상합니다. 권한 상승을 위해 설치 프로그램에 암호를 제공하려면 RPM 설치 프로그램 스크립트를 시작할 때 다음 옵션을 추가합니다.
./setup.sh <setup options> --ask-become-pass
.
컨테이너 기반 설치 프로그램의 경우:
ansible-playbook ansible.containerized_installer.install --ask-become-pass
설치 프로그램이 실행되면 권한을 얻기 위해 사용자 암호를 입력하라는 메시지가 표시됩니다.
--ask-become-pass
옵션을 사용하는 것은 백업 및 복원과 같은 day-two 작업에 대해 설치 프로그램을 실행하는 경우에도 적용됩니다.
2.3. 초기 구성
시스템의 특정 부분에 대한 액세스 권한을 부여하면 보안 취약점이 노출됩니다. 액세스 보안을 위해 다음 사례를 적용합니다.
- 시스템 관리 계정에 대한 액세스를 최소화합니다. 사용자 인터페이스(웹 인터페이스)와 자동화 컨트롤러가 실행 중인 운영 체제에 대한 액세스에는 차이점이 있습니다. 시스템 관리자 또는 슈퍼 사용자는 모든 시스템 애플리케이션에 액세스, 편집 및 중단할 수 있습니다. 자동화 컨트롤러에 대한 루트 액세스 권한을 가진 모든 사용자는 이러한 인증 정보를 해독할 수 있으므로 시스템 관리 계정에 대한 액세스를 최소화하는 것이 보안 시스템을 유지하는 데 중요합니다.
- 로컬 시스템 액세스를 최소화합니다. 자동화 컨트롤러에는 관리 목적을 제외하고 로컬 사용자 액세스 권한이 필요하지 않아야 합니다. 관리자가 아닌 사용자는 자동화 컨트롤러 시스템에 액세스할 수 없어야 합니다.
- 업무 분리를 시행합니다. 자동화 구성 요소가 서로 다른 수준에서 시스템에 액세스해야 할 수 있습니다. 하나의 키 또는 인증 정보 취약점의 영향을 최소화하도록 각 구성 요소에 대해 서로 다른 키 또는 인증 정보를 사용합니다.
- 자동화 컨트롤러를 낮은 수준의 자동화 컨트롤러 구성 및 재해 복구에만 가능한 최소 사용자 세트로 제한합니다. 자동화 컨트롤러 컨텍스트에서 모든 자동화 컨트롤러 '시스템 관리자' 또는 '슈퍼유저' 계정은 자동화 컨트롤러에서 인벤토리 또는 자동화 정의를 편집, 변경, 업데이트할 수 있습니다.
2.3.1. 구성을 코드 패러다임으로 사용
Red Hat Community of Practice는 Ansible Automation Platform 인프라 및 구성을 코드로 관리하기 위해 컬렉션을 통해 사용할 수 있는 자동화 콘텐츠 세트를 생성했습니다. 이를 통해 CaC( Configuration as Code )를 통해 플랫폼 자체를 자동화할 수 있습니다. 이 접근 방식의 많은 이점이 명확하지만 고려해야 할 보안 영향이 있습니다.
다음 Ansible 콘텐츠 컬렉션은 인프라를 코드 방법론으로 사용하여 Ansible Automation Platform 구성 요소를 관리하는 데 사용할 수 있으며, 모두 Ansible Automation Hub 에 있습니다.
검증된 컬렉션 | 컬렉션 용도 |
| 설치, 백업 및 복원, 인증서 관리 등 Ansible Automation Platform의 Day 1 및 Day 2 작업을 자동화하는 Ansible 콘텐츠입니다. |
|
사용자 및 그룹(RBAC), 프로젝트, 작업 템플릿 및 워크플로우, 인증 정보 등을 포함하여 Ansible Automation Platform 구성 요소 생성을 관리하는 역할 컬렉션입니다. 이 컬렉션에는 이전 |
| 실행 환경 이미지를 생성 및 관리하거나 이전 Tower Virtualenvs에서 실행 환경으로 마이그레이션하는 역할 컬렉션입니다. |
많은 조직에서 CI/CD 플랫폼을 사용하여 파이프라인 또는 이러한 유형의 인프라를 관리하는 다른 방법을 구성합니다. 그러나 Ansible Automation Platform을 기본적으로 사용하면 Git 기반 리포지토리를 기본적으로 연결하도록 Webhook를 구성할 수 있습니다. 이러한 방식으로 Ansible은 Git 이벤트에 응답하여 작업 템플릿을 직접 트리거할 수 있습니다. 이렇게 하면 이 전체 프로세스에서 외부 CI 구성 요소가 필요하지 않으므로 공격 면적이 줄어듭니다.
이러한 사례를 통해 모든 인프라 및 구성을 버전 제어할 수 있습니다. Ansible Automation Platform에 동기화되기 전에 적절한 코드 품질 검사를 보장하기 위해 Git 모범 사례를 적용합니다. 관련 Git 모범 사례는 다음과 같습니다.
- 가져오기 요청 생성.
- 검사 도구가 있는지 확인합니다.
- 일반 텍스트 보안이 커밋되지 않도록 합니다.
- 사전 커밋 후크 및 기타 정책이 준수되었는지 확인합니다.
CAC는 또한 중요한 데이터를 리포지토리에 저장하거나 필요에 따라 개별적으로 자격 증명 모음 파일을 처리할 필요가 없는 외부 자격 증명 모음 시스템을 사용하는 것이 좋습니다. 이는 자동화 컨트롤러 자격 증명 및 이벤트 기반 Ansible 인증 정보를 소스 리포지토리에 커밋해서는 안 되는 일반 텍스트로 컬렉션 변수에 제공해야 하므로 소스 코드 리포지토리에 Ansible Automation Platform 구성을 저장할 때 특히 중요합니다. 외부 자격 증명 모음 시스템 사용에 대한 자세한 내용은 이 가이드의 외부 인증 정보 자격 증명 모음 고려 사항 섹션을 참조하십시오.
2.3.2. 중앙 집중식 로깅 구성
시스템 보안을 모니터링하고 대규모 로그 분석을 수행하는 데 필요한 중앙 집중식 로깅이 필요합니다. 미군 과 정부의 아이디어로 부터 시작된 CIA(Confidentiality, Integrity, Availability ) triad는 적절한 보안 시스템 개발 및 모범 사례의 기반이 되는 모델입니다. 중앙 집중식 로깅은 데이터 또는 시스템이 변조되었는지 확인하는 데 도움이 되는 무결성 측면 아래에 있습니다. 중앙 집중식 시스템에 로깅하면 단일 위치에서 모든 로그를 수집하여 여러 시스템에서 자동화 문제를 해결할 수 있으므로 문제를 쉽게 식별하고 추세를 분석하고, 특히 복잡한 Ansible Automation Platform 배포에서 서로 다른 서버의 이벤트를 연관시킬 수 있습니다. 그렇지 않으면 개별 머신을 수동으로 확인하는 데 시간이 걸리므로 보안 모범 사례를 충족하는 것 외에도 디버깅과 함께 이 기능이 중요합니다. 이를 통해 전체 시스템 상태, 안정성 및 잠재적인 보안 위협을 식별하는 데 도움이 됩니다. 로깅 구성 외에도 스토리지 용량으로 인한 로그 실패, 하드웨어 장애 및 고가용성 아키텍처를 고려해야 합니다.
다음과 같은 몇 가지 추가 이점이 있습니다.
- 데이터는 사용자 지정 처리기에서 또는 가져온 라이브러리를 통해 엔지니어링된 최소 서비스별 조정을 사용하여 HTTP 연결을 통해 JSON 형식으로 전송됩니다. 컨트롤러에 가장 유용한 데이터 유형은 작업 팩트 데이터, 작업 이벤트/작업 실행, 활동 스트림 데이터, 로그 메시지입니다.
- 플레이북 실행 세부 정보, 작업 결과 및 시스템 이벤트를 포함하여 인프라의 다양한 부분에서 로그를 분석하여 자동화 프로세스에 대한 깊은 통찰력을 제공합니다.
- 로그에서 실행 시간 및 리소스 사용량을 분석하여 성능 병목 현상을 식별하고 Ansible 플레이북을 최적화합니다.
- 중앙 집중식 로깅은 감사 목적으로 단일 정보 소스를 제공하여 규정 준수 의무를 충족하는 데 도움이 됩니다.
- 타사는 Splunk, Logstash, ElasticSearch 또는 Loggly와 같은 중앙 집중식 로그 관리 플랫폼과 통합하여 로그를 수집하고 분석합니다.
로깅 수집기 서비스는 다음과 같은 모니터링 및 데이터 분석 시스템에서 작동합니다.
- Splunk
- Loggly
- Sumologic
- 탄력적 스택(이전 ELK 스택)
중앙 집중식 로깅을 위해 수집기 유형에 대한 로깅을 설정하려면 다음 단계를 따르십시오.
절차
- 탐색 패널에서 → 을 선택합니다.
- 로깅 설정 페이지에서 을 클릭합니다.
다음 옵션을 구성할 수 있습니다.
- 로깅 수집기: 로그를 보낼 호스트 이름 또는 IP 주소를 입력합니다.
로깅 수집기 포트: 필요한 경우 수집기 포트를 지정합니다.
참고연결 유형이 HTTPS인 경우 포트 번호가 있는 URL로 호스트 이름을 입력할 수 있습니다. 그 후에는 포트를 다시 입력할 필요가 없습니다. 그러나 TCP 및 UDP 연결은 URL이 아닌 호스트 이름 및 포트 번호 조합에 의해 결정됩니다. 따라서 TCP 또는 UDP 연결의 경우 지정된 필드에 포트를 제공합니다. 대신 로깅 수집기 필드에 URL을 입력하면 호스트 이름 부분이 호스트 이름으로 추출됩니다.
- 로깅 수집기 유형: 목록에서 수집기 서비스를 클릭하여 선택합니다.
- 로깅 수집기 사용자 이름: 필요한 경우 로깅 수집기의 사용자 이름을 입력합니다.
- 로깅 수집기 암호/토큰: 필요한 경우 로깅 수집기의 암호를 입력합니다.
-
로그 수집기 양식에 데이터를 전송하는 로거: 기본적으로 네 가지 데이터 유형이 모두 미리 채워집니다. 각 데이터 유형에 대한 자세한 내용은 필드 옆에 있는 툴팁
아이콘을 클릭합니다. 원하지 않는 데이터 유형을 삭제합니다.
- 클러스터 전체 고유 식별자: 이 ID를 사용하여 인스턴스를 고유하게 식별합니다.
- 로깅 수집기 프로토콜: 로깅 수집기와 통신할 연결 유형(프로토콜)을 클릭하여 선택합니다. 후속 옵션은 선택한 프로토콜에 따라 달라집니다.
- TCP 연결 시간 초과: 연결 시간 초과를 초 단위로 지정합니다. 이 옵션은 HTTPS 및 TCP 로그 수집기 프로토콜에만 적용할 수 있습니다.
- 로깅 수집기 수준 임계값: 로그 처리기에서 보고할 심각도 수준을 선택합니다.
-
로그 작업 큐에 저장할 수 있는 최대 메시지 수:
rsyslog
작업 큐 가 저장된 메시지 수에서 증가할 수 있는 크기를 정의합니다. 이는 메모리 사용에 영향을 미칠 수 있습니다. 큐가 이 번호의 75%에 도달하면 큐에 디스크 쓰기를 시작합니다(rsyslog
의queue.highWatermark
). 90%에 도달하면NOTICE
,INFO
,DEBUG
메시지가 삭제되기 시작합니다(
가 있는 queue.discardmark).queue.discard
Severity=5 -
rsyslogd 작업 대기열(GB)의 최대 디스크 지속성:
rsyslog
작업이 들어오는 메시지를 처리하는 데 시간이 걸리는 경우 저장할 데이터 양(GB 단위)입니다(기본값: 1). 작업의rsyslogd queue.maxdiskspace
설정(예:omhttp
)과 동일합니다.LOG_AGGREGATOR_MAX_DISK_USAGE_PATH
에 지정된 디렉터리에 파일을 저장합니다. -
rsyslogd 디스크 지속성을 위한 파일 시스템 위치: 외부 로그 수집기가 중단된 후 다시 시도해야 하는 로그를 유지할 위치(기본값:
/var/lib/awx
).rsyslogd queue.spoolDirectory
설정과 동일합니다. - API 4XX 오류의 로그 형식: 특정 오류 메시지 구성. 자세한 내용은 API 4XX 오류 구성 설정을 참조하십시오.
-
시스템 추적 사실을 개별적으로 기록: 설정할지 또는 기본적으로 해제할지 여부와 같은 추가 정보를 보려면 툴팁
아이콘을 클릭합니다.
선택한 로깅 집계에 대한 입력을 검토합니다.
- 외부 로깅 활성화: 외부 로그 수집기로 로그를 보내려면 이 확인란을 선택합니다.
- HTTPS 인증서 확인 활성화/비활성화: HTTPS 로그 프로토콜에 대해 기본적으로 인증서 확인이 활성화됩니다. 로그 처리기에서 연결을 설정하기 전에 외부 로그 수집기가 전송한 HTTPS 인증서를 확인하려면 이 확인란을 선택합니다.
-
rsyslogd 디버깅 활성화:
rsyslogd
에 대한 상세 정보 표시 디버깅을 활성화하려면 이 확인란을 선택합니다. 외부 로그 집계에 대한 연결 문제를 디버깅하는 데 유용합니다.
- 또는 를 클릭하여 변경 사항을 취소합니다.
다음 단계에서는 LDAP 로깅을 활성화합니다.
LDAP에 대한 로깅을 활성화하려면 다음 절차를 사용하십시오.
절차
게이트웨이 설정 파일을 편집합니다.
-
Ansible Automation Platform2.5 Containerized에서 파일은
~/aap/gateway/etc/settings.py
(플랫폼 게이트웨이 컨테이너를 실행하는 사용자)입니다. Ansible Automation Platform2.5 RPM 기반에서 파일은
/etc/ansible-automation-platform/gateway/settings.py
입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow (...) CACHES['fallback']['LOCATION'] = '/var/cache/ansible-automation-platform/gateway' LOGGING['loggers']['aap']['level'] = 'INFO' LOGGING['loggers']['ansible_base']['level'] = 'INFO' LOGGING['loggers']['django_auth_ldap']['level'] = 'DEBUG' ###### add this line (...)
(...) CACHES['fallback']['LOCATION'] = '/var/cache/ansible-automation-platform/gateway' LOGGING['loggers']['aap']['level'] = 'INFO' LOGGING['loggers']['ansible_base']['level'] = 'INFO' LOGGING['loggers']['django_auth_ldap']['level'] = 'DEBUG' ###### add this line (...)
-
Ansible Automation Platform2.5 Containerized에서 파일은
플랫폼 게이트웨이 서비스 또는 컨테이너를 다시 시작합니다.
Ansible Automation Platform2.5 Containerized에서 플랫폼 게이트웨이 컨테이너를 다시 시작하도록 플랫폼 게이트웨이 서비스를 다시 시작합니다.
참고다음과 같이
'--user' 플래그를 사용하여 systemctl
을 실행해야 합니다.+
$ systemctl --user restart automation-gateway
Ansible Automation Platform2.5 RPM 기반에서
automation-gateway-service
명령을 사용합니다.# automation-gateway-service restart
다음 규정 준수 요구 사항의 몇 가지 예는 US DoD Security Technical Implementation Guide 에서 제공되지만 무결성 및 보안 모범 사례로 돌아갑니다.
자동화 컨트롤러는 수정 또는 거부를 방지하기 위해 독립적인 보호된 리포지토리에서 사용자 활동 로그를 수집할 수 있는 외부 로그 공급자를 사용해야 합니다. 외부 로깅을 사용하여 서버 내의 여러 구성 요소에서 로그 레코드를 컴파일하도록 자동화 컨트롤러를 구성해야 합니다. 정확한 법의학 분석을 수행하기 위해 발생하는 이벤트는 시간 상관관계여야 합니다. 또한 상관관계는 특정 허용 기준을 충족해야 합니다.
다음 단계에서는 보안 제어를 구현합니다.
절차
- 자동화 컨트롤러에 관리자로 로그인합니다.
- 탐색 패널에서 → 을 선택합니다.
- 로깅 설정 페이지에서 을 클릭합니다.
다음 필드를 설정합니다.
-
로깅 수집기 를
Not configured
로 설정합니다. 이는 기본값입니다. -
외부 로깅 활성화를
On
으로 설정합니다. - 로깅 수집기 수준 임계값 을 DEBUG로 설정합니다.
- TCP 연결 시간 초과 를 5(기본값) 또는 조직의 시간 초과로 설정합니다.
-
HTTPS 인증서 확인 활성화/비활성화 를
On
으로 설정합니다.
-
로깅 수집기 를
- 을 클릭합니다.
자동화 컨트롤러는 로그 실패 시 로그 레코드 스토리지 용량을 할당하고 기본적으로 종료해야 합니다(사용은 재정의되지 않음). 시스템이 로그를 처리하지 못할 위험이 있는 경우 오류를 감지하여 작업을 수행하여 완화해야 합니다. 로그 처리 실패에는 소프트웨어/하드웨어 오류, 로그 캡처 메커니즘의 실패, 도달 또는 초과되는 로그 스토리지 용량이 포함됩니다. 오류가 발생하는 동안 애플리케이션 서버가 고가용성 시스템의 일부가 아닌 한 애플리케이션 서버를 종료하도록 구성해야 합니다. 가용성이 덮어쓰기 문제인 경우 로그 장애에 대한 응답으로 다른 승인된 작업은 다음과 같습니다.
- 로그 레코드 스토리지 용량이 부족하여 오류가 발생한 경우 애플리케이션에서 로그 레코드를 계속 생성해야 합니다(필요한 경우 로그 서비스를 자동으로 다시 시작) 첫 번째 시작 방식으로 가장 오래된 로그 레코드를 덮어써야 합니다.
로그 레코드가 중앙 집중식 컬렉션 서버로 전송되고 이 서버와의 통신이 유실되거나 서버가 실패하는 경우 통신이 복원되거나 로그 레코드가 수동으로 검색될 때까지 애플리케이션은 로컬로 로그 레코드를 큐해야 합니다. 중앙 집중식 컬렉션 서버에 대한 연결을 복원하는 경우 로컬 로그 데이터를 컬렉션 서버와 동기화하려면 작업을 수행해야 합니다.
다음 단계에서는 보안 제어를 구현합니다.
웹 브라우저를 열고 로깅 API,
/api/v2/settings/logging/
로 이동합니다.자동화 컨트롤러 관리자로 인증되었는지 확인합니다.
Content 섹션에서 다음 값을 수정합니다.
-
로그 버퍼링에 대한
LOG_AGGREGATOR_ACTION_MAX_DISK_USAGE_GB
= 조직 정의 요구 사항. -
LOG_AGGREGATOR_MAX_DISK_USAGE_PATH
=/var/lib/awx`
..Click .
-
로그 버퍼링에 대한
자동화 컨트롤러에서 적절한 로그 레코드를 생성해야 합니다. 자동화 컨트롤러의 웹 서버는 문제 해결, 디버깅 및 법의 분석을 지원하기 위해 사용자 세션과 관련된 모든 세부 정보를 기록해야 합니다. 데이터 로깅 기능이 없으면 조직에서 이벤트 조사를 위한 중요한 감사 및 분석 도구가 손실됩니다.
각 자동화 컨트롤러 호스트에 대해 보안 제어를 시스템 관리자로 구현하려면 다음을 수행합니다.
절차
- 탐색 패널에서 → 을 선택합니다. 시스템 설정 페이지가 표시됩니다.
- 클릭합니다.
다음을 설정합니다.
- 활동 스트림 활성화 = On
- 인벤토리 동기화를 위해 활동 스트림 활성화 = On
- 조직 관리자는 사용자와 팀을 관리할 수 있습니다 = On
- 조직 관리자가 모든 사용자를 볼 수 있음 = On
- 을 클릭합니다.
자동화 컨트롤러의 로그 파일은 명시적으로 정의된 권한으로 액세스할 수 있어야 합니다. 자동화 컨트롤러 로그 파일의 기밀성을 유지하지 않으면 공격자는 더 많은 정보를 열거하여 에스컬레이션 또는 나중 이동을 활성화할 수 있는 시스템에 대한 주요 정보를 식별할 수 있습니다.
보안 제어를 구현하려면 다음을 수행합니다.
절차
각 자동화 컨트롤러 호스트의 시스템 관리자로 자동화 컨트롤러 NGINX 로그 디렉터리의 권한 및 소유자를 설정합니다.
- `chmod 770 /var/log/nginx
-
chown nginx:root /var/log/nginx
자동화 컨트롤러 로그 디렉터리의 권한 및 소유자를 설정합니다.
-
chmod 770 /var/log/tower
-
chown awx:awx /var/log/tower
-
자동화 컨트롤러 감독자 로그 디렉터리의 권한 및 소유자를 설정합니다.
-
chmod 770 /var/log/supervisor/
-
chown root:root /var/log/supervisor/
-
로그 하위 시스템 장애 시 자동화 컨트롤러를 다른 시스템으로 장애 조치하도록 구성해야 합니다. 자동화 컨트롤러 호스트는 애플리케이션 로그 처리 실패 감지 시 애플리케이션 및 로깅 기능을 처리할 수 있는 다른 자동화 컨트롤러 호스트로 장애 조치할 수 있어야 합니다. 이를 통해 사용자 및 로그 데이터 손실 및 로그 데이터 손실을 최소화하면서 애플리케이션 및 로깅 함수를 지속적으로 수행할 수 있습니다.
보안 제어를 구현하려면 다음을 수행합니다.
- 자동화 컨트롤러가 HA 구성에 없는 경우 관리자는 자동화 컨트롤러를 다시 설치해야 합니다.
2.3.3. 외부 인증 정보 자격 증명 모음 고려 사항
보안 관리는 보안 자동화 플랫폼을 유지 관리하는 데 중요한 구성 요소입니다. 다음 보안 관리 방법을 사용하는 것이 좋습니다.
- 시스템에 액세스할 수 있는 권한이 없는 사용자가 없는지 확인하고 액세스가 필요한 사용자에게만 부여되어야 합니다. 자동화 컨트롤러는 암호 및 API 토큰과 같은 중요한 정보를 암호화하지만 암호 해독에 키를 저장합니다. 권한이 부여된 사용자는 잠재적으로 모든 것에 액세스할 수 있습니다.
- 외부 시스템을 사용하여 시크릿을 관리합니다. 자격 증명을 업데이트해야 하는 경우 외부 시스템은 내부 시스템보다 덜 복잡한 업데이트된 자격 증명을 검색할 수 있습니다. 시크릿을 관리하기 위한 외부 시스템에는 CyberArk, HashiCorp Vault, Microsoft Azure Key Management 등이 있습니다. 자세한 내용은 자동화 실행 사용의 시크릿 관리 시스템 섹션을 참조하십시오.
2.4. 2일차 작업
Day 2 운영에는 호스트, 프로젝트, 환경 수준 Sustainment를 포함한 Cluster Health and Scaling Checks가 포함됩니다. 구성 및 보안 드리프트를 지속적으로 분석해야 합니다.
2.4.1. RBAC 고려 사항
관리자는 플랫폼 게이트웨이에 빌드된 RBAC( 역할 기반 액세스 제어 )를 사용하여 서버 인벤토리, 조직 등에 대한 액세스를 위임할 수 있습니다. 또한 관리자는 다양한 인증 정보 관리를 중앙 집중화하여 최종 사용자가 해당 시크릿을 최종 사용자에게 노출하지 않고도 필요한 시크릿을 사용할 수 있습니다. RBAC 제어를 통해 Ansible Automation Platform은 보안을 강화하고 관리를 간소화할 수 있습니다.
RBAC는 사용자 또는 팀에 역할을 부여하는 방식에 해당합니다. RBAC는 특정 기능이 설정되는 "오브젝트"를 보거나 변경하거나 삭제할 수 있는 사람 또는 대상을 정확하게 정의하는 역할 측면에서 생각하는 것이 가장 쉽습니다.
Ansible Automation Platform의 RBAC 설계(역할, 리소스 및 사용자)와 관련하여 숙지해야 하는 몇 가지 주요 개념이 있습니다. 사용자는 역할의 멤버일 수 있으므로 해당 역할과 연결된 모든 리소스 또는 "하위" 역할과 연결된 리소스에 대한 특정 액세스 권한을 부여할 수 있습니다.
역할은 기본적으로 기능 컬렉션입니다. 사용자에게 이러한 기능과 컨트롤러의 리소스에 대한 액세스 권한은 할당된 역할 또는 역할 계층 구조를 통해 상속된 역할을 통해 부여됩니다.
역할은 기능 그룹을 사용자 그룹과 연결합니다. 모든 기능은 역할 내의 멤버십에서 파생됩니다. 사용자는 할당된 역할이나 역할 계층 구조를 통해 상속된 역할을 통해서만 기능을 받습니다. 역할의 모든 멤버는 해당 역할에 부여된 모든 기능을 수행할 수 있습니다. 역할은 조직 내에서 비교적 안정적이지만 사용자와 기능은 둘 다 다양하고 빠르게 변경될 수 있습니다. 사용자는 다수의 역할을 가질 수 있습니다.
역할 계층 구조, 액세스 상속, 역할, 권한, 가상 사용자 생성 등에 대한 자세한 내용은 역할 기반 액세스 제어를 사용하여 액세스 관리를 참조하십시오.
다음은 역할 및 리소스 권한이 있는 조직의 예입니다.
그림 2.2. 자동화 컨트롤러 내의 RBAC 역할 범위

사용자 액세스는 특정 사용자에게 권한을 개별적으로 할당하는 대신 시스템 오브젝트(사용자, 그룹, 네임스페이스)에 대한 권한 관리를 기반으로 합니다. 생성한 그룹에 권한을 할당할 수 있습니다. 그런 다음 사용자를 이러한 그룹에 할당할 수 있습니다. 즉, 그룹의 각 사용자에게 해당 그룹에 할당된 권한이 있습니다.
자동화 허브에서 생성된 팀은 내부 컬렉션 관리, 사용자 액세스 구성, 액세스 권한을 사용하여 그룹에 대한 리포지토리 관리를 담당하는 시스템 관리자부터 자동화 허브에 내부적으로 개발된 콘텐츠를 구성하고 업로드할 수 있는 액세스 권한을 가진 그룹에 이르기까지 다양할 수 있습니다.
프라이빗 자동화 허브의 추가 잠금을 위해 보기 전용 액세스를 활성화할 수 있습니다. 보기 전용 액세스를 활성화하면 사용자가 로그인할 필요 없이 개인 자동화 허브의 컬렉션 또는 네임스페이스를 볼 수 있는 액세스 권한을 부여할 수 있습니다. 보기 전용 액세스를 사용하면 개인 자동화 허브에서 모든 항목을 편집할 수 있는 권한 없이 소스 코드를 보거나 다운로드할 수 있는 기능을 제한하면서 권한이 없는 사용자와 콘텐츠를 공유할 수 있습니다. Red Hat Ansible Automation Platform 설치 프로그램에 있는 인벤토리 파일을 편집하여 프라이빗 자동화 허브에 대한 보기 전용 액세스를 활성화합니다.
2.4.2. 업데이트 및 업그레이드
모든 업그레이드에서 현재 업그레이드 중인 대상 버전과 주요 버전의 차이가 두 버전 이하여야 합니다. 예를 들어 자동화 컨트롤러 4.3으로 업그레이드하려면 버전 3.8.x 또는 이전 버전에서 직접 업그레이드 경로가 없기 때문에 먼저 버전 4.1.x에 있어야 합니다. 자세한 내용은 Ansible Automation Platform 업그레이드를 참조하십시오. 자동화 컨트롤러 4.3을 실행하려면 Ansible 2.12 이상도 있어야 합니다.
2.4.2.1. 재해 복구 및 운영 연속성
Ansible Automation Platform을 정기적으로 백업하는 것은 재해 복구 계획에서 중요한 부분입니다. 백업과 복원은 모두 설치 프로그램을 사용하여 수행되므로 이 문서의 앞부분에서 설명하는 전용 설치 호스트에서 이러한 작업을 수행해야 합니다. 이러한 작업을 수행하는 방법에 대한 자세한 내용은 자동화 컨트롤러 설명서의 백업 및 복원 섹션을 참조하십시오.
백업의 중요한 측면은 데이터베이스에 저장된 자격 증명을 해독하는 데 사용되는 시크릿 키와 데이터베이스 복사본을 포함하므로 백업 파일을 안전한 암호화된 위치에 저장해야 합니다. 즉, 엔드포인트 자격 증명에 대한 액세스가 올바르게 보호됩니다. 백업에 대한 액세스는 자동화 컨트롤러 및 전용 설치 호스트에 대한 루트 쉘 액세스 권한이 있는 Ansible Automation Platform 관리자에게만 제한되어야 합니다.
Ansible Automation Platform 관리자가 Ansible Automation Platform 환경을 백업해야 하는 두 가지 주요 이유는 다음과 같습니다.
- Ansible Automation Platform 환경에서 데이터 사본을 저장하려면 필요한 경우 복원할 수 있습니다.
- 새 Ansible Automation Platform 클러스터를 생성하거나 업그레이드를 준비 중인 경우 백업을 사용하여 환경을 다른 서버 세트로 복원하려면 다음을 수행합니다.
모든 경우에 권장되는 안전한 프로세스는 항상 동일한 버전의 PostgreSQL 및 Ansible Automation Platform을 사용하여 환경을 백업하고 복원하는 것입니다.
시스템에서 중복을 사용하는 것이 좋습니다. 시크릿 시스템이 다운되면 자동화 컨트롤러에서 정보를 가져올 수 없으며 서비스가 복원되면 복구할 수 있는 방식으로 실패할 수 있습니다. SECRET_KEY 자동화 컨트롤러가 손상되어 다시 생성해야 하는 경우 자동화 컨트롤러 백업 및 복원 툴과 유사하게 작동하는 설치 프로그램에서 툴을 실행할 수 있습니다.
새 시크릿 키를 생성하려면 다음 단계를 수행합니다.
- 다른 작업을 수행하기 전에 Ansible Automation Platform 데이터베이스를 백업하십시오! Backing Up 및 Restoring Controller 섹션에 설명된 절차를 따르십시오.
-
설치의 인벤토리(백업/복원를 실행하는 것과 동일한 인벤토리)를 사용하여
setup.sh -k
를 실행합니다.
이전 키의 백업 사본은 /etc/tower/
에 저장됩니다.