More Info:
Scan images being deployed to Amazon EKS for vulnerabilities.Risk Level
MediumAddress
SecurityCompliance 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
Remediation
Manual Steps
Manual Steps
-
Identify which identities your cluster nodes use to pull images
- On any machine with
gcloudaccess, 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.
- On any machine with
-
Review project‑level roles that allow image push or overwrite
- On any machine with
gcloudaccess, 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.
- On any machine with
-
For Artifact Registry: ensure only
artifactregistry.readeron needed repositories- On any machine with
gcloudaccess, for each Artifact Registry repo used by the cluster: - For each node/workload service account, confirm it has at most:
roles/artifactregistry.readeron that repo.
- If you find stronger roles (for example
roles/artifactregistry.writerorroles/editor) that are not strictly required, plan to remove them and instead grant only:
- On any machine with
-
For GCR: inspect bucket‑level permissions for write capability
- On any machine with
gsutilaccess, check IAM on the GCR bucket: - Look for any of these roles on node/workload service accounts:
roles/storage.admin(orroles/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:
- Ensure it has
- On any machine with
-
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.yamlto 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:
- 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:
-
Re‑verify that only read‑only access remains
- On any machine with
gcloudaccess, 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.
- On any machine with
Using kubectl
Using kubectl
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.
Automation
Automation

