Repository navigation
v0.7.0 - Scanner Expansion and improvements
What's Changed
Azure and GCP are mapped as deeply as AWS, scanner and collector failures raise exceptions you can import and catch, report.html opens on an animated isometric map of the estate, and the docs site moves to MkDocs Material.
Added:
- Azure depth. Besides the Resource Graph breadth query, cloudg reads the
policyresources,securityresources,recoveryservicesresources,networkresources,maintenanceresources,insightsresourcesandkubernetesconfigurationresourcestables, management-group and tenant-scope role assignments, ARM child resources (APIM, Service Bus, Event Hubs, DNS record sets, Front Door, Virtual WAN, Data Factory and Synapse pipelines, AI Search, Azure OpenAI deployments and more), diagnostic settings, Entra ID through Microsoft Graph (users, groups, app registrations, service principals, app-role assignments, OAuth2 grants, directory roles, PIM eligibility) and the objects inside AKS clusters. The ARM type catalog grows from 125 to 278 types.azure.map_entra,azure.child_resources,azure.diagnostic_settingsandazure.data_planeturn the extra sources off. - GCP depth. 350 Cloud Asset Inventory types now have extractors (123 before), and API sources fill what the inventory does not return: Cloud DNS records, Security Command Center, Cloud Identity groups, IAM deny policies and principal access boundaries, PAM, audit configs, Cloud Monitoring, OS Config, Artifact Analysis, Backup and DR, Apigee, Cloud Scheduler and others.
gcp.deep_sourcespicks which ones run. - Azure and GCP record coverage per task family, as AWS does, show "not enabled" placeholders for Defender plans, Sentinel and Security Command Center services, and follow
--services/inventory.exclude_services. cloudg.exceptions:CloudGErrorand its subclasses (ScannerError,ScannerTimeoutError,ScannerNotInstalledError,ScannerExecutionError,ScannerOutputError,ReportParseError,ScannerFailed,CollectionError,CredentialError,ProviderSDKMissingError,ConfigurationError), also exported fromcloudg. Every scanner wrapper takesstrict=Trueto raise on the first failure, records each failure in.failures, and hasraise_for_errors().parse_report(path, strict=True)raisesReportParseErrorfor an unreadable report.- report.html: an estate map in 3D (provider plates, account and region platforms, network slabs, subnet tiles, a control deck for identity and governance), with every relation drawn as a trace line on a lane of its own, asset selection, tracing from the internet, turning, zoom and pan. The D3 tree and force views stay one toggle away. The page also gains a posture overview, a top-risks list, an Assets tab, CSV export, light and dark themes and print styles. The Anatomy iso-kit and the Hairline kernel (both MIT) ship in
cloudg/templates/vendor/and are always embedded. - The docs site is built with MkDocs Material, with API pages generated from the docstrings, tabbed examples, an Examples section, an Exceptions page, a Credits page and a sample report at
/sample-report.html.
Changed:
- Credential, SDK and collection failures raise
CredentialError,ProviderSDKMissingErrorandCollectionError. They keep their old bases (RuntimeError,ImportError), so existingexceptclauses still match.ResilienceErrorandLiveOperationRejectednow derive fromCloudGError. - The PyPI project page is a short overview (
docs/PYPI.md) that links into the docs site.docs/DOCUMENTATION.mdstays the full reference that the MCP server serves.
- Add script to generate sample HTML report by @morpheuslord in #30
- Add files via upload by @morpheuslord in #31
- Credit Prowler and the other sources in the README by @morpheuslord in #32
- Azure and GCP mapped at AWS depth, importable exceptions, an isometric report and a MkDocs docs site by @morpheuslord in #33
Full Changelog: v0.6.1...v0.7.0