Question 16

SIMULATION
Enable audit logs in the cluster, To Do so, enable the log backend, and ensure that
1. logs are stored at /var/log/kubernetes/kubernetes-logs.txt.
2. Log files are retained for 5 days.
3. at maximum, a number of 10 old audit logs files are retained.
Edit and extend the basic policy to log:
1. Cronjobs changes at RequestResponse
2. Log the request body of deployments changes in the namespace kube-system.
3. Log all other resources in core and extensions at the Request level.
4. Don't log watch requests by the "system:kube-proxy" on endpoints or
  • Question 17

    SIMULATION
    Analyze and edit the given Dockerfile
    FROM ubuntu:latest
    RUN apt-get update -y
    RUN apt-install nginx -y
    COPY entrypoint.sh /
    ENTRYPOINT ["/entrypoint.sh"]
    USER ROOT
    Fixing two instructions present in the file being prominent security best practice issues Analyze and edit the deployment manifest file apiVersion: v1 kind: Pod metadata:
    name: security-context-demo-2
    spec:
    securityContext:
    runAsUser: 1000
    containers:
    - name: sec-ctx-demo-2
    image: gcr.io/google-samples/node-hello:1.0
    securityContext:
    runAsUser: 0
    privileged: True
    allowPrivilegeEscalation: false
    Fixing two fields present in the file being prominent security best practice issues Don't add or remove configuration settings; only modify the existing configuration settings Whenever you need an unprivileged user for any of the tasks, use user test-user with the user id 5487
  • Question 18

    SIMULATION
    On the Cluster worker node, enforce the prepared AppArmor profile
    #include <tunables/global>
    profile docker-nginx flags=(attach_disconnected,mediate_deleted) {
    #include <abstractions/base>
    network inet tcp,
    network inet udp,
    network inet icmp,
    deny network raw,
    deny network packet,
    file,
    umount,
    deny /bin/** wl,
    deny /boot/** wl,
    deny /dev/** wl,
    deny /etc/** wl,
    deny /home/** wl,
    deny /lib/** wl,
    deny /lib64/** wl,
    deny /media/** wl,
    deny /mnt/** wl,
    deny /opt/** wl,
    deny /proc/** wl,
    deny /root/** wl,
    deny /sbin/** wl,
    deny /srv/** wl,
    deny /tmp/** wl,
    deny /sys/** wl,
    deny /usr/** wl,
    audit /** w,
    /var/run/nginx.pid w,
    /usr/sbin/nginx ix,
    deny /bin/dash mrwklx,
    deny /bin/sh mrwklx,
    deny /usr/bin/top mrwklx,
    capability chown,
    capability dac_override,
    capability setuid,
    capability setgid,
    capability net_bind_service,
    deny @{PROC}/* w, # deny write for all files directly in /proc (not in a subdir)
    # deny write to files not in /proc/<number>/** or /proc/sys/**
    deny @{PROC}/{[^1-9],[^1-9][^0-9],[^1-9s][^0-9y][^0-9s],[^1-9][^0-9][^0-9][^0-9]*}/** w, deny @{PROC}/sys/[^k]** w, # deny /proc/sys except /proc/sys/k* (effectively /proc/sys/kernel) deny @{PROC}/sys/kernel/{?,??,[^s][^h][^m]**} w, # deny everything except shm* in /proc/sys/kernel/ deny @{PROC}/sysrq-trigger rwklx, deny @{PROC}/mem rwklx, deny @{PROC}/kmem rwklx, deny @{PROC}/kcore rwklx, deny mount, deny /sys/[^f]*/** wklx, deny /sys/f[^s]*/** wklx, deny /sys/fs/[^c]*/** wklx, deny /sys/fs/c[^g]*/** wklx, deny /sys/fs/cg[^r]*/** wklx, deny /sys/firmware/** rwklx, deny /sys/kernel/security/** rwklx,
    }
    Edit the prepared manifest file to include the AppArmor profile.
    apiVersion: v1
    kind: Pod
    metadata:
    name: apparmor-pod
    spec:
    containers:
    - name: apparmor-pod
    image: nginx
    Finally, apply the manifests files and create the Pod specified on it.
    Verify: Try to use command ping, top, sh
  • Question 19

    SIMULATION
    A container image scanner is set up on the cluster.
    Given an incomplete configuration in the directory
    /etc/Kubernetes/confcontrol and a functional container image scanner with HTTPS endpoint https://acme.local.8081/image_policy
    1. Enable the admission plugin.
    2. Validate the control configuration and change it to implicit deny.
    Finally, test the configuration by deploying the pod having the image tag as the latest.
  • Question 20

    You can switch the cluster/configuration context using the following command:
    [desk@cli] $ kubectl config use-context stage
    Context:
    A PodSecurityPolicy shall prevent the creation of privileged Pods in a specific namespace.
    Task:
    1. Create a new PodSecurityPolcy named deny-policy, which prevents the creation of privileged Pods.
    2. Create a new ClusterRole name deny-access-role, which uses the newly created PodSecurityPolicy deny-policy.
    3. Create a new ServiceAccount named psd-denial-sa in the existing namespace development.
    Finally, create a new ClusterRoleBindind named restrict-access-bind, which binds the newly created ClusterRole deny-access-role to the newly created ServiceAccount psp-denial-sa