Overview

The Wiz connector integrates ARX with the Wiz Cloud-Native Application Protection Platform (CNAPP) via its GraphQL API. It provides programmatic access to cloud security posture management, vulnerability findings, and security graph queries. It supports 20 operations across nine API families.

All operations are policy-evaluated and audit-logged through the ARX BaseConnector framework.

Prerequisites

Requirement Details
Wiz Tenant An active Wiz tenant with API access
Service Account Create a service account under Settings > Service Accounts in the Wiz portal
Client ID The OAuth2 client_id from the service account
Client Secret The OAuth2 client_secret from the service account
API URL Your Wiz API endpoint (defaults to https://api.us1.app.wiz.io/graphql; varies by datacenter: us1, us2, eu1, eu2)
Permissions Assign the service account a role with appropriate GraphQL scopes: read:issues, update:issues, read:vulnerabilities, read:resources, etc.

Store credentials in the ARX vault under the key wiz with fields client_id, client_secret, and api_url.

SDK Usage

from arxsec import ARXClient

arx = ARXClient()

# Query open critical issues
issues = await arx.execute(
    connector="wiz",
    operation="issues:read",
    params={
        "query": """query GetIssues($first: Int, $filterBy: IssueFilters) {
          issues(first: $first, filterBy: $filterBy) {
            nodes { id title severity status createdAt }
            pageInfo { hasNextPage endCursor }
            totalCount
          }
        }""",
        "variables": {
            "first": 50,
            "filterBy": {"status": ["OPEN"], "severity": ["CRITICAL"]},
        },
    },
)

# Resolve an issue
await arx.execute(
    connector="wiz",
    operation="issues:resolve",
    params={
        "query": """mutation ResolveIssue($input: ResolveIssueInput!) {
          resolveIssue(input: $input) {
            issue { id title status resolutionReason }
          }
        }""",
        "variables": {
            "input": {
                "id": "issue-uuid-here",
                "resolutionReason": "RESOLVED",
                "note": "Remediated via automated patching",
            },
        },
    },
)

# Search cloud resources by type
resources = await arx.execute(
    connector="wiz",
    operation="resources:read_inventory",
    params={
        "query": """query GetCloudResources($first: Int, $filterBy: CloudResourceFilters) {
          cloudResources(first: $first, filterBy: $filterBy) {
            nodes { id name type cloudPlatform region status }
            totalCount
          }
        }""",
        "variables": {
            "first": 100,
            "filterBy": {"type": ["virtualMachine"], "cloudPlatform": ["AWS"]},
        },
    },
)

Operations

Issues (5 operations)

Operation ID Description Risk Method
issues:read Query Wiz issues with filters and pagination LOW POST
issues:read_details Get full issue details by ID LOW POST
issues:update Update issue properties (severity, assignee, note, due date) MEDIUM POST
issues:resolve Resolve an issue with resolution reason MEDIUM POST
issues:reopen Reopen a previously resolved issue MEDIUM POST

Vulnerabilities (2 operations)

Operation ID Description Risk Method
vulnerabilities:read Query vulnerability findings with filters LOW POST
vulnerabilities:read_details Get full vulnerability finding details by ID LOW POST

Cloud Resources (3 operations)

Operation ID Description Risk Method
resources:read Graph search for cloud resources LOW POST
resources:read_inventory Query cloud resource inventory LOW POST
resources:read_config Get resource configuration details LOW POST

Security Graph (2 operations)

Operation ID Description Risk Method
graph:query Execute custom graph search query LOW POST
graph:relationships Query related entities for a resource LOW POST

Controls and Policies (2 operations)

Operation ID Description Risk Method
controls:read Query security frameworks and controls LOW POST
controls:read_findings Query findings for security controls LOW POST

Projects (1 operation)

Operation ID Description Risk Method
projects:read Query Wiz projects LOW POST

Reports (2 operations)

Operation ID Description Risk Method
reports:read Query available reports LOW POST
reports:generate Generate a new report MEDIUM POST

Users (1 operation)

Operation ID Description Risk Method
users:read Query Wiz users LOW POST

Connectors (2 operations)

Operation ID Description Risk Method
connectors:read Query Wiz connectors and their status LOW POST
connectors:test Test connector connectivity MEDIUM POST

Risk Classifications

Level Criteria Examples
LOW All read/query operations including issues, vulnerabilities, resources, graph searches, controls, projects, reports, users, and connectors issues:read, vulnerabilities:read, resources:read_inventory, graph:query, controls:read_findings, projects:read, reports:read, users:read, connectors:read
MEDIUM Mutation operations that modify issue state, generate reports, or test connectors issues:update, issues:resolve, issues:reopen, reports:generate, connectors:test

Wiz does not have HIGH or CRITICAL risk operations in this connector because the API is read-heavy and does not support destructive infrastructure actions. All mutations are limited to issue management, report generation, and connector testing.

Policy Examples

Allow full read access, restrict issue mutations

rules:
  - name: "Allow all Wiz read operations"
    connector: wiz
    operations:
      - "issues:read"
      - "issues:read_details"
      - "vulnerabilities:*"
      - "resources:*"
      - "graph:*"
      - "controls:*"
      - "projects:read"
      - "reports:read"
      - "users:read"
      - "connectors:read"
    action: allow

  - name: "Require approval to resolve or reopen issues"
    connector: wiz
    operations:
      - "issues:resolve"
      - "issues:reopen"
    action: require_approval
    approvers:
      - role: security_lead

Restrict report generation to scheduled automations

rules:
  - name: "Allow report generation for automation agents"
    connector: wiz
    operations:
      - "reports:generate"
    action: allow
    conditions:
      agent_role: scheduled_automation

  - name: "Deny report generation for all others"
    connector: wiz
    operations:
      - "reports:generate"
    action: deny
    reason: "Report generation is restricted to scheduled automation agents"

Allow cloud resource visibility across all teams

rules:
  - name: "Allow resource and graph queries for all agents"
    connector: wiz
    operations:
      - "resources:*"
      - "graph:*"
      - "controls:*"
    action: allow
    audit: verbose