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