Online Questions - Valid Practice To your CKS Exam (Updated 66 Questions)
Practice To CKS - Remarkable Practice On your Certified Kubernetes Security Specialist (CKS) Exam
NEW QUESTION # 36
SIMULATION
Task
Analyze and edit the given Dockerfile /home/candidate/KSSC00301/Docker file (based on the ubuntu:16.04 image), fixing two instructions present in the file that are prominent security/best-practice issues.
Analyze and edit the given manifest file /home/candidate/KSSC00301/deployment.yaml, fixing two fields present in the file that are prominent security/best-practice issues.

Answer:
Explanation:
See the Explanation below
Explanation:



NEW QUESTION # 37
You nave a Kubernetes cluster running a microservices application With various components communicating over a snared network. You want to implement a solution that allows secure communication between these components while enforcing fine-grained access control. How would you use a service mesh like Istio to achieve this?
Answer:
Explanation:
Solution (Step by Step):
1. Install Istio: Install the Istio control plane and sidecar proxies into your Kubernetes cluster. Refer to the Istio documentation for installation instructions.
2. Enable Mutual TLS: Configure Istio to enforce mutual TLS (mTLS) authentication for communication between services within the mesh. This ensures that only authorized services can communicate with each other.
- Istio Configuration: Modify the Istio configuration (e.g., istio-config_yaml')to enable mTLS:
3. Create Service Accounts: Create dedicated service accounts for each microservice within the application. - Kubernetes Service Account: Create Service Accounts for each microservice in the appropriate namespaces:
4. Configure Workload Identities: Define workload identities for each microservice. This allows ISti0 to map service accounts to their respective identities. - Istio Workload Identity: Create a Workload Identity that associates service accounts with their corresponding identities:
5. Configure Service-to-Service Access Control: IJse Istio's authorization policies to define fine-grained access control between microservices. - Istio Authorization Policy: Create authorization policies to specify which services can access specific resources:
6. Monitor and Audit: Use Istio's telemetry and tracing capabilities to monitor and audit secure communication between services. Important Notes: - Trust Domain: Ensure a consistent trust domain across all services within the mesh. - Service Account and Identity Management Manage service accounts and identities effectively to enforce access control. - Authorization Policies: Define granular policies for specific access requirements. - Auditing and Monitoring: Regularly review and audit communication patterns to identify potential security issues. - Istio Versions: Ensure compatibility With your Istio version.
NEW QUESTION # 38
Your Kubernetes cluster utilizes a container registry hosted on-premise. You want to implement a mechanism to automatically scan images stored in this registry for known vulnerabilities before they are deployed to the cluster. Describe the steps involved in setting up this vulnerability scanning process.
Answer:
Explanation:
Solution (Step by Step) :
1. Choose a Vulnerability Scanner: Select a suitable vulnerability scanner that integrates with your on-premise container registry_ Some popular options include Anchoret Clair, and Trivy.
2. Integrate the Scanner: Configure the chosen scanner to access your on-premise container registry. This might involve providing credentials or setting up network access.
3. Configure Scanning Triggers: Set up triggers within your container registry or CI/CD pipeline that initiate a vulnerability scan whenever a new image is pushed to the registry.
4. Define Scan Policies: Establish scan policies that define the severity levels of vulnerabilities to be flagged and the actions to be taken (e.g., block deployment, send notifications).
5. Integrate with Kubernetes: Integrate the vulnerability scanner with your Kubernetes cluster. This might involve using a Kubemetes admission controller or writing custom scripts to prevent deployments with vulnerable images.
6. Test and Validate: Test the vulnerability scanning process by pushing a known vulnerable image to your registry and verifying that it is flagged and blocked from deployment.
NEW QUESTION # 39
SIMULATION
Cluster: qa-cluster
Master node: master Worker node: worker1
You can switch the cluster/configuration context using the following command:
[desk@cli] $ kubectl config use-context qa-cluster
Task:
Create a NetworkPolicy named restricted-policy to restrict access to Pod product running in namespace dev.
Only allow the following Pods to connect to Pod products-service:
1. Pods in the namespace qa
2. Pods with label environment: stage, in any namespace
Answer:
Explanation:
See the Explanation belowExplanation:



NEW QUESTION # 40
You are building a container image for a critical application that needs to be deployed in a Kubernetes cluster. Your organization has strict security policies in place, requiring you to perform a thorough security audit of the image before deployment. Outline the steps you would take to conduct a comprehensive security audit of the container image, focusing on the following aspects:
- Vulnerability Scanning: Use tools to scan the image for known vulnerabilities and provide details of the process.
- Security Best Practices: Describe the security best practices that you would audit against.
- Runtime Behavior Analysis: Explain how you would analyze the image's runtime behavior to identify potential risks.
Answer:
Explanation:
Solution (Step by Step) :
1. Vulnerability Scanning:
- Use a Container Image Scanner: Employ tools like ' Trivy', 'snyk' , or 'Aqua Security' to scan the image for known vulnerabilities in the base image, libraries, and dependencies. These tools leverage vulnerability databases to identify vulnerabilities and provide severity ratings.
- Scan the Image: Execute the scanner tool against the container image to identity any vulnerabilities present. For example:
bash
trivy image
- Analyze the Scan Report: Review the scan report to identify vulnerable components. Prioritize fixing vulnerabilities based on their severity and impact.
2. Security Best Practices:
- Check for Minimal Image Size: Ensure the image is as small as possible by removing unnecessary files and dependencies. Smaller images reduce attack surface and improve security.
- Verify Image Origim Check if the base image is from a trusted source (e.g., an official repository) and is not tampered with. IJse signing techniques to ensure image integrity.
- Check for Open Ports: Audit the image's Dockerfile to ensure that only necessary ports are exposed.
- Minimize Privileges: Verify that the container runs with the least privileged user ID and does not have unnecessary capabilities.
3. Runtime Behavior Analysis:
- Analyze System Calls: Use tools like 'strace' or 'ptrace' to capture and analyze the system calls made by the container during runtime. This can help identity suspicious behavior or potential vulnerabilities-
- Monitor Network Traffic: Observe the containers network traffic for any unexpected or malicious connections.
- Log Analysis: Implement comprehensive logging within the container and analyze log entries for any security-related events.
NEW QUESTION # 41
Given an existing Pod named test-web-pod running in the namespace test-system Edit the existing Role bound to the Pod's Service Account named sa-backend to only allow performing get operations on endpoints.
Create a new Role named test-system-role-2 in the namespace test-system, which can perform patch operations, on resources of type statefulsets.
- A. Create a new RoleBinding named test-system-role-2-binding binding the newly created Role to the Pod's ServiceAccount sa-backend.
Answer: A
NEW QUESTION # 42
You're tasked With securing a Kubernetes cluster for a sensitive application. The application utilizes a service account for accessing a database. However, due to legacy reasons, this service account has broad permissions, including 'read', 'write', and 'delete' access to all resources in the cluster. How would you mitigate this security risk while maintaining application functionality? Implement a solution that minimizes the permissions granted to the service account and adheres to the principle of least privilege.
Answer:
Explanation:
Solution (Step by Step) :
1. Create a new Role With restricted permissions:
- Define a Role that grants only the necessary permissions for the service account to interact with the database.
- The Role should have specific permissions for 'read' , 'write' , and 'delete' operations, but limited to the database resources used by the application.
2. Create a RoleBinding: - Bind the newly created Role to the service account. - This will grant the service account the specific permissions defined in the Role.
3. Update the Deployment - Update the Deployment configuration to use the new service account with restricted permissions.
4. Validate the Permissions: - Verity that the application still functions correctly with the restricted permissions. - Use 'kubectl auth can-i --list --as=your-service-account' to confirm the available permissions for the service account. 5. Revoke the Legacy Service Account: - Once the application is running with the new service account, revoke the old service account with broad permissions.
NEW QUESTION # 43
You have a Pod that runs an application that accesses a database service running in a different namespace. You want to enforce a rule that only allows the pod to connect to the database service on a specific port. Explain how to achieve this using NetworkPolicy.
Answer:
Explanation:
Solution (Step by Step) :
1. Create a NetworkPolicy:
- Create a ' NetworkPoIicV resource that defines the rules for the pod.
- This example allows the pod to connect to the database service on port 5432 in the 'database-namespace namespace.
2. Apply the NetworkPolicy: - Apply the 'NetworkPolicy' using 'kubectl apply -f database-access-policy.yaml 3. Verify the Policy: - Run the application in the pod and attempt to connect to the database service on the specified port- - Verify that the connection is successful. - Attempt to connect to the database service on a different port or from a different namespace. - Verity that these attempts are blocked.
NEW QUESTION # 44
Cluster: qa-cluster
Master node: master Worker node: worker1
You can switch the cluster/configuration context using the following command:
[desk@cli] $ kubectl config use-context qa-cluster
Task:
Create a NetworkPolicy named restricted-policy to restrict access to Pod product running in namespace dev.
Only allow the following Pods to connect to Pod products-service:
1. Pods in the namespace qa
2. Pods with label environment: stage, in any namespace
Answer:
Explanation:
$ k get ns qa --show-labels
NAME STATUS AGE LABELS
qa Active 47m env=stage
$ k get pods -n dev --show-labels
NAME READY STATUS RESTARTS AGE LABELS
product 1/1 Running 0 3s env=dev-team
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: restricted-policy
namespace: dev
spec:
podSelector:
matchLabels:
env: dev-team
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
env: stage
- podSelector:
matchLabels:
env: stage
[desk@cli] $ k get ns qa --show-labels
NAME STATUS AGE LABELS
qa Active 47m env=stage
[desk@cli] $ k get pods -n dev --show-labels
NAME READY STATUS RESTARTS AGE LABELS
product 1/1 Running 0 3s env=dev-team
[desk@cli] $ vim netpol2.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: restricted-policy
namespace: dev
spec:
podSelector:
matchLabels:
env: dev-team
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
env: stage
- podSelector:
matchLabels:
env: stage
[desk@cli] $ k apply -f netpol2.yaml Reference: https://kubernetes.io/docs/concepts/services-networking/network-policies/
[desk@cli] $ k apply -f netpol2.yaml Reference: https://kubernetes.io/docs/concepts/services-networking/network-policies/
NEW QUESTION # 45
SIMULATION
Context
You must resolve issues that a CIS Benchmark tool found for the kubeadm provisioned cluster.
Task
Fix all issues via configuration and restart the affected components to ensure the new settings take effect.
Fix all of the following violations that were found against the kubelet:
The cluster uses the Docker Engine os its container runtime, If needed, use the docker command to troubleshaot running containers.
Ensure that the anonymous-auth argument is set to false FAIL
Ensure that the -authorization-mode argument is not set to FAIL
AlwaysAllow
Use Webhook authentication /authorization where possible.
Fix all of the following violations that were found against ettd :
Ensure that the -client cert auth argument is set to true FAIL
Answer:
Explanation:
See the Explanation below for complete solution
Explanation:
1) SSH to the right node
ssh cks000002
sudo -i
2) Fix kubelet CIS findings
2.1 Edit kubelet config (MAIN place in kubeadm clusters)
vi /var/lib/kubelet/config.yaml
A) Set anonymous-auth to false
Find (or add) this block exactly:
authentication:
anonymous:
enabled: false
B) Use Webhook authentication (recommended by task)
Ensure this exists under authentication:
webhook:
enabled: true
C) Use Webhook authorization and NOT AlwaysAllow
Find (or add) this block exactly:
authorization:
mode: Webhook
When done, your file should contain something like this (exact structure to aim for):
authentication:
anonymous:
enabled: false
webhook:
enabled: true
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
mode: Webhook
If x509: section isn't there, it's usually already present in kubeadm; don't panic. Only the task-required parts are: anonymous false + webhook enabled + authorization mode Webhook.
2.2 Restart kubelet (required for config.yaml changes)
systemctl daemon-reload
systemctl restart kubelet
systemctl status kubelet --no-pager
Quick confirm (optional but fast):
grep -nE "anonymous|webhook|authorization|mode" /var/lib/kubelet/config.yaml
3) Fix etcd CIS finding: --client-cert-auth=true
3.1 Edit etcd static pod manifest (kubeadm path)
vi /etc/kubernetes/manifests/etcd.yaml
Find the container command: args that look like:
- command:
- etcd
- --something=...
Ensure this line exists exactly in the list:
- --client-cert-auth=true
Also ensure this is present (usually already is, but add if missing):
- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
Example snippet (what you want the args area to include):
- command:
- etcd
- --client-cert-auth=true
- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
3.2 Apply etcd change (auto-restart happens)
Just save the file. Kubelet will restart etcd automatically.
Watch it restart (pick one depending on runtime):
If Docker runtime (your task mentions Docker):
docker ps | grep etcd
If you don't see it briefly, wait 2-5 seconds and rerun:
docker ps | grep etcd
(Alternative if available)
crictl ps | grep etcd
4) Final quick validation (fast exam check)
Kubelet config check
grep -n "enabled: false" -n /var/lib/kubelet/config.yaml | head
grep -n "webhook" /var/lib/kubelet/config.yaml
grep -n "authorization" /var/lib/kubelet/config.yaml
etcd arg check
grep -n "client-cert-auth" /etc/kubernetes/manifests/etcd.yaml
NEW QUESTION # 46
SIMULATION
Fix all issues via configuration and restart the affected components to ensure the new setting takes effect.
Fix all of the following violations that were found against the API server:- a. Ensure the --authorization-mode argument includes RBAC b. Ensure the --authorization-mode argument includes Node c. Ensure that the --profiling argument is set to false Fix all of the following violations that were found against the Kubelet:- a. Ensure the --anonymous-auth argument is set to false.
b. Ensure that the --authorization-mode argument is set to Webhook.
Fix all of the following violations that were found against the ETCD:-
a. Ensure that the --auto-tls argument is not set to true
Hint: Take the use of Tool Kube-Bench
Answer:
Explanation:
API server:
Ensure the --authorization-mode argument includes RBAC
Turn on Role Based Access Control.
Role Based Access Control (RBAC) allows fine-grained control over the operations that different entities can perform on different objects in the cluster. It is recommended to use the RBAC authorization mode.
Fix - Buildtime
Kubernetes
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
+ - kube-apiserver
+ - --authorization-mode=RBAC,Node
image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
livenessProbe:
failureThreshold: 8
httpGet:
host: 127.0.0.1
path: /healthz
port: 6443
scheme: HTTPS
initialDelaySeconds: 15
timeoutSeconds: 15
name: kube-apiserver-should-pass
resources:
requests:
cpu: 250m
volumeMounts:
- mountPath: /etc/kubernetes/
name: k8s
readOnly: true
- mountPath: /etc/ssl/certs
name: certs
- mountPath: /etc/pki
name: pki
hostNetwork: true
volumes:
- hostPath:
path: /etc/kubernetes
name: k8s
- hostPath:
path: /etc/ssl/certs
name: certs
- hostPath:
path: /etc/pki
name: pki
Ensure the --authorization-mode argument includes Node
Remediation: Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml on the master node and set the --authorization-mode parameter to a value that includes Node.
--authorization-mode=Node,RBAC
Audit:
/bin/ps -ef | grep kube-apiserver | grep -v grep
Expected result:
'Node,RBAC' has 'Node'
Ensure that the --profiling argument is set to false
Remediation: Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml on the master node and set the below parameter.
--profiling=false
Audit:
/bin/ps -ef | grep kube-apiserver | grep -v grep
Expected result:
'false' is equal to 'false'
Fix all of the following violations that were found against the Kubelet:- Ensure the --anonymous-auth argument is set to false.
Remediation: If using a Kubelet config file, edit the file to set authentication: anonymous: enabled to false. If using executable arguments, edit the kubelet service file /etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and set the below parameter in KUBELET_SYSTEM_PODS_ARGS variable.
--anonymous-auth=false
Based on your system, restart the kubelet service. For example:
systemctl daemon-reload
systemctl restart kubelet.service
Audit:
/bin/ps -fC kubelet
Audit Config:
/bin/cat /var/lib/kubelet/config.yaml
Expected result:
'false' is equal to 'false'
2) Ensure that the --authorization-mode argument is set to Webhook.
Audit
docker inspect kubelet | jq -e '.[0].Args[] | match("--authorization-mode=Webhook").string' Returned Value: --authorization-mode=Webhook Fix all of the following violations that were found against the ETCD:- a. Ensure that the --auto-tls argument is not set to true Do not use self-signed certificates for TLS. etcd is a highly-available key value store used by Kubernetes deployments for persistent storage of all of its REST API objects. These objects are sensitive in nature and should not be available to unauthenticated clients. You should enable the client authentication via valid certificates to secure the access to the etcd service.
Fix - Buildtime
Kubernetes
apiVersion: v1
kind: Pod
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
creationTimestamp: null
labels:
component: etcd
tier: control-plane
name: etcd
namespace: kube-system
spec:
containers:
- command:
+ - etcd
+ - --auto-tls=true
image: k8s.gcr.io/etcd-amd64:3.2.18
imagePullPolicy: IfNotPresent
livenessProbe:
exec:
command:
- /bin/sh
- -ec
- ETCDCTL_API=3 etcdctl --endpoints=https://[192.168.22.9]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt
--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key get foo failureThreshold: 8 initialDelaySeconds: 15 timeoutSeconds: 15 name: etcd-should-fail resources: {} volumeMounts:
- mountPath: /var/lib/etcd
name: etcd-data
- mountPath: /etc/kubernetes/pki/etcd
name: etcd-certs
hostNetwork: true
priorityClassName: system-cluster-critical
volumes:
- hostPath:
path: /var/lib/etcd
type: DirectoryOrCreate
name: etcd-data
- hostPath:
path: /etc/kubernetes/pki/etcd
type: DirectoryOrCreate
name: etcd-certs
status: {}






NEW QUESTION # 47
Explain the concept of Software Bill of Materials (SBOM) in the context of Kubernetes supply chain security How does an SBOM help in strengthening security practices for applications running in a Kubernetes environment?
Answer:
Explanation:
Solution (Step by Step) :
An SBOM, or Software Bill of Materials, is a detailed inventory of components used in a software product. In the context of Kubernetes, an SBOM can be used to:
Inventory Management The SBOM provides a comprehensive list of all software components, including their versions, licenses, and dependencies.
This allows for better inventory management and understanding of the entire software stack.
Vulnerability Identificatiom By comparing the S80M with known vulnerability databases, security teams can quickly identity any vulnerable components in the application- This helps in proactively addressing vulnerabilities before they are exploited.
Compliance Auditing: The SBOM provides documentation that can be used to demonstrate compliance with various security regulations and industry standards, such as NIST, ISO 27001, or GDPR.
Supply Chain Traceability: The SBOM helps track the origin and lineage of software components, enabling better understanding of potential risks associated with third-patty software.
Effective Patching: The SBOM facilitates the identification and patching of vulnerable components by providing clear information about the affected components and their versions.
NEW QUESTION # 48
You have a Kubernetes cluster with a sensitive workload running in a specific namespace. You need to restrict access to this namespace to only authorized users- How would you achieve this using Role-Based Access Control (RBAC)?
Answer:
Explanation:
Solution (Step by Step):
1. Create a Role: Define a Role that grants only the required permissions to access the sensitive namespace.
- Name: 'namespace-access-role' (you can choose any name)
- Namespace: The namespace you want to restrict access to.
- Rules:
- Resources: Specify the resources that the role allows access to. For example, 'pods", 'deployments', 'services', etc.
- Verbs: Define the allowed actions on tne resources. For example, 'get', 'list, 'watch', 'create', 'update' , 'delete', etc.
- ApiGroups: Specify the API group that the resources belong to. For example, 'apps', 'extensions' , etc.
- You can use wildcards to grant access to all resources or all verbs.
2. Create a ROIeBinding: Associate the Role with specific users or groups.
- Name: 'namespace-access-binding' (you can choose any name)
- Namespace: The namespace you want to restrict access to.
_ RoleRef-.
- Kind: 'Role' (since you are using a Role)
- Name: The name of the Role you created.
- ApiGroup: 'rbac.authorization.k8s.i0'
- Subjects: Define the users or groups that should have access to this Role.
- Kind: Specify whether it's a user or group.
- Name: The username or group name.
- ApiGroup: 'rbac.authorization.k8s.io'
3. Apply the Role and Role3inding:
- Use 'kubectl apply -f role.yaml' and 'kubectl apply -f rolebinding.yamr to create the Role and RoleBinding respectively
Example YAML for Role and Role8inding:
Role (role-yaml)
Role8inding (rolebinding.yaml)
- The Role 'namespace-access-role' grants permissions to access 'deployments' , 'pods' , 'services', and 'secrets' in the - The RoleBinding 'namespace-access-binding' associates this Role with the user - This setup Will restrict access to the namespace to only tne user Important Notes: - R8AC is a powerful mechanism to control access to resources in Kubernetes- - It's important to understand the different RBAC components (Role, RoleBinding, ClusterRole, ClusterRole8inding) and their usage. - Define granular permissions to ensure least privilege access and enhance security.
NEW QUESTION # 49
On the Cluster worker node, enforce the prepared AppArmor profile
#include <tunables/global>
profile nginx-deny flags=(attach_disconnected) {
#include <abstractions/base>
file,
# Deny all file writes.
deny /** w,
}
EOF'
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 make a file inside the directory which is restricted.
Answer:
Explanation:


NEW QUESTION # 50
Context
AppArmor is enabled on the cluster's worker node. An AppArmor profile is prepared, but not enforced yet.
Task
On the cluster's worker node, enforce the prepared AppArmor profile located at /etc/apparmor.d/nginx_apparmor.
Edit the prepared manifest file located at /home/candidate/KSSH00401/nginx-pod.yaml to apply the AppArmor profile.
Finally, apply the manifest file and create the Pod specified in it.
Answer:
Explanation:


NEW QUESTION # 51
......
Linux Foundation CKS (Certified Kubernetes Security Specialist) Exam is a certification exam that is designed to test the expertise of IT professionals in securing Kubernetes clusters. Kubernetes is a popular container orchestration tool that is used to manage and automate the deployment, scaling, and management of containerized applications. As Kubernetes becomes more widely adopted, the need for skilled IT professionals who can secure Kubernetes clusters has become increasingly important.
True CKS Exam Extraordinary Practice For the Exam: https://preptorrent.actual4exams.com/CKS-real-braindumps.html