Tooth Fairy Rate Index — what this app protects, and what it does not.
This page states what this application guarantees about the data it holds and the access it permits. Automated infrastructure checks run at each deployment and appear in section 5. This record is not a SOC 2 report. It is not a HIPAA attestation. Only an auditor can issue those. Each check maps to one or more control families in the tables below.
This record covers only the two deployments named above. A new deployment creates a new record.
A visitor submits two things: a dollar amount and a 5-digit US zip code. The app converts the zip code to a US state in memory. The app never writes the zip code to storage. The app stores only the following:
CAThe database does not store names, email addresses, phone numbers, or postal addresses. It does not store zip codes, account IDs, or IP addresses. It stores no identifier that links two submissions to the same person. The app has no user accounts. Visitors do not log in. No one can tell if two submissions come from the same household or from different households.
The app can use an analytics script. The script counts visits. The script shows how visitors use the page. The analytics script is optional. If no analytics key exists, the app does not load the script. Analytics data stays separate from submitted amounts and shares no identifier with them.
No PHI. This app does not process, store, or transmit protected health information (PHI). The HIPAA Security Rule column in the tables below shows the safeguard family for each technical control.
roles/datastore.user. This role allows database reads and writes only.
The runtime identity cannot create infrastructure, read other buckets, or manage IAM.0C0AF313E5FD9F80 and
6758F1FC1D4FE114.The app deploys in two stages. The build stage compiles the container image inside Google Cloud. The deploy stage runs the service. Checkov scans each stage on its own. The database deploys on its own, and it is checked separately.
| Check | What it verifies | Result | SOC 2 (TSC) | HIPAA Security Rule |
|---|---|---|---|---|
CKV_GCP_42 | Service account has no administrator privileges | Pass | CC6.1, CC6.3 | 164.308(a)(4), 164.312(a)(1) |
CKV_GCP_117 | No broad "basic" roles (owner/editor/viewer) granted | Pass | CC6.1, CC6.3 | 164.308(a)(4) |
CKV_GCP_46 | The default service account is not used | Pass | CC6.1, CC6.2 | 164.312(a)(2)(i) |
CKV_GCP_41 | Service Account User / Token Creator not granted project-wide | Pass | CC6.3 | 164.308(a)(4) |
CKV_GCP_49 | Roles cannot impersonate or manage other service accounts | Pass | CC6.3 | 164.308(a)(4) |
CKV_GCP_101 | Container image registry is not publicly accessible | Pass | CC6.1, CC6.6 | 164.312(a)(1) |
CKV_GCP_28 | Source storage bucket is not anonymously or publicly accessible | Pass | CC6.1, CC6.6 | 164.312(a)(1) |
CKV_GCP_114 | Public access prevention is enforced on the bucket | Pass | CC6.1, CC6.6 | 164.312(a)(1) |
CKV_GCP_29 | Uniform bucket-level access is enabled | Pass | CC6.3 | 164.308(a)(4) |
CKV_GCP_78 | Bucket versioning is enabled | Pass | A1.2, PI1.4 | 164.312(c)(1), 164.308(a)(7) |
CKV_GCP_62 | Bucket should log access requests | Fail | CC6.1, CC7.2 | 164.312(b), 164.308(a)(1)(ii)(D) |
CKV_GCP_63 | Bucket should not write access logs to itself | Fail | CC7.2 | 164.312(b) |
| Check | What it verifies | Result | SOC 2 (TSC) | HIPAA Security Rule |
|---|---|---|---|---|
CKV_GCP_42 | The app's runtime identity has no administrator privileges | Pass | CC6.1, CC6.3 | 164.308(a)(4), 164.312(a)(1) |
CKV_GCP_117 | No broad "basic" roles granted to the runtime identity | Pass | CC6.1, CC6.3 | 164.308(a)(4) |
CKV_GCP_46 | The default service account is not used at runtime | Pass | CC6.1, CC6.2 | 164.312(a)(2)(i) |
CKV_GCP_41 | Service Account User / Token Creator not granted project-wide | Pass | CC6.3 | 164.308(a)(4) |
CKV_GCP_49 | The runtime identity cannot impersonate other accounts | Pass | CC6.3 | 164.308(a)(4) |
CKV_GCP_101 | Registry read access is not public | Pass | CC6.1, CC6.6 | 164.312(a)(1) |
| Resource | Checks run | Result | Note |
|---|---|---|---|
google_firestore_database |
0 | No coverage | No automated rule covers this resource type, so no check ran. |
Zero checks is not a pass. No automated rule covers this resource type. Sections 2 and 3 describe the database's protections.
Two checks failed. Both findings concern one resource: the temporary bucket that holds a zip file of the source code during the build.
| Finding | Status | Assessment |
|---|---|---|
CKV_GCP_62CKV_GCP_63 |
Open | The build source bucket has no access logging. It does not log reads or writes. The bucket holds only the source code. It contains no campaign data and no visitor data. The bucket blocks all public access and enforces uniform access control. The bucket deletes its contents after 14 days. |
These findings come from the shared deployment template, not from this app's own configuration. Every app built from that template has the same findings. The fix belongs in the shared template. Every app will then inherit the fix.