How massyn/posture works
Posture is a runtime-agnostic continuous-control-monitoring library: callers select a source and resource, collect a complete or paginated pandas DataFrame, and can write results through a pluggable storage backend. Its main stages are source selection, vendor collection, parsing and pagination, and durable output; catalog and CLI capabilities provide discovery and a bulk-extraction interface. The source index supports the shared collector, parser, cache, and storage relationships shown here; many individual collectors and backend implementations were not inspected, so their internal links are omitted.
Main entry points: base.py Collector lifecycle · storage/__init__.py Storage API · posture/__init__.py CCM API · collectors Vendor collectors
Components 21
Public API
- CCM API
src/posture/__init__.py - Source catalog
src/posture/__init__.py
Collection
- Collector lifecycle
src/posture/base.py - Collector registry
src/posture/__init__.py - Vendor collectors
src/posture/collectors - Cloudflare collector
src/posture/collectors/cloudflare.py - CrowdStrike collector
src/posture/collectors/crowdstrike.py - Intune collector
src/posture/collectors/intune.py - Azure OAuth
src/posture/collectors/_azure_oauth.py - Qualys FO client
src/posture/collectors/qualys/fo_api.py - Record parser
src/posture/parse.py - Page spill cache
src/posture/_spill.py - Error taxonomy
src/posture/exceptions.py
Storage
- Storage API
src/posture/storage/__init__.py - Storage contracts
src/posture/storage/base.py - JSON backend
src/posture/storage/json.py - Other backends
src/posture/storage
Interfaces
- Bulk extract CLI
src/posture/cli.py
Other components
- Python caller
- Vendor APIs
- DataFrame result
Connections 23
- Python caller → CCM API: selects source
- CCM API → Collector registry: constructs collector
src/posture/__init__.py - Collector registry → Vendor collectors: registers sources
src/posture/__init__.py - CCM API → Source catalog: discovers sources
src/posture/__init__.py - Vendor collectors → Collector lifecycle: implements lifecycle
src/posture/collectors/servicenow.py - Collector lifecycle → Record parser: parses records
src/posture/base.py - Collector lifecycle → Page spill cache: spills pages
src/posture/base.py - Collector lifecycle → JSON backend: uses spill format
src/posture/base.py - Cloudflare collector → Collector lifecycle: extends
src/posture/collectors/cloudflare.py - CrowdStrike collector → Collector lifecycle: extends
src/posture/collectors/crowdstrike.py - Intune collector → Collector lifecycle: extends
src/posture/collectors/intune.py - Intune collector → Azure OAuth: uses authentication
src/posture/collectors/intune.py - Qualys FO client → Vendor APIs: requests XML data
- Vendor collectors → Vendor APIs: fetches source data
- Collector lifecycle → DataFrame result: returns pages
- Python caller → Storage API: opens backend
- Storage API → Storage contracts: resolves backends
src/posture/storage/__init__.py - Storage API → JSON backend: selects backend
src/posture/storage/__init__.py - Storage API → Other backends: loads backend
src/posture/storage/__init__.py - Storage contracts → DataFrame result: writes frames
- Python caller → Bulk extract CLI: runs extraction
src/posture/cli.py - Bulk extract CLI → CCM API: collects resources
src/posture/cli.py - Bulk extract CLI → Other backends: writes parquet
src/posture/cli.py