id: azure_security name: Microsoft Azure version: 1.0.0 description: "Microsoft Azure (Resource Manager: Defender for Cloud + Network) — cloud containment: list and read Defender for Cloud security alerts and update their state, read the secure score, list/read network security groups (NSGs), and add or delete NSG security rules (deny inbound to isolate). Azure AD OAuth2 client-credentials authentication; stdlib-only, no extra Python dependencies." changelog: "1.0.0 — Initial release: list/get security alerts, update alert state, secure score, list/get NSGs, create/delete NSG security rules." category: cloud # Per-instance configuration. Uses application (client-credentials) OAuth2 with # a service principal that has Reader + Security Admin + Network Contributor on # the subscription. config_schema: properties: tenant_id: type: string description: "Azure AD tenant ID" client_id: type: string description: "Service principal (client) ID" client_secret: type: string description: "Service principal client secret" x-soar-sensitive: true subscription_id: type: string description: "Azure subscription ID" required: - tenant_id - client_id - client_secret - subscription_id commands: - id: list_alerts name: azure-list-alerts description: "List Microsoft Defender for Cloud security alerts in the subscription." risk: read inputs_schema: properties: {} required: [] outputs_schema: { properties: {} } - id: get_alert name: azure-get-alert description: "Get a single security alert by its full ARM resource ID." risk: read inputs_schema: properties: alert_id: { type: string, description: "Full ARM resource ID of the alert (from azure-list-alerts)" } required: [alert_id] outputs_schema: { properties: {} } - id: update_alert_state name: azure-update-alert-state description: "Change a security alert's state (dismiss, resolve, activate, or inProgress)." inputs_schema: properties: alert_id: { type: string, description: "Full ARM resource ID of the alert" } state: { type: string, description: "dismiss | resolve | activate | inProgress" } required: [alert_id, state] outputs_schema: { properties: {} } - id: get_secure_score name: azure-get-secure-score description: "Get the subscription's Defender for Cloud secure score." risk: read inputs_schema: properties: {} required: [] outputs_schema: { properties: {} } - id: list_nsgs name: azure-list-nsgs description: "List network security groups in the subscription." risk: read inputs_schema: properties: {} required: [] outputs_schema: { properties: {} } - id: get_nsg name: azure-get-nsg description: "Get a single network security group." risk: read inputs_schema: properties: resource_group: { type: string, description: "Resource group name" } nsg_name: { type: string, description: "NSG name" } required: [resource_group, nsg_name] outputs_schema: { properties: {} } - id: create_nsg_rule name: azure-create-nsg-rule description: "Create or update an NSG security rule (e.g. a Deny inbound rule to isolate a resource)." inputs_schema: properties: resource_group: { type: string, description: "Resource group name" } nsg_name: { type: string, description: "NSG name" } rule_name: { type: string, description: "Security rule name" } priority: { type: number, description: "Rule priority (100-4096)" } direction: { type: string, description: "Inbound or Outbound (default Inbound)" } access: { type: string, description: "Allow or Deny (default Deny)" } protocol: { type: string, description: "Tcp, Udp, or * (default *)" } source: { type: string, description: "Source address prefix (CIDR or *, default *)" } destination: { type: string, description: "Destination address prefix (default *)" } destination_port: { type: string, description: "Destination port range (default *)" } required: [resource_group, nsg_name, rule_name, priority] outputs_schema: { properties: {} } - id: delete_nsg_rule name: azure-delete-nsg-rule description: "Delete an NSG security rule." inputs_schema: properties: resource_group: { type: string, description: "Resource group name" } nsg_name: { type: string, description: "NSG name" } rule_name: { type: string, description: "Security rule name" } required: [resource_group, nsg_name, rule_name] outputs_schema: { properties: {} } - id: test_connection name: azure-test-connection description: "Verify connectivity and the service-principal credentials (used by the Test button)." risk: read inputs_schema: properties: {} required: [] outputs_schema: { properties: {} }