HackBlue

Tools · Containers and Kubernetes security · 22 / 23

A Running pod is not a security check

status.phase Running means the pod phase is Running. It is not an image verification, an admission result, or a digest. Write the phase as the phase, and write any check you did not run as not run.

9 min read · practice only with authorization

The phase is a lifecycle word

kubectl get pods prints a phase such as Running, Pending, or Succeeded. Running means the pod’s phase field is Running. It does not say which image digest was pulled, and it does not say a policy engine looked at the spec.

Pending is also only a phase. It is not a denial message. If you need the denial, it is on the event or the apply error, not inside the word Pending.

Checks are other commands

A signature check, a digest pin, or an admission dry run would be a separate result. If that result is not in the note, write “not run.” Do not infer it from Running.

The image string on the pod is the spec’s image field. If the line shows a tag and no digest, write “digest not in this output.”

What to write down

File the namespace, the pod name, the phase, and the image field as printed. File verification only if you saved that command’s output. Do not file Running as a pass.

Lab: Running read as a verified image

In namespace team-a, pod lab-web shows phase Running and image registry.lab.example/web:1.4. No digest is on the line, and no verify command was saved. A draft says the image was verified because the pod is Running.

The note quotes Running and the image string. Digest: not in this output. Verification: not run. The draft’s verified claim is removed.

Snippet
namespace: team-a
pod: lab-web
phase: Running
image: registry.lab.example/web:1.4
digest: not in this output
verify command: not run
write: phase and image string
not: verified

Diagram

What Running does not include

The phase is one field.

  • Phase Running

    The lifecycle word on the pod.

  • Image string

    What the spec printed. A tag is not a digest.

  • A verify command

    Only if you saved its output. Otherwise not run.

  • An admission error

    A different record. Not implied by the phase.

Check yourself

1. A pod’s phase is Running and no verify output was saved. What can you say was verified?

2. The image column shows a tag and no digest. What do you write for the digest?

3. Where would an admission refusal be, if you need it?