cloudg 0.5.2__tar.gz → 0.5.3__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.
Files changed (228) hide show
  1. {cloudg-0.5.2 → cloudg-0.5.3}/PKG-INFO +1 -1
  2. {cloudg-0.5.2 → cloudg-0.5.3}/README.md +1 -1
  3. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/__init__.py +1 -1
  4. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/context.py +2 -2
  5. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/iam.py +2 -1
  6. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/names.py +20 -3
  7. {cloudg-0.5.2 → cloudg-0.5.3}/pyproject.toml +1 -1
  8. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_aws_network_ext.py +2 -2
  9. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_inventory_deep.py +1 -1
  10. {cloudg-0.5.2 → cloudg-0.5.3}/.gitignore +0 -0
  11. {cloudg-0.5.2 → cloudg-0.5.3}/LICENSE +0 -0
  12. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/api.py +0 -0
  13. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/cli.py +0 -0
  14. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/cli_commands.py +0 -0
  15. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/cli_helpers.py +0 -0
  16. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/cli_inventory.py +0 -0
  17. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/cli_run_helpers.py +0 -0
  18. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/__init__.py +0 -0
  19. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/aws.py +0 -0
  20. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/aws_services.py +0 -0
  21. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/aws_services_extended.py +0 -0
  22. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/azure.py +0 -0
  23. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/base.py +0 -0
  24. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/gcp.py +0 -0
  25. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/gcp_assets.py +0 -0
  26. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/collectors/multi.py +0 -0
  27. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/config.py +0 -0
  28. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/coverage.py +0 -0
  29. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/credentials.py +0 -0
  30. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/graph/__init__.py +0 -0
  31. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/graph/builder.py +0 -0
  32. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/graph/ontology.py +0 -0
  33. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/graph/ontology_rules.py +0 -0
  34. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/graph/rag_export.py +0 -0
  35. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/graph/reachability.py +0 -0
  36. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/ingest.py +0 -0
  37. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/__init__.py +0 -0
  38. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/_util.py +0 -0
  39. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_deep.py +0 -0
  40. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_deep_tasks.py +0 -0
  41. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/__init__.py +0 -0
  42. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/_base.py +0 -0
  43. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/_policy_grants.py +0 -0
  44. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/__init__.py +0 -0
  45. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/_common.py +0 -0
  46. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/alarms.py +0 -0
  47. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/backup.py +0 -0
  48. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/batch.py +0 -0
  49. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/build_deploy.py +0 -0
  50. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/cicd.py +0 -0
  51. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/compute.py +0 -0
  52. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/containers_ext.py +0 -0
  53. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/firehose.py +0 -0
  54. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/integration.py +0 -0
  55. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/logs.py +0 -0
  56. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/operations.py +0 -0
  57. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/application/serverless_ext.py +0 -0
  58. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/cloudcontrol.py +0 -0
  59. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/containers/__init__.py +0 -0
  60. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/containers/ecr.py +0 -0
  61. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/containers/ecs.py +0 -0
  62. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/containers/eks.py +0 -0
  63. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/__init__.py +0 -0
  64. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/_common.py +0 -0
  65. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/analytics.py +0 -0
  66. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/bedrock.py +0 -0
  67. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/databases.py +0 -0
  68. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/glue.py +0 -0
  69. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/glue_etl.py +0 -0
  70. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/lakeformation.py +0 -0
  71. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/messaging.py +0 -0
  72. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/registry.py +0 -0
  73. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/sagemaker.py +0 -0
  74. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/serverless_data.py +0 -0
  75. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/data_ml/transfer.py +0 -0
  76. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/__init__.py +0 -0
  77. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/_common.py +0 -0
  78. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/cognito.py +0 -0
  79. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/data_protection.py +0 -0
  80. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/iam_extras.py +0 -0
  81. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/identity_center.py +0 -0
  82. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/ram.py +0 -0
  83. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/s3_access_points.py +0 -0
  84. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/service_catalog.py +0 -0
  85. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/sharing.py +0 -0
  86. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/governance/stack_sets.py +0 -0
  87. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/identity.py +0 -0
  88. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/__init__.py +0 -0
  89. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/_common.py +0 -0
  90. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/apigateway.py +0 -0
  91. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/cloudfront.py +0 -0
  92. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/direct_connect.py +0 -0
  93. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/elb_rules.py +0 -0
  94. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/global_accelerator.py +0 -0
  95. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/lattice.py +0 -0
  96. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/network_manager.py +0 -0
  97. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/privatelink.py +0 -0
  98. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/resolver.py +0 -0
  99. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/tgw.py +0 -0
  100. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/network_ext/vpn.py +0 -0
  101. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/platform/__init__.py +0 -0
  102. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/platform/compute_fabric.py +0 -0
  103. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/platform/data.py +0 -0
  104. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/platform/dns_iac_ops.py +0 -0
  105. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/platform/load_balancing.py +0 -0
  106. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/platform/storage.py +0 -0
  107. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/security/__init__.py +0 -0
  108. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/security/_common.py +0 -0
  109. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/security/detection.py +0 -0
  110. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/security/network_protection.py +0 -0
  111. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/security/posture.py +0 -0
  112. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/serverless/__init__.py +0 -0
  113. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/serverless/apigateway.py +0 -0
  114. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/serverless/functions.py +0 -0
  115. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/aws_services/serverless/messaging.py +0 -0
  116. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_deep.py +0 -0
  117. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/__init__.py +0 -0
  118. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/arm_types.py +0 -0
  119. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/builder.py +0 -0
  120. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/compute.py +0 -0
  121. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/data_security.py +0 -0
  122. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/edge.py +0 -0
  123. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/helpers.py +0 -0
  124. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/network.py +0 -0
  125. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/query.py +0 -0
  126. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/registry.py +0 -0
  127. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_graph/web_containers.py +0 -0
  128. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/azure_hierarchy.py +0 -0
  129. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/catalogs/__init__.py +0 -0
  130. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/catalogs/aws_arn_types.yaml +0 -0
  131. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/catalogs/aws_cloudcontrol.yaml +0 -0
  132. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/catalogs/azure_arm_types.yaml +0 -0
  133. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/catalogs/gcp_asset_types.yaml +0 -0
  134. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/dependencies.py +0 -0
  135. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_deep.py +0 -0
  136. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_hierarchy.py +0 -0
  137. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/__init__.py +0 -0
  138. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/compute.py +0 -0
  139. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/data_logging.py +0 -0
  140. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/gke.py +0 -0
  141. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/load_balancing.py +0 -0
  142. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/messaging.py +0 -0
  143. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/network.py +0 -0
  144. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/pipelines.py +0 -0
  145. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/resource_manager.py +0 -0
  146. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/gcp_relations/serverless.py +0 -0
  147. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/kubernetes.py +0 -0
  148. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/linker.py +0 -0
  149. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/linker_index.py +0 -0
  150. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/mapper.py +0 -0
  151. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/mapper_result.py +0 -0
  152. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/organization.py +0 -0
  153. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/inventory/organization_assets.py +0 -0
  154. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/normaliser.py +0 -0
  155. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/policies/custodian-aws-security.yml +0 -0
  156. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/policies/custodian-azure.yml +0 -0
  157. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/policies/custodian-gcp.yml +0 -0
  158. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/policies/custodian.yml +0 -0
  159. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/region_discovery.py +0 -0
  160. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/registry.py +0 -0
  161. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/renderers/__init__.py +0 -0
  162. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/renderers/html_report.py +0 -0
  163. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/renderers/json_export.py +0 -0
  164. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/renderers/svg.py +0 -0
  165. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/renderers/svg_layout.py +0 -0
  166. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/renderers/terraform_export.py +0 -0
  167. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/retry.py +0 -0
  168. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/check_equivalence.yaml +0 -0
  169. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/cis_aws_v3.yaml +0 -0
  170. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/cis_azure_v2.yaml +0 -0
  171. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/cis_gcp_v3.yaml +0 -0
  172. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/aws_foundational_security_best_practices_aws.yaml +0 -0
  173. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/cis_5.0_aws.yaml +0 -0
  174. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/cis_5.0_azure.yaml +0 -0
  175. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/cis_5.0_gcp.yaml +0 -0
  176. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/gdpr_aws.yaml +0 -0
  177. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/hipaa_aws.yaml +0 -0
  178. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/hipaa_azure.yaml +0 -0
  179. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/hipaa_gcp.yaml +0 -0
  180. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/iso27001_2022_aws.yaml +0 -0
  181. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/iso27001_2022_azure.yaml +0 -0
  182. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/iso27001_2022_gcp.yaml +0 -0
  183. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/mitre_attack_aws.yaml +0 -0
  184. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/mitre_attack_azure.yaml +0 -0
  185. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/mitre_attack_gcp.yaml +0 -0
  186. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/nist_800_53_revision_5_aws.yaml +0 -0
  187. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/nist_csf_2.0_aws.yaml +0 -0
  188. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/pci_4.0_aws.yaml +0 -0
  189. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/pci_4.0_azure.yaml +0 -0
  190. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/pci_4.0_gcp.yaml +0 -0
  191. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/soc2_aws.yaml +0 -0
  192. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/soc2_azure.yaml +0 -0
  193. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/frameworks/soc2_gcp.yaml +0 -0
  194. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/gdpr.yaml +0 -0
  195. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/hipaa_security_rule.yaml +0 -0
  196. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/iso_27001_2022.yaml +0 -0
  197. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/nist_800_53.yaml +0 -0
  198. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/pci_dss_v4.yaml +0 -0
  199. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/rules/soc2_tsc.yaml +0 -0
  200. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/scanners/__init__.py +0 -0
  201. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/scanners/checkov.py +0 -0
  202. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/scanners/iam_linter.py +0 -0
  203. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/scanners/prowler.py +0 -0
  204. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/scanners/scoutsuite.py +0 -0
  205. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/scanners/trivy.py +0 -0
  206. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/schema/__init__.py +0 -0
  207. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/schema/models.py +0 -0
  208. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/templates/report.html.j2 +0 -0
  209. {cloudg-0.5.2 → cloudg-0.5.3}/cloudg/ui.py +0 -0
  210. {cloudg-0.5.2 → cloudg-0.5.3}/docs/DOCUMENTATION.md +0 -0
  211. {cloudg-0.5.2 → cloudg-0.5.3}/tests/__init__.py +0 -0
  212. {cloudg-0.5.2 → cloudg-0.5.3}/tests/conftest.py +0 -0
  213. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_api.py +0 -0
  214. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_aws_application.py +0 -0
  215. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_aws_data_ml.py +0 -0
  216. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_aws_governance.py +0 -0
  217. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_azure_inventory.py +0 -0
  218. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_catalogs_cloudcontrol.py +0 -0
  219. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_collectors.py +0 -0
  220. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_gcp_inventory.py +0 -0
  221. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_ingest.py +0 -0
  222. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_inventory.py +0 -0
  223. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_normaliser.py +0 -0
  224. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_ontology.py +0 -0
  225. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_rag_export.py +0 -0
  226. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_region_discovery.py +0 -0
  227. {cloudg-0.5.2 → cloudg-0.5.3}/tests/test_scanner_orchestration.py +0 -0
  228. {cloudg-0.5.2 → cloudg-0.5.3}/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.2
3
+ Version: 0.5.3
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
@@ -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.2-4c1.svg" alt="Version 0.5.2">
8
+ <img src="https://img.shields.io/badge/version-0.5.3-4c1.svg" alt="Version 0.5.3">
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
 
@@ -1,6 +1,6 @@
1
1
  """cloudg — cloud graphing: multi-cloud mapping and security intelligence."""
2
2
 
3
- __version__ = "0.5.2"
3
+ __version__ = "0.5.3"
4
4
 
5
5
  from cloudg.api import (
6
6
  AnalysisResult,
@@ -8,7 +8,7 @@ from dataclasses import dataclass, field
8
8
  from typing import Any, Callable, Iterable
9
9
 
10
10
  from cloudg.inventory.aws_services._base import rel
11
- from cloudg.inventory.gcp_relations.names import kms_refs, sa_email, sa_ref
11
+ from cloudg.inventory.gcp_relations.names import asset_type_service, kms_refs, sa_email, sa_ref
12
12
  from cloudg.schema.models import CloudAsset, EdgeType
13
13
 
14
14
  logger = logging.getLogger(__package__)
@@ -124,7 +124,7 @@ def extract(ctx: GCPContext) -> Extracted:
124
124
  except Exception as exc: # one malformed resource must not stop the sweep
125
125
  logger.debug("GCP extractor failed for %s: %s", ctx.name, exc, exc_info=True)
126
126
  out.metadata["extraction_error"] = f"{type(exc).__name__}: {exc}"
127
- if ctx.asset_type.startswith("cloudkms.googleapis.com/"):
127
+ if asset_type_service(ctx.asset_type) == "cloudkms":
128
128
  return out
129
129
  keys = kms_refs(ctx.data)
130
130
  if keys:
@@ -16,6 +16,7 @@ from cloudg.inventory.gcp_relations.names import (
16
16
  PUBLIC_MEMBERS,
17
17
  _list,
18
18
  _num,
19
+ api_service,
19
20
  dig,
20
21
  sa_email,
21
22
  sa_ref,
@@ -252,7 +253,7 @@ def _mark_public(target: CloudAsset, member: str, role: str) -> None:
252
253
  def _is_sa_resource(resource: str) -> bool:
253
254
  return (
254
255
  "/serviceAccounts/" in resource
255
- and resource.startswith("//iam.googleapis.com/")
256
+ and api_service(resource) == "iam"
256
257
  and "/keys/" not in resource
257
258
  )
258
259
 
@@ -38,6 +38,10 @@ _API_URL_RE = re.compile(
38
38
  )
39
39
  _BARE_API_RE = re.compile(r"^([a-z0-9-]+)\.googleapis\.com/(.+)$")
40
40
  _KEY_VERSION_RE = re.compile(r"/cryptoKeyVersions/[^/]+$")
41
+ # API service of a full resource name ("//<svc>.googleapis.com/...") or of an
42
+ # asset type ("<svc>.googleapis.com/Type"), anchored at the start
43
+ _FULL_NAME_SERVICE_RE = re.compile(r"^//([a-z0-9-]+)\.googleapis\.com/")
44
+ _ASSET_TYPE_SERVICE_RE = re.compile(r"^([a-z0-9-]+)\.googleapis\.com/")
41
45
  _CRYPTO_KEY_RE = re.compile(
42
46
  r"(projects/[^/\s\"']+/locations/[^/\s\"']+/keyRings/[^/\s\"']+/cryptoKeys/[^/\s\"']+)"
43
47
  )
@@ -161,13 +165,26 @@ def _bare_api_full_name(service: str, rest: str) -> str:
161
165
  return f"//{svc}.googleapis.com/{rest}"
162
166
 
163
167
 
168
+ def api_service(name: Any) -> str | None:
169
+ """API service of a full resource name: ``//compute.googleapis.com/...`` -> ``compute``."""
170
+ m = _FULL_NAME_SERVICE_RE.match(name) if isinstance(name, str) else None
171
+ return m.group(1) if m else None
172
+
173
+
174
+ def asset_type_service(asset_type: Any) -> str | None:
175
+ """API service of a CAI asset type: ``cloudkms.googleapis.com/CryptoKey`` -> ``cloudkms``."""
176
+ m = _ASSET_TYPE_SERVICE_RE.match(asset_type) if isinstance(asset_type, str) else None
177
+ return m.group(1) if m else None
178
+
179
+
164
180
  def _canonical_full_name(out: str) -> str:
165
181
  """Drop query/fragment and key versions; fold service aliases."""
166
182
  out = out.split("?", 1)[0].split("#", 1)[0].rstrip("/")
167
183
  out = _KEY_VERSION_RE.sub("", out)
168
- if out.startswith("//sqladmin.googleapis.com/"):
169
- out = "//cloudsql.googleapis.com/" + out[len("//sqladmin.googleapis.com/") :]
170
- if out.startswith("//container.googleapis.com/"):
184
+ service = api_service(out)
185
+ if service == "sqladmin":
186
+ out = "//cloudsql.googleapis.com/" + relative_name(out)
187
+ elif service == "container":
171
188
  out = out.replace("/zones/", "/locations/")
172
189
  return out
173
190
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cloudg"
3
- version = "0.5.2"
3
+ version = "0.5.3"
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"
@@ -660,7 +660,7 @@ class TestEdgeAndResolver:
660
660
  for key in ("status", "domain_name", "origins", "web_acl_id", "viewer_protocol_policy"):
661
661
  assert key in cf_asset.metadata, key
662
662
  assert cf_asset.metadata["viewer_protocol_policy"] == "redirect-to-https"
663
- assert "www.example.com" in cf_asset.metadata["aliases"]
663
+ assert {"www.example.com"} <= set(cf_asset.metadata["aliases"])
664
664
  assert "s3cr3t" not in json.dumps(cf_asset.model_dump(mode="json"))
665
665
  bucket, logs_bucket, alb_asset = (
666
666
  by_arn["arn:aws:s3:::site-assets"],
@@ -986,7 +986,7 @@ class TestFakeClientCollectors:
986
986
  accel = _one(assets, AssetType.GLOBAL_ACCELERATOR)
987
987
  assert accel.is_internet_exposed and accel.region == "global"
988
988
  assert accel.metadata["ip_addresses"] == ["75.2.0.1", "99.83.0.1"]
989
- assert "a1234.awsglobalaccelerator.com" in accel.metadata["aliases"]
989
+ assert {"a1234.awsglobalaccelerator.com"} <= set(accel.metadata["aliases"])
990
990
  alb_asset = next(a for a in assets if a.arn == alb)
991
991
  assert _edge(edges, accel, alb_asset, EdgeType.LOAD_BALANCER_TARGET)
992
992
  assert ("list_custom_routing_accelerators", {}) in ga.calls
@@ -744,7 +744,7 @@ class TestDeepServiceCollectors:
744
744
  assert _edge(edges, bucket, queue, EdgeType.INVOKES) # S3 notification
745
745
  assert _edge(edges, role, queue, EdgeType.GRANTS_ACCESS) # inline policy grant
746
746
  assert role.metadata["trusted_external_accounts"] == ["999999999999"]
747
- assert "lambda.amazonaws.com" in role.metadata["trusted_services"]
747
+ assert {"lambda.amazonaws.com"} <= set(role.metadata["trusted_services"])
748
748
 
749
749
  def test_disabled_security_services_are_visible(self, aws_credentials):
750
750
  session = boto3.Session(region_name="us-east-1")
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