diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopologySubscriptionLocation_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopologySubscriptionLocation_example.json new file mode 100644 index 000000000000..4263ef6bcd08 --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopologySubscriptionLocation_example.json @@ -0,0 +1,64 @@ +{ + "parameters": { + "api-version": "2015-06-01-preview", + "subscriptionId": "3eeab341-f466-499c-a8be-85427e154bad", + "ascLocation": "centralus" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "calculatedDateTime": "2018-07-10T13:56:10.5755270Z", + "topologyResources": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet", + "severity": "Healthy", + "networkZones": "Internal", + "recommendationsExist": false, + "topologyScore": 0, + "location": "westus", + "children": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet" + } + ] + } + ] + }, + "id": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Security/locations/centralus/topologies/vnets", + "name": "vnets", + "type": "Microsoft.Security/locations/topologies", + "location": "westus" + }, + { + "properties": { + "calculatedDateTime": "2018-07-10T13:56:10.5755270Z", + "topologyResources": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet", + "severity": "Healthy", + "networkZones": "Internal", + "recommendationsExist": false, + "topologyScore": 5, + "location": "westus", + "parents": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet" + } + ] + } + ] + }, + "id": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Security/locations/centralus/topologies/subnets", + "name": "subnets", + "type": "Microsoft.Security/locations/topologies", + "location": "westus" + } + ] + } + + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopologySubscription_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopologySubscription_example.json new file mode 100644 index 000000000000..18b3e965b2a2 --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopologySubscription_example.json @@ -0,0 +1,63 @@ +{ + "parameters": { + "api-version": "2015-06-01-preview", + "subscriptionId": "3eeab341-f466-499c-a8be-85427e154bad" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "properties": { + "calculatedDateTime": "2018-07-10T13:56:10.5755270Z", + "topologyResources": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet", + "severity": "Healthy", + "networkZones": "Internal", + "recommendationsExist": false, + "topologyScore": 0, + "location": "westus", + "children": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet" + } + ] + } + ] + }, + "id": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Security/locations/centralus/topologies/vnets", + "name": "vnets", + "type": "Microsoft.Security/locations/topologies", + "location": "westus" + }, + { + "properties": { + "calculatedDateTime": "2018-07-10T13:56:10.5755270Z", + "topologyResources": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet", + "severity": "Healthy", + "networkZones": "Internal", + "recommendationsExist": false, + "topologyScore": 5, + "location": "westus", + "parents": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet" + } + ] + } + ] + }, + "id": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Security/locations/centralus/topologies/subnets", + "name": "subnets", + "type": "Microsoft.Security/locations/topologies", + "location": "westus" + } + ] + } + + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopology_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopology_example.json new file mode 100644 index 000000000000..175255795e5c --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/examples/Topology/GetTopology_example.json @@ -0,0 +1,36 @@ +{ + "parameters": { + "api-version": "2015-06-01-preview", + "subscriptionId": "3eeab341-f466-499c-a8be-85427e154bad", + "resourceGroupName": "myservers", + "ascLocation": "centralus", + "topologyResourceName": "vnets" + }, + "responses": { + "200": { + "body": { + "properties": { + "calculatedDateTime": "2018-07-10T13:56:10.5755270Z", + "topologyResources": [ + { + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet", + "severity": "Healthy", + "networkZones": "InternetFacing", + "recommendationsExist": false, + "topologyScore": 0, + "location": "westus", + "children": [{ + "resourceId": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet" + } + ] + } + ] + }, + "id": "/subscriptions/3eeab341-f466-499c-a8be-85427e154bad/resourceGroups/myservers/providers/Microsoft.Security/locations/centralus/topologies/vnets", + "name": "vnets", + "type": "Microsoft.Security/locations/topologies", + "location": "westus" + } + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/security.json b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/security.json index f49becbb1610..b91c7e5fe769 100644 --- a/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/security.json +++ b/specification/security/resource-manager/Microsoft.Security/preview/2015-06-01-preview/security.json @@ -1251,6 +1251,123 @@ } } } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Security/topologies": { + "get": { + "x-ms-examples": { + "Get topology on a subscription": { + "$ref": "./examples/Topology/GetTopologySubscription_example.json" + } + }, + "tags": ["Topology"], + "description": "Gets a list that allows to build a topology view of a subscription.", + "operationId": "Topology_List", + "parameters": [{ + "$ref": "#/parameters/SubscriptionId" + }, + { + "$ref": "#/parameters/ApiVersion" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/TopologyList" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/topologies": { + "get": { + "x-ms-examples": { + "Get topology on a subscription from security data location": { + "$ref": "./examples/Topology/GetTopologySubscriptionLocation_example.json" + } + }, + "tags": ["Topology"], + "description": "Gets a list that allows to build a topology view of a subscription and location.", + "operationId": "Topology_ListByHomeRegion", + "parameters": [{ + "$ref": "#/parameters/SubscriptionId" + }, + { + "$ref": "#/parameters/AscLocation" + }, + { + "$ref": "#/parameters/ApiVersion" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/TopologyList" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/topologies/{topologyResourceName}": { + "get": { + "x-ms-examples": { + "Get topology": { + "$ref": "./examples/Topology/GetTopology_example.json" + } + }, + "tags": ["Topology"], + "description": "Gets a specific topology component.", + "operationId": "Topology_Get", + "parameters": [{ + "$ref": "#/parameters/SubscriptionId" + }, + { + "$ref": "#/parameters/ResourceGroupName" + }, + { + "$ref": "#/parameters/AscLocation" + }, + { + "$ref": "#/parameters/TopologyResourceName" + }, + { + "$ref": "#/parameters/ApiVersion" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/TopologyResource" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + } + } } }, "definitions": { @@ -1454,9 +1571,7 @@ "SecurityTaskParameters": { "type": "object", "description": "Changing set of properties, depending on the task type that is derived from the name field", - "additionalProperties": { - "type": "object" - }, + "additionalProperties": true, "properties": { "name": { "readOnly": true, @@ -1666,9 +1781,7 @@ }, "AlertEntity": { "type": "object", - "additionalProperties": { - "type": "object" - }, + "additionalProperties": true, "description": "Changing set of properties depending on the entity type.", "properties": { "type": { @@ -1680,9 +1793,7 @@ }, "AlertExtendedProperties": { "type": "object", - "additionalProperties": { - "type": "object" - }, + "additionalProperties": true, "description": "Changing set of properties depending on the alert type." }, "DiscoveredSecuritySolutionList": { @@ -1770,6 +1881,130 @@ "sku" ] }, + "TopologyList": { + "type": "object", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/TopologyResource" + } + }, + "nextLink": { + "readOnly": true, + "type": "string", + "description": "The URI to fetch the next page." + } + } + }, + "TopologyResource": { + "type": "object", + "properties": { + "properties": { + "x-ms-client-flatten": true, + "readOnly": true, + "$ref": "#/definitions/TopologyResourceProperties" + } + }, + "allOf": [{ + "$ref": "#/definitions/Resource" + }, + { + "$ref": "#/definitions/Location" + } + ] + }, + "TopologyResourceProperties": { + "type": "object", + "properties": { + "calculatedDateTime": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "The UTC time on which the topology was calculated" + }, + "topologyResources": { + "type": "array", + "readOnly": true, + "description": "Azure resources which are part of this topology resource", + "items": { + "$ref": "#/definitions/TopologySingleResource" + } + } + } + }, + "TopologySingleResource": { + "type": "object", + "properties": { + "resourceId": { + "type": "string", + "readOnly": true, + "description": "Azure resource id" + }, + "severity": { + "type": "string", + "readOnly": true, + "description": "The security severity of the resource" + }, + "recommendationsExist": { + "type": "boolean", + "readOnly": true, + "description": "Indicates if the resource has security recommendations" + }, + "networkZones": { + "type": "string", + "readOnly": true, + "description": "Indicates the resource connectivity level to the Internet (InternetFacing, Internal ,etc.)" + }, + "topologyScore": { + "type": "integer", + "readOnly": true, + "description": "Score of the resource based on its security severity" + }, + "location": { + "type": "string", + "readOnly": true, + "description": "The location of this resource" + }, + "parents": { + "type": "array", + "readOnly": true, + "description": "Azure resources connected to this resource which are in higher level in the topology view", + "items": { + "$ref": "#/definitions/TopologySingleResourceParent" + } + }, + "children": { + "type": "array", + "readOnly": true, + "description": "Azure resources connected to this resource which are in lower level in the topology view", + "items": { + "$ref": "#/definitions/TopologySingleResourceChild" + } + } + } + }, + "TopologySingleResourceParent": { + "type": "object", + "properties": { + "resourceId": { + "type": "string", + "readOnly": true, + "description": "Azure resource id which serves as parent resource in topology view" + } + } + }, + "TopologySingleResourceChild": { + "type": "object", + "properties": { + "resourceId": { + "type": "string", + "readOnly": true, + "description": "Azure resource id which serves as child resource in topology view" + } + } + }, "JitNetworkAccessPoliciesList": { "type": "object", "properties": { @@ -2444,6 +2679,14 @@ "required": true, "type": "string", "x-ms-parameter-location": "method" + }, + "TopologyResourceName": { + "name": "topologyResourceName", + "in": "path", + "description": "Name of a topology resources collection.", + "required": true, + "type": "string", + "x-ms-parameter-location": "method" } } -} \ No newline at end of file +}