Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<PropertyGroup>
<PackageId>Microsoft.Azure.Management.SecurityCenter</PackageId>
<Description>Provides developers with libraries for the updated Azure Security Center platform under Azure Resource manager to view and manage security posture in and outside Azure.</Description>
<Version>1.1.3</Version>
<Version>2.1.0</Version>
<AssemblyName>Microsoft.Azure.Management.SecurityCenter</AssemblyName>
<PackageTags>management;security center;security;IoT security;</PackageTags>
<PackageReleaseNotes>Updated Information Protection SDK clients</PackageReleaseNotes>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
[assembly: AssemblyTitle("Microsoft Azure Security Center Library")]
[assembly: AssemblyDescription("Provides management functionality for Microsoft Azure Security Center Resources.")]

[assembly: AssemblyVersion("1.1.3.0")]
[assembly: AssemblyFileVersion("1.1.3.0")]
[assembly: AssemblyVersion("2.1.0.0")]
[assembly: AssemblyFileVersion("2.1.0.0")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("Microsoft Azure .NET SDK")]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
using System.Net;
using Microsoft.Azure.Management.Security;
using Microsoft.Azure.Management.Security.Models;
using Microsoft.Azure.Test.HttpRecorder;
using Microsoft.Rest.ClientRuntime.Azure.TestFramework;
using Newtonsoft.Json;
using SecurityCenter.Tests.Helpers;
using Xunit;

namespace SecurityCenter.Tests
{
public class AdaptiveApplicationControlsTests : TestBase
{
#region Test setup

public static TestEnvironment TestEnvironment { get; private set; }

private static SecurityCenterClient GetSecurityCenterClient(MockContext context)
{
if (TestEnvironment == null && HttpMockServer.Mode == HttpRecorderMode.Record)
{
TestEnvironment = TestEnvironmentFactory.GetTestEnvironment();
}

var handler = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK, IsPassThrough = true };

var securityCenterClient = HttpMockServer.Mode == HttpRecorderMode.Record
? context.GetServiceClient<SecurityCenterClient>(TestEnvironment, handlers: handler)
: context.GetServiceClient<SecurityCenterClient>(handlers: handler);

securityCenterClient.AscLocation = "centralus";

return securityCenterClient;
}

#endregion

#region AdaptiveApplicationControls Tests
[Fact]
public void AdaptiveApplicationControls_List()
{
using (var context = MockContext.Start(this.GetType()))
{
var securityCenterClient = GetSecurityCenterClient(context);
var appWhitelistingGroups = securityCenterClient.AdaptiveApplicationControls.List();
ValidateAppWhitelistingGroups(appWhitelistingGroups);
}
}

[Fact]
public void AdaptiveApplicationControls_Put()
{
using (var context = MockContext.Start(this.GetType()))
{
var securityCenterClient = GetSecurityCenterClient(context);
var appWhitelistingGroup = new AppWhitelistingGroup(
name: "TestGroup",
protectionMode: new ProtectionMode("Audit", "None", "None"),
configurationStatus: "NoStatus",
sourceSystem: "Azure_AppLocker");

var createdGroup = securityCenterClient.AdaptiveApplicationControls.Put("TestGroup", appWhitelistingGroup);

ValidateCreatedApplicationWhitelistingGroup(createdGroup, securityCenterClient.AscLocation, "TestGroup");
}
}

[Fact]
public void AdaptiveApplicationControls_Get()
{
using (var context = MockContext.Start(this.GetType()))
{
var securityCenterClient = GetSecurityCenterClient(context);
var group = securityCenterClient.AdaptiveApplicationControls.Get("TestGroup");

ValidateApplicationWhitelistingGroup(group);
}
}

#endregion

#region Validations


private void ValidateAppWhitelistingGroups(AppWhitelistingGroups appWhitelistingGroups)
{
Assert.NotEmpty(appWhitelistingGroups.Value);

appWhitelistingGroups.Value.ForEach(ValidateApplicationWhitelistingGroup);
}

private void ValidateApplicationWhitelistingGroup(AppWhitelistingGroup appWhitelistingGroup)
{
Assert.NotNull(appWhitelistingGroup);
Assert.NotNull(appWhitelistingGroup.VmRecommendations);
Assert.NotNull(appWhitelistingGroup.PathRecommendations);
Assert.NotNull(appWhitelistingGroup.ConfigurationStatus);
Assert.NotNull(appWhitelistingGroup.EnforcementMode);
Assert.NotNull(appWhitelistingGroup.Issues);
Assert.NotNull(appWhitelistingGroup.ProtectionMode);
Assert.NotNull(appWhitelistingGroup.SourceSystem);
}

private void ValidateCreatedApplicationWhitelistingGroup(AppWhitelistingGroup appWhitelistingGroup, string ascLocation, string groupName)
{
Assert.NotNull(appWhitelistingGroup);
Assert.NotNull(appWhitelistingGroup.Id);
Assert.Equal(groupName, appWhitelistingGroup.Name);
Assert.Equal("Microsoft.Security/applicationWhitelistings", appWhitelistingGroup.Type);
Assert.Equal(ascLocation, appWhitelistingGroup.Location);
}

#endregion
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
using System.Collections.Generic;
using System.Net;
using Microsoft.Azure.Management.Security;
using Microsoft.Azure.Management.Security.Models;
using Microsoft.Azure.Test.HttpRecorder;
using Microsoft.Rest.Azure;
using Microsoft.Rest.ClientRuntime.Azure.TestFramework;
using SecurityCenter.Tests.Helpers;
using Xunit;

namespace SecurityCenter.Tests
{
public class AdaptiveNetworkHardeningsTests : TestBase
{
#region Test setup

public static TestEnvironment TestEnvironment { get; private set; }

private static SecurityCenterClient GetSecurityCenterClient(MockContext context)
{
if (TestEnvironment == null && HttpMockServer.Mode == HttpRecorderMode.Record)
{
TestEnvironment = TestEnvironmentFactory.GetTestEnvironment();
}

var handler = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK, IsPassThrough = true };

var securityCenterClient = HttpMockServer.Mode == HttpRecorderMode.Record
? context.GetServiceClient<SecurityCenterClient>(TestEnvironment, handlers: handler)
: context.GetServiceClient<SecurityCenterClient>(handlers: handler);

securityCenterClient.AscLocation = "westcentralus";

return securityCenterClient;
}

#endregion

#region AdaptiveNetworkHardenings Tests
[Fact]
public void AdaptiveNetworkHardenings_Get()
{
using (var context = MockContext.Start(this.GetType()))
{
var securityCenterClient = GetSecurityCenterClient(context);
var adaptiveNetworkHardeningResource = securityCenterClient.AdaptiveNetworkHardenings.Get("MyResourceGroup", "Microsoft.Compute", "virtualMachines", "MyVm", "default");
ValidateAdaptiveNetworkHardeningResource(adaptiveNetworkHardeningResource);
}
}

[Fact]
public void AdaptiveNetworkHardenings_Enforce()
{
using (var context = MockContext.Start(this.GetType()))
{
var securityCenterClient = GetSecurityCenterClient(context);
var response = securityCenterClient.AdaptiveNetworkHardenings.BeginEnforceWithHttpMessagesAsync(
"MyResourceGroup",
"Microsoft.Compute",
"virtualMachines",
"MyVm",
"default",
new List<Rule>()
{
new Rule("SystemGenerated", "Inbound", 3389, new List<string>() { "TCP"}, new List<string>())
},
new[] { "/subscriptions/487bb485-b5b0-471e-9c0d-10717612f869/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkSecurityGroups/MyNsg" }).Result;

Assert.Equal(HttpStatusCode.Accepted, response.Response.StatusCode);
}
}

#endregion

#region Validations

private void ValidateAdaptiveNetworkHardeningResource(AdaptiveNetworkHardening adaptiveNetworkHardeningResource)
{
Assert.NotNull(adaptiveNetworkHardeningResource);
Assert.NotEmpty(adaptiveNetworkHardeningResource.EffectiveNetworkSecurityGroups);
Assert.NotEmpty(adaptiveNetworkHardeningResource.Rules);
Assert.NotNull(adaptiveNetworkHardeningResource.RulesCalculationTime);
}

#endregion
}
}
Loading