Invoixy Google Cloud Bootstrap
Client-side IAM bootstrap and ephemeral permission lifecycle manager for Invoixy Google Cloud Security Review.
invoixy-gcp-bootstrap is an open-source, client-side utility executed directly by customer cloud security operators on their own workstations or Google Cloud Shell to safely authorize, inspect, and revoke temporary, read-only IAM access for an authorized Invoixy Security Review.
1. What This Tool Does
When you engage Invoixy for a Google Cloud Security Review, our scanner requires temporary read-only access to control-plane metadata (such as IAM policy structures, firewall rules, and encryption settings) to evaluate security posture against CIS benchmarks and cloud security best practices.
This tool automates the client-side authorization lifecycle:
- Interactive Assistant: Guides you through authorizing an engagement with explicit confirmation and zero manual IAM JSON policy editing.
- Deterministic Custom Role: Provisions the exact, versioned
InvoixySecurityAuditorV1role containing 42 metadata-read permissions. - Time-Bound Conditional Binding: Grants temporary access constrained by an automated Google Cloud IAM Condition (
request.time < timestamp(...)) with a default TTL of 8 hours (maximum 24 hours). - Clean Revocation: Allows immediate removal of the conditional binding at any time.
2. Security & Trust Model
Invoixy operates under a strict No Customer Secrets and No Workload Content Access security architecture:
- Client-Side Execution: You execute this tool locally using your existing, authenticated
gcloudsession. - No Customer Secrets or Keys: Invoixy bootstrap never requests or accepts customer-provided Google Service Account JSON keys, customer passwords, OAuth refresh credentials, or long-lived API tokens. Bootstrap never creates service-account keys. The scanner obtains short-lived Google access credentials through X.509 Workload Identity Federation.
- Control Plane Only (No Application-Data Access): Scanner review access is limited to the frozen read-only configuration and metadata contract. The scanner does not require access to stored application payloads, object contents, database contents, Secret Manager secret versions, or workload data. The custom role contains:
- Zero storage object read permissions (
storage.objects.getis strictly prohibited). - Zero secret payload access (
secretmanager.versions.accessis strictly prohibited). - Zero log payload extraction (
logging.logEntries.listis strictly prohibited). - Zero VM console/disk access (
compute.instances.getSerialPortOutputis strictly prohibited). - Zero service account impersonation (
iam.serviceAccounts.actAs,getAccessToken,signBlob,signJwtare strictly prohibited). - Zero create, update, delete, write, or
setIamPolicypermissions.
- Zero storage object read permissions (
- Automatic Expiration: When the configured TTL expires (e.g. 8 hours), Google Cloud IAM automatically invalidates the binding. Access ceases immediately without requiring manual operator intervention.
- Fail-Closed Verification: The tool cryptographically verifies the role definition against its frozen SHA-256 fingerprint (
a8a1e6af...). If any permission drifts or is missing, authorization immediately blocks. - Zero Automated API Enablement: The Identity and Access Management API (
iam.googleapis.com) must already be enabled on your project. The bootstrap tool will never attemptservices enablein your environment.
3. What This Tool Does NOT Do
To maintain absolute safety in customer environments, this tool:
- Does NOT enable any Google Cloud APIs.
- Does NOT create or download service-account keys.
- Does NOT grant Owner, Editor, or any broad administrative roles.
- Does NOT read, export, or modify workloads, database tables, or stored customer files.
- Does NOT create billable compute or storage resources in your project.
- Does NOT modify or replace existing IAM bindings unrelated to the specified Invoixy engagement.
4. Prerequisites
- Python:
>= 3.10(Standard library only; zero third-party dependencies). - Google Cloud SDK:
gcloudCLI installed and authenticated (gcloud auth login). Minimum required version:263.0.0. - Target Project Permissions: The operator running this tool requires standard project IAM administration rights (
roles/resourcemanager.projectIamAdminorroles/owner) on the target project to create the custom role and conditional binding.
5. Installation
After Public Release (via pipx / pip):
pipx install invoixy-gcp-bootstrap
Or via standard pip in a virtual environment:
pip install invoixy-gcp-bootstrap
Local Development / Direct Execution:
Clone the repository and run directly:
python -m invoixy_bootstrap
6. Interactive Usage (Recommended)
Running invoixy-gcp-bootstrap with no arguments automatically launches the interactive terminal assistant:
invoixy-gcp-bootstrap
Interactive Flow:
============================================================
Invoixy Google Cloud Security Review
Temporary Google Cloud authorization assistant
============================================================
Google Cloud CLI: detected (513.0.0)
Active account: operator@example.com
Select an action:
1. Authorize a security review
2. Check authorization status
3. Revoke authorization
4. Exit
Select an option [1-4]: 1
--- 1. Authorize Security Review ---
Google Cloud Project ID: customer-prod-vpc
Invoixy Audit ID (e.g. INV-GCP-2026-000001): INV-GCP-2026-000042
Access duration in hours [8]: 8
Evaluating authorization plan...
============================================================
PROPOSED AUTHORIZATION PLAN
============================================================
Target Project: customer-prod-vpc
Audit Engagement ID: INV-GCP-2026-000042
Custom Role ID: InvoixySecurityAuditorV1 (42 permissions)
Role Action: Create new custom role
Scanner Identity: serviceAccount:scanner-v1@invoixy-security-core.iam.gserviceaccount.com
Access Duration: 8 hours
Calculated Expiry (UTC): 2026-08-26T18:00:00Z
------------------------------------------------------------
What this will do:
- Create or reuse the exact InvoixySecurityAuditorV1 role.
- Add one temporary conditional IAM binding for the Invoixy scanner.
What this will NOT do:
- Enable Google Cloud APIs.
- Create service-account keys.
- Grant Owner or Editor.
- Modify workloads or stored application data.
- Create resources in the project.
============================================================
Continue with authorization? [y/N]: y
Applying authorization...
>>> AUTHORIZATION SUCCESSFUL <<<
[+] Created custom role 'InvoixySecurityAuditorV1' with 42 permissions.
[+] Added conditional IAM binding for 'serviceAccount:scanner-v1@invoixy-security-core.iam.gserviceaccount.com' expiring at 2026-08-26T18:00:00Z.
7. Advanced CLI Usage & Automation
All operations are available as scriptable CLI subcommands. Non-interactive pipelines can supply --yes to bypass prompts and --json for machine-readable output.
A. Preview Plan (Read-Only Simulation)
Preview planned IAM mutations without making any changes:
invoixy-gcp-bootstrap plan --project <PROJECT_ID> --audit-id INV-GCP-YYYY-NNNNNN [--ttl-hours 8] [--json]
B. Authorize (Provision Ephemeral Access)
invoixy-gcp-bootstrap authorize --project <PROJECT_ID> --audit-id INV-GCP-YYYY-NNNNNN [--ttl-hours 8] [--yes] [--json]
C. Inspect Status
Check whether engagement access is active, expired, or absent:
invoixy-gcp-bootstrap status --project <PROJECT_ID> [--audit-id INV-GCP-YYYY-NNNNNN] [--json]
D. Revoke Access
Immediately remove the conditional IAM binding:
invoixy-gcp-bootstrap revoke --project <PROJECT_ID> --audit-id INV-GCP-YYYY-NNNNNN [--yes] [--json]
(Note: The custom role definition InvoixySecurityAuditorV1 remains in your project to avoid Google Cloud's 30-day custom role deletion tombstones. An unbound custom role grants zero permissions).
8. Role Contract & Auditability
The custom role contract is cryptographically frozen:
- Role ID:
InvoixySecurityAuditorV1 - Title:
InvoixySecurityAuditor - Permission Count: Exactly
42 - SHA-256 Fingerprint:
a8a1e6af1243e26068bc95d7f2dfde8453b9b647a13db0940d2eabf4a192c201 - Scanner Principal:
serviceAccount:scanner-v1@invoixy-security-core.iam.gserviceaccount.com
The complete permission list is located in contracts/auditor_role_v1.json and is audited on every execution.
9. Subprocess & Automation Safety
All Google Cloud operations executed by this tool enforce:
- Direct argument vector invocation (
shell=False). - Prompt suppression (
CLOUDSDK_CORE_DISABLE_PROMPTS=1,--quiet). - Standard input disconnection (
stdin=subprocess.DEVNULL). - Explicit execution timeouts (10 to 30 seconds).
- Complete redaction of sensitive subprocess buffers from error messages.
10. License & Security Contact
- License: Apache License 2.0. See LICENSE for details.
- Security Contact: For vulnerability reports or security inquiries, please contact
security@invoixy.com.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file invoixy_gcp_bootstrap-1.0.0.tar.gz.
File metadata
- Download URL: invoixy_gcp_bootstrap-1.0.0.tar.gz
- Upload date:
- Size: 38.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df81d7b2da78677f2da27337b682f114eb195842f1c335cc19ef407213f12112
|
|
| MD5 |
8841c977e5222ef1f8da4dfcb678e2d7
|
|
| BLAKE2b-256 |
d2e4384b6be51051e388f7ef241f7b7dc37aeb6d3b6c70be216a3d08eef5662b
|
Provenance
The following attestation bundles were made for invoixy_gcp_bootstrap-1.0.0.tar.gz:
Publisher:
release.yml on 28VYK/invoixy-gcp-bootstrap
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
invoixy_gcp_bootstrap-1.0.0.tar.gz -
Subject digest:
df81d7b2da78677f2da27337b682f114eb195842f1c335cc19ef407213f12112 - Sigstore transparency entry: 2598861939
- Sigstore integration time:
-
Permalink:
28VYK/invoixy-gcp-bootstrap@23cbf15c1baf37f1ebe73de40b531a23a51abe1d -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/28VYK
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@23cbf15c1baf37f1ebe73de40b531a23a51abe1d -
Trigger Event:
release
-
Statement type:
File details
Details for the file invoixy_gcp_bootstrap-1.0.0-py3-none-any.whl.
File metadata
- Download URL: invoixy_gcp_bootstrap-1.0.0-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc23ac5798348ded6d9c84811d714e871a9466594878b6d4a984ae5b22c6d03c
|
|
| MD5 |
9cfe69310c6a70413958b06aa6f4488c
|
|
| BLAKE2b-256 |
c0d586a9a4b9395c669e442b03ca7a77bd13389a9d7c8048bac420a226ef7a38
|
Provenance
The following attestation bundles were made for invoixy_gcp_bootstrap-1.0.0-py3-none-any.whl:
Publisher:
release.yml on 28VYK/invoixy-gcp-bootstrap
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
invoixy_gcp_bootstrap-1.0.0-py3-none-any.whl -
Subject digest:
cc23ac5798348ded6d9c84811d714e871a9466594878b6d4a984ae5b22c6d03c - Sigstore transparency entry: 2598861994
- Sigstore integration time:
-
Permalink:
28VYK/invoixy-gcp-bootstrap@23cbf15c1baf37f1ebe73de40b531a23a51abe1d -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/28VYK
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@23cbf15c1baf37f1ebe73de40b531a23a51abe1d -
Trigger Event:
release
-
Statement type: