diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/defenderForStorageSettings.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/defenderForStorageSettings.json new file mode 100644 index 000000000000..fef106d2487b --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/defenderForStorageSettings.json @@ -0,0 +1,603 @@ +{ + "swagger": "2.0", + "info": { + "title": "Security Center", + "description": "API spec for Microsoft.Security (Azure Security Center) resource provider", + "version": "2025-09-01-preview" + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "flow": "implicit", + "description": "Azure Active Directory OAuth2 Flow", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "paths": { + "/{resourceId}/providers/Microsoft.Security/defenderForStorageSettings/{settingName}": { + "get": { + "x-ms-examples": { + "Gets the Defender for Storage settings for the specified resource.": { + "$ref": "./examples/DefenderForStorage/GetDefenderForStorageSettings_example.json" + } + }, + "tags": [ + "DefenderForStorage" + ], + "description": "Gets the Defender for Storage settings for the specified storage account.", + "operationId": "DefenderForStorage_Get", + "parameters": [ + { + "$ref": "../../../common/v1/types.json#/parameters/ApiVersion" + }, + { + "$ref": "../../../common/v1/types.json#/parameters/ResourceId" + }, + { + "$ref": "#/parameters/DefenderForStorageSettingName" + } + ], + "responses": { + "200": { + "description": "Successful request to get Defender for Storage settings.", + "schema": { + "$ref": "#/definitions/DefenderForStorageSetting" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "../../../common/v1/types.json#/definitions/CloudError" + } + } + } + }, + "put": { + "x-ms-examples": { + "Creates or updates the Defender for Storage settings on a specified resource.": { + "$ref": "./examples/DefenderForStorage/PutDefenderForStorageSettings_example.json" + } + }, + "tags": [ + "DefenderForStorage" + ], + "description": "Creates or updates the Defender for Storage settings on a specified storage account.", + "operationId": "DefenderForStorage_Create", + "parameters": [ + { + "$ref": "../../../common/v1/types.json#/parameters/ApiVersion" + }, + { + "$ref": "../../../common/v1/types.json#/parameters/ResourceId" + }, + { + "$ref": "#/parameters/DefenderForStorageSettingName" + }, + { + "$ref": "#/parameters/DefenderForStorageSetting" + } + ], + "responses": { + "200": { + "description": "Successful request to create or update Defender for Storage settings.", + "schema": { + "$ref": "#/definitions/DefenderForStorageSetting" + } + }, + "201": { + "description": "Request to create or update Defender for Storage settings partially succeeded.", + "schema": { + "$ref": "#/definitions/DefenderForStorageSetting" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "../../../common/v1/types.json#/definitions/CloudError" + } + } + } + } + }, + "/{resourceId}/providers/Microsoft.Security/defenderForStorageSettings/{settingName}/startMalwareScan": { + "post": { + "x-ms-examples": { + "Initiate a Defender for Storage malware scan for the specified storage account.": { + "$ref": "./examples/DefenderForStorage/StartMalwareScan_example.json" + } + }, + "tags": [ + "DefenderForStorage", + "Antimalware", + "Scan" + ], + "description": "Initiate a Defender for Storage malware scan for the specified storage account. Blobs and Files will be scanned for malware.", + "operationId": "DefenderForStorage_StartMalwareScan", + "parameters": [ + { + "$ref": "../../../common/v1/types.json#/parameters/ApiVersion" + }, + { + "$ref": "../../../common/v1/types.json#/parameters/ResourceId" + }, + { + "$ref": "#/parameters/DefenderForStorageSettingName" + } + ], + "responses": { + "200": { + "description": "The status of the malware scan operation.", + "schema": { + "$ref": "#/definitions/MalwareScan" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "../../../common/v1/types.json#/definitions/CloudError" + } + } + } + } + }, + "/{resourceId}/providers/Microsoft.Security/defenderForStorageSettings/{settingName}/malwareScans/{scanId}/cancelMalwareScan": { + "post": { + "x-ms-examples": { + "Cancel a Defender for Storage malware scan for the specified storage resource.": { + "$ref": "./examples/DefenderForStorage/CancelMalwareScan_example.json" + } + }, + "tags": [ + "DefenderForStorage", + "Antimalware", + "Scan" + ], + "description": "Cancels a Defender for Storage malware scan for the specified storage account.", + "operationId": "DefenderForStorage_CancelMalwareScan", + "parameters": [ + { + "$ref": "../../../common/v1/types.json#/parameters/ApiVersion" + }, + { + "$ref": "../../../common/v1/types.json#/parameters/ResourceId" + }, + { + "$ref": "#/parameters/DefenderForStorageSettingName" + }, + { + "$ref": "#/parameters/ScanId" + } + ], + "responses": { + "200": { + "description": "The status of the malware scan operation.", + "schema": { + "$ref": "#/definitions/MalwareScan" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "../../../common/v1/types.json#/definitions/CloudError" + } + } + } + } + }, + "/{resourceId}/providers/Microsoft.Security/defenderForStorageSettings/{settingName}/malwareScans/{scanId}": { + "get": { + "x-ms-examples": { + "Gets the Defender for Storage malware scan for the specified storage resource.": { + "$ref": "./examples/DefenderForStorage/GetMalwareScan_example.json" + } + }, + "tags": [ + "DefenderForStorage", + "Antimalware", + "Scan" + ], + "description": "Gets the Defender for Storage malware scan for the specified storage resource.", + "operationId": "DefenderForStorage_GetMalwareScan", + "parameters": [ + { + "$ref": "../../../common/v1/types.json#/parameters/ApiVersion" + }, + { + "$ref": "../../../common/v1/types.json#/parameters/ResourceId" + }, + { + "$ref": "#/parameters/DefenderForStorageSettingName" + }, + { + "$ref": "#/parameters/ScanId" + } + ], + "responses": { + "200": { + "description": "The state of the malware scan operation.", + "schema": { + "$ref": "#/definitions/MalwareScan" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "../../../common/v1/types.json#/definitions/CloudError" + } + } + } + } + } + }, + "definitions": { + "DefenderForStorageSetting": { + "type": "object", + "allOf": [ + { + "$ref": "../../../common/v1/types.json#/definitions/Resource" + } + ], + "properties": { + "properties": { + "$ref": "#/definitions/DefenderForStorageSettingProperties" + } + }, + "description": "The Defender for Storage resource." + }, + "DefenderForStorageSettingProperties": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean", + "description": "Indicates whether Defender for Storage is enabled on this storage account." + }, + "malwareScanning": { + "$ref": "#/definitions/MalwareScanningProperties" + }, + "sensitiveDataDiscovery": { + "$ref": "#/definitions/SensitiveDataDiscoveryProperties" + }, + "overrideSubscriptionLevelSettings": { + "type": "boolean", + "description": "Indicates whether the settings defined for this storage account should override the settings defined for the subscription." + } + }, + "description": "Defender for Storage resource properties." + }, + "MalwareScanningProperties": { + "type": "object", + "properties": { + "onUpload": { + "$ref": "#/definitions/OnUploadProperties" + }, + "scanResultsEventGridTopicResourceId": { + "type": "string", + "description": "Optional. Resource id of an Event Grid Topic to send scan results to.", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.EventGrid/topics" + } + ] + } + }, + "blobScanResultsOptions": { + "type": "string", + "description": "Optional. Write scan result on BlobIndexTags by default.", + "enum": [ + "BlobIndexTags", + "None" + ], + "default": "BlobIndexTags", + "x-ms-enum": { + "name": "blobScanResultsOptions", + "modelAsString": true, + "values": [ + { + "value": "BlobIndexTags", + "description": "Write scan results on the blobs index tags." + }, + { + "value": "None", + "description": "Do not write scan results on the blobs index tags." + } + ] + } + }, + "automatedResponse": { + "type": "string", + "description": "Optional. Specifies the automated response action to take when malware is detected.", + "enum": [ + "None", + "BlobSoftDelete" + ], + "default": "None", + "x-ms-enum": { + "name": "AutomatedResponseType", + "modelAsString": true, + "values": [ + { + "value": "None", + "description": "No automated response will be taken when malware is detected." + }, + { + "value": "BlobSoftDelete", + "description": "The blob will be soft deleted when malware is detected." + } + ] + } + }, + "operationStatus": { + "type": "object", + "$ref": "#/definitions/OperationStatus", + "readOnly": true, + "description": "Upon failure or partial success. Additional data describing Malware Scanning enable/disable operation." + } + }, + "description": "Properties of Malware Scanning." + }, + "OnUploadProperties": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean", + "description": "Indicates whether On Upload malware scanning should be enabled." + }, + "capGBPerMonth": { + "type": "integer", + "format": "int32", + "description": "Defines the max GB to be scanned per Month. Set to -1 if no capping is needed. If not specified, the default value is -1." + }, + "filters": { + "$ref": "#/definitions/OnUploadFilters", + "x-nullable": true, + "description": "Optional. Determine which blobs get scanned by On Upload malware scanning. An Or operation is performed between each filter type." + } + }, + "description": "Properties of On Upload malware scanning." + }, + "OnUploadFilters": { + "type": "object", + "properties": { + "excludeBlobsWithPrefix": { + "type": "array", + "x-nullable": true, + "items": { + "type": "string" + }, + "description": "Optional. A list of prefixes to exclude from on-upload malware scanning.\nFormat: `container-name/blob-name` (start with the container name; do not include the storage account name).\nExclude entire containers: Use prefix of container names you want to exclude without a trailing `/`.\nExclude a single container: Add a trailing slash `/` after the container name to avoid excluding other containers with similar prefixes." + }, + "excludeBlobsWithSuffix": { + "type": "array", + "x-nullable": true, + "items": { + "type": "string" + }, + "description": "Optional. A list of suffixes to exclude from on-upload malware scanning. Suffixes match only the end of blob names, and should be used for file extensions or blob name endings only." + }, + "excludeBlobsLargerThan": { + "format": "int64", + "x-nullable": true, + "description": "Optional. Specifies the maximum size in bytes for blobs to be scanned. This parameter accepts a single positive integer value. Blobs larger than this value will be excluded from scanning." + } + }, + "description": "Optional. Determine which blobs get scanned by On Upload malware scanning. An Or operation is performed between each filter type." + }, + "SensitiveDataDiscoveryProperties": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean", + "description": "Indicates whether Sensitive Data Discovery should be enabled." + }, + "operationStatus": { + "type": "object", + "$ref": "#/definitions/OperationStatus", + "readOnly": true, + "description": "Upon failure or partial success. Additional data describing Sensitive Data Discovery enable/disable operation." + } + }, + "description": "Properties of Sensitive Data Discovery." + }, + "OperationStatus": { + "type": "object", + "description": "A status describing the success/failure of the enablement/disablement operation.", + "properties": { + "code": { + "type": "string", + "description": "The operation status code." + }, + "message": { + "type": "string", + "description": "Additional information regarding the success/failure of the operation." + } + } + }, + "MalwareScan": { + "type": "object", + "properties": { + "properties": { + "$ref": "#/definitions/MalwareScanProperties" + } + }, + "description": "Describes the state of a malware scan operation." + }, + "MalwareScanProperties": { + "type": "object", + "properties": { + "scanId": { + "type": "string", + "description": "The identifier of the scan." + }, + "scanStatus": { + "type": "string", + "description": "A status code of the scan operation." + }, + "scanStatusMessage": { + "type": "string", + "description": "A description of the status of the scan." + }, + "scanStartTime": { + "type": "string", + "description": "The time at which the scan had been initiated." + }, + "scanEndTime": { + "type": "string", + "description": "The time at which the scan has ended. Only available for a scan which has terminated." + }, + "scanSummary": { + "type": "object", + "$ref": "#/definitions/ScanSummary", + "description": "A summary of the scan results." + } + } + }, + "ScanSummary": { + "type": "object", + "description": "A summary of the scan results.", + "properties": { + "blobs": { + "type": "object", + "$ref": "#/definitions/BlobsScanSummary", + "description": "A summary of the scan results of the blobs that were scanned." + }, + "files": { + "type": "object", + "$ref": "#/definitions/FilesScanSummary", + "description": "A summary of the scan results of the files that were scanned." + }, + "estimatedScanCostUSD": { + "type": "number", + "format": "double", + "description": "The estimated cost of the scan. Only available for a scan which has terminated." + } + } + }, + "BlobsScanSummary": { + "type": "object", + "description": "A summary of the scan results of the blobs that were scanned.", + "properties": { + "totalBlobsScanned": { + "type": "integer", + "format": "int64", + "description": "The total number of blobs that were scanned." + }, + "maliciousBlobsCount": { + "type": "integer", + "format": "int64", + "description": "The number of malicious blobs that were detected during the scan." + }, + "skippedBlobsCount": { + "type": "integer", + "format": "int64", + "description": "The number of blobs that were skipped." + }, + "failedBlobsCount": { + "type": "integer", + "format": "int64", + "description": "The number of failed blob scans." + }, + "scannedBlobsInGB": { + "type": "number", + "format": "double", + "description": "The number of gigabytes of data that were scanned." + } + } + }, + "FilesScanSummary": { + "type": "object", + "description": "A summary of the scan results of the files that were scanned.", + "properties": { + "totalFilesScanned": { + "type": "integer", + "format": "int64", + "description": "The total number of files that were scanned." + }, + "maliciousFilesCount": { + "type": "integer", + "format": "int64", + "description": "The number of malicious files that were detected during the scan." + }, + "skippedFilesCount": { + "type": "integer", + "format": "int64", + "description": "The number of files that were skipped." + }, + "failedFilesCount": { + "type": "integer", + "format": "int64", + "description": "The number of failed file scans." + }, + "scannedFilesInGB": { + "type": "number", + "format": "double", + "description": "The number of gigabytes of data that were scanned." + } + } + } + }, + "parameters": { + "DefenderForStorageSettingName": { + "name": "settingName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-z][a-z0-9]*$", + "enum": [ + "current" + ], + "x-ms-enum": { + "name": "settingName", + "modelAsString": true, + "values": [ + { + "value": "current", + "description": "Name of the Defender for Storage Settings name." + } + ] + }, + "description": "Defender for Storage setting name.", + "x-ms-parameter-location": "method" + }, + "DefenderForStorageSetting": { + "name": "defenderForStorageSetting", + "in": "body", + "required": true, + "description": "Defender for Storage Settings", + "schema": { + "$ref": "#/definitions/DefenderForStorageSetting" + }, + "x-ms-parameter-location": "method" + }, + "ScanId": { + "name": "scanId", + "in": "path", + "required": true, + "type": "string", + "pattern": "^(latest|[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})$", + "description": "The identifier of the scan. Can be either 'latest' or a GUID.", + "x-ms-parameter-location": "method" + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/CancelMalwareScan_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/CancelMalwareScan_example.json new file mode 100644 index 000000000000..ef050c85bbb0 --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/CancelMalwareScan_example.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-09-01-preview", + "resourceId": "subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount", + "settingName": "current", + "scanId": "latest" + }, + "responses": { + "200": { + "body": { + "properties": { + "scanId": "3fd3c1be-dbff-4d6e-985f-43f9ec1b1146", + "scanStatus": "Canceling", + "scanStatusMessage": "The scan request is being canceled upon user request" + } + } + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/GetDefenderForStorageSettings_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/GetDefenderForStorageSettings_example.json new file mode 100644 index 000000000000..e0e469728a0b --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/GetDefenderForStorageSettings_example.json @@ -0,0 +1,44 @@ +{ + "parameters": { + "api-version": "2025-09-01-preview", + "resourceId": "subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount", + "settingName": "current" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount/providers/Microsoft.Security/defenderForStorageSettings/current", + "name": "current", + "type": "Microsoft.Security/defenderForStorageSettings", + "properties": { + "isEnabled": true, + "malwareScanning": { + "onUpload": { + "isEnabled": true, + "capGBPerMonth": 10000, + "filters": { + "excludeBlobsWithPrefix": [ + "sample-container/logs", + "single-excluded-container/", + "excluded-containers" + ], + "excludeBlobsWithSuffix": [ + ".log", + ".jpg" + ], + "excludeBlobsLargerThan": 1024 + } + }, + "scanResultsEventGridTopicResourceId": "/subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.EventGrid/topics/sampletopic", + "blobScanResultsOptions": "BlobIndexTags", + "automatedResponse": "BlobSoftDelete" + }, + "sensitiveDataDiscovery": { + "isEnabled": true + }, + "overrideSubscriptionLevelSettings": true + } + } + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/GetMalwareScan_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/GetMalwareScan_example.json new file mode 100644 index 000000000000..a6673bff0acb --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/GetMalwareScan_example.json @@ -0,0 +1,37 @@ +{ + "parameters": { + "api-version": "2025-09-01-preview", + "resourceId": "subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount", + "settingName": "current", + "scanId": "latest" + }, + "responses": { + "200": { + "body": { + "properties": { + "scanId": "0ce362c5-87a5-4030-ba6a-109566cd7b3d", + "scanStatus": "Completed", + "scanStartTime": "2025-09-01T12:20:14.6364816Z", + "scanEndTime": "2025-09-01T12:21:17.5648386Z", + "scanSummary": { + "blobs": { + "totalBlobsScanned": 40, + "maliciousBlobsCount": 10, + "skippedBlobsCount": 0, + "failedBlobsCount": 0, + "scannedBlobsInGB": 0.019550956785678864 + }, + "files": { + "totalFilesScanned": 150, + "maliciousFilesCount": 2, + "skippedFilesCount": 0, + "failedFilesCount": 0, + "scannedFilesInGB": 10.5 + }, + "estimatedScanCostUSD": 0.0029326435178518295 + } + } + } + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/PutDefenderForStorageSettings_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/PutDefenderForStorageSettings_example.json new file mode 100644 index 000000000000..386768a8a3b4 --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/PutDefenderForStorageSettings_example.json @@ -0,0 +1,109 @@ +{ + "parameters": { + "api-version": "2025-09-01-preview", + "resourceId": "subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount", + "settingName": "current", + "defenderForStorageSetting": { + "properties": { + "isEnabled": true, + "malwareScanning": { + "onUpload": { + "isEnabled": true, + "capGBPerMonth": 10000, + "filters": { + "excludeBlobsWithPrefix": [ + "unscanned-container", + "sample-container/logs" + ], + "excludeBlobsWithSuffix": [ + ".log", + ".jpg" + ], + "excludeBlobsLargerThan": 1024 + } + }, + "scanResultsEventGridTopicResourceId": "/subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.EventGrid/topics/sampletopic", + "blobScanResultsOptions": "BlobIndexTags", + "automatedResponse": "BlobSoftDelete" + }, + "sensitiveDataDiscovery": { + "isEnabled": true + }, + "overrideSubscriptionLevelSettings": true + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount/providers/Microsoft.Security/defenderForStorageSettings/current", + "type": "Microsoft.Security/defenderForStorageSettings", + "name": "current", + "properties": { + "isEnabled": true, + "malwareScanning": { + "onUpload": { + "isEnabled": true, + "capGBPerMonth": 10000, + "filters": { + "excludeBlobsWithPrefix": [ + "sample-container/logs", + "single-excluded-container/", + "excluded-containers" + ], + "excludeBlobsWithSuffix": [ + ".log", + ".jpg" + ], + "excludeBlobsLargerThan": 1024 + } + }, + "scanResultsEventGridTopicResourceId": "/subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.EventGrid/topics/sampletopic", + "blobScanResultsOptions": "BlobIndexTags", + "automatedResponse": "BlobSoftDelete", + "operationStatus": { + "code": "Succeeded" + } + }, + "sensitiveDataDiscovery": { + "isEnabled": true, + "operationStatus": { + "code": "Succeeded" + } + }, + "overrideSubscriptionLevelSettings": true + } + } + }, + "201": { + "body": { + "id": "/subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount/providers/Microsoft.Security/defenderForStorageSettings/current", + "type": "Microsoft.Security/defenderForStorageSettings", + "name": "current", + "properties": { + "isEnabled": true, + "malwareScanning": { + "onUpload": { + "isEnabled": false, + "capGBPerMonth": -1 + }, + "blobScanResultsOptions": "BlobIndexTags", + "automatedResponse": "None", + "operationStatus": { + "code": "PartialSuccess", + "message": "Failed to setup data scanner." + } + }, + "sensitiveDataDiscovery": { + "isEnabled": false, + "operationStatus": { + "code": "PartialSuccess", + "message": "Failed to setup data scanner." + } + }, + "overrideSubscriptionLevelSettings": true + } + } + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/StartMalwareScan_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/StartMalwareScan_example.json new file mode 100644 index 000000000000..350a6b003dce --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/DefenderForStorage/StartMalwareScan_example.json @@ -0,0 +1,18 @@ +{ + "parameters": { + "api-version": "2025-09-01-preview", + "resourceId": "subscriptions/20ff7fc3-e762-44dd-bd96-b71116dcdc23/resourceGroups/SampleRG/providers/Microsoft.Storage/storageAccounts/samplestorageaccount", + "settingName": "current" + }, + "responses": { + "200": { + "body": { + "properties": { + "scanId": "fc831479-412f-4bc2-8333-a8edda751a80", + "scanStatus": "Queued", + "scanStatusMessage": "The scan request has been queued for scanning" + } + } + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/Operations/ListOperations_example.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/Operations/ListOperations_example.json new file mode 100644 index 000000000000..42e64ef9006e --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/examples/Operations/ListOperations_example.json @@ -0,0 +1,43 @@ +{ + "parameters": { + "api-version": "2025-09-01-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "Microsoft.Security/defenderforstoragesettings/read", + "display": { + "provider": "Microsoft Security", + "resource": "DefenderForStorageSettings", + "operation": "Get defenderForStorageSettings", + "description": "Gets the defenderforstoragesettings for the scope" + }, + "origin": "user" + }, + { + "name": "Microsoft.Security/defenderforstoragesettings/write", + "display": { + "provider": "Microsoft Security", + "resource": "DefenderForStorageSettings", + "operation": "Update defenderForStorageSettings", + "description": "Creates or updates the defenderforstoragesettings for the scope" + }, + "origin": "user" + }, + { + "name": "Microsoft.Security/defenderforstoragesettings/delete", + "display": { + "provider": "Microsoft Security", + "resource": "DefenderForStorageSettings", + "operation": "Delete defenderForStorageSettings", + "description": "Deletes the defenderforstoragesettings for the scope" + }, + "origin": "user" + } + ] + } + } + } +} diff --git a/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/operations.json b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/operations.json new file mode 100644 index 000000000000..825b1ad0f607 --- /dev/null +++ b/specification/security/resource-manager/Microsoft.Security/preview/2025-09-01-preview/operations.json @@ -0,0 +1,74 @@ +{ + "swagger": "2.0", + "info": { + "title": "Microsoft Defender for Cloud", + "description": "API spec for Microsoft.Security (Microsoft Defender for Cloud) resource provider", + "version": "2025-09-01-preview" + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "flow": "implicit", + "description": "Azure Active Directory OAuth2 Flow", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "paths": { + "/providers/Microsoft.Security/operations": { + "get": { + "x-ms-examples": { + "List the operations for the Microsoft.Security (Microsoft Defender for Cloud) resource provider": { + "$ref": "./examples/Operations/ListOperations_example.json" + } + }, + "tags": [ + "Operations" + ], + "description": "Exposes all available operations for discovery purposes.", + "operationId": "Operations_List", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + } + } +} diff --git a/specification/security/resource-manager/readme.md b/specification/security/resource-manager/readme.md index 4b0bd344d334..9dca428c2fa4 100644 --- a/specification/security/resource-manager/readme.md +++ b/specification/security/resource-manager/readme.md @@ -141,6 +141,8 @@ These settings apply only when `--tag=package-preview-2025-09-01-preview` is spe ```yaml $(tag) == 'package-preview-2025-09-01-preview' input-file: + - Microsoft.Security/preview/2025-09-01-preview/defenderForStorageSettings.json + - Microsoft.Security/preview/2025-09-01-preview/operations.json - Microsoft.Security/preview/2025-09-01-preview/privateLinks.json ``` @@ -664,6 +666,7 @@ input-file: - Microsoft.Security/preview/2024-08-01-preview/securityConnectors.json - Microsoft.Security/preview/2025-05-04-preview/assessmentMetadata.json - Microsoft.Security/preview/2025-05-04-preview/assessments.json +- Microsoft.Security/preview/2025-09-01-preview/defenderForStorageSettings.json - Microsoft.Security/preview/2025-11-01-preview/securityConnectorsDevOps.json - Microsoft.Security/preview/2025-10-01-preview/operations.json - Microsoft.Security/preview/2025-10-01-preview/operationResults.json @@ -690,7 +693,6 @@ input-file: - Microsoft.Security/stable/2024-08-01/securityStandards.json - Microsoft.Security/stable/2024-08-01/standardAssignments.json - Microsoft.Security/stable/2024-08-01/customRecommedations.json -- Microsoft.Security/stable/2025-06-01/defenderForStorageSettings.json - Microsoft.Security/stable/2026-01-01/privateLinks.json # Autorest suppressions