This workflow separates three states: scan completion, indexed-data freshness, and exposure-policy evaluation. A completed scan is not enough if the host lookup still returns an older observation.

Requirements

  • OEM access for scan queueing and status
  • API access for host details
  • A specific hostname you own or are authorized to scan
  • An approved expected-port and prohibited-port policy
  • Python 3.10 or later with requests

Step 1: complete the scan lifecycle

Run Orchestrate an OEM Scan Lifecycle with FULLHUNT_SCAN_TYPE=host. Keep the completed state file.

Step 2: evaluate a fresh host observation

verify_deployment_exposure.py
Each host lookup can consume a regular API credit. Keep FULLHUNT_RESULT_POLLS bounded and wait between attempts.

Deployment decision

  • Pass: The observation is fresh enough, every expected port is present, and no prohibited port is present.
  • Fail: The observation is fresh enough but violates the explicit port policy.
  • Unknown: The scan completed, but no indexed host record at or after completed_at became available within the polling budget.
Do not convert unknown into pass. Decide whether the deployment system should wait, stop, or require manual review. This verifies externally observed network exposure. It does not validate application health, authentication, authorization, request routing, or source-code configuration. Run those checks in the deployment platform.