We released 1.2 of the Azure Management Libraries for .NET. This release adds support for additional security and deployment features, and more Azure services:
- Managed service identity
- Create users in Azure Active Directory, update service principals and assign permissions to apps
- Storage service encryption
- Deploy Web apps and functions using MS Deploy
- Network watcher service
- Search service
https://github.com/azure/azure-sdk-for-net/tree/Fluent
Getting Started
You can download 1.2 libraries from:
Create a Virtual Machine with Managed Service Identity (MSI)
You can create a virtual machine with MSI enabled using a define() … create() method chain:
IVirtualMachine virtualMachine = azure.VirtualMachines.Define("myLinuxVM")
.WithRegion(Region.USEast)
.WithNewResourceGroup(rgName)
.WithNewPrimaryNetwork("10.0.0.0/28")
.WithPrimaryPrivateIPAddressDynamic()
.WithNewPrimaryPublicIPAddress(pipName)
.WithPopularLinuxImage(KnownLinuxVirtualMachineImage.UbuntuServer16_04_Lts)
.WithRootUsername("tirekicker")
.WithRootPassword(password)
.WithSize(VirtualMachineSizeTypes.StandardDS2V2)
.WithOSDiskCaching(CachingTypes.ReadWrite)
.WithManagedServiceIdentity()
.WithRoleBasedAccessToCurrentResourceGroup(BuiltInRole.Contributor)
.Create();
You can manage any MSI-enabled Azure resources from a virtual machine with MSI and add an MSI service principal to an Azure Active Directory security group.
Add New User to Azure Active Directory
You can add a new user to Azure Active Directory using a define() … create() method chain:
IActiveDirectoryUser user = authenticated.ActiveDirectoryUsers
.Define("tirekicker")
.WithEmailAlias("tirekicker")
.WithPassword("StrongPass!12")
.Create();
Similarly, you can create and update users and groups in Active Directory.
Enable Storage Service Encryption for a Storage Account
You can enable storage service encryption at a storage account level when you create a storage account using a define() … create() method chain:
IStorageAccount storageAccount = azure.StorageAccounts
.Define(storageAccountName)
.WithRegion(Region.USEast)
.WithNewResourceGroup(rgName)
.WithEncryption()
.Create();
Deploy Web apps and Functions using MS Deploy
You can use MS Deploy to deploy Web apps and functions by using the deploy() method:
// Create a Web app
IWebApp webApp = azure.WebApps.Define(webAppName)
.WithExistingWindowsPlan(plan)
.WithExistingResourceGroup(rgName)
.With.NETVersion(.NETVersion.V8Newest)
.WithWebContainer(WebContainer.Tomcat8_0Newest)
.Create();
// Deploy a Web app using MS Deploy
webApp.Deploy()
.WithPackageUri("link-to-bin-artifacts-in-storage-or-somewhere-else")
.WithExistingDeploymentsDeleted(true)
.Execute();
And…
// Create a function app
IFunctionApp functionApp = azure.AppServices.FunctionApps
.Define(functionAppName)
.WithExistingAppServicePlan(plan)
.WithExistingResourceGroup(rgName)
.WithExistingStorageAccount(app3.StorageAccount)
.Create();
// Deploy a function using MS Deploy
functionApp.Deploy()
.WithPackageUri("link-to-bin-artifacts-in-storage-or-somewhere-else")
.WithExistingDeploymentsDeleted(true)
.Execute();
Create Network Watcher and start Packet Capture
You can visualize network traffic patterns to and from virtual machines by creating and starting a packet capture using a define() … create() method chain, downloading the packet capture and visualizing network traffic patterns using open source tools:
// Create a Network Watcher
INetworkWatcher networkWatcher = azure.NetworkWatchers.Define(nwName)
.WithRegion(Region.USEast)
.WithNewResourceGroup(rgName)
.Create();
// Start a Packet Capture
IPacketCapture packetCapture = networkWatcher.PacketCaptures
.Define(packetCaptureName)
.WithTarget(virtualMachine.Id)
.WithStorageAccountId(storageAccount.Id)
.WithTimeLimitInSeconds(1500)
.DefinePacketCaptureFilter()
.WithProtocol(PcProtocol.TCP)
.Attach()
.Create();
Similarly, you can programmatically:
- Verify if traffic is allowed to and from a virtual machine.
- Get the next hop type and IP address for a virtual machine.
- Retrieve network topology for a resource group.
- Analyze virtual machine security by examining effective network security rules applied to a virtual machine.
- Configure network security group flow logs.
Create a Managed Cloud Search Service
You can create a managed cloud search service (Azure Search) with replicas and partitions using a define() … create() method chain:
ISearchService searchService = azure.SearchServices.Define(searchServiceName)
.WithRegion(Region.USEast)
.WithNewResourceGroup(rgName)
.WithStandardSku()
.WithPartitionCount(1)
.WithReplicaCount(1)
.Create();
Similarly, you can programmatically:
- Manage query keys.
- Update search service with replicas and partitions.
- Regenerate primary and secondary admin keys.
Try it
You can get more samples from our GitHub repo. Give it a try and let us know what you think (via email or comments below).
You can find plenty of additional info about .NET on Azure at https://docs.microsoft.com/en-us/dotnet/azure/.
