Exercise 6.1: Set SecurityContext for a Pod and Container

  1. Pod 생성

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: ubuntu
    spec:
      containers:
      - name: ubuntu
        image: youngwjung/ubuntu-with-user
        command: [ "sleep" ]
        args: [ "infinity" ]
    EOF
  2. Pod 생성 확인

    kubectl get pod ubuntu
  3. 컨테이너 안에서 프로세스를 실행하는 리눅스 유저 확인

    kubectl exec -it ubuntu -- whoami
  4. 루트 권한 확인

    kubectl exec -it ubuntu -- apt update
  5. Pod 삭제

    kubectl delete pod ubuntu
  6. Pod 생성

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: ubuntu
    spec:
      securityContext:
        runAsUser: 1000
      containers:
      - name: ubuntu
        image: youngwjung/ubuntu-with-user
        command: [ "sleep" ]
        args: [ "infinity" ]
        securityContext:
          runAsUser: 2000
    EOF
  7. 해당 링크를 통해서 생성된 컨테이너 이미지 리뷰

  8. Pod로 Bash 연결

    kubectl exec -it ubuntu -- /bin/bash
  9. 명령어를 실행하는 리눅스 유저 확인

    id
  10. 루트 권한이 있는지 확인

    apt update
  11. 루트 유저로 전환 시도 - 비밀번호는 admin

    su
  12. 루트 권한을 획득 했는지 확인

    apt update
  13. 기존 유저로 전환

    exit
  14. Bash 프로세스 종료

    exit
  15. Pod 삭제

    kubectl delete pod ubuntu
  16. Pod 생성

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: ubuntu
    spec:
      securityContext:
        runAsUser: 1000
      containers:
      - name: ubuntu
        image: youngwjung/ubuntu-with-user
        command: [ "sleep" ]
        args: [ "infinity" ]
        securityContext:
          runAsUser: 2000
          allowPrivilegeEscalation: false
    EOF
  17. Pod로 Bash 연결

    kubectl exec -it ubuntu -- /bin/bash
  18. 루트 유저로 전환 시도 - 비밀번호는 admin

    su
  19. Bash 프로세스 종료

    exit
  20. Pod 삭제

    kubectl delete pod ubuntu
  21. Pod 생성

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: alpine
    spec:
      containers:
      - name: alpine
        image: praqma/network-multitool
        command: [ "sleep" ]
        args: [ "infinity" ]
    EOF
  22. 생성한 Pod에서 ping 명령어 실행

    kubectl exec -it alpine -- ping -c 3 www.google.com
  23. 생성한 Pod에서 date 명령어를 통해서 시스템 시간 변경 시도

    kubectl exec -it alpine -- date -s "11:11:11"
  24. Pod 삭제

    kubectl delete pod alpine
  25. Pod 생성

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: alpine
    spec:
      containers:
      - name: alpine
        image: praqma/network-multitool
        command: [ "sleep" ]
        args: [ "infinity" ]
        securityContext:
          capabilities:
            add: ["NET_RAW", "SYS_TIME"]
    EOF
  26. 생성한 Pod에서 ping 명령어 실행

    kubectl exec -it alpine -- ping -c 3 www.google.com
  27. 생성한 Pod에서 date 명령어를 통해서 시스템 시간 변경 시도

    kubectl exec -it alpine -- date -s "11:11:11"
  28. Pod 삭제

    kubectl delete pod alpine

Last updated