5.5. 보안 정책 참조
정책 범주를 사용하여 정책을 관리할 수 있습니다. 보안 기준을 통해 사용자 지정 정책 구축에 사용할 수 있습니다. 정책 라이프사이클 단계에 따라 다양한 기준을 사용할 수 있습니다. 기본적으로 시스템에 포함된 기본 보안 정책 또는 정책 목록은 심각도별로 제공되고 구성됩니다.
5.5.1. 정책 카테고리 링크 복사링크가 클립보드에 복사되었습니다!
RHACS는 정책 범주를 사용하여 유형 및 함수별로 정책을 그룹화합니다. 이러한 카테고리를 사용하여 정책을 구성하고 검색할 수 있습니다.
RHACS는 다음과 같은 기본 정책 범주를 제공합니다.
- 비정상적인 활동
- Cryptocurrency Cryostat
- DevOps 모범 사례
- Docker Center for Internet Security (CIS)
- Kubernetes
- Kubernetes 이벤트
- 네트워크 툴
- 패키지 관리
- 권한
- 보안 모범 사례
- 공급망 보안
- 시스템 수정
- 취약점 관리
- 제로 신뢰
정책 관리 창의 Policy Categories 탭을 사용하여 RHACS 포털에서 기존 카테고리를 보고 고유한 정책 범주를 생성할 수 있습니다.
5.5.2. 정책 기준 링크 복사링크가 클립보드에 복사되었습니다!
RHACS에서 규칙을 설정하고 정책을 트리거할 데이터를 구성할 수 있습니다. 이 데이터는 정책 기준 또는 정책 필드 라고도 합니다.
다음 표에 나열된 특성을 기반으로 정책을 구성할 수 있습니다.
이 표에서는 다음을 수행합니다.
정규 표현식,AND, OR, NOT 열은 특정 특성과 함께 정규식 및 기타 논리 연산자를 사용할 수 있는지 여부를 나타냅니다.
-
!Cryo stat (Regular expressions)는 나열된 필드에 대해서만 정규식을 사용할 수 있음을 나타냅니다. -
AND
!또는 OR 는 속성에 언급된 논리 연산자만 사용할 수 있음을 나타냅니다. - Cryostat / NOT / AND, OR 열의 경우 속성이 해당 속성(regex, 부정, 논리 연산자)을 지원하지 않음을 나타냅니다.
-
- RHACS 버전 열에는 특성을 사용해야 하는 Red Hat Advanced Cluster Security for Kubernetes 버전이 표시됩니다.
다음과 같은 특성에는 논리 조합 연산자
AND및OR를 사용할 수 없습니다.-
부울 값이
true및false 최소 값 의미 체계는 다음과 같습니다.
- 최소 RBAC 권한
- 이미지가 생성된 이후 일수
-
부울 값이
다음과 같은 특성에
NOT논리 연산자를 사용할 수 없습니다.-
부울 값이
true및false -
< , > , , <= , >= 연산자와 같이 이미 비교를 사용하는 숫자 값입니다.
예를 들어 여러 값을 가질 수 있는 복합 조건:
- 명령 및 인수를 모두 포함하는 Dockerfile 행.
- name 및 value 둘 다로 구성된 환경 변수.
- 추가 기능,드롭다운 기능, 이미지가생성된 이후의 일, 이미지가 마지막으로 스캔된 날짜 등 기타 의미
-
부울 값이
5.5.2.1. 이미지 기준 링크 복사링크가 클립보드에 복사되었습니다!
- 이미지 레지스트리
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 이미지 레지스트리 | 이미지 레지스트리의 이름입니다. | 이미지 레지스트리 | 문자열 |
regex, |
Build, |
| 이미지 이름 |
레지스트리의 이미지의 전체 이름입니다(예: | 이미지 원격 이미지 | 문자열 |
regex, |
Build, |
| 이미지 태그 | 이미지의 식별자입니다. | 이미지 태그 | 문자열 |
regex, |
Build, |
| 이미지 서명 | 이미지의 서명을 확인하는 데 사용할 수 있는 서명 통합 목록입니다. 서명이 없거나 제공된 서명 통합 중 하나 이상에서 확인할 수 없는 이미지에 대한 경고를 생성합니다. | 이미지 서명 확인 | 이미 구성된 이미지 서명 통합의 유효한 ID |
! |
Build, |
- 이미지 콘텐츠
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 이미지 기간 | 이미지 생성 날짜로부터 최소 일 수입니다. | 이미지 기간 | 정수 | ✕ |
Build, |
| 이미지 사용자 | Dockerfile의 USER 지시문과 일치합니다. 자세한 내용은 https://docs.docker.com/engine/reference/builder/#user 을 참조하십시오. | 이미지 사용자 | 문자열 |
regex, |
Build, |
| Dockerfile 라인 | 명령 및 인수를 포함하여 Dockerfile의 특정 행. | Dockerfile 라인 | 다음 중 하나: LABEL, RUN, CMD, EXV, ADD, COPY, ENTRYPOINT, VOLUME, USER, WORKDIR, ONBUILD |
! regex only for values, |
Build, |
| 이미지 구성 요소 | 이미지에 있는 특정 소프트웨어 구성 요소의 이름 및 버전 번호입니다. | 이미지 구성 요소 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
Build, |
| 이미지 OS |
이미지의 기본 운영 체제의 이름 및 버전 번호입니다. 예: | 이미지 OS | 문자열 |
regex, |
Build, |
| 이미지 레이블 필요 |
Docker 이미지 레이블이 있는지 확인합니다. 배포의 이미지에 지정된 레이블이 없는 경우 정책이 트리거됩니다. key 및 value 필드에 정규식을 사용하여 레이블과 일치시킬 수 있습니다. | 필수 이미지 레이블 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
Build, |
| 이미지 레이블 허용 | 특정 Docker 이미지 레이블을 사용하지 않는지 확인합니다. 배포의 이미지에 지정된 레이블이 있으면 정책이 트리거됩니다. key 및 value 필드에 정규식을 사용하여 레이블과 일치시킬 수 있습니다. '이미지 레이블 정책 비활성화' 기준은 Docker 레지스트리와 통합할 때만 작동합니다. Docker 레이블에 대한 자세한 내용은 https://docs.docker.com/config/labels-custom-metadata/ Docker 문서를 참조하십시오. | 허용되지 않는 이미지 라벨 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
Build, |
- 이미지 스캔
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 이미지 검사 기간 | 이미지가 마지막으로 스캔된 후 최소 일 수입니다. | 이미지 검사 기간 | 정수 | ✕ |
Build, |
| 이미지 검사 상태 | 이미지가 스캔되었는지 확인합니다. | 검사되지 않은 이미지 | 부울 | ✕ |
Build, |
| CVSS (Common Vulnerability Scoring System) |
CVSS: 점수가 >보다 크거나 < , 지정된 CVSS보다 작거나 같은 취약점 | CVSS |
<, > >, <=, >= 또는 아무것도(즉, 동일한 값)
예: | 또는 |
Build, |
| NVD (National Vulnerability Database) CVSS |
스캐너 V4가 필요합니다. NVD CVSS: 점수가 > > 보다 크거나 < , 지정된 CVSS보다 작거나 같은 NVD에서 보고한 취약점과 이미지를 일치시킵니다. | CVSS |
<, > >, <=, >= 또는 아무것도(즉, 동일한 값)
예: | 또는 |
Build, |
| 심각도 | CVSS 또는 공급 업체를 기반으로 하는 취약점의 심각도입니다. 낮음, 보통, 중요 또는 심각 중 하나일 수 있습니다. | 심각도 |
<, >, Cryostat, >= 또는 아무것도(이는 동일함)
예: | 또는 |
Build, |
| 수정 가능 | 이 기준으로 평가 중인 배포에 있는 이미지에 수정 가능한 CVE가 있는 경우에만 위반이 발생합니다. | 수정 가능 | 부울 | ✕ |
Build, |
| 수정자 | 이미지의 플래그가 지정된 취약점을 수정하는 패키지의 버전 문자열입니다. 이 기준은 예를 들어 CVE 기준을 사용하여 취약점을 식별하는 다른 기준과 함께 사용될 수 있습니다. | 수정자 | 문자열 |
regex, |
Build, |
| CVE | 일반적인 취약점 및 노출은 특정 CVE 번호와 함께 사용합니다. | CVE | 문자열 |
regex, |
Build, |
| CVE가 게시된 이후의 일 | 이 기준은 RHACS가 처음 게시 된 이후 지정된 일수보다 많은 경우에만 위반을 초래합니다. | CVE Was first publisheded 일자 | 정수 | ✕ |
Build, |
| CVE가 이미지에서 처음 발견된 이후의 일 | 이러한 기준은 RHACS가 특정 이미지에서 CVE를 발견한 이후 지정된 일수보다 많은 경우에만 위반을 초래합니다. | CVE가 이미지에 처음 발견된 일자 | 정수 | ✕ |
Build, |
| CVE가 시스템에서 처음 발견된 이후의 일 | 이러한 기준은 RHACS가 RHACS가 모니터링하는 모든 클러스터에서 배포된 모든 이미지에서 CVE를 발견한 이후 지정된 일수에 해당하는 경우에만 위반이 발생합니다. | CVE가 시스템에서 처음 발견된 일자 | 정수 | ✕ |
Build, |
5.5.2.2. 워크로드 구성 기준 링크 복사링크가 클립보드에 복사되었습니다!
- 컨테이너 구성
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 환경 변수 |
이름 또는 값으로 환경 변수를 확인합니다. 환경 변수 속성이 포함된 정책을 생성할 때 정책이 일치해야 하는 환경 변수 유형을 선택할 수 있습니다. 예를 들어 배포 YAML에서 직접 제공되는 원시 값을 지정하거나 구성 맵, 시크릿, 필드 또는 리소스 요청 또는 제한의 값에 대한 참조를 지정할 수 있습니다. 배포 YAML에서 직접 지정된 원시 값이 아닌 모든 유형의 경우 정책 규칙의 해당 | 환경 변수 |
배포 YAML에 직접 지정된 환경 변수와 특정 키 및 값과 일치하는 RAW=key=value입니다. 키에서만 일치하도록
환경 변수가 구성 YAML에 정의되지 않은 경우
이전 목록은 먼저 API 오브젝트 레이블을 제공한 다음 사용자 인터페이스 레이블을 설명에 제공합니다. |
! key 및 value ( RAW를 사용하는 경우) |
배포, |
| 컨테이너 CPU 요청 | 지정된 리소스에 예약된 코어 수를 확인합니다. | 컨테이너 CPU 요청 |
<, > >, >= 또는 아무것도 (이를 의미하는 것과 같습니다)
예: | 또는 |
배포, |
| 컨테이너 CPU 제한 | 리소스에서 사용할 수 있는 최대 코어 수를 확인합니다. | 컨테이너 CPU 제한 | (컨테이너 CPU 요청과 동일) | 또는 |
배포, |
| 컨테이너 메모리 요청 | 요청되는 부분(MB)을 포함한 숫자입니다. | 컨테이너 메모리 요청 | (컨테이너 CPU 요청과 동일) | 또는 |
배포, |
| 컨테이너 메모리 제한 | 리소스가 사용할 수 있는 최대 메모리 양을 확인합니다. | 컨테이너 메모리 제한 | (컨테이너 CPU 요청과 동일) | 또는 |
배포, |
| 권한 있는 컨테이너 |
배포가 권한 있는 모드에서 구성되었는지 확인합니다. 이 기준은 해당 Pod 보안 컨텍스트에서 | 권한이 있는 컨테이너 |
부울: 해당 | ✕ |
배포, |
| 루트 파일 시스템 쓰기 기능 |
배포가 | 읽기 전용 루트 파일 시스템 |
부울: 해당 | ✕ |
배포, |
| seccomp 프로필 유형 |
배포에 정의된 | seccomp 프로필 유형 |
그 중 하나:
UNCONFINED | ✕ |
배포, |
| 권한 에스컬레이션 | 배포를 통해 컨테이너 프로세스에서 상위 프로세스보다 더 많은 권한을 얻을 수 있는 경우 경고를 제공합니다. | 권한 에스컬레이션 허용 | 부울 | ✕ |
배포, |
| 드롭 기능 |
컨테이너에서 삭제해야 하는 Linux 기능. 지정된 기능이 삭제되지 않은 경우 경고를 제공합니다. 예를 들어 |
드롭 기능 |
그 중 하나:
모든 | 및 |
배포, |
| 기능 추가 |
원시 패킷을 보내거나 파일 권한을 재정의하는 기능과 같이 컨테이너에 추가해서는 안 되는 Linux 기능. 지정된 기능이 추가될 때 경고를 제공합니다. 예를 들어 | 기능 추가 |
AUDIT_CONTROL | 또는 |
배포, |
| 컨테이너 이름 | 컨테이너의 이름입니다. | 컨테이너 이름 | 문자열 |
regex, |
배포, |
| AppArmor 프로필 | 컨테이너에 사용되는 Application Armor("AppArmor") 프로필입니다. | AppArmor 프로필 | 문자열 |
regex, |
배포, |
| 활성 프로브 | 컨테이너에서 활성 프로브를 정의하는지 여부입니다. | 활성 프로브 | 부울 | ✕ |
배포, |
| 준비 프로브 | 컨테이너에서 준비 상태 프로브를 정의하는지 여부입니다. | 준비 프로브 | 부울 | ✕ |
배포, |
- 배포 메타데이터
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 허용되지 않은 주석 | 지정된 환경의 Kubernetes 리소스에 존재할 수 없는 주석입니다. | 허용되지 않는 주석 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
배포, |
| 필수 레이블 | Kubernetes에 필수 라벨이 있는지 확인합니다. | 필수 라벨 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
배포, |
| 필수 주석 | Kubernetes에 필요한 주석이 있는지 확인합니다. | 필수 주석 |
key=value
값은 선택 사항입니다. 값이 없는 경우 "key=" 형식이어야 합니다. |
regex, |
배포, |
| 런타임 클래스 |
배포의 | 런타임 클래스 | 문자열 |
regex, |
배포, |
| 호스트 네트워크 |
컨테이너가 별도의 네트워크 스택 내에 배치되지 않았음을 나타내는 | 호스트 네트워크 | 부울 | ✕ |
배포, |
| 호스트 PID | 컨테이너와 호스트 간에 PID(프로세스 ID) 네임스페이스가 격리되었는지 확인합니다. 이를 통해 다른 PID 네임스페이스의 프로세스에 동일한 PID가 있을 수 있습니다. | 호스트 PID | 부울 | ✕ |
배포, |
| 호스트 IPC | 호스트에서 이름이 지정된 공유 메모리 세그먼트, 세마포어 및 메시지 큐를 분리하는 IPC(POSIX/SysV IPC) 네임스페이스가 컨테이너와 공유되는지 확인합니다. | 호스트 IPC | 부울 | ✕ |
배포, |
| 네임스페이스 | 배포가 속한 네임스페이스의 이름입니다. | 네임스페이스 | 문자열 |
regex, |
배포, |
| replicas |
배포 복제본 수입니다. | replicas |
<, >, Cryostat, >= 또는 아무것도 (이를 의미하는 것과 같습니다)
예: |
NOT, |
배포, |
- 스토리지
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 볼륨 이름 | 스토리지의 이름입니다. | 볼륨 이름 | 문자열 |
regex, |
배포, |
| 볼륨 소스 경로 | 호스트의 볼륨 경로입니다. | 볼륨 소스 | 문자열 |
regex, |
배포, |
| 볼륨 대상 경로 | 볼륨이 마운트된 경로입니다. | 볼륨 대상 | 문자열 |
regex, |
배포, |
| 볼륨 유형 |
볼륨이 프로비저닝되는 폼을 나타냅니다. 예를 들면 | 볼륨 유형 | 문자열 |
regex, |
배포, |
| 마운트된 볼륨 writability | 쓰기 가능으로 마운트된 볼륨입니다. | 쓰기 가능한 볼륨 | 부울 | ✕ |
배포, |
| 마운트 전파 |
컨테이너가 | Mount Propagation |
그 중 하나:
NONE |
NOT, |
배포, |
| 호스트 마운트 writability | 리소스에서 쓰기 권한이 있는 호스트의 경로를 마운트했습니다. | 쓰기 가능한 호스트 마운트 | 부울 | ✕ |
배포, |
| 섹션: 네트워킹 | |||||
| 노출된 포트 프로토콜 | 노출된 포트에서 사용하는 TCP 또는 UDP와 같은 프로토콜입니다. | 노출된 포트 프로토콜 | 문자열 |
regex, |
배포, |
| 노출된 노드 포트 | 배포에 의해 외부에 노출되는 포트 번호입니다. | 노출된 노드 포트 | (종료된 포트와 동일합니다.) |
NOT, |
배포, |
| 노출된 포트 | 배포로 노출된 포트 번호입니다. | 노출된 포트 |
<, >, Cryostat, >= 또는 아무것도(즉, 동일한 값)
예: |
NOT, |
배포, |
| 포트 노출 방법 | 서비스의 노출 방법(예: 로드 밸런서 또는 노드 포트) | 포트 노출 방법 |
그 중 하나:
route |
NOT, |
배포, |
| 수신 네트워크 정책 | ingress Kubernetes 네트워크 정책이 있는지 확인합니다. | Ingress 네트워크 정책 | 부울 |
regex, |
배포, |
| 송신 네트워크 정책 | 송신 Kubernetes 네트워크 정책이 있는지 확인합니다. | Egress 네트워크 정책 보유 | 부울 |
regex, |
배포, |
- 액세스 제어
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 서비스 계정 | 서비스 계정의 이름입니다. | 서비스 계정 | 문자열 |
regex, |
배포, |
| service account token | 배포 구성이 서비스 계정 토큰을 자동으로 마운트하는지 확인합니다. | Quarkus 서비스 계정 토큰 | 부울 | ✕ |
배포, |
| 최소 RBAC 권한 |
배포의 Kubernetes 서비스 계정에 Kubernetes RBAC 권한 수준이 | 최소 RBAC 권한 |
그 중 하나:
DEFAULT | 해당 없음 |
배포, |
5.5.2.3. 워크로드 활동 기준 링크 복사링크가 클립보드에 복사되었습니다!
- 프로세스 활동
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 프로세스 이름 | 배포에서 실행된 프로세스의 이름입니다. | 프로세스 이름 | 문자열 |
regex, | 런타임 전용 - 프로세스 |
| 프로세스 조상 | 배포에서 실행되는 프로세스의 상위 프로세스의 이름입니다. | 프로세스 Ancestor | 문자열 |
regex, | 런타임 전용 - 프로세스 |
| 프로세스 인수 | 배포에서 실행되는 프로세스의 명령 인수입니다. | 프로세스 인수 | 문자열 |
regex, | 런타임 전용 - 프로세스 |
| 프로세스 UID | 배포에서 실행되는 프로세스의 UNIX 사용자 ID입니다. | 프로세스 UID | 정수 |
NOT, | 런타임 전용 - 프로세스 |
- 기본 편차
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| 예기치 않은 네트워크 흐름 감지 | 감지된 네트워크 트래픽이 배포에 대한 네트워크 기준의 일부인지 확인합니다. | 예기치 않은 네트워크 흐름 감지 | 부울 | ✕ | 런타임 전용 - 네트워크 |
| 예기치 않은 프로세스가 실행됨 | 배포의 잠긴 프로세스 기준선에 프로세스 실행이 나열되지 않은 배포를 확인합니다. | 예기치 않은 프로세스 실행 | 부울 | ✕ | 런타임 전용 - 프로세스 |
- 사용자가 실행한 컨테이너 명령
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| Kubernetes 작업 |
| Kubernetes 리소스 |
그 중 하나:
PODS_EXEC |
! | Runtime only - Kubernetes 이벤트 |
| Kubernetes API 동사 | 런타임 정책에는 유효하지 않습니다. | Kubernetes API Verb | 해당 없음 | 해당 없음 | 해당 없음 |
| Kubernetes 사용자 이름 | 리소스에 액세스한 사용자의 이름입니다. | Kubernetes 사용자 이름 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | Runtime only - Kubernetes 이벤트 |
| Kubernetes 사용자 그룹 | 리소스에 액세스한 사용자가 속한 그룹의 이름입니다. | Kubernetes 사용자 그룹 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | Runtime only - Kubernetes 이벤트 |
5.5.2.4. 감사 로그: Kubernetes 리소스 작업 링크 복사링크가 클립보드에 복사되었습니다!
- 리소스 작업(필수)
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| Kubernetes API 동사 |
| Kubernetes API Verb |
그 중 하나:
생성 |
! | 런타임 전용 - 감사 로그 |
| Kubernetes 리소스 유형 | 액세스한 Kubernetes 리소스의 유형입니다. | Kubernetes 리소스 |
그 중 하나:
CONFIGMAPS |
! | 런타임 전용 - 감사 로그 |
- 리소스 속성
| 속성 | 설명 | JSON 속성 | 허용되는 값 | regex,NOT,AND, OR | 단계 |
|---|---|---|---|---|---|
| Kubernetes 리소스 이름 | 액세스한 Kubernetes 리소스의 이름입니다. | Kubernetes 리소스 이름 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | 런타임 전용 - 감사 로그 |
| Kubernetes 사용자 이름 | 리소스에 액세스한 사용자의 이름입니다. | Kubernetes 사용자 이름 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | Runtime only - Kubernetes 이벤트 |
| Kubernetes 사용자 그룹 | 리소스에 액세스한 사용자가 속한 그룹의 이름입니다. | Kubernetes 사용자 그룹 | 하이픈(-) 및 콜론(:)만으로 영숫자 |
regex, | Runtime only - Kubernetes 이벤트 |
| 사용자 에이전트 |
사용자가 리소스에 액세스하는 데 사용한 사용자 에이전트입니다. 예를 들면 | 사용자 에이전트 | 문자열 |
regex, | 런타임 전용 - 감사 로그 |
| 소스 IP 주소 | 사용자가 리소스에 액세스한 IP 주소입니다. | 소스 IP 주소 | IPV4 또는 IPV6 주소 |
regex, | 런타임 전용 - 감사 로그 |
| 사용자 가장 | 서비스 계정 또는 기타 계정으로 가장하는 사용자에 의해 요청이 수행되었는지 확인합니다. | Impersoned User | 부울 | ✕ | 런타임 전용 - 감사 로그 |
5.5.3. 기본 보안 정책 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Advanced Cluster Security for Kubernetes의 기본 보안 정책은 보안 문제를 식별하고 해당 환경의 보안에 대한 모범 사례를 제공할 수 있는 광범위한 범위를 제공합니다. 이러한 정책을 구성하면 해당 환경의 위험이 높은 서비스 배포를 자동으로 방지하고 런타임 보안 사고에 대응할 수 있습니다.
Red Hat Advanced Cluster Security for Kubernetes 정책의 심각도 수준은 Red Hat 제품 보안에서 할당한 심각도 수준과 다릅니다.
Red Hat Advanced Cluster Security for Kubernetes 정책 심각도 수준은 심각, 높음, 중간 및 낮음입니다. Red Hat 제품 보안 등급은 심각, 중요, 보통 및 낮음의 심각도 수준입니다.
정책의 심각도 수준과 Red Hat 제품 보안 심각도 수준이 상호 작용할 수 있지만 이를 구분하는 것이 중요합니다. Red Hat 제품 보안 심각도 수준에 대한 자세한 내용은 심각도 등급을 참조하십시오.
5.5.3.1. 심각한 심각도 보안 정책 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 심각도가 심각한 Red Hat Advanced Cluster Security for Kubernetes의 기본 보안 정책이 나열되어 있습니다. 정책은 라이프사이클 단계에 따라 구성됩니다.
| 라이프 사이클 단계 | 이름 | 설명 | 상태 |
|---|---|---|---|
| 빌드 또는 배포 | Apache Struts: CVE-2017-5638 | 배포에 CVE-2017-5638 Apache Struts 취약점이 포함된 이미지가 있는 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | Log4Shell: log4j 원격 코드 실행 취약점 | 배포에 CVE-2021-44228 및 CVE-2021-45046 Log4Shell 취약점이 포함된 이미지가 포함된 경우 경고입니다. 취약점은 버전 2.12.2를 제외하고 2.0-beta9 - 2.15.0 버전의 Apache Log4j Java 로깅 라이브러리에 있습니다. | 활성화됨 |
| 빌드 또는 배포 | Spring4Shell (Spring Framework 원격 코드 실행) 및 Spring Cloud Function 취약점 | 배포에 Spring Cryostat에 영향을 미치는 CVE-2022-22965 취약점과 Spring Cloud에 영향을 미치는 CVE-2022-22963 취약점을 포함하는 이미지가 포함된 경우 경고입니다. 버전 3.16, 3.2.2 및 이전 버전의 Spring Cloud에는 결함이 포함되어 있습니다. 5.3.0 - 5.3.17 버전, 5.2.0 - 5.2.19 버전 및 지원되지 않는 이전 버전의 Spring Framework에 결함이 있습니다. | 활성화됨 |
| 런타임 | 권한이 있는 컨테이너에서 iptables 실행 | 권한이 있는 Pod가 iptables를 실행할 때 경고입니다. | 활성화됨 |
5.5.3.2. 심각도가 높은 보안 정책 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 심각도가 높은 Red Hat Advanced Cluster Security for Kubernetes의 기본 보안 정책이 나열되어 있습니다. 정책은 라이프사이클 단계에 따라 구성됩니다.
| 라이프 사이클 단계 | 이름 | 설명 | 상태 |
|---|---|---|---|
| 빌드 또는 배포 | 수정 가능한 CVSS (Common Vulnerability Scoring System) >= 7 | 수정 가능한 취약점을 사용하여 배포하는 경우 경고에는 최소 7개의 CVSS가 있습니다. 그러나 Red Hat은 CVSS 점수 대신 CVE(Common Vulnerabilities and Exposures) 심각도를 사용하여 정책을 생성하는 것이 좋습니다. | 비활성화됨 |
| 빌드 또는 배포 | 수정 가능한 심각도는 최소한 중요 | 수정 가능한 취약점이 있는 배포의 경우 심각도 등급이 최소 중요로 평가되는 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | 빠른 재설정: HTTP/2 프로토콜의 서비스 취약점 거부 |
HTTP/2 서버의 서비스 거부(DoS) 취약점으로 인한 구성 요소가 포함된 이미지를 사용한 배포에 대한 경고입니다. HTTP/2에서 멀티플렉싱 스트림을 처리하는 데 문제가 있습니다. 클라이언트는 요청을 신속하게 생성하고 즉시 재설정할 수 있으므로 서버 측 제한에 도달하지 않고 서버에 대한 추가 작업이 생성되어 서비스 거부 공격을 방지할 수 있습니다. 이 정책을 사용하려면 정책을 복제하고 활성화하기 전에 | 비활성화됨 |
| 빌드 또는 배포 | 이미지에서 보안 쉘(ssh) 포트 노출 | 배포에서 SSH 액세스를 위해 일반적으로 예약되는 포트 22를 노출할 때 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | Red Hat 이미지는 Red Hat 릴리스 키로 서명해야 합니다. | 공식 Red Hat 제품 서명 키인 "Release Key 3"에서 Red Hat 이미지에 서명 하지 않은 경우 경고입니다. 이러한 경고는 다음 레지스트리 및 원격의 이미지에 적용됩니다.
| 비활성화됨 |
| 배포 | 긴급 배포 주석 | 배포에서 긴급 주석을 사용할 때 경고(예: "admission.stackrox.io/break-glass":"ticket-1234" to circumvent StackRox Admission Controller check). | 활성화됨 |
| 배포 | 시크릿이 포함된 환경 변수 | 배포에 'SECRET'이 포함된 환경 변수가 있는 경우 경고입니다. | 활성화됨 |
| 배포 | 수정 가능한 CVSS >= 6 및 권한 | 배포가 6개 이상의 CVSS가 있는 수정 가능한 취약점을 사용하여 권한 있는 모드에서 실행되는 경우 경고입니다. 그러나 CVSS 점수 대신 CVE 심각도를 사용하여 정책을 생성하는 것이 좋습니다. | 버전 3.72.0 이상에서 기본적으로 비활성화되어 있습니다. |
| 배포 | 중요 및 심각한 수정 가능한 CVE가 있는 권한 있는 컨테이너 | 권한 있는 모드에서 실행되는 컨테이너에 중요하거나 중요한 수정 가능한 취약점이 있는 경우 경고입니다. | 활성화됨 |
| 배포 | 환경 변수로 마운트된 시크릿 | 배포에 환경 변수로 마운트된 Kubernetes 시크릿이 있는 경우 경고입니다. | 비활성화됨 |
| 배포 | Secure Shell(ssh) 포트 노출 | 배포에서 SSH 액세스를 위해 일반적으로 예약되는 포트 22를 노출할 때 경고입니다. | 활성화됨 |
| 런타임 | Cryptocurrency Cryostat 프로세스 실행 | crypto-currency test 프로세스를 생성합니다. | 활성화됨 |
| 런타임 | iptables 실행 | 누군가가 컨테이너에서 네트워크 상태를 관리하는 더 이상 사용되지 않는 방법인 iptables를 실행하는 시기를 감지합니다. | 활성화됨 |
| 런타임 | Kubernetes 작업: Pod로 실행 | Kubernetes API가 컨테이너에서 명령을 실행하라는 요청을 수신할 때 경고입니다. | 활성화됨 |
| 런타임 | Linux 그룹 추가 실행 | 사용자가 addgroup 또는 groupadd 바이너리를 실행하여 Linux 그룹을 추가할 시기를 감지합니다. | 활성화됨 |
| 런타임 | Linux 사용자 추가 실행 | 사용자가 useradd 또는 adduser 바이너리를 실행하여 Linux 사용자를 추가할 시기를 감지합니다. | 활성화됨 |
| 런타임 | 로그인 Binaries | 누군가가 로그인하려고 할 때를 나타냅니다. | 비활성화됨 |
| 런타임 | 네트워크 관리 실행 | 누군가가 네트워크 구성 및 관리를 조작할 수 있는 바이너리 파일을 실행하는 시기를 감지합니다. | 활성화됨 |
| 런타임 | nmap 실행 | 실행 시간 동안 컨테이너에서 nmap 프로세스를 시작할 때 발생합니다. | 활성화됨 |
| 런타임 | OpenShift: Kubeadmin 시크릿 액세스 | 다른 사용자가 kubeadmin 시크릿에 액세스할 때 경고합니다. | 활성화됨 |
| 런타임 | 암호 Binaries | 다른 사용자가 암호를 변경하려고 할 때를 나타냅니다. | 비활성화됨 |
| 런타임 | 클러스터 Kubelet 끝점 프로세스 대상 지정 | healthz, kubelet API 또는 힙스터 끝점의 오용을 탐지합니다. | 활성화됨 |
| 런타임 | 클러스터 Kubernetes Docker Stats Endpoint를 대상으로 하는 프로세스 | Kubernetes docker 통계 끝점의 오용을 감지합니다. | 활성화됨 |
| 런타임 | Kubernetes 서비스 끝점을 대상으로 하는 프로세스 | Kubernetes 서비스 API 끝점의 오용을 감지합니다. | 활성화됨 |
| 런타임 | UID가 0인 프로세스 | 배포에 UID 0으로 실행되는 프로세스가 포함된 경우 경고입니다. | 비활성화됨 |
| 런타임 | SSH(Secure Shell Server) 실행 | SSH 데몬을 실행하는 컨테이너를 감지합니다. | 활성화됨 |
| 런타임 | Setuid 프로세스 | 사용자가 에스컬레이션된 권한으로 특정 프로그램을 실행할 수 있는 setuid 바이너리 파일을 사용합니다. | 비활성화됨 |
| 런타임 | shadow 파일 수정 | 누군가가 섀도우 파일을 수정하려고 할 때를 나타냅니다. | 비활성화됨 |
| 런타임 | Java 애플리케이션에서 제공하는 쉘 | bash, csh, sh 또는 zsh와 같은 쉘이 Java 애플리케이션의 하위 프로세스로 실행되는 시기를 감지합니다. | 활성화됨 |
| 런타임 | 무단 네트워크 흐름 | "항상 위반" 설정의 기준을 벗어나는 모든 네트워크 흐름에 대한 위반을 생성합니다. | 활성화됨 |
| 런타임 | 승인되지 않은 실행 | Kubernetes 배포의 컨테이너 사양에 대해 잠긴 프로세스 기준에서 명시적으로 허용하지 않는 모든 프로세스 실행에 대한 위반을 생성합니다. | 활성화됨 |
5.5.3.3. 중간 심각도 보안 정책 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 심각도가 중간인 Red Hat Advanced Cluster Security for Kubernetes의 기본 보안 정책이 나열되어 있습니다. 정책은 라이프사이클 단계에 따라 구성됩니다.
| 라이프 사이클 단계 | 이름 | 설명 | 상태 |
|---|---|---|---|
| Build | Docker CIS 4.4: 보안 패치를 포함하도록 이미지가 스캔되고 다시 빌드되었는지 확인 | 보안 패치를 포함하도록 이미지를 스캔하고 다시 빌드할 때 경고입니다. 이미지를 자주 스캔하여 취약점을 찾고, 보안 패치를 포함하도록 이미지를 다시 빌드한 다음 이미지의 컨테이너를 인스턴스화하는 것이 중요합니다. | 비활성화됨 |
| 배포 | 30일 스캔 기간 | 배포가 30일 이내에 검사되지 않은 경우 경고입니다. | 활성화됨 |
| 배포 | CAP_SYS_ADMIN 기능 추가 | 배포에 CAP_SYS_ADMIN으로 에스컬레이션되는 컨테이너가 포함된 경우 경고입니다. | 활성화됨 |
| 배포 | 읽기-쓰기 루트 파일 시스템을 사용하는 컨테이너 | 배포에 읽기-쓰기 루트 파일 시스템이 있는 컨테이너가 포함된 경우 경고입니다. | 비활성화됨 |
| 배포 | 권한 에스컬레이션이 허용되는 컨테이너 | 의도하지 않은 권한으로 컨테이너가 실행 중인 경우 경고하여 보안 위험이 발생합니다. 이러한 상황은 상위 프로세스보다 많은 권한이 있는 컨테이너 프로세스에서 컨테이너를 의도하지 않은 권한으로 실행할 수 있는 경우에 발생할 수 있습니다. | 활성화됨 |
| 배포 | 배포에는 하나 이상의 Ingress 네트워크 정책이 있어야 합니다. | 배포에 Ingress 네트워크 정책이 누락된 경우 경고입니다. | 비활성화됨 |
| 배포 | 외부에 노출된 엔드포인트를 사용한 배포 | 배포에 모든 메서드를 통해 외부적으로 노출되는 서비스가 있는지 감지합니다. 클러스터 외부에서 노출된 서비스를 사용하는 배포는 클러스터 외부에서 연결할 수 있으므로 시도된 침입 위험이 더 높습니다. 이 정책은 클러스터 외부의 서비스 노출이 필요한지 확인할 수 있도록 경고를 제공합니다. 서비스가 클러스터 내부 통신에만 필요한 경우 서비스 유형 ClusterIP를 사용합니다. | 비활성화됨 |
| 배포 | Docker CIS 5.1: 해당하는 경우 AppArmor 프로필이 활성화되어 있는지 확인합니다. | AppArmor를 사용하여 AppArmor 프로필이라고 하는 보안 정책을 적용하여 Linux 운영 체제 및 애플리케이션을 보호합니다. AppArmor는 Debian 및 Ubuntu와 같은 일부 Linux 배포판에서 사용할 수 있는 Linux 애플리케이션 보안 시스템입니다. | 활성화됨 |
| 배포 | Docker CIS 5.15: 호스트의 프로세스 네임스페이스가 공유되지 않도록 합니다. | 컨테이너와 호스트 간의 프로세스 수준 격리를 생성합니다. PID(프로세스 ID) 네임스페이스는 프로세스 ID 공간을 격리하므로 다른 PID 네임스페이스의 프로세스에 동일한 PID가 있을 수 있습니다. | 활성화됨 |
| 배포 | Docker CIS 5.16: 호스트의 IPC 네임스페이스가 공유되지 않도록 합니다. | 호스트의 IPC 네임스페이스가 컨테이너와 공유될 때 경고입니다. IPC(POSIX/SysV IPC) 네임스페이스는 이름이 지정된 공유 메모리 세그먼트, 세마포어 및 메시지 큐를 구분합니다. | 활성화됨 |
| 배포 | Docker CIS 5.19: 마운트 전파 모드가 활성화되지 않았는지 확인 | 마운트 전파 모드가 활성화된 경우 경고입니다. 마운트 전파 모드가 활성화되면 컨테이너 볼륨을 양방향, 컨테이너로 호스트, None 모드로 마운트할 수 있습니다. 명시적으로 필요한 경우가 아니면 양방향 마운트 전파 모드를 사용하지 마십시오. | 활성화됨 |
| 배포 | Docker CIS 5.21: 기본 seccomp 프로필이 비활성화되지 않았는지 확인 | seccomp 프로필이 비활성화된 경우 경고입니다. seccomp 프로필은 허용 목록을 사용하여 공통 시스템 호출을 허용하고 다른 모든 호출을 차단합니다. | 비활성화됨 |
| 배포 | Docker CIS 5.7: 권한 있는 포트가 컨테이너 내에 매핑되지 않았는지 확인 | 권한 있는 포트가 컨테이너 내에 매핑되면 경고입니다. 1024보다 낮은 TCP/IP 포트 번호는 권한이 있는 포트입니다. 일반 사용자와 프로세스는 보안상의 이유로 이 포트를 사용할 수 없지만 컨테이너는 포트를 권한 있는 포트에 매핑할 수 있습니다. | 활성화됨 |
| 배포 | Docker CIS 5.9 및 5.20: 호스트의 네트워크 네임스페이스가 공유되지 않았는지 확인 | 호스트의 네트워크 네임스페이스를 공유할 때 경고합니다. HostNetwork가 활성화되면 컨테이너가 별도의 네트워크 스택 내에 배치되지 않으며 컨테이너의 네트워킹은 컨테이너화되지 않습니다. 결과적으로 컨테이너는 호스트의 네트워크 인터페이스에 대한 전체 액세스 권한을 가지며 공유 UTS 네임스페이스가 활성화됩니다. UTS 네임스페이스는 호스트 이름과 NIS 도메인 이름을 격리하고 해당 네임스페이스에서 실행 중인 프로세스에 표시되는 호스트 이름과 도메인을 설정합니다. 컨테이너 내에서 실행되는 프로세스는 일반적으로 호스트 이름 또는 도메인 이름을 알 필요가 없으므로 UTS 네임스페이스를 호스트와 공유해서는 안 됩니다. | 활성화됨 |
| 배포 | 검사가 없는 이미지 | 배포에 검사되지 않은 이미지가 포함된 경우 경고입니다. | 비활성화됨 |
| 런타임 | Kubernetes 작업: Pod로 전달 포트 | Kubernetes API가 포트 전달 요청을 수신할 때 경고입니다. | 활성화됨 |
| 배포 | 컨테이너 런타임 소켓 마운트 | 배포에 컨테이너 런타임 소켓에 볼륨 마운트가 있는 경우 경고입니다. | 활성화됨 |
| 배포 | 민감한 호스트 디렉터리 마운트 | 배포에서 민감한 호스트 디렉터리를 마운트할 때 경고합니다. | 활성화됨 |
| 배포 | 지정된 리소스 요청 또는 제한 없음 | 배포에 리소스 요청 및 제한이 없는 컨테이너가 포함된 경우 경고입니다. | 활성화됨 |
| 배포 | Pod 서비스 계정 토큰이 자동으로 마운트됨 | 기본 서비스 계정 토큰 마운트를 최소화하여 애플리케이션이 Kubernetes API와 상호 작용해야 하는 Pod로만 Pod 기본 서비스 계정 토큰이 손상되지 않도록 보호합니다. | 활성화됨 |
| 배포 | 권한이 있는 컨테이너 | 배포에 권한 있는 모드에서 실행되는 컨테이너가 포함된 경우 경고입니다. | 활성화됨 |
| 런타임 | crontab 실행 | crontab 스케줄링된 작업 편집기 사용을 감지합니다. | 활성화됨 |
| 런타임 | Netcat Execution Detected | netcat이 컨테이너에서 실행되는 시기를 감지합니다. | 활성화됨 |
| 런타임 | OpenShift: Advanced Cluster Security Central Admin Secret Accessed | Red Hat Advanced Cluster Security Central 시크릿에 액세스할 때 경고. | 활성화됨 |
| 런타임 | OpenShift: 개인 사용자가 액세스하는 Kubernetes 시크릿 | 누군가가 사용자를 가장하여 클러스터의 시크릿에 액세스할 때 경고합니다. | 활성화됨 |
| 런타임 | 원격 파일 복사 바이너리 실행 | 배포가 원격 파일 복사 툴을 실행할 때 경고합니다. | 활성화됨 |
5.5.3.4. 심각도가 낮은 보안 정책 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 심각도가 낮은 Red Hat Advanced Cluster Security for Kubernetes의 기본 보안 정책이 나열되어 있습니다. 정책은 라이프사이클 단계에 따라 구성됩니다.
| 라이프 사이클 단계 | 이름 | 설명 | 상태 |
|---|---|---|---|
| 빌드 또는 배포 | 90일 이미지 기간 | 배포가 90일 후에 업데이트되지 않은 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | COPY 대신 ADD 명령 사용 |
| 비활성화됨 |
| 빌드 또는 배포 | 이미지의 Alpine Linux Package Manager(apk) | 배포에 Alpine Linux 패키지 관리자(apk)가 포함된 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | 이미지의 curl | 배포에 curl이 포함된 경우 경고입니다. | 비활성화됨 |
| 빌드 또는 배포 | Docker CIS 4.1: 컨테이너의 사용자가 생성됨 확인 | 컨테이너가 루트가 아닌 사용자로 실행 중인지 확인합니다. | 활성화됨 |
| 빌드 또는 배포 | Docker CIS 4.7: 업데이트 설명에 대한 경고 | 업데이트 지침이 Dockerfile에서 단독으로 사용되지 않도록 합니다. | 활성화됨 |
| 빌드 또는 배포 | CMD에 지정된 비보안 | 배포에서 명령에서 '비보안'을 사용하는 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | latest 태그 | 배포에 'latest' 태그를 사용하는 이미지가 포함된 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | Red Hat Package Manager in Image | 배포에 Red Hat, Fedora 또는 CentOS 패키지 관리 시스템의 구성 요소가 포함된 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | 필수 이미지 레이블 | 배포에 지정된 레이블이 없는 이미지가 포함된 경우 경고입니다. | 비활성화됨 |
| 빌드 또는 배포 | Ubuntu Package Manager 실행 | Ubuntu 패키지 관리 시스템의 사용을 감지합니다. | 활성화됨 |
| 빌드 또는 배포 | 이미지의 Ubuntu 패키지 관리자 | 배포에 이미지의 Debian 또는 Ubuntu 패키지 관리 시스템의 구성 요소가 포함된 경우 경고입니다. | 활성화됨 |
| 빌드 또는 배포 | 이미지의 wget | 배포에 wget이 포함된 경우 경고입니다. | 비활성화됨 |
| 배포 | 모든 기능 삭제 | 배포가 모든 기능을 삭제하지 않을 때 경고합니다. | 비활성화됨 |
| 배포 | Orchestrator Secrets Volume의 부적절한 사용 | 배포에서 'VOLUME /run/secrets'와 함께 Dockerfile을 사용하는 경우 경고. | 활성화됨 |
| 배포 | 배포된 Kubernetes 대시보드 | Kubernetes 대시보드 서비스가 감지되면 경고입니다. | 활성화됨 |
| 배포 | 필수 주석: 이메일 | 배포에 'email' 주석이 없는 경우 경고입니다. | 비활성화됨 |
| 배포 | 필수 주석: 소유자/팀 | 배포에 'owner' 또는 'team' 주석이 없는 경우 경고입니다. | 비활성화됨 |
| 배포 | 필수 레이블: 소유자/팀 | 배포에 'owner' 또는 'team' 레이블이 없는 경우 경고입니다. | 비활성화됨 |
| 런타임 | Alpine Linux Package Manager 실행 | 런타임에 Alpine Linux 패키지 관리자(apk)가 실행되는 경우 경고입니다. | 활성화됨 |
| 런타임 | chkconfig 실행 | 일반적으로 컨테이너에서 사용되지 않는 ckconfig 서비스 관리자의 사용량을 감지합니다. | 활성화됨 |
| 런타임 | 컴파일러 툴 실행 | 소프트웨어를 컴파일하는 바이너리 파일이 런타임에 실행되는 경우 경고입니다. | 활성화됨 |
| 런타임 | Red Hat Package Manager 실행 | 런타임 시 Red Hat, Fedora 또는 CentOS 패키지 관리자 프로그램이 실행되는 경우 경고입니다. | 활성화됨 |
| 런타임 | 쉘 관리 | 쉘을 추가하거나 제거하기 위해 명령이 실행될 때의 경고입니다. | 비활성화됨 |
| 런타임 | systemctl Execution | systemctl 서비스 관리자의 사용을 감지합니다. | 활성화됨 |
| 런타임 | systemd 실행 | systemd 서비스 관리자의 사용량을 감지합니다. | 활성화됨 |