GCP Bucket Exposure Calculator
Score a Cloud Storage bucket's exposure from public access prevention, allUsers IAM bindings, uniform access, signed URLs, CMEK and audit logging.
About GCP Bucket Exposure Calculator
Cloud Storage exposure is dominated by one control — the IAM binding — so allUsers with objectAdmin alone carries 30 of the 100 points. Public access prevention is scored separately because it is an organisation-level backstop that blocks the binding from taking effect, and audit logging is included because DATA_READ logs are off by default, which means a public bucket can be drained with no trace at all. A single `gsutil iam ch allUsers:objectViewer` command is one keystroke from a public dataset, and without DATA_READ audit logs you will never know how many copies were taken before you noticed.
Formulas
GCP Bucket Exposure
Exposure index = public access prevention points + broadest IAM binding points + uniform-access points + CMEK points + VPC Service Controls points + audit log points + min(13, log2(signed URL hours) × 1.3), clamped to 0–100.
- iamBinding
- 0–30 points for the broadest member on the bucket
- publicAccessPrevention
- 20 points while the organisation policy is only inherited
- vpcSc
- 10 points when no service perimeter contains the bucket
Exposed volume
Objects in the exposed path = object count × exposure index ÷ 100 — a linear read of how much of the bucket the scored configuration puts within reach.
- objectCount
- Objects currently stored in the bucket
- exposureIndex
- 0–100 weighted exposure index
Worked example
With the default values below, GCP Bucket Exposure Calculator returns Exposure Index of 67.3. Change any input above and every figure here is recalculated in your browser.
Inputs used
- Public access preventionone of Enforced by organisation policy — 0, Inherited, not enforced — 20
- Inherited, not enforced — 20
- Broadest IAM binding on the bucketone of No allUsers or allAuthenticatedUsers binding — 0, allAuthenticatedUsers objectViewer — 15, allUsers objectViewer — 25, allUsers objectAdmin — 30
- allAuthenticatedUsers objectViewer — 15
- Uniform bucket-level accessone of Enabled, legacy ACLs removed — 0, Disabled, legacy ACLs in use — 12
- Enabled, legacy ACLs removed — 0
- Encryption keyone of Customer-managed key in Cloud KMS — 0, Google-managed key — 4
- Google-managed key — 4
- VPC Service Controls perimeterone of Bucket sits inside a perimeter — 0, No perimeter — 10
- No perimeter — 10
- Data access audit logsone of ADMIN_READ and DATA_READ enabled — 0, ADMIN_READ only — 6, Data access logging disabled — 10
- ADMIN_READ only — 6
- Longest signed URL lifetimeaccepts 0–168,000 hours
- 720 hours
- Objects in the bucketaccepts 0–100,000,000,000 objects
- 840,000 objects
- Data stored in the bucketaccepts 0–100,000,000 GB
- 2,600 GB
Results
- Exposure Index
- 67.3 / 100
- Exposure Level
- High
- Objects in the Exposed Path
- 565,651 objects
- Data in the Exposed Path
- 1,750.8 GB
- Signed URL Risk Points
- 12.3 points
- Dominant Exposure Path
- Public access prevention is not enforced by organisation policy
- Recommended Remediation
- Remove the allUsers and allAuthenticatedUsers bindings, then enforce public access prevention at the organisation node
Step by step
- 1Values used
- 2GCP Bucket Exposure
- 3Exposed volume
- 4Exposure Index= 67.3 / 100
- 5Exposure Level= High
- 6Objects in the Exposed Path= 565,651 objects
- 7Data in the Exposed Path= 1,750.8 GB
- 8Signed URL Risk Points= 12.3 points
- 9Dominant Exposure Path= Public access prevention is not enforced by organisation policy
Assumptions and limits
- The result is derived only from the 9 inputs listed above. Anything not among them is not part of the calculation.
- In particular, this calculator does not take inflation, tax, fees or charges or compounding frequency into account.
- Figures are rounded for display to 1 decimal place, so totals built from several rounded parts can differ slightly from the unrounded arithmetic.
How these calculators are built and tested is described on the Methodology page. If a figure looks wrong, please report it.
Frequently Asked Questions
How is GCP Bucket Exposure calculated?
Exposure index = public access prevention points + broadest IAM binding points + uniform-access points + CMEK points + VPC Service Controls points + audit log points + min(13, log2(signed URL hours) × 1.3), clamped to 0–100. Cloud Storage exposure is dominated by one control — the IAM binding — so allUsers with objectAdmin alone carries 30 of the 100 points. Public access prevention is scored separately because it is an organisation-level backstop that blocks the binding from taking effect, and audit logging is included because DATA_READ logs are off by default, which means a public bucket can be drained with no trace at all.
Why does GCP Bucket Exposure matter?
A single `gsutil iam ch allUsers:objectViewer` command is one keystroke from a public dataset, and without DATA_READ audit logs you will never know how many copies were taken before you noticed.
What values do I need to enter?
This calculator takes 9 inputs: Public access prevention, Broadest IAM binding on the bucket, Uniform bucket-level access, Encryption key, VPC Service Controls perimeter, Data access audit logs, Longest signed URL lifetime, Objects in the bucket, Data stored in the bucket. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Why score audit logging in an exposure calculator?
Because exposure you cannot see is worse than exposure you can. Cloud Storage data access logs are disabled by default and are not retroactive, so a bucket that was public for six months with logging off leaves you unable to answer the only question that matters during the incident: what was read, and by whom.
Does uniform bucket-level access reduce exposure on its own?
It removes an entire class of it. With legacy ACLs enabled, every object can carry its own grant, so a bucket that looks private at the policy level can still contain thousands of world-readable objects. Uniform access makes the bucket policy the single answer.
Related Calculators
- Azure Storage Exposure Calculator
- S3 Bucket Exposure Calculator
- Cloud Logging Coverage Calculator
- Cloud IAM Risk Calculator
- Cloud Security Health Score Calculator
- GCP Security Command Center Calculator
- Public IP Exposure Calculator
- Secrets Exposure Calculator
- Admission Controller Coverage Calculator
- Azure Secure Score Calculator
You might also need
- S3 Bucket Exposure CalculatorCommonly used together
- Azure Storage Exposure CalculatorCommonly used together
- Cloud Logging Coverage CalculatorCommonly used together
- Cloud Security Health Score CalculatorAlso in Cloud Security
- Cloud IAM Risk CalculatorAlso in Cloud Security
- Cloud Attack Surface CalculatorAlso in Cloud Security
