securityContext 요약
SecurityContext는 Pod와 Container를 위해 보안 설정을 정의하는 항목이다.
securityContext 항목
Discretionary Access Control: UID, GID를 기반으로 파일에 접근 권한을 가지는 사용자(runAsUser) 그룹(fsGroup)을 설정할 수 있다.
Linux Capabilities: Root 사용자에게 모든 권한을 부여하는 대신, 프로세스에 일부 권한을 부여한다.
readOnlyRootFilesystem: 컨테이너의 루트 파일 시스템을 읽기 전용으로 마운트한다.
allowPrivilegeEscalation: 프로세스가 상위 프로세스보다 더 많은 권한을 얻을 수 있는지 여부를 제어한다.
그 외 securityContext에서 정의하는 항목들
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#securitycontext-v1-core
securityContext 특징
- 기존 pod의 securitycontext는 편집이 안된다. pod를 지우고 새로 생성해야 한다.
- securityContext를 설정하지 않는다면 기본값은 root로 다 실행 가능하다.
- spec.securityContext: {} 이면 다 root다. (root의 UID 는 0이다!
- capabilities는 Pod레벨이 아니라, 컨테이너 레벨에서 설정해줘야 한다.
- Deployment에서 securityContext를 정의할 때는 Pod레벨에서 정의해줘야 한다.
- Pod에 대해 지정하는 보안 설정은 Pod의 모든 컨테이너에 적용됩니다.
<존재 이유 or 흐름 속 의미>
Pod와 Container를 수준을 분리하여 더 세밀하게 보안을 설정해줄 수 있다.
예를 들어, 1개의 Pod의 다수의 Container가 있을 때, 특정 Container에만 적용한 securityContext 설정은 다른 Container에 영향을 끼치지 않는다.
<만드는 법>
yaml 파일로 작성한다.
apiVersion: v1
kind: Pod
metadata:
name: app-sec-kff3345
namespace: default
spec:
securityContext: # 사용자인 Root는 Pod레벨에서 적용한다.
runAsUser: 0 # Root의 UID는 0이다.
containers:
- command:
- sleep
- "4800"
image: ubuntu
name: ubuntu
securityContext: # 가용성은 컨테이너 안에서 적용한다.
capabilities:
add: ["SYS_TIME"]
<참고 링크>
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#securitycontext-v1-core
'Kubernetes' 카테고리의 다른 글
KCD Taiwan 2023 Vlog (0) | 2024.01.15 |
---|---|
Audit Log Policy (0) | 2023.06.08 |
Job (0) | 2023.06.04 |
initContainers (0) | 2023.05.24 |
CronJob (0) | 2023.05.24 |