cloudg 0.5.1__tar.gz → 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cloudg-0.5.1 → cloudg-0.5.2}/PKG-INFO +51 -7
- {cloudg-0.5.1 → cloudg-0.5.2}/README.md +3 -3
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/__init__.py +1 -1
- {cloudg-0.5.1 → cloudg-0.5.2}/docs/DOCUMENTATION.md +50 -6
- {cloudg-0.5.1 → cloudg-0.5.2}/pyproject.toml +1 -1
- {cloudg-0.5.1 → cloudg-0.5.2}/.gitignore +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/LICENSE +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/api.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/cli.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/cli_commands.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/cli_helpers.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/cli_inventory.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/cli_run_helpers.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/aws.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/aws_services.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/aws_services_extended.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/azure.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/base.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/gcp.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/gcp_assets.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/collectors/multi.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/config.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/coverage.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/credentials.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/graph/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/graph/builder.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/graph/ontology.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/graph/ontology_rules.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/graph/rag_export.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/graph/reachability.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/ingest.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/_util.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_deep.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_deep_tasks.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/_base.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/_policy_grants.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/_common.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/alarms.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/backup.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/batch.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/build_deploy.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/cicd.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/compute.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/containers_ext.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/firehose.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/integration.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/logs.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/operations.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/application/serverless_ext.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/cloudcontrol.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/containers/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/containers/ecr.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/containers/ecs.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/containers/eks.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/_common.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/analytics.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/bedrock.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/databases.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/glue.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/glue_etl.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/lakeformation.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/messaging.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/registry.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/sagemaker.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/serverless_data.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/data_ml/transfer.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/_common.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/cognito.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/data_protection.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/iam_extras.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/identity_center.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/ram.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/s3_access_points.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/service_catalog.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/sharing.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/governance/stack_sets.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/identity.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/_common.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/apigateway.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/cloudfront.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/direct_connect.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/elb_rules.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/global_accelerator.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/lattice.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/network_manager.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/privatelink.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/resolver.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/tgw.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/vpn.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/platform/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/platform/compute_fabric.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/platform/data.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/platform/dns_iac_ops.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/platform/load_balancing.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/platform/storage.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/security/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/security/_common.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/security/detection.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/security/network_protection.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/security/posture.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/serverless/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/serverless/apigateway.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/serverless/functions.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/serverless/messaging.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_deep.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/arm_types.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/builder.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/compute.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/data_security.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/edge.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/helpers.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/network.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/query.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/registry.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_graph/web_containers.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/azure_hierarchy.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/catalogs/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/catalogs/aws_arn_types.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/catalogs/aws_cloudcontrol.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/catalogs/azure_arm_types.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/catalogs/gcp_asset_types.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/dependencies.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_deep.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_hierarchy.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/compute.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/context.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/data_logging.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/gke.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/iam.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/load_balancing.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/messaging.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/names.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/network.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/pipelines.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/resource_manager.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/gcp_relations/serverless.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/kubernetes.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/linker.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/linker_index.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/mapper.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/mapper_result.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/organization.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/organization_assets.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/normaliser.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/policies/custodian-aws-security.yml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/policies/custodian-azure.yml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/policies/custodian-gcp.yml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/policies/custodian.yml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/region_discovery.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/registry.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/renderers/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/renderers/html_report.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/renderers/json_export.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/renderers/svg.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/renderers/svg_layout.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/renderers/terraform_export.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/retry.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/check_equivalence.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/cis_aws_v3.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/cis_azure_v2.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/cis_gcp_v3.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/aws_foundational_security_best_practices_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/cis_5.0_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/cis_5.0_azure.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/cis_5.0_gcp.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/gdpr_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/hipaa_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/hipaa_azure.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/hipaa_gcp.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/iso27001_2022_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/iso27001_2022_azure.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/iso27001_2022_gcp.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/mitre_attack_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/mitre_attack_azure.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/mitre_attack_gcp.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/nist_800_53_revision_5_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/nist_csf_2.0_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/pci_4.0_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/pci_4.0_azure.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/pci_4.0_gcp.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/soc2_aws.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/soc2_azure.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/frameworks/soc2_gcp.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/gdpr.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/hipaa_security_rule.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/iso_27001_2022.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/nist_800_53.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/pci_dss_v4.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/rules/soc2_tsc.yaml +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/scanners/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/scanners/checkov.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/scanners/iam_linter.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/scanners/prowler.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/scanners/scoutsuite.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/scanners/trivy.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/schema/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/schema/models.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/templates/report.html.j2 +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/cloudg/ui.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/__init__.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/conftest.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_api.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_aws_application.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_aws_data_ml.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_aws_governance.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_aws_network_ext.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_azure_inventory.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_catalogs_cloudcontrol.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_collectors.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_gcp_inventory.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_ingest.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_inventory.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_inventory_deep.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_normaliser.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_ontology.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_rag_export.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_region_discovery.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_scanner_orchestration.py +0 -0
- {cloudg-0.5.1 → cloudg-0.5.2}/tests/test_terraform_export.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: cloudg
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.2
|
|
4
4
|
Summary: cloudg (cloud graphing) - multi-cloud infrastructure mapping, knowledge graphs and security intelligence for AWS, Azure and GCP
|
|
5
5
|
Project-URL: Homepage, https://github.com/morpheuslord/cloudg
|
|
6
6
|
Project-URL: Repository, https://github.com/morpheuslord/cloudg
|
|
@@ -82,6 +82,12 @@ cloudg (cloud graphing) maps AWS, Azure and GCP infrastructure into a graph, run
|
|
|
82
82
|
|
|
83
83
|
This is the complete reference: every CLI command, the exact input and output formats, the data models, the full Python API with integration examples, configuration, plugins and authentication. Release history lives in the [changelog](https://github.com/morpheuslord/cloudg/blob/main/CHANGELOG.md).
|
|
84
84
|
|
|
85
|
+
The inventory mapper (`cloudg map`, `cloudg deps`, `cloudg.inventory`) has three deeper companion documents:
|
|
86
|
+
|
|
87
|
+
- [Inventory reference](INVENTORY_REFERENCE.md): the structure of every return value and exported file, field by field, with annotated examples (`CloudAsset`, `NetworkEdge`, relation objects, `InventoryResult`, `summary`, coverage records, dependency trees, blast radius, security coverage, `inventory-map.json`, `inventory-graph.json`, GraphML, `inventory-organization.json`, `asset-map.json`, `compliance-map.json`, `cloudg deps --json`).
|
|
88
|
+
- [Inventory catalog](INVENTORY_CATALOG.md): all 156 asset types with the native resource types mapped to each, the metadata keys and relations each one carries, and the full relationship matrix.
|
|
89
|
+
- [Inventory internals](INVENTORY_INTERNALS.md): how a mapping run works, every module, the 133 AWS collector tasks, the linker's resolution rules, the Azure and GCP extractor frameworks, dependency semantics, catalogs, and recipes for adding collectors, extractors and asset types.
|
|
90
|
+
|
|
85
91
|
Contents:
|
|
86
92
|
|
|
87
93
|
- [Installation](#installation)
|
|
@@ -398,8 +404,12 @@ All commands write into the output directory (`./reports` by default).
|
|
|
398
404
|
| `rag_chunks.jsonl`, `rag_metadata_index.json` | retrieval-ready chunks, one JSON object per line |
|
|
399
405
|
| `terraform/*.tf.json`, `terraform/import.sh` | Terraform recreation of live infrastructure, 25+ asset types |
|
|
400
406
|
| `inventory-map.json`, `inventory-map.graphml`, `inventory-graph.json` | scanner-independent inventory map: assets, interconnections, summary (`cloudg map`) |
|
|
407
|
+
| `inventory-dependencies.json` | shared dependencies, blast radius, cross-account edges, security service coverage (`cloudg map`) |
|
|
408
|
+
| `inventory-organization.json` | AWS Organization / Control Tower topology (`cloudg map --org`) |
|
|
401
409
|
| `asset-map.json`, `compliance-map.json` | inventory overlaid with scanner findings (`cloudg map --findings`) |
|
|
402
410
|
|
|
411
|
+
The inventory files are specified field by field in the [inventory reference](INVENTORY_REFERENCE.md).
|
|
412
|
+
|
|
403
413
|
`findings.json` has this shape:
|
|
404
414
|
|
|
405
415
|
```json
|
|
@@ -461,17 +471,44 @@ The unit every scanner and parser produces.
|
|
|
461
471
|
| `id` | `str` | auto UUID |
|
|
462
472
|
| `arn` | `str \| None` | native identifier |
|
|
463
473
|
| `name` | `str` | |
|
|
464
|
-
| `asset_type` | `AssetType` |
|
|
474
|
+
| `asset_type` | `AssetType` | 156-value taxonomy covering compute, networking, storage, databases, IAM and identity federation, keys and secrets, logging, containers and Kubernetes, integration, data and ML platforms, DNS and deployment, security services and scanners, organization and governance, hybrid networking, `OTHER`; the full list with what maps to each is in the [inventory catalog](INVENTORY_CATALOG.md#asset-types-by-category) |
|
|
465
475
|
| `provider` | `CloudProvider` | `AWS`, `AZURE`, `GCP` |
|
|
466
476
|
| `region` | `str` | `"global"` for regionless resources |
|
|
467
477
|
| `account_id` | `str \| None` | |
|
|
468
478
|
| `tags` | `dict[str, str]` | |
|
|
469
|
-
| `metadata` | `dict[str, Any]` | normalised extra attributes |
|
|
470
|
-
| `
|
|
479
|
+
| `metadata` | `dict[str, Any]` | normalised extra attributes; inventory assets also carry declared `relations` and identifier `aliases` |
|
|
480
|
+
| `collected_at` | `datetime` | when the asset was built |
|
|
481
|
+
| `is_internet_exposed` | `bool` | set by the collector or the graph analysis |
|
|
482
|
+
| `raw_data` | `dict[str, Any]` | raw API payload, never serialised |
|
|
483
|
+
| `display_id` | computed `str` | `arn` or `id` |
|
|
484
|
+
|
|
485
|
+
`id` is regenerated on every run; correlate assets across runs by `arn`.
|
|
471
486
|
|
|
472
487
|
### NetworkEdge
|
|
473
488
|
|
|
474
|
-
Directed edge between two asset IDs
|
|
489
|
+
Directed edge between two asset IDs (`source_id`, `target_id`); direction always reads "source verb target".
|
|
490
|
+
|
|
491
|
+
| Field | Type | Notes |
|
|
492
|
+
|---|---|---|
|
|
493
|
+
| `id` | `str` | auto UUID |
|
|
494
|
+
| `source_id`, `target_id` | `str` | asset IDs; network rule edges can use a CIDR or native security group ID as an endpoint |
|
|
495
|
+
| `edge_type` | `EdgeType` | coarse class, below |
|
|
496
|
+
| `relationship` | `str \| None` | fine-grained ontology relation (`TRIGGERED_BY`, `RUNS_ON`, `CROSS_ACCOUNT_TRUST`, `ENCRYPTED_BY_KMS`, ...) |
|
|
497
|
+
| `properties` | `dict[str, Any]` | relation detail: trust conditions, granted actions, EKS access policies, notification events, `cross_account`, `external_reference`, `hierarchy` |
|
|
498
|
+
| `description` | `str \| None` | human-readable explanation |
|
|
499
|
+
| `ports`, `port_range`, `protocol`, `cidr`, `direction` | | network rule edges |
|
|
500
|
+
|
|
501
|
+
`edge_type` values:
|
|
502
|
+
|
|
503
|
+
| Group | Values |
|
|
504
|
+
|---|---|
|
|
505
|
+
| Network | `SECURITY_GROUP_RULE`, `NACL_RULE`, `ROUTE`, `PEERING`, `LOAD_BALANCER_TARGET`, `INTERNET_EXPOSED` |
|
|
506
|
+
| Structure | `CONTAINS`, `ATTACHED_TO`, `REFERENCES` |
|
|
507
|
+
| Identity | `IAM_TRUST`, `IAM_POLICY_ATTACHMENT`, `ASSUMES_ROLE`, `GRANTS_ACCESS` |
|
|
508
|
+
| Workload | `INVOKES`, `USES_IMAGE`, `LOGS_TO` |
|
|
509
|
+
| Security and governance | `PROTECTS`, `MONITORS`, `MANAGES`, `GOVERNS` |
|
|
510
|
+
|
|
511
|
+
What each one means, its typical endpoints and how it counts for dependency analysis is in the [inventory reference](INVENTORY_REFERENCE.md#6-edge-types-and-direction); every observed source type → relationship → target type combination is in the [relationship matrix](INVENTORY_CATALOG.md#relationship-matrix).
|
|
475
512
|
|
|
476
513
|
### ComplianceResult
|
|
477
514
|
|
|
@@ -711,7 +748,9 @@ Reference data lives in YAML catalogs under `cloudg/inventory/catalogs/` rather
|
|
|
711
748
|
|
|
712
749
|
Your own collectors can declare relationships the same way the built-in ones do, by listing them in `metadata["relations"]`: `{"target": <any identifier>, "edge": "INVOKES", "relationship": "TRIGGERED_BY", "reverse": false}`.
|
|
713
750
|
|
|
714
|
-
The deep collectors are public too, when you want single-region, single-account control: `AWSDeepInventoryCollector(session, region, account_id, tagging_sweep=True, is_primary_region
|
|
751
|
+
The deep collectors are public too, when you want single-region, single-account control: `AWSDeepInventoryCollector(session, region="us-east-1", account_id=None, tagging_sweep=True, **options)` (keyword options `is_primary_region`, `services`, `exclude_services`, `kubernetes`, `kubernetes_timeout`, `iam_resource_edges`, `max_images_per_repository`, `stack_resources`, `cloud_control`, `cloud_control_types`, `cloud_control_exclude`, `cloud_control_concurrency`; an unknown option raises `TypeError`), `AzureDeepInventoryCollector(credential, subscription_id, graph_client_factory=None, use_resource_graph=True)` and `GCPDeepInventoryCollector(project_id, credentials=None, **options)` (keyword options `organization_id`, `scope`, `project_filter`, `skip_asset_types`, `page_size`, `include_iam`, `client`, `coverage`, `timeout`, `link_locally`) all implement the standard `collect()` / `collect_edges()` / `run()` collector interface. Their assets carry declared relations; pass them through `RelationshipLinker` for the typed edges.
|
|
752
|
+
|
|
753
|
+
Every structure above, from `summary` to the dependency tree, is specified field by field in the [inventory reference](INVENTORY_REFERENCE.md).
|
|
715
754
|
|
|
716
755
|
### The deeper toolkit
|
|
717
756
|
|
|
@@ -727,6 +766,11 @@ Modules the pipeline uses internally that are equally useful standalone:
|
|
|
727
766
|
| `cloudg.normaliser` | `FindingsNormaliser` | the full dedupe / cross-scanner merge / CVSS rescore / compliance mapping pass, on any `list[Finding]` |
|
|
728
767
|
| `cloudg.ingest` | `parse_report`, `ingest_reports` | every scanner's parser, standalone; no engine, no credentials |
|
|
729
768
|
| `cloudg.coverage` | `CollectionCoverage` | per-service success/failure/asset-count records every collector produces |
|
|
769
|
+
| `cloudg.inventory.dependencies` | `DependencyGraph`, `cross_account_edges`, `security_coverage` | dependency walks, shared dependencies, blast radius, cross-account edges and security service coverage over any assets and edges |
|
|
770
|
+
| `cloudg.inventory.linker` | `RelationshipLinker` | resolve declared relations and identifiers across services, regions and accounts into typed edges |
|
|
771
|
+
| `cloudg.inventory.organization` | `discover_organization`, `OrganizationTopology` | AWS Organizations and Control Tower discovery, account selection, map nodes |
|
|
772
|
+
| `cloudg.inventory.kubernetes` | `collect_eks_workloads`, `KubernetesReader` | read-only Kubernetes object mapping for EKS clusters |
|
|
773
|
+
| `cloudg.inventory.catalogs` | `load_catalog`, `asset_type_map` | the YAML reference catalogs with `$CLOUDG_CATALOG_DIR` overlays |
|
|
730
774
|
| `cloudg.registry` | `PluginRegistry` | entry-point discovery of collector and scanner plugins |
|
|
731
775
|
|
|
732
776
|
### PipelineResult
|
|
@@ -938,7 +982,7 @@ myscanner = "my_package.scanner:MyScanner"
|
|
|
938
982
|
mycloud = "my_package.collector:MyCollector"
|
|
939
983
|
```
|
|
940
984
|
|
|
941
|
-
After `pip install`, the name is available in `scanners.enabled` and `--scanners`. Collectors follow the base interface in `cloudg/collectors/base.py`. If your scanner emits a stable check ID in `source_finding_id`, you can add it to `rules/check_equivalence.yaml` so its findings merge with equivalent checks from other tools.
|
|
985
|
+
After `pip install`, the name is available in `scanners.enabled` and `--scanners`. Collectors follow the base interface in `cloudg/collectors/base.py`. A collector plugin's assets join the inventory map like the built-in ones: declare what each asset talks to in `metadata["relations"]` and extra identifiers in `metadata["aliases"]`, and the relationship linker resolves them (see [Inventory internals](INVENTORY_INTERNALS.md#156-declare-relations-from-your-own-collector-or-plugin)). If your scanner emits a stable check ID in `source_finding_id`, you can add it to `rules/check_equivalence.yaml` so its findings merge with equivalent checks from other tools.
|
|
942
986
|
|
|
943
987
|
## Authentication
|
|
944
988
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<p align="center">
|
|
6
6
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License: MIT"></a>
|
|
7
7
|
<img src="https://img.shields.io/badge/python-3.11%2B-blue.svg" alt="Python 3.11+">
|
|
8
|
-
<img src="https://img.shields.io/badge/version-0.5.
|
|
8
|
+
<img src="https://img.shields.io/badge/version-0.5.2-4c1.svg" alt="Version 0.5.2">
|
|
9
9
|
<a href="https://github.com/astral-sh/uv"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json" alt="uv"></a>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
@@ -20,7 +20,7 @@ One command collects assets from every configured provider in parallel, feeds th
|
|
|
20
20
|
|
|
21
21
|
Need the map without the security tooling? `cloudg map` is a scanner-independent inventory mapper: it deep-collects everything deployed (or default) in an account, down to the network fabric, sweeps every service for the rest, and links it all into one asset map you can overlay with scanner findings later. See [Inventory mapping](#inventory-mapping).
|
|
22
22
|
|
|
23
|
-
**Full documentation:** the rendered handbook lives at [morpheuslord.github.io/cloudg](https://morpheuslord.github.io/cloudg/), with the same content as markdown in the [feature reference](https://github.com/morpheuslord/cloudg/blob/main/docs/DOCUMENTATION.md) and release notes in the [changelog](https://github.com/morpheuslord/cloudg/blob/main/CHANGELOG.md).
|
|
23
|
+
**Full documentation:** the rendered handbook lives at [morpheuslord.github.io/cloudg](https://morpheuslord.github.io/cloudg/), with the same content as markdown in the [feature reference](https://github.com/morpheuslord/cloudg/blob/main/docs/DOCUMENTATION.md) and release notes in the [changelog](https://github.com/morpheuslord/cloudg/blob/main/CHANGELOG.md). The inventory mapper has its own deep-dive documents: the [inventory reference](https://github.com/morpheuslord/cloudg/blob/main/docs/INVENTORY_REFERENCE.md) (every return structure and output file, field by field), the [inventory catalog](https://github.com/morpheuslord/cloudg/blob/main/docs/INVENTORY_CATALOG.md) (all 156 asset types, their metadata and relationships) and the [inventory internals](https://github.com/morpheuslord/cloudg/blob/main/docs/INVENTORY_INTERNALS.md) (how it works and how to extend it).
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -101,7 +101,7 @@ cloudg deps arn:aws:iam::123456789012:role/app-role
|
|
|
101
101
|
cloudg map -p aws --regions all --findings ./reports/raw-findings.json
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
Outputs: `inventory-map.json` (assets, interconnections, summary), `inventory-map.graphml`, `inventory-graph.json` for viewers, `inventory-dependencies.json` (shared dependencies, blast radius, cross-account edges, security coverage gaps) and, with `--org`, `inventory-organization.json`. With `--findings`, additionally `asset-map.json` (each asset with its findings and severity breakdown) and `compliance-map.json` (framework → affected assets). The map never depends on the scanners; you can map today and merge in findings from a scan you run next week.
|
|
104
|
+
Outputs: `inventory-map.json` (assets, interconnections, summary), `inventory-map.graphml`, `inventory-graph.json` for viewers, `inventory-dependencies.json` (shared dependencies, blast radius, cross-account edges, security coverage gaps) and, with `--org`, `inventory-organization.json`. With `--findings`, additionally `asset-map.json` (each asset with its findings and severity breakdown) and `compliance-map.json` (framework → affected assets). The map never depends on the scanners; you can map today and merge in findings from a scan you run next week. Every file is specified field by field, with annotated examples, in the [inventory reference](https://github.com/morpheuslord/cloudg/blob/main/docs/INVENTORY_REFERENCE.md).
|
|
105
105
|
|
|
106
106
|
All of this is also a library API, see [Using it as a library](#using-it-as-a-library):
|
|
107
107
|
|
|
@@ -8,6 +8,12 @@ cloudg (cloud graphing) maps AWS, Azure and GCP infrastructure into a graph, run
|
|
|
8
8
|
|
|
9
9
|
This is the complete reference: every CLI command, the exact input and output formats, the data models, the full Python API with integration examples, configuration, plugins and authentication. Release history lives in the [changelog](https://github.com/morpheuslord/cloudg/blob/main/CHANGELOG.md).
|
|
10
10
|
|
|
11
|
+
The inventory mapper (`cloudg map`, `cloudg deps`, `cloudg.inventory`) has three deeper companion documents:
|
|
12
|
+
|
|
13
|
+
- [Inventory reference](INVENTORY_REFERENCE.md): the structure of every return value and exported file, field by field, with annotated examples (`CloudAsset`, `NetworkEdge`, relation objects, `InventoryResult`, `summary`, coverage records, dependency trees, blast radius, security coverage, `inventory-map.json`, `inventory-graph.json`, GraphML, `inventory-organization.json`, `asset-map.json`, `compliance-map.json`, `cloudg deps --json`).
|
|
14
|
+
- [Inventory catalog](INVENTORY_CATALOG.md): all 156 asset types with the native resource types mapped to each, the metadata keys and relations each one carries, and the full relationship matrix.
|
|
15
|
+
- [Inventory internals](INVENTORY_INTERNALS.md): how a mapping run works, every module, the 133 AWS collector tasks, the linker's resolution rules, the Azure and GCP extractor frameworks, dependency semantics, catalogs, and recipes for adding collectors, extractors and asset types.
|
|
16
|
+
|
|
11
17
|
Contents:
|
|
12
18
|
|
|
13
19
|
- [Installation](#installation)
|
|
@@ -324,8 +330,12 @@ All commands write into the output directory (`./reports` by default).
|
|
|
324
330
|
| `rag_chunks.jsonl`, `rag_metadata_index.json` | retrieval-ready chunks, one JSON object per line |
|
|
325
331
|
| `terraform/*.tf.json`, `terraform/import.sh` | Terraform recreation of live infrastructure, 25+ asset types |
|
|
326
332
|
| `inventory-map.json`, `inventory-map.graphml`, `inventory-graph.json` | scanner-independent inventory map: assets, interconnections, summary (`cloudg map`) |
|
|
333
|
+
| `inventory-dependencies.json` | shared dependencies, blast radius, cross-account edges, security service coverage (`cloudg map`) |
|
|
334
|
+
| `inventory-organization.json` | AWS Organization / Control Tower topology (`cloudg map --org`) |
|
|
327
335
|
| `asset-map.json`, `compliance-map.json` | inventory overlaid with scanner findings (`cloudg map --findings`) |
|
|
328
336
|
|
|
337
|
+
The inventory files are specified field by field in the [inventory reference](INVENTORY_REFERENCE.md).
|
|
338
|
+
|
|
329
339
|
`findings.json` has this shape:
|
|
330
340
|
|
|
331
341
|
```json
|
|
@@ -387,17 +397,44 @@ The unit every scanner and parser produces.
|
|
|
387
397
|
| `id` | `str` | auto UUID |
|
|
388
398
|
| `arn` | `str \| None` | native identifier |
|
|
389
399
|
| `name` | `str` | |
|
|
390
|
-
| `asset_type` | `AssetType` |
|
|
400
|
+
| `asset_type` | `AssetType` | 156-value taxonomy covering compute, networking, storage, databases, IAM and identity federation, keys and secrets, logging, containers and Kubernetes, integration, data and ML platforms, DNS and deployment, security services and scanners, organization and governance, hybrid networking, `OTHER`; the full list with what maps to each is in the [inventory catalog](INVENTORY_CATALOG.md#asset-types-by-category) |
|
|
391
401
|
| `provider` | `CloudProvider` | `AWS`, `AZURE`, `GCP` |
|
|
392
402
|
| `region` | `str` | `"global"` for regionless resources |
|
|
393
403
|
| `account_id` | `str \| None` | |
|
|
394
404
|
| `tags` | `dict[str, str]` | |
|
|
395
|
-
| `metadata` | `dict[str, Any]` | normalised extra attributes |
|
|
396
|
-
| `
|
|
405
|
+
| `metadata` | `dict[str, Any]` | normalised extra attributes; inventory assets also carry declared `relations` and identifier `aliases` |
|
|
406
|
+
| `collected_at` | `datetime` | when the asset was built |
|
|
407
|
+
| `is_internet_exposed` | `bool` | set by the collector or the graph analysis |
|
|
408
|
+
| `raw_data` | `dict[str, Any]` | raw API payload, never serialised |
|
|
409
|
+
| `display_id` | computed `str` | `arn` or `id` |
|
|
410
|
+
|
|
411
|
+
`id` is regenerated on every run; correlate assets across runs by `arn`.
|
|
397
412
|
|
|
398
413
|
### NetworkEdge
|
|
399
414
|
|
|
400
|
-
Directed edge between two asset IDs
|
|
415
|
+
Directed edge between two asset IDs (`source_id`, `target_id`); direction always reads "source verb target".
|
|
416
|
+
|
|
417
|
+
| Field | Type | Notes |
|
|
418
|
+
|---|---|---|
|
|
419
|
+
| `id` | `str` | auto UUID |
|
|
420
|
+
| `source_id`, `target_id` | `str` | asset IDs; network rule edges can use a CIDR or native security group ID as an endpoint |
|
|
421
|
+
| `edge_type` | `EdgeType` | coarse class, below |
|
|
422
|
+
| `relationship` | `str \| None` | fine-grained ontology relation (`TRIGGERED_BY`, `RUNS_ON`, `CROSS_ACCOUNT_TRUST`, `ENCRYPTED_BY_KMS`, ...) |
|
|
423
|
+
| `properties` | `dict[str, Any]` | relation detail: trust conditions, granted actions, EKS access policies, notification events, `cross_account`, `external_reference`, `hierarchy` |
|
|
424
|
+
| `description` | `str \| None` | human-readable explanation |
|
|
425
|
+
| `ports`, `port_range`, `protocol`, `cidr`, `direction` | | network rule edges |
|
|
426
|
+
|
|
427
|
+
`edge_type` values:
|
|
428
|
+
|
|
429
|
+
| Group | Values |
|
|
430
|
+
|---|---|
|
|
431
|
+
| Network | `SECURITY_GROUP_RULE`, `NACL_RULE`, `ROUTE`, `PEERING`, `LOAD_BALANCER_TARGET`, `INTERNET_EXPOSED` |
|
|
432
|
+
| Structure | `CONTAINS`, `ATTACHED_TO`, `REFERENCES` |
|
|
433
|
+
| Identity | `IAM_TRUST`, `IAM_POLICY_ATTACHMENT`, `ASSUMES_ROLE`, `GRANTS_ACCESS` |
|
|
434
|
+
| Workload | `INVOKES`, `USES_IMAGE`, `LOGS_TO` |
|
|
435
|
+
| Security and governance | `PROTECTS`, `MONITORS`, `MANAGES`, `GOVERNS` |
|
|
436
|
+
|
|
437
|
+
What each one means, its typical endpoints and how it counts for dependency analysis is in the [inventory reference](INVENTORY_REFERENCE.md#6-edge-types-and-direction); every observed source type → relationship → target type combination is in the [relationship matrix](INVENTORY_CATALOG.md#relationship-matrix).
|
|
401
438
|
|
|
402
439
|
### ComplianceResult
|
|
403
440
|
|
|
@@ -637,7 +674,9 @@ Reference data lives in YAML catalogs under `cloudg/inventory/catalogs/` rather
|
|
|
637
674
|
|
|
638
675
|
Your own collectors can declare relationships the same way the built-in ones do, by listing them in `metadata["relations"]`: `{"target": <any identifier>, "edge": "INVOKES", "relationship": "TRIGGERED_BY", "reverse": false}`.
|
|
639
676
|
|
|
640
|
-
The deep collectors are public too, when you want single-region, single-account control: `AWSDeepInventoryCollector(session, region, account_id, tagging_sweep=True, is_primary_region
|
|
677
|
+
The deep collectors are public too, when you want single-region, single-account control: `AWSDeepInventoryCollector(session, region="us-east-1", account_id=None, tagging_sweep=True, **options)` (keyword options `is_primary_region`, `services`, `exclude_services`, `kubernetes`, `kubernetes_timeout`, `iam_resource_edges`, `max_images_per_repository`, `stack_resources`, `cloud_control`, `cloud_control_types`, `cloud_control_exclude`, `cloud_control_concurrency`; an unknown option raises `TypeError`), `AzureDeepInventoryCollector(credential, subscription_id, graph_client_factory=None, use_resource_graph=True)` and `GCPDeepInventoryCollector(project_id, credentials=None, **options)` (keyword options `organization_id`, `scope`, `project_filter`, `skip_asset_types`, `page_size`, `include_iam`, `client`, `coverage`, `timeout`, `link_locally`) all implement the standard `collect()` / `collect_edges()` / `run()` collector interface. Their assets carry declared relations; pass them through `RelationshipLinker` for the typed edges.
|
|
678
|
+
|
|
679
|
+
Every structure above, from `summary` to the dependency tree, is specified field by field in the [inventory reference](INVENTORY_REFERENCE.md).
|
|
641
680
|
|
|
642
681
|
### The deeper toolkit
|
|
643
682
|
|
|
@@ -653,6 +692,11 @@ Modules the pipeline uses internally that are equally useful standalone:
|
|
|
653
692
|
| `cloudg.normaliser` | `FindingsNormaliser` | the full dedupe / cross-scanner merge / CVSS rescore / compliance mapping pass, on any `list[Finding]` |
|
|
654
693
|
| `cloudg.ingest` | `parse_report`, `ingest_reports` | every scanner's parser, standalone; no engine, no credentials |
|
|
655
694
|
| `cloudg.coverage` | `CollectionCoverage` | per-service success/failure/asset-count records every collector produces |
|
|
695
|
+
| `cloudg.inventory.dependencies` | `DependencyGraph`, `cross_account_edges`, `security_coverage` | dependency walks, shared dependencies, blast radius, cross-account edges and security service coverage over any assets and edges |
|
|
696
|
+
| `cloudg.inventory.linker` | `RelationshipLinker` | resolve declared relations and identifiers across services, regions and accounts into typed edges |
|
|
697
|
+
| `cloudg.inventory.organization` | `discover_organization`, `OrganizationTopology` | AWS Organizations and Control Tower discovery, account selection, map nodes |
|
|
698
|
+
| `cloudg.inventory.kubernetes` | `collect_eks_workloads`, `KubernetesReader` | read-only Kubernetes object mapping for EKS clusters |
|
|
699
|
+
| `cloudg.inventory.catalogs` | `load_catalog`, `asset_type_map` | the YAML reference catalogs with `$CLOUDG_CATALOG_DIR` overlays |
|
|
656
700
|
| `cloudg.registry` | `PluginRegistry` | entry-point discovery of collector and scanner plugins |
|
|
657
701
|
|
|
658
702
|
### PipelineResult
|
|
@@ -864,7 +908,7 @@ myscanner = "my_package.scanner:MyScanner"
|
|
|
864
908
|
mycloud = "my_package.collector:MyCollector"
|
|
865
909
|
```
|
|
866
910
|
|
|
867
|
-
After `pip install`, the name is available in `scanners.enabled` and `--scanners`. Collectors follow the base interface in `cloudg/collectors/base.py`. If your scanner emits a stable check ID in `source_finding_id`, you can add it to `rules/check_equivalence.yaml` so its findings merge with equivalent checks from other tools.
|
|
911
|
+
After `pip install`, the name is available in `scanners.enabled` and `--scanners`. Collectors follow the base interface in `cloudg/collectors/base.py`. A collector plugin's assets join the inventory map like the built-in ones: declare what each asset talks to in `metadata["relations"]` and extra identifiers in `metadata["aliases"]`, and the relationship linker resolves them (see [Inventory internals](INVENTORY_INTERNALS.md#156-declare-relations-from-your-own-collector-or-plugin)). If your scanner emits a stable check ID in `source_finding_id`, you can add it to `rules/check_equivalence.yaml` so its findings merge with equivalent checks from other tools.
|
|
868
912
|
|
|
869
913
|
## Authentication
|
|
870
914
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cloudg"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.2"
|
|
4
4
|
description = "cloudg (cloud graphing) - multi-cloud infrastructure mapping, knowledge graphs and security intelligence for AWS, Azure and GCP"
|
|
5
5
|
# The PyPI project page renders the full documentation, not the repo README
|
|
6
6
|
readme = "docs/DOCUMENTATION.md"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloudg-0.5.1 → cloudg-0.5.2}/cloudg/inventory/aws_services/network_ext/global_accelerator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|