diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/_security_center.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/_security_center.py
index 604180eb1c4d..5a7bb4cf072e 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/_security_center.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/_security_center.py
@@ -15,7 +15,6 @@
from ._configuration import SecurityCenterConfiguration
from .operations import ComplianceResultsOperations
from .operations import PricingsOperations
-from .operations import AlertsOperations
from .operations import SettingsOperations
from .operations import AdvancedThreatProtectionOperations
from .operations import DeviceSecurityGroupsOperations
@@ -23,6 +22,10 @@
from .operations import IotSecuritySolutionAnalyticsOperations
from .operations import IotSecuritySolutionsAnalyticsAggregatedAlertOperations
from .operations import IotSecuritySolutionsAnalyticsRecommendationOperations
+from .operations import IotAlertTypesOperations
+from .operations import IotAlertsOperations
+from .operations import IotRecommendationTypesOperations
+from .operations import IotRecommendationsOperations
from .operations import LocationsOperations
from .operations import Operations
from .operations import TasksOperations
@@ -44,12 +47,25 @@
from .operations import AdaptiveNetworkHardeningsOperations
from .operations import AllowedConnectionsOperations
from .operations import TopologyOperations
+from .operations import AlertsOperations
from .operations import JitNetworkAccessPoliciesOperations
from .operations import DiscoveredSecuritySolutionsOperations
+from .operations import SecuritySolutionsReferenceDataOperations
from .operations import ExternalSecuritySolutionsOperations
from .operations import SecureScoresOperations
from .operations import SecureScoreControlsOperations
from .operations import SecureScoreControlDefinitionsOperations
+from .operations import SecuritySolutionsOperations
+from .operations import ConnectorsOperations
+from .operations import IotDefenderSettingsOperations
+from .operations import IotSensorsOperations
+from .operations import DevicesForSubscriptionOperations
+from .operations import DevicesForHubOperations
+from .operations import DeviceOperations
+from .operations import OnPremiseIotSensorsOperations
+from .operations import SqlVulnerabilityAssessmentScansOperations
+from .operations import SqlVulnerabilityAssessmentScanResultsOperations
+from .operations import SqlVulnerabilityAssessmentBaselineRulesOperations
from . import models
@@ -63,8 +79,6 @@ class SecurityCenter(SDKClient):
:vartype compliance_results: azure.mgmt.security.operations.ComplianceResultsOperations
:ivar pricings: Pricings operations
:vartype pricings: azure.mgmt.security.operations.PricingsOperations
- :ivar alerts: Alerts operations
- :vartype alerts: azure.mgmt.security.operations.AlertsOperations
:ivar settings: Settings operations
:vartype settings: azure.mgmt.security.operations.SettingsOperations
:ivar advanced_threat_protection: AdvancedThreatProtection operations
@@ -79,6 +93,14 @@ class SecurityCenter(SDKClient):
:vartype iot_security_solutions_analytics_aggregated_alert: azure.mgmt.security.operations.IotSecuritySolutionsAnalyticsAggregatedAlertOperations
:ivar iot_security_solutions_analytics_recommendation: IotSecuritySolutionsAnalyticsRecommendation operations
:vartype iot_security_solutions_analytics_recommendation: azure.mgmt.security.operations.IotSecuritySolutionsAnalyticsRecommendationOperations
+ :ivar iot_alert_types: IotAlertTypes operations
+ :vartype iot_alert_types: azure.mgmt.security.operations.IotAlertTypesOperations
+ :ivar iot_alerts: IotAlerts operations
+ :vartype iot_alerts: azure.mgmt.security.operations.IotAlertsOperations
+ :ivar iot_recommendation_types: IotRecommendationTypes operations
+ :vartype iot_recommendation_types: azure.mgmt.security.operations.IotRecommendationTypesOperations
+ :ivar iot_recommendations: IotRecommendations operations
+ :vartype iot_recommendations: azure.mgmt.security.operations.IotRecommendationsOperations
:ivar locations: Locations operations
:vartype locations: azure.mgmt.security.operations.LocationsOperations
:ivar operations: Operations operations
@@ -121,10 +143,14 @@ class SecurityCenter(SDKClient):
:vartype allowed_connections: azure.mgmt.security.operations.AllowedConnectionsOperations
:ivar topology: Topology operations
:vartype topology: azure.mgmt.security.operations.TopologyOperations
+ :ivar alerts: Alerts operations
+ :vartype alerts: azure.mgmt.security.operations.AlertsOperations
:ivar jit_network_access_policies: JitNetworkAccessPolicies operations
:vartype jit_network_access_policies: azure.mgmt.security.operations.JitNetworkAccessPoliciesOperations
:ivar discovered_security_solutions: DiscoveredSecuritySolutions operations
:vartype discovered_security_solutions: azure.mgmt.security.operations.DiscoveredSecuritySolutionsOperations
+ :ivar security_solutions_reference_data: SecuritySolutionsReferenceData operations
+ :vartype security_solutions_reference_data: azure.mgmt.security.operations.SecuritySolutionsReferenceDataOperations
:ivar external_security_solutions: ExternalSecuritySolutions operations
:vartype external_security_solutions: azure.mgmt.security.operations.ExternalSecuritySolutionsOperations
:ivar secure_scores: SecureScores operations
@@ -133,6 +159,28 @@ class SecurityCenter(SDKClient):
:vartype secure_score_controls: azure.mgmt.security.operations.SecureScoreControlsOperations
:ivar secure_score_control_definitions: SecureScoreControlDefinitions operations
:vartype secure_score_control_definitions: azure.mgmt.security.operations.SecureScoreControlDefinitionsOperations
+ :ivar security_solutions: SecuritySolutions operations
+ :vartype security_solutions: azure.mgmt.security.operations.SecuritySolutionsOperations
+ :ivar connectors: Connectors operations
+ :vartype connectors: azure.mgmt.security.operations.ConnectorsOperations
+ :ivar iot_defender_settings: IotDefenderSettings operations
+ :vartype iot_defender_settings: azure.mgmt.security.operations.IotDefenderSettingsOperations
+ :ivar iot_sensors: IotSensors operations
+ :vartype iot_sensors: azure.mgmt.security.operations.IotSensorsOperations
+ :ivar devices_for_subscription: DevicesForSubscription operations
+ :vartype devices_for_subscription: azure.mgmt.security.operations.DevicesForSubscriptionOperations
+ :ivar devices_for_hub: DevicesForHub operations
+ :vartype devices_for_hub: azure.mgmt.security.operations.DevicesForHubOperations
+ :ivar device: Device operations
+ :vartype device: azure.mgmt.security.operations.DeviceOperations
+ :ivar on_premise_iot_sensors: OnPremiseIotSensors operations
+ :vartype on_premise_iot_sensors: azure.mgmt.security.operations.OnPremiseIotSensorsOperations
+ :ivar sql_vulnerability_assessment_scans: SqlVulnerabilityAssessmentScans operations
+ :vartype sql_vulnerability_assessment_scans: azure.mgmt.security.operations.SqlVulnerabilityAssessmentScansOperations
+ :ivar sql_vulnerability_assessment_scan_results: SqlVulnerabilityAssessmentScanResults operations
+ :vartype sql_vulnerability_assessment_scan_results: azure.mgmt.security.operations.SqlVulnerabilityAssessmentScanResultsOperations
+ :ivar sql_vulnerability_assessment_baseline_rules: SqlVulnerabilityAssessmentBaselineRules operations
+ :vartype sql_vulnerability_assessment_baseline_rules: azure.mgmt.security.operations.SqlVulnerabilityAssessmentBaselineRulesOperations
:param credentials: Credentials needed for the client to connect to Azure.
:type credentials: :mod:`A msrestazure Credentials
@@ -159,8 +207,6 @@ def __init__(
self._client, self.config, self._serialize, self._deserialize)
self.pricings = PricingsOperations(
self._client, self.config, self._serialize, self._deserialize)
- self.alerts = AlertsOperations(
- self._client, self.config, self._serialize, self._deserialize)
self.settings = SettingsOperations(
self._client, self.config, self._serialize, self._deserialize)
self.advanced_threat_protection = AdvancedThreatProtectionOperations(
@@ -175,6 +221,14 @@ def __init__(
self._client, self.config, self._serialize, self._deserialize)
self.iot_security_solutions_analytics_recommendation = IotSecuritySolutionsAnalyticsRecommendationOperations(
self._client, self.config, self._serialize, self._deserialize)
+ self.iot_alert_types = IotAlertTypesOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.iot_alerts = IotAlertsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.iot_recommendation_types = IotRecommendationTypesOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.iot_recommendations = IotRecommendationsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
self.locations = LocationsOperations(
self._client, self.config, self._serialize, self._deserialize)
self.operations = Operations(
@@ -217,10 +271,14 @@ def __init__(
self._client, self.config, self._serialize, self._deserialize)
self.topology = TopologyOperations(
self._client, self.config, self._serialize, self._deserialize)
+ self.alerts = AlertsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
self.jit_network_access_policies = JitNetworkAccessPoliciesOperations(
self._client, self.config, self._serialize, self._deserialize)
self.discovered_security_solutions = DiscoveredSecuritySolutionsOperations(
self._client, self.config, self._serialize, self._deserialize)
+ self.security_solutions_reference_data = SecuritySolutionsReferenceDataOperations(
+ self._client, self.config, self._serialize, self._deserialize)
self.external_security_solutions = ExternalSecuritySolutionsOperations(
self._client, self.config, self._serialize, self._deserialize)
self.secure_scores = SecureScoresOperations(
@@ -229,3 +287,25 @@ def __init__(
self._client, self.config, self._serialize, self._deserialize)
self.secure_score_control_definitions = SecureScoreControlDefinitionsOperations(
self._client, self.config, self._serialize, self._deserialize)
+ self.security_solutions = SecuritySolutionsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.connectors = ConnectorsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.iot_defender_settings = IotDefenderSettingsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.iot_sensors = IotSensorsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.devices_for_subscription = DevicesForSubscriptionOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.devices_for_hub = DevicesForHubOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.device = DeviceOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.on_premise_iot_sensors = OnPremiseIotSensorsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.sql_vulnerability_assessment_scans = SqlVulnerabilityAssessmentScansOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.sql_vulnerability_assessment_scan_results = SqlVulnerabilityAssessmentScanResultsOperations(
+ self._client, self.config, self._serialize, self._deserialize)
+ self.sql_vulnerability_assessment_baseline_rules = SqlVulnerabilityAssessmentBaselineRulesOperations(
+ self._client, self.config, self._serialize, self._deserialize)
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/__init__.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/__init__.py
index 0ec802c22392..768c71c9da3c 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/__init__.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/__init__.py
@@ -14,12 +14,14 @@
from ._models_py3 import AadExternalSecuritySolution
from ._models_py3 import AadSolutionProperties
from ._models_py3 import ActiveConnectionsNotInAllowedRange
+ from ._models_py3 import AdaptiveApplicationControlGroup
+ from ._models_py3 import AdaptiveApplicationControlGroups
+ from ._models_py3 import AdaptiveApplicationControlIssueSummary
from ._models_py3 import AdaptiveNetworkHardening
from ._models_py3 import AdaptiveNetworkHardeningEnforceRequest
from ._models_py3 import AdditionalData
from ._models_py3 import AdvancedThreatProtectionSetting
from ._models_py3 import Alert
- from ._models_py3 import AlertConfidenceReason
from ._models_py3 import AlertEntity
from ._models_py3 import AlertsSuppressionRule
from ._models_py3 import AllowedConnectionsResource
@@ -27,14 +29,12 @@
from ._models_py3 import AmqpC2DMessagesNotInAllowedRange
from ._models_py3 import AmqpC2DRejectedMessagesNotInAllowedRange
from ._models_py3 import AmqpD2CMessagesNotInAllowedRange
- from ._models_py3 import AppWhitelistingGroup
- from ._models_py3 import AppWhitelistingGroups
- from ._models_py3 import AppWhitelistingIssueSummary
from ._models_py3 import AscLocation
from ._models_py3 import AssessmentLinks
from ._models_py3 import AssessmentStatus
from ._models_py3 import AtaExternalSecuritySolution
from ._models_py3 import AtaSolutionProperties
+ from ._models_py3 import AuthenticationDetailsProperties
from ._models_py3 import Automation
from ._models_py3 import AutomationAction
from ._models_py3 import AutomationActionEventHub
@@ -46,8 +46,15 @@
from ._models_py3 import AutomationTriggeringRule
from ._models_py3 import AutomationValidationStatus
from ._models_py3 import AutoProvisioningSetting
+ from ._models_py3 import AwAssumeRoleAuthenticationDetailsProperties
+ from ._models_py3 import AwsCredsAuthenticationDetailsProperties
from ._models_py3 import AzureResourceDetails
+ from ._models_py3 import AzureResourceIdentifier
from ._models_py3 import AzureResourceLink
+ from ._models_py3 import AzureTrackedResourceLocation
+ from ._models_py3 import Baseline
+ from ._models_py3 import BaselineAdjustedResult
+ from ._models_py3 import BenchmarkReference
from ._models_py3 import CefExternalSecuritySolution
from ._models_py3 import CefSolutionProperties
from ._models_py3 import Compliance
@@ -57,12 +64,14 @@
from ._models_py3 import ConnectedResource
from ._models_py3 import ConnectedWorkspace
from ._models_py3 import ConnectionToIpNotAllowed
+ from ._models_py3 import ConnectorSetting
from ._models_py3 import ContainerRegistryVulnerabilityProperties
from ._models_py3 import CustomAlertRule
from ._models_py3 import CVE
from ._models_py3 import CVSS
from ._models_py3 import DataExportSettings
from ._models_py3 import DenylistCustomAlertRule
+ from ._models_py3 import Device
from ._models_py3 import DeviceSecurityGroup
from ._models_py3 import DirectMethodInvokesNotInAllowedRange
from ._models_py3 import DiscoveredSecuritySolution
@@ -73,12 +82,23 @@
from ._models_py3 import ExternalSecuritySolutionProperties
from ._models_py3 import FailedLocalLoginsNotInAllowedRange
from ._models_py3 import FileUploadsNotInAllowedRange
+ from ._models_py3 import Firmware
+ from ._models_py3 import GcpCredentialsDetailsProperties
from ._models_py3 import HttpC2DMessagesNotInAllowedRange
from ._models_py3 import HttpC2DRejectedMessagesNotInAllowedRange
from ._models_py3 import HttpD2CMessagesNotInAllowedRange
+ from ._models_py3 import HybridComputeSettingsProperties
from ._models_py3 import InformationProtectionKeyword
from ._models_py3 import InformationProtectionPolicy
from ._models_py3 import InformationType
+ from ._models_py3 import IotAlert
+ from ._models_py3 import IotAlertType
+ from ._models_py3 import IotAlertTypeList
+ from ._models_py3 import IotDefenderSettingsList
+ from ._models_py3 import IotDefenderSettingsModel
+ from ._models_py3 import IotRecommendation
+ from ._models_py3 import IotRecommendationType
+ from ._models_py3 import IotRecommendationTypeList
from ._models_py3 import IoTSecurityAggregatedAlert
from ._models_py3 import IoTSecurityAggregatedAlertPropertiesTopDevicesListItem
from ._models_py3 import IoTSecurityAggregatedRecommendation
@@ -89,7 +109,10 @@
from ._models_py3 import IoTSecuritySolutionAnalyticsModelList
from ._models_py3 import IoTSecuritySolutionAnalyticsModelPropertiesDevicesMetricsItem
from ._models_py3 import IoTSecuritySolutionModel
+ from ._models_py3 import IotSensor
+ from ._models_py3 import IotSensorsList
from ._models_py3 import IoTSeverityMetrics
+ from ._models_py3 import IpAddress
from ._models_py3 import JitNetworkAccessPolicy
from ._models_py3 import JitNetworkAccessPolicyInitiatePort
from ._models_py3 import JitNetworkAccessPolicyInitiateRequest
@@ -103,26 +126,57 @@
from ._models_py3 import ListCustomAlertRule
from ._models_py3 import LocalUserNotAllowed
from ._models_py3 import Location
+ from ._models_py3 import LogAnalyticsIdentifier
+ from ._models_py3 import MacAddress
from ._models_py3 import MqttC2DMessagesNotInAllowedRange
from ._models_py3 import MqttC2DRejectedMessagesNotInAllowedRange
from ._models_py3 import MqttD2CMessagesNotInAllowedRange
+ from ._models_py3 import NetworkInterface
+ from ._models_py3 import OnPremiseIotSensor
+ from ._models_py3 import OnPremiseIotSensorsList
from ._models_py3 import OnPremiseResourceDetails
+ from ._models_py3 import OnPremiseSqlResourceDetails
from ._models_py3 import Operation
from ._models_py3 import OperationDisplay
+ from ._models_py3 import PackageDownloadInfo
+ from ._models_py3 import PackageDownloads
+ from ._models_py3 import PackageDownloadsCentralManager
+ from ._models_py3 import PackageDownloadsCentralManagerFull
+ from ._models_py3 import PackageDownloadsCentralManagerFullOvf
+ from ._models_py3 import PackageDownloadsSensor
+ from ._models_py3 import PackageDownloadsSensorFull
+ from ._models_py3 import PackageDownloadsSensorFullOvf
+ from ._models_py3 import PackageDownloadsThreatIntelligence
from ._models_py3 import PathRecommendation
from ._models_py3 import Pricing
from ._models_py3 import PricingList
from ._models_py3 import ProcessNotAllowed
from ._models_py3 import ProtectionMode
+ from ._models_py3 import Protocol1
+ from ._models_py3 import ProxyServerProperties
from ._models_py3 import PublisherInfo
+ from ._models_py3 import QueryCheck
from ._models_py3 import QueuePurgesNotInAllowedRange
from ._models_py3 import RecommendationConfigurationProperties
from ._models_py3 import RegulatoryComplianceAssessment
from ._models_py3 import RegulatoryComplianceControl
from ._models_py3 import RegulatoryComplianceStandard
+ from ._models_py3 import Remediation
from ._models_py3 import Resource
from ._models_py3 import ResourceDetails
+ from ._models_py3 import ResourceIdentifier
from ._models_py3 import Rule
+ from ._models_py3 import RuleResults
+ from ._models_py3 import RuleResultsInput
+ from ._models_py3 import RuleResultsProperties
+ from ._models_py3 import RulesResults
+ from ._models_py3 import RulesResultsInput
+ from ._models_py3 import Scan
+ from ._models_py3 import ScanProperties
+ from ._models_py3 import ScanResult
+ from ._models_py3 import ScanResultProperties
+ from ._models_py3 import ScanResults
+ from ._models_py3 import Scans
from ._models_py3 import ScopeElement
from ._models_py3 import SecureScoreControlDefinitionItem
from ._models_py3 import SecureScoreControlDefinitionSource
@@ -135,6 +189,9 @@
from ._models_py3 import SecurityAssessmentMetadataProperties
from ._models_py3 import SecurityAssessmentPartnerData
from ._models_py3 import SecurityContact
+ from ._models_py3 import SecuritySolution
+ from ._models_py3 import SecuritySolutionsReferenceData
+ from ._models_py3 import SecuritySolutionsReferenceDataList
from ._models_py3 import SecuritySubAssessment
from ._models_py3 import SecurityTask
from ._models_py3 import SecurityTaskParameters
@@ -142,6 +199,7 @@
from ._models_py3 import ServerVulnerabilityAssessment
from ._models_py3 import ServerVulnerabilityAssessmentsList
from ._models_py3 import ServerVulnerabilityProperties
+ from ._models_py3 import ServicePrincipalProperties
from ._models_py3 import Setting
from ._models_py3 import SettingResource
from ._models_py3 import SqlServerVulnerabilityProperties
@@ -161,6 +219,7 @@
from ._models_py3 import UpdateIotSecuritySolutionData
from ._models_py3 import UserDefinedResourcesProperties
from ._models_py3 import UserRecommendation
+ from ._models_py3 import VaRule
from ._models_py3 import VendorReference
from ._models_py3 import VmRecommendation
from ._models_py3 import WorkspaceSetting
@@ -169,12 +228,14 @@
from ._models import AadExternalSecuritySolution
from ._models import AadSolutionProperties
from ._models import ActiveConnectionsNotInAllowedRange
+ from ._models import AdaptiveApplicationControlGroup
+ from ._models import AdaptiveApplicationControlGroups
+ from ._models import AdaptiveApplicationControlIssueSummary
from ._models import AdaptiveNetworkHardening
from ._models import AdaptiveNetworkHardeningEnforceRequest
from ._models import AdditionalData
from ._models import AdvancedThreatProtectionSetting
from ._models import Alert
- from ._models import AlertConfidenceReason
from ._models import AlertEntity
from ._models import AlertsSuppressionRule
from ._models import AllowedConnectionsResource
@@ -182,14 +243,12 @@
from ._models import AmqpC2DMessagesNotInAllowedRange
from ._models import AmqpC2DRejectedMessagesNotInAllowedRange
from ._models import AmqpD2CMessagesNotInAllowedRange
- from ._models import AppWhitelistingGroup
- from ._models import AppWhitelistingGroups
- from ._models import AppWhitelistingIssueSummary
from ._models import AscLocation
from ._models import AssessmentLinks
from ._models import AssessmentStatus
from ._models import AtaExternalSecuritySolution
from ._models import AtaSolutionProperties
+ from ._models import AuthenticationDetailsProperties
from ._models import Automation
from ._models import AutomationAction
from ._models import AutomationActionEventHub
@@ -201,8 +260,15 @@
from ._models import AutomationTriggeringRule
from ._models import AutomationValidationStatus
from ._models import AutoProvisioningSetting
+ from ._models import AwAssumeRoleAuthenticationDetailsProperties
+ from ._models import AwsCredsAuthenticationDetailsProperties
from ._models import AzureResourceDetails
+ from ._models import AzureResourceIdentifier
from ._models import AzureResourceLink
+ from ._models import AzureTrackedResourceLocation
+ from ._models import Baseline
+ from ._models import BaselineAdjustedResult
+ from ._models import BenchmarkReference
from ._models import CefExternalSecuritySolution
from ._models import CefSolutionProperties
from ._models import Compliance
@@ -212,12 +278,14 @@
from ._models import ConnectedResource
from ._models import ConnectedWorkspace
from ._models import ConnectionToIpNotAllowed
+ from ._models import ConnectorSetting
from ._models import ContainerRegistryVulnerabilityProperties
from ._models import CustomAlertRule
from ._models import CVE
from ._models import CVSS
from ._models import DataExportSettings
from ._models import DenylistCustomAlertRule
+ from ._models import Device
from ._models import DeviceSecurityGroup
from ._models import DirectMethodInvokesNotInAllowedRange
from ._models import DiscoveredSecuritySolution
@@ -228,12 +296,23 @@
from ._models import ExternalSecuritySolutionProperties
from ._models import FailedLocalLoginsNotInAllowedRange
from ._models import FileUploadsNotInAllowedRange
+ from ._models import Firmware
+ from ._models import GcpCredentialsDetailsProperties
from ._models import HttpC2DMessagesNotInAllowedRange
from ._models import HttpC2DRejectedMessagesNotInAllowedRange
from ._models import HttpD2CMessagesNotInAllowedRange
+ from ._models import HybridComputeSettingsProperties
from ._models import InformationProtectionKeyword
from ._models import InformationProtectionPolicy
from ._models import InformationType
+ from ._models import IotAlert
+ from ._models import IotAlertType
+ from ._models import IotAlertTypeList
+ from ._models import IotDefenderSettingsList
+ from ._models import IotDefenderSettingsModel
+ from ._models import IotRecommendation
+ from ._models import IotRecommendationType
+ from ._models import IotRecommendationTypeList
from ._models import IoTSecurityAggregatedAlert
from ._models import IoTSecurityAggregatedAlertPropertiesTopDevicesListItem
from ._models import IoTSecurityAggregatedRecommendation
@@ -244,7 +323,10 @@
from ._models import IoTSecuritySolutionAnalyticsModelList
from ._models import IoTSecuritySolutionAnalyticsModelPropertiesDevicesMetricsItem
from ._models import IoTSecuritySolutionModel
+ from ._models import IotSensor
+ from ._models import IotSensorsList
from ._models import IoTSeverityMetrics
+ from ._models import IpAddress
from ._models import JitNetworkAccessPolicy
from ._models import JitNetworkAccessPolicyInitiatePort
from ._models import JitNetworkAccessPolicyInitiateRequest
@@ -258,26 +340,57 @@
from ._models import ListCustomAlertRule
from ._models import LocalUserNotAllowed
from ._models import Location
+ from ._models import LogAnalyticsIdentifier
+ from ._models import MacAddress
from ._models import MqttC2DMessagesNotInAllowedRange
from ._models import MqttC2DRejectedMessagesNotInAllowedRange
from ._models import MqttD2CMessagesNotInAllowedRange
+ from ._models import NetworkInterface
+ from ._models import OnPremiseIotSensor
+ from ._models import OnPremiseIotSensorsList
from ._models import OnPremiseResourceDetails
+ from ._models import OnPremiseSqlResourceDetails
from ._models import Operation
from ._models import OperationDisplay
+ from ._models import PackageDownloadInfo
+ from ._models import PackageDownloads
+ from ._models import PackageDownloadsCentralManager
+ from ._models import PackageDownloadsCentralManagerFull
+ from ._models import PackageDownloadsCentralManagerFullOvf
+ from ._models import PackageDownloadsSensor
+ from ._models import PackageDownloadsSensorFull
+ from ._models import PackageDownloadsSensorFullOvf
+ from ._models import PackageDownloadsThreatIntelligence
from ._models import PathRecommendation
from ._models import Pricing
from ._models import PricingList
from ._models import ProcessNotAllowed
from ._models import ProtectionMode
+ from ._models import Protocol1
+ from ._models import ProxyServerProperties
from ._models import PublisherInfo
+ from ._models import QueryCheck
from ._models import QueuePurgesNotInAllowedRange
from ._models import RecommendationConfigurationProperties
from ._models import RegulatoryComplianceAssessment
from ._models import RegulatoryComplianceControl
from ._models import RegulatoryComplianceStandard
+ from ._models import Remediation
from ._models import Resource
from ._models import ResourceDetails
+ from ._models import ResourceIdentifier
from ._models import Rule
+ from ._models import RuleResults
+ from ._models import RuleResultsInput
+ from ._models import RuleResultsProperties
+ from ._models import RulesResults
+ from ._models import RulesResultsInput
+ from ._models import Scan
+ from ._models import ScanProperties
+ from ._models import ScanResult
+ from ._models import ScanResultProperties
+ from ._models import ScanResults
+ from ._models import Scans
from ._models import ScopeElement
from ._models import SecureScoreControlDefinitionItem
from ._models import SecureScoreControlDefinitionSource
@@ -290,6 +403,9 @@
from ._models import SecurityAssessmentMetadataProperties
from ._models import SecurityAssessmentPartnerData
from ._models import SecurityContact
+ from ._models import SecuritySolution
+ from ._models import SecuritySolutionsReferenceData
+ from ._models import SecuritySolutionsReferenceDataList
from ._models import SecuritySubAssessment
from ._models import SecurityTask
from ._models import SecurityTaskParameters
@@ -297,6 +413,7 @@
from ._models import ServerVulnerabilityAssessment
from ._models import ServerVulnerabilityAssessmentsList
from ._models import ServerVulnerabilityProperties
+ from ._models import ServicePrincipalProperties
from ._models import Setting
from ._models import SettingResource
from ._models import SqlServerVulnerabilityProperties
@@ -316,6 +433,7 @@
from ._models import UpdateIotSecuritySolutionData
from ._models import UserDefinedResourcesProperties
from ._models import UserRecommendation
+ from ._models import VaRule
from ._models import VendorReference
from ._models import VmRecommendation
from ._models import WorkspaceSetting
@@ -328,10 +446,14 @@
from ._paged_models import AutoProvisioningSettingPaged
from ._paged_models import CompliancePaged
from ._paged_models import ComplianceResultPaged
+from ._paged_models import ConnectorSettingPaged
+from ._paged_models import DevicePaged
from ._paged_models import DeviceSecurityGroupPaged
from ._paged_models import DiscoveredSecuritySolutionPaged
from ._paged_models import ExternalSecuritySolutionPaged
from ._paged_models import InformationProtectionPolicyPaged
+from ._paged_models import IotAlertPaged
+from ._paged_models import IotRecommendationPaged
from ._paged_models import IoTSecurityAggregatedAlertPaged
from ._paged_models import IoTSecurityAggregatedRecommendationPaged
from ._paged_models import IoTSecuritySolutionModelPaged
@@ -346,6 +468,7 @@
from ._paged_models import SecurityAssessmentMetadataPaged
from ._paged_models import SecurityAssessmentPaged
from ._paged_models import SecurityContactPaged
+from ._paged_models import SecuritySolutionPaged
from ._paged_models import SecuritySubAssessmentPaged
from ._paged_models import SecurityTaskPaged
from ._paged_models import SettingPaged
@@ -354,7 +477,6 @@
from ._security_center_enums import (
ResourceStatus,
PricingTier,
- ReportedSeverity,
ValueType,
SecuritySolutionStatus,
ExportData,
@@ -362,6 +484,10 @@
RecommendationType,
RecommendationConfigStatus,
UnmaskedIpLoggingStatus,
+ ReportedSeverity,
+ AlertSeverity,
+ AlertIntent,
+ RecommendationSeverity,
AutoProvision,
Rank,
AlertNotifications,
@@ -381,6 +507,8 @@
AssessmentStatusCode,
Direction,
TransportProtocol,
+ Intent,
+ AlertStatus,
Protocol,
Status,
StatusReason,
@@ -388,6 +516,25 @@
AadConnectivityState,
ExternalSecuritySolutionKind,
ControlType,
+ ProvisioningState,
+ HybridComputeProvisioningState,
+ AuthenticationProvisioningState,
+ PermissionProperty,
+ VersionKind,
+ MacSignificance,
+ RelationToIpStatus,
+ ManagementState,
+ AuthorizationState,
+ DeviceCriticality,
+ PurdueLevel,
+ ProgrammingState,
+ ScanningFunctionality,
+ DeviceStatus,
+ ScanTriggerType,
+ ScanState,
+ RuleStatus,
+ RuleSeverity,
+ RuleType,
ExpandEnum,
ConnectionType,
ExpandControlsEnum,
@@ -398,12 +545,14 @@
'AadExternalSecuritySolution',
'AadSolutionProperties',
'ActiveConnectionsNotInAllowedRange',
+ 'AdaptiveApplicationControlGroup',
+ 'AdaptiveApplicationControlGroups',
+ 'AdaptiveApplicationControlIssueSummary',
'AdaptiveNetworkHardening',
'AdaptiveNetworkHardeningEnforceRequest',
'AdditionalData',
'AdvancedThreatProtectionSetting',
'Alert',
- 'AlertConfidenceReason',
'AlertEntity',
'AlertsSuppressionRule',
'AllowedConnectionsResource',
@@ -411,14 +560,12 @@
'AmqpC2DMessagesNotInAllowedRange',
'AmqpC2DRejectedMessagesNotInAllowedRange',
'AmqpD2CMessagesNotInAllowedRange',
- 'AppWhitelistingGroup',
- 'AppWhitelistingGroups',
- 'AppWhitelistingIssueSummary',
'AscLocation',
'AssessmentLinks',
'AssessmentStatus',
'AtaExternalSecuritySolution',
'AtaSolutionProperties',
+ 'AuthenticationDetailsProperties',
'Automation',
'AutomationAction',
'AutomationActionEventHub',
@@ -430,8 +577,15 @@
'AutomationTriggeringRule',
'AutomationValidationStatus',
'AutoProvisioningSetting',
+ 'AwAssumeRoleAuthenticationDetailsProperties',
+ 'AwsCredsAuthenticationDetailsProperties',
'AzureResourceDetails',
+ 'AzureResourceIdentifier',
'AzureResourceLink',
+ 'AzureTrackedResourceLocation',
+ 'Baseline',
+ 'BaselineAdjustedResult',
+ 'BenchmarkReference',
'CefExternalSecuritySolution',
'CefSolutionProperties',
'Compliance',
@@ -441,12 +595,14 @@
'ConnectedResource',
'ConnectedWorkspace',
'ConnectionToIpNotAllowed',
+ 'ConnectorSetting',
'ContainerRegistryVulnerabilityProperties',
'CustomAlertRule',
'CVE',
'CVSS',
'DataExportSettings',
'DenylistCustomAlertRule',
+ 'Device',
'DeviceSecurityGroup',
'DirectMethodInvokesNotInAllowedRange',
'DiscoveredSecuritySolution',
@@ -457,12 +613,23 @@
'ExternalSecuritySolutionProperties',
'FailedLocalLoginsNotInAllowedRange',
'FileUploadsNotInAllowedRange',
+ 'Firmware',
+ 'GcpCredentialsDetailsProperties',
'HttpC2DMessagesNotInAllowedRange',
'HttpC2DRejectedMessagesNotInAllowedRange',
'HttpD2CMessagesNotInAllowedRange',
+ 'HybridComputeSettingsProperties',
'InformationProtectionKeyword',
'InformationProtectionPolicy',
'InformationType',
+ 'IotAlert',
+ 'IotAlertType',
+ 'IotAlertTypeList',
+ 'IotDefenderSettingsList',
+ 'IotDefenderSettingsModel',
+ 'IotRecommendation',
+ 'IotRecommendationType',
+ 'IotRecommendationTypeList',
'IoTSecurityAggregatedAlert',
'IoTSecurityAggregatedAlertPropertiesTopDevicesListItem',
'IoTSecurityAggregatedRecommendation',
@@ -473,7 +640,10 @@
'IoTSecuritySolutionAnalyticsModelList',
'IoTSecuritySolutionAnalyticsModelPropertiesDevicesMetricsItem',
'IoTSecuritySolutionModel',
+ 'IotSensor',
+ 'IotSensorsList',
'IoTSeverityMetrics',
+ 'IpAddress',
'JitNetworkAccessPolicy',
'JitNetworkAccessPolicyInitiatePort',
'JitNetworkAccessPolicyInitiateRequest',
@@ -487,26 +657,57 @@
'ListCustomAlertRule',
'LocalUserNotAllowed',
'Location',
+ 'LogAnalyticsIdentifier',
+ 'MacAddress',
'MqttC2DMessagesNotInAllowedRange',
'MqttC2DRejectedMessagesNotInAllowedRange',
'MqttD2CMessagesNotInAllowedRange',
+ 'NetworkInterface',
+ 'OnPremiseIotSensor',
+ 'OnPremiseIotSensorsList',
'OnPremiseResourceDetails',
+ 'OnPremiseSqlResourceDetails',
'Operation',
'OperationDisplay',
+ 'PackageDownloadInfo',
+ 'PackageDownloads',
+ 'PackageDownloadsCentralManager',
+ 'PackageDownloadsCentralManagerFull',
+ 'PackageDownloadsCentralManagerFullOvf',
+ 'PackageDownloadsSensor',
+ 'PackageDownloadsSensorFull',
+ 'PackageDownloadsSensorFullOvf',
+ 'PackageDownloadsThreatIntelligence',
'PathRecommendation',
'Pricing',
'PricingList',
'ProcessNotAllowed',
'ProtectionMode',
+ 'Protocol1',
+ 'ProxyServerProperties',
'PublisherInfo',
+ 'QueryCheck',
'QueuePurgesNotInAllowedRange',
'RecommendationConfigurationProperties',
'RegulatoryComplianceAssessment',
'RegulatoryComplianceControl',
'RegulatoryComplianceStandard',
+ 'Remediation',
'Resource',
'ResourceDetails',
+ 'ResourceIdentifier',
'Rule',
+ 'RuleResults',
+ 'RuleResultsInput',
+ 'RuleResultsProperties',
+ 'RulesResults',
+ 'RulesResultsInput',
+ 'Scan',
+ 'ScanProperties',
+ 'ScanResult',
+ 'ScanResultProperties',
+ 'ScanResults',
+ 'Scans',
'ScopeElement',
'SecureScoreControlDefinitionItem',
'SecureScoreControlDefinitionSource',
@@ -519,6 +720,9 @@
'SecurityAssessmentMetadataProperties',
'SecurityAssessmentPartnerData',
'SecurityContact',
+ 'SecuritySolution',
+ 'SecuritySolutionsReferenceData',
+ 'SecuritySolutionsReferenceDataList',
'SecuritySubAssessment',
'SecurityTask',
'SecurityTaskParameters',
@@ -526,6 +730,7 @@
'ServerVulnerabilityAssessment',
'ServerVulnerabilityAssessmentsList',
'ServerVulnerabilityProperties',
+ 'ServicePrincipalProperties',
'Setting',
'SettingResource',
'SqlServerVulnerabilityProperties',
@@ -545,16 +750,18 @@
'UpdateIotSecuritySolutionData',
'UserDefinedResourcesProperties',
'UserRecommendation',
+ 'VaRule',
'VendorReference',
'VmRecommendation',
'WorkspaceSetting',
'ComplianceResultPaged',
- 'AlertPaged',
'SettingPaged',
'DeviceSecurityGroupPaged',
'IoTSecuritySolutionModelPaged',
'IoTSecurityAggregatedAlertPaged',
'IoTSecurityAggregatedRecommendationPaged',
+ 'IotAlertPaged',
+ 'IotRecommendationPaged',
'AscLocationPaged',
'OperationPaged',
'SecurityTaskPaged',
@@ -574,15 +781,18 @@
'AdaptiveNetworkHardeningPaged',
'AllowedConnectionsResourcePaged',
'TopologyResourcePaged',
+ 'AlertPaged',
'JitNetworkAccessPolicyPaged',
'DiscoveredSecuritySolutionPaged',
'ExternalSecuritySolutionPaged',
'SecureScoreItemPaged',
'SecureScoreControlDetailsPaged',
'SecureScoreControlDefinitionItemPaged',
+ 'SecuritySolutionPaged',
+ 'ConnectorSettingPaged',
+ 'DevicePaged',
'ResourceStatus',
'PricingTier',
- 'ReportedSeverity',
'ValueType',
'SecuritySolutionStatus',
'ExportData',
@@ -590,6 +800,10 @@
'RecommendationType',
'RecommendationConfigStatus',
'UnmaskedIpLoggingStatus',
+ 'ReportedSeverity',
+ 'AlertSeverity',
+ 'AlertIntent',
+ 'RecommendationSeverity',
'AutoProvision',
'Rank',
'AlertNotifications',
@@ -609,6 +823,8 @@
'AssessmentStatusCode',
'Direction',
'TransportProtocol',
+ 'Intent',
+ 'AlertStatus',
'Protocol',
'Status',
'StatusReason',
@@ -616,6 +832,25 @@
'AadConnectivityState',
'ExternalSecuritySolutionKind',
'ControlType',
+ 'ProvisioningState',
+ 'HybridComputeProvisioningState',
+ 'AuthenticationProvisioningState',
+ 'PermissionProperty',
+ 'VersionKind',
+ 'MacSignificance',
+ 'RelationToIpStatus',
+ 'ManagementState',
+ 'AuthorizationState',
+ 'DeviceCriticality',
+ 'PurdueLevel',
+ 'ProgrammingState',
+ 'ScanningFunctionality',
+ 'DeviceStatus',
+ 'ScanTriggerType',
+ 'ScanState',
+ 'RuleStatus',
+ 'RuleSeverity',
+ 'RuleType',
'ExpandEnum',
'ConnectionType',
'ExpandControlsEnum',
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models.py
index d6d9e2596d17..ff3509e5d001 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models.py
@@ -381,6 +381,129 @@ def __init__(self, **kwargs):
self.rule_type = 'ActiveConnectionsNotInAllowedRange'
+class AdaptiveApplicationControlGroup(Model):
+ """AdaptiveApplicationControlGroup.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ :param enforcement_mode: Possible values include: 'Audit', 'Enforce',
+ 'None'
+ :type enforcement_mode: str or ~azure.mgmt.security.models.enum
+ :param protection_mode:
+ :type protection_mode: ~azure.mgmt.security.models.ProtectionMode
+ :ivar configuration_status: Possible values include: 'Configured',
+ 'NotConfigured', 'InProgress', 'Failed', 'NoStatus'
+ :vartype configuration_status: str or ~azure.mgmt.security.models.enum
+ :ivar recommendation_status: Possible values include: 'Recommended',
+ 'NotRecommended', 'NotAvailable', 'NoStatus'
+ :vartype recommendation_status: str or ~azure.mgmt.security.models.enum
+ :ivar issues:
+ :vartype issues:
+ list[~azure.mgmt.security.models.AdaptiveApplicationControlIssueSummary]
+ :ivar source_system: Possible values include: 'Azure_AppLocker',
+ 'Azure_AuditD', 'NonAzure_AppLocker', 'NonAzure_AuditD', 'None'
+ :vartype source_system: str or ~azure.mgmt.security.models.enum
+ :param vm_recommendations:
+ :type vm_recommendations:
+ list[~azure.mgmt.security.models.VmRecommendation]
+ :param path_recommendations:
+ :type path_recommendations:
+ list[~azure.mgmt.security.models.PathRecommendation]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'readonly': True},
+ 'configuration_status': {'readonly': True},
+ 'recommendation_status': {'readonly': True},
+ 'issues': {'readonly': True},
+ 'source_system': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'enforcement_mode': {'key': 'properties.enforcementMode', 'type': 'str'},
+ 'protection_mode': {'key': 'properties.protectionMode', 'type': 'ProtectionMode'},
+ 'configuration_status': {'key': 'properties.configurationStatus', 'type': 'str'},
+ 'recommendation_status': {'key': 'properties.recommendationStatus', 'type': 'str'},
+ 'issues': {'key': 'properties.issues', 'type': '[AdaptiveApplicationControlIssueSummary]'},
+ 'source_system': {'key': 'properties.sourceSystem', 'type': 'str'},
+ 'vm_recommendations': {'key': 'properties.vmRecommendations', 'type': '[VmRecommendation]'},
+ 'path_recommendations': {'key': 'properties.pathRecommendations', 'type': '[PathRecommendation]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(AdaptiveApplicationControlGroup, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.location = None
+ self.enforcement_mode = kwargs.get('enforcement_mode', None)
+ self.protection_mode = kwargs.get('protection_mode', None)
+ self.configuration_status = None
+ self.recommendation_status = None
+ self.issues = None
+ self.source_system = None
+ self.vm_recommendations = kwargs.get('vm_recommendations', None)
+ self.path_recommendations = kwargs.get('path_recommendations', None)
+
+
+class AdaptiveApplicationControlGroups(Model):
+ """Represents a list of machine groups and set of rules that are recommended
+ by Azure Security Center to be allowed.
+
+ :param value:
+ :type value:
+ list[~azure.mgmt.security.models.AdaptiveApplicationControlGroup]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[AdaptiveApplicationControlGroup]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(AdaptiveApplicationControlGroups, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
+
+
+class AdaptiveApplicationControlIssueSummary(Model):
+ """Represents a summary of the alerts of the machine group.
+
+ :param issue: Possible values include: 'ViolationsAudited',
+ 'ViolationsBlocked', 'MsiAndScriptViolationsAudited',
+ 'MsiAndScriptViolationsBlocked', 'ExecutableViolationsAudited',
+ 'RulesViolatedManually'
+ :type issue: str or ~azure.mgmt.security.models.enum
+ :param number_of_vms: The number of machines in the group that have this
+ alert
+ :type number_of_vms: float
+ """
+
+ _attribute_map = {
+ 'issue': {'key': 'issue', 'type': 'str'},
+ 'number_of_vms': {'key': 'numberOfVms', 'type': 'float'},
+ }
+
+ def __init__(self, **kwargs):
+ super(AdaptiveApplicationControlIssueSummary, self).__init__(**kwargs)
+ self.issue = kwargs.get('issue', None)
+ self.number_of_vms = kwargs.get('number_of_vms', None)
+
+
class Resource(Model):
"""Describes an Azure resource.
@@ -567,173 +690,164 @@ class Alert(Resource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar state: State of the alert (Active, Dismissed etc.)
- :vartype state: str
- :ivar reported_time_utc: The time the incident was reported to
- Microsoft.Security in UTC
- :vartype reported_time_utc: datetime
- :ivar vendor_name: Name of the vendor that discovered the incident
- :vartype vendor_name: str
- :ivar alert_name: Name of the alert type
- :vartype alert_name: str
- :ivar alert_display_name: Display name of the alert type
+ :ivar alert_type: Unique identifier for the detection logic (all alert
+ instances from the same detection logic will have the same alertType).
+ :vartype alert_type: str
+ :ivar system_alert_id: Unique identifier for the alert.
+ :vartype system_alert_id: str
+ :ivar product_component_name: The name of Azure Security Center pricing
+ tier which powering this alert. Learn more:
+ https://docs.microsoft.com/en-us/azure/security-center/security-center-pricing
+ :vartype product_component_name: str
+ :ivar alert_display_name: The display name of the alert.
:vartype alert_display_name: str
- :ivar detected_time_utc: The time the incident was detected by the vendor
- :vartype detected_time_utc: datetime
- :ivar description: Description of the incident and what it means
+ :ivar description: Description of the suspicious activity that was
+ detected.
:vartype description: str
- :ivar remediation_steps: Recommended steps to reradiate the incident
- :vartype remediation_steps: str
- :ivar action_taken: The action that was taken as a response to the alert
- (Active, Blocked etc.)
- :vartype action_taken: str
- :ivar reported_severity: Estimated severity of this alert. Possible values
- include: 'Informational', 'Low', 'Medium', 'High'
- :vartype reported_severity: str or
- ~azure.mgmt.security.models.ReportedSeverity
- :ivar compromised_entity: The entity that the incident happened on
- :vartype compromised_entity: str
- :ivar associated_resource: Azure resource ID of the associated resource
- :vartype associated_resource: str
- :param extended_properties:
- :type extended_properties: dict[str, object]
- :ivar system_source: The type of the alerted resource (Azure, Non-Azure)
- :vartype system_source: str
- :ivar can_be_investigated: Whether this alert can be investigated with
- Azure Security Center
- :vartype can_be_investigated: bool
- :ivar is_incident: Whether this alert is for incident type or not
- (otherwise - single alert)
+ :ivar severity: The risk level of the threat that was detected. Learn
+ more:
+ https://docs.microsoft.com/en-us/azure/security-center/security-center-alerts-overview#how-are-alerts-classified.
+ Possible values include: 'Informational', 'Low', 'Medium', 'High'
+ :vartype severity: str or ~azure.mgmt.security.models.AlertSeverity
+ :ivar intent: The kill chain related intent behind the alert. For list of
+ supported values, and explanations of Azure Security Center's supported
+ kill chain intents. Possible values include: 'Unknown', 'PreAttack',
+ 'InitialAccess', 'Persistence', 'PrivilegeEscalation', 'DefenseEvasion',
+ 'CredentialAccess', 'Discovery', 'LateralMovement', 'Execution',
+ 'Collection', 'Exfiltration', 'CommandAndControl', 'Impact', 'Probing',
+ 'Exploitation'
+ :vartype intent: str or ~azure.mgmt.security.models.Intent
+ :ivar start_time_utc: The UTC time of the first event or activity included
+ in the alert in ISO8601 format.
+ :vartype start_time_utc: datetime
+ :ivar end_time_utc: The UTC time of the last event or activity included in
+ the alert in ISO8601 format.
+ :vartype end_time_utc: datetime
+ :ivar resource_identifiers: The resource identifiers that can be used to
+ direct the alert to the right product exposure group (tenant, workspace,
+ subscription etc.). There can be multiple identifiers of different type
+ per alert.
+ :vartype resource_identifiers:
+ list[~azure.mgmt.security.models.ResourceIdentifier]
+ :ivar remediation_steps: Manual action items to take to remediate the
+ alert.
+ :vartype remediation_steps: list[str]
+ :ivar vendor_name: The name of the vendor that raises the alert.
+ :vartype vendor_name: str
+ :ivar status: The life cycle status of the alert. Possible values include:
+ 'Active', 'Resolved', 'Dismissed'
+ :vartype status: str or ~azure.mgmt.security.models.AlertStatus
+ :ivar extended_links: Links related to the alert
+ :vartype extended_links: list[dict[str, str]]
+ :ivar alert_uri: A direct link to the alert page in Azure Portal.
+ :vartype alert_uri: str
+ :ivar time_generated_utc: The UTC time the alert was generated in ISO8601
+ format.
+ :vartype time_generated_utc: datetime
+ :ivar product_name: The name of the product which published this alert
+ (Azure Security Center, Azure ATP, Microsoft Defender ATP, O365 ATP, MCAS,
+ and so on).
+ :vartype product_name: str
+ :ivar processing_end_time_utc: The UTC processing end time of the alert in
+ ISO8601 format.
+ :vartype processing_end_time_utc: datetime
+ :ivar entities: A list of entities related to the alert.
+ :vartype entities: list[~azure.mgmt.security.models.AlertEntity]
+ :ivar is_incident: This field determines whether the alert is an incident
+ (a compound grouping of several alerts) or a single alert.
:vartype is_incident: bool
- :param entities: objects that are related to this alerts
- :type entities: list[~azure.mgmt.security.models.AlertEntity]
- :ivar confidence_score: level of confidence we have on the alert
- :vartype confidence_score: float
- :param confidence_reasons: reasons the alert got the confidenceScore value
- :type confidence_reasons:
- list[~azure.mgmt.security.models.AlertConfidenceReason]
- :ivar subscription_id: Azure subscription ID of the resource that had the
- security alert or the subscription ID of the workspace that this resource
- reports to
- :vartype subscription_id: str
- :ivar instance_id: Instance ID of the alert.
- :vartype instance_id: str
- :ivar workspace_arm_id: Azure resource ID of the workspace that the alert
- was reported to.
- :vartype workspace_arm_id: str
- :ivar correlation_key: Alerts with the same CorrelationKey will be grouped
- together in Ibiza.
+ :ivar correlation_key: Key for corelating related alerts. Alerts with the
+ same correlation key considered to be related.
:vartype correlation_key: str
+ :param extended_properties: Custom properties for the alert.
+ :type extended_properties: dict[str, str]
+ :ivar compromised_entity: The display name of the resource most related to
+ this alert.
+ :vartype compromised_entity: str
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'state': {'readonly': True},
- 'reported_time_utc': {'readonly': True},
- 'vendor_name': {'readonly': True},
- 'alert_name': {'readonly': True},
+ 'alert_type': {'readonly': True},
+ 'system_alert_id': {'readonly': True},
+ 'product_component_name': {'readonly': True},
'alert_display_name': {'readonly': True},
- 'detected_time_utc': {'readonly': True},
'description': {'readonly': True},
+ 'severity': {'readonly': True},
+ 'intent': {'readonly': True},
+ 'start_time_utc': {'readonly': True},
+ 'end_time_utc': {'readonly': True},
+ 'resource_identifiers': {'readonly': True},
'remediation_steps': {'readonly': True},
- 'action_taken': {'readonly': True},
- 'reported_severity': {'readonly': True},
- 'compromised_entity': {'readonly': True},
- 'associated_resource': {'readonly': True},
- 'system_source': {'readonly': True},
- 'can_be_investigated': {'readonly': True},
+ 'vendor_name': {'readonly': True},
+ 'status': {'readonly': True},
+ 'extended_links': {'readonly': True},
+ 'alert_uri': {'readonly': True},
+ 'time_generated_utc': {'readonly': True},
+ 'product_name': {'readonly': True},
+ 'processing_end_time_utc': {'readonly': True},
+ 'entities': {'readonly': True},
'is_incident': {'readonly': True},
- 'confidence_score': {'readonly': True, 'maximum': 1, 'minimum': 0},
- 'subscription_id': {'readonly': True},
- 'instance_id': {'readonly': True},
- 'workspace_arm_id': {'readonly': True},
'correlation_key': {'readonly': True},
+ 'compromised_entity': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'state': {'key': 'properties.state', 'type': 'str'},
- 'reported_time_utc': {'key': 'properties.reportedTimeUtc', 'type': 'iso-8601'},
- 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
- 'alert_name': {'key': 'properties.alertName', 'type': 'str'},
+ 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
+ 'system_alert_id': {'key': 'properties.systemAlertId', 'type': 'str'},
+ 'product_component_name': {'key': 'properties.productComponentName', 'type': 'str'},
'alert_display_name': {'key': 'properties.alertDisplayName', 'type': 'str'},
- 'detected_time_utc': {'key': 'properties.detectedTimeUtc', 'type': 'iso-8601'},
'description': {'key': 'properties.description', 'type': 'str'},
- 'remediation_steps': {'key': 'properties.remediationSteps', 'type': 'str'},
- 'action_taken': {'key': 'properties.actionTaken', 'type': 'str'},
- 'reported_severity': {'key': 'properties.reportedSeverity', 'type': 'str'},
- 'compromised_entity': {'key': 'properties.compromisedEntity', 'type': 'str'},
- 'associated_resource': {'key': 'properties.associatedResource', 'type': 'str'},
- 'extended_properties': {'key': 'properties.extendedProperties', 'type': '{object}'},
- 'system_source': {'key': 'properties.systemSource', 'type': 'str'},
- 'can_be_investigated': {'key': 'properties.canBeInvestigated', 'type': 'bool'},
- 'is_incident': {'key': 'properties.isIncident', 'type': 'bool'},
+ 'severity': {'key': 'properties.severity', 'type': 'str'},
+ 'intent': {'key': 'properties.intent', 'type': 'str'},
+ 'start_time_utc': {'key': 'properties.startTimeUtc', 'type': 'iso-8601'},
+ 'end_time_utc': {'key': 'properties.endTimeUtc', 'type': 'iso-8601'},
+ 'resource_identifiers': {'key': 'properties.resourceIdentifiers', 'type': '[ResourceIdentifier]'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': '[str]'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'status': {'key': 'properties.status', 'type': 'str'},
+ 'extended_links': {'key': 'properties.extendedLinks', 'type': '[{str}]'},
+ 'alert_uri': {'key': 'properties.alertUri', 'type': 'str'},
+ 'time_generated_utc': {'key': 'properties.timeGeneratedUtc', 'type': 'iso-8601'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'processing_end_time_utc': {'key': 'properties.processingEndTimeUtc', 'type': 'iso-8601'},
'entities': {'key': 'properties.entities', 'type': '[AlertEntity]'},
- 'confidence_score': {'key': 'properties.confidenceScore', 'type': 'float'},
- 'confidence_reasons': {'key': 'properties.confidenceReasons', 'type': '[AlertConfidenceReason]'},
- 'subscription_id': {'key': 'properties.subscriptionId', 'type': 'str'},
- 'instance_id': {'key': 'properties.instanceId', 'type': 'str'},
- 'workspace_arm_id': {'key': 'properties.workspaceArmId', 'type': 'str'},
+ 'is_incident': {'key': 'properties.isIncident', 'type': 'bool'},
'correlation_key': {'key': 'properties.correlationKey', 'type': 'str'},
+ 'extended_properties': {'key': 'properties.extendedProperties', 'type': '{str}'},
+ 'compromised_entity': {'key': 'properties.compromisedEntity', 'type': 'str'},
}
def __init__(self, **kwargs):
super(Alert, self).__init__(**kwargs)
- self.state = None
- self.reported_time_utc = None
- self.vendor_name = None
- self.alert_name = None
+ self.alert_type = None
+ self.system_alert_id = None
+ self.product_component_name = None
self.alert_display_name = None
- self.detected_time_utc = None
self.description = None
+ self.severity = None
+ self.intent = None
+ self.start_time_utc = None
+ self.end_time_utc = None
+ self.resource_identifiers = None
self.remediation_steps = None
- self.action_taken = None
- self.reported_severity = None
- self.compromised_entity = None
- self.associated_resource = None
- self.extended_properties = kwargs.get('extended_properties', None)
- self.system_source = None
- self.can_be_investigated = None
+ self.vendor_name = None
+ self.status = None
+ self.extended_links = None
+ self.alert_uri = None
+ self.time_generated_utc = None
+ self.product_name = None
+ self.processing_end_time_utc = None
+ self.entities = None
self.is_incident = None
- self.entities = kwargs.get('entities', None)
- self.confidence_score = None
- self.confidence_reasons = kwargs.get('confidence_reasons', None)
- self.subscription_id = None
- self.instance_id = None
- self.workspace_arm_id = None
self.correlation_key = None
-
-
-class AlertConfidenceReason(Model):
- """Factors that increase our confidence that the alert is a true positive.
-
- Variables are only populated by the server, and will be ignored when
- sending a request.
-
- :ivar type: Type of confidence factor
- :vartype type: str
- :ivar reason: description of the confidence reason
- :vartype reason: str
- """
-
- _validation = {
- 'type': {'readonly': True},
- 'reason': {'readonly': True},
- }
-
- _attribute_map = {
- 'type': {'key': 'type', 'type': 'str'},
- 'reason': {'key': 'reason', 'type': 'str'},
- }
-
- def __init__(self, **kwargs):
- super(AlertConfidenceReason, self).__init__(**kwargs)
- self.type = None
- self.reason = None
+ self.extended_properties = kwargs.get('extended_properties', None)
+ self.compromised_entity = None
class AlertEntity(Model):
@@ -1139,8 +1253,8 @@ def __init__(self, **kwargs):
self.rule_type = 'AmqpD2CMessagesNotInAllowedRange'
-class AppWhitelistingGroup(Model):
- """AppWhitelistingGroup.
+class AscLocation(Resource):
+ """The ASC location of the subscription is in the "name" field.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -1151,175 +1265,53 @@ class AppWhitelistingGroup(Model):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar location: Location where the resource is stored
- :vartype location: str
- :param enforcement_mode: Possible values include: 'Audit', 'Enforce',
- 'None'
- :type enforcement_mode: str or ~azure.mgmt.security.models.enum
- :param protection_mode:
- :type protection_mode: ~azure.mgmt.security.models.ProtectionMode
- :ivar configuration_status: Possible values include: 'Configured',
- 'NotConfigured', 'InProgress', 'Failed', 'NoStatus'
- :vartype configuration_status: str or ~azure.mgmt.security.models.enum
- :ivar recommendation_status: Possible values include: 'Recommended',
- 'NotRecommended', 'NotAvailable', 'NoStatus'
- :vartype recommendation_status: str or ~azure.mgmt.security.models.enum
- :ivar issues:
- :vartype issues:
- list[~azure.mgmt.security.models.AppWhitelistingIssueSummary]
- :ivar source_system: Possible values include: 'Azure_AppLocker',
- 'Azure_AuditD', 'NonAzure_AppLocker', 'NonAzure_AuditD', 'None'
- :vartype source_system: str or ~azure.mgmt.security.models.enum
- :param vm_recommendations:
- :type vm_recommendations:
- list[~azure.mgmt.security.models.VmRecommendation]
- :param path_recommendations:
- :type path_recommendations:
- list[~azure.mgmt.security.models.PathRecommendation]
+ :param properties:
+ :type properties: object
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'location': {'readonly': True},
- 'configuration_status': {'readonly': True},
- 'recommendation_status': {'readonly': True},
- 'issues': {'readonly': True},
- 'source_system': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'location': {'key': 'location', 'type': 'str'},
- 'enforcement_mode': {'key': 'properties.enforcementMode', 'type': 'str'},
- 'protection_mode': {'key': 'properties.protectionMode', 'type': 'ProtectionMode'},
- 'configuration_status': {'key': 'properties.configurationStatus', 'type': 'str'},
- 'recommendation_status': {'key': 'properties.recommendationStatus', 'type': 'str'},
- 'issues': {'key': 'properties.issues', 'type': '[AppWhitelistingIssueSummary]'},
- 'source_system': {'key': 'properties.sourceSystem', 'type': 'str'},
- 'vm_recommendations': {'key': 'properties.vmRecommendations', 'type': '[VmRecommendation]'},
- 'path_recommendations': {'key': 'properties.pathRecommendations', 'type': '[PathRecommendation]'},
+ 'properties': {'key': 'properties', 'type': 'object'},
}
def __init__(self, **kwargs):
- super(AppWhitelistingGroup, self).__init__(**kwargs)
- self.id = None
- self.name = None
- self.type = None
- self.location = None
- self.enforcement_mode = kwargs.get('enforcement_mode', None)
- self.protection_mode = kwargs.get('protection_mode', None)
- self.configuration_status = None
- self.recommendation_status = None
- self.issues = None
- self.source_system = None
- self.vm_recommendations = kwargs.get('vm_recommendations', None)
- self.path_recommendations = kwargs.get('path_recommendations', None)
+ super(AscLocation, self).__init__(**kwargs)
+ self.properties = kwargs.get('properties', None)
-class AppWhitelistingGroups(Model):
- """Represents a list of VM/server groups and set of rules that are Recommended
- by Azure Security Center to be allowed.
+class AssessmentLinks(Model):
+ """Links relevant to the assessment.
- :param value:
- :type value: list[~azure.mgmt.security.models.AppWhitelistingGroup]
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar azure_portal_uri: Link to assessment in Azure Portal
+ :vartype azure_portal_uri: str
"""
+ _validation = {
+ 'azure_portal_uri': {'readonly': True},
+ }
+
_attribute_map = {
- 'value': {'key': 'value', 'type': '[AppWhitelistingGroup]'},
+ 'azure_portal_uri': {'key': 'azurePortalUri', 'type': 'str'},
}
def __init__(self, **kwargs):
- super(AppWhitelistingGroups, self).__init__(**kwargs)
- self.value = kwargs.get('value', None)
+ super(AssessmentLinks, self).__init__(**kwargs)
+ self.azure_portal_uri = None
-class AppWhitelistingIssueSummary(Model):
- """Represents a summary of the alerts of the VM/server group.
-
- :param issue: Possible values include: 'ViolationsAudited',
- 'ViolationsBlocked', 'MsiAndScriptViolationsAudited',
- 'MsiAndScriptViolationsBlocked', 'ExecutableViolationsAudited',
- 'RulesViolatedManually'
- :type issue: str or ~azure.mgmt.security.models.enum
- :param number_of_vms: The number of machines in the VM/server group that
- have this alert
- :type number_of_vms: float
- """
-
- _attribute_map = {
- 'issue': {'key': 'issue', 'type': 'str'},
- 'number_of_vms': {'key': 'numberOfVms', 'type': 'float'},
- }
-
- def __init__(self, **kwargs):
- super(AppWhitelistingIssueSummary, self).__init__(**kwargs)
- self.issue = kwargs.get('issue', None)
- self.number_of_vms = kwargs.get('number_of_vms', None)
-
-
-class AscLocation(Resource):
- """The ASC location of the subscription is in the "name" field.
-
- Variables are only populated by the server, and will be ignored when
- sending a request.
-
- :ivar id: Resource Id
- :vartype id: str
- :ivar name: Resource name
- :vartype name: str
- :ivar type: Resource type
- :vartype type: str
- :param properties:
- :type properties: object
- """
-
- _validation = {
- 'id': {'readonly': True},
- 'name': {'readonly': True},
- 'type': {'readonly': True},
- }
-
- _attribute_map = {
- 'id': {'key': 'id', 'type': 'str'},
- 'name': {'key': 'name', 'type': 'str'},
- 'type': {'key': 'type', 'type': 'str'},
- 'properties': {'key': 'properties', 'type': 'object'},
- }
-
- def __init__(self, **kwargs):
- super(AscLocation, self).__init__(**kwargs)
- self.properties = kwargs.get('properties', None)
-
-
-class AssessmentLinks(Model):
- """Links relevant to the assessment.
-
- Variables are only populated by the server, and will be ignored when
- sending a request.
-
- :ivar azure_portal_uri: Link to assessment in Azure Portal
- :vartype azure_portal_uri: str
- """
-
- _validation = {
- 'azure_portal_uri': {'readonly': True},
- }
-
- _attribute_map = {
- 'azure_portal_uri': {'key': 'azurePortalUri', 'type': 'str'},
- }
-
- def __init__(self, **kwargs):
- super(AssessmentLinks, self).__init__(**kwargs)
- self.azure_portal_uri = None
-
-
-class AssessmentStatus(Model):
- """The result of the assessment.
+class AssessmentStatus(Model):
+ """The result of the assessment.
All required parameters must be populated in order to send to Azure.
@@ -1452,6 +1444,54 @@ def __init__(self, **kwargs):
self.last_event_received = kwargs.get('last_event_received', None)
+class AuthenticationDetailsProperties(Model):
+ """Settings for cloud authentication management.
+
+ You probably want to use the sub-classes and not this class directly. Known
+ sub-classes are: AwsCredsAuthenticationDetailsProperties,
+ AwAssumeRoleAuthenticationDetailsProperties,
+ GcpCredentialsDetailsProperties
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ }
+
+ _subtype_map = {
+ 'authentication_type': {'awsCreds': 'AwsCredsAuthenticationDetailsProperties', 'awsAssumeRole': 'AwAssumeRoleAuthenticationDetailsProperties', 'gcpCredentials': 'GcpCredentialsDetailsProperties'}
+ }
+
+ def __init__(self, **kwargs):
+ super(AuthenticationDetailsProperties, self).__init__(**kwargs)
+ self.authentication_provisioning_state = None
+ self.granted_permissions = None
+ self.authentication_type = None
+
+
class TrackedResource(Model):
"""Describes an Azure tracked resource.
@@ -1464,8 +1504,8 @@ class TrackedResource(Model):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar location: Location where the resource is stored
- :vartype location: str
+ :param location: Location where the resource is stored
+ :type location: str
:param kind: Kind of the resource
:type kind: str
:param etag: Entity tag is used for comparing two or more entities from
@@ -1479,7 +1519,6 @@ class TrackedResource(Model):
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'location': {'readonly': True},
}
_attribute_map = {
@@ -1497,7 +1536,7 @@ def __init__(self, **kwargs):
self.id = None
self.name = None
self.type = None
- self.location = None
+ self.location = kwargs.get('location', None)
self.kind = kwargs.get('kind', None)
self.etag = kwargs.get('etag', None)
self.tags = kwargs.get('tags', None)
@@ -1515,8 +1554,8 @@ class Automation(TrackedResource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar location: Location where the resource is stored
- :vartype location: str
+ :param location: Location where the resource is stored
+ :type location: str
:param kind: Kind of the resource
:type kind: str
:param etag: Entity tag is used for comparing two or more entities from
@@ -1545,7 +1584,6 @@ class Automation(TrackedResource):
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'location': {'readonly': True},
}
_attribute_map = {
@@ -1759,7 +1797,7 @@ class AutomationSource(Model):
https://aka.ms/ASCAutomationSchemas.
:param event_source: A valid event source type. Possible values include:
- 'Assessments', 'Alerts'
+ 'Assessments', 'SubAssessments', 'Alerts'
:type event_source: str or ~azure.mgmt.security.models.EventSource
:param rule_sets: A set of rules which evaluate upon event interception. A
logical disjunction is applied between defined rule sets (logical 'or').
@@ -1871,6 +1909,121 @@ def __init__(self, **kwargs):
self.auto_provision = kwargs.get('auto_provision', None)
+class AwAssumeRoleAuthenticationDetailsProperties(AuthenticationDetailsProperties):
+ """AWS cloud account connector based assume role, the role enables delegating
+ access to your AWS resources. The role is composed of role Amazon Resource
+ Name (ARN) and external ID. For more details, refer to Creating
+ a Role to Delegate Permissions to an IAM User (write only).
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ :ivar account_id: The ID of the cloud account
+ :vartype account_id: str
+ :param aws_assume_role_arn: Required. Assumed role ID is an identifier
+ that you can use to create temporary security credentials.
+ :type aws_assume_role_arn: str
+ :param aws_external_id: Required. A unique identifier that is required
+ when you assume a role in another account.
+ :type aws_external_id: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ 'account_id': {'readonly': True},
+ 'aws_assume_role_arn': {'required': True},
+ 'aws_external_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ 'account_id': {'key': 'accountId', 'type': 'str'},
+ 'aws_assume_role_arn': {'key': 'awsAssumeRoleArn', 'type': 'str'},
+ 'aws_external_id': {'key': 'awsExternalId', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(AwAssumeRoleAuthenticationDetailsProperties, self).__init__(**kwargs)
+ self.account_id = None
+ self.aws_assume_role_arn = kwargs.get('aws_assume_role_arn', None)
+ self.aws_external_id = kwargs.get('aws_external_id', None)
+ self.authentication_type = 'awsAssumeRole'
+
+
+class AwsCredsAuthenticationDetailsProperties(AuthenticationDetailsProperties):
+ """AWS cloud account connector based credentials, the credentials is composed
+ of access key ID and secret key, for more details, refer to Creating
+ an IAM User in Your AWS Account (write only).
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ :ivar account_id: The ID of the cloud account
+ :vartype account_id: str
+ :param aws_access_key_id: Required. Public key element of the AWS
+ credential object (write only)
+ :type aws_access_key_id: str
+ :param aws_secret_access_key: Required. Secret key element of the AWS
+ credential object (write only)
+ :type aws_secret_access_key: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ 'account_id': {'readonly': True},
+ 'aws_access_key_id': {'required': True},
+ 'aws_secret_access_key': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ 'account_id': {'key': 'accountId', 'type': 'str'},
+ 'aws_access_key_id': {'key': 'awsAccessKeyId', 'type': 'str'},
+ 'aws_secret_access_key': {'key': 'awsSecretAccessKey', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(AwsCredsAuthenticationDetailsProperties, self).__init__(**kwargs)
+ self.account_id = None
+ self.aws_access_key_id = kwargs.get('aws_access_key_id', None)
+ self.aws_secret_access_key = kwargs.get('aws_secret_access_key', None)
+ self.authentication_type = 'awsCreds'
+
+
class ResourceDetails(Model):
"""Details of the resource that was assessed.
@@ -1930,6 +2083,67 @@ def __init__(self, **kwargs):
self.source = 'Azure'
+class ResourceIdentifier(Model):
+ """A resource identifier for an alert which can be used to direct the alert to
+ the right product exposure group (tenant, workspace, subscription etc.).
+
+ You probably want to use the sub-classes and not this class directly. Known
+ sub-classes are: AzureResourceIdentifier, LogAnalyticsIdentifier
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param type: Required. Constant filled by server.
+ :type type: str
+ """
+
+ _validation = {
+ 'type': {'required': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ }
+
+ _subtype_map = {
+ 'type': {'AzureResource': 'AzureResourceIdentifier', 'LogAnalytics': 'LogAnalyticsIdentifier'}
+ }
+
+ def __init__(self, **kwargs):
+ super(ResourceIdentifier, self).__init__(**kwargs)
+ self.type = None
+
+
+class AzureResourceIdentifier(ResourceIdentifier):
+ """Azure resource identifier.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param type: Required. Constant filled by server.
+ :type type: str
+ :ivar azure_resource_id: ARM resource identifier for the cloud resource
+ being alerted on
+ :vartype azure_resource_id: str
+ """
+
+ _validation = {
+ 'type': {'required': True},
+ 'azure_resource_id': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ 'azure_resource_id': {'key': 'azureResourceId', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(AzureResourceIdentifier, self).__init__(**kwargs)
+ self.azure_resource_id = None
+ self.type = 'AzureResource'
+
+
class AzureResourceLink(Model):
"""Describes an Azure resource with kind.
@@ -1953,6 +2167,91 @@ def __init__(self, **kwargs):
self.id = None
+class AzureTrackedResourceLocation(Model):
+ """Describes an Azure resource with location.
+
+ :param location: Location where the resource is stored
+ :type location: str
+ """
+
+ _attribute_map = {
+ 'location': {'key': 'location', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(AzureTrackedResourceLocation, self).__init__(**kwargs)
+ self.location = kwargs.get('location', None)
+
+
+class Baseline(Model):
+ """Baseline details.
+
+ :param expected_results: Expected results.
+ :type expected_results: list[list[str]]
+ :param updated_time: Baseline update time (UTC).
+ :type updated_time: datetime
+ """
+
+ _attribute_map = {
+ 'expected_results': {'key': 'expectedResults', 'type': '[[str]]'},
+ 'updated_time': {'key': 'updatedTime', 'type': 'iso-8601'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Baseline, self).__init__(**kwargs)
+ self.expected_results = kwargs.get('expected_results', None)
+ self.updated_time = kwargs.get('updated_time', None)
+
+
+class BaselineAdjustedResult(Model):
+ """The rule result adjusted with baseline.
+
+ :param baseline:
+ :type baseline: ~azure.mgmt.security.models.Baseline
+ :param status: Possible values include: 'NonFinding', 'Finding',
+ 'InternalError'
+ :type status: str or ~azure.mgmt.security.models.RuleStatus
+ :param results_not_in_baseline: Results the are not in baseline.
+ :type results_not_in_baseline: list[list[str]]
+ :param results_only_in_baseline: Results the are in baseline.
+ :type results_only_in_baseline: list[list[str]]
+ """
+
+ _attribute_map = {
+ 'baseline': {'key': 'baseline', 'type': 'Baseline'},
+ 'status': {'key': 'status', 'type': 'str'},
+ 'results_not_in_baseline': {'key': 'resultsNotInBaseline', 'type': '[[str]]'},
+ 'results_only_in_baseline': {'key': 'resultsOnlyInBaseline', 'type': '[[str]]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(BaselineAdjustedResult, self).__init__(**kwargs)
+ self.baseline = kwargs.get('baseline', None)
+ self.status = kwargs.get('status', None)
+ self.results_not_in_baseline = kwargs.get('results_not_in_baseline', None)
+ self.results_only_in_baseline = kwargs.get('results_only_in_baseline', None)
+
+
+class BenchmarkReference(Model):
+ """The benchmark references.
+
+ :param benchmark: The benchmark name.
+ :type benchmark: str
+ :param reference: The benchmark reference.
+ :type reference: str
+ """
+
+ _attribute_map = {
+ 'benchmark': {'key': 'benchmark', 'type': 'str'},
+ 'reference': {'key': 'reference', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(BenchmarkReference, self).__init__(**kwargs)
+ self.benchmark = kwargs.get('benchmark', None)
+ self.reference = kwargs.get('reference', None)
+
+
class CefExternalSecuritySolution(ExternalSecuritySolution):
"""Represents a security solution which sends CEF logs to an OMS workspace.
@@ -2329,6 +2628,48 @@ def __init__(self, **kwargs):
self.rule_type = 'ConnectionToIpNotAllowed'
+class ConnectorSetting(Resource):
+ """The connector setting.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param hybrid_compute_settings: Settings for hybrid compute management.
+ These settings are relevant only for Arc autoProvision (Hybrid Compute).
+ :type hybrid_compute_settings:
+ ~azure.mgmt.security.models.HybridComputeSettingsProperties
+ :param authentication_details: Settings for authentication management,
+ these settings are relevant only for the cloud connector.
+ :type authentication_details:
+ ~azure.mgmt.security.models.AuthenticationDetailsProperties
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'hybrid_compute_settings': {'key': 'properties.hybridComputeSettings', 'type': 'HybridComputeSettingsProperties'},
+ 'authentication_details': {'key': 'properties.authenticationDetails', 'type': 'AuthenticationDetailsProperties'},
+ }
+
+ def __init__(self, **kwargs):
+ super(ConnectorSetting, self).__init__(**kwargs)
+ self.hybrid_compute_settings = kwargs.get('hybrid_compute_settings', None)
+ self.authentication_details = kwargs.get('authentication_details', None)
+
+
class ContainerRegistryVulnerabilityProperties(AdditionalData):
"""Additional context fields for container registry Vulnerability assessment.
@@ -2628,8 +2969,8 @@ def __init__(self, **kwargs):
self.rule_type = 'DenylistCustomAlertRule'
-class DeviceSecurityGroup(Resource):
- """The device security group resource.
+class Device(Resource):
+ """Device model.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -2640,13 +2981,178 @@ class DeviceSecurityGroup(Resource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param threshold_rules: The list of custom alert threshold rules.
- :type threshold_rules:
- list[~azure.mgmt.security.models.ThresholdCustomAlertRule]
- :param time_window_rules: The list of custom alert time-window rules.
- :type time_window_rules:
- list[~azure.mgmt.security.models.TimeWindowCustomAlertRule]
- :param allowlist_rules: The allow-list custom alert rules.
+ :param display_name: Device display name given by the collector
+ :type display_name: str
+ :param device_type: Device type.
+ :type device_type: str
+ :ivar source_name: The source that created the device
+ :vartype source_name: str
+ :ivar network_interfaces: List of network interfaces.
+ :vartype network_interfaces:
+ list[~azure.mgmt.security.models.NetworkInterface]
+ :ivar vendor: Device vendor
+ :vartype vendor: str
+ :param os_name: Device operating system name.
+ :type os_name: str
+ :ivar protocols: List of protocols.
+ :vartype protocols: list[~azure.mgmt.security.models.Protocol1]
+ :ivar last_active_time: last time the device was active in the network
+ :vartype last_active_time: datetime
+ :ivar last_update_time: last time the device was updated
+ :vartype last_update_time: datetime
+ :ivar management_state: Managed state of the device. Possible values
+ include: 'Managed', 'Unmanaged'
+ :vartype management_state: str or
+ ~azure.mgmt.security.models.ManagementState
+ :param authorization_state: Authorized state of the device. Possible
+ values include: 'Authorized', 'Unauthorized'. Default value:
+ "Unauthorized" .
+ :type authorization_state: str or
+ ~azure.mgmt.security.models.AuthorizationState
+ :param device_criticality: Device criticality. Possible values include:
+ 'Important', 'Standard'. Default value: "Standard" .
+ :type device_criticality: str or
+ ~azure.mgmt.security.models.DeviceCriticality
+ :param purdue_level: Purdue level of the device. Possible values include:
+ 'ProcessControl', 'Supervisory', 'Enterprise'. Default value:
+ "ProcessControl" .
+ :type purdue_level: str or ~azure.mgmt.security.models.PurdueLevel
+ :param notes: user notes for the device, up to 300 characters.
+ :type notes: str
+ :ivar firmwares: List of device firmwares.
+ :vartype firmwares: list[~azure.mgmt.security.models.Firmware]
+ :ivar discovery_time: Discovered time of the device.
+ :vartype discovery_time: datetime
+ :ivar programming_state: Indicates whether this device is programming.
+ Possible values include: 'ProgrammingDevice', 'NotProgrammingDevice'
+ :vartype programming_state: str or
+ ~azure.mgmt.security.models.ProgrammingState
+ :ivar last_programming_time: last time the device was programming or
+ programed.
+ :vartype last_programming_time: datetime
+ :ivar scanning_functionality: Indicates whether the device is a scanner.
+ Possible values include: 'ScannerDevice', 'NotScannerDevice'
+ :vartype scanning_functionality: str or
+ ~azure.mgmt.security.models.ScanningFunctionality
+ :ivar last_scan_time: last time the device was scanning.
+ :vartype last_scan_time: datetime
+ :ivar risk_score: risk score of the device.
+ :vartype risk_score: int
+ :ivar sensor_name: When the device is unmanaged, the sensor that scanned
+ this device.
+ :vartype sensor_name: str
+ :ivar site_name: The sensor site name.
+ :vartype site_name: str
+ :ivar zone_name: The sensor zone name.
+ :vartype zone_name: str
+ :ivar device_status: Device status. Possible values include: 'Active',
+ 'Removed'
+ :vartype device_status: str or ~azure.mgmt.security.models.DeviceStatus
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'source_name': {'readonly': True},
+ 'network_interfaces': {'readonly': True},
+ 'vendor': {'readonly': True},
+ 'protocols': {'readonly': True},
+ 'last_active_time': {'readonly': True},
+ 'last_update_time': {'readonly': True},
+ 'management_state': {'readonly': True},
+ 'firmwares': {'readonly': True},
+ 'discovery_time': {'readonly': True},
+ 'programming_state': {'readonly': True},
+ 'last_programming_time': {'readonly': True},
+ 'scanning_functionality': {'readonly': True},
+ 'last_scan_time': {'readonly': True},
+ 'risk_score': {'readonly': True, 'maximum': 100, 'minimum': 0},
+ 'sensor_name': {'readonly': True},
+ 'site_name': {'readonly': True},
+ 'zone_name': {'readonly': True},
+ 'device_status': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'display_name': {'key': 'properties.displayName', 'type': 'str'},
+ 'device_type': {'key': 'properties.deviceType', 'type': 'str'},
+ 'source_name': {'key': 'properties.sourceName', 'type': 'str'},
+ 'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
+ 'vendor': {'key': 'properties.vendor', 'type': 'str'},
+ 'os_name': {'key': 'properties.osName', 'type': 'str'},
+ 'protocols': {'key': 'properties.protocols', 'type': '[Protocol1]'},
+ 'last_active_time': {'key': 'properties.lastActiveTime', 'type': 'iso-8601'},
+ 'last_update_time': {'key': 'properties.lastUpdateTime', 'type': 'iso-8601'},
+ 'management_state': {'key': 'properties.managementState', 'type': 'str'},
+ 'authorization_state': {'key': 'properties.authorizationState', 'type': 'str'},
+ 'device_criticality': {'key': 'properties.deviceCriticality', 'type': 'str'},
+ 'purdue_level': {'key': 'properties.purdueLevel', 'type': 'str'},
+ 'notes': {'key': 'properties.notes', 'type': 'str'},
+ 'firmwares': {'key': 'properties.firmwares', 'type': '[Firmware]'},
+ 'discovery_time': {'key': 'properties.discoveryTime', 'type': 'iso-8601'},
+ 'programming_state': {'key': 'properties.programmingState', 'type': 'str'},
+ 'last_programming_time': {'key': 'properties.lastProgrammingTime', 'type': 'iso-8601'},
+ 'scanning_functionality': {'key': 'properties.scanningFunctionality', 'type': 'str'},
+ 'last_scan_time': {'key': 'properties.lastScanTime', 'type': 'iso-8601'},
+ 'risk_score': {'key': 'properties.riskScore', 'type': 'int'},
+ 'sensor_name': {'key': 'properties.sensorName', 'type': 'str'},
+ 'site_name': {'key': 'properties.siteName', 'type': 'str'},
+ 'zone_name': {'key': 'properties.zoneName', 'type': 'str'},
+ 'device_status': {'key': 'properties.deviceStatus', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Device, self).__init__(**kwargs)
+ self.display_name = kwargs.get('display_name', None)
+ self.device_type = kwargs.get('device_type', None)
+ self.source_name = None
+ self.network_interfaces = None
+ self.vendor = None
+ self.os_name = kwargs.get('os_name', None)
+ self.protocols = None
+ self.last_active_time = None
+ self.last_update_time = None
+ self.management_state = None
+ self.authorization_state = kwargs.get('authorization_state', "Unauthorized")
+ self.device_criticality = kwargs.get('device_criticality', "Standard")
+ self.purdue_level = kwargs.get('purdue_level', "ProcessControl")
+ self.notes = kwargs.get('notes', None)
+ self.firmwares = None
+ self.discovery_time = None
+ self.programming_state = None
+ self.last_programming_time = None
+ self.scanning_functionality = None
+ self.last_scan_time = None
+ self.risk_score = None
+ self.sensor_name = None
+ self.site_name = None
+ self.zone_name = None
+ self.device_status = None
+
+
+class DeviceSecurityGroup(Resource):
+ """The device security group resource.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param threshold_rules: The list of custom alert threshold rules.
+ :type threshold_rules:
+ list[~azure.mgmt.security.models.ThresholdCustomAlertRule]
+ :param time_window_rules: The list of custom alert time-window rules.
+ :type time_window_rules:
+ list[~azure.mgmt.security.models.TimeWindowCustomAlertRule]
+ :param allowlist_rules: The allow-list custom alert rules.
:type allowlist_rules:
list[~azure.mgmt.security.models.AllowlistCustomAlertRule]
:param denylist_rules: The deny-list custom alert rules.
@@ -2943,6 +3449,161 @@ def __init__(self, **kwargs):
self.rule_type = 'FileUploadsNotInAllowedRange'
+class Firmware(Model):
+ """Firmware information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar module_address: Address of the specific module a firmware is related
+ to
+ :vartype module_address: str
+ :ivar rack: Rack number of the module a firmware is related to.
+ :vartype rack: str
+ :ivar slot: Slot number in the rack of the module a firmware is related to
+ :vartype slot: str
+ :ivar serial: Serial of the firmware
+ :vartype serial: str
+ :ivar model: Firmware model
+ :vartype model: str
+ :ivar version: Firmware version
+ :vartype version: str
+ :ivar additional_data: A bag of fields which extends the firmware
+ information.
+ :vartype additional_data: object
+ """
+
+ _validation = {
+ 'module_address': {'readonly': True},
+ 'rack': {'readonly': True},
+ 'slot': {'readonly': True},
+ 'serial': {'readonly': True},
+ 'model': {'readonly': True},
+ 'version': {'readonly': True},
+ 'additional_data': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'module_address': {'key': 'moduleAddress', 'type': 'str'},
+ 'rack': {'key': 'rack', 'type': 'str'},
+ 'slot': {'key': 'slot', 'type': 'str'},
+ 'serial': {'key': 'serial', 'type': 'str'},
+ 'model': {'key': 'model', 'type': 'str'},
+ 'version': {'key': 'version', 'type': 'str'},
+ 'additional_data': {'key': 'additionalData', 'type': 'object'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Firmware, self).__init__(**kwargs)
+ self.module_address = None
+ self.rack = None
+ self.slot = None
+ self.serial = None
+ self.model = None
+ self.version = None
+ self.additional_data = None
+
+
+class GcpCredentialsDetailsProperties(AuthenticationDetailsProperties):
+ """GCP cloud account connector based service to service credentials, the
+ credentials are composed of the organization ID and a JSON API key (write
+ only).
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ :param organization_id: Required. The organization ID of the GCP cloud
+ account
+ :type organization_id: str
+ :param type: Required. Type field of the API key (write only)
+ :type type: str
+ :param project_id: Required. Project ID field of the API key (write only)
+ :type project_id: str
+ :param private_key_id: Required. Private key ID field of the API key
+ (write only)
+ :type private_key_id: str
+ :param private_key: Required. Private key field of the API key (write
+ only)
+ :type private_key: str
+ :param client_email: Required. Client email field of the API key (write
+ only)
+ :type client_email: str
+ :param client_id: Required. Client ID field of the API key (write only)
+ :type client_id: str
+ :param auth_uri: Required. Auth URI field of the API key (write only)
+ :type auth_uri: str
+ :param token_uri: Required. Token URI field of the API key (write only)
+ :type token_uri: str
+ :param auth_provider_x509_cert_url: Required. Auth provider x509
+ certificate URL field of the API key (write only)
+ :type auth_provider_x509_cert_url: str
+ :param client_x509_cert_url: Required. Client x509 certificate URL field
+ of the API key (write only)
+ :type client_x509_cert_url: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ 'organization_id': {'required': True},
+ 'type': {'required': True},
+ 'project_id': {'required': True},
+ 'private_key_id': {'required': True},
+ 'private_key': {'required': True},
+ 'client_email': {'required': True},
+ 'client_id': {'required': True},
+ 'auth_uri': {'required': True},
+ 'token_uri': {'required': True},
+ 'auth_provider_x509_cert_url': {'required': True},
+ 'client_x509_cert_url': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ 'organization_id': {'key': 'organizationId', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'project_id': {'key': 'projectId', 'type': 'str'},
+ 'private_key_id': {'key': 'privateKeyId', 'type': 'str'},
+ 'private_key': {'key': 'privateKey', 'type': 'str'},
+ 'client_email': {'key': 'clientEmail', 'type': 'str'},
+ 'client_id': {'key': 'clientId', 'type': 'str'},
+ 'auth_uri': {'key': 'authUri', 'type': 'str'},
+ 'token_uri': {'key': 'tokenUri', 'type': 'str'},
+ 'auth_provider_x509_cert_url': {'key': 'authProviderX509CertUrl', 'type': 'str'},
+ 'client_x509_cert_url': {'key': 'clientX509CertUrl', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(GcpCredentialsDetailsProperties, self).__init__(**kwargs)
+ self.organization_id = kwargs.get('organization_id', None)
+ self.type = kwargs.get('type', None)
+ self.project_id = kwargs.get('project_id', None)
+ self.private_key_id = kwargs.get('private_key_id', None)
+ self.private_key = kwargs.get('private_key', None)
+ self.client_email = kwargs.get('client_email', None)
+ self.client_id = kwargs.get('client_id', None)
+ self.auth_uri = kwargs.get('auth_uri', None)
+ self.token_uri = kwargs.get('token_uri', None)
+ self.auth_provider_x509_cert_url = kwargs.get('auth_provider_x509_cert_url', None)
+ self.client_x509_cert_url = kwargs.get('client_x509_cert_url', None)
+ self.authentication_type = 'gcpCredentials'
+
+
class HttpC2DMessagesNotInAllowedRange(TimeWindowCustomAlertRule):
"""Number of cloud to device messages (HTTP protocol) is not in allowed range.
@@ -3091,6 +3752,61 @@ def __init__(self, **kwargs):
self.rule_type = 'HttpD2CMessagesNotInAllowedRange'
+class HybridComputeSettingsProperties(Model):
+ """Settings for hybrid compute management.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar hybrid_compute_provisioning_state: State of the service principal
+ and its secret. Possible values include: 'Valid', 'Invalid', 'Expired'
+ :vartype hybrid_compute_provisioning_state: str or
+ ~azure.mgmt.security.models.HybridComputeProvisioningState
+ :param auto_provision: Required. Whether or not to automatically install
+ Azure Arc (hybrid compute) agents on machines. Possible values include:
+ 'On', 'Off'
+ :type auto_provision: str or ~azure.mgmt.security.models.AutoProvision
+ :param resource_group_name: The name of the resource group where Arc
+ (Hybrid Compute) connectors are connected.
+ :type resource_group_name: str
+ :param region: The location where the metadata of machines will be stored
+ :type region: str
+ :param proxy_server: For a non-Azure machine that is not connected
+ directly to the internet, specify a proxy server that the non-Azure
+ machine can use.
+ :type proxy_server: ~azure.mgmt.security.models.ProxyServerProperties
+ :param service_principal: An object to access resources that are secured
+ by an Azure AD tenant.
+ :type service_principal:
+ ~azure.mgmt.security.models.ServicePrincipalProperties
+ """
+
+ _validation = {
+ 'hybrid_compute_provisioning_state': {'readonly': True},
+ 'auto_provision': {'required': True},
+ }
+
+ _attribute_map = {
+ 'hybrid_compute_provisioning_state': {'key': 'hybridComputeProvisioningState', 'type': 'str'},
+ 'auto_provision': {'key': 'autoProvision', 'type': 'str'},
+ 'resource_group_name': {'key': 'resourceGroupName', 'type': 'str'},
+ 'region': {'key': 'region', 'type': 'str'},
+ 'proxy_server': {'key': 'proxyServer', 'type': 'ProxyServerProperties'},
+ 'service_principal': {'key': 'servicePrincipal', 'type': 'ServicePrincipalProperties'},
+ }
+
+ def __init__(self, **kwargs):
+ super(HybridComputeSettingsProperties, self).__init__(**kwargs)
+ self.hybrid_compute_provisioning_state = None
+ self.auto_provision = kwargs.get('auto_provision', None)
+ self.resource_group_name = kwargs.get('resource_group_name', None)
+ self.region = kwargs.get('region', None)
+ self.proxy_server = kwargs.get('proxy_server', None)
+ self.service_principal = kwargs.get('service_principal', None)
+
+
class InformationProtectionKeyword(Model):
"""The information type keyword.
@@ -3212,8 +3928,64 @@ def __init__(self, **kwargs):
self.keywords = kwargs.get('keywords', None)
-class IoTSecurityAggregatedAlert(Model):
- """Security Solution Aggregated Alert information.
+class IotAlert(Model):
+ """IoT alert.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar system_alert_id: Holds the product canonical identifier of the alert
+ within the scope of a product
+ :vartype system_alert_id: str
+ :ivar compromised_entity: Display name of the main entity being reported
+ on
+ :vartype compromised_entity: str
+ :ivar alert_type: The type name of the alert
+ :vartype alert_type: str
+ :ivar start_time_utc: The impact start time of the alert (the time of the
+ first event or activity included in the alert)
+ :vartype start_time_utc: str
+ :ivar end_time_utc: The impact end time of the alert (the time of the last
+ event or activity included in the alert)
+ :vartype end_time_utc: str
+ :param entities: A list of entities related to the alert
+ :type entities: list[object]
+ :param extended_properties: A bag of fields which extends the alert
+ information
+ :type extended_properties: object
+ """
+
+ _validation = {
+ 'system_alert_id': {'readonly': True},
+ 'compromised_entity': {'readonly': True},
+ 'alert_type': {'readonly': True},
+ 'start_time_utc': {'readonly': True},
+ 'end_time_utc': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'system_alert_id': {'key': 'properties.systemAlertId', 'type': 'str'},
+ 'compromised_entity': {'key': 'properties.compromisedEntity', 'type': 'str'},
+ 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
+ 'start_time_utc': {'key': 'properties.startTimeUtc', 'type': 'str'},
+ 'end_time_utc': {'key': 'properties.endTimeUtc', 'type': 'str'},
+ 'entities': {'key': 'properties.entities', 'type': '[object]'},
+ 'extended_properties': {'key': 'properties.extendedProperties', 'type': 'object'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotAlert, self).__init__(**kwargs)
+ self.system_alert_id = None
+ self.compromised_entity = None
+ self.alert_type = None
+ self.start_time_utc = None
+ self.end_time_utc = None
+ self.entities = kwargs.get('entities', None)
+ self.extended_properties = kwargs.get('extended_properties', None)
+
+
+class IotAlertType(Resource):
+ """IoT alert type.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -3224,177 +3996,491 @@ class IoTSecurityAggregatedAlert(Model):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param tags: Resource tags
- :type tags: dict[str, str]
- :ivar alert_type: Name of the alert type.
- :vartype alert_type: str
- :ivar alert_display_name: Display name of the alert type.
+ :ivar alert_display_name: The display name of the alert
:vartype alert_display_name: str
- :ivar aggregated_date_utc: Date of detection.
- :vartype aggregated_date_utc: date
- :ivar vendor_name: Name of the organization that raised the alert.
- :vartype vendor_name: str
- :ivar reported_severity: Assessed alert severity. Possible values include:
+ :ivar severity: The severity of the alert. Possible values include:
'Informational', 'Low', 'Medium', 'High'
- :vartype reported_severity: str or
- ~azure.mgmt.security.models.ReportedSeverity
- :ivar remediation_steps: Recommended steps for remediation.
- :vartype remediation_steps: str
+ :vartype severity: str or ~azure.mgmt.security.models.AlertSeverity
:ivar description: Description of the suspected vulnerability and meaning.
:vartype description: str
- :ivar count: Number of alerts occurrences within the aggregated time
- window.
- :vartype count: int
- :ivar effected_resource_type: Azure resource ID of the resource that
- received the alerts.
- :vartype effected_resource_type: str
- :ivar system_source: The type of the alerted resource (Azure, Non-Azure).
- :vartype system_source: str
- :ivar action_taken: IoT Security solution alert response.
- :vartype action_taken: str
- :ivar log_analytics_query: Log analytics query for getting the list of
- affected devices/alerts.
- :vartype log_analytics_query: str
- :ivar top_devices_list: 10 devices with the highest number of occurrences
- of this alert type, on this day.
- :vartype top_devices_list:
- list[~azure.mgmt.security.models.IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]
+ :ivar provider_name: The name of the alert provider or internal partner
+ :vartype provider_name: str
+ :ivar product_name: The name of the product which published this alert
+ :vartype product_name: str
+ :ivar product_component_name: The name of a component inside the product
+ which generated the alert
+ :vartype product_component_name: str
+ :ivar vendor_name: The name of the vendor that raise the alert
+ :vartype vendor_name: str
+ :ivar intent: Kill chain related intent behind the alert. Could contain
+ multiple enum values (separated by commas). Possible values include:
+ 'Unknown', 'PreAttack', 'InitialAccess', 'Persistence',
+ 'PrivilegeEscalation', 'DefenseEvasion', 'CredentialAccess', 'Discovery',
+ 'LateralMovement', 'Execution', 'Collection', 'Exfiltration',
+ 'CommandAndControl', 'Impact', 'Probing', 'Exploitation'
+ :vartype intent: str or ~azure.mgmt.security.models.AlertIntent
+ :ivar remediation_steps: Manual action items to take to remediate the
+ alert
+ :vartype remediation_steps: list[str]
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'alert_type': {'readonly': True},
'alert_display_name': {'readonly': True},
- 'aggregated_date_utc': {'readonly': True},
+ 'severity': {'readonly': True},
+ 'description': {'readonly': True},
+ 'provider_name': {'readonly': True},
+ 'product_name': {'readonly': True},
+ 'product_component_name': {'readonly': True},
'vendor_name': {'readonly': True},
- 'reported_severity': {'readonly': True},
+ 'intent': {'readonly': True},
'remediation_steps': {'readonly': True},
- 'description': {'readonly': True},
- 'count': {'readonly': True},
- 'effected_resource_type': {'readonly': True},
- 'system_source': {'readonly': True},
- 'action_taken': {'readonly': True},
- 'log_analytics_query': {'readonly': True},
- 'top_devices_list': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'tags': {'key': 'tags', 'type': '{str}'},
- 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
'alert_display_name': {'key': 'properties.alertDisplayName', 'type': 'str'},
- 'aggregated_date_utc': {'key': 'properties.aggregatedDateUtc', 'type': 'date'},
- 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
- 'reported_severity': {'key': 'properties.reportedSeverity', 'type': 'str'},
- 'remediation_steps': {'key': 'properties.remediationSteps', 'type': 'str'},
+ 'severity': {'key': 'properties.severity', 'type': 'str'},
'description': {'key': 'properties.description', 'type': 'str'},
- 'count': {'key': 'properties.count', 'type': 'int'},
- 'effected_resource_type': {'key': 'properties.effectedResourceType', 'type': 'str'},
- 'system_source': {'key': 'properties.systemSource', 'type': 'str'},
- 'action_taken': {'key': 'properties.actionTaken', 'type': 'str'},
- 'log_analytics_query': {'key': 'properties.logAnalyticsQuery', 'type': 'str'},
- 'top_devices_list': {'key': 'properties.topDevicesList', 'type': '[IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]'},
+ 'provider_name': {'key': 'properties.providerName', 'type': 'str'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'product_component_name': {'key': 'properties.productComponentName', 'type': 'str'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'intent': {'key': 'properties.intent', 'type': 'str'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': '[str]'},
}
def __init__(self, **kwargs):
- super(IoTSecurityAggregatedAlert, self).__init__(**kwargs)
- self.id = None
- self.name = None
- self.type = None
- self.tags = kwargs.get('tags', None)
- self.alert_type = None
+ super(IotAlertType, self).__init__(**kwargs)
self.alert_display_name = None
- self.aggregated_date_utc = None
+ self.severity = None
+ self.description = None
+ self.provider_name = None
+ self.product_name = None
+ self.product_component_name = None
self.vendor_name = None
- self.reported_severity = None
+ self.intent = None
self.remediation_steps = None
- self.description = None
- self.count = None
- self.effected_resource_type = None
- self.system_source = None
- self.action_taken = None
- self.log_analytics_query = None
- self.top_devices_list = None
-class IoTSecurityAggregatedAlertPropertiesTopDevicesListItem(Model):
- """IoTSecurityAggregatedAlertPropertiesTopDevicesListItem.
+class IotAlertTypeList(Model):
+ """List of alert types.
+
+ :param value: List data
+ :type value: list[~azure.mgmt.security.models.IotAlertType]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IotAlertType]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotAlertTypeList, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
+
+
+class IotDefenderSettingsList(Model):
+ """List of IoT Defender settings.
Variables are only populated by the server, and will be ignored when
sending a request.
- :ivar device_id: Name of the device.
- :vartype device_id: str
- :ivar alerts_count: Number of alerts raised for this device.
- :vartype alerts_count: int
- :ivar last_occurrence: Most recent time this alert was raised for this
- device, on this day.
- :vartype last_occurrence: str
+ :ivar value: List data
+ :vartype value: list[~azure.mgmt.security.models.IotDefenderSettingsModel]
"""
_validation = {
- 'device_id': {'readonly': True},
- 'alerts_count': {'readonly': True},
- 'last_occurrence': {'readonly': True},
+ 'value': {'readonly': True},
}
_attribute_map = {
- 'device_id': {'key': 'deviceId', 'type': 'str'},
- 'alerts_count': {'key': 'alertsCount', 'type': 'int'},
- 'last_occurrence': {'key': 'lastOccurrence', 'type': 'str'},
+ 'value': {'key': 'value', 'type': '[IotDefenderSettingsModel]'},
}
def __init__(self, **kwargs):
- super(IoTSecurityAggregatedAlertPropertiesTopDevicesListItem, self).__init__(**kwargs)
- self.device_id = None
- self.alerts_count = None
- self.last_occurrence = None
+ super(IotDefenderSettingsList, self).__init__(**kwargs)
+ self.value = None
-class IoTSecurityAggregatedRecommendation(Model):
- """IoT Security solution recommendation information.
+class IotDefenderSettingsModel(Resource):
+ """IoT Defender settings.
Variables are only populated by the server, and will be ignored when
sending a request.
+ All required parameters must be populated in order to send to Azure.
+
:ivar id: Resource Id
:vartype id: str
:ivar name: Resource name
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param tags: Resource tags
- :type tags: dict[str, str]
- :param recommendation_name: Name of the recommendation.
- :type recommendation_name: str
- :ivar recommendation_display_name: Display name of the recommendation
- type.
- :vartype recommendation_display_name: str
- :ivar description: Description of the suspected vulnerability and meaning.
- :vartype description: str
- :ivar recommendation_type_id: Recommendation-type GUID.
- :vartype recommendation_type_id: str
- :ivar detected_by: Name of the organization that made the recommendation.
- :vartype detected_by: str
- :ivar remediation_steps: Recommended steps for remediation
- :vartype remediation_steps: str
- :ivar reported_severity: Assessed recommendation severity. Possible values
- include: 'Informational', 'Low', 'Medium', 'High'
- :vartype reported_severity: str or
- ~azure.mgmt.security.models.ReportedSeverity
- :ivar healthy_devices: Number of healthy devices within the IoT Security
- solution.
- :vartype healthy_devices: int
- :ivar unhealthy_device_count: Number of unhealthy devices within the IoT
- Security solution.
- :vartype unhealthy_device_count: int
- :ivar log_analytics_query: Log analytics query for getting the list of
- affected devices/alerts.
- :vartype log_analytics_query: str
+ :param device_quota: Required. Size of the device quota (as a opposed to a
+ Pay as You Go billing model). Value is required to be in multiples of
+ 1000.
+ :type device_quota: int
+ :param sentinel_workspace_resource_ids: Required. Sentinel Workspace
+ Resource Ids
+ :type sentinel_workspace_resource_ids: list[str]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'device_quota': {'required': True, 'minimum': 1000},
+ 'sentinel_workspace_resource_ids': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'device_quota': {'key': 'properties.deviceQuota', 'type': 'int'},
+ 'sentinel_workspace_resource_ids': {'key': 'properties.sentinelWorkspaceResourceIds', 'type': '[str]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotDefenderSettingsModel, self).__init__(**kwargs)
+ self.device_quota = kwargs.get('device_quota', None)
+ self.sentinel_workspace_resource_ids = kwargs.get('sentinel_workspace_resource_ids', None)
+
+
+class IotRecommendation(Resource):
+ """IoT recommendation.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar device_id: Identifier of the device being reported on
+ :vartype device_id: str
+ :ivar recommendation_type: The type name of the recommendation
+ :vartype recommendation_type: str
+ :ivar discovered_time_utc: The discovery time of the recommendation
+ :vartype discovered_time_utc: str
+ :param recommendation_additional_data: A bag of fields which extends the
+ recommendation information
+ :type recommendation_additional_data: object
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'device_id': {'readonly': True},
+ 'recommendation_type': {'readonly': True},
+ 'discovered_time_utc': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'device_id': {'key': 'properties.deviceId', 'type': 'str'},
+ 'recommendation_type': {'key': 'properties.recommendationType', 'type': 'str'},
+ 'discovered_time_utc': {'key': 'properties.discoveredTimeUtc', 'type': 'str'},
+ 'recommendation_additional_data': {'key': 'properties.recommendationAdditionalData', 'type': 'object'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotRecommendation, self).__init__(**kwargs)
+ self.device_id = None
+ self.recommendation_type = None
+ self.discovered_time_utc = None
+ self.recommendation_additional_data = kwargs.get('recommendation_additional_data', None)
+
+
+class IotRecommendationType(Resource):
+ """IoT recommendation type.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar recommendation_display_name: The display name of the recommendation
+ :vartype recommendation_display_name: str
+ :ivar severity: The severity of the recommendation. Possible values
+ include: 'Unknown', 'NotApplicable', 'Healthy', 'OffByPolicy', 'Low',
+ 'Medium', 'High'
+ :vartype severity: str or
+ ~azure.mgmt.security.models.RecommendationSeverity
+ :ivar description: Description of the suspected vulnerability and meaning.
+ :vartype description: str
+ :ivar product_name: The name of the product which published this
+ recommendation
+ :vartype product_name: str
+ :ivar product_component_name: The name of a component inside the product
+ which generated the recommendation
+ :vartype product_component_name: str
+ :ivar vendor_name: The name of the vendor that raised the recommendation
+ :vartype vendor_name: str
+ :ivar control: The name of the recommendation's control category
+ :vartype control: str
+ :ivar remediation_steps: Manual action items to take to resolve the
+ recommendation
+ :vartype remediation_steps: list[str]
+ :ivar data_source: The alert's data source
+ :vartype data_source: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'recommendation_display_name': {'readonly': True},
+ 'severity': {'readonly': True},
+ 'description': {'readonly': True},
+ 'product_name': {'readonly': True},
+ 'product_component_name': {'readonly': True},
+ 'vendor_name': {'readonly': True},
+ 'control': {'readonly': True},
+ 'remediation_steps': {'readonly': True},
+ 'data_source': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'recommendation_display_name': {'key': 'properties.recommendationDisplayName', 'type': 'str'},
+ 'severity': {'key': 'properties.severity', 'type': 'str'},
+ 'description': {'key': 'properties.description', 'type': 'str'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'product_component_name': {'key': 'properties.productComponentName', 'type': 'str'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'control': {'key': 'properties.control', 'type': 'str'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': '[str]'},
+ 'data_source': {'key': 'properties.dataSource', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotRecommendationType, self).__init__(**kwargs)
+ self.recommendation_display_name = None
+ self.severity = None
+ self.description = None
+ self.product_name = None
+ self.product_component_name = None
+ self.vendor_name = None
+ self.control = None
+ self.remediation_steps = None
+ self.data_source = None
+
+
+class IotRecommendationTypeList(Model):
+ """List of recommendation types.
+
+ :param value: List data
+ :type value: list[~azure.mgmt.security.models.IotRecommendationType]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IotRecommendationType]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotRecommendationTypeList, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
+
+
+class IoTSecurityAggregatedAlert(Model):
+ """Security Solution Aggregated Alert information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param tags: Resource tags
+ :type tags: dict[str, str]
+ :ivar alert_type: Name of the alert type.
+ :vartype alert_type: str
+ :ivar alert_display_name: Display name of the alert type.
+ :vartype alert_display_name: str
+ :ivar aggregated_date_utc: Date of detection.
+ :vartype aggregated_date_utc: date
+ :ivar vendor_name: Name of the organization that raised the alert.
+ :vartype vendor_name: str
+ :ivar reported_severity: Assessed alert severity. Possible values include:
+ 'Informational', 'Low', 'Medium', 'High'
+ :vartype reported_severity: str or
+ ~azure.mgmt.security.models.ReportedSeverity
+ :ivar remediation_steps: Recommended steps for remediation.
+ :vartype remediation_steps: str
+ :ivar description: Description of the suspected vulnerability and meaning.
+ :vartype description: str
+ :ivar count: Number of alerts occurrences within the aggregated time
+ window.
+ :vartype count: int
+ :ivar effected_resource_type: Azure resource ID of the resource that
+ received the alerts.
+ :vartype effected_resource_type: str
+ :ivar system_source: The type of the alerted resource (Azure, Non-Azure).
+ :vartype system_source: str
+ :ivar action_taken: IoT Security solution alert response.
+ :vartype action_taken: str
+ :ivar log_analytics_query: Log analytics query for getting the list of
+ affected devices/alerts.
+ :vartype log_analytics_query: str
+ :ivar top_devices_list: 10 devices with the highest number of occurrences
+ of this alert type, on this day.
+ :vartype top_devices_list:
+ list[~azure.mgmt.security.models.IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'alert_type': {'readonly': True},
+ 'alert_display_name': {'readonly': True},
+ 'aggregated_date_utc': {'readonly': True},
+ 'vendor_name': {'readonly': True},
+ 'reported_severity': {'readonly': True},
+ 'remediation_steps': {'readonly': True},
+ 'description': {'readonly': True},
+ 'count': {'readonly': True},
+ 'effected_resource_type': {'readonly': True},
+ 'system_source': {'readonly': True},
+ 'action_taken': {'readonly': True},
+ 'log_analytics_query': {'readonly': True},
+ 'top_devices_list': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
+ 'alert_display_name': {'key': 'properties.alertDisplayName', 'type': 'str'},
+ 'aggregated_date_utc': {'key': 'properties.aggregatedDateUtc', 'type': 'date'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'reported_severity': {'key': 'properties.reportedSeverity', 'type': 'str'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': 'str'},
+ 'description': {'key': 'properties.description', 'type': 'str'},
+ 'count': {'key': 'properties.count', 'type': 'int'},
+ 'effected_resource_type': {'key': 'properties.effectedResourceType', 'type': 'str'},
+ 'system_source': {'key': 'properties.systemSource', 'type': 'str'},
+ 'action_taken': {'key': 'properties.actionTaken', 'type': 'str'},
+ 'log_analytics_query': {'key': 'properties.logAnalyticsQuery', 'type': 'str'},
+ 'top_devices_list': {'key': 'properties.topDevicesList', 'type': '[IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IoTSecurityAggregatedAlert, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.tags = kwargs.get('tags', None)
+ self.alert_type = None
+ self.alert_display_name = None
+ self.aggregated_date_utc = None
+ self.vendor_name = None
+ self.reported_severity = None
+ self.remediation_steps = None
+ self.description = None
+ self.count = None
+ self.effected_resource_type = None
+ self.system_source = None
+ self.action_taken = None
+ self.log_analytics_query = None
+ self.top_devices_list = None
+
+
+class IoTSecurityAggregatedAlertPropertiesTopDevicesListItem(Model):
+ """IoTSecurityAggregatedAlertPropertiesTopDevicesListItem.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar device_id: Name of the device.
+ :vartype device_id: str
+ :ivar alerts_count: Number of alerts raised for this device.
+ :vartype alerts_count: int
+ :ivar last_occurrence: Most recent time this alert was raised for this
+ device, on this day.
+ :vartype last_occurrence: str
+ """
+
+ _validation = {
+ 'device_id': {'readonly': True},
+ 'alerts_count': {'readonly': True},
+ 'last_occurrence': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'device_id': {'key': 'deviceId', 'type': 'str'},
+ 'alerts_count': {'key': 'alertsCount', 'type': 'int'},
+ 'last_occurrence': {'key': 'lastOccurrence', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IoTSecurityAggregatedAlertPropertiesTopDevicesListItem, self).__init__(**kwargs)
+ self.device_id = None
+ self.alerts_count = None
+ self.last_occurrence = None
+
+
+class IoTSecurityAggregatedRecommendation(Model):
+ """IoT Security solution recommendation information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param tags: Resource tags
+ :type tags: dict[str, str]
+ :param recommendation_name: Name of the recommendation.
+ :type recommendation_name: str
+ :ivar recommendation_display_name: Display name of the recommendation
+ type.
+ :vartype recommendation_display_name: str
+ :ivar description: Description of the suspected vulnerability and meaning.
+ :vartype description: str
+ :ivar recommendation_type_id: Recommendation-type GUID.
+ :vartype recommendation_type_id: str
+ :ivar detected_by: Name of the organization that made the recommendation.
+ :vartype detected_by: str
+ :ivar remediation_steps: Recommended steps for remediation
+ :vartype remediation_steps: str
+ :ivar reported_severity: Assessed recommendation severity. Possible values
+ include: 'Informational', 'Low', 'Medium', 'High'
+ :vartype reported_severity: str or
+ ~azure.mgmt.security.models.ReportedSeverity
+ :ivar healthy_devices: Number of healthy devices within the IoT Security
+ solution.
+ :vartype healthy_devices: int
+ :ivar unhealthy_device_count: Number of unhealthy devices within the IoT
+ Security solution.
+ :vartype unhealthy_device_count: int
+ :ivar log_analytics_query: Log analytics query for getting the list of
+ affected devices/alerts.
+ :vartype log_analytics_query: str
"""
_validation = {
@@ -3761,6 +4847,63 @@ def __init__(self, **kwargs):
self.unmasked_ip_logging_status = kwargs.get('unmasked_ip_logging_status', "Disabled")
+class IotSensor(Resource):
+ """IoT sensor.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties: IoT sensor properties
+ :type properties: object
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'properties': {'key': 'properties', 'type': 'object'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotSensor, self).__init__(**kwargs)
+ self.properties = kwargs.get('properties', None)
+
+
+class IotSensorsList(Model):
+ """List of IoT sensors.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar value: List data
+ :vartype value: list[~azure.mgmt.security.models.IotSensor]
+ """
+
+ _validation = {
+ 'value': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IotSensor]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IotSensorsList, self).__init__(**kwargs)
+ self.value = None
+
+
class IoTSeverityMetrics(Model):
"""IoT Security solution analytics severity metrics.
@@ -3785,6 +4928,49 @@ def __init__(self, **kwargs):
self.low = kwargs.get('low', None)
+class IpAddress(Model):
+ """IP Address information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar v4_address: IPV4 address
+ :vartype v4_address: str
+ :ivar detection_time: Detection time of the ip address.
+ :vartype detection_time: datetime
+ :ivar subnet_cidr: Subnet Classless Inter-Domain Routing
+ :vartype subnet_cidr: str
+ :ivar fqdn: Fully qualified domain name
+ :vartype fqdn: str
+ :ivar fqdn_last_lookup_time: FQDN last lookup time.
+ :vartype fqdn_last_lookup_time: datetime
+ """
+
+ _validation = {
+ 'v4_address': {'readonly': True},
+ 'detection_time': {'readonly': True},
+ 'subnet_cidr': {'readonly': True},
+ 'fqdn': {'readonly': True},
+ 'fqdn_last_lookup_time': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'v4_address': {'key': 'v4Address', 'type': 'str'},
+ 'detection_time': {'key': 'detectionTime', 'type': 'iso-8601'},
+ 'subnet_cidr': {'key': 'subnetCidr', 'type': 'str'},
+ 'fqdn': {'key': 'fqdn', 'type': 'str'},
+ 'fqdn_last_lookup_time': {'key': 'fqdnLastLookupTime', 'type': 'iso-8601'},
+ }
+
+ def __init__(self, **kwargs):
+ super(IpAddress, self).__init__(**kwargs)
+ self.v4_address = None
+ self.detection_time = None
+ self.subnet_cidr = None
+ self.fqdn = None
+ self.fqdn_last_lookup_time = None
+
+
class JitNetworkAccessPolicy(Model):
"""JitNetworkAccessPolicy.
@@ -4197,31 +5383,121 @@ class LocalUserNotAllowed(AllowlistCustomAlertRule):
}
def __init__(self, **kwargs):
- super(LocalUserNotAllowed, self).__init__(**kwargs)
- self.rule_type = 'LocalUserNotAllowed'
+ super(LocalUserNotAllowed, self).__init__(**kwargs)
+ self.rule_type = 'LocalUserNotAllowed'
+
+
+class Location(Model):
+ """Describes an Azure resource with location.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ """
+
+ _validation = {
+ 'location': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'location': {'key': 'location', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Location, self).__init__(**kwargs)
+ self.location = None
+
+
+class LogAnalyticsIdentifier(ResourceIdentifier):
+ """Represents a Log Analytics workspace scope identifier.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param type: Required. Constant filled by server.
+ :type type: str
+ :ivar workspace_id: The LogAnalytics workspace id that stores this alert.
+ :vartype workspace_id: str
+ :ivar workspace_subscription_id: The azure subscription id for the
+ LogAnalytics workspace storing this alert.
+ :vartype workspace_subscription_id: str
+ :ivar workspace_resource_group: The azure resource group for the
+ LogAnalytics workspace storing this alert
+ :vartype workspace_resource_group: str
+ :ivar agent_id: (optional) The LogAnalytics agent id reporting the event
+ that this alert is based on.
+ :vartype agent_id: str
+ """
+
+ _validation = {
+ 'type': {'required': True},
+ 'workspace_id': {'readonly': True},
+ 'workspace_subscription_id': {'readonly': True, 'pattern': r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'},
+ 'workspace_resource_group': {'readonly': True},
+ 'agent_id': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ 'workspace_id': {'key': 'workspaceId', 'type': 'str'},
+ 'workspace_subscription_id': {'key': 'workspaceSubscriptionId', 'type': 'str'},
+ 'workspace_resource_group': {'key': 'workspaceResourceGroup', 'type': 'str'},
+ 'agent_id': {'key': 'agentId', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(LogAnalyticsIdentifier, self).__init__(**kwargs)
+ self.workspace_id = None
+ self.workspace_subscription_id = None
+ self.workspace_resource_group = None
+ self.agent_id = None
+ self.type = 'LogAnalytics'
-class Location(Model):
- """Describes an Azure resource with location.
+class MacAddress(Model):
+ """MAC Address information.
Variables are only populated by the server, and will be ignored when
sending a request.
- :ivar location: Location where the resource is stored
- :vartype location: str
+ :ivar address: MAC address
+ :vartype address: str
+ :ivar detection_time: Detection time of the mac address.
+ :vartype detection_time: datetime
+ :ivar significance: Indicates whether this is the primary secondary MAC
+ address of the device. Possible values include: 'Primary', 'Secondary'
+ :vartype significance: str or ~azure.mgmt.security.models.MacSignificance
+ :ivar relation_to_ip_status: Indicates whether the relation of the mac to
+ the ip address is certain or a guess. Possible values include: 'Guess',
+ 'Certain'
+ :vartype relation_to_ip_status: str or
+ ~azure.mgmt.security.models.RelationToIpStatus
"""
_validation = {
- 'location': {'readonly': True},
+ 'address': {'readonly': True},
+ 'detection_time': {'readonly': True},
+ 'significance': {'readonly': True},
+ 'relation_to_ip_status': {'readonly': True},
}
_attribute_map = {
- 'location': {'key': 'location', 'type': 'str'},
+ 'address': {'key': 'address', 'type': 'str'},
+ 'detection_time': {'key': 'detectionTime', 'type': 'iso-8601'},
+ 'significance': {'key': 'significance', 'type': 'str'},
+ 'relation_to_ip_status': {'key': 'relationToIpStatus', 'type': 'str'},
}
def __init__(self, **kwargs):
- super(Location, self).__init__(**kwargs)
- self.location = None
+ super(MacAddress, self).__init__(**kwargs)
+ self.address = None
+ self.detection_time = None
+ self.significance = None
+ self.relation_to_ip_status = None
class MqttC2DMessagesNotInAllowedRange(TimeWindowCustomAlertRule):
@@ -4372,9 +5648,100 @@ def __init__(self, **kwargs):
self.rule_type = 'MqttD2CMessagesNotInAllowedRange'
+class NetworkInterface(Model):
+ """Network interface.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :param ip_address:
+ :type ip_address: ~azure.mgmt.security.models.IpAddress
+ :param mac_address:
+ :type mac_address: ~azure.mgmt.security.models.MacAddress
+ :ivar vlans: List of device vlans.
+ :vartype vlans: list[str]
+ """
+
+ _validation = {
+ 'vlans': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'ip_address': {'key': 'ipAddress', 'type': 'IpAddress'},
+ 'mac_address': {'key': 'macAddress', 'type': 'MacAddress'},
+ 'vlans': {'key': 'vlans', 'type': '[str]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(NetworkInterface, self).__init__(**kwargs)
+ self.ip_address = kwargs.get('ip_address', None)
+ self.mac_address = kwargs.get('mac_address', None)
+ self.vlans = None
+
+
+class OnPremiseIotSensor(Resource):
+ """On-premise IoT sensor.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties: On-premise IoT sensor properties
+ :type properties: object
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'properties': {'key': 'properties', 'type': 'object'},
+ }
+
+ def __init__(self, **kwargs):
+ super(OnPremiseIotSensor, self).__init__(**kwargs)
+ self.properties = kwargs.get('properties', None)
+
+
+class OnPremiseIotSensorsList(Model):
+ """List of on-premise IoT sensors.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar value: List data
+ :vartype value: list[~azure.mgmt.security.models.OnPremiseIotSensor]
+ """
+
+ _validation = {
+ 'value': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[OnPremiseIotSensor]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(OnPremiseIotSensorsList, self).__init__(**kwargs)
+ self.value = None
+
+
class OnPremiseResourceDetails(ResourceDetails):
"""Details of the On Premise resource that was assessed.
+ You probably want to use the sub-classes and not this class directly. Known
+ sub-classes are: OnPremiseSqlResourceDetails
+
All required parameters must be populated in order to send to Azure.
:param source: Required. Constant filled by server.
@@ -4407,6 +5774,10 @@ class OnPremiseResourceDetails(ResourceDetails):
'machine_name': {'key': 'machineName', 'type': 'str'},
}
+ _subtype_map = {
+ 'source': {'OnPremiseSql': 'OnPremiseSqlResourceDetails'}
+ }
+
def __init__(self, **kwargs):
super(OnPremiseResourceDetails, self).__init__(**kwargs)
self.workspace_id = kwargs.get('workspace_id', None)
@@ -4416,6 +5787,57 @@ def __init__(self, **kwargs):
self.source = 'OnPremise'
+class OnPremiseSqlResourceDetails(OnPremiseResourceDetails):
+ """Details of the On Premise Sql resource that was assessed.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param source: Required. Constant filled by server.
+ :type source: str
+ :param workspace_id: Required. Azure resource Id of the workspace the
+ machine is attached to
+ :type workspace_id: str
+ :param vmuuid: Required. The unique Id of the machine
+ :type vmuuid: str
+ :param source_computer_id: Required. The oms agent Id installed on the
+ machine
+ :type source_computer_id: str
+ :param machine_name: Required. The name of the machine
+ :type machine_name: str
+ :param server_name: Required. The Sql server name installed on the machine
+ :type server_name: str
+ :param database_name: Required. The Sql database name installed on the
+ machine
+ :type database_name: str
+ """
+
+ _validation = {
+ 'source': {'required': True},
+ 'workspace_id': {'required': True},
+ 'vmuuid': {'required': True},
+ 'source_computer_id': {'required': True},
+ 'machine_name': {'required': True},
+ 'server_name': {'required': True},
+ 'database_name': {'required': True},
+ }
+
+ _attribute_map = {
+ 'source': {'key': 'source', 'type': 'str'},
+ 'workspace_id': {'key': 'workspaceId', 'type': 'str'},
+ 'vmuuid': {'key': 'vmuuid', 'type': 'str'},
+ 'source_computer_id': {'key': 'sourceComputerId', 'type': 'str'},
+ 'machine_name': {'key': 'machineName', 'type': 'str'},
+ 'server_name': {'key': 'serverName', 'type': 'str'},
+ 'database_name': {'key': 'databaseName', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(OnPremiseSqlResourceDetails, self).__init__(**kwargs)
+ self.server_name = kwargs.get('server_name', None)
+ self.database_name = kwargs.get('database_name', None)
+ self.source = 'OnPremiseSql'
+
+
class Operation(Model):
"""Possible operation in the REST API of Microsoft.Security.
@@ -4472,24 +5894,299 @@ class OperationDisplay(Model):
}
_attribute_map = {
- 'provider': {'key': 'provider', 'type': 'str'},
- 'resource': {'key': 'resource', 'type': 'str'},
- 'operation': {'key': 'operation', 'type': 'str'},
- 'description': {'key': 'description', 'type': 'str'},
+ 'provider': {'key': 'provider', 'type': 'str'},
+ 'resource': {'key': 'resource', 'type': 'str'},
+ 'operation': {'key': 'operation', 'type': 'str'},
+ 'description': {'key': 'description', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(OperationDisplay, self).__init__(**kwargs)
+ self.provider = None
+ self.resource = None
+ self.operation = None
+ self.description = None
+
+
+class PackageDownloadInfo(Model):
+ """Information on a specific package download.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar version: Version number
+ :vartype version: str
+ :param link: Download link
+ :type link: str
+ :ivar version_kind: Kind of the version. Possible values include:
+ 'Latest', 'Previous', 'Preview'
+ :vartype version_kind: str or ~azure.mgmt.security.models.VersionKind
+ """
+
+ _validation = {
+ 'version': {'readonly': True},
+ 'version_kind': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'version': {'key': 'version', 'type': 'str'},
+ 'link': {'key': 'link', 'type': 'str'},
+ 'version_kind': {'key': 'versionKind', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloadInfo, self).__init__(**kwargs)
+ self.version = None
+ self.link = kwargs.get('link', None)
+ self.version_kind = None
+
+
+class PackageDownloads(Model):
+ """Information about package downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar sensor: Contains all Sensor binary downloads
+ :vartype sensor: ~azure.mgmt.security.models.PackageDownloadsSensor
+ :ivar central_manager: All downloads for Central Manager
+ :vartype central_manager:
+ ~azure.mgmt.security.models.PackageDownloadsCentralManager
+ :ivar threat_intelligence: All downloads for threat intelligence
+ :vartype threat_intelligence:
+ ~azure.mgmt.security.models.PackageDownloadsThreatIntelligence
+ """
+
+ _validation = {
+ 'sensor': {'readonly': True},
+ 'central_manager': {'readonly': True},
+ 'threat_intelligence': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'sensor': {'key': 'sensor', 'type': 'PackageDownloadsSensor'},
+ 'central_manager': {'key': 'centralManager', 'type': 'PackageDownloadsCentralManager'},
+ 'threat_intelligence': {'key': 'threatIntelligence', 'type': 'PackageDownloadsThreatIntelligence'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloads, self).__init__(**kwargs)
+ self.sensor = None
+ self.central_manager = None
+ self.threat_intelligence = None
+
+
+class PackageDownloadsCentralManager(Model):
+ """All downloads for Central Manager.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar full: Contains full package downloads
+ :vartype full:
+ ~azure.mgmt.security.models.PackageDownloadsCentralManagerFull
+ :ivar upgrade: Central Manager upgrade package downloads (on existing
+ installations)
+ :vartype upgrade: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'full': {'readonly': True},
+ 'upgrade': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'full': {'key': 'full', 'type': 'PackageDownloadsCentralManagerFull'},
+ 'upgrade': {'key': 'upgrade', 'type': '[PackageDownloadInfo]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloadsCentralManager, self).__init__(**kwargs)
+ self.full = None
+ self.upgrade = None
+
+
+class PackageDownloadsCentralManagerFull(Model):
+ """Contains full package downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar iso: Contains all ISO full versions of the Central Manager
+ :vartype iso: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar ovf: Contains all OVF (virtual machine) full versions of the Central
+ Manager
+ :vartype ovf:
+ ~azure.mgmt.security.models.PackageDownloadsCentralManagerFullOvf
+ """
+
+ _validation = {
+ 'iso': {'readonly': True},
+ 'ovf': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'iso': {'key': 'iso', 'type': '[PackageDownloadInfo]'},
+ 'ovf': {'key': 'ovf', 'type': 'PackageDownloadsCentralManagerFullOvf'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloadsCentralManagerFull, self).__init__(**kwargs)
+ self.iso = None
+ self.ovf = None
+
+
+class PackageDownloadsCentralManagerFullOvf(Model):
+ """Contains all OVF (virtual machine) full versions of the Central Manager.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar enterprise: The Enterprise package type
+ :vartype enterprise: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar enterprise_high_availability: The EnterpriseHighAvailability package
+ type
+ :vartype enterprise_high_availability:
+ list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar medium: The Medium package type
+ :vartype medium: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar medium_high_availability: The MediumHighAvailability package type
+ :vartype medium_high_availability:
+ list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'enterprise': {'readonly': True},
+ 'enterprise_high_availability': {'readonly': True},
+ 'medium': {'readonly': True},
+ 'medium_high_availability': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'enterprise': {'key': 'enterprise', 'type': '[PackageDownloadInfo]'},
+ 'enterprise_high_availability': {'key': 'enterpriseHighAvailability', 'type': '[PackageDownloadInfo]'},
+ 'medium': {'key': 'medium', 'type': '[PackageDownloadInfo]'},
+ 'medium_high_availability': {'key': 'mediumHighAvailability', 'type': '[PackageDownloadInfo]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloadsCentralManagerFullOvf, self).__init__(**kwargs)
+ self.enterprise = None
+ self.enterprise_high_availability = None
+ self.medium = None
+ self.medium_high_availability = None
+
+
+class PackageDownloadsSensor(Model):
+ """Contains all Sensor binary downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar full: Contains full package downloads
+ :vartype full: ~azure.mgmt.security.models.PackageDownloadsSensorFull
+ :param upgrade: Sensor upgrade package downloads (on existing
+ installations)
+ :type upgrade: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'full': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'full': {'key': 'full', 'type': 'PackageDownloadsSensorFull'},
+ 'upgrade': {'key': 'upgrade', 'type': '[PackageDownloadInfo]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloadsSensor, self).__init__(**kwargs)
+ self.full = None
+ self.upgrade = kwargs.get('upgrade', None)
+
+
+class PackageDownloadsSensorFull(Model):
+ """Contains full package downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar iso: Contains all ISO full versions for the sensor
+ :vartype iso: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :param ovf: Contains all OVF (virtual machine) full versions for the
+ sensor
+ :type ovf: ~azure.mgmt.security.models.PackageDownloadsSensorFullOvf
+ """
+
+ _validation = {
+ 'iso': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'iso': {'key': 'iso', 'type': '[PackageDownloadInfo]'},
+ 'ovf': {'key': 'ovf', 'type': 'PackageDownloadsSensorFullOvf'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloadsSensorFull, self).__init__(**kwargs)
+ self.iso = None
+ self.ovf = kwargs.get('ovf', None)
+
+
+class PackageDownloadsSensorFullOvf(Model):
+ """Contains all OVF (virtual machine) full versions for the sensor.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar enterprise: Enterprise package type
+ :vartype enterprise: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar medium: Medium package type
+ :vartype medium: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar line: Line package type
+ :vartype line: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'enterprise': {'readonly': True},
+ 'medium': {'readonly': True},
+ 'line': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'enterprise': {'key': 'enterprise', 'type': '[PackageDownloadInfo]'},
+ 'medium': {'key': 'medium', 'type': '[PackageDownloadInfo]'},
+ 'line': {'key': 'line', 'type': '[PackageDownloadInfo]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(PackageDownloadsSensorFullOvf, self).__init__(**kwargs)
+ self.enterprise = None
+ self.medium = None
+ self.line = None
+
+
+class PackageDownloadsThreatIntelligence(Model):
+ """All downloads for threat intelligence.
+
+ :param link: Download link
+ :type link: str
+ """
+
+ _attribute_map = {
+ 'link': {'key': 'link', 'type': 'str'},
}
def __init__(self, **kwargs):
- super(OperationDisplay, self).__init__(**kwargs)
- self.provider = None
- self.resource = None
- self.operation = None
- self.description = None
+ super(PackageDownloadsThreatIntelligence, self).__init__(**kwargs)
+ self.link = kwargs.get('link', None)
class PathRecommendation(Model):
"""Represents a path that is recommended to be allowed and its properties.
- :param path: The full path to whitelist
+ :param path: The full path of the file, or an identifier of the
+ application
:type path: str
:param action: Possible values include: 'Recommended', 'Add', 'Remove'
:type action: str or ~azure.mgmt.security.models.enum
@@ -4499,7 +6196,7 @@ class PathRecommendation(Model):
:type type: str or ~azure.mgmt.security.models.enum
:param publisher_info:
:type publisher_info: ~azure.mgmt.security.models.PublisherInfo
- :param common: Whether the path is commonly run on the machine
+ :param common: Whether the application is commonly run on the machine
:type common: bool
:param user_sids:
:type user_sids: list[str]
@@ -4687,6 +6384,54 @@ def __init__(self, **kwargs):
self.executable = kwargs.get('executable', None)
+class Protocol1(Model):
+ """Protocol data.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar name: Protocol name
+ :vartype name: str
+ :param identifiers: list of protocol identifiers.
+ :type identifiers: str
+ """
+
+ _validation = {
+ 'name': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'identifiers': {'key': 'identifiers', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Protocol1, self).__init__(**kwargs)
+ self.name = None
+ self.identifiers = kwargs.get('identifiers', None)
+
+
+class ProxyServerProperties(Model):
+ """For a non-Azure machine that is not connected directly to the internet,
+ specify a proxy server that the non-Azure machine can use.
+
+ :param ip: Proxy server IP
+ :type ip: str
+ :param port: Proxy server port
+ :type port: str
+ """
+
+ _attribute_map = {
+ 'ip': {'key': 'ip', 'type': 'str'},
+ 'port': {'key': 'port', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(ProxyServerProperties, self).__init__(**kwargs)
+ self.ip = kwargs.get('ip', None)
+ self.port = kwargs.get('port', None)
+
+
class PublisherInfo(Model):
"""Represents the publisher information of a process/rule.
@@ -4720,6 +6465,30 @@ def __init__(self, **kwargs):
self.version = kwargs.get('version', None)
+class QueryCheck(Model):
+ """The rule query details.
+
+ :param query: The rule query.
+ :type query: str
+ :param expected_result: Expected result.
+ :type expected_result: list[list[str]]
+ :param column_names: Column names of expected result.
+ :type column_names: list[str]
+ """
+
+ _attribute_map = {
+ 'query': {'key': 'query', 'type': 'str'},
+ 'expected_result': {'key': 'expectedResult', 'type': '[[str]]'},
+ 'column_names': {'key': 'columnNames', 'type': '[str]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(QueryCheck, self).__init__(**kwargs)
+ self.query = kwargs.get('query', None)
+ self.expected_result = kwargs.get('expected_result', None)
+ self.column_names = kwargs.get('column_names', None)
+
+
class QueuePurgesNotInAllowedRange(TimeWindowCustomAlertRule):
"""Number of device queue purges is not in allowed range.
@@ -4926,34 +6695,375 @@ class RegulatoryComplianceControl(Resource):
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'description': {'readonly': True},
- 'passed_assessments': {'readonly': True},
- 'failed_assessments': {'readonly': True},
- 'skipped_assessments': {'readonly': True},
+ 'description': {'readonly': True},
+ 'passed_assessments': {'readonly': True},
+ 'failed_assessments': {'readonly': True},
+ 'skipped_assessments': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'description': {'key': 'properties.description', 'type': 'str'},
+ 'state': {'key': 'properties.state', 'type': 'str'},
+ 'passed_assessments': {'key': 'properties.passedAssessments', 'type': 'int'},
+ 'failed_assessments': {'key': 'properties.failedAssessments', 'type': 'int'},
+ 'skipped_assessments': {'key': 'properties.skippedAssessments', 'type': 'int'},
+ }
+
+ def __init__(self, **kwargs):
+ super(RegulatoryComplianceControl, self).__init__(**kwargs)
+ self.description = None
+ self.state = kwargs.get('state', None)
+ self.passed_assessments = None
+ self.failed_assessments = None
+ self.skipped_assessments = None
+
+
+class RegulatoryComplianceStandard(Resource):
+ """Regulatory compliance standard details and state.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param state: Aggregative state based on the standard's supported controls
+ states. Possible values include: 'Passed', 'Failed', 'Skipped',
+ 'Unsupported'
+ :type state: str or ~azure.mgmt.security.models.State
+ :ivar passed_controls: The number of supported regulatory compliance
+ controls of the given standard with a passed state
+ :vartype passed_controls: int
+ :ivar failed_controls: The number of supported regulatory compliance
+ controls of the given standard with a failed state
+ :vartype failed_controls: int
+ :ivar skipped_controls: The number of supported regulatory compliance
+ controls of the given standard with a skipped state
+ :vartype skipped_controls: int
+ :ivar unsupported_controls: The number of regulatory compliance controls
+ of the given standard which are unsupported by automated assessments
+ :vartype unsupported_controls: int
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'passed_controls': {'readonly': True},
+ 'failed_controls': {'readonly': True},
+ 'skipped_controls': {'readonly': True},
+ 'unsupported_controls': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'state': {'key': 'properties.state', 'type': 'str'},
+ 'passed_controls': {'key': 'properties.passedControls', 'type': 'int'},
+ 'failed_controls': {'key': 'properties.failedControls', 'type': 'int'},
+ 'skipped_controls': {'key': 'properties.skippedControls', 'type': 'int'},
+ 'unsupported_controls': {'key': 'properties.unsupportedControls', 'type': 'int'},
+ }
+
+ def __init__(self, **kwargs):
+ super(RegulatoryComplianceStandard, self).__init__(**kwargs)
+ self.state = kwargs.get('state', None)
+ self.passed_controls = None
+ self.failed_controls = None
+ self.skipped_controls = None
+ self.unsupported_controls = None
+
+
+class Remediation(Model):
+ """Remediation details.
+
+ :param description: Remediation description.
+ :type description: str
+ :param scripts: Remediation script.
+ :type scripts: list[str]
+ :param automated: Is remediation automated.
+ :type automated: bool
+ :param portal_link: Optional link to remediate in Azure Portal.
+ :type portal_link: str
+ """
+
+ _attribute_map = {
+ 'description': {'key': 'description', 'type': 'str'},
+ 'scripts': {'key': 'scripts', 'type': '[str]'},
+ 'automated': {'key': 'automated', 'type': 'bool'},
+ 'portal_link': {'key': 'portalLink', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Remediation, self).__init__(**kwargs)
+ self.description = kwargs.get('description', None)
+ self.scripts = kwargs.get('scripts', None)
+ self.automated = kwargs.get('automated', None)
+ self.portal_link = kwargs.get('portal_link', None)
+
+
+class Rule(Model):
+ """Describes remote addresses that is recommended to communicate with the
+ Azure resource on some (Protocol, Port, Direction). All other remote
+ addresses are recommended to be blocked.
+
+ :param name: The name of the rule
+ :type name: str
+ :param direction: The rule's direction. Possible values include:
+ 'Inbound', 'Outbound'
+ :type direction: str or ~azure.mgmt.security.models.Direction
+ :param destination_port: The rule's destination port
+ :type destination_port: int
+ :param protocols: The rule's transport protocols
+ :type protocols: list[str or
+ ~azure.mgmt.security.models.TransportProtocol]
+ :param ip_addresses: The remote IP addresses that should be able to
+ communicate with the Azure resource on the rule's destination port and
+ protocol
+ :type ip_addresses: list[str]
+ """
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'direction': {'key': 'direction', 'type': 'str'},
+ 'destination_port': {'key': 'destinationPort', 'type': 'int'},
+ 'protocols': {'key': 'protocols', 'type': '[str]'},
+ 'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Rule, self).__init__(**kwargs)
+ self.name = kwargs.get('name', None)
+ self.direction = kwargs.get('direction', None)
+ self.destination_port = kwargs.get('destination_port', None)
+ self.protocols = kwargs.get('protocols', None)
+ self.ip_addresses = kwargs.get('ip_addresses', None)
+
+
+class RuleResults(Resource):
+ """Rule results.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties:
+ :type properties: ~azure.mgmt.security.models.RuleResultsProperties
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'properties': {'key': 'properties', 'type': 'RuleResultsProperties'},
+ }
+
+ def __init__(self, **kwargs):
+ super(RuleResults, self).__init__(**kwargs)
+ self.properties = kwargs.get('properties', None)
+
+
+class RuleResultsInput(Model):
+ """Rule results input.
+
+ :param latest_scan: Take results from latest scan.
+ :type latest_scan: bool
+ :param results: Expected results to be inserted into the baseline.
+ Leave this field empty it LatestScan == true.
+ :type results: list[list[str]]
+ """
+
+ _attribute_map = {
+ 'latest_scan': {'key': 'latestScan', 'type': 'bool'},
+ 'results': {'key': 'results', 'type': '[[str]]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(RuleResultsInput, self).__init__(**kwargs)
+ self.latest_scan = kwargs.get('latest_scan', None)
+ self.results = kwargs.get('results', None)
+
+
+class RuleResultsProperties(Model):
+ """Rule results properties.
+
+ :param results: Expected results in the baseline.
+ :type results: list[list[str]]
+ """
+
+ _attribute_map = {
+ 'results': {'key': 'results', 'type': '[[str]]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(RuleResultsProperties, self).__init__(**kwargs)
+ self.results = kwargs.get('results', None)
+
+
+class RulesResults(Model):
+ """A list of rules results.
+
+ :param value: List of rule results.
+ :type value: list[~azure.mgmt.security.models.RuleResults]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[RuleResults]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(RulesResults, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
+
+
+class RulesResultsInput(Model):
+ """Rules results input.
+
+ :param latest_scan: Take results from latest scan.
+ :type latest_scan: bool
+ :param results: Expected results to be inserted into the baseline.
+ Leave this field empty it LatestScan == true.
+ :type results: dict[str, list[list[str]]]
+ """
+
+ _attribute_map = {
+ 'latest_scan': {'key': 'latestScan', 'type': 'bool'},
+ 'results': {'key': 'results', 'type': '{[[str]]}'},
+ }
+
+ def __init__(self, **kwargs):
+ super(RulesResultsInput, self).__init__(**kwargs)
+ self.latest_scan = kwargs.get('latest_scan', None)
+ self.results = kwargs.get('results', None)
+
+
+class Scan(Resource):
+ """A vulnerability assessment scan record.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties:
+ :type properties: ~azure.mgmt.security.models.ScanProperties
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'description': {'key': 'properties.description', 'type': 'str'},
- 'state': {'key': 'properties.state', 'type': 'str'},
- 'passed_assessments': {'key': 'properties.passedAssessments', 'type': 'int'},
- 'failed_assessments': {'key': 'properties.failedAssessments', 'type': 'int'},
- 'skipped_assessments': {'key': 'properties.skippedAssessments', 'type': 'int'},
+ 'properties': {'key': 'properties', 'type': 'ScanProperties'},
}
def __init__(self, **kwargs):
- super(RegulatoryComplianceControl, self).__init__(**kwargs)
- self.description = None
- self.state = kwargs.get('state', None)
- self.passed_assessments = None
- self.failed_assessments = None
- self.skipped_assessments = None
+ super(Scan, self).__init__(**kwargs)
+ self.properties = kwargs.get('properties', None)
-class RegulatoryComplianceStandard(Resource):
- """Regulatory compliance standard details and state.
+class ScanProperties(Model):
+ """A vulnerability assessment scan record properties.
+
+ :param trigger_type: Possible values include: 'OnDemand', 'Recurring'
+ :type trigger_type: str or ~azure.mgmt.security.models.ScanTriggerType
+ :param state: Possible values include: 'Failed', 'FailedToRun',
+ 'InProgress', 'Passed'
+ :type state: str or ~azure.mgmt.security.models.ScanState
+ :param server: The server name.
+ :type server: str
+ :param database: The database name.
+ :type database: str
+ :param sql_version: The SQL version.
+ :type sql_version: str
+ :param start_time: The scan start time (UTC).
+ :type start_time: datetime
+ :param end_time: Scan results are valid until end time (UTC).
+ :type end_time: datetime
+ :param high_severity_failed_rules_count: The number of failed rules with
+ high severity.
+ :type high_severity_failed_rules_count: int
+ :param medium_severity_failed_rules_count: The number of failed rules with
+ medium severity.
+ :type medium_severity_failed_rules_count: int
+ :param low_severity_failed_rules_count: The number of failed rules with
+ low severity.
+ :type low_severity_failed_rules_count: int
+ :param total_passed_rules_count: The number of total passed rules.
+ :type total_passed_rules_count: int
+ :param total_failed_rules_count: The number of total failed rules.
+ :type total_failed_rules_count: int
+ :param total_rules_count: The number of total rules assessed.
+ :type total_rules_count: int
+ :param is_baseline_applied: Baseline created for this database, and has
+ one or more rules.
+ :type is_baseline_applied: bool
+ """
+
+ _attribute_map = {
+ 'trigger_type': {'key': 'triggerType', 'type': 'str'},
+ 'state': {'key': 'state', 'type': 'str'},
+ 'server': {'key': 'server', 'type': 'str'},
+ 'database': {'key': 'database', 'type': 'str'},
+ 'sql_version': {'key': 'sqlVersion', 'type': 'str'},
+ 'start_time': {'key': 'startTime', 'type': 'iso-8601'},
+ 'end_time': {'key': 'endTime', 'type': 'iso-8601'},
+ 'high_severity_failed_rules_count': {'key': 'highSeverityFailedRulesCount', 'type': 'int'},
+ 'medium_severity_failed_rules_count': {'key': 'mediumSeverityFailedRulesCount', 'type': 'int'},
+ 'low_severity_failed_rules_count': {'key': 'lowSeverityFailedRulesCount', 'type': 'int'},
+ 'total_passed_rules_count': {'key': 'totalPassedRulesCount', 'type': 'int'},
+ 'total_failed_rules_count': {'key': 'totalFailedRulesCount', 'type': 'int'},
+ 'total_rules_count': {'key': 'totalRulesCount', 'type': 'int'},
+ 'is_baseline_applied': {'key': 'isBaselineApplied', 'type': 'bool'},
+ }
+
+ def __init__(self, **kwargs):
+ super(ScanProperties, self).__init__(**kwargs)
+ self.trigger_type = kwargs.get('trigger_type', None)
+ self.state = kwargs.get('state', None)
+ self.server = kwargs.get('server', None)
+ self.database = kwargs.get('database', None)
+ self.sql_version = kwargs.get('sql_version', None)
+ self.start_time = kwargs.get('start_time', None)
+ self.end_time = kwargs.get('end_time', None)
+ self.high_severity_failed_rules_count = kwargs.get('high_severity_failed_rules_count', None)
+ self.medium_severity_failed_rules_count = kwargs.get('medium_severity_failed_rules_count', None)
+ self.low_severity_failed_rules_count = kwargs.get('low_severity_failed_rules_count', None)
+ self.total_passed_rules_count = kwargs.get('total_passed_rules_count', None)
+ self.total_failed_rules_count = kwargs.get('total_failed_rules_count', None)
+ self.total_rules_count = kwargs.get('total_rules_count', None)
+ self.is_baseline_applied = kwargs.get('is_baseline_applied', None)
+
+
+class ScanResult(Resource):
+ """A vulnerability assessment scan result for a single rule.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -4964,90 +7074,101 @@ class RegulatoryComplianceStandard(Resource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param state: Aggregative state based on the standard's supported controls
- states. Possible values include: 'Passed', 'Failed', 'Skipped',
- 'Unsupported'
- :type state: str or ~azure.mgmt.security.models.State
- :ivar passed_controls: The number of supported regulatory compliance
- controls of the given standard with a passed state
- :vartype passed_controls: int
- :ivar failed_controls: The number of supported regulatory compliance
- controls of the given standard with a failed state
- :vartype failed_controls: int
- :ivar skipped_controls: The number of supported regulatory compliance
- controls of the given standard with a skipped state
- :vartype skipped_controls: int
- :ivar unsupported_controls: The number of regulatory compliance controls
- of the given standard which are unsupported by automated assessments
- :vartype unsupported_controls: int
+ :param properties:
+ :type properties: ~azure.mgmt.security.models.ScanResultProperties
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'passed_controls': {'readonly': True},
- 'failed_controls': {'readonly': True},
- 'skipped_controls': {'readonly': True},
- 'unsupported_controls': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'state': {'key': 'properties.state', 'type': 'str'},
- 'passed_controls': {'key': 'properties.passedControls', 'type': 'int'},
- 'failed_controls': {'key': 'properties.failedControls', 'type': 'int'},
- 'skipped_controls': {'key': 'properties.skippedControls', 'type': 'int'},
- 'unsupported_controls': {'key': 'properties.unsupportedControls', 'type': 'int'},
+ 'properties': {'key': 'properties', 'type': 'ScanResultProperties'},
}
def __init__(self, **kwargs):
- super(RegulatoryComplianceStandard, self).__init__(**kwargs)
- self.state = kwargs.get('state', None)
- self.passed_controls = None
- self.failed_controls = None
- self.skipped_controls = None
- self.unsupported_controls = None
+ super(ScanResult, self).__init__(**kwargs)
+ self.properties = kwargs.get('properties', None)
-class Rule(Model):
- """Describes remote addresses that is recommended to communicate with the
- Azure resource on some (Protocol, Port, Direction). All other remote
- addresses are recommended to be blocked.
+class ScanResultProperties(Model):
+ """A vulnerability assessment scan result properties for a single rule.
- :param name: The name of the rule
- :type name: str
- :param direction: The rule's direction. Possible values include:
- 'Inbound', 'Outbound'
- :type direction: str or ~azure.mgmt.security.models.Direction
- :param destination_port: The rule's destination port
- :type destination_port: int
- :param protocols: The rule's transport protocols
- :type protocols: list[str or
- ~azure.mgmt.security.models.TransportProtocol]
- :param ip_addresses: The remote IP addresses that should be able to
- communicate with the Azure resource on the rule's destination port and
- protocol
- :type ip_addresses: list[str]
+ :param rule_id: The rule Id.
+ :type rule_id: str
+ :param status: Possible values include: 'NonFinding', 'Finding',
+ 'InternalError'
+ :type status: str or ~azure.mgmt.security.models.RuleStatus
+ :param is_trimmed: Indicated whether the results specified here are
+ trimmed.
+ :type is_trimmed: bool
+ :param query_results: The results of the query that was run.
+ :type query_results: list[list[str]]
+ :param remediation:
+ :type remediation: ~azure.mgmt.security.models.Remediation
+ :param baseline_adjusted_result:
+ :type baseline_adjusted_result:
+ ~azure.mgmt.security.models.BaselineAdjustedResult
+ :param rule_metadata:
+ :type rule_metadata: ~azure.mgmt.security.models.VaRule
"""
_attribute_map = {
- 'name': {'key': 'name', 'type': 'str'},
- 'direction': {'key': 'direction', 'type': 'str'},
- 'destination_port': {'key': 'destinationPort', 'type': 'int'},
- 'protocols': {'key': 'protocols', 'type': '[str]'},
- 'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'},
+ 'rule_id': {'key': 'ruleId', 'type': 'str'},
+ 'status': {'key': 'status', 'type': 'str'},
+ 'is_trimmed': {'key': 'isTrimmed', 'type': 'bool'},
+ 'query_results': {'key': 'queryResults', 'type': '[[str]]'},
+ 'remediation': {'key': 'remediation', 'type': 'Remediation'},
+ 'baseline_adjusted_result': {'key': 'baselineAdjustedResult', 'type': 'BaselineAdjustedResult'},
+ 'rule_metadata': {'key': 'ruleMetadata', 'type': 'VaRule'},
}
def __init__(self, **kwargs):
- super(Rule, self).__init__(**kwargs)
- self.name = kwargs.get('name', None)
- self.direction = kwargs.get('direction', None)
- self.destination_port = kwargs.get('destination_port', None)
- self.protocols = kwargs.get('protocols', None)
- self.ip_addresses = kwargs.get('ip_addresses', None)
+ super(ScanResultProperties, self).__init__(**kwargs)
+ self.rule_id = kwargs.get('rule_id', None)
+ self.status = kwargs.get('status', None)
+ self.is_trimmed = kwargs.get('is_trimmed', None)
+ self.query_results = kwargs.get('query_results', None)
+ self.remediation = kwargs.get('remediation', None)
+ self.baseline_adjusted_result = kwargs.get('baseline_adjusted_result', None)
+ self.rule_metadata = kwargs.get('rule_metadata', None)
+
+
+class ScanResults(Model):
+ """A list of vulnerability assessment scan results.
+
+ :param value: List of vulnerability assessment scan results.
+ :type value: list[~azure.mgmt.security.models.ScanResult]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[ScanResult]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(ScanResults, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
+
+
+class Scans(Model):
+ """A list of vulnerability assessment scan records.
+
+ :param value: List of vulnerability assessment scan records.
+ :type value: list[~azure.mgmt.security.models.Scan]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[Scan]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(Scans, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
class ScopeElement(Model):
@@ -5165,6 +7286,9 @@ class SecureScoreControlDetails(Resource):
:vartype max: int
:ivar current: Current score
:vartype current: float
+ :ivar percentage: Ratio of the current score divided by the maximum.
+ Rounded to 4 digits after the decimal point
+ :vartype percentage: float
:ivar healthy_resource_count: Number of healthy resources in the control
:vartype healthy_resource_count: int
:ivar unhealthy_resource_count: Number of unhealthy resources in the
@@ -5173,6 +7297,10 @@ class SecureScoreControlDetails(Resource):
:ivar not_applicable_resource_count: Number of not applicable resources in
the control
:vartype not_applicable_resource_count: int
+ :ivar weight: The relative weight for this specific control in each of
+ your subscriptions. Used when calculating an aggregated score for this
+ control across all of your subscriptions.
+ :vartype weight: long
:param definition:
:type definition:
~azure.mgmt.security.models.SecureScoreControlDefinitionItem
@@ -5185,9 +7313,11 @@ class SecureScoreControlDetails(Resource):
'display_name': {'readonly': True},
'max': {'readonly': True, 'minimum': 0},
'current': {'readonly': True, 'minimum': 0},
+ 'percentage': {'readonly': True, 'maximum': 1, 'minimum': 0},
'healthy_resource_count': {'readonly': True},
'unhealthy_resource_count': {'readonly': True},
'not_applicable_resource_count': {'readonly': True},
+ 'weight': {'readonly': True, 'minimum': 0},
}
_attribute_map = {
@@ -5197,9 +7327,11 @@ class SecureScoreControlDetails(Resource):
'display_name': {'key': 'properties.displayName', 'type': 'str'},
'max': {'key': 'properties.score.max', 'type': 'int'},
'current': {'key': 'properties.score.current', 'type': 'float'},
+ 'percentage': {'key': 'properties.score.percentage', 'type': 'float'},
'healthy_resource_count': {'key': 'properties.healthyResourceCount', 'type': 'int'},
'unhealthy_resource_count': {'key': 'properties.unhealthyResourceCount', 'type': 'int'},
'not_applicable_resource_count': {'key': 'properties.notApplicableResourceCount', 'type': 'int'},
+ 'weight': {'key': 'properties.weight', 'type': 'long'},
'definition': {'key': 'properties.definition', 'type': 'SecureScoreControlDefinitionItem'},
}
@@ -5208,9 +7340,11 @@ def __init__(self, **kwargs):
self.display_name = None
self.max = None
self.current = None
+ self.percentage = None
self.healthy_resource_count = None
self.unhealthy_resource_count = None
self.not_applicable_resource_count = None
+ self.weight = None
self.definition = kwargs.get('definition', None)
@@ -5225,22 +7359,28 @@ class SecureScoreControlScore(Model):
:ivar current: Actual score for the control = (achieved points / total
points) * max score. if total points is zeroed, the return number is 0.00
:vartype current: float
+ :ivar percentage: Ratio of the current score divided by the maximum.
+ Rounded to 4 digits after the decimal point
+ :vartype percentage: float
"""
_validation = {
'max': {'readonly': True, 'maximum': 10, 'minimum': 0},
'current': {'readonly': True, 'maximum': 10, 'minimum': 0},
+ 'percentage': {'readonly': True, 'maximum': 1, 'minimum': 0},
}
_attribute_map = {
'max': {'key': 'max', 'type': 'int'},
'current': {'key': 'current', 'type': 'float'},
+ 'percentage': {'key': 'percentage', 'type': 'float'},
}
def __init__(self, **kwargs):
super(SecureScoreControlScore, self).__init__(**kwargs)
self.max = None
self.current = None
+ self.percentage = None
class SecureScoreItem(Resource):
@@ -5261,6 +7401,12 @@ class SecureScoreItem(Resource):
:vartype max: int
:ivar current: Current score
:vartype current: float
+ :ivar percentage: Ratio of the current score divided by the maximum.
+ Rounded to 4 digits after the decimal point
+ :vartype percentage: float
+ :ivar weight: The relative weight for each subscription. Used when
+ calculating an aggregated secure score for multiple subscriptions.
+ :vartype weight: long
"""
_validation = {
@@ -5270,6 +7416,8 @@ class SecureScoreItem(Resource):
'display_name': {'readonly': True},
'max': {'readonly': True, 'minimum': 0},
'current': {'readonly': True, 'minimum': 0},
+ 'percentage': {'readonly': True, 'maximum': 1, 'minimum': 0},
+ 'weight': {'readonly': True, 'minimum': 0},
}
_attribute_map = {
@@ -5279,6 +7427,8 @@ class SecureScoreItem(Resource):
'display_name': {'key': 'properties.displayName', 'type': 'str'},
'max': {'key': 'properties.score.max', 'type': 'int'},
'current': {'key': 'properties.score.current', 'type': 'float'},
+ 'percentage': {'key': 'properties.score.percentage', 'type': 'float'},
+ 'weight': {'key': 'properties.weight', 'type': 'long'},
}
def __init__(self, **kwargs):
@@ -5286,6 +7436,8 @@ def __init__(self, **kwargs):
self.display_name = None
self.max = None
self.current = None
+ self.percentage = None
+ self.weight = None
class SecurityAssessment(Resource):
@@ -5648,6 +7800,164 @@ def __init__(self, **kwargs):
self.alerts_to_admins = kwargs.get('alerts_to_admins', None)
+class SecuritySolution(Model):
+ """SecuritySolution.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ :param security_family: Required. The security family of the security
+ solution. Possible values include: 'Waf', 'Ngfw', 'SaasWaf', 'Va'
+ :type security_family: str or ~azure.mgmt.security.models.SecurityFamily
+ :param provisioning_state: Required. The security family provisioning
+ State. Possible values include: 'Succeeded', 'Failed', 'Updating'
+ :type provisioning_state: str or
+ ~azure.mgmt.security.models.ProvisioningState
+ :param template: Required. The security solutions' template
+ :type template: str
+ :param protection_status: Required. The security solutions' status
+ :type protection_status: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'readonly': True},
+ 'security_family': {'required': True},
+ 'provisioning_state': {'required': True},
+ 'template': {'required': True},
+ 'protection_status': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'security_family': {'key': 'properties.securityFamily', 'type': 'str'},
+ 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
+ 'template': {'key': 'properties.template', 'type': 'str'},
+ 'protection_status': {'key': 'properties.protectionStatus', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(SecuritySolution, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.location = None
+ self.security_family = kwargs.get('security_family', None)
+ self.provisioning_state = kwargs.get('provisioning_state', None)
+ self.template = kwargs.get('template', None)
+ self.protection_status = kwargs.get('protection_status', None)
+
+
+class SecuritySolutionsReferenceData(Model):
+ """SecuritySolutionsReferenceData.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ :param security_family: Required. The security family of the security
+ solution. Possible values include: 'Waf', 'Ngfw', 'SaasWaf', 'Va'
+ :type security_family: str or ~azure.mgmt.security.models.SecurityFamily
+ :param alert_vendor_name: Required. The security solutions' vendor name
+ :type alert_vendor_name: str
+ :param package_info_url: Required. The security solutions' package info
+ url
+ :type package_info_url: str
+ :param product_name: Required. The security solutions' product name
+ :type product_name: str
+ :param publisher: Required. The security solutions' publisher
+ :type publisher: str
+ :param publisher_display_name: Required. The security solutions' publisher
+ display name
+ :type publisher_display_name: str
+ :param template: Required. The security solutions' template
+ :type template: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'readonly': True},
+ 'security_family': {'required': True},
+ 'alert_vendor_name': {'required': True},
+ 'package_info_url': {'required': True},
+ 'product_name': {'required': True},
+ 'publisher': {'required': True},
+ 'publisher_display_name': {'required': True},
+ 'template': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'security_family': {'key': 'properties.securityFamily', 'type': 'str'},
+ 'alert_vendor_name': {'key': 'properties.alertVendorName', 'type': 'str'},
+ 'package_info_url': {'key': 'properties.packageInfoUrl', 'type': 'str'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'publisher': {'key': 'properties.publisher', 'type': 'str'},
+ 'publisher_display_name': {'key': 'properties.publisherDisplayName', 'type': 'str'},
+ 'template': {'key': 'properties.template', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(SecuritySolutionsReferenceData, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.location = None
+ self.security_family = kwargs.get('security_family', None)
+ self.alert_vendor_name = kwargs.get('alert_vendor_name', None)
+ self.package_info_url = kwargs.get('package_info_url', None)
+ self.product_name = kwargs.get('product_name', None)
+ self.publisher = kwargs.get('publisher', None)
+ self.publisher_display_name = kwargs.get('publisher_display_name', None)
+ self.template = kwargs.get('template', None)
+
+
+class SecuritySolutionsReferenceDataList(Model):
+ """SecuritySolutionsReferenceDataList.
+
+ :param value:
+ :type value:
+ list[~azure.mgmt.security.models.SecuritySolutionsReferenceData]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[SecuritySolutionsReferenceData]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(SecuritySolutionsReferenceDataList, self).__init__(**kwargs)
+ self.value = kwargs.get('value', None)
+
+
class SecuritySubAssessment(Resource):
"""Security sub-assessment on a resource.
@@ -5959,6 +8269,27 @@ def __init__(self, **kwargs):
self.assessed_resource_type = 'ServerVulnerabilityAssessment'
+class ServicePrincipalProperties(Model):
+ """Details of the service principal.
+
+ :param application_id: Application ID of service principal.
+ :type application_id: str
+ :param secret: A secret string that the application uses to prove its
+ identity, also can be referred to as application password (write only).
+ :type secret: str
+ """
+
+ _attribute_map = {
+ 'application_id': {'key': 'applicationId', 'type': 'str'},
+ 'secret': {'key': 'secret', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs):
+ super(ServicePrincipalProperties, self).__init__(**kwargs)
+ self.application_id = kwargs.get('application_id', None)
+ self.secret = kwargs.get('secret', None)
+
+
class SqlServerVulnerabilityProperties(AdditionalData):
"""Details of the resource that was assessed.
@@ -6430,6 +8761,57 @@ def __init__(self, **kwargs):
self.recommendation_action = kwargs.get('recommendation_action', None)
+class VaRule(Model):
+ """vulnerability assessment rule metadata details.
+
+ :param rule_id: The rule Id.
+ :type rule_id: str
+ :param severity: Possible values include: 'High', 'Medium', 'Low',
+ 'Informational', 'Obsolete'
+ :type severity: str or ~azure.mgmt.security.models.RuleSeverity
+ :param category: The rule category.
+ :type category: str
+ :param rule_type: Possible values include: 'Binary', 'BaselineExpected',
+ 'PositiveList', 'NegativeList'
+ :type rule_type: str or ~azure.mgmt.security.models.RuleType
+ :param title: The rule title.
+ :type title: str
+ :param description: The rule description.
+ :type description: str
+ :param rationale: The rule rationale.
+ :type rationale: str
+ :param query_check:
+ :type query_check: ~azure.mgmt.security.models.QueryCheck
+ :param benchmark_references: The benchmark references.
+ :type benchmark_references:
+ list[~azure.mgmt.security.models.BenchmarkReference]
+ """
+
+ _attribute_map = {
+ 'rule_id': {'key': 'ruleId', 'type': 'str'},
+ 'severity': {'key': 'severity', 'type': 'str'},
+ 'category': {'key': 'category', 'type': 'str'},
+ 'rule_type': {'key': 'ruleType', 'type': 'str'},
+ 'title': {'key': 'title', 'type': 'str'},
+ 'description': {'key': 'description', 'type': 'str'},
+ 'rationale': {'key': 'rationale', 'type': 'str'},
+ 'query_check': {'key': 'queryCheck', 'type': 'QueryCheck'},
+ 'benchmark_references': {'key': 'benchmarkReferences', 'type': '[BenchmarkReference]'},
+ }
+
+ def __init__(self, **kwargs):
+ super(VaRule, self).__init__(**kwargs)
+ self.rule_id = kwargs.get('rule_id', None)
+ self.severity = kwargs.get('severity', None)
+ self.category = kwargs.get('category', None)
+ self.rule_type = kwargs.get('rule_type', None)
+ self.title = kwargs.get('title', None)
+ self.description = kwargs.get('description', None)
+ self.rationale = kwargs.get('rationale', None)
+ self.query_check = kwargs.get('query_check', None)
+ self.benchmark_references = kwargs.get('benchmark_references', None)
+
+
class VendorReference(Model):
"""Vendor reference.
@@ -6459,7 +8841,7 @@ def __init__(self, **kwargs):
class VmRecommendation(Model):
- """Represents a machine that is part of a VM/server group.
+ """Represents a machine that is part of a machine group.
:param configuration_status: Possible values include: 'Configured',
'NotConfigured', 'InProgress', 'Failed', 'NoStatus'
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models_py3.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models_py3.py
index 0a92ed90bee4..06dec1248c51 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models_py3.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_models_py3.py
@@ -381,6 +381,129 @@ def __init__(self, *, is_enabled: bool, min_threshold: int, max_threshold: int,
self.rule_type = 'ActiveConnectionsNotInAllowedRange'
+class AdaptiveApplicationControlGroup(Model):
+ """AdaptiveApplicationControlGroup.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ :param enforcement_mode: Possible values include: 'Audit', 'Enforce',
+ 'None'
+ :type enforcement_mode: str or ~azure.mgmt.security.models.enum
+ :param protection_mode:
+ :type protection_mode: ~azure.mgmt.security.models.ProtectionMode
+ :ivar configuration_status: Possible values include: 'Configured',
+ 'NotConfigured', 'InProgress', 'Failed', 'NoStatus'
+ :vartype configuration_status: str or ~azure.mgmt.security.models.enum
+ :ivar recommendation_status: Possible values include: 'Recommended',
+ 'NotRecommended', 'NotAvailable', 'NoStatus'
+ :vartype recommendation_status: str or ~azure.mgmt.security.models.enum
+ :ivar issues:
+ :vartype issues:
+ list[~azure.mgmt.security.models.AdaptiveApplicationControlIssueSummary]
+ :ivar source_system: Possible values include: 'Azure_AppLocker',
+ 'Azure_AuditD', 'NonAzure_AppLocker', 'NonAzure_AuditD', 'None'
+ :vartype source_system: str or ~azure.mgmt.security.models.enum
+ :param vm_recommendations:
+ :type vm_recommendations:
+ list[~azure.mgmt.security.models.VmRecommendation]
+ :param path_recommendations:
+ :type path_recommendations:
+ list[~azure.mgmt.security.models.PathRecommendation]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'readonly': True},
+ 'configuration_status': {'readonly': True},
+ 'recommendation_status': {'readonly': True},
+ 'issues': {'readonly': True},
+ 'source_system': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'enforcement_mode': {'key': 'properties.enforcementMode', 'type': 'str'},
+ 'protection_mode': {'key': 'properties.protectionMode', 'type': 'ProtectionMode'},
+ 'configuration_status': {'key': 'properties.configurationStatus', 'type': 'str'},
+ 'recommendation_status': {'key': 'properties.recommendationStatus', 'type': 'str'},
+ 'issues': {'key': 'properties.issues', 'type': '[AdaptiveApplicationControlIssueSummary]'},
+ 'source_system': {'key': 'properties.sourceSystem', 'type': 'str'},
+ 'vm_recommendations': {'key': 'properties.vmRecommendations', 'type': '[VmRecommendation]'},
+ 'path_recommendations': {'key': 'properties.pathRecommendations', 'type': '[PathRecommendation]'},
+ }
+
+ def __init__(self, *, enforcement_mode=None, protection_mode=None, vm_recommendations=None, path_recommendations=None, **kwargs) -> None:
+ super(AdaptiveApplicationControlGroup, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.location = None
+ self.enforcement_mode = enforcement_mode
+ self.protection_mode = protection_mode
+ self.configuration_status = None
+ self.recommendation_status = None
+ self.issues = None
+ self.source_system = None
+ self.vm_recommendations = vm_recommendations
+ self.path_recommendations = path_recommendations
+
+
+class AdaptiveApplicationControlGroups(Model):
+ """Represents a list of machine groups and set of rules that are recommended
+ by Azure Security Center to be allowed.
+
+ :param value:
+ :type value:
+ list[~azure.mgmt.security.models.AdaptiveApplicationControlGroup]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[AdaptiveApplicationControlGroup]'},
+ }
+
+ def __init__(self, *, value=None, **kwargs) -> None:
+ super(AdaptiveApplicationControlGroups, self).__init__(**kwargs)
+ self.value = value
+
+
+class AdaptiveApplicationControlIssueSummary(Model):
+ """Represents a summary of the alerts of the machine group.
+
+ :param issue: Possible values include: 'ViolationsAudited',
+ 'ViolationsBlocked', 'MsiAndScriptViolationsAudited',
+ 'MsiAndScriptViolationsBlocked', 'ExecutableViolationsAudited',
+ 'RulesViolatedManually'
+ :type issue: str or ~azure.mgmt.security.models.enum
+ :param number_of_vms: The number of machines in the group that have this
+ alert
+ :type number_of_vms: float
+ """
+
+ _attribute_map = {
+ 'issue': {'key': 'issue', 'type': 'str'},
+ 'number_of_vms': {'key': 'numberOfVms', 'type': 'float'},
+ }
+
+ def __init__(self, *, issue=None, number_of_vms: float=None, **kwargs) -> None:
+ super(AdaptiveApplicationControlIssueSummary, self).__init__(**kwargs)
+ self.issue = issue
+ self.number_of_vms = number_of_vms
+
+
class Resource(Model):
"""Describes an Azure resource.
@@ -567,173 +690,164 @@ class Alert(Resource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar state: State of the alert (Active, Dismissed etc.)
- :vartype state: str
- :ivar reported_time_utc: The time the incident was reported to
- Microsoft.Security in UTC
- :vartype reported_time_utc: datetime
- :ivar vendor_name: Name of the vendor that discovered the incident
- :vartype vendor_name: str
- :ivar alert_name: Name of the alert type
- :vartype alert_name: str
- :ivar alert_display_name: Display name of the alert type
+ :ivar alert_type: Unique identifier for the detection logic (all alert
+ instances from the same detection logic will have the same alertType).
+ :vartype alert_type: str
+ :ivar system_alert_id: Unique identifier for the alert.
+ :vartype system_alert_id: str
+ :ivar product_component_name: The name of Azure Security Center pricing
+ tier which powering this alert. Learn more:
+ https://docs.microsoft.com/en-us/azure/security-center/security-center-pricing
+ :vartype product_component_name: str
+ :ivar alert_display_name: The display name of the alert.
:vartype alert_display_name: str
- :ivar detected_time_utc: The time the incident was detected by the vendor
- :vartype detected_time_utc: datetime
- :ivar description: Description of the incident and what it means
+ :ivar description: Description of the suspicious activity that was
+ detected.
:vartype description: str
- :ivar remediation_steps: Recommended steps to reradiate the incident
- :vartype remediation_steps: str
- :ivar action_taken: The action that was taken as a response to the alert
- (Active, Blocked etc.)
- :vartype action_taken: str
- :ivar reported_severity: Estimated severity of this alert. Possible values
- include: 'Informational', 'Low', 'Medium', 'High'
- :vartype reported_severity: str or
- ~azure.mgmt.security.models.ReportedSeverity
- :ivar compromised_entity: The entity that the incident happened on
- :vartype compromised_entity: str
- :ivar associated_resource: Azure resource ID of the associated resource
- :vartype associated_resource: str
- :param extended_properties:
- :type extended_properties: dict[str, object]
- :ivar system_source: The type of the alerted resource (Azure, Non-Azure)
- :vartype system_source: str
- :ivar can_be_investigated: Whether this alert can be investigated with
- Azure Security Center
- :vartype can_be_investigated: bool
- :ivar is_incident: Whether this alert is for incident type or not
- (otherwise - single alert)
+ :ivar severity: The risk level of the threat that was detected. Learn
+ more:
+ https://docs.microsoft.com/en-us/azure/security-center/security-center-alerts-overview#how-are-alerts-classified.
+ Possible values include: 'Informational', 'Low', 'Medium', 'High'
+ :vartype severity: str or ~azure.mgmt.security.models.AlertSeverity
+ :ivar intent: The kill chain related intent behind the alert. For list of
+ supported values, and explanations of Azure Security Center's supported
+ kill chain intents. Possible values include: 'Unknown', 'PreAttack',
+ 'InitialAccess', 'Persistence', 'PrivilegeEscalation', 'DefenseEvasion',
+ 'CredentialAccess', 'Discovery', 'LateralMovement', 'Execution',
+ 'Collection', 'Exfiltration', 'CommandAndControl', 'Impact', 'Probing',
+ 'Exploitation'
+ :vartype intent: str or ~azure.mgmt.security.models.Intent
+ :ivar start_time_utc: The UTC time of the first event or activity included
+ in the alert in ISO8601 format.
+ :vartype start_time_utc: datetime
+ :ivar end_time_utc: The UTC time of the last event or activity included in
+ the alert in ISO8601 format.
+ :vartype end_time_utc: datetime
+ :ivar resource_identifiers: The resource identifiers that can be used to
+ direct the alert to the right product exposure group (tenant, workspace,
+ subscription etc.). There can be multiple identifiers of different type
+ per alert.
+ :vartype resource_identifiers:
+ list[~azure.mgmt.security.models.ResourceIdentifier]
+ :ivar remediation_steps: Manual action items to take to remediate the
+ alert.
+ :vartype remediation_steps: list[str]
+ :ivar vendor_name: The name of the vendor that raises the alert.
+ :vartype vendor_name: str
+ :ivar status: The life cycle status of the alert. Possible values include:
+ 'Active', 'Resolved', 'Dismissed'
+ :vartype status: str or ~azure.mgmt.security.models.AlertStatus
+ :ivar extended_links: Links related to the alert
+ :vartype extended_links: list[dict[str, str]]
+ :ivar alert_uri: A direct link to the alert page in Azure Portal.
+ :vartype alert_uri: str
+ :ivar time_generated_utc: The UTC time the alert was generated in ISO8601
+ format.
+ :vartype time_generated_utc: datetime
+ :ivar product_name: The name of the product which published this alert
+ (Azure Security Center, Azure ATP, Microsoft Defender ATP, O365 ATP, MCAS,
+ and so on).
+ :vartype product_name: str
+ :ivar processing_end_time_utc: The UTC processing end time of the alert in
+ ISO8601 format.
+ :vartype processing_end_time_utc: datetime
+ :ivar entities: A list of entities related to the alert.
+ :vartype entities: list[~azure.mgmt.security.models.AlertEntity]
+ :ivar is_incident: This field determines whether the alert is an incident
+ (a compound grouping of several alerts) or a single alert.
:vartype is_incident: bool
- :param entities: objects that are related to this alerts
- :type entities: list[~azure.mgmt.security.models.AlertEntity]
- :ivar confidence_score: level of confidence we have on the alert
- :vartype confidence_score: float
- :param confidence_reasons: reasons the alert got the confidenceScore value
- :type confidence_reasons:
- list[~azure.mgmt.security.models.AlertConfidenceReason]
- :ivar subscription_id: Azure subscription ID of the resource that had the
- security alert or the subscription ID of the workspace that this resource
- reports to
- :vartype subscription_id: str
- :ivar instance_id: Instance ID of the alert.
- :vartype instance_id: str
- :ivar workspace_arm_id: Azure resource ID of the workspace that the alert
- was reported to.
- :vartype workspace_arm_id: str
- :ivar correlation_key: Alerts with the same CorrelationKey will be grouped
- together in Ibiza.
+ :ivar correlation_key: Key for corelating related alerts. Alerts with the
+ same correlation key considered to be related.
:vartype correlation_key: str
+ :param extended_properties: Custom properties for the alert.
+ :type extended_properties: dict[str, str]
+ :ivar compromised_entity: The display name of the resource most related to
+ this alert.
+ :vartype compromised_entity: str
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'state': {'readonly': True},
- 'reported_time_utc': {'readonly': True},
- 'vendor_name': {'readonly': True},
- 'alert_name': {'readonly': True},
+ 'alert_type': {'readonly': True},
+ 'system_alert_id': {'readonly': True},
+ 'product_component_name': {'readonly': True},
'alert_display_name': {'readonly': True},
- 'detected_time_utc': {'readonly': True},
'description': {'readonly': True},
+ 'severity': {'readonly': True},
+ 'intent': {'readonly': True},
+ 'start_time_utc': {'readonly': True},
+ 'end_time_utc': {'readonly': True},
+ 'resource_identifiers': {'readonly': True},
'remediation_steps': {'readonly': True},
- 'action_taken': {'readonly': True},
- 'reported_severity': {'readonly': True},
- 'compromised_entity': {'readonly': True},
- 'associated_resource': {'readonly': True},
- 'system_source': {'readonly': True},
- 'can_be_investigated': {'readonly': True},
+ 'vendor_name': {'readonly': True},
+ 'status': {'readonly': True},
+ 'extended_links': {'readonly': True},
+ 'alert_uri': {'readonly': True},
+ 'time_generated_utc': {'readonly': True},
+ 'product_name': {'readonly': True},
+ 'processing_end_time_utc': {'readonly': True},
+ 'entities': {'readonly': True},
'is_incident': {'readonly': True},
- 'confidence_score': {'readonly': True, 'maximum': 1, 'minimum': 0},
- 'subscription_id': {'readonly': True},
- 'instance_id': {'readonly': True},
- 'workspace_arm_id': {'readonly': True},
'correlation_key': {'readonly': True},
+ 'compromised_entity': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'state': {'key': 'properties.state', 'type': 'str'},
- 'reported_time_utc': {'key': 'properties.reportedTimeUtc', 'type': 'iso-8601'},
- 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
- 'alert_name': {'key': 'properties.alertName', 'type': 'str'},
+ 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
+ 'system_alert_id': {'key': 'properties.systemAlertId', 'type': 'str'},
+ 'product_component_name': {'key': 'properties.productComponentName', 'type': 'str'},
'alert_display_name': {'key': 'properties.alertDisplayName', 'type': 'str'},
- 'detected_time_utc': {'key': 'properties.detectedTimeUtc', 'type': 'iso-8601'},
'description': {'key': 'properties.description', 'type': 'str'},
- 'remediation_steps': {'key': 'properties.remediationSteps', 'type': 'str'},
- 'action_taken': {'key': 'properties.actionTaken', 'type': 'str'},
- 'reported_severity': {'key': 'properties.reportedSeverity', 'type': 'str'},
- 'compromised_entity': {'key': 'properties.compromisedEntity', 'type': 'str'},
- 'associated_resource': {'key': 'properties.associatedResource', 'type': 'str'},
- 'extended_properties': {'key': 'properties.extendedProperties', 'type': '{object}'},
- 'system_source': {'key': 'properties.systemSource', 'type': 'str'},
- 'can_be_investigated': {'key': 'properties.canBeInvestigated', 'type': 'bool'},
- 'is_incident': {'key': 'properties.isIncident', 'type': 'bool'},
+ 'severity': {'key': 'properties.severity', 'type': 'str'},
+ 'intent': {'key': 'properties.intent', 'type': 'str'},
+ 'start_time_utc': {'key': 'properties.startTimeUtc', 'type': 'iso-8601'},
+ 'end_time_utc': {'key': 'properties.endTimeUtc', 'type': 'iso-8601'},
+ 'resource_identifiers': {'key': 'properties.resourceIdentifiers', 'type': '[ResourceIdentifier]'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': '[str]'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'status': {'key': 'properties.status', 'type': 'str'},
+ 'extended_links': {'key': 'properties.extendedLinks', 'type': '[{str}]'},
+ 'alert_uri': {'key': 'properties.alertUri', 'type': 'str'},
+ 'time_generated_utc': {'key': 'properties.timeGeneratedUtc', 'type': 'iso-8601'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'processing_end_time_utc': {'key': 'properties.processingEndTimeUtc', 'type': 'iso-8601'},
'entities': {'key': 'properties.entities', 'type': '[AlertEntity]'},
- 'confidence_score': {'key': 'properties.confidenceScore', 'type': 'float'},
- 'confidence_reasons': {'key': 'properties.confidenceReasons', 'type': '[AlertConfidenceReason]'},
- 'subscription_id': {'key': 'properties.subscriptionId', 'type': 'str'},
- 'instance_id': {'key': 'properties.instanceId', 'type': 'str'},
- 'workspace_arm_id': {'key': 'properties.workspaceArmId', 'type': 'str'},
+ 'is_incident': {'key': 'properties.isIncident', 'type': 'bool'},
'correlation_key': {'key': 'properties.correlationKey', 'type': 'str'},
+ 'extended_properties': {'key': 'properties.extendedProperties', 'type': '{str}'},
+ 'compromised_entity': {'key': 'properties.compromisedEntity', 'type': 'str'},
}
- def __init__(self, *, extended_properties=None, entities=None, confidence_reasons=None, **kwargs) -> None:
+ def __init__(self, *, extended_properties=None, **kwargs) -> None:
super(Alert, self).__init__(**kwargs)
- self.state = None
- self.reported_time_utc = None
- self.vendor_name = None
- self.alert_name = None
+ self.alert_type = None
+ self.system_alert_id = None
+ self.product_component_name = None
self.alert_display_name = None
- self.detected_time_utc = None
self.description = None
+ self.severity = None
+ self.intent = None
+ self.start_time_utc = None
+ self.end_time_utc = None
+ self.resource_identifiers = None
self.remediation_steps = None
- self.action_taken = None
- self.reported_severity = None
- self.compromised_entity = None
- self.associated_resource = None
- self.extended_properties = extended_properties
- self.system_source = None
- self.can_be_investigated = None
+ self.vendor_name = None
+ self.status = None
+ self.extended_links = None
+ self.alert_uri = None
+ self.time_generated_utc = None
+ self.product_name = None
+ self.processing_end_time_utc = None
+ self.entities = None
self.is_incident = None
- self.entities = entities
- self.confidence_score = None
- self.confidence_reasons = confidence_reasons
- self.subscription_id = None
- self.instance_id = None
- self.workspace_arm_id = None
self.correlation_key = None
-
-
-class AlertConfidenceReason(Model):
- """Factors that increase our confidence that the alert is a true positive.
-
- Variables are only populated by the server, and will be ignored when
- sending a request.
-
- :ivar type: Type of confidence factor
- :vartype type: str
- :ivar reason: description of the confidence reason
- :vartype reason: str
- """
-
- _validation = {
- 'type': {'readonly': True},
- 'reason': {'readonly': True},
- }
-
- _attribute_map = {
- 'type': {'key': 'type', 'type': 'str'},
- 'reason': {'key': 'reason', 'type': 'str'},
- }
-
- def __init__(self, **kwargs) -> None:
- super(AlertConfidenceReason, self).__init__(**kwargs)
- self.type = None
- self.reason = None
+ self.extended_properties = extended_properties
+ self.compromised_entity = None
class AlertEntity(Model):
@@ -1139,8 +1253,8 @@ def __init__(self, *, is_enabled: bool, min_threshold: int, max_threshold: int,
self.rule_type = 'AmqpD2CMessagesNotInAllowedRange'
-class AppWhitelistingGroup(Model):
- """AppWhitelistingGroup.
+class AscLocation(Resource):
+ """The ASC location of the subscription is in the "name" field.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -1151,175 +1265,53 @@ class AppWhitelistingGroup(Model):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar location: Location where the resource is stored
- :vartype location: str
- :param enforcement_mode: Possible values include: 'Audit', 'Enforce',
- 'None'
- :type enforcement_mode: str or ~azure.mgmt.security.models.enum
- :param protection_mode:
- :type protection_mode: ~azure.mgmt.security.models.ProtectionMode
- :ivar configuration_status: Possible values include: 'Configured',
- 'NotConfigured', 'InProgress', 'Failed', 'NoStatus'
- :vartype configuration_status: str or ~azure.mgmt.security.models.enum
- :ivar recommendation_status: Possible values include: 'Recommended',
- 'NotRecommended', 'NotAvailable', 'NoStatus'
- :vartype recommendation_status: str or ~azure.mgmt.security.models.enum
- :ivar issues:
- :vartype issues:
- list[~azure.mgmt.security.models.AppWhitelistingIssueSummary]
- :ivar source_system: Possible values include: 'Azure_AppLocker',
- 'Azure_AuditD', 'NonAzure_AppLocker', 'NonAzure_AuditD', 'None'
- :vartype source_system: str or ~azure.mgmt.security.models.enum
- :param vm_recommendations:
- :type vm_recommendations:
- list[~azure.mgmt.security.models.VmRecommendation]
- :param path_recommendations:
- :type path_recommendations:
- list[~azure.mgmt.security.models.PathRecommendation]
+ :param properties:
+ :type properties: object
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'location': {'readonly': True},
- 'configuration_status': {'readonly': True},
- 'recommendation_status': {'readonly': True},
- 'issues': {'readonly': True},
- 'source_system': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'location': {'key': 'location', 'type': 'str'},
- 'enforcement_mode': {'key': 'properties.enforcementMode', 'type': 'str'},
- 'protection_mode': {'key': 'properties.protectionMode', 'type': 'ProtectionMode'},
- 'configuration_status': {'key': 'properties.configurationStatus', 'type': 'str'},
- 'recommendation_status': {'key': 'properties.recommendationStatus', 'type': 'str'},
- 'issues': {'key': 'properties.issues', 'type': '[AppWhitelistingIssueSummary]'},
- 'source_system': {'key': 'properties.sourceSystem', 'type': 'str'},
- 'vm_recommendations': {'key': 'properties.vmRecommendations', 'type': '[VmRecommendation]'},
- 'path_recommendations': {'key': 'properties.pathRecommendations', 'type': '[PathRecommendation]'},
+ 'properties': {'key': 'properties', 'type': 'object'},
}
- def __init__(self, *, enforcement_mode=None, protection_mode=None, vm_recommendations=None, path_recommendations=None, **kwargs) -> None:
- super(AppWhitelistingGroup, self).__init__(**kwargs)
- self.id = None
- self.name = None
- self.type = None
- self.location = None
- self.enforcement_mode = enforcement_mode
- self.protection_mode = protection_mode
- self.configuration_status = None
- self.recommendation_status = None
- self.issues = None
- self.source_system = None
- self.vm_recommendations = vm_recommendations
- self.path_recommendations = path_recommendations
+ def __init__(self, *, properties=None, **kwargs) -> None:
+ super(AscLocation, self).__init__(**kwargs)
+ self.properties = properties
-class AppWhitelistingGroups(Model):
- """Represents a list of VM/server groups and set of rules that are Recommended
- by Azure Security Center to be allowed.
+class AssessmentLinks(Model):
+ """Links relevant to the assessment.
- :param value:
- :type value: list[~azure.mgmt.security.models.AppWhitelistingGroup]
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar azure_portal_uri: Link to assessment in Azure Portal
+ :vartype azure_portal_uri: str
"""
+ _validation = {
+ 'azure_portal_uri': {'readonly': True},
+ }
+
_attribute_map = {
- 'value': {'key': 'value', 'type': '[AppWhitelistingGroup]'},
+ 'azure_portal_uri': {'key': 'azurePortalUri', 'type': 'str'},
}
- def __init__(self, *, value=None, **kwargs) -> None:
- super(AppWhitelistingGroups, self).__init__(**kwargs)
- self.value = value
+ def __init__(self, **kwargs) -> None:
+ super(AssessmentLinks, self).__init__(**kwargs)
+ self.azure_portal_uri = None
-class AppWhitelistingIssueSummary(Model):
- """Represents a summary of the alerts of the VM/server group.
-
- :param issue: Possible values include: 'ViolationsAudited',
- 'ViolationsBlocked', 'MsiAndScriptViolationsAudited',
- 'MsiAndScriptViolationsBlocked', 'ExecutableViolationsAudited',
- 'RulesViolatedManually'
- :type issue: str or ~azure.mgmt.security.models.enum
- :param number_of_vms: The number of machines in the VM/server group that
- have this alert
- :type number_of_vms: float
- """
-
- _attribute_map = {
- 'issue': {'key': 'issue', 'type': 'str'},
- 'number_of_vms': {'key': 'numberOfVms', 'type': 'float'},
- }
-
- def __init__(self, *, issue=None, number_of_vms: float=None, **kwargs) -> None:
- super(AppWhitelistingIssueSummary, self).__init__(**kwargs)
- self.issue = issue
- self.number_of_vms = number_of_vms
-
-
-class AscLocation(Resource):
- """The ASC location of the subscription is in the "name" field.
-
- Variables are only populated by the server, and will be ignored when
- sending a request.
-
- :ivar id: Resource Id
- :vartype id: str
- :ivar name: Resource name
- :vartype name: str
- :ivar type: Resource type
- :vartype type: str
- :param properties:
- :type properties: object
- """
-
- _validation = {
- 'id': {'readonly': True},
- 'name': {'readonly': True},
- 'type': {'readonly': True},
- }
-
- _attribute_map = {
- 'id': {'key': 'id', 'type': 'str'},
- 'name': {'key': 'name', 'type': 'str'},
- 'type': {'key': 'type', 'type': 'str'},
- 'properties': {'key': 'properties', 'type': 'object'},
- }
-
- def __init__(self, *, properties=None, **kwargs) -> None:
- super(AscLocation, self).__init__(**kwargs)
- self.properties = properties
-
-
-class AssessmentLinks(Model):
- """Links relevant to the assessment.
-
- Variables are only populated by the server, and will be ignored when
- sending a request.
-
- :ivar azure_portal_uri: Link to assessment in Azure Portal
- :vartype azure_portal_uri: str
- """
-
- _validation = {
- 'azure_portal_uri': {'readonly': True},
- }
-
- _attribute_map = {
- 'azure_portal_uri': {'key': 'azurePortalUri', 'type': 'str'},
- }
-
- def __init__(self, **kwargs) -> None:
- super(AssessmentLinks, self).__init__(**kwargs)
- self.azure_portal_uri = None
-
-
-class AssessmentStatus(Model):
- """The result of the assessment.
+class AssessmentStatus(Model):
+ """The result of the assessment.
All required parameters must be populated in order to send to Azure.
@@ -1452,6 +1444,54 @@ def __init__(self, *, additional_properties=None, device_vendor: str=None, devic
self.last_event_received = last_event_received
+class AuthenticationDetailsProperties(Model):
+ """Settings for cloud authentication management.
+
+ You probably want to use the sub-classes and not this class directly. Known
+ sub-classes are: AwsCredsAuthenticationDetailsProperties,
+ AwAssumeRoleAuthenticationDetailsProperties,
+ GcpCredentialsDetailsProperties
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ }
+
+ _subtype_map = {
+ 'authentication_type': {'awsCreds': 'AwsCredsAuthenticationDetailsProperties', 'awsAssumeRole': 'AwAssumeRoleAuthenticationDetailsProperties', 'gcpCredentials': 'GcpCredentialsDetailsProperties'}
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(AuthenticationDetailsProperties, self).__init__(**kwargs)
+ self.authentication_provisioning_state = None
+ self.granted_permissions = None
+ self.authentication_type = None
+
+
class TrackedResource(Model):
"""Describes an Azure tracked resource.
@@ -1464,8 +1504,8 @@ class TrackedResource(Model):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar location: Location where the resource is stored
- :vartype location: str
+ :param location: Location where the resource is stored
+ :type location: str
:param kind: Kind of the resource
:type kind: str
:param etag: Entity tag is used for comparing two or more entities from
@@ -1479,7 +1519,6 @@ class TrackedResource(Model):
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'location': {'readonly': True},
}
_attribute_map = {
@@ -1492,12 +1531,12 @@ class TrackedResource(Model):
'tags': {'key': 'tags', 'type': '{str}'},
}
- def __init__(self, *, kind: str=None, etag: str=None, tags=None, **kwargs) -> None:
+ def __init__(self, *, location: str=None, kind: str=None, etag: str=None, tags=None, **kwargs) -> None:
super(TrackedResource, self).__init__(**kwargs)
self.id = None
self.name = None
self.type = None
- self.location = None
+ self.location = location
self.kind = kind
self.etag = etag
self.tags = tags
@@ -1515,8 +1554,8 @@ class Automation(TrackedResource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :ivar location: Location where the resource is stored
- :vartype location: str
+ :param location: Location where the resource is stored
+ :type location: str
:param kind: Kind of the resource
:type kind: str
:param etag: Entity tag is used for comparing two or more entities from
@@ -1545,7 +1584,6 @@ class Automation(TrackedResource):
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'location': {'readonly': True},
}
_attribute_map = {
@@ -1563,8 +1601,8 @@ class Automation(TrackedResource):
'actions': {'key': 'properties.actions', 'type': '[AutomationAction]'},
}
- def __init__(self, *, kind: str=None, etag: str=None, tags=None, description: str=None, is_enabled: bool=None, scopes=None, sources=None, actions=None, **kwargs) -> None:
- super(Automation, self).__init__(kind=kind, etag=etag, tags=tags, **kwargs)
+ def __init__(self, *, location: str=None, kind: str=None, etag: str=None, tags=None, description: str=None, is_enabled: bool=None, scopes=None, sources=None, actions=None, **kwargs) -> None:
+ super(Automation, self).__init__(location=location, kind=kind, etag=etag, tags=tags, **kwargs)
self.description = description
self.is_enabled = is_enabled
self.scopes = scopes
@@ -1759,7 +1797,7 @@ class AutomationSource(Model):
https://aka.ms/ASCAutomationSchemas.
:param event_source: A valid event source type. Possible values include:
- 'Assessments', 'Alerts'
+ 'Assessments', 'SubAssessments', 'Alerts'
:type event_source: str or ~azure.mgmt.security.models.EventSource
:param rule_sets: A set of rules which evaluate upon event interception. A
logical disjunction is applied between defined rule sets (logical 'or').
@@ -1871,6 +1909,121 @@ def __init__(self, *, auto_provision, **kwargs) -> None:
self.auto_provision = auto_provision
+class AwAssumeRoleAuthenticationDetailsProperties(AuthenticationDetailsProperties):
+ """AWS cloud account connector based assume role, the role enables delegating
+ access to your AWS resources. The role is composed of role Amazon Resource
+ Name (ARN) and external ID. For more details, refer to Creating
+ a Role to Delegate Permissions to an IAM User (write only).
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ :ivar account_id: The ID of the cloud account
+ :vartype account_id: str
+ :param aws_assume_role_arn: Required. Assumed role ID is an identifier
+ that you can use to create temporary security credentials.
+ :type aws_assume_role_arn: str
+ :param aws_external_id: Required. A unique identifier that is required
+ when you assume a role in another account.
+ :type aws_external_id: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ 'account_id': {'readonly': True},
+ 'aws_assume_role_arn': {'required': True},
+ 'aws_external_id': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ 'account_id': {'key': 'accountId', 'type': 'str'},
+ 'aws_assume_role_arn': {'key': 'awsAssumeRoleArn', 'type': 'str'},
+ 'aws_external_id': {'key': 'awsExternalId', 'type': 'str'},
+ }
+
+ def __init__(self, *, aws_assume_role_arn: str, aws_external_id: str, **kwargs) -> None:
+ super(AwAssumeRoleAuthenticationDetailsProperties, self).__init__(**kwargs)
+ self.account_id = None
+ self.aws_assume_role_arn = aws_assume_role_arn
+ self.aws_external_id = aws_external_id
+ self.authentication_type = 'awsAssumeRole'
+
+
+class AwsCredsAuthenticationDetailsProperties(AuthenticationDetailsProperties):
+ """AWS cloud account connector based credentials, the credentials is composed
+ of access key ID and secret key, for more details, refer to Creating
+ an IAM User in Your AWS Account (write only).
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ :ivar account_id: The ID of the cloud account
+ :vartype account_id: str
+ :param aws_access_key_id: Required. Public key element of the AWS
+ credential object (write only)
+ :type aws_access_key_id: str
+ :param aws_secret_access_key: Required. Secret key element of the AWS
+ credential object (write only)
+ :type aws_secret_access_key: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ 'account_id': {'readonly': True},
+ 'aws_access_key_id': {'required': True},
+ 'aws_secret_access_key': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ 'account_id': {'key': 'accountId', 'type': 'str'},
+ 'aws_access_key_id': {'key': 'awsAccessKeyId', 'type': 'str'},
+ 'aws_secret_access_key': {'key': 'awsSecretAccessKey', 'type': 'str'},
+ }
+
+ def __init__(self, *, aws_access_key_id: str, aws_secret_access_key: str, **kwargs) -> None:
+ super(AwsCredsAuthenticationDetailsProperties, self).__init__(**kwargs)
+ self.account_id = None
+ self.aws_access_key_id = aws_access_key_id
+ self.aws_secret_access_key = aws_secret_access_key
+ self.authentication_type = 'awsCreds'
+
+
class ResourceDetails(Model):
"""Details of the resource that was assessed.
@@ -1930,6 +2083,67 @@ def __init__(self, **kwargs) -> None:
self.source = 'Azure'
+class ResourceIdentifier(Model):
+ """A resource identifier for an alert which can be used to direct the alert to
+ the right product exposure group (tenant, workspace, subscription etc.).
+
+ You probably want to use the sub-classes and not this class directly. Known
+ sub-classes are: AzureResourceIdentifier, LogAnalyticsIdentifier
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param type: Required. Constant filled by server.
+ :type type: str
+ """
+
+ _validation = {
+ 'type': {'required': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ }
+
+ _subtype_map = {
+ 'type': {'AzureResource': 'AzureResourceIdentifier', 'LogAnalytics': 'LogAnalyticsIdentifier'}
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(ResourceIdentifier, self).__init__(**kwargs)
+ self.type = None
+
+
+class AzureResourceIdentifier(ResourceIdentifier):
+ """Azure resource identifier.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param type: Required. Constant filled by server.
+ :type type: str
+ :ivar azure_resource_id: ARM resource identifier for the cloud resource
+ being alerted on
+ :vartype azure_resource_id: str
+ """
+
+ _validation = {
+ 'type': {'required': True},
+ 'azure_resource_id': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ 'azure_resource_id': {'key': 'azureResourceId', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(AzureResourceIdentifier, self).__init__(**kwargs)
+ self.azure_resource_id = None
+ self.type = 'AzureResource'
+
+
class AzureResourceLink(Model):
"""Describes an Azure resource with kind.
@@ -1953,6 +2167,91 @@ def __init__(self, **kwargs) -> None:
self.id = None
+class AzureTrackedResourceLocation(Model):
+ """Describes an Azure resource with location.
+
+ :param location: Location where the resource is stored
+ :type location: str
+ """
+
+ _attribute_map = {
+ 'location': {'key': 'location', 'type': 'str'},
+ }
+
+ def __init__(self, *, location: str=None, **kwargs) -> None:
+ super(AzureTrackedResourceLocation, self).__init__(**kwargs)
+ self.location = location
+
+
+class Baseline(Model):
+ """Baseline details.
+
+ :param expected_results: Expected results.
+ :type expected_results: list[list[str]]
+ :param updated_time: Baseline update time (UTC).
+ :type updated_time: datetime
+ """
+
+ _attribute_map = {
+ 'expected_results': {'key': 'expectedResults', 'type': '[[str]]'},
+ 'updated_time': {'key': 'updatedTime', 'type': 'iso-8601'},
+ }
+
+ def __init__(self, *, expected_results=None, updated_time=None, **kwargs) -> None:
+ super(Baseline, self).__init__(**kwargs)
+ self.expected_results = expected_results
+ self.updated_time = updated_time
+
+
+class BaselineAdjustedResult(Model):
+ """The rule result adjusted with baseline.
+
+ :param baseline:
+ :type baseline: ~azure.mgmt.security.models.Baseline
+ :param status: Possible values include: 'NonFinding', 'Finding',
+ 'InternalError'
+ :type status: str or ~azure.mgmt.security.models.RuleStatus
+ :param results_not_in_baseline: Results the are not in baseline.
+ :type results_not_in_baseline: list[list[str]]
+ :param results_only_in_baseline: Results the are in baseline.
+ :type results_only_in_baseline: list[list[str]]
+ """
+
+ _attribute_map = {
+ 'baseline': {'key': 'baseline', 'type': 'Baseline'},
+ 'status': {'key': 'status', 'type': 'str'},
+ 'results_not_in_baseline': {'key': 'resultsNotInBaseline', 'type': '[[str]]'},
+ 'results_only_in_baseline': {'key': 'resultsOnlyInBaseline', 'type': '[[str]]'},
+ }
+
+ def __init__(self, *, baseline=None, status=None, results_not_in_baseline=None, results_only_in_baseline=None, **kwargs) -> None:
+ super(BaselineAdjustedResult, self).__init__(**kwargs)
+ self.baseline = baseline
+ self.status = status
+ self.results_not_in_baseline = results_not_in_baseline
+ self.results_only_in_baseline = results_only_in_baseline
+
+
+class BenchmarkReference(Model):
+ """The benchmark references.
+
+ :param benchmark: The benchmark name.
+ :type benchmark: str
+ :param reference: The benchmark reference.
+ :type reference: str
+ """
+
+ _attribute_map = {
+ 'benchmark': {'key': 'benchmark', 'type': 'str'},
+ 'reference': {'key': 'reference', 'type': 'str'},
+ }
+
+ def __init__(self, *, benchmark: str=None, reference: str=None, **kwargs) -> None:
+ super(BenchmarkReference, self).__init__(**kwargs)
+ self.benchmark = benchmark
+ self.reference = reference
+
+
class CefExternalSecuritySolution(ExternalSecuritySolution):
"""Represents a security solution which sends CEF logs to an OMS workspace.
@@ -2329,6 +2628,48 @@ def __init__(self, *, is_enabled: bool, allowlist_values, **kwargs) -> None:
self.rule_type = 'ConnectionToIpNotAllowed'
+class ConnectorSetting(Resource):
+ """The connector setting.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param hybrid_compute_settings: Settings for hybrid compute management.
+ These settings are relevant only for Arc autoProvision (Hybrid Compute).
+ :type hybrid_compute_settings:
+ ~azure.mgmt.security.models.HybridComputeSettingsProperties
+ :param authentication_details: Settings for authentication management,
+ these settings are relevant only for the cloud connector.
+ :type authentication_details:
+ ~azure.mgmt.security.models.AuthenticationDetailsProperties
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'hybrid_compute_settings': {'key': 'properties.hybridComputeSettings', 'type': 'HybridComputeSettingsProperties'},
+ 'authentication_details': {'key': 'properties.authenticationDetails', 'type': 'AuthenticationDetailsProperties'},
+ }
+
+ def __init__(self, *, hybrid_compute_settings=None, authentication_details=None, **kwargs) -> None:
+ super(ConnectorSetting, self).__init__(**kwargs)
+ self.hybrid_compute_settings = hybrid_compute_settings
+ self.authentication_details = authentication_details
+
+
class ContainerRegistryVulnerabilityProperties(AdditionalData):
"""Additional context fields for container registry Vulnerability assessment.
@@ -2628,8 +2969,8 @@ def __init__(self, *, is_enabled: bool, denylist_values, **kwargs) -> None:
self.rule_type = 'DenylistCustomAlertRule'
-class DeviceSecurityGroup(Resource):
- """The device security group resource.
+class Device(Resource):
+ """Device model.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -2640,16 +2981,181 @@ class DeviceSecurityGroup(Resource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param threshold_rules: The list of custom alert threshold rules.
- :type threshold_rules:
- list[~azure.mgmt.security.models.ThresholdCustomAlertRule]
- :param time_window_rules: The list of custom alert time-window rules.
- :type time_window_rules:
- list[~azure.mgmt.security.models.TimeWindowCustomAlertRule]
- :param allowlist_rules: The allow-list custom alert rules.
- :type allowlist_rules:
- list[~azure.mgmt.security.models.AllowlistCustomAlertRule]
- :param denylist_rules: The deny-list custom alert rules.
+ :param display_name: Device display name given by the collector
+ :type display_name: str
+ :param device_type: Device type.
+ :type device_type: str
+ :ivar source_name: The source that created the device
+ :vartype source_name: str
+ :ivar network_interfaces: List of network interfaces.
+ :vartype network_interfaces:
+ list[~azure.mgmt.security.models.NetworkInterface]
+ :ivar vendor: Device vendor
+ :vartype vendor: str
+ :param os_name: Device operating system name.
+ :type os_name: str
+ :ivar protocols: List of protocols.
+ :vartype protocols: list[~azure.mgmt.security.models.Protocol1]
+ :ivar last_active_time: last time the device was active in the network
+ :vartype last_active_time: datetime
+ :ivar last_update_time: last time the device was updated
+ :vartype last_update_time: datetime
+ :ivar management_state: Managed state of the device. Possible values
+ include: 'Managed', 'Unmanaged'
+ :vartype management_state: str or
+ ~azure.mgmt.security.models.ManagementState
+ :param authorization_state: Authorized state of the device. Possible
+ values include: 'Authorized', 'Unauthorized'. Default value:
+ "Unauthorized" .
+ :type authorization_state: str or
+ ~azure.mgmt.security.models.AuthorizationState
+ :param device_criticality: Device criticality. Possible values include:
+ 'Important', 'Standard'. Default value: "Standard" .
+ :type device_criticality: str or
+ ~azure.mgmt.security.models.DeviceCriticality
+ :param purdue_level: Purdue level of the device. Possible values include:
+ 'ProcessControl', 'Supervisory', 'Enterprise'. Default value:
+ "ProcessControl" .
+ :type purdue_level: str or ~azure.mgmt.security.models.PurdueLevel
+ :param notes: user notes for the device, up to 300 characters.
+ :type notes: str
+ :ivar firmwares: List of device firmwares.
+ :vartype firmwares: list[~azure.mgmt.security.models.Firmware]
+ :ivar discovery_time: Discovered time of the device.
+ :vartype discovery_time: datetime
+ :ivar programming_state: Indicates whether this device is programming.
+ Possible values include: 'ProgrammingDevice', 'NotProgrammingDevice'
+ :vartype programming_state: str or
+ ~azure.mgmt.security.models.ProgrammingState
+ :ivar last_programming_time: last time the device was programming or
+ programed.
+ :vartype last_programming_time: datetime
+ :ivar scanning_functionality: Indicates whether the device is a scanner.
+ Possible values include: 'ScannerDevice', 'NotScannerDevice'
+ :vartype scanning_functionality: str or
+ ~azure.mgmt.security.models.ScanningFunctionality
+ :ivar last_scan_time: last time the device was scanning.
+ :vartype last_scan_time: datetime
+ :ivar risk_score: risk score of the device.
+ :vartype risk_score: int
+ :ivar sensor_name: When the device is unmanaged, the sensor that scanned
+ this device.
+ :vartype sensor_name: str
+ :ivar site_name: The sensor site name.
+ :vartype site_name: str
+ :ivar zone_name: The sensor zone name.
+ :vartype zone_name: str
+ :ivar device_status: Device status. Possible values include: 'Active',
+ 'Removed'
+ :vartype device_status: str or ~azure.mgmt.security.models.DeviceStatus
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'source_name': {'readonly': True},
+ 'network_interfaces': {'readonly': True},
+ 'vendor': {'readonly': True},
+ 'protocols': {'readonly': True},
+ 'last_active_time': {'readonly': True},
+ 'last_update_time': {'readonly': True},
+ 'management_state': {'readonly': True},
+ 'firmwares': {'readonly': True},
+ 'discovery_time': {'readonly': True},
+ 'programming_state': {'readonly': True},
+ 'last_programming_time': {'readonly': True},
+ 'scanning_functionality': {'readonly': True},
+ 'last_scan_time': {'readonly': True},
+ 'risk_score': {'readonly': True, 'maximum': 100, 'minimum': 0},
+ 'sensor_name': {'readonly': True},
+ 'site_name': {'readonly': True},
+ 'zone_name': {'readonly': True},
+ 'device_status': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'display_name': {'key': 'properties.displayName', 'type': 'str'},
+ 'device_type': {'key': 'properties.deviceType', 'type': 'str'},
+ 'source_name': {'key': 'properties.sourceName', 'type': 'str'},
+ 'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
+ 'vendor': {'key': 'properties.vendor', 'type': 'str'},
+ 'os_name': {'key': 'properties.osName', 'type': 'str'},
+ 'protocols': {'key': 'properties.protocols', 'type': '[Protocol1]'},
+ 'last_active_time': {'key': 'properties.lastActiveTime', 'type': 'iso-8601'},
+ 'last_update_time': {'key': 'properties.lastUpdateTime', 'type': 'iso-8601'},
+ 'management_state': {'key': 'properties.managementState', 'type': 'str'},
+ 'authorization_state': {'key': 'properties.authorizationState', 'type': 'str'},
+ 'device_criticality': {'key': 'properties.deviceCriticality', 'type': 'str'},
+ 'purdue_level': {'key': 'properties.purdueLevel', 'type': 'str'},
+ 'notes': {'key': 'properties.notes', 'type': 'str'},
+ 'firmwares': {'key': 'properties.firmwares', 'type': '[Firmware]'},
+ 'discovery_time': {'key': 'properties.discoveryTime', 'type': 'iso-8601'},
+ 'programming_state': {'key': 'properties.programmingState', 'type': 'str'},
+ 'last_programming_time': {'key': 'properties.lastProgrammingTime', 'type': 'iso-8601'},
+ 'scanning_functionality': {'key': 'properties.scanningFunctionality', 'type': 'str'},
+ 'last_scan_time': {'key': 'properties.lastScanTime', 'type': 'iso-8601'},
+ 'risk_score': {'key': 'properties.riskScore', 'type': 'int'},
+ 'sensor_name': {'key': 'properties.sensorName', 'type': 'str'},
+ 'site_name': {'key': 'properties.siteName', 'type': 'str'},
+ 'zone_name': {'key': 'properties.zoneName', 'type': 'str'},
+ 'device_status': {'key': 'properties.deviceStatus', 'type': 'str'},
+ }
+
+ def __init__(self, *, display_name: str=None, device_type: str=None, os_name: str=None, authorization_state="Unauthorized", device_criticality="Standard", purdue_level="ProcessControl", notes: str=None, **kwargs) -> None:
+ super(Device, self).__init__(**kwargs)
+ self.display_name = display_name
+ self.device_type = device_type
+ self.source_name = None
+ self.network_interfaces = None
+ self.vendor = None
+ self.os_name = os_name
+ self.protocols = None
+ self.last_active_time = None
+ self.last_update_time = None
+ self.management_state = None
+ self.authorization_state = authorization_state
+ self.device_criticality = device_criticality
+ self.purdue_level = purdue_level
+ self.notes = notes
+ self.firmwares = None
+ self.discovery_time = None
+ self.programming_state = None
+ self.last_programming_time = None
+ self.scanning_functionality = None
+ self.last_scan_time = None
+ self.risk_score = None
+ self.sensor_name = None
+ self.site_name = None
+ self.zone_name = None
+ self.device_status = None
+
+
+class DeviceSecurityGroup(Resource):
+ """The device security group resource.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param threshold_rules: The list of custom alert threshold rules.
+ :type threshold_rules:
+ list[~azure.mgmt.security.models.ThresholdCustomAlertRule]
+ :param time_window_rules: The list of custom alert time-window rules.
+ :type time_window_rules:
+ list[~azure.mgmt.security.models.TimeWindowCustomAlertRule]
+ :param allowlist_rules: The allow-list custom alert rules.
+ :type allowlist_rules:
+ list[~azure.mgmt.security.models.AllowlistCustomAlertRule]
+ :param denylist_rules: The deny-list custom alert rules.
:type denylist_rules:
list[~azure.mgmt.security.models.DenylistCustomAlertRule]
"""
@@ -2943,6 +3449,161 @@ def __init__(self, *, is_enabled: bool, min_threshold: int, max_threshold: int,
self.rule_type = 'FileUploadsNotInAllowedRange'
+class Firmware(Model):
+ """Firmware information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar module_address: Address of the specific module a firmware is related
+ to
+ :vartype module_address: str
+ :ivar rack: Rack number of the module a firmware is related to.
+ :vartype rack: str
+ :ivar slot: Slot number in the rack of the module a firmware is related to
+ :vartype slot: str
+ :ivar serial: Serial of the firmware
+ :vartype serial: str
+ :ivar model: Firmware model
+ :vartype model: str
+ :ivar version: Firmware version
+ :vartype version: str
+ :ivar additional_data: A bag of fields which extends the firmware
+ information.
+ :vartype additional_data: object
+ """
+
+ _validation = {
+ 'module_address': {'readonly': True},
+ 'rack': {'readonly': True},
+ 'slot': {'readonly': True},
+ 'serial': {'readonly': True},
+ 'model': {'readonly': True},
+ 'version': {'readonly': True},
+ 'additional_data': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'module_address': {'key': 'moduleAddress', 'type': 'str'},
+ 'rack': {'key': 'rack', 'type': 'str'},
+ 'slot': {'key': 'slot', 'type': 'str'},
+ 'serial': {'key': 'serial', 'type': 'str'},
+ 'model': {'key': 'model', 'type': 'str'},
+ 'version': {'key': 'version', 'type': 'str'},
+ 'additional_data': {'key': 'additionalData', 'type': 'object'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(Firmware, self).__init__(**kwargs)
+ self.module_address = None
+ self.rack = None
+ self.slot = None
+ self.serial = None
+ self.model = None
+ self.version = None
+ self.additional_data = None
+
+
+class GcpCredentialsDetailsProperties(AuthenticationDetailsProperties):
+ """GCP cloud account connector based service to service credentials, the
+ credentials are composed of the organization ID and a JSON API key (write
+ only).
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar authentication_provisioning_state: State of the multi-cloud
+ connector. Possible values include: 'Valid', 'Invalid', 'Expired',
+ 'IncorrectPolicy'
+ :vartype authentication_provisioning_state: str or
+ ~azure.mgmt.security.models.AuthenticationProvisioningState
+ :ivar granted_permissions: The permissions detected in the cloud account.
+ :vartype granted_permissions: list[str or
+ ~azure.mgmt.security.models.PermissionProperty]
+ :param authentication_type: Required. Constant filled by server.
+ :type authentication_type: str
+ :param organization_id: Required. The organization ID of the GCP cloud
+ account
+ :type organization_id: str
+ :param type: Required. Type field of the API key (write only)
+ :type type: str
+ :param project_id: Required. Project ID field of the API key (write only)
+ :type project_id: str
+ :param private_key_id: Required. Private key ID field of the API key
+ (write only)
+ :type private_key_id: str
+ :param private_key: Required. Private key field of the API key (write
+ only)
+ :type private_key: str
+ :param client_email: Required. Client email field of the API key (write
+ only)
+ :type client_email: str
+ :param client_id: Required. Client ID field of the API key (write only)
+ :type client_id: str
+ :param auth_uri: Required. Auth URI field of the API key (write only)
+ :type auth_uri: str
+ :param token_uri: Required. Token URI field of the API key (write only)
+ :type token_uri: str
+ :param auth_provider_x509_cert_url: Required. Auth provider x509
+ certificate URL field of the API key (write only)
+ :type auth_provider_x509_cert_url: str
+ :param client_x509_cert_url: Required. Client x509 certificate URL field
+ of the API key (write only)
+ :type client_x509_cert_url: str
+ """
+
+ _validation = {
+ 'authentication_provisioning_state': {'readonly': True},
+ 'granted_permissions': {'readonly': True},
+ 'authentication_type': {'required': True},
+ 'organization_id': {'required': True},
+ 'type': {'required': True},
+ 'project_id': {'required': True},
+ 'private_key_id': {'required': True},
+ 'private_key': {'required': True},
+ 'client_email': {'required': True},
+ 'client_id': {'required': True},
+ 'auth_uri': {'required': True},
+ 'token_uri': {'required': True},
+ 'auth_provider_x509_cert_url': {'required': True},
+ 'client_x509_cert_url': {'required': True},
+ }
+
+ _attribute_map = {
+ 'authentication_provisioning_state': {'key': 'authenticationProvisioningState', 'type': 'str'},
+ 'granted_permissions': {'key': 'grantedPermissions', 'type': '[str]'},
+ 'authentication_type': {'key': 'authenticationType', 'type': 'str'},
+ 'organization_id': {'key': 'organizationId', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'project_id': {'key': 'projectId', 'type': 'str'},
+ 'private_key_id': {'key': 'privateKeyId', 'type': 'str'},
+ 'private_key': {'key': 'privateKey', 'type': 'str'},
+ 'client_email': {'key': 'clientEmail', 'type': 'str'},
+ 'client_id': {'key': 'clientId', 'type': 'str'},
+ 'auth_uri': {'key': 'authUri', 'type': 'str'},
+ 'token_uri': {'key': 'tokenUri', 'type': 'str'},
+ 'auth_provider_x509_cert_url': {'key': 'authProviderX509CertUrl', 'type': 'str'},
+ 'client_x509_cert_url': {'key': 'clientX509CertUrl', 'type': 'str'},
+ }
+
+ def __init__(self, *, organization_id: str, type: str, project_id: str, private_key_id: str, private_key: str, client_email: str, client_id: str, auth_uri: str, token_uri: str, auth_provider_x509_cert_url: str, client_x509_cert_url: str, **kwargs) -> None:
+ super(GcpCredentialsDetailsProperties, self).__init__(**kwargs)
+ self.organization_id = organization_id
+ self.type = type
+ self.project_id = project_id
+ self.private_key_id = private_key_id
+ self.private_key = private_key
+ self.client_email = client_email
+ self.client_id = client_id
+ self.auth_uri = auth_uri
+ self.token_uri = token_uri
+ self.auth_provider_x509_cert_url = auth_provider_x509_cert_url
+ self.client_x509_cert_url = client_x509_cert_url
+ self.authentication_type = 'gcpCredentials'
+
+
class HttpC2DMessagesNotInAllowedRange(TimeWindowCustomAlertRule):
"""Number of cloud to device messages (HTTP protocol) is not in allowed range.
@@ -3091,6 +3752,61 @@ def __init__(self, *, is_enabled: bool, min_threshold: int, max_threshold: int,
self.rule_type = 'HttpD2CMessagesNotInAllowedRange'
+class HybridComputeSettingsProperties(Model):
+ """Settings for hybrid compute management.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar hybrid_compute_provisioning_state: State of the service principal
+ and its secret. Possible values include: 'Valid', 'Invalid', 'Expired'
+ :vartype hybrid_compute_provisioning_state: str or
+ ~azure.mgmt.security.models.HybridComputeProvisioningState
+ :param auto_provision: Required. Whether or not to automatically install
+ Azure Arc (hybrid compute) agents on machines. Possible values include:
+ 'On', 'Off'
+ :type auto_provision: str or ~azure.mgmt.security.models.AutoProvision
+ :param resource_group_name: The name of the resource group where Arc
+ (Hybrid Compute) connectors are connected.
+ :type resource_group_name: str
+ :param region: The location where the metadata of machines will be stored
+ :type region: str
+ :param proxy_server: For a non-Azure machine that is not connected
+ directly to the internet, specify a proxy server that the non-Azure
+ machine can use.
+ :type proxy_server: ~azure.mgmt.security.models.ProxyServerProperties
+ :param service_principal: An object to access resources that are secured
+ by an Azure AD tenant.
+ :type service_principal:
+ ~azure.mgmt.security.models.ServicePrincipalProperties
+ """
+
+ _validation = {
+ 'hybrid_compute_provisioning_state': {'readonly': True},
+ 'auto_provision': {'required': True},
+ }
+
+ _attribute_map = {
+ 'hybrid_compute_provisioning_state': {'key': 'hybridComputeProvisioningState', 'type': 'str'},
+ 'auto_provision': {'key': 'autoProvision', 'type': 'str'},
+ 'resource_group_name': {'key': 'resourceGroupName', 'type': 'str'},
+ 'region': {'key': 'region', 'type': 'str'},
+ 'proxy_server': {'key': 'proxyServer', 'type': 'ProxyServerProperties'},
+ 'service_principal': {'key': 'servicePrincipal', 'type': 'ServicePrincipalProperties'},
+ }
+
+ def __init__(self, *, auto_provision, resource_group_name: str=None, region: str=None, proxy_server=None, service_principal=None, **kwargs) -> None:
+ super(HybridComputeSettingsProperties, self).__init__(**kwargs)
+ self.hybrid_compute_provisioning_state = None
+ self.auto_provision = auto_provision
+ self.resource_group_name = resource_group_name
+ self.region = region
+ self.proxy_server = proxy_server
+ self.service_principal = service_principal
+
+
class InformationProtectionKeyword(Model):
"""The information type keyword.
@@ -3212,8 +3928,64 @@ def __init__(self, *, display_name: str=None, description: str=None, order: int=
self.keywords = keywords
-class IoTSecurityAggregatedAlert(Model):
- """Security Solution Aggregated Alert information.
+class IotAlert(Model):
+ """IoT alert.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar system_alert_id: Holds the product canonical identifier of the alert
+ within the scope of a product
+ :vartype system_alert_id: str
+ :ivar compromised_entity: Display name of the main entity being reported
+ on
+ :vartype compromised_entity: str
+ :ivar alert_type: The type name of the alert
+ :vartype alert_type: str
+ :ivar start_time_utc: The impact start time of the alert (the time of the
+ first event or activity included in the alert)
+ :vartype start_time_utc: str
+ :ivar end_time_utc: The impact end time of the alert (the time of the last
+ event or activity included in the alert)
+ :vartype end_time_utc: str
+ :param entities: A list of entities related to the alert
+ :type entities: list[object]
+ :param extended_properties: A bag of fields which extends the alert
+ information
+ :type extended_properties: object
+ """
+
+ _validation = {
+ 'system_alert_id': {'readonly': True},
+ 'compromised_entity': {'readonly': True},
+ 'alert_type': {'readonly': True},
+ 'start_time_utc': {'readonly': True},
+ 'end_time_utc': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'system_alert_id': {'key': 'properties.systemAlertId', 'type': 'str'},
+ 'compromised_entity': {'key': 'properties.compromisedEntity', 'type': 'str'},
+ 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
+ 'start_time_utc': {'key': 'properties.startTimeUtc', 'type': 'str'},
+ 'end_time_utc': {'key': 'properties.endTimeUtc', 'type': 'str'},
+ 'entities': {'key': 'properties.entities', 'type': '[object]'},
+ 'extended_properties': {'key': 'properties.extendedProperties', 'type': 'object'},
+ }
+
+ def __init__(self, *, entities=None, extended_properties=None, **kwargs) -> None:
+ super(IotAlert, self).__init__(**kwargs)
+ self.system_alert_id = None
+ self.compromised_entity = None
+ self.alert_type = None
+ self.start_time_utc = None
+ self.end_time_utc = None
+ self.entities = entities
+ self.extended_properties = extended_properties
+
+
+class IotAlertType(Resource):
+ """IoT alert type.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -3224,177 +3996,491 @@ class IoTSecurityAggregatedAlert(Model):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param tags: Resource tags
- :type tags: dict[str, str]
- :ivar alert_type: Name of the alert type.
- :vartype alert_type: str
- :ivar alert_display_name: Display name of the alert type.
+ :ivar alert_display_name: The display name of the alert
:vartype alert_display_name: str
- :ivar aggregated_date_utc: Date of detection.
- :vartype aggregated_date_utc: date
- :ivar vendor_name: Name of the organization that raised the alert.
- :vartype vendor_name: str
- :ivar reported_severity: Assessed alert severity. Possible values include:
+ :ivar severity: The severity of the alert. Possible values include:
'Informational', 'Low', 'Medium', 'High'
- :vartype reported_severity: str or
- ~azure.mgmt.security.models.ReportedSeverity
- :ivar remediation_steps: Recommended steps for remediation.
- :vartype remediation_steps: str
+ :vartype severity: str or ~azure.mgmt.security.models.AlertSeverity
:ivar description: Description of the suspected vulnerability and meaning.
:vartype description: str
- :ivar count: Number of alerts occurrences within the aggregated time
- window.
- :vartype count: int
- :ivar effected_resource_type: Azure resource ID of the resource that
- received the alerts.
- :vartype effected_resource_type: str
- :ivar system_source: The type of the alerted resource (Azure, Non-Azure).
- :vartype system_source: str
- :ivar action_taken: IoT Security solution alert response.
- :vartype action_taken: str
- :ivar log_analytics_query: Log analytics query for getting the list of
- affected devices/alerts.
- :vartype log_analytics_query: str
- :ivar top_devices_list: 10 devices with the highest number of occurrences
- of this alert type, on this day.
- :vartype top_devices_list:
- list[~azure.mgmt.security.models.IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]
+ :ivar provider_name: The name of the alert provider or internal partner
+ :vartype provider_name: str
+ :ivar product_name: The name of the product which published this alert
+ :vartype product_name: str
+ :ivar product_component_name: The name of a component inside the product
+ which generated the alert
+ :vartype product_component_name: str
+ :ivar vendor_name: The name of the vendor that raise the alert
+ :vartype vendor_name: str
+ :ivar intent: Kill chain related intent behind the alert. Could contain
+ multiple enum values (separated by commas). Possible values include:
+ 'Unknown', 'PreAttack', 'InitialAccess', 'Persistence',
+ 'PrivilegeEscalation', 'DefenseEvasion', 'CredentialAccess', 'Discovery',
+ 'LateralMovement', 'Execution', 'Collection', 'Exfiltration',
+ 'CommandAndControl', 'Impact', 'Probing', 'Exploitation'
+ :vartype intent: str or ~azure.mgmt.security.models.AlertIntent
+ :ivar remediation_steps: Manual action items to take to remediate the
+ alert
+ :vartype remediation_steps: list[str]
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'alert_type': {'readonly': True},
'alert_display_name': {'readonly': True},
- 'aggregated_date_utc': {'readonly': True},
+ 'severity': {'readonly': True},
+ 'description': {'readonly': True},
+ 'provider_name': {'readonly': True},
+ 'product_name': {'readonly': True},
+ 'product_component_name': {'readonly': True},
'vendor_name': {'readonly': True},
- 'reported_severity': {'readonly': True},
+ 'intent': {'readonly': True},
'remediation_steps': {'readonly': True},
- 'description': {'readonly': True},
- 'count': {'readonly': True},
- 'effected_resource_type': {'readonly': True},
- 'system_source': {'readonly': True},
- 'action_taken': {'readonly': True},
- 'log_analytics_query': {'readonly': True},
- 'top_devices_list': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'tags': {'key': 'tags', 'type': '{str}'},
- 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
'alert_display_name': {'key': 'properties.alertDisplayName', 'type': 'str'},
- 'aggregated_date_utc': {'key': 'properties.aggregatedDateUtc', 'type': 'date'},
- 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
- 'reported_severity': {'key': 'properties.reportedSeverity', 'type': 'str'},
- 'remediation_steps': {'key': 'properties.remediationSteps', 'type': 'str'},
+ 'severity': {'key': 'properties.severity', 'type': 'str'},
'description': {'key': 'properties.description', 'type': 'str'},
- 'count': {'key': 'properties.count', 'type': 'int'},
- 'effected_resource_type': {'key': 'properties.effectedResourceType', 'type': 'str'},
- 'system_source': {'key': 'properties.systemSource', 'type': 'str'},
- 'action_taken': {'key': 'properties.actionTaken', 'type': 'str'},
- 'log_analytics_query': {'key': 'properties.logAnalyticsQuery', 'type': 'str'},
- 'top_devices_list': {'key': 'properties.topDevicesList', 'type': '[IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]'},
+ 'provider_name': {'key': 'properties.providerName', 'type': 'str'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'product_component_name': {'key': 'properties.productComponentName', 'type': 'str'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'intent': {'key': 'properties.intent', 'type': 'str'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': '[str]'},
}
- def __init__(self, *, tags=None, **kwargs) -> None:
- super(IoTSecurityAggregatedAlert, self).__init__(**kwargs)
- self.id = None
- self.name = None
- self.type = None
- self.tags = tags
- self.alert_type = None
+ def __init__(self, **kwargs) -> None:
+ super(IotAlertType, self).__init__(**kwargs)
self.alert_display_name = None
- self.aggregated_date_utc = None
+ self.severity = None
+ self.description = None
+ self.provider_name = None
+ self.product_name = None
+ self.product_component_name = None
self.vendor_name = None
- self.reported_severity = None
+ self.intent = None
self.remediation_steps = None
- self.description = None
- self.count = None
- self.effected_resource_type = None
- self.system_source = None
- self.action_taken = None
- self.log_analytics_query = None
- self.top_devices_list = None
-class IoTSecurityAggregatedAlertPropertiesTopDevicesListItem(Model):
- """IoTSecurityAggregatedAlertPropertiesTopDevicesListItem.
+class IotAlertTypeList(Model):
+ """List of alert types.
+
+ :param value: List data
+ :type value: list[~azure.mgmt.security.models.IotAlertType]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IotAlertType]'},
+ }
+
+ def __init__(self, *, value=None, **kwargs) -> None:
+ super(IotAlertTypeList, self).__init__(**kwargs)
+ self.value = value
+
+
+class IotDefenderSettingsList(Model):
+ """List of IoT Defender settings.
Variables are only populated by the server, and will be ignored when
sending a request.
- :ivar device_id: Name of the device.
- :vartype device_id: str
- :ivar alerts_count: Number of alerts raised for this device.
- :vartype alerts_count: int
- :ivar last_occurrence: Most recent time this alert was raised for this
- device, on this day.
- :vartype last_occurrence: str
+ :ivar value: List data
+ :vartype value: list[~azure.mgmt.security.models.IotDefenderSettingsModel]
"""
_validation = {
- 'device_id': {'readonly': True},
- 'alerts_count': {'readonly': True},
- 'last_occurrence': {'readonly': True},
+ 'value': {'readonly': True},
}
_attribute_map = {
- 'device_id': {'key': 'deviceId', 'type': 'str'},
- 'alerts_count': {'key': 'alertsCount', 'type': 'int'},
- 'last_occurrence': {'key': 'lastOccurrence', 'type': 'str'},
+ 'value': {'key': 'value', 'type': '[IotDefenderSettingsModel]'},
}
def __init__(self, **kwargs) -> None:
- super(IoTSecurityAggregatedAlertPropertiesTopDevicesListItem, self).__init__(**kwargs)
- self.device_id = None
- self.alerts_count = None
- self.last_occurrence = None
+ super(IotDefenderSettingsList, self).__init__(**kwargs)
+ self.value = None
-class IoTSecurityAggregatedRecommendation(Model):
- """IoT Security solution recommendation information.
+class IotDefenderSettingsModel(Resource):
+ """IoT Defender settings.
Variables are only populated by the server, and will be ignored when
sending a request.
+ All required parameters must be populated in order to send to Azure.
+
:ivar id: Resource Id
:vartype id: str
:ivar name: Resource name
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param tags: Resource tags
- :type tags: dict[str, str]
- :param recommendation_name: Name of the recommendation.
- :type recommendation_name: str
- :ivar recommendation_display_name: Display name of the recommendation
- type.
- :vartype recommendation_display_name: str
- :ivar description: Description of the suspected vulnerability and meaning.
- :vartype description: str
- :ivar recommendation_type_id: Recommendation-type GUID.
- :vartype recommendation_type_id: str
- :ivar detected_by: Name of the organization that made the recommendation.
- :vartype detected_by: str
- :ivar remediation_steps: Recommended steps for remediation
- :vartype remediation_steps: str
- :ivar reported_severity: Assessed recommendation severity. Possible values
- include: 'Informational', 'Low', 'Medium', 'High'
- :vartype reported_severity: str or
- ~azure.mgmt.security.models.ReportedSeverity
- :ivar healthy_devices: Number of healthy devices within the IoT Security
- solution.
- :vartype healthy_devices: int
- :ivar unhealthy_device_count: Number of unhealthy devices within the IoT
- Security solution.
- :vartype unhealthy_device_count: int
- :ivar log_analytics_query: Log analytics query for getting the list of
- affected devices/alerts.
- :vartype log_analytics_query: str
+ :param device_quota: Required. Size of the device quota (as a opposed to a
+ Pay as You Go billing model). Value is required to be in multiples of
+ 1000.
+ :type device_quota: int
+ :param sentinel_workspace_resource_ids: Required. Sentinel Workspace
+ Resource Ids
+ :type sentinel_workspace_resource_ids: list[str]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'device_quota': {'required': True, 'minimum': 1000},
+ 'sentinel_workspace_resource_ids': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'device_quota': {'key': 'properties.deviceQuota', 'type': 'int'},
+ 'sentinel_workspace_resource_ids': {'key': 'properties.sentinelWorkspaceResourceIds', 'type': '[str]'},
+ }
+
+ def __init__(self, *, device_quota: int, sentinel_workspace_resource_ids, **kwargs) -> None:
+ super(IotDefenderSettingsModel, self).__init__(**kwargs)
+ self.device_quota = device_quota
+ self.sentinel_workspace_resource_ids = sentinel_workspace_resource_ids
+
+
+class IotRecommendation(Resource):
+ """IoT recommendation.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar device_id: Identifier of the device being reported on
+ :vartype device_id: str
+ :ivar recommendation_type: The type name of the recommendation
+ :vartype recommendation_type: str
+ :ivar discovered_time_utc: The discovery time of the recommendation
+ :vartype discovered_time_utc: str
+ :param recommendation_additional_data: A bag of fields which extends the
+ recommendation information
+ :type recommendation_additional_data: object
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'device_id': {'readonly': True},
+ 'recommendation_type': {'readonly': True},
+ 'discovered_time_utc': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'device_id': {'key': 'properties.deviceId', 'type': 'str'},
+ 'recommendation_type': {'key': 'properties.recommendationType', 'type': 'str'},
+ 'discovered_time_utc': {'key': 'properties.discoveredTimeUtc', 'type': 'str'},
+ 'recommendation_additional_data': {'key': 'properties.recommendationAdditionalData', 'type': 'object'},
+ }
+
+ def __init__(self, *, recommendation_additional_data=None, **kwargs) -> None:
+ super(IotRecommendation, self).__init__(**kwargs)
+ self.device_id = None
+ self.recommendation_type = None
+ self.discovered_time_utc = None
+ self.recommendation_additional_data = recommendation_additional_data
+
+
+class IotRecommendationType(Resource):
+ """IoT recommendation type.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar recommendation_display_name: The display name of the recommendation
+ :vartype recommendation_display_name: str
+ :ivar severity: The severity of the recommendation. Possible values
+ include: 'Unknown', 'NotApplicable', 'Healthy', 'OffByPolicy', 'Low',
+ 'Medium', 'High'
+ :vartype severity: str or
+ ~azure.mgmt.security.models.RecommendationSeverity
+ :ivar description: Description of the suspected vulnerability and meaning.
+ :vartype description: str
+ :ivar product_name: The name of the product which published this
+ recommendation
+ :vartype product_name: str
+ :ivar product_component_name: The name of a component inside the product
+ which generated the recommendation
+ :vartype product_component_name: str
+ :ivar vendor_name: The name of the vendor that raised the recommendation
+ :vartype vendor_name: str
+ :ivar control: The name of the recommendation's control category
+ :vartype control: str
+ :ivar remediation_steps: Manual action items to take to resolve the
+ recommendation
+ :vartype remediation_steps: list[str]
+ :ivar data_source: The alert's data source
+ :vartype data_source: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'recommendation_display_name': {'readonly': True},
+ 'severity': {'readonly': True},
+ 'description': {'readonly': True},
+ 'product_name': {'readonly': True},
+ 'product_component_name': {'readonly': True},
+ 'vendor_name': {'readonly': True},
+ 'control': {'readonly': True},
+ 'remediation_steps': {'readonly': True},
+ 'data_source': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'recommendation_display_name': {'key': 'properties.recommendationDisplayName', 'type': 'str'},
+ 'severity': {'key': 'properties.severity', 'type': 'str'},
+ 'description': {'key': 'properties.description', 'type': 'str'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'product_component_name': {'key': 'properties.productComponentName', 'type': 'str'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'control': {'key': 'properties.control', 'type': 'str'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': '[str]'},
+ 'data_source': {'key': 'properties.dataSource', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(IotRecommendationType, self).__init__(**kwargs)
+ self.recommendation_display_name = None
+ self.severity = None
+ self.description = None
+ self.product_name = None
+ self.product_component_name = None
+ self.vendor_name = None
+ self.control = None
+ self.remediation_steps = None
+ self.data_source = None
+
+
+class IotRecommendationTypeList(Model):
+ """List of recommendation types.
+
+ :param value: List data
+ :type value: list[~azure.mgmt.security.models.IotRecommendationType]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IotRecommendationType]'},
+ }
+
+ def __init__(self, *, value=None, **kwargs) -> None:
+ super(IotRecommendationTypeList, self).__init__(**kwargs)
+ self.value = value
+
+
+class IoTSecurityAggregatedAlert(Model):
+ """Security Solution Aggregated Alert information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param tags: Resource tags
+ :type tags: dict[str, str]
+ :ivar alert_type: Name of the alert type.
+ :vartype alert_type: str
+ :ivar alert_display_name: Display name of the alert type.
+ :vartype alert_display_name: str
+ :ivar aggregated_date_utc: Date of detection.
+ :vartype aggregated_date_utc: date
+ :ivar vendor_name: Name of the organization that raised the alert.
+ :vartype vendor_name: str
+ :ivar reported_severity: Assessed alert severity. Possible values include:
+ 'Informational', 'Low', 'Medium', 'High'
+ :vartype reported_severity: str or
+ ~azure.mgmt.security.models.ReportedSeverity
+ :ivar remediation_steps: Recommended steps for remediation.
+ :vartype remediation_steps: str
+ :ivar description: Description of the suspected vulnerability and meaning.
+ :vartype description: str
+ :ivar count: Number of alerts occurrences within the aggregated time
+ window.
+ :vartype count: int
+ :ivar effected_resource_type: Azure resource ID of the resource that
+ received the alerts.
+ :vartype effected_resource_type: str
+ :ivar system_source: The type of the alerted resource (Azure, Non-Azure).
+ :vartype system_source: str
+ :ivar action_taken: IoT Security solution alert response.
+ :vartype action_taken: str
+ :ivar log_analytics_query: Log analytics query for getting the list of
+ affected devices/alerts.
+ :vartype log_analytics_query: str
+ :ivar top_devices_list: 10 devices with the highest number of occurrences
+ of this alert type, on this day.
+ :vartype top_devices_list:
+ list[~azure.mgmt.security.models.IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'alert_type': {'readonly': True},
+ 'alert_display_name': {'readonly': True},
+ 'aggregated_date_utc': {'readonly': True},
+ 'vendor_name': {'readonly': True},
+ 'reported_severity': {'readonly': True},
+ 'remediation_steps': {'readonly': True},
+ 'description': {'readonly': True},
+ 'count': {'readonly': True},
+ 'effected_resource_type': {'readonly': True},
+ 'system_source': {'readonly': True},
+ 'action_taken': {'readonly': True},
+ 'log_analytics_query': {'readonly': True},
+ 'top_devices_list': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'tags': {'key': 'tags', 'type': '{str}'},
+ 'alert_type': {'key': 'properties.alertType', 'type': 'str'},
+ 'alert_display_name': {'key': 'properties.alertDisplayName', 'type': 'str'},
+ 'aggregated_date_utc': {'key': 'properties.aggregatedDateUtc', 'type': 'date'},
+ 'vendor_name': {'key': 'properties.vendorName', 'type': 'str'},
+ 'reported_severity': {'key': 'properties.reportedSeverity', 'type': 'str'},
+ 'remediation_steps': {'key': 'properties.remediationSteps', 'type': 'str'},
+ 'description': {'key': 'properties.description', 'type': 'str'},
+ 'count': {'key': 'properties.count', 'type': 'int'},
+ 'effected_resource_type': {'key': 'properties.effectedResourceType', 'type': 'str'},
+ 'system_source': {'key': 'properties.systemSource', 'type': 'str'},
+ 'action_taken': {'key': 'properties.actionTaken', 'type': 'str'},
+ 'log_analytics_query': {'key': 'properties.logAnalyticsQuery', 'type': 'str'},
+ 'top_devices_list': {'key': 'properties.topDevicesList', 'type': '[IoTSecurityAggregatedAlertPropertiesTopDevicesListItem]'},
+ }
+
+ def __init__(self, *, tags=None, **kwargs) -> None:
+ super(IoTSecurityAggregatedAlert, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.tags = tags
+ self.alert_type = None
+ self.alert_display_name = None
+ self.aggregated_date_utc = None
+ self.vendor_name = None
+ self.reported_severity = None
+ self.remediation_steps = None
+ self.description = None
+ self.count = None
+ self.effected_resource_type = None
+ self.system_source = None
+ self.action_taken = None
+ self.log_analytics_query = None
+ self.top_devices_list = None
+
+
+class IoTSecurityAggregatedAlertPropertiesTopDevicesListItem(Model):
+ """IoTSecurityAggregatedAlertPropertiesTopDevicesListItem.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar device_id: Name of the device.
+ :vartype device_id: str
+ :ivar alerts_count: Number of alerts raised for this device.
+ :vartype alerts_count: int
+ :ivar last_occurrence: Most recent time this alert was raised for this
+ device, on this day.
+ :vartype last_occurrence: str
+ """
+
+ _validation = {
+ 'device_id': {'readonly': True},
+ 'alerts_count': {'readonly': True},
+ 'last_occurrence': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'device_id': {'key': 'deviceId', 'type': 'str'},
+ 'alerts_count': {'key': 'alertsCount', 'type': 'int'},
+ 'last_occurrence': {'key': 'lastOccurrence', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(IoTSecurityAggregatedAlertPropertiesTopDevicesListItem, self).__init__(**kwargs)
+ self.device_id = None
+ self.alerts_count = None
+ self.last_occurrence = None
+
+
+class IoTSecurityAggregatedRecommendation(Model):
+ """IoT Security solution recommendation information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param tags: Resource tags
+ :type tags: dict[str, str]
+ :param recommendation_name: Name of the recommendation.
+ :type recommendation_name: str
+ :ivar recommendation_display_name: Display name of the recommendation
+ type.
+ :vartype recommendation_display_name: str
+ :ivar description: Description of the suspected vulnerability and meaning.
+ :vartype description: str
+ :ivar recommendation_type_id: Recommendation-type GUID.
+ :vartype recommendation_type_id: str
+ :ivar detected_by: Name of the organization that made the recommendation.
+ :vartype detected_by: str
+ :ivar remediation_steps: Recommended steps for remediation
+ :vartype remediation_steps: str
+ :ivar reported_severity: Assessed recommendation severity. Possible values
+ include: 'Informational', 'Low', 'Medium', 'High'
+ :vartype reported_severity: str or
+ ~azure.mgmt.security.models.ReportedSeverity
+ :ivar healthy_devices: Number of healthy devices within the IoT Security
+ solution.
+ :vartype healthy_devices: int
+ :ivar unhealthy_device_count: Number of unhealthy devices within the IoT
+ Security solution.
+ :vartype unhealthy_device_count: int
+ :ivar log_analytics_query: Log analytics query for getting the list of
+ affected devices/alerts.
+ :vartype log_analytics_query: str
"""
_validation = {
@@ -3761,6 +4847,63 @@ def __init__(self, *, display_name: str, iot_hubs, tags=None, location: str=None
self.unmasked_ip_logging_status = unmasked_ip_logging_status
+class IotSensor(Resource):
+ """IoT sensor.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties: IoT sensor properties
+ :type properties: object
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'properties': {'key': 'properties', 'type': 'object'},
+ }
+
+ def __init__(self, *, properties=None, **kwargs) -> None:
+ super(IotSensor, self).__init__(**kwargs)
+ self.properties = properties
+
+
+class IotSensorsList(Model):
+ """List of IoT sensors.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar value: List data
+ :vartype value: list[~azure.mgmt.security.models.IotSensor]
+ """
+
+ _validation = {
+ 'value': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[IotSensor]'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(IotSensorsList, self).__init__(**kwargs)
+ self.value = None
+
+
class IoTSeverityMetrics(Model):
"""IoT Security solution analytics severity metrics.
@@ -3785,6 +4928,49 @@ def __init__(self, *, high: int=None, medium: int=None, low: int=None, **kwargs)
self.low = low
+class IpAddress(Model):
+ """IP Address information.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar v4_address: IPV4 address
+ :vartype v4_address: str
+ :ivar detection_time: Detection time of the ip address.
+ :vartype detection_time: datetime
+ :ivar subnet_cidr: Subnet Classless Inter-Domain Routing
+ :vartype subnet_cidr: str
+ :ivar fqdn: Fully qualified domain name
+ :vartype fqdn: str
+ :ivar fqdn_last_lookup_time: FQDN last lookup time.
+ :vartype fqdn_last_lookup_time: datetime
+ """
+
+ _validation = {
+ 'v4_address': {'readonly': True},
+ 'detection_time': {'readonly': True},
+ 'subnet_cidr': {'readonly': True},
+ 'fqdn': {'readonly': True},
+ 'fqdn_last_lookup_time': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'v4_address': {'key': 'v4Address', 'type': 'str'},
+ 'detection_time': {'key': 'detectionTime', 'type': 'iso-8601'},
+ 'subnet_cidr': {'key': 'subnetCidr', 'type': 'str'},
+ 'fqdn': {'key': 'fqdn', 'type': 'str'},
+ 'fqdn_last_lookup_time': {'key': 'fqdnLastLookupTime', 'type': 'iso-8601'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(IpAddress, self).__init__(**kwargs)
+ self.v4_address = None
+ self.detection_time = None
+ self.subnet_cidr = None
+ self.fqdn = None
+ self.fqdn_last_lookup_time = None
+
+
class JitNetworkAccessPolicy(Model):
"""JitNetworkAccessPolicy.
@@ -4188,40 +5374,130 @@ class LocalUserNotAllowed(AllowlistCustomAlertRule):
}
_attribute_map = {
- 'display_name': {'key': 'displayName', 'type': 'str'},
- 'description': {'key': 'description', 'type': 'str'},
- 'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
- 'rule_type': {'key': 'ruleType', 'type': 'str'},
- 'value_type': {'key': 'valueType', 'type': 'str'},
- 'allowlist_values': {'key': 'allowlistValues', 'type': '[str]'},
+ 'display_name': {'key': 'displayName', 'type': 'str'},
+ 'description': {'key': 'description', 'type': 'str'},
+ 'is_enabled': {'key': 'isEnabled', 'type': 'bool'},
+ 'rule_type': {'key': 'ruleType', 'type': 'str'},
+ 'value_type': {'key': 'valueType', 'type': 'str'},
+ 'allowlist_values': {'key': 'allowlistValues', 'type': '[str]'},
+ }
+
+ def __init__(self, *, is_enabled: bool, allowlist_values, **kwargs) -> None:
+ super(LocalUserNotAllowed, self).__init__(is_enabled=is_enabled, allowlist_values=allowlist_values, **kwargs)
+ self.rule_type = 'LocalUserNotAllowed'
+
+
+class Location(Model):
+ """Describes an Azure resource with location.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ """
+
+ _validation = {
+ 'location': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'location': {'key': 'location', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(Location, self).__init__(**kwargs)
+ self.location = None
+
+
+class LogAnalyticsIdentifier(ResourceIdentifier):
+ """Represents a Log Analytics workspace scope identifier.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param type: Required. Constant filled by server.
+ :type type: str
+ :ivar workspace_id: The LogAnalytics workspace id that stores this alert.
+ :vartype workspace_id: str
+ :ivar workspace_subscription_id: The azure subscription id for the
+ LogAnalytics workspace storing this alert.
+ :vartype workspace_subscription_id: str
+ :ivar workspace_resource_group: The azure resource group for the
+ LogAnalytics workspace storing this alert
+ :vartype workspace_resource_group: str
+ :ivar agent_id: (optional) The LogAnalytics agent id reporting the event
+ that this alert is based on.
+ :vartype agent_id: str
+ """
+
+ _validation = {
+ 'type': {'required': True},
+ 'workspace_id': {'readonly': True},
+ 'workspace_subscription_id': {'readonly': True, 'pattern': r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'},
+ 'workspace_resource_group': {'readonly': True},
+ 'agent_id': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'type': {'key': 'type', 'type': 'str'},
+ 'workspace_id': {'key': 'workspaceId', 'type': 'str'},
+ 'workspace_subscription_id': {'key': 'workspaceSubscriptionId', 'type': 'str'},
+ 'workspace_resource_group': {'key': 'workspaceResourceGroup', 'type': 'str'},
+ 'agent_id': {'key': 'agentId', 'type': 'str'},
}
- def __init__(self, *, is_enabled: bool, allowlist_values, **kwargs) -> None:
- super(LocalUserNotAllowed, self).__init__(is_enabled=is_enabled, allowlist_values=allowlist_values, **kwargs)
- self.rule_type = 'LocalUserNotAllowed'
+ def __init__(self, **kwargs) -> None:
+ super(LogAnalyticsIdentifier, self).__init__(**kwargs)
+ self.workspace_id = None
+ self.workspace_subscription_id = None
+ self.workspace_resource_group = None
+ self.agent_id = None
+ self.type = 'LogAnalytics'
-class Location(Model):
- """Describes an Azure resource with location.
+class MacAddress(Model):
+ """MAC Address information.
Variables are only populated by the server, and will be ignored when
sending a request.
- :ivar location: Location where the resource is stored
- :vartype location: str
+ :ivar address: MAC address
+ :vartype address: str
+ :ivar detection_time: Detection time of the mac address.
+ :vartype detection_time: datetime
+ :ivar significance: Indicates whether this is the primary secondary MAC
+ address of the device. Possible values include: 'Primary', 'Secondary'
+ :vartype significance: str or ~azure.mgmt.security.models.MacSignificance
+ :ivar relation_to_ip_status: Indicates whether the relation of the mac to
+ the ip address is certain or a guess. Possible values include: 'Guess',
+ 'Certain'
+ :vartype relation_to_ip_status: str or
+ ~azure.mgmt.security.models.RelationToIpStatus
"""
_validation = {
- 'location': {'readonly': True},
+ 'address': {'readonly': True},
+ 'detection_time': {'readonly': True},
+ 'significance': {'readonly': True},
+ 'relation_to_ip_status': {'readonly': True},
}
_attribute_map = {
- 'location': {'key': 'location', 'type': 'str'},
+ 'address': {'key': 'address', 'type': 'str'},
+ 'detection_time': {'key': 'detectionTime', 'type': 'iso-8601'},
+ 'significance': {'key': 'significance', 'type': 'str'},
+ 'relation_to_ip_status': {'key': 'relationToIpStatus', 'type': 'str'},
}
def __init__(self, **kwargs) -> None:
- super(Location, self).__init__(**kwargs)
- self.location = None
+ super(MacAddress, self).__init__(**kwargs)
+ self.address = None
+ self.detection_time = None
+ self.significance = None
+ self.relation_to_ip_status = None
class MqttC2DMessagesNotInAllowedRange(TimeWindowCustomAlertRule):
@@ -4372,9 +5648,100 @@ def __init__(self, *, is_enabled: bool, min_threshold: int, max_threshold: int,
self.rule_type = 'MqttD2CMessagesNotInAllowedRange'
+class NetworkInterface(Model):
+ """Network interface.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :param ip_address:
+ :type ip_address: ~azure.mgmt.security.models.IpAddress
+ :param mac_address:
+ :type mac_address: ~azure.mgmt.security.models.MacAddress
+ :ivar vlans: List of device vlans.
+ :vartype vlans: list[str]
+ """
+
+ _validation = {
+ 'vlans': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'ip_address': {'key': 'ipAddress', 'type': 'IpAddress'},
+ 'mac_address': {'key': 'macAddress', 'type': 'MacAddress'},
+ 'vlans': {'key': 'vlans', 'type': '[str]'},
+ }
+
+ def __init__(self, *, ip_address=None, mac_address=None, **kwargs) -> None:
+ super(NetworkInterface, self).__init__(**kwargs)
+ self.ip_address = ip_address
+ self.mac_address = mac_address
+ self.vlans = None
+
+
+class OnPremiseIotSensor(Resource):
+ """On-premise IoT sensor.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties: On-premise IoT sensor properties
+ :type properties: object
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'properties': {'key': 'properties', 'type': 'object'},
+ }
+
+ def __init__(self, *, properties=None, **kwargs) -> None:
+ super(OnPremiseIotSensor, self).__init__(**kwargs)
+ self.properties = properties
+
+
+class OnPremiseIotSensorsList(Model):
+ """List of on-premise IoT sensors.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar value: List data
+ :vartype value: list[~azure.mgmt.security.models.OnPremiseIotSensor]
+ """
+
+ _validation = {
+ 'value': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[OnPremiseIotSensor]'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(OnPremiseIotSensorsList, self).__init__(**kwargs)
+ self.value = None
+
+
class OnPremiseResourceDetails(ResourceDetails):
"""Details of the On Premise resource that was assessed.
+ You probably want to use the sub-classes and not this class directly. Known
+ sub-classes are: OnPremiseSqlResourceDetails
+
All required parameters must be populated in order to send to Azure.
:param source: Required. Constant filled by server.
@@ -4407,6 +5774,10 @@ class OnPremiseResourceDetails(ResourceDetails):
'machine_name': {'key': 'machineName', 'type': 'str'},
}
+ _subtype_map = {
+ 'source': {'OnPremiseSql': 'OnPremiseSqlResourceDetails'}
+ }
+
def __init__(self, *, workspace_id: str, vmuuid: str, source_computer_id: str, machine_name: str, **kwargs) -> None:
super(OnPremiseResourceDetails, self).__init__(**kwargs)
self.workspace_id = workspace_id
@@ -4416,6 +5787,57 @@ def __init__(self, *, workspace_id: str, vmuuid: str, source_computer_id: str, m
self.source = 'OnPremise'
+class OnPremiseSqlResourceDetails(OnPremiseResourceDetails):
+ """Details of the On Premise Sql resource that was assessed.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :param source: Required. Constant filled by server.
+ :type source: str
+ :param workspace_id: Required. Azure resource Id of the workspace the
+ machine is attached to
+ :type workspace_id: str
+ :param vmuuid: Required. The unique Id of the machine
+ :type vmuuid: str
+ :param source_computer_id: Required. The oms agent Id installed on the
+ machine
+ :type source_computer_id: str
+ :param machine_name: Required. The name of the machine
+ :type machine_name: str
+ :param server_name: Required. The Sql server name installed on the machine
+ :type server_name: str
+ :param database_name: Required. The Sql database name installed on the
+ machine
+ :type database_name: str
+ """
+
+ _validation = {
+ 'source': {'required': True},
+ 'workspace_id': {'required': True},
+ 'vmuuid': {'required': True},
+ 'source_computer_id': {'required': True},
+ 'machine_name': {'required': True},
+ 'server_name': {'required': True},
+ 'database_name': {'required': True},
+ }
+
+ _attribute_map = {
+ 'source': {'key': 'source', 'type': 'str'},
+ 'workspace_id': {'key': 'workspaceId', 'type': 'str'},
+ 'vmuuid': {'key': 'vmuuid', 'type': 'str'},
+ 'source_computer_id': {'key': 'sourceComputerId', 'type': 'str'},
+ 'machine_name': {'key': 'machineName', 'type': 'str'},
+ 'server_name': {'key': 'serverName', 'type': 'str'},
+ 'database_name': {'key': 'databaseName', 'type': 'str'},
+ }
+
+ def __init__(self, *, workspace_id: str, vmuuid: str, source_computer_id: str, machine_name: str, server_name: str, database_name: str, **kwargs) -> None:
+ super(OnPremiseSqlResourceDetails, self).__init__(workspace_id=workspace_id, vmuuid=vmuuid, source_computer_id=source_computer_id, machine_name=machine_name, **kwargs)
+ self.server_name = server_name
+ self.database_name = database_name
+ self.source = 'OnPremiseSql'
+
+
class Operation(Model):
"""Possible operation in the REST API of Microsoft.Security.
@@ -4472,24 +5894,299 @@ class OperationDisplay(Model):
}
_attribute_map = {
- 'provider': {'key': 'provider', 'type': 'str'},
- 'resource': {'key': 'resource', 'type': 'str'},
- 'operation': {'key': 'operation', 'type': 'str'},
- 'description': {'key': 'description', 'type': 'str'},
+ 'provider': {'key': 'provider', 'type': 'str'},
+ 'resource': {'key': 'resource', 'type': 'str'},
+ 'operation': {'key': 'operation', 'type': 'str'},
+ 'description': {'key': 'description', 'type': 'str'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(OperationDisplay, self).__init__(**kwargs)
+ self.provider = None
+ self.resource = None
+ self.operation = None
+ self.description = None
+
+
+class PackageDownloadInfo(Model):
+ """Information on a specific package download.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar version: Version number
+ :vartype version: str
+ :param link: Download link
+ :type link: str
+ :ivar version_kind: Kind of the version. Possible values include:
+ 'Latest', 'Previous', 'Preview'
+ :vartype version_kind: str or ~azure.mgmt.security.models.VersionKind
+ """
+
+ _validation = {
+ 'version': {'readonly': True},
+ 'version_kind': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'version': {'key': 'version', 'type': 'str'},
+ 'link': {'key': 'link', 'type': 'str'},
+ 'version_kind': {'key': 'versionKind', 'type': 'str'},
+ }
+
+ def __init__(self, *, link: str=None, **kwargs) -> None:
+ super(PackageDownloadInfo, self).__init__(**kwargs)
+ self.version = None
+ self.link = link
+ self.version_kind = None
+
+
+class PackageDownloads(Model):
+ """Information about package downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar sensor: Contains all Sensor binary downloads
+ :vartype sensor: ~azure.mgmt.security.models.PackageDownloadsSensor
+ :ivar central_manager: All downloads for Central Manager
+ :vartype central_manager:
+ ~azure.mgmt.security.models.PackageDownloadsCentralManager
+ :ivar threat_intelligence: All downloads for threat intelligence
+ :vartype threat_intelligence:
+ ~azure.mgmt.security.models.PackageDownloadsThreatIntelligence
+ """
+
+ _validation = {
+ 'sensor': {'readonly': True},
+ 'central_manager': {'readonly': True},
+ 'threat_intelligence': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'sensor': {'key': 'sensor', 'type': 'PackageDownloadsSensor'},
+ 'central_manager': {'key': 'centralManager', 'type': 'PackageDownloadsCentralManager'},
+ 'threat_intelligence': {'key': 'threatIntelligence', 'type': 'PackageDownloadsThreatIntelligence'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(PackageDownloads, self).__init__(**kwargs)
+ self.sensor = None
+ self.central_manager = None
+ self.threat_intelligence = None
+
+
+class PackageDownloadsCentralManager(Model):
+ """All downloads for Central Manager.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar full: Contains full package downloads
+ :vartype full:
+ ~azure.mgmt.security.models.PackageDownloadsCentralManagerFull
+ :ivar upgrade: Central Manager upgrade package downloads (on existing
+ installations)
+ :vartype upgrade: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'full': {'readonly': True},
+ 'upgrade': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'full': {'key': 'full', 'type': 'PackageDownloadsCentralManagerFull'},
+ 'upgrade': {'key': 'upgrade', 'type': '[PackageDownloadInfo]'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(PackageDownloadsCentralManager, self).__init__(**kwargs)
+ self.full = None
+ self.upgrade = None
+
+
+class PackageDownloadsCentralManagerFull(Model):
+ """Contains full package downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar iso: Contains all ISO full versions of the Central Manager
+ :vartype iso: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar ovf: Contains all OVF (virtual machine) full versions of the Central
+ Manager
+ :vartype ovf:
+ ~azure.mgmt.security.models.PackageDownloadsCentralManagerFullOvf
+ """
+
+ _validation = {
+ 'iso': {'readonly': True},
+ 'ovf': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'iso': {'key': 'iso', 'type': '[PackageDownloadInfo]'},
+ 'ovf': {'key': 'ovf', 'type': 'PackageDownloadsCentralManagerFullOvf'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(PackageDownloadsCentralManagerFull, self).__init__(**kwargs)
+ self.iso = None
+ self.ovf = None
+
+
+class PackageDownloadsCentralManagerFullOvf(Model):
+ """Contains all OVF (virtual machine) full versions of the Central Manager.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar enterprise: The Enterprise package type
+ :vartype enterprise: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar enterprise_high_availability: The EnterpriseHighAvailability package
+ type
+ :vartype enterprise_high_availability:
+ list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar medium: The Medium package type
+ :vartype medium: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar medium_high_availability: The MediumHighAvailability package type
+ :vartype medium_high_availability:
+ list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'enterprise': {'readonly': True},
+ 'enterprise_high_availability': {'readonly': True},
+ 'medium': {'readonly': True},
+ 'medium_high_availability': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'enterprise': {'key': 'enterprise', 'type': '[PackageDownloadInfo]'},
+ 'enterprise_high_availability': {'key': 'enterpriseHighAvailability', 'type': '[PackageDownloadInfo]'},
+ 'medium': {'key': 'medium', 'type': '[PackageDownloadInfo]'},
+ 'medium_high_availability': {'key': 'mediumHighAvailability', 'type': '[PackageDownloadInfo]'},
+ }
+
+ def __init__(self, **kwargs) -> None:
+ super(PackageDownloadsCentralManagerFullOvf, self).__init__(**kwargs)
+ self.enterprise = None
+ self.enterprise_high_availability = None
+ self.medium = None
+ self.medium_high_availability = None
+
+
+class PackageDownloadsSensor(Model):
+ """Contains all Sensor binary downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar full: Contains full package downloads
+ :vartype full: ~azure.mgmt.security.models.PackageDownloadsSensorFull
+ :param upgrade: Sensor upgrade package downloads (on existing
+ installations)
+ :type upgrade: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'full': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'full': {'key': 'full', 'type': 'PackageDownloadsSensorFull'},
+ 'upgrade': {'key': 'upgrade', 'type': '[PackageDownloadInfo]'},
+ }
+
+ def __init__(self, *, upgrade=None, **kwargs) -> None:
+ super(PackageDownloadsSensor, self).__init__(**kwargs)
+ self.full = None
+ self.upgrade = upgrade
+
+
+class PackageDownloadsSensorFull(Model):
+ """Contains full package downloads.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar iso: Contains all ISO full versions for the sensor
+ :vartype iso: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :param ovf: Contains all OVF (virtual machine) full versions for the
+ sensor
+ :type ovf: ~azure.mgmt.security.models.PackageDownloadsSensorFullOvf
+ """
+
+ _validation = {
+ 'iso': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'iso': {'key': 'iso', 'type': '[PackageDownloadInfo]'},
+ 'ovf': {'key': 'ovf', 'type': 'PackageDownloadsSensorFullOvf'},
+ }
+
+ def __init__(self, *, ovf=None, **kwargs) -> None:
+ super(PackageDownloadsSensorFull, self).__init__(**kwargs)
+ self.iso = None
+ self.ovf = ovf
+
+
+class PackageDownloadsSensorFullOvf(Model):
+ """Contains all OVF (virtual machine) full versions for the sensor.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar enterprise: Enterprise package type
+ :vartype enterprise: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar medium: Medium package type
+ :vartype medium: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ :ivar line: Line package type
+ :vartype line: list[~azure.mgmt.security.models.PackageDownloadInfo]
+ """
+
+ _validation = {
+ 'enterprise': {'readonly': True},
+ 'medium': {'readonly': True},
+ 'line': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'enterprise': {'key': 'enterprise', 'type': '[PackageDownloadInfo]'},
+ 'medium': {'key': 'medium', 'type': '[PackageDownloadInfo]'},
+ 'line': {'key': 'line', 'type': '[PackageDownloadInfo]'},
}
def __init__(self, **kwargs) -> None:
- super(OperationDisplay, self).__init__(**kwargs)
- self.provider = None
- self.resource = None
- self.operation = None
- self.description = None
+ super(PackageDownloadsSensorFullOvf, self).__init__(**kwargs)
+ self.enterprise = None
+ self.medium = None
+ self.line = None
+
+
+class PackageDownloadsThreatIntelligence(Model):
+ """All downloads for threat intelligence.
+
+ :param link: Download link
+ :type link: str
+ """
+
+ _attribute_map = {
+ 'link': {'key': 'link', 'type': 'str'},
+ }
+
+ def __init__(self, *, link: str=None, **kwargs) -> None:
+ super(PackageDownloadsThreatIntelligence, self).__init__(**kwargs)
+ self.link = link
class PathRecommendation(Model):
"""Represents a path that is recommended to be allowed and its properties.
- :param path: The full path to whitelist
+ :param path: The full path of the file, or an identifier of the
+ application
:type path: str
:param action: Possible values include: 'Recommended', 'Add', 'Remove'
:type action: str or ~azure.mgmt.security.models.enum
@@ -4499,7 +6196,7 @@ class PathRecommendation(Model):
:type type: str or ~azure.mgmt.security.models.enum
:param publisher_info:
:type publisher_info: ~azure.mgmt.security.models.PublisherInfo
- :param common: Whether the path is commonly run on the machine
+ :param common: Whether the application is commonly run on the machine
:type common: bool
:param user_sids:
:type user_sids: list[str]
@@ -4687,6 +6384,54 @@ def __init__(self, *, exe=None, msi=None, script=None, executable=None, **kwargs
self.executable = executable
+class Protocol1(Model):
+ """Protocol data.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar name: Protocol name
+ :vartype name: str
+ :param identifiers: list of protocol identifiers.
+ :type identifiers: str
+ """
+
+ _validation = {
+ 'name': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'identifiers': {'key': 'identifiers', 'type': 'str'},
+ }
+
+ def __init__(self, *, identifiers: str=None, **kwargs) -> None:
+ super(Protocol1, self).__init__(**kwargs)
+ self.name = None
+ self.identifiers = identifiers
+
+
+class ProxyServerProperties(Model):
+ """For a non-Azure machine that is not connected directly to the internet,
+ specify a proxy server that the non-Azure machine can use.
+
+ :param ip: Proxy server IP
+ :type ip: str
+ :param port: Proxy server port
+ :type port: str
+ """
+
+ _attribute_map = {
+ 'ip': {'key': 'ip', 'type': 'str'},
+ 'port': {'key': 'port', 'type': 'str'},
+ }
+
+ def __init__(self, *, ip: str=None, port: str=None, **kwargs) -> None:
+ super(ProxyServerProperties, self).__init__(**kwargs)
+ self.ip = ip
+ self.port = port
+
+
class PublisherInfo(Model):
"""Represents the publisher information of a process/rule.
@@ -4720,6 +6465,30 @@ def __init__(self, *, publisher_name: str=None, product_name: str=None, binary_n
self.version = version
+class QueryCheck(Model):
+ """The rule query details.
+
+ :param query: The rule query.
+ :type query: str
+ :param expected_result: Expected result.
+ :type expected_result: list[list[str]]
+ :param column_names: Column names of expected result.
+ :type column_names: list[str]
+ """
+
+ _attribute_map = {
+ 'query': {'key': 'query', 'type': 'str'},
+ 'expected_result': {'key': 'expectedResult', 'type': '[[str]]'},
+ 'column_names': {'key': 'columnNames', 'type': '[str]'},
+ }
+
+ def __init__(self, *, query: str=None, expected_result=None, column_names=None, **kwargs) -> None:
+ super(QueryCheck, self).__init__(**kwargs)
+ self.query = query
+ self.expected_result = expected_result
+ self.column_names = column_names
+
+
class QueuePurgesNotInAllowedRange(TimeWindowCustomAlertRule):
"""Number of device queue purges is not in allowed range.
@@ -4926,34 +6695,375 @@ class RegulatoryComplianceControl(Resource):
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'description': {'readonly': True},
- 'passed_assessments': {'readonly': True},
- 'failed_assessments': {'readonly': True},
- 'skipped_assessments': {'readonly': True},
+ 'description': {'readonly': True},
+ 'passed_assessments': {'readonly': True},
+ 'failed_assessments': {'readonly': True},
+ 'skipped_assessments': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'description': {'key': 'properties.description', 'type': 'str'},
+ 'state': {'key': 'properties.state', 'type': 'str'},
+ 'passed_assessments': {'key': 'properties.passedAssessments', 'type': 'int'},
+ 'failed_assessments': {'key': 'properties.failedAssessments', 'type': 'int'},
+ 'skipped_assessments': {'key': 'properties.skippedAssessments', 'type': 'int'},
+ }
+
+ def __init__(self, *, state=None, **kwargs) -> None:
+ super(RegulatoryComplianceControl, self).__init__(**kwargs)
+ self.description = None
+ self.state = state
+ self.passed_assessments = None
+ self.failed_assessments = None
+ self.skipped_assessments = None
+
+
+class RegulatoryComplianceStandard(Resource):
+ """Regulatory compliance standard details and state.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param state: Aggregative state based on the standard's supported controls
+ states. Possible values include: 'Passed', 'Failed', 'Skipped',
+ 'Unsupported'
+ :type state: str or ~azure.mgmt.security.models.State
+ :ivar passed_controls: The number of supported regulatory compliance
+ controls of the given standard with a passed state
+ :vartype passed_controls: int
+ :ivar failed_controls: The number of supported regulatory compliance
+ controls of the given standard with a failed state
+ :vartype failed_controls: int
+ :ivar skipped_controls: The number of supported regulatory compliance
+ controls of the given standard with a skipped state
+ :vartype skipped_controls: int
+ :ivar unsupported_controls: The number of regulatory compliance controls
+ of the given standard which are unsupported by automated assessments
+ :vartype unsupported_controls: int
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'passed_controls': {'readonly': True},
+ 'failed_controls': {'readonly': True},
+ 'skipped_controls': {'readonly': True},
+ 'unsupported_controls': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'state': {'key': 'properties.state', 'type': 'str'},
+ 'passed_controls': {'key': 'properties.passedControls', 'type': 'int'},
+ 'failed_controls': {'key': 'properties.failedControls', 'type': 'int'},
+ 'skipped_controls': {'key': 'properties.skippedControls', 'type': 'int'},
+ 'unsupported_controls': {'key': 'properties.unsupportedControls', 'type': 'int'},
+ }
+
+ def __init__(self, *, state=None, **kwargs) -> None:
+ super(RegulatoryComplianceStandard, self).__init__(**kwargs)
+ self.state = state
+ self.passed_controls = None
+ self.failed_controls = None
+ self.skipped_controls = None
+ self.unsupported_controls = None
+
+
+class Remediation(Model):
+ """Remediation details.
+
+ :param description: Remediation description.
+ :type description: str
+ :param scripts: Remediation script.
+ :type scripts: list[str]
+ :param automated: Is remediation automated.
+ :type automated: bool
+ :param portal_link: Optional link to remediate in Azure Portal.
+ :type portal_link: str
+ """
+
+ _attribute_map = {
+ 'description': {'key': 'description', 'type': 'str'},
+ 'scripts': {'key': 'scripts', 'type': '[str]'},
+ 'automated': {'key': 'automated', 'type': 'bool'},
+ 'portal_link': {'key': 'portalLink', 'type': 'str'},
+ }
+
+ def __init__(self, *, description: str=None, scripts=None, automated: bool=None, portal_link: str=None, **kwargs) -> None:
+ super(Remediation, self).__init__(**kwargs)
+ self.description = description
+ self.scripts = scripts
+ self.automated = automated
+ self.portal_link = portal_link
+
+
+class Rule(Model):
+ """Describes remote addresses that is recommended to communicate with the
+ Azure resource on some (Protocol, Port, Direction). All other remote
+ addresses are recommended to be blocked.
+
+ :param name: The name of the rule
+ :type name: str
+ :param direction: The rule's direction. Possible values include:
+ 'Inbound', 'Outbound'
+ :type direction: str or ~azure.mgmt.security.models.Direction
+ :param destination_port: The rule's destination port
+ :type destination_port: int
+ :param protocols: The rule's transport protocols
+ :type protocols: list[str or
+ ~azure.mgmt.security.models.TransportProtocol]
+ :param ip_addresses: The remote IP addresses that should be able to
+ communicate with the Azure resource on the rule's destination port and
+ protocol
+ :type ip_addresses: list[str]
+ """
+
+ _attribute_map = {
+ 'name': {'key': 'name', 'type': 'str'},
+ 'direction': {'key': 'direction', 'type': 'str'},
+ 'destination_port': {'key': 'destinationPort', 'type': 'int'},
+ 'protocols': {'key': 'protocols', 'type': '[str]'},
+ 'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'},
+ }
+
+ def __init__(self, *, name: str=None, direction=None, destination_port: int=None, protocols=None, ip_addresses=None, **kwargs) -> None:
+ super(Rule, self).__init__(**kwargs)
+ self.name = name
+ self.direction = direction
+ self.destination_port = destination_port
+ self.protocols = protocols
+ self.ip_addresses = ip_addresses
+
+
+class RuleResults(Resource):
+ """Rule results.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties:
+ :type properties: ~azure.mgmt.security.models.RuleResultsProperties
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'properties': {'key': 'properties', 'type': 'RuleResultsProperties'},
+ }
+
+ def __init__(self, *, properties=None, **kwargs) -> None:
+ super(RuleResults, self).__init__(**kwargs)
+ self.properties = properties
+
+
+class RuleResultsInput(Model):
+ """Rule results input.
+
+ :param latest_scan: Take results from latest scan.
+ :type latest_scan: bool
+ :param results: Expected results to be inserted into the baseline.
+ Leave this field empty it LatestScan == true.
+ :type results: list[list[str]]
+ """
+
+ _attribute_map = {
+ 'latest_scan': {'key': 'latestScan', 'type': 'bool'},
+ 'results': {'key': 'results', 'type': '[[str]]'},
+ }
+
+ def __init__(self, *, latest_scan: bool=None, results=None, **kwargs) -> None:
+ super(RuleResultsInput, self).__init__(**kwargs)
+ self.latest_scan = latest_scan
+ self.results = results
+
+
+class RuleResultsProperties(Model):
+ """Rule results properties.
+
+ :param results: Expected results in the baseline.
+ :type results: list[list[str]]
+ """
+
+ _attribute_map = {
+ 'results': {'key': 'results', 'type': '[[str]]'},
+ }
+
+ def __init__(self, *, results=None, **kwargs) -> None:
+ super(RuleResultsProperties, self).__init__(**kwargs)
+ self.results = results
+
+
+class RulesResults(Model):
+ """A list of rules results.
+
+ :param value: List of rule results.
+ :type value: list[~azure.mgmt.security.models.RuleResults]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[RuleResults]'},
+ }
+
+ def __init__(self, *, value=None, **kwargs) -> None:
+ super(RulesResults, self).__init__(**kwargs)
+ self.value = value
+
+
+class RulesResultsInput(Model):
+ """Rules results input.
+
+ :param latest_scan: Take results from latest scan.
+ :type latest_scan: bool
+ :param results: Expected results to be inserted into the baseline.
+ Leave this field empty it LatestScan == true.
+ :type results: dict[str, list[list[str]]]
+ """
+
+ _attribute_map = {
+ 'latest_scan': {'key': 'latestScan', 'type': 'bool'},
+ 'results': {'key': 'results', 'type': '{[[str]]}'},
+ }
+
+ def __init__(self, *, latest_scan: bool=None, results=None, **kwargs) -> None:
+ super(RulesResultsInput, self).__init__(**kwargs)
+ self.latest_scan = latest_scan
+ self.results = results
+
+
+class Scan(Resource):
+ """A vulnerability assessment scan record.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :param properties:
+ :type properties: ~azure.mgmt.security.models.ScanProperties
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'description': {'key': 'properties.description', 'type': 'str'},
- 'state': {'key': 'properties.state', 'type': 'str'},
- 'passed_assessments': {'key': 'properties.passedAssessments', 'type': 'int'},
- 'failed_assessments': {'key': 'properties.failedAssessments', 'type': 'int'},
- 'skipped_assessments': {'key': 'properties.skippedAssessments', 'type': 'int'},
+ 'properties': {'key': 'properties', 'type': 'ScanProperties'},
}
- def __init__(self, *, state=None, **kwargs) -> None:
- super(RegulatoryComplianceControl, self).__init__(**kwargs)
- self.description = None
- self.state = state
- self.passed_assessments = None
- self.failed_assessments = None
- self.skipped_assessments = None
+ def __init__(self, *, properties=None, **kwargs) -> None:
+ super(Scan, self).__init__(**kwargs)
+ self.properties = properties
-class RegulatoryComplianceStandard(Resource):
- """Regulatory compliance standard details and state.
+class ScanProperties(Model):
+ """A vulnerability assessment scan record properties.
+
+ :param trigger_type: Possible values include: 'OnDemand', 'Recurring'
+ :type trigger_type: str or ~azure.mgmt.security.models.ScanTriggerType
+ :param state: Possible values include: 'Failed', 'FailedToRun',
+ 'InProgress', 'Passed'
+ :type state: str or ~azure.mgmt.security.models.ScanState
+ :param server: The server name.
+ :type server: str
+ :param database: The database name.
+ :type database: str
+ :param sql_version: The SQL version.
+ :type sql_version: str
+ :param start_time: The scan start time (UTC).
+ :type start_time: datetime
+ :param end_time: Scan results are valid until end time (UTC).
+ :type end_time: datetime
+ :param high_severity_failed_rules_count: The number of failed rules with
+ high severity.
+ :type high_severity_failed_rules_count: int
+ :param medium_severity_failed_rules_count: The number of failed rules with
+ medium severity.
+ :type medium_severity_failed_rules_count: int
+ :param low_severity_failed_rules_count: The number of failed rules with
+ low severity.
+ :type low_severity_failed_rules_count: int
+ :param total_passed_rules_count: The number of total passed rules.
+ :type total_passed_rules_count: int
+ :param total_failed_rules_count: The number of total failed rules.
+ :type total_failed_rules_count: int
+ :param total_rules_count: The number of total rules assessed.
+ :type total_rules_count: int
+ :param is_baseline_applied: Baseline created for this database, and has
+ one or more rules.
+ :type is_baseline_applied: bool
+ """
+
+ _attribute_map = {
+ 'trigger_type': {'key': 'triggerType', 'type': 'str'},
+ 'state': {'key': 'state', 'type': 'str'},
+ 'server': {'key': 'server', 'type': 'str'},
+ 'database': {'key': 'database', 'type': 'str'},
+ 'sql_version': {'key': 'sqlVersion', 'type': 'str'},
+ 'start_time': {'key': 'startTime', 'type': 'iso-8601'},
+ 'end_time': {'key': 'endTime', 'type': 'iso-8601'},
+ 'high_severity_failed_rules_count': {'key': 'highSeverityFailedRulesCount', 'type': 'int'},
+ 'medium_severity_failed_rules_count': {'key': 'mediumSeverityFailedRulesCount', 'type': 'int'},
+ 'low_severity_failed_rules_count': {'key': 'lowSeverityFailedRulesCount', 'type': 'int'},
+ 'total_passed_rules_count': {'key': 'totalPassedRulesCount', 'type': 'int'},
+ 'total_failed_rules_count': {'key': 'totalFailedRulesCount', 'type': 'int'},
+ 'total_rules_count': {'key': 'totalRulesCount', 'type': 'int'},
+ 'is_baseline_applied': {'key': 'isBaselineApplied', 'type': 'bool'},
+ }
+
+ def __init__(self, *, trigger_type=None, state=None, server: str=None, database: str=None, sql_version: str=None, start_time=None, end_time=None, high_severity_failed_rules_count: int=None, medium_severity_failed_rules_count: int=None, low_severity_failed_rules_count: int=None, total_passed_rules_count: int=None, total_failed_rules_count: int=None, total_rules_count: int=None, is_baseline_applied: bool=None, **kwargs) -> None:
+ super(ScanProperties, self).__init__(**kwargs)
+ self.trigger_type = trigger_type
+ self.state = state
+ self.server = server
+ self.database = database
+ self.sql_version = sql_version
+ self.start_time = start_time
+ self.end_time = end_time
+ self.high_severity_failed_rules_count = high_severity_failed_rules_count
+ self.medium_severity_failed_rules_count = medium_severity_failed_rules_count
+ self.low_severity_failed_rules_count = low_severity_failed_rules_count
+ self.total_passed_rules_count = total_passed_rules_count
+ self.total_failed_rules_count = total_failed_rules_count
+ self.total_rules_count = total_rules_count
+ self.is_baseline_applied = is_baseline_applied
+
+
+class ScanResult(Resource):
+ """A vulnerability assessment scan result for a single rule.
Variables are only populated by the server, and will be ignored when
sending a request.
@@ -4964,90 +7074,101 @@ class RegulatoryComplianceStandard(Resource):
:vartype name: str
:ivar type: Resource type
:vartype type: str
- :param state: Aggregative state based on the standard's supported controls
- states. Possible values include: 'Passed', 'Failed', 'Skipped',
- 'Unsupported'
- :type state: str or ~azure.mgmt.security.models.State
- :ivar passed_controls: The number of supported regulatory compliance
- controls of the given standard with a passed state
- :vartype passed_controls: int
- :ivar failed_controls: The number of supported regulatory compliance
- controls of the given standard with a failed state
- :vartype failed_controls: int
- :ivar skipped_controls: The number of supported regulatory compliance
- controls of the given standard with a skipped state
- :vartype skipped_controls: int
- :ivar unsupported_controls: The number of regulatory compliance controls
- of the given standard which are unsupported by automated assessments
- :vartype unsupported_controls: int
+ :param properties:
+ :type properties: ~azure.mgmt.security.models.ScanResultProperties
"""
_validation = {
'id': {'readonly': True},
'name': {'readonly': True},
'type': {'readonly': True},
- 'passed_controls': {'readonly': True},
- 'failed_controls': {'readonly': True},
- 'skipped_controls': {'readonly': True},
- 'unsupported_controls': {'readonly': True},
}
_attribute_map = {
'id': {'key': 'id', 'type': 'str'},
'name': {'key': 'name', 'type': 'str'},
'type': {'key': 'type', 'type': 'str'},
- 'state': {'key': 'properties.state', 'type': 'str'},
- 'passed_controls': {'key': 'properties.passedControls', 'type': 'int'},
- 'failed_controls': {'key': 'properties.failedControls', 'type': 'int'},
- 'skipped_controls': {'key': 'properties.skippedControls', 'type': 'int'},
- 'unsupported_controls': {'key': 'properties.unsupportedControls', 'type': 'int'},
+ 'properties': {'key': 'properties', 'type': 'ScanResultProperties'},
}
- def __init__(self, *, state=None, **kwargs) -> None:
- super(RegulatoryComplianceStandard, self).__init__(**kwargs)
- self.state = state
- self.passed_controls = None
- self.failed_controls = None
- self.skipped_controls = None
- self.unsupported_controls = None
+ def __init__(self, *, properties=None, **kwargs) -> None:
+ super(ScanResult, self).__init__(**kwargs)
+ self.properties = properties
-class Rule(Model):
- """Describes remote addresses that is recommended to communicate with the
- Azure resource on some (Protocol, Port, Direction). All other remote
- addresses are recommended to be blocked.
+class ScanResultProperties(Model):
+ """A vulnerability assessment scan result properties for a single rule.
- :param name: The name of the rule
- :type name: str
- :param direction: The rule's direction. Possible values include:
- 'Inbound', 'Outbound'
- :type direction: str or ~azure.mgmt.security.models.Direction
- :param destination_port: The rule's destination port
- :type destination_port: int
- :param protocols: The rule's transport protocols
- :type protocols: list[str or
- ~azure.mgmt.security.models.TransportProtocol]
- :param ip_addresses: The remote IP addresses that should be able to
- communicate with the Azure resource on the rule's destination port and
- protocol
- :type ip_addresses: list[str]
+ :param rule_id: The rule Id.
+ :type rule_id: str
+ :param status: Possible values include: 'NonFinding', 'Finding',
+ 'InternalError'
+ :type status: str or ~azure.mgmt.security.models.RuleStatus
+ :param is_trimmed: Indicated whether the results specified here are
+ trimmed.
+ :type is_trimmed: bool
+ :param query_results: The results of the query that was run.
+ :type query_results: list[list[str]]
+ :param remediation:
+ :type remediation: ~azure.mgmt.security.models.Remediation
+ :param baseline_adjusted_result:
+ :type baseline_adjusted_result:
+ ~azure.mgmt.security.models.BaselineAdjustedResult
+ :param rule_metadata:
+ :type rule_metadata: ~azure.mgmt.security.models.VaRule
"""
_attribute_map = {
- 'name': {'key': 'name', 'type': 'str'},
- 'direction': {'key': 'direction', 'type': 'str'},
- 'destination_port': {'key': 'destinationPort', 'type': 'int'},
- 'protocols': {'key': 'protocols', 'type': '[str]'},
- 'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'},
+ 'rule_id': {'key': 'ruleId', 'type': 'str'},
+ 'status': {'key': 'status', 'type': 'str'},
+ 'is_trimmed': {'key': 'isTrimmed', 'type': 'bool'},
+ 'query_results': {'key': 'queryResults', 'type': '[[str]]'},
+ 'remediation': {'key': 'remediation', 'type': 'Remediation'},
+ 'baseline_adjusted_result': {'key': 'baselineAdjustedResult', 'type': 'BaselineAdjustedResult'},
+ 'rule_metadata': {'key': 'ruleMetadata', 'type': 'VaRule'},
}
- def __init__(self, *, name: str=None, direction=None, destination_port: int=None, protocols=None, ip_addresses=None, **kwargs) -> None:
- super(Rule, self).__init__(**kwargs)
- self.name = name
- self.direction = direction
- self.destination_port = destination_port
- self.protocols = protocols
- self.ip_addresses = ip_addresses
+ def __init__(self, *, rule_id: str=None, status=None, is_trimmed: bool=None, query_results=None, remediation=None, baseline_adjusted_result=None, rule_metadata=None, **kwargs) -> None:
+ super(ScanResultProperties, self).__init__(**kwargs)
+ self.rule_id = rule_id
+ self.status = status
+ self.is_trimmed = is_trimmed
+ self.query_results = query_results
+ self.remediation = remediation
+ self.baseline_adjusted_result = baseline_adjusted_result
+ self.rule_metadata = rule_metadata
+
+
+class ScanResults(Model):
+ """A list of vulnerability assessment scan results.
+
+ :param value: List of vulnerability assessment scan results.
+ :type value: list[~azure.mgmt.security.models.ScanResult]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[ScanResult]'},
+ }
+
+ def __init__(self, *, value=None, **kwargs) -> None:
+ super(ScanResults, self).__init__(**kwargs)
+ self.value = value
+
+
+class Scans(Model):
+ """A list of vulnerability assessment scan records.
+
+ :param value: List of vulnerability assessment scan records.
+ :type value: list[~azure.mgmt.security.models.Scan]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[Scan]'},
+ }
+
+ def __init__(self, *, value=None, **kwargs) -> None:
+ super(Scans, self).__init__(**kwargs)
+ self.value = value
class ScopeElement(Model):
@@ -5165,6 +7286,9 @@ class SecureScoreControlDetails(Resource):
:vartype max: int
:ivar current: Current score
:vartype current: float
+ :ivar percentage: Ratio of the current score divided by the maximum.
+ Rounded to 4 digits after the decimal point
+ :vartype percentage: float
:ivar healthy_resource_count: Number of healthy resources in the control
:vartype healthy_resource_count: int
:ivar unhealthy_resource_count: Number of unhealthy resources in the
@@ -5173,6 +7297,10 @@ class SecureScoreControlDetails(Resource):
:ivar not_applicable_resource_count: Number of not applicable resources in
the control
:vartype not_applicable_resource_count: int
+ :ivar weight: The relative weight for this specific control in each of
+ your subscriptions. Used when calculating an aggregated score for this
+ control across all of your subscriptions.
+ :vartype weight: long
:param definition:
:type definition:
~azure.mgmt.security.models.SecureScoreControlDefinitionItem
@@ -5185,9 +7313,11 @@ class SecureScoreControlDetails(Resource):
'display_name': {'readonly': True},
'max': {'readonly': True, 'minimum': 0},
'current': {'readonly': True, 'minimum': 0},
+ 'percentage': {'readonly': True, 'maximum': 1, 'minimum': 0},
'healthy_resource_count': {'readonly': True},
'unhealthy_resource_count': {'readonly': True},
'not_applicable_resource_count': {'readonly': True},
+ 'weight': {'readonly': True, 'minimum': 0},
}
_attribute_map = {
@@ -5197,9 +7327,11 @@ class SecureScoreControlDetails(Resource):
'display_name': {'key': 'properties.displayName', 'type': 'str'},
'max': {'key': 'properties.score.max', 'type': 'int'},
'current': {'key': 'properties.score.current', 'type': 'float'},
+ 'percentage': {'key': 'properties.score.percentage', 'type': 'float'},
'healthy_resource_count': {'key': 'properties.healthyResourceCount', 'type': 'int'},
'unhealthy_resource_count': {'key': 'properties.unhealthyResourceCount', 'type': 'int'},
'not_applicable_resource_count': {'key': 'properties.notApplicableResourceCount', 'type': 'int'},
+ 'weight': {'key': 'properties.weight', 'type': 'long'},
'definition': {'key': 'properties.definition', 'type': 'SecureScoreControlDefinitionItem'},
}
@@ -5208,9 +7340,11 @@ def __init__(self, *, definition=None, **kwargs) -> None:
self.display_name = None
self.max = None
self.current = None
+ self.percentage = None
self.healthy_resource_count = None
self.unhealthy_resource_count = None
self.not_applicable_resource_count = None
+ self.weight = None
self.definition = definition
@@ -5225,22 +7359,28 @@ class SecureScoreControlScore(Model):
:ivar current: Actual score for the control = (achieved points / total
points) * max score. if total points is zeroed, the return number is 0.00
:vartype current: float
+ :ivar percentage: Ratio of the current score divided by the maximum.
+ Rounded to 4 digits after the decimal point
+ :vartype percentage: float
"""
_validation = {
'max': {'readonly': True, 'maximum': 10, 'minimum': 0},
'current': {'readonly': True, 'maximum': 10, 'minimum': 0},
+ 'percentage': {'readonly': True, 'maximum': 1, 'minimum': 0},
}
_attribute_map = {
'max': {'key': 'max', 'type': 'int'},
'current': {'key': 'current', 'type': 'float'},
+ 'percentage': {'key': 'percentage', 'type': 'float'},
}
def __init__(self, **kwargs) -> None:
super(SecureScoreControlScore, self).__init__(**kwargs)
self.max = None
self.current = None
+ self.percentage = None
class SecureScoreItem(Resource):
@@ -5261,6 +7401,12 @@ class SecureScoreItem(Resource):
:vartype max: int
:ivar current: Current score
:vartype current: float
+ :ivar percentage: Ratio of the current score divided by the maximum.
+ Rounded to 4 digits after the decimal point
+ :vartype percentage: float
+ :ivar weight: The relative weight for each subscription. Used when
+ calculating an aggregated secure score for multiple subscriptions.
+ :vartype weight: long
"""
_validation = {
@@ -5270,6 +7416,8 @@ class SecureScoreItem(Resource):
'display_name': {'readonly': True},
'max': {'readonly': True, 'minimum': 0},
'current': {'readonly': True, 'minimum': 0},
+ 'percentage': {'readonly': True, 'maximum': 1, 'minimum': 0},
+ 'weight': {'readonly': True, 'minimum': 0},
}
_attribute_map = {
@@ -5279,6 +7427,8 @@ class SecureScoreItem(Resource):
'display_name': {'key': 'properties.displayName', 'type': 'str'},
'max': {'key': 'properties.score.max', 'type': 'int'},
'current': {'key': 'properties.score.current', 'type': 'float'},
+ 'percentage': {'key': 'properties.score.percentage', 'type': 'float'},
+ 'weight': {'key': 'properties.weight', 'type': 'long'},
}
def __init__(self, **kwargs) -> None:
@@ -5286,6 +7436,8 @@ def __init__(self, **kwargs) -> None:
self.display_name = None
self.max = None
self.current = None
+ self.percentage = None
+ self.weight = None
class SecurityAssessment(Resource):
@@ -5648,6 +7800,164 @@ def __init__(self, *, email: str, alert_notifications, alerts_to_admins, phone:
self.alerts_to_admins = alerts_to_admins
+class SecuritySolution(Model):
+ """SecuritySolution.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ :param security_family: Required. The security family of the security
+ solution. Possible values include: 'Waf', 'Ngfw', 'SaasWaf', 'Va'
+ :type security_family: str or ~azure.mgmt.security.models.SecurityFamily
+ :param provisioning_state: Required. The security family provisioning
+ State. Possible values include: 'Succeeded', 'Failed', 'Updating'
+ :type provisioning_state: str or
+ ~azure.mgmt.security.models.ProvisioningState
+ :param template: Required. The security solutions' template
+ :type template: str
+ :param protection_status: Required. The security solutions' status
+ :type protection_status: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'readonly': True},
+ 'security_family': {'required': True},
+ 'provisioning_state': {'required': True},
+ 'template': {'required': True},
+ 'protection_status': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'security_family': {'key': 'properties.securityFamily', 'type': 'str'},
+ 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
+ 'template': {'key': 'properties.template', 'type': 'str'},
+ 'protection_status': {'key': 'properties.protectionStatus', 'type': 'str'},
+ }
+
+ def __init__(self, *, security_family, provisioning_state, template: str, protection_status: str, **kwargs) -> None:
+ super(SecuritySolution, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.location = None
+ self.security_family = security_family
+ self.provisioning_state = provisioning_state
+ self.template = template
+ self.protection_status = protection_status
+
+
+class SecuritySolutionsReferenceData(Model):
+ """SecuritySolutionsReferenceData.
+
+ Variables are only populated by the server, and will be ignored when
+ sending a request.
+
+ All required parameters must be populated in order to send to Azure.
+
+ :ivar id: Resource Id
+ :vartype id: str
+ :ivar name: Resource name
+ :vartype name: str
+ :ivar type: Resource type
+ :vartype type: str
+ :ivar location: Location where the resource is stored
+ :vartype location: str
+ :param security_family: Required. The security family of the security
+ solution. Possible values include: 'Waf', 'Ngfw', 'SaasWaf', 'Va'
+ :type security_family: str or ~azure.mgmt.security.models.SecurityFamily
+ :param alert_vendor_name: Required. The security solutions' vendor name
+ :type alert_vendor_name: str
+ :param package_info_url: Required. The security solutions' package info
+ url
+ :type package_info_url: str
+ :param product_name: Required. The security solutions' product name
+ :type product_name: str
+ :param publisher: Required. The security solutions' publisher
+ :type publisher: str
+ :param publisher_display_name: Required. The security solutions' publisher
+ display name
+ :type publisher_display_name: str
+ :param template: Required. The security solutions' template
+ :type template: str
+ """
+
+ _validation = {
+ 'id': {'readonly': True},
+ 'name': {'readonly': True},
+ 'type': {'readonly': True},
+ 'location': {'readonly': True},
+ 'security_family': {'required': True},
+ 'alert_vendor_name': {'required': True},
+ 'package_info_url': {'required': True},
+ 'product_name': {'required': True},
+ 'publisher': {'required': True},
+ 'publisher_display_name': {'required': True},
+ 'template': {'required': True},
+ }
+
+ _attribute_map = {
+ 'id': {'key': 'id', 'type': 'str'},
+ 'name': {'key': 'name', 'type': 'str'},
+ 'type': {'key': 'type', 'type': 'str'},
+ 'location': {'key': 'location', 'type': 'str'},
+ 'security_family': {'key': 'properties.securityFamily', 'type': 'str'},
+ 'alert_vendor_name': {'key': 'properties.alertVendorName', 'type': 'str'},
+ 'package_info_url': {'key': 'properties.packageInfoUrl', 'type': 'str'},
+ 'product_name': {'key': 'properties.productName', 'type': 'str'},
+ 'publisher': {'key': 'properties.publisher', 'type': 'str'},
+ 'publisher_display_name': {'key': 'properties.publisherDisplayName', 'type': 'str'},
+ 'template': {'key': 'properties.template', 'type': 'str'},
+ }
+
+ def __init__(self, *, security_family, alert_vendor_name: str, package_info_url: str, product_name: str, publisher: str, publisher_display_name: str, template: str, **kwargs) -> None:
+ super(SecuritySolutionsReferenceData, self).__init__(**kwargs)
+ self.id = None
+ self.name = None
+ self.type = None
+ self.location = None
+ self.security_family = security_family
+ self.alert_vendor_name = alert_vendor_name
+ self.package_info_url = package_info_url
+ self.product_name = product_name
+ self.publisher = publisher
+ self.publisher_display_name = publisher_display_name
+ self.template = template
+
+
+class SecuritySolutionsReferenceDataList(Model):
+ """SecuritySolutionsReferenceDataList.
+
+ :param value:
+ :type value:
+ list[~azure.mgmt.security.models.SecuritySolutionsReferenceData]
+ """
+
+ _attribute_map = {
+ 'value': {'key': 'value', 'type': '[SecuritySolutionsReferenceData]'},
+ }
+
+ def __init__(self, *, value=None, **kwargs) -> None:
+ super(SecuritySolutionsReferenceDataList, self).__init__(**kwargs)
+ self.value = value
+
+
class SecuritySubAssessment(Resource):
"""Security sub-assessment on a resource.
@@ -5959,6 +8269,27 @@ def __init__(self, **kwargs) -> None:
self.assessed_resource_type = 'ServerVulnerabilityAssessment'
+class ServicePrincipalProperties(Model):
+ """Details of the service principal.
+
+ :param application_id: Application ID of service principal.
+ :type application_id: str
+ :param secret: A secret string that the application uses to prove its
+ identity, also can be referred to as application password (write only).
+ :type secret: str
+ """
+
+ _attribute_map = {
+ 'application_id': {'key': 'applicationId', 'type': 'str'},
+ 'secret': {'key': 'secret', 'type': 'str'},
+ }
+
+ def __init__(self, *, application_id: str=None, secret: str=None, **kwargs) -> None:
+ super(ServicePrincipalProperties, self).__init__(**kwargs)
+ self.application_id = application_id
+ self.secret = secret
+
+
class SqlServerVulnerabilityProperties(AdditionalData):
"""Details of the resource that was assessed.
@@ -6430,6 +8761,57 @@ def __init__(self, *, username: str=None, recommendation_action=None, **kwargs)
self.recommendation_action = recommendation_action
+class VaRule(Model):
+ """vulnerability assessment rule metadata details.
+
+ :param rule_id: The rule Id.
+ :type rule_id: str
+ :param severity: Possible values include: 'High', 'Medium', 'Low',
+ 'Informational', 'Obsolete'
+ :type severity: str or ~azure.mgmt.security.models.RuleSeverity
+ :param category: The rule category.
+ :type category: str
+ :param rule_type: Possible values include: 'Binary', 'BaselineExpected',
+ 'PositiveList', 'NegativeList'
+ :type rule_type: str or ~azure.mgmt.security.models.RuleType
+ :param title: The rule title.
+ :type title: str
+ :param description: The rule description.
+ :type description: str
+ :param rationale: The rule rationale.
+ :type rationale: str
+ :param query_check:
+ :type query_check: ~azure.mgmt.security.models.QueryCheck
+ :param benchmark_references: The benchmark references.
+ :type benchmark_references:
+ list[~azure.mgmt.security.models.BenchmarkReference]
+ """
+
+ _attribute_map = {
+ 'rule_id': {'key': 'ruleId', 'type': 'str'},
+ 'severity': {'key': 'severity', 'type': 'str'},
+ 'category': {'key': 'category', 'type': 'str'},
+ 'rule_type': {'key': 'ruleType', 'type': 'str'},
+ 'title': {'key': 'title', 'type': 'str'},
+ 'description': {'key': 'description', 'type': 'str'},
+ 'rationale': {'key': 'rationale', 'type': 'str'},
+ 'query_check': {'key': 'queryCheck', 'type': 'QueryCheck'},
+ 'benchmark_references': {'key': 'benchmarkReferences', 'type': '[BenchmarkReference]'},
+ }
+
+ def __init__(self, *, rule_id: str=None, severity=None, category: str=None, rule_type=None, title: str=None, description: str=None, rationale: str=None, query_check=None, benchmark_references=None, **kwargs) -> None:
+ super(VaRule, self).__init__(**kwargs)
+ self.rule_id = rule_id
+ self.severity = severity
+ self.category = category
+ self.rule_type = rule_type
+ self.title = title
+ self.description = description
+ self.rationale = rationale
+ self.query_check = query_check
+ self.benchmark_references = benchmark_references
+
+
class VendorReference(Model):
"""Vendor reference.
@@ -6459,7 +8841,7 @@ def __init__(self, **kwargs) -> None:
class VmRecommendation(Model):
- """Represents a machine that is part of a VM/server group.
+ """Represents a machine that is part of a machine group.
:param configuration_status: Possible values include: 'Configured',
'NotConfigured', 'InProgress', 'Failed', 'NoStatus'
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_paged_models.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_paged_models.py
index c470a56ff2ad..deb12454bc0c 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_paged_models.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_paged_models.py
@@ -25,19 +25,6 @@ class ComplianceResultPaged(Paged):
def __init__(self, *args, **kwargs):
super(ComplianceResultPaged, self).__init__(*args, **kwargs)
-class AlertPaged(Paged):
- """
- A paging container for iterating over a list of :class:`Alert ` object
- """
-
- _attribute_map = {
- 'next_link': {'key': 'nextLink', 'type': 'str'},
- 'current_page': {'key': 'value', 'type': '[Alert]'}
- }
-
- def __init__(self, *args, **kwargs):
-
- super(AlertPaged, self).__init__(*args, **kwargs)
class SettingPaged(Paged):
"""
A paging container for iterating over a list of :class:`Setting ` object
@@ -103,6 +90,32 @@ class IoTSecurityAggregatedRecommendationPaged(Paged):
def __init__(self, *args, **kwargs):
super(IoTSecurityAggregatedRecommendationPaged, self).__init__(*args, **kwargs)
+class IotAlertPaged(Paged):
+ """
+ A paging container for iterating over a list of :class:`IotAlert ` object
+ """
+
+ _attribute_map = {
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ 'current_page': {'key': 'value', 'type': '[IotAlert]'}
+ }
+
+ def __init__(self, *args, **kwargs):
+
+ super(IotAlertPaged, self).__init__(*args, **kwargs)
+class IotRecommendationPaged(Paged):
+ """
+ A paging container for iterating over a list of :class:`IotRecommendation ` object
+ """
+
+ _attribute_map = {
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ 'current_page': {'key': 'value', 'type': '[IotRecommendation]'}
+ }
+
+ def __init__(self, *args, **kwargs):
+
+ super(IotRecommendationPaged, self).__init__(*args, **kwargs)
class AscLocationPaged(Paged):
"""
A paging container for iterating over a list of :class:`AscLocation ` object
@@ -350,6 +363,19 @@ class TopologyResourcePaged(Paged):
def __init__(self, *args, **kwargs):
super(TopologyResourcePaged, self).__init__(*args, **kwargs)
+class AlertPaged(Paged):
+ """
+ A paging container for iterating over a list of :class:`Alert ` object
+ """
+
+ _attribute_map = {
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ 'current_page': {'key': 'value', 'type': '[Alert]'}
+ }
+
+ def __init__(self, *args, **kwargs):
+
+ super(AlertPaged, self).__init__(*args, **kwargs)
class JitNetworkAccessPolicyPaged(Paged):
"""
A paging container for iterating over a list of :class:`JitNetworkAccessPolicy ` object
@@ -428,3 +454,42 @@ class SecureScoreControlDefinitionItemPaged(Paged):
def __init__(self, *args, **kwargs):
super(SecureScoreControlDefinitionItemPaged, self).__init__(*args, **kwargs)
+class SecuritySolutionPaged(Paged):
+ """
+ A paging container for iterating over a list of :class:`SecuritySolution ` object
+ """
+
+ _attribute_map = {
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ 'current_page': {'key': 'value', 'type': '[SecuritySolution]'}
+ }
+
+ def __init__(self, *args, **kwargs):
+
+ super(SecuritySolutionPaged, self).__init__(*args, **kwargs)
+class ConnectorSettingPaged(Paged):
+ """
+ A paging container for iterating over a list of :class:`ConnectorSetting ` object
+ """
+
+ _attribute_map = {
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ 'current_page': {'key': 'value', 'type': '[ConnectorSetting]'}
+ }
+
+ def __init__(self, *args, **kwargs):
+
+ super(ConnectorSettingPaged, self).__init__(*args, **kwargs)
+class DevicePaged(Paged):
+ """
+ A paging container for iterating over a list of :class:`Device ` object
+ """
+
+ _attribute_map = {
+ 'next_link': {'key': 'nextLink', 'type': 'str'},
+ 'current_page': {'key': 'value', 'type': '[Device]'}
+ }
+
+ def __init__(self, *args, **kwargs):
+
+ super(DevicePaged, self).__init__(*args, **kwargs)
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_security_center_enums.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_security_center_enums.py
index 80839b6b303a..b5124625f2f4 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_security_center_enums.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/models/_security_center_enums.py
@@ -26,14 +26,6 @@ class PricingTier(str, Enum):
standard = "Standard" #: Get the standard Azure security center experience with advanced security features
-class ReportedSeverity(str, Enum):
-
- informational = "Informational"
- low = "Low"
- medium = "Medium"
- high = "High"
-
-
class ValueType(str, Enum):
ip_cidr = "IpCidr" #: An IP range in CIDR format (e.g. '192.168.0.1/8').
@@ -88,6 +80,53 @@ class UnmaskedIpLoggingStatus(str, Enum):
enabled = "Enabled" #: Unmasked IP logging is enabled
+class ReportedSeverity(str, Enum):
+
+ informational = "Informational"
+ low = "Low"
+ medium = "Medium"
+ high = "High"
+
+
+class AlertSeverity(str, Enum):
+
+ informational = "Informational"
+ low = "Low"
+ medium = "Medium"
+ high = "High"
+
+
+class AlertIntent(str, Enum):
+
+ unknown = "Unknown"
+ pre_attack = "PreAttack"
+ initial_access = "InitialAccess"
+ persistence = "Persistence"
+ privilege_escalation = "PrivilegeEscalation"
+ defense_evasion = "DefenseEvasion"
+ credential_access = "CredentialAccess"
+ discovery = "Discovery"
+ lateral_movement = "LateralMovement"
+ execution = "Execution"
+ collection = "Collection"
+ exfiltration = "Exfiltration"
+ command_and_control = "CommandAndControl"
+ impact = "Impact"
+ probing = "Probing"
+ exploitation = "Exploitation"
+
+
+class RecommendationSeverity(str, Enum):
+
+ unknown = "Unknown"
+ not_applicable = "NotApplicable"
+ healthy = "Healthy"
+ off_by_policy = "OffByPolicy"
+ low = "Low"
+ medium = "Medium"
+ high = "High"
+
+
class AutoProvision(str, Enum):
on = "On" #: Install missing security agent on VMs automatically
@@ -140,6 +179,7 @@ class Severity(str, Enum):
class EventSource(str, Enum):
assessments = "Assessments"
+ sub_assessments = "SubAssessments"
alerts = "Alerts"
@@ -233,6 +273,33 @@ class TransportProtocol(str, Enum):
udp = "UDP"
+class Intent(str, Enum):
+
+ unknown = "Unknown" #: Unknown
+ pre_attack = "PreAttack" #: PreAttack could be either an attempt to access a certain resource regardless of a malicious intent, or a failed attempt to gain access to a target system to gather information prior to exploitation. This step is usually detected as an attempt, originating from outside the network, to scan the target system and find a way in. Further details on the PreAttack stage can be read in [MITRE Pre-Att&ck matrix](https://attack.mitre.org/matrices/pre/).
+ initial_access = "InitialAccess" #: InitialAccess is the stage where an attacker manages to get foothold on the attacked resource.
+ persistence = "Persistence" #: Persistence is any access, action, or configuration change to a system that gives a threat actor a persistent presence on that system.
+ privilege_escalation = "PrivilegeEscalation" #: Privilege escalation is the result of actions that allow an adversary to obtain a higher level of permissions on a system or network.
+ defense_evasion = "DefenseEvasion" #: Defense evasion consists of techniques an adversary may use to evade detection or avoid other defenses.
+ credential_access = "CredentialAccess" #: Credential access represents techniques resulting in access to or control over system, domain, or service credentials that are used within an enterprise environment.
+ discovery = "Discovery" #: Discovery consists of techniques that allow the adversary to gain knowledge about the system and internal network.
+ lateral_movement = "LateralMovement" #: Lateral movement consists of techniques that enable an adversary to access and control remote systems on a network and could, but does not necessarily, include execution of tools on remote systems.
+ execution = "Execution" #: The execution tactic represents techniques that result in execution of adversary-controlled code on a local or remote system.
+ collection = "Collection" #: Collection consists of techniques used to identify and gather information, such as sensitive files, from a target network prior to exfiltration.
+ exfiltration = "Exfiltration" #: Exfiltration refers to techniques and attributes that result or aid in the adversary removing files and information from a target network.
+ command_and_control = "CommandAndControl" #: The command and control tactic represents how adversaries communicate with systems under their control within a target network.
+ impact = "Impact" #: Impact events primarily try to directly reduce the availability or integrity of a system, service, or network; including manipulation of data to impact a business or operational process.
+ probing = "Probing" #: Probing could be either an attempt to access a certain resource regardless of a malicious intent, or a failed attempt to gain access to a target system to gather information prior to exploitation.
+ exploitation = "Exploitation" #: Exploitation is the stage where an attacker manages to get a foothold on the attacked resource. This stage is relevant for compute hosts and resources such as user accounts, certificates etc.
+
+
+class AlertStatus(str, Enum):
+
+ active = "Active" #: An alert which doesn't specify a value is assigned the status 'Active'
+ resolved = "Resolved" #: Alert closed after handling
+ dismissed = "Dismissed" #: Alert dismissed as false positive
+
+
class Protocol(str, Enum):
tcp = "TCP"
@@ -281,6 +348,136 @@ class ControlType(str, Enum):
custom = "Custom" #: Non Azure Security Center managed assessments
+class ProvisioningState(str, Enum):
+
+ succeeded = "Succeeded"
+ failed = "Failed"
+ updating = "Updating"
+
+
+class HybridComputeProvisioningState(str, Enum):
+
+ valid = "Valid" #: Valid service principal details.
+ invalid = "Invalid" #: Invalid service principal details.
+ expired = "Expired" #: the service principal details are expired
+
+
+class AuthenticationProvisioningState(str, Enum):
+
+ valid = "Valid" #: Valid connector
+ invalid = "Invalid" #: Invalid connector
+ expired = "Expired" #: the connection has expired
+ incorrect_policy = "IncorrectPolicy" #: Incorrect policy of the connector
+
+
+class PermissionProperty(str, Enum):
+
+ awsaws_security_hub_read_only_access = "AWS::AWSSecurityHubReadOnlyAccess" #: This permission provides read only access to AWS Security Hub resources.
+ aws_security_audit = "AWS::SecurityAudit" #: This permission grants access to read security configuration metadata.
+ aws_amazon_ssm_automation_role = "AWS::AmazonSSMAutomationRole" #: The permission provides for EC2 Automation service to execute activities defined within Automation documents.
+ gcp_security_center_admin_viewer = "GCP::Security Center Admin Viewer" #: This permission provides read only access to GCP Security Command Center.
+
+
+class VersionKind(str, Enum):
+
+ latest = "Latest"
+ previous = "Previous"
+ preview = "Preview"
+
+
+class MacSignificance(str, Enum):
+
+ primary = "Primary"
+ secondary = "Secondary"
+
+
+class RelationToIpStatus(str, Enum):
+
+ guess = "Guess"
+ certain = "Certain"
+
+
+class ManagementState(str, Enum):
+
+ managed = "Managed"
+ unmanaged = "Unmanaged"
+
+
+class AuthorizationState(str, Enum):
+
+ authorized = "Authorized"
+ unauthorized = "Unauthorized"
+
+
+class DeviceCriticality(str, Enum):
+
+ important = "Important"
+ standard = "Standard"
+
+
+class PurdueLevel(str, Enum):
+
+ process_control = "ProcessControl"
+ supervisory = "Supervisory"
+ enterprise = "Enterprise"
+
+
+class ProgrammingState(str, Enum):
+
+ programming_device = "ProgrammingDevice"
+ not_programming_device = "NotProgrammingDevice"
+
+
+class ScanningFunctionality(str, Enum):
+
+ scanner_device = "ScannerDevice"
+ not_scanner_device = "NotScannerDevice"
+
+
+class DeviceStatus(str, Enum):
+
+ active = "Active"
+ removed = "Removed"
+
+
+class ScanTriggerType(str, Enum):
+
+ on_demand = "OnDemand" #: OnDemand
+ recurring = "Recurring" #: Recurring
+
+
+class ScanState(str, Enum):
+
+ failed = "Failed" #: Failed
+ failed_to_run = "FailedToRun" #: FailedToRun
+ in_progress = "InProgress" #: InProgress
+ passed = "Passed" #: Passed
+
+
+class RuleStatus(str, Enum):
+
+ non_finding = "NonFinding" #: NonFinding
+ finding = "Finding" #: Finding
+ internal_error = "InternalError" #: InternalError
+
+
+class RuleSeverity(str, Enum):
+
+ high = "High" #: High
+ medium = "Medium" #: Medium
+ low = "Low" #: Low
+ informational = "Informational" #: Informational
+ obsolete = "Obsolete" #: Obsolete
+
+
+class RuleType(str, Enum):
+
+ binary = "Binary" #: Binary
+ baseline_expected = "BaselineExpected" #: BaselineExpected
+ positive_list = "PositiveList" #: PositiveList
+ negative_list = "NegativeList" #: NegativeList
+
+
class ExpandEnum(str, Enum):
links = "links" #: All links associated with an assessment
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/__init__.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/__init__.py
index 149a68ddb81e..2b153e37e496 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/__init__.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/__init__.py
@@ -11,7 +11,6 @@
from ._compliance_results_operations import ComplianceResultsOperations
from ._pricings_operations import PricingsOperations
-from ._alerts_operations import AlertsOperations
from ._settings_operations import SettingsOperations
from ._advanced_threat_protection_operations import AdvancedThreatProtectionOperations
from ._device_security_groups_operations import DeviceSecurityGroupsOperations
@@ -19,6 +18,10 @@
from ._iot_security_solution_analytics_operations import IotSecuritySolutionAnalyticsOperations
from ._iot_security_solutions_analytics_aggregated_alert_operations import IotSecuritySolutionsAnalyticsAggregatedAlertOperations
from ._iot_security_solutions_analytics_recommendation_operations import IotSecuritySolutionsAnalyticsRecommendationOperations
+from ._iot_alert_types_operations import IotAlertTypesOperations
+from ._iot_alerts_operations import IotAlertsOperations
+from ._iot_recommendation_types_operations import IotRecommendationTypesOperations
+from ._iot_recommendations_operations import IotRecommendationsOperations
from ._locations_operations import LocationsOperations
from ._operations import Operations
from ._tasks_operations import TasksOperations
@@ -40,17 +43,29 @@
from ._adaptive_network_hardenings_operations import AdaptiveNetworkHardeningsOperations
from ._allowed_connections_operations import AllowedConnectionsOperations
from ._topology_operations import TopologyOperations
+from ._alerts_operations import AlertsOperations
from ._jit_network_access_policies_operations import JitNetworkAccessPoliciesOperations
from ._discovered_security_solutions_operations import DiscoveredSecuritySolutionsOperations
+from ._security_solutions_reference_data_operations import SecuritySolutionsReferenceDataOperations
from ._external_security_solutions_operations import ExternalSecuritySolutionsOperations
from ._secure_scores_operations import SecureScoresOperations
from ._secure_score_controls_operations import SecureScoreControlsOperations
from ._secure_score_control_definitions_operations import SecureScoreControlDefinitionsOperations
+from ._security_solutions_operations import SecuritySolutionsOperations
+from ._connectors_operations import ConnectorsOperations
+from ._iot_defender_settings_operations import IotDefenderSettingsOperations
+from ._iot_sensors_operations import IotSensorsOperations
+from ._devices_for_subscription_operations import DevicesForSubscriptionOperations
+from ._devices_for_hub_operations import DevicesForHubOperations
+from ._device_operations import DeviceOperations
+from ._on_premise_iot_sensors_operations import OnPremiseIotSensorsOperations
+from ._sql_vulnerability_assessment_scans_operations import SqlVulnerabilityAssessmentScansOperations
+from ._sql_vulnerability_assessment_scan_results_operations import SqlVulnerabilityAssessmentScanResultsOperations
+from ._sql_vulnerability_assessment_baseline_rules_operations import SqlVulnerabilityAssessmentBaselineRulesOperations
__all__ = [
'ComplianceResultsOperations',
'PricingsOperations',
- 'AlertsOperations',
'SettingsOperations',
'AdvancedThreatProtectionOperations',
'DeviceSecurityGroupsOperations',
@@ -58,6 +73,10 @@
'IotSecuritySolutionAnalyticsOperations',
'IotSecuritySolutionsAnalyticsAggregatedAlertOperations',
'IotSecuritySolutionsAnalyticsRecommendationOperations',
+ 'IotAlertTypesOperations',
+ 'IotAlertsOperations',
+ 'IotRecommendationTypesOperations',
+ 'IotRecommendationsOperations',
'LocationsOperations',
'Operations',
'TasksOperations',
@@ -79,10 +98,23 @@
'AdaptiveNetworkHardeningsOperations',
'AllowedConnectionsOperations',
'TopologyOperations',
+ 'AlertsOperations',
'JitNetworkAccessPoliciesOperations',
'DiscoveredSecuritySolutionsOperations',
+ 'SecuritySolutionsReferenceDataOperations',
'ExternalSecuritySolutionsOperations',
'SecureScoresOperations',
'SecureScoreControlsOperations',
'SecureScoreControlDefinitionsOperations',
+ 'SecuritySolutionsOperations',
+ 'ConnectorsOperations',
+ 'IotDefenderSettingsOperations',
+ 'IotSensorsOperations',
+ 'DevicesForSubscriptionOperations',
+ 'DevicesForHubOperations',
+ 'DeviceOperations',
+ 'OnPremiseIotSensorsOperations',
+ 'SqlVulnerabilityAssessmentScansOperations',
+ 'SqlVulnerabilityAssessmentScanResultsOperations',
+ 'SqlVulnerabilityAssessmentBaselineRulesOperations',
]
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_adaptive_application_controls_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_adaptive_application_controls_operations.py
index 8ad6c49ff327..7ec60dfcafb1 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_adaptive_application_controls_operations.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_adaptive_application_controls_operations.py
@@ -41,8 +41,7 @@ def __init__(self, client, config, serializer, deserializer):
def list(
self, include_path_recommendations=None, summary=None, custom_headers=None, raw=False, **operation_config):
- """Gets a list of application control VM/server groups for the
- subscription.
+ """Gets a list of application control machine groups for the subscription.
:param include_path_recommendations: Include the policy rules
:type include_path_recommendations: bool
@@ -53,9 +52,10 @@ def list(
deserialized response
:param operation_config: :ref:`Operation configuration
overrides`.
- :return: AppWhitelistingGroups or ClientRawResponse if raw=true
- :rtype: ~azure.mgmt.security.models.AppWhitelistingGroups or
- ~msrest.pipeline.ClientRawResponse
+ :return: AdaptiveApplicationControlGroups or ClientRawResponse if
+ raw=true
+ :rtype: ~azure.mgmt.security.models.AdaptiveApplicationControlGroups
+ or ~msrest.pipeline.ClientRawResponse
:raises: :class:`CloudError`
"""
# Construct URL
@@ -94,7 +94,7 @@ def list(
deserialized = None
if response.status_code == 200:
- deserialized = self._deserialize('AppWhitelistingGroups', response)
+ deserialized = self._deserialize('AdaptiveApplicationControlGroups', response)
if raw:
client_raw_response = ClientRawResponse(deserialized, response)
@@ -107,15 +107,16 @@ def get(
self, group_name, custom_headers=None, raw=False, **operation_config):
"""Gets an application control VM/server group.
- :param group_name: Name of an application control VM/server group
+ :param group_name: Name of an application control machine group
:type group_name: str
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:param operation_config: :ref:`Operation configuration
overrides`.
- :return: AppWhitelistingGroup or ClientRawResponse if raw=true
- :rtype: ~azure.mgmt.security.models.AppWhitelistingGroup or
+ :return: AdaptiveApplicationControlGroup or ClientRawResponse if
+ raw=true
+ :rtype: ~azure.mgmt.security.models.AdaptiveApplicationControlGroup or
~msrest.pipeline.ClientRawResponse
:raises: :class:`CloudError`
"""
@@ -153,7 +154,7 @@ def get(
deserialized = None
if response.status_code == 200:
- deserialized = self._deserialize('AppWhitelistingGroup', response)
+ deserialized = self._deserialize('AdaptiveApplicationControlGroup', response)
if raw:
client_raw_response = ClientRawResponse(deserialized, response)
@@ -164,19 +165,21 @@ def get(
def put(
self, group_name, body, custom_headers=None, raw=False, **operation_config):
- """Update an application control VM/server group.
+ """Update an application control machine group.
- :param group_name: Name of an application control VM/server group
+ :param group_name: Name of an application control machine group
:type group_name: str
:param body:
- :type body: ~azure.mgmt.security.models.AppWhitelistingGroup
+ :type body:
+ ~azure.mgmt.security.models.AdaptiveApplicationControlGroup
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:param operation_config: :ref:`Operation configuration
overrides`.
- :return: AppWhitelistingGroup or ClientRawResponse if raw=true
- :rtype: ~azure.mgmt.security.models.AppWhitelistingGroup or
+ :return: AdaptiveApplicationControlGroup or ClientRawResponse if
+ raw=true
+ :rtype: ~azure.mgmt.security.models.AdaptiveApplicationControlGroup or
~msrest.pipeline.ClientRawResponse
:raises: :class:`CloudError`
"""
@@ -205,7 +208,7 @@ def put(
header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
# Construct body
- body_content = self._serialize.body(body, 'AppWhitelistingGroup')
+ body_content = self._serialize.body(body, 'AdaptiveApplicationControlGroup')
# Construct and send request
request = self._client.put(url, query_parameters, header_parameters, body_content)
@@ -218,7 +221,7 @@ def put(
deserialized = None
if response.status_code == 200:
- deserialized = self._deserialize('AppWhitelistingGroup', response)
+ deserialized = self._deserialize('AdaptiveApplicationControlGroup', response)
if raw:
client_raw_response = ClientRawResponse(deserialized, response)
@@ -229,9 +232,9 @@ def put(
def delete(
self, group_name, custom_headers=None, raw=False, **operation_config):
- """Delete an application control VM/server group.
+ """Delete an application control machine group.
- :param group_name: Name of an application control VM/server group
+ :param group_name: Name of an application control machine group
:type group_name: str
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_alerts_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_alerts_operations.py
index 7c8400c02f95..3c069f9610fb 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_alerts_operations.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_alerts_operations.py
@@ -25,7 +25,7 @@ class AlertsOperations(object):
:param config: Configuration of service client.
:param serializer: An object model serializer.
:param deserializer: An object model deserializer.
- :ivar api_version: API version for the operation. Constant value: "2019-01-01".
+ :ivar api_version: API version for the operation. Constant value: "2020-01-01".
"""
models = models
@@ -35,25 +35,14 @@ def __init__(self, client, config, serializer, deserializer):
self._client = client
self._serialize = serializer
self._deserialize = deserializer
- self.api_version = "2019-01-01"
+ self.api_version = "2020-01-01"
self.config = config
def list(
- self, filter=None, select=None, expand=None, auto_dismiss_rule_name=None, custom_headers=None, raw=False, **operation_config):
+ self, custom_headers=None, raw=False, **operation_config):
"""List all the alerts that are associated with the subscription.
- :param filter: OData filter. Optional.
- :type filter: str
- :param select: OData select. Optional.
- :type select: str
- :param expand: OData expand. Optional.
- :type expand: str
- :param auto_dismiss_rule_name: The name of an existing auto dismiss
- rule. Use it to simulate the rule on existing alerts and get the
- alerts that would have been dismissed if the rule was enabled when the
- alert was created
- :type auto_dismiss_rule_name: str
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
@@ -76,14 +65,6 @@ def prepare_request(next_link=None):
# Construct parameters
query_parameters = {}
query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
- if filter is not None:
- query_parameters['$filter'] = self._serialize.query("filter", filter, 'str')
- if select is not None:
- query_parameters['$select'] = self._serialize.query("select", select, 'str')
- if expand is not None:
- query_parameters['$expand'] = self._serialize.query("expand", expand, 'str')
- if auto_dismiss_rule_name is not None:
- query_parameters['autoDismissRuleName'] = self._serialize.query("auto_dismiss_rule_name", auto_dismiss_rule_name, 'str')
else:
url = next_link
@@ -125,23 +106,12 @@ def internal_paging(next_link=None):
list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/alerts'}
def list_by_resource_group(
- self, resource_group_name, filter=None, select=None, expand=None, auto_dismiss_rule_name=None, custom_headers=None, raw=False, **operation_config):
+ self, resource_group_name, custom_headers=None, raw=False, **operation_config):
"""List all the alerts that are associated with the resource group.
:param resource_group_name: The name of the resource group within the
user's subscription. The name is case insensitive.
:type resource_group_name: str
- :param filter: OData filter. Optional.
- :type filter: str
- :param select: OData select. Optional.
- :type select: str
- :param expand: OData expand. Optional.
- :type expand: str
- :param auto_dismiss_rule_name: The name of an existing auto dismiss
- rule. Use it to simulate the rule on existing alerts and get the
- alerts that would have been dismissed if the rule was enabled when the
- alert was created
- :type auto_dismiss_rule_name: str
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
@@ -165,14 +135,6 @@ def prepare_request(next_link=None):
# Construct parameters
query_parameters = {}
query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
- if filter is not None:
- query_parameters['$filter'] = self._serialize.query("filter", filter, 'str')
- if select is not None:
- query_parameters['$select'] = self._serialize.query("select", select, 'str')
- if expand is not None:
- query_parameters['$expand'] = self._serialize.query("expand", expand, 'str')
- if auto_dismiss_rule_name is not None:
- query_parameters['autoDismissRuleName'] = self._serialize.query("auto_dismiss_rule_name", auto_dismiss_rule_name, 'str')
else:
url = next_link
@@ -214,21 +176,10 @@ def internal_paging(next_link=None):
list_by_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/alerts'}
def list_subscription_level_alerts_by_region(
- self, filter=None, select=None, expand=None, auto_dismiss_rule_name=None, custom_headers=None, raw=False, **operation_config):
+ self, custom_headers=None, raw=False, **operation_config):
"""List all the alerts that are associated with the subscription that are
stored in a specific location.
- :param filter: OData filter. Optional.
- :type filter: str
- :param select: OData select. Optional.
- :type select: str
- :param expand: OData expand. Optional.
- :type expand: str
- :param auto_dismiss_rule_name: The name of an existing auto dismiss
- rule. Use it to simulate the rule on existing alerts and get the
- alerts that would have been dismissed if the rule was enabled when the
- alert was created
- :type auto_dismiss_rule_name: str
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
@@ -252,14 +203,6 @@ def prepare_request(next_link=None):
# Construct parameters
query_parameters = {}
query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
- if filter is not None:
- query_parameters['$filter'] = self._serialize.query("filter", filter, 'str')
- if select is not None:
- query_parameters['$select'] = self._serialize.query("select", select, 'str')
- if expand is not None:
- query_parameters['$expand'] = self._serialize.query("expand", expand, 'str')
- if auto_dismiss_rule_name is not None:
- query_parameters['autoDismissRuleName'] = self._serialize.query("auto_dismiss_rule_name", auto_dismiss_rule_name, 'str')
else:
url = next_link
@@ -301,24 +244,13 @@ def internal_paging(next_link=None):
list_subscription_level_alerts_by_region.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts'}
def list_resource_group_level_alerts_by_region(
- self, resource_group_name, filter=None, select=None, expand=None, auto_dismiss_rule_name=None, custom_headers=None, raw=False, **operation_config):
+ self, resource_group_name, custom_headers=None, raw=False, **operation_config):
"""List all the alerts that are associated with the resource group that
are stored in a specific location.
:param resource_group_name: The name of the resource group within the
user's subscription. The name is case insensitive.
:type resource_group_name: str
- :param filter: OData filter. Optional.
- :type filter: str
- :param select: OData select. Optional.
- :type select: str
- :param expand: OData expand. Optional.
- :type expand: str
- :param auto_dismiss_rule_name: The name of an existing auto dismiss
- rule. Use it to simulate the rule on existing alerts and get the
- alerts that would have been dismissed if the rule was enabled when the
- alert was created
- :type auto_dismiss_rule_name: str
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
@@ -343,14 +275,6 @@ def prepare_request(next_link=None):
# Construct parameters
query_parameters = {}
query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
- if filter is not None:
- query_parameters['$filter'] = self._serialize.query("filter", filter, 'str')
- if select is not None:
- query_parameters['$select'] = self._serialize.query("select", select, 'str')
- if expand is not None:
- query_parameters['$expand'] = self._serialize.query("expand", expand, 'str')
- if auto_dismiss_rule_name is not None:
- query_parameters['autoDismissRuleName'] = self._serialize.query("auto_dismiss_rule_name", auto_dismiss_rule_name, 'str')
else:
url = next_link
@@ -565,6 +489,57 @@ def update_subscription_level_alert_state_to_dismiss(
return client_raw_response
update_subscription_level_alert_state_to_dismiss.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/dismiss'}
+ def update_subscription_level_state_to_resolve(
+ self, alert_name, custom_headers=None, raw=False, **operation_config):
+ """Update the alert's state.
+
+ :param alert_name: Name of the alert object
+ :type alert_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: None or ClientRawResponse if raw=true
+ :rtype: None or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.update_subscription_level_state_to_resolve.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'ascLocation': self._serialize.url("self.config.asc_location", self.config.asc_location, 'str'),
+ 'alertName': self._serialize.url("alert_name", alert_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.post(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [204]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ if raw:
+ client_raw_response = ClientRawResponse(None, response)
+ return client_raw_response
+ update_subscription_level_state_to_resolve.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/resolve'}
+
def update_subscription_level_alert_state_to_reactivate(
self, alert_name, custom_headers=None, raw=False, **operation_config):
"""Update the alert's state.
@@ -614,7 +589,62 @@ def update_subscription_level_alert_state_to_reactivate(
if raw:
client_raw_response = ClientRawResponse(None, response)
return client_raw_response
- update_subscription_level_alert_state_to_reactivate.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/reactivate'}
+ update_subscription_level_alert_state_to_reactivate.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/activate'}
+
+ def update_resource_group_level_state_to_resolve(
+ self, alert_name, resource_group_name, custom_headers=None, raw=False, **operation_config):
+ """Update the alert's state.
+
+ :param alert_name: Name of the alert object
+ :type alert_name: str
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: None or ClientRawResponse if raw=true
+ :rtype: None or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.update_resource_group_level_state_to_resolve.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'ascLocation': self._serialize.url("self.config.asc_location", self.config.asc_location, 'str'),
+ 'alertName': self._serialize.url("alert_name", alert_name, 'str'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.post(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [204]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ if raw:
+ client_raw_response = ClientRawResponse(None, response)
+ return client_raw_response
+ update_resource_group_level_state_to_resolve.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/resolve'}
def update_resource_group_level_alert_state_to_dismiss(
self, alert_name, resource_group_name, custom_headers=None, raw=False, **operation_config):
@@ -724,4 +754,4 @@ def update_resource_group_level_alert_state_to_reactivate(
if raw:
client_raw_response = ClientRawResponse(None, response)
return client_raw_response
- update_resource_group_level_alert_state_to_reactivate.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/reactivate'}
+ update_resource_group_level_alert_state_to_reactivate.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/alerts/{alertName}/activate'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_connectors_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_connectors_operations.py
new file mode 100644
index 000000000000..ff353c5f6da7
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_connectors_operations.py
@@ -0,0 +1,290 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class ConnectorsOperations(object):
+ """ConnectorsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-01-01-preview".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-01-01-preview"
+
+ self.config = config
+
+ def list(
+ self, custom_headers=None, raw=False, **operation_config):
+ """Cloud accounts connectors of a subscription.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: An iterator like instance of ConnectorSetting
+ :rtype:
+ ~azure.mgmt.security.models.ConnectorSettingPaged[~azure.mgmt.security.models.ConnectorSetting]
+ :raises: :class:`CloudError`
+ """
+ def prepare_request(next_link=None):
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ else:
+ url = next_link
+ query_parameters = {}
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def internal_paging(next_link=None):
+ request = prepare_request(next_link)
+
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ return response
+
+ # Deserialize response
+ header_dict = None
+ if raw:
+ header_dict = {}
+ deserialized = models.ConnectorSettingPaged(internal_paging, self._deserialize.dependencies, header_dict)
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/connectors'}
+
+ def get(
+ self, connector_name, custom_headers=None, raw=False, **operation_config):
+ """Details of a specific cloud account connector.
+
+ :param connector_name: Name of the cloud account connector
+ :type connector_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: ConnectorSetting or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.ConnectorSetting or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'connectorName': self._serialize.url("connector_name", connector_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('ConnectorSetting', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/connectors/{connectorName}'}
+
+ def create_or_update(
+ self, connector_name, hybrid_compute_settings=None, authentication_details=None, custom_headers=None, raw=False, **operation_config):
+ """Create a cloud account connector or update an existing one. Connect to
+ your cloud account. For AWS, use either account credentials or
+ role-based authentication. For GCP, use account organization
+ credentials.
+
+ :param connector_name: Name of the cloud account connector
+ :type connector_name: str
+ :param hybrid_compute_settings: Settings for hybrid compute
+ management. These settings are relevant only for Arc autoProvision
+ (Hybrid Compute).
+ :type hybrid_compute_settings:
+ ~azure.mgmt.security.models.HybridComputeSettingsProperties
+ :param authentication_details: Settings for authentication management,
+ these settings are relevant only for the cloud connector.
+ :type authentication_details:
+ ~azure.mgmt.security.models.AuthenticationDetailsProperties
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: ConnectorSetting or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.ConnectorSetting or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ connector_setting = models.ConnectorSetting(hybrid_compute_settings=hybrid_compute_settings, authentication_details=authentication_details)
+
+ # Construct URL
+ url = self.create_or_update.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'connectorName': self._serialize.url("connector_name", connector_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ header_parameters['Content-Type'] = 'application/json; charset=utf-8'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct body
+ body_content = self._serialize.body(connector_setting, 'ConnectorSetting')
+
+ # Construct and send request
+ request = self._client.put(url, query_parameters, header_parameters, body_content)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('ConnectorSetting', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/connectors/{connectorName}'}
+
+ def delete(
+ self, connector_name, custom_headers=None, raw=False, **operation_config):
+ """Delete a cloud account connector from a subscription.
+
+ :param connector_name: Name of the cloud account connector
+ :type connector_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: None or ClientRawResponse if raw=true
+ :rtype: None or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.delete.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'connectorName': self._serialize.url("connector_name", connector_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.delete(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 204]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ if raw:
+ client_raw_response = ClientRawResponse(None, response)
+ return client_raw_response
+ delete.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/connectors/{connectorName}'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_device_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_device_operations.py
new file mode 100644
index 000000000000..7ce8a22a772e
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_device_operations.py
@@ -0,0 +1,100 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class DeviceOperations(object):
+ """DeviceOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-08-06-preview".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-08-06-preview"
+
+ self.config = config
+
+ def get(
+ self, resource_id, device_id, custom_headers=None, raw=False, **operation_config):
+ """Get device.
+
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param device_id: Identifier of the device.
+ :type device_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: Device or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.Device or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True),
+ 'deviceId': self._serialize.url("device_id", device_id, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('Device', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/devices/{deviceId}'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_devices_for_hub_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_devices_for_hub_operations.py
new file mode 100644
index 000000000000..dd6a38a42a09
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_devices_for_hub_operations.py
@@ -0,0 +1,122 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class DevicesForHubOperations(object):
+ """DevicesForHubOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-08-06-preview".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-08-06-preview"
+
+ self.config = config
+
+ def list(
+ self, resource_id, limit=None, skip_token=None, device_management_type=None, custom_headers=None, raw=False, **operation_config):
+ """Get list of the devices for the specified IoT Hub resource.
+
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param limit: Limit the number of items returned in a single page
+ :type limit: int
+ :param skip_token: Skip token used for pagination
+ :type skip_token: str
+ :param device_management_type: Get devices only from specific type,
+ Managed or Unmanaged. Possible values include: 'Managed', 'Unmanaged'
+ :type device_management_type: str or
+ ~azure.mgmt.security.models.ManagementState
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: An iterator like instance of Device
+ :rtype:
+ ~azure.mgmt.security.models.DevicePaged[~azure.mgmt.security.models.Device]
+ :raises: :class:`CloudError`
+ """
+ def prepare_request(next_link=None):
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+ if limit is not None:
+ query_parameters['$limit'] = self._serialize.query("limit", limit, 'int')
+ if skip_token is not None:
+ query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str')
+ if device_management_type is not None:
+ query_parameters['deviceManagementType'] = self._serialize.query("device_management_type", device_management_type, 'str')
+
+ else:
+ url = next_link
+ query_parameters = {}
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def internal_paging(next_link=None):
+ request = prepare_request(next_link)
+
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ return response
+
+ # Deserialize response
+ header_dict = None
+ if raw:
+ header_dict = {}
+ deserialized = models.DevicePaged(internal_paging, self._deserialize.dependencies, header_dict)
+
+ return deserialized
+ list.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/devices'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_devices_for_subscription_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_devices_for_subscription_operations.py
new file mode 100644
index 000000000000..5309e01e1114
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_devices_for_subscription_operations.py
@@ -0,0 +1,120 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class DevicesForSubscriptionOperations(object):
+ """DevicesForSubscriptionOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-08-06-preview".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-08-06-preview"
+
+ self.config = config
+
+ def list(
+ self, limit=None, skip_token=None, device_management_type=None, custom_headers=None, raw=False, **operation_config):
+ """Get list of the devices by their subscription.
+
+ :param limit: Limit the number of items returned in a single page
+ :type limit: int
+ :param skip_token: Skip token used for pagination
+ :type skip_token: str
+ :param device_management_type: Get devices only from specific type,
+ Managed or Unmanaged. Possible values include: 'Managed', 'Unmanaged'
+ :type device_management_type: str or
+ ~azure.mgmt.security.models.ManagementState
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: An iterator like instance of Device
+ :rtype:
+ ~azure.mgmt.security.models.DevicePaged[~azure.mgmt.security.models.Device]
+ :raises: :class:`CloudError`
+ """
+ def prepare_request(next_link=None):
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+ if limit is not None:
+ query_parameters['$limit'] = self._serialize.query("limit", limit, 'int')
+ if skip_token is not None:
+ query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str')
+ if device_management_type is not None:
+ query_parameters['deviceManagementType'] = self._serialize.query("device_management_type", device_management_type, 'str')
+
+ else:
+ url = next_link
+ query_parameters = {}
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def internal_paging(next_link=None):
+ request = prepare_request(next_link)
+
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ return response
+
+ # Deserialize response
+ header_dict = None
+ if raw:
+ header_dict = {}
+ deserialized = models.DevicePaged(internal_paging, self._deserialize.dependencies, header_dict)
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/devices'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_alert_types_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_alert_types_operations.py
new file mode 100644
index 000000000000..7cf80ec7889b
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_alert_types_operations.py
@@ -0,0 +1,167 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class IotAlertTypesOperations(object):
+ """IotAlertTypesOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2019-08-01".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2019-08-01"
+
+ self.config = config
+
+ def list(
+ self, resource_group_name, solution_name, custom_headers=None, raw=False, **operation_config):
+ """List IoT alert types.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotAlertTypeList or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotAlertTypeList or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotAlertTypeList', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotAlertTypes'}
+
+ def get(
+ self, resource_group_name, solution_name, iot_alert_type_name, custom_headers=None, raw=False, **operation_config):
+ """Get IoT alert type.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param iot_alert_type_name: Name of the alert type
+ :type iot_alert_type_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotAlertType or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotAlertType or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str'),
+ 'iotAlertTypeName': self._serialize.url("iot_alert_type_name", iot_alert_type_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotAlertType', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotAlertTypes/{iotAlertTypeName}'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_alerts_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_alerts_operations.py
new file mode 100644
index 000000000000..a59f568d1920
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_alerts_operations.py
@@ -0,0 +1,204 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class IotAlertsOperations(object):
+ """IotAlertsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2019-08-01".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2019-08-01"
+
+ self.config = config
+
+ def list(
+ self, resource_group_name, solution_name, min_start_time_utc=None, max_start_time_utc=None, alert_type=None, compromised_entity=None, limit=None, skip_token=None, custom_headers=None, raw=False, **operation_config):
+ """List IoT alerts.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param min_start_time_utc: Filter by minimum startTimeUtc (ISO 8601
+ format)
+ :type min_start_time_utc: str
+ :param max_start_time_utc: Filter by maximum startTimeUtc (ISO 8601
+ format)
+ :type max_start_time_utc: str
+ :param alert_type: Filter by alert type
+ :type alert_type: str
+ :param compromised_entity: Filter by compromised device
+ :type compromised_entity: str
+ :param limit: Limit the number of items returned in a single page
+ :type limit: int
+ :param skip_token: Skip token used for pagination
+ :type skip_token: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: An iterator like instance of IotAlert
+ :rtype:
+ ~azure.mgmt.security.models.IotAlertPaged[~azure.mgmt.security.models.IotAlert]
+ :raises: :class:`CloudError`
+ """
+ def prepare_request(next_link=None):
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+ if min_start_time_utc is not None:
+ query_parameters['startTimeUtc>'] = self._serialize.query("min_start_time_utc", min_start_time_utc, 'str')
+ if max_start_time_utc is not None:
+ query_parameters['startTimeUtc<'] = self._serialize.query("max_start_time_utc", max_start_time_utc, 'str')
+ if alert_type is not None:
+ query_parameters['alertType'] = self._serialize.query("alert_type", alert_type, 'str')
+ if compromised_entity is not None:
+ query_parameters['compromisedEntity'] = self._serialize.query("compromised_entity", compromised_entity, 'str')
+ if limit is not None:
+ query_parameters['$limit'] = self._serialize.query("limit", limit, 'int')
+ if skip_token is not None:
+ query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str')
+
+ else:
+ url = next_link
+ query_parameters = {}
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def internal_paging(next_link=None):
+ request = prepare_request(next_link)
+
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ return response
+
+ # Deserialize response
+ header_dict = None
+ if raw:
+ header_dict = {}
+ deserialized = models.IotAlertPaged(internal_paging, self._deserialize.dependencies, header_dict)
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotAlerts'}
+
+ def get(
+ self, resource_group_name, solution_name, iot_alert_id, custom_headers=None, raw=False, **operation_config):
+ """Get IoT alert.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param iot_alert_id: Id of the alert
+ :type iot_alert_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotAlert or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotAlert or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str'),
+ 'iotAlertId': self._serialize.url("iot_alert_id", iot_alert_id, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotAlert', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotAlerts/{iotAlertId}'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_defender_settings_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_defender_settings_operations.py
new file mode 100644
index 000000000000..679341957e37
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_defender_settings_operations.py
@@ -0,0 +1,322 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class IotDefenderSettingsOperations(object):
+ """IotDefenderSettingsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-08-06-preview".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-08-06-preview"
+
+ self.config = config
+
+ def list(
+ self, custom_headers=None, raw=False, **operation_config):
+ """List IoT Defender Settings.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotDefenderSettingsList or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotDefenderSettingsList or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotDefenderSettingsList', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/iotDefenderSettings'}
+
+ def get(
+ self, custom_headers=None, raw=False, **operation_config):
+ """Get IoT Defender Settings.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotDefenderSettingsModel or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotDefenderSettingsModel or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotDefenderSettingsModel', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/iotDefenderSettings/default'}
+
+ def create_or_update(
+ self, device_quota, sentinel_workspace_resource_ids, custom_headers=None, raw=False, **operation_config):
+ """Create or update IoT Defender settings.
+
+ :param device_quota: Size of the device quota (as a opposed to a Pay
+ as You Go billing model). Value is required to be in multiples of
+ 1000.
+ :type device_quota: int
+ :param sentinel_workspace_resource_ids: Sentinel Workspace Resource
+ Ids
+ :type sentinel_workspace_resource_ids: list[str]
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotDefenderSettingsModel or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotDefenderSettingsModel or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ iot_defender_settings_model = models.IotDefenderSettingsModel(device_quota=device_quota, sentinel_workspace_resource_ids=sentinel_workspace_resource_ids)
+
+ # Construct URL
+ url = self.create_or_update.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ header_parameters['Content-Type'] = 'application/json; charset=utf-8'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct body
+ body_content = self._serialize.body(iot_defender_settings_model, 'IotDefenderSettingsModel')
+
+ # Construct and send request
+ request = self._client.put(url, query_parameters, header_parameters, body_content)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 201]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotDefenderSettingsModel', response)
+ if response.status_code == 201:
+ deserialized = self._deserialize('IotDefenderSettingsModel', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/iotDefenderSettings/default'}
+
+ def delete(
+ self, custom_headers=None, raw=False, **operation_config):
+ """Delete IoT Defender settings.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: None or ClientRawResponse if raw=true
+ :rtype: None or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.delete.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.delete(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 204]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ if raw:
+ client_raw_response = ClientRawResponse(None, response)
+ return client_raw_response
+ delete.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/iotDefenderSettings/default'}
+
+ def package_downloads_method(
+ self, custom_headers=None, raw=False, **operation_config):
+ """Information about downloadable packages.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: PackageDownloads or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.PackageDownloads or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.package_downloads_method.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.post(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('PackageDownloads', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ package_downloads_method.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/iotDefenderSettings/default/packageDownloads'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_recommendation_types_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_recommendation_types_operations.py
new file mode 100644
index 000000000000..743ca835bbab
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_recommendation_types_operations.py
@@ -0,0 +1,167 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class IotRecommendationTypesOperations(object):
+ """IotRecommendationTypesOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2019-08-01".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2019-08-01"
+
+ self.config = config
+
+ def list(
+ self, resource_group_name, solution_name, custom_headers=None, raw=False, **operation_config):
+ """List IoT recommendation types.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotRecommendationTypeList or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotRecommendationTypeList or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotRecommendationTypeList', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotRecommendationTypes'}
+
+ def get(
+ self, resource_group_name, solution_name, iot_recommendation_type_name, custom_headers=None, raw=False, **operation_config):
+ """Get IoT recommendation type.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param iot_recommendation_type_name: Name of the recommendation type
+ :type iot_recommendation_type_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotRecommendationType or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotRecommendationType or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str'),
+ 'iotRecommendationTypeName': self._serialize.url("iot_recommendation_type_name", iot_recommendation_type_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotRecommendationType', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotRecommendationTypes/{iotRecommendationTypeName}'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_recommendations_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_recommendations_operations.py
new file mode 100644
index 000000000000..6c4888a82950
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_recommendations_operations.py
@@ -0,0 +1,194 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class IotRecommendationsOperations(object):
+ """IotRecommendationsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2019-08-01".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2019-08-01"
+
+ self.config = config
+
+ def list(
+ self, resource_group_name, solution_name, recommendation_type=None, device_id=None, limit=None, skip_token=None, custom_headers=None, raw=False, **operation_config):
+ """List IoT recommendations.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param recommendation_type: Filter by recommendation type
+ :type recommendation_type: str
+ :param device_id: Filter by device id
+ :type device_id: str
+ :param limit: Limit the number of items returned in a single page
+ :type limit: int
+ :param skip_token: Skip token used for pagination
+ :type skip_token: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: An iterator like instance of IotRecommendation
+ :rtype:
+ ~azure.mgmt.security.models.IotRecommendationPaged[~azure.mgmt.security.models.IotRecommendation]
+ :raises: :class:`CloudError`
+ """
+ def prepare_request(next_link=None):
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+ if recommendation_type is not None:
+ query_parameters['recommendationType'] = self._serialize.query("recommendation_type", recommendation_type, 'str')
+ if device_id is not None:
+ query_parameters['deviceId'] = self._serialize.query("device_id", device_id, 'str')
+ if limit is not None:
+ query_parameters['$limit'] = self._serialize.query("limit", limit, 'int')
+ if skip_token is not None:
+ query_parameters['$skipToken'] = self._serialize.query("skip_token", skip_token, 'str')
+
+ else:
+ url = next_link
+ query_parameters = {}
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def internal_paging(next_link=None):
+ request = prepare_request(next_link)
+
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ return response
+
+ # Deserialize response
+ header_dict = None
+ if raw:
+ header_dict = {}
+ deserialized = models.IotRecommendationPaged(internal_paging, self._deserialize.dependencies, header_dict)
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotRecommendations'}
+
+ def get(
+ self, resource_group_name, solution_name, iot_recommendation_id, custom_headers=None, raw=False, **operation_config):
+ """Get IoT recommendation.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param solution_name: The name of the IoT Security solution.
+ :type solution_name: str
+ :param iot_recommendation_id: Id of the recommendation
+ :type iot_recommendation_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotRecommendation or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotRecommendation or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'solutionName': self._serialize.url("solution_name", solution_name, 'str'),
+ 'iotRecommendationId': self._serialize.url("iot_recommendation_id", iot_recommendation_id, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotRecommendation', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/iotSecuritySolutions/{solutionName}/iotRecommendations/{iotRecommendationId}'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_sensors_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_sensors_operations.py
new file mode 100644
index 000000000000..0565ee6ba734
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_iot_sensors_operations.py
@@ -0,0 +1,338 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class IotSensorsOperations(object):
+ """IotSensorsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-08-06-preview".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-08-06-preview"
+
+ self.config = config
+
+ def list(
+ self, scope, custom_headers=None, raw=False, **operation_config):
+ """List IoT sensors.
+
+ :param scope: Scope of the query (IoT Hub,
+ /providers/Microsoft.Devices/iotHubs/myHub)
+ :type scope: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotSensorsList or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotSensorsList or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotSensorsList', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/{scope}/providers/Microsoft.Security/iotSensors'}
+
+ def get(
+ self, scope, iot_sensor_name, custom_headers=None, raw=False, **operation_config):
+ """Get IoT sensor.
+
+ :param scope: Scope of the query (IoT Hub,
+ /providers/Microsoft.Devices/iotHubs/myHub)
+ :type scope: str
+ :param iot_sensor_name: Name of the IoT sensor
+ :type iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotSensor or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotSensor or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True),
+ 'iotSensorName': self._serialize.url("iot_sensor_name", iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotSensor', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/{scope}/providers/Microsoft.Security/iotSensors/{iotSensorName}'}
+
+ def create_or_update(
+ self, scope, iot_sensor_name, custom_headers=None, raw=False, **operation_config):
+ """Create or update IoT sensor.
+
+ :param scope: Scope of the query (IoT Hub,
+ /providers/Microsoft.Devices/iotHubs/myHub)
+ :type scope: str
+ :param iot_sensor_name: Name of the IoT sensor
+ :type iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: IotSensor or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.IotSensor or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.create_or_update.metadata['url']
+ path_format_arguments = {
+ 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True),
+ 'iotSensorName': self._serialize.url("iot_sensor_name", iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.put(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 201]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('IotSensor', response)
+ if response.status_code == 201:
+ deserialized = self._deserialize('IotSensor', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ create_or_update.metadata = {'url': '/{scope}/providers/Microsoft.Security/iotSensors/{iotSensorName}'}
+
+ def delete(
+ self, scope, iot_sensor_name, custom_headers=None, raw=False, **operation_config):
+ """Delete IoT sensor.
+
+ :param scope: Scope of the query (IoT Hub,
+ /providers/Microsoft.Devices/iotHubs/myHub)
+ :type scope: str
+ :param iot_sensor_name: Name of the IoT sensor
+ :type iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: None or ClientRawResponse if raw=true
+ :rtype: None or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.delete.metadata['url']
+ path_format_arguments = {
+ 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True),
+ 'iotSensorName': self._serialize.url("iot_sensor_name", iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.delete(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 204]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ if raw:
+ client_raw_response = ClientRawResponse(None, response)
+ return client_raw_response
+ delete.metadata = {'url': '/{scope}/providers/Microsoft.Security/iotSensors/{iotSensorName}'}
+
+ def download_activation(
+ self, scope, iot_sensor_name, custom_headers=None, raw=False, callback=None, **operation_config):
+ """Download sensor activation file.
+
+ :param scope: Scope of the query (IoT Hub,
+ /providers/Microsoft.Devices/iotHubs/myHub)
+ :type scope: str
+ :param iot_sensor_name: Name of the IoT sensor
+ :type iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param callback: When specified, will be called with each chunk of
+ data that is streamed. The callback should take two arguments, the
+ bytes of the current chunk of data and the response object. If the
+ data is uploading, response will be None.
+ :type callback: Callable[Bytes, response=None]
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: object or ClientRawResponse if raw=true
+ :rtype: Generator or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.download_activation.metadata['url']
+ path_format_arguments = {
+ 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True),
+ 'iotSensorName': self._serialize.url("iot_sensor_name", iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/zip'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.post(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=True, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = self._client.stream_download(response, callback)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ download_activation.metadata = {'url': '/{scope}/providers/Microsoft.Security/iotSensors/{iotSensorName}/downloadActivation'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_on_premise_iot_sensors_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_on_premise_iot_sensors_operations.py
new file mode 100644
index 000000000000..bd5c73f7dcd8
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_on_premise_iot_sensors_operations.py
@@ -0,0 +1,323 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class OnPremiseIotSensorsOperations(object):
+ """OnPremiseIotSensorsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-08-06-preview".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-08-06-preview"
+
+ self.config = config
+
+ def list(
+ self, custom_headers=None, raw=False, **operation_config):
+ """List on-premise IoT sensors.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: OnPremiseIotSensorsList or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.OnPremiseIotSensorsList or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('OnPremiseIotSensorsList', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/onPremiseIotSensors'}
+
+ def get(
+ self, on_premise_iot_sensor_name, custom_headers=None, raw=False, **operation_config):
+ """Get on-premise IoT sensor.
+
+ :param on_premise_iot_sensor_name: Name of the on-premise IoT sensor
+ :type on_premise_iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: OnPremiseIotSensor or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.OnPremiseIotSensor or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'onPremiseIotSensorName': self._serialize.url("on_premise_iot_sensor_name", on_premise_iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('OnPremiseIotSensor', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/onPremiseIotSensors/{onPremiseIotSensorName}'}
+
+ def create_or_update(
+ self, on_premise_iot_sensor_name, custom_headers=None, raw=False, **operation_config):
+ """Create or update on-premise IoT sensor.
+
+ :param on_premise_iot_sensor_name: Name of the on-premise IoT sensor
+ :type on_premise_iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: OnPremiseIotSensor or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.OnPremiseIotSensor or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.create_or_update.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'onPremiseIotSensorName': self._serialize.url("on_premise_iot_sensor_name", on_premise_iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.put(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 201]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('OnPremiseIotSensor', response)
+ if response.status_code == 201:
+ deserialized = self._deserialize('OnPremiseIotSensor', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ create_or_update.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/onPremiseIotSensors/{onPremiseIotSensorName}'}
+
+ def delete(
+ self, on_premise_iot_sensor_name, custom_headers=None, raw=False, **operation_config):
+ """Delete on-premise IoT sensor.
+
+ :param on_premise_iot_sensor_name: Name of the on-premise IoT sensor
+ :type on_premise_iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: None or ClientRawResponse if raw=true
+ :rtype: None or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.delete.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'onPremiseIotSensorName': self._serialize.url("on_premise_iot_sensor_name", on_premise_iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.delete(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 204]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ if raw:
+ client_raw_response = ClientRawResponse(None, response)
+ return client_raw_response
+ delete.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/onPremiseIotSensors/{onPremiseIotSensorName}'}
+
+ def download_activation(
+ self, on_premise_iot_sensor_name, custom_headers=None, raw=False, callback=None, **operation_config):
+ """Download sensor activation file.
+
+ :param on_premise_iot_sensor_name: Name of the on-premise IoT sensor
+ :type on_premise_iot_sensor_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param callback: When specified, will be called with each chunk of
+ data that is streamed. The callback should take two arguments, the
+ bytes of the current chunk of data and the response object. If the
+ data is uploading, response will be None.
+ :type callback: Callable[Bytes, response=None]
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: object or ClientRawResponse if raw=true
+ :rtype: Generator or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.download_activation.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'onPremiseIotSensorName': self._serialize.url("on_premise_iot_sensor_name", on_premise_iot_sensor_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/zip'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.post(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=True, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = self._client.stream_download(response, callback)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ download_activation.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/onPremiseIotSensors/{onPremiseIotSensorName}/downloadActivation'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_control_definitions_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_control_definitions_operations.py
index f6f906d7034f..2ef016caaf9b 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_control_definitions_operations.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_control_definitions_operations.py
@@ -25,7 +25,7 @@ class SecureScoreControlDefinitionsOperations(object):
:param config: Configuration of service client.
:param serializer: An object model serializer.
:param deserializer: An object model deserializer.
- :ivar api_version: API version for the operation. Constant value: "2020-01-01-preview".
+ :ivar api_version: API version for the operation. Constant value: "2020-01-01".
"""
models = models
@@ -35,7 +35,7 @@ def __init__(self, client, config, serializer, deserializer):
self._client = client
self._serialize = serializer
self._deserialize = deserializer
- self.api_version = "2020-01-01-preview"
+ self.api_version = "2020-01-01"
self.config = config
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_controls_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_controls_operations.py
index 39958690c964..c3054db5406e 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_controls_operations.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_score_controls_operations.py
@@ -25,7 +25,7 @@ class SecureScoreControlsOperations(object):
:param config: Configuration of service client.
:param serializer: An object model serializer.
:param deserializer: An object model deserializer.
- :ivar api_version: API version for the operation. Constant value: "2020-01-01-preview".
+ :ivar api_version: API version for the operation. Constant value: "2020-01-01".
"""
models = models
@@ -35,7 +35,7 @@ def __init__(self, client, config, serializer, deserializer):
self._client = client
self._serialize = serializer
self._deserialize = deserializer
- self.api_version = "2020-01-01-preview"
+ self.api_version = "2020-01-01"
self.config = config
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_scores_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_scores_operations.py
index 3ab7294b7e7d..9f29adb0cddb 100644
--- a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_scores_operations.py
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_secure_scores_operations.py
@@ -25,7 +25,7 @@ class SecureScoresOperations(object):
:param config: Configuration of service client.
:param serializer: An object model serializer.
:param deserializer: An object model deserializer.
- :ivar api_version: API version for the operation. Constant value: "2020-01-01-preview".
+ :ivar api_version: API version for the operation. Constant value: "2020-01-01".
"""
models = models
@@ -35,7 +35,7 @@ def __init__(self, client, config, serializer, deserializer):
self._client = client
self._serialize = serializer
self._deserialize = deserializer
- self.api_version = "2020-01-01-preview"
+ self.api_version = "2020-01-01"
self.config = config
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_security_solutions_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_security_solutions_operations.py
new file mode 100644
index 000000000000..dd85fc63920b
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_security_solutions_operations.py
@@ -0,0 +1,169 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class SecuritySolutionsOperations(object):
+ """SecuritySolutionsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-01-01".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-01-01"
+
+ self.config = config
+
+ def list(
+ self, custom_headers=None, raw=False, **operation_config):
+ """Gets a list of Security Solutions for the subscription.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: An iterator like instance of SecuritySolution
+ :rtype:
+ ~azure.mgmt.security.models.SecuritySolutionPaged[~azure.mgmt.security.models.SecuritySolution]
+ :raises: :class:`CloudError`
+ """
+ def prepare_request(next_link=None):
+ if not next_link:
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ else:
+ url = next_link
+ query_parameters = {}
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ return request
+
+ def internal_paging(next_link=None):
+ request = prepare_request(next_link)
+
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ return response
+
+ # Deserialize response
+ header_dict = None
+ if raw:
+ header_dict = {}
+ deserialized = models.SecuritySolutionPaged(internal_paging, self._deserialize.dependencies, header_dict)
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/securitySolutions'}
+
+ def get(
+ self, resource_group_name, security_solution_name, custom_headers=None, raw=False, **operation_config):
+ """Gets a specific Security Solution.
+
+ :param resource_group_name: The name of the resource group within the
+ user's subscription. The name is case insensitive.
+ :type resource_group_name: str
+ :param security_solution_name: Name of security solution.
+ :type security_solution_name: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: SecuritySolution or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.SecuritySolution or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str', max_length=90, min_length=1, pattern=r'^[-\w\._\(\)]+$'),
+ 'ascLocation': self._serialize.url("self.config.asc_location", self.config.asc_location, 'str'),
+ 'securitySolutionName': self._serialize.url("security_solution_name", security_solution_name, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('SecuritySolution', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Security/locations/{ascLocation}/securitySolutions/{securitySolutionName}'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_security_solutions_reference_data_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_security_solutions_reference_data_operations.py
new file mode 100644
index 000000000000..b3c6ece9ddd9
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_security_solutions_reference_data_operations.py
@@ -0,0 +1,154 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class SecuritySolutionsReferenceDataOperations(object):
+ """SecuritySolutionsReferenceDataOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ :ivar api_version: API version for the operation. Constant value: "2020-01-01".
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+ self.api_version = "2020-01-01"
+
+ self.config = config
+
+ def list(
+ self, custom_headers=None, raw=False, **operation_config):
+ """Gets a list of all supported Security Solutions for the subscription.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: SecuritySolutionsReferenceDataList or ClientRawResponse if
+ raw=true
+ :rtype: ~azure.mgmt.security.models.SecuritySolutionsReferenceDataList
+ or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('SecuritySolutionsReferenceDataList', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/securitySolutionsReferenceData'}
+
+ def list_by_home_region(
+ self, custom_headers=None, raw=False, **operation_config):
+ """Gets list of all supported Security Solutions for subscription and
+ location.
+
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: SecuritySolutionsReferenceDataList or ClientRawResponse if
+ raw=true
+ :rtype: ~azure.mgmt.security.models.SecuritySolutionsReferenceDataList
+ or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list_by_home_region.metadata['url']
+ path_format_arguments = {
+ 'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str', pattern=r'^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$'),
+ 'ascLocation': self._serialize.url("self.config.asc_location", self.config.asc_location, 'str')
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('SecuritySolutionsReferenceDataList', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list_by_home_region.metadata = {'url': '/subscriptions/{subscriptionId}/providers/Microsoft.Security/locations/{ascLocation}/securitySolutionsReferenceData'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_baseline_rules_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_baseline_rules_operations.py
new file mode 100644
index 000000000000..14747a65e390
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_baseline_rules_operations.py
@@ -0,0 +1,383 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class SqlVulnerabilityAssessmentBaselineRulesOperations(object):
+ """SqlVulnerabilityAssessmentBaselineRulesOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+
+ self.config = config
+
+ def create_or_update(
+ self, rule_id, workspace_id, api_version, resource_id, latest_scan=None, results=None, custom_headers=None, raw=False, **operation_config):
+ """Creates a Baseline for a rule in a database. Will overwrite any
+ previously existing results.
+
+ :param rule_id: The rule Id.
+ :type rule_id: str
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param latest_scan: Take results from latest scan.
+ :type latest_scan: bool
+ :param results: Expected results to be inserted into the baseline.
+ Leave this field empty it LatestScan == true.
+ :type results: list[list[str]]
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: RuleResults or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.RuleResults or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ body = None
+ if latest_scan is not None or results is not None:
+ body = models.RuleResultsInput(latest_scan=latest_scan, results=results)
+
+ # Construct URL
+ url = self.create_or_update.metadata['url']
+ path_format_arguments = {
+ 'ruleId': self._serialize.url("rule_id", rule_id, 'str'),
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ header_parameters['Content-Type'] = 'application/json; charset=utf-8'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct body
+ if body is not None:
+ body_content = self._serialize.body(body, 'RuleResultsInput')
+ else:
+ body_content = None
+
+ # Construct and send request
+ request = self._client.put(url, query_parameters, header_parameters, body_content)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('RuleResults', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ create_or_update.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/baselineRules/{ruleId}'}
+
+ def get(
+ self, rule_id, workspace_id, api_version, resource_id, custom_headers=None, raw=False, **operation_config):
+ """Gets the results for a given rule in the Baseline.
+
+ :param rule_id: The rule Id.
+ :type rule_id: str
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: RuleResults or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.RuleResults or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'ruleId': self._serialize.url("rule_id", rule_id, 'str'),
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('RuleResults', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/baselineRules/{ruleId}'}
+
+ def delete(
+ self, rule_id, workspace_id, api_version, resource_id, custom_headers=None, raw=False, **operation_config):
+ """Deletes a rule from the Baseline of a given database.
+
+ :param rule_id: The rule Id.
+ :type rule_id: str
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: None or ClientRawResponse if raw=true
+ :rtype: None or ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.delete.metadata['url']
+ path_format_arguments = {
+ 'ruleId': self._serialize.url("rule_id", rule_id, 'str'),
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.delete(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200, 204]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ if raw:
+ client_raw_response = ClientRawResponse(None, response)
+ return client_raw_response
+ delete.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/baselineRules/{ruleId}'}
+
+ def list(
+ self, workspace_id, api_version, resource_id, custom_headers=None, raw=False, **operation_config):
+ """Gets the results for all rules in the Baseline.
+
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: RulesResults or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.RulesResults or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('RulesResults', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/baselineRules'}
+
+ def add(
+ self, workspace_id, api_version, resource_id, latest_scan=None, results=None, custom_headers=None, raw=False, **operation_config):
+ """Add a list of baseline rules. Will overwrite any previously existing
+ results (for all rules).
+
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param latest_scan: Take results from latest scan.
+ :type latest_scan: bool
+ :param results: Expected results to be inserted into the baseline.
+ Leave this field empty it LatestScan == true.
+ :type results: dict[str, list[list[str]]]
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: RulesResults or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.RulesResults or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ body = None
+ if latest_scan is not None or results is not None:
+ body = models.RulesResultsInput(latest_scan=latest_scan, results=results)
+
+ # Construct URL
+ url = self.add.metadata['url']
+ path_format_arguments = {
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ header_parameters['Content-Type'] = 'application/json; charset=utf-8'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct body
+ if body is not None:
+ body_content = self._serialize.body(body, 'RulesResultsInput')
+ else:
+ body_content = None
+
+ # Construct and send request
+ request = self._client.post(url, query_parameters, header_parameters, body_content)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('RulesResults', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ add.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/baselineRules'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_scan_results_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_scan_results_operations.py
new file mode 100644
index 000000000000..31acb40b53ba
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_scan_results_operations.py
@@ -0,0 +1,173 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class SqlVulnerabilityAssessmentScanResultsOperations(object):
+ """SqlVulnerabilityAssessmentScanResultsOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+
+ self.config = config
+
+ def get(
+ self, scan_id, scan_result_id, workspace_id, api_version, resource_id, custom_headers=None, raw=False, **operation_config):
+ """Gets the scan results of a single rule in a scan record.
+
+ :param scan_id: The scan Id. Type 'latest' to get the scan results for
+ the latest scan.
+ :type scan_id: str
+ :param scan_result_id: The rule Id of the results.
+ :type scan_result_id: str
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: ScanResult or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.ScanResult or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'scanId': self._serialize.url("scan_id", scan_id, 'str'),
+ 'scanResultId': self._serialize.url("scan_result_id", scan_result_id, 'str'),
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('ScanResult', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/scans/{scanId}/scanResults/{scanResultId}'}
+
+ def list(
+ self, scan_id, workspace_id, api_version, resource_id, custom_headers=None, raw=False, **operation_config):
+ """Gets a list of scan results for a single scan record.
+
+ :param scan_id: The scan Id. Type 'latest' to get the scan results for
+ the latest scan.
+ :type scan_id: str
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: ScanResults or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.ScanResults or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'scanId': self._serialize.url("scan_id", scan_id, 'str'),
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('ScanResults', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/scans/{scanId}/scanResults'}
diff --git a/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_scans_operations.py b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_scans_operations.py
new file mode 100644
index 000000000000..0b6e34d106c3
--- /dev/null
+++ b/sdk/security/azure-mgmt-security/azure/mgmt/security/operations/_sql_vulnerability_assessment_scans_operations.py
@@ -0,0 +1,166 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+#
+# Code generated by Microsoft (R) AutoRest Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is
+# regenerated.
+# --------------------------------------------------------------------------
+
+import uuid
+from msrest.pipeline import ClientRawResponse
+from msrestazure.azure_exceptions import CloudError
+
+from .. import models
+
+
+class SqlVulnerabilityAssessmentScansOperations(object):
+ """SqlVulnerabilityAssessmentScansOperations operations.
+
+ You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
+
+ :param client: Client for service requests.
+ :param config: Configuration of service client.
+ :param serializer: An object model serializer.
+ :param deserializer: An object model deserializer.
+ """
+
+ models = models
+
+ def __init__(self, client, config, serializer, deserializer):
+
+ self._client = client
+ self._serialize = serializer
+ self._deserialize = deserializer
+
+ self.config = config
+
+ def get(
+ self, scan_id, workspace_id, api_version, resource_id, custom_headers=None, raw=False, **operation_config):
+ """Gets the scan details of a single scan record.
+
+ :param scan_id: The scan Id. Type 'latest' to get the scan record for
+ the latest scan.
+ :type scan_id: str
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: Scan or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.Scan or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.get.metadata['url']
+ path_format_arguments = {
+ 'scanId': self._serialize.url("scan_id", scan_id, 'str'),
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('Scan', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ get.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/scans/{scanId}'}
+
+ def list(
+ self, workspace_id, api_version, resource_id, custom_headers=None, raw=False, **operation_config):
+ """Gets a list of scan records.
+
+ :param workspace_id: The workspace Id.
+ :type workspace_id: str
+ :param api_version: The api version.
+ :type api_version: str
+ :param resource_id: The identifier of the resource.
+ :type resource_id: str
+ :param dict custom_headers: headers that will be added to the request
+ :param bool raw: returns the direct response alongside the
+ deserialized response
+ :param operation_config: :ref:`Operation configuration
+ overrides`.
+ :return: Scans or ClientRawResponse if raw=true
+ :rtype: ~azure.mgmt.security.models.Scans or
+ ~msrest.pipeline.ClientRawResponse
+ :raises: :class:`CloudError`
+ """
+ # Construct URL
+ url = self.list.metadata['url']
+ path_format_arguments = {
+ 'resourceId': self._serialize.url("resource_id", resource_id, 'str', skip_quote=True)
+ }
+ url = self._client.format_url(url, **path_format_arguments)
+
+ # Construct parameters
+ query_parameters = {}
+ query_parameters['workspaceId'] = self._serialize.query("workspace_id", workspace_id, 'str')
+ query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str')
+
+ # Construct headers
+ header_parameters = {}
+ header_parameters['Accept'] = 'application/json'
+ if self.config.generate_client_request_id:
+ header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
+ if custom_headers:
+ header_parameters.update(custom_headers)
+ if self.config.accept_language is not None:
+ header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
+
+ # Construct and send request
+ request = self._client.get(url, query_parameters, header_parameters)
+ response = self._client.send(request, stream=False, **operation_config)
+
+ if response.status_code not in [200]:
+ exp = CloudError(response)
+ exp.request_id = response.headers.get('x-ms-request-id')
+ raise exp
+
+ deserialized = None
+ if response.status_code == 200:
+ deserialized = self._deserialize('Scans', response)
+
+ if raw:
+ client_raw_response = ClientRawResponse(deserialized, response)
+ return client_raw_response
+
+ return deserialized
+ list.metadata = {'url': '/{resourceId}/providers/Microsoft.Security/sqlVulnerabilityAssessments/default/scans'}