Kubernetes에서 컨테이너는 파드(pod)로 캡슐화됩니다. 파드 내의 컨테이너는 다양한 보안 설정을 필요로 할 수 있습니다. 이러한 보안 설정을 관리하기 위해 Kubernetes는 보안 컨텍스트(Security Contexts)를 제공합니다. 보안 컨텍스트는 컨테이너나 파드의 보안 관련 설정을 정의할 수 있는 방법을 제공합니다. 이를 통해 컨테이너의 사용자 ID, Linux 기능, 권한 등을 설정할 수 있습니다.
파드 수준에서 보안 컨텍스트를 설정하면, 해당 설정이 파드 내 모든 컨테이너에 적용됩니다. 예를 들어, 다음과 같이 securityContext
필드를 사용하여 파드의 사용자 ID를 설정할 수 있습니다:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
securityContext:
runAsUser: 1000
containers:
- name: mycontainer
image: ubuntu
command: ["sleep", "3600"]
위의 예제에서 runAsUser: 1000
은 파드 내 모든 컨테이너가 사용자 ID 1000으로 실행되도록 설정합니다.
컨테이너 수준에서 보안 컨텍스트를 설정할 수도 있습니다. 이 경우, 컨테이너의 보안 설정이 파드의 보안 설정을 재정의합니다. 예를 들어, 다음과 같이 설정할 수 있습니다:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: ubuntu
command: ["sleep", "3600"]
securityContext:
runAsUser: 1000
위의 예제는 특정 컨테이너가 사용자 ID 1000으로 실행되도록 설정합니다. 이 설정은 파드 수준에서 정의된 설정을 재정의합니다.
Kubernetes에서는 컨테이너에 특정 Linux 기능을 추가하거나 제거할 수 있습니다. 이는 capabilities
옵션을 사용하여 설정할 수 있습니다. 예를 들어, 다음과 같이 파드에 NET_ADMIN 기능을 추가할 수 있습니다:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mycontainer
image: ubuntu
command: ["sleep", "3600"]
securityContext:
capabilities:
add: ["NET_ADMIN"]
위의 예제는 NET_ADMIN
기능을 컨테이너에 추가합니다.
Kubernetes의 보안 컨텍스트는 파드와 컨테이너의 보안 설정을 관리하는 강력한 도구입니다. 이를 통해 사용자 ID 설정, Linux 기능 추가 및 제거 등 다양한 보안 설정을 유연하게 구성할 수 있습니다.