Skip to main content

More Info:

Scan images being deployed to Amazon EKS for vulnerabilities.

Risk Level

Medium

Address

Security

Compliance Standards

  • APRA CPS 234 (Australia)
  • BSI C5 (Germany)
  • Brazil LGPD
  • CCPA / CPRA (California)
  • CIS Critical Security Controls v8
  • CIS GKE
  • CMMC 2.0
  • CSA Cloud Controls Matrix v4
  • DPDPA
  • Digital Operational Resilience Act (EU)
  • Essential 8
  • ISO/IEC 27017
  • ISO/IEC 27018
  • ISO/IEC 27701
  • KSA PDPL
  • MAS Technology Risk Management (Singapore)
  • MITRE ATT&CK (Cloud)
  • NIS2 Directive
  • NIST SP 800-171
  • NYDFS 23 NYCRR 500
  • SWIFT Customer Security Controls Framework
  • Sarbanes-Oxley IT General Controls
  • UK NCSC Cyber Assessment Framework

Triage and Remediation

Remediation

Manual Steps

  1. Identify which identities your cluster nodes use to pull images
    • On any machine with gcloud access, list GKE node service accounts (Workload Identity or node SA) you expect to use for image pulls:
    • Note each service account email that should have read-only access to Artifact Registry and/or GCR.
  2. Review project‑level roles that allow image push or overwrite
    • On any machine with gcloud access, check for broad storage roles in the project (these may implicitly allow write access to GCR buckets):
    • For any member that matches a node or workload service account, decide whether it truly needs project‑wide write access. If not, plan to remove or narrow that role via your normal IAM/IaC process.
  3. For Artifact Registry: ensure only artifactregistry.reader on needed repositories
    • On any machine with gcloud access, for each Artifact Registry repo used by the cluster:
    • For each node/workload service account, confirm it has at most:
      • roles/artifactregistry.reader on that repo.
    • If you find stronger roles (for example roles/artifactregistry.writer or roles/editor) that are not strictly required, plan to remove them and instead grant only:
  4. For GCR: inspect bucket‑level permissions for write capability
    • On any machine with gsutil access, check IAM on the GCR bucket:
    • Look for any of these roles on node/workload service accounts:
      • roles/storage.admin (or roles/storage.objectAdmin, roles/storage.objectCreator)
      • Legacy roles: roles/storage.legacyBucketOwner, roles/storage.legacyBucketWriter, roles/storage.legacyObjectOwner
    • If the account needs only to pull images, plan to:
      • Ensure it has objectViewer:
      • Remove write‑capable roles that are not required:
  5. If write access is inherited from project‑level IAM, update policy carefully
    • If in step 2 you found that node/workload service accounts are granted storage‑admin‑type roles at the project level and they do not need them, export the policy for review:
    • Edit /tmp/<project-id>-policy.yaml to remove or narrow only those bindings that are not required for other workloads, following your change‑management process.
    • Re‑apply when you are confident of the impact:
  6. Re‑verify that only read‑only access remains
    • On any machine with gcloud access, re‑run:
    • Confirm that no node or workload service accounts used by the GKE cluster appear with these roles, and that for Artifact Registry/GCR they only have read‑only roles needed to pull images.
kubectl cannot change Container Registry or Artifact Registry IAM permissions; this finding must be fixed in Google Cloud IAM / registry configuration using gcloud, gsutil, or IaC. See the Manual Steps section for how to review and adjust project, bucket, and repository permissions to enforce read‑only access.

Additional Reading: