9장. 컨테이너에 대한 SELinux 정책 생성
Red Hat Enterprise Linux 8은 udica
패키지를 사용하여 컨테이너에 대한 SELinux 정책을 생성하는 도구를 제공합니다. 오디 카를 사용하면
컨테이너에서 스토리지, 장치 및 네트워크와 같은 호스트 시스템 리소스에 액세스하는 방법을 보다 효과적으로 제어하기 위한 맞춤형 보안 정책을 만들 수 있습니다. 이를 통해 보안 위반에 대해 컨테이너 배포를 강화할 수 있으며 규정 준수의 달성 및 유지를 단순화할 수 있습니다.
9.1. udica SELinux 정책 생성기 소개
사용자 지정 컨테이너에 대한 새 SELinux 정책 생성을 단순화하기 위해 RHEL 8에서는 udica
유틸리티를 제공합니다. 이 툴을 사용하여 Linux 기능, 마운트 지점 및 포트 정의를 포함하는 컨테이너 JSON(JavaScript Object Notation) 파일의 검사를 기반으로 정책을 생성할 수 있습니다. 결과적으로 툴은 검사 결과를 지정된 SELinux CIL(Common Intermediate Language) 블록에서 상속한 규칙과 사용하여 생성된 규칙을 결합합니다.
udica
를 사용하여 컨테이너의 SELinux 정책을 생성하는 프로세스에는 다음 세 가지 주요 부분이 있습니다.
- JSON 형식으로 컨테이너 사양 파일 구문 분석
- 첫 번째 부분의 결과에 따라 적절한 허용 규칙 찾기
- 최종 SELinux 정책 생성
구문 분석 단계 중에 udica
는 Linux 기능, 네트워크 포트 및 마운트 지점을 찾습니다.
결과에 따라 udica
는 컨테이너에서 필요한 Linux 기능을 감지하고 이러한 모든 기능을 허용하는 SELinux 규칙을 생성합니다. 컨테이너가 특정 포트에 바인딩되면 udica
는 SELinux 사용자 공간 라이브러리를 사용하여 검사된 컨테이너에서 사용하는 포트의 올바른 SELinux 레이블을 가져옵니다.
이후 udica
는 호스트에서 컨테이너 파일 시스템 네임 스페이스에 마운트된 디렉터리를 탐지합니다.
CIL의 블록 상속 기능을 사용하면 오디카가 SELinux 템플릿 을
생성할 수 있으므로 특정 작업에 중점을 두는 규칙을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
- 홈 디렉토리에 액세스 허용
- 로그 파일에 액세스 허용
- Xserver와의 통신에 액세스 가능.
이러한 템플릿을 블록이라고 하며 최종 SELinux 정책은 블록을 병합하여 생성됩니다.