Sorry I have been delinquent in posting meetings summaries from our Azure Gov Meetup  Here is quick description of our last three meetings.

But first, we have new venue! We are now meeting  1776 DC  – a global business incubator or startups – a great setting for our meetup.  If you not been to 1776, it is definitely something worth checking out.

Our 7th meeting was about #opensource in the government.  The main presenters  were Evong Nham Chung and Adam Clater from Red Hat. Adam and Evong talked about Microsoft and Red Hat partnership, as well as, the availability of Red Hat OpenShift in the Azure marketplace. The main presentation was followed by Brian Harrison, Cloud Solution Architect, Microsoft. Brian presented an overview of Microsoft’s open source initiatives.  

Our 8th meeting was kicked off by  Andrew Weiss, Federal Solutions Engineer, Docker; and WillKinard, CTO, Boxboat with a discussion on modernizing applications with Docker and  Azure. Next, Michael S. Hansen, Principal Investigator, National Heart, Lung, and Blood Institute, NIH, presented  a very interesting use case with the "Gadetron" which is using containers for image processing workloads in the cloud. Finally, John Morello, CTO, Twistlock, a Docker partner and open source contributor presented their solution around container security.

Our 9th meeting was focused on #IOT.  Jeff King, Senior Solutions Architect, Microsoft and Brandon Rohrer, Cloud Solution Architect, Microsoft presented a very interesting case study on how  sensor (IoT) devices are providing new crime-fighting tools and real-time situational awareness for law enforcement. They  also talked about in-car and body-worn camera systems, drones and aerial surveillance vehicles that re using the cloud to provide officers with a real-time, connected view of other first responders around them, and real-time situational awareness for officers. Following the main presentation,  Yared Tsegaye, Senior Software Engineer, AIS talked about a  solution developed for a large machine-tooling company aiming to re-platform their existing machine optimization software solution to be lower-cost, yet more scalable and flexible. Technologies that made  up the solution included Azure IOT Hub, Language R, Azure ML and Power BI. Next, Stephen Bates, Director, Advanced Analytics, OSIsoft provided a summary of  federal use cases, ramp to Azure, and overview on OSIsoft as a Microsoft partner. Finally, Ryan Socal, Senior Program Manager, Azure Government, Microsoft provided a preview of the one-stop documentation resource on Azure Government.

As can see from the above meeting descriptions – a host of very interesting topics and conversations. Please register here to get updates about upcoming meetings – https://www.meetup.com/DCAzureGov/. Hope to see you at the next meeting!

The sixth #AzureGov meetup took place on July 25th at Microsoft’s K Street office.

Like the previous meetups, this meetup also began with a  networking session.

After the  networking session Andrew Stroup, Director of Product and Technology, White House Presidential Innovation Fellows, provided insights and discussion on how the federal government is tackling the procurement of cloud technologies by building a double-sided marketplace, Apps.gov.

Apps.gov is focused on creating easier pathways for tech companies to enter the federal government market and federal employees a singular place to discover, explore and procure these products. Andrew took several questions about how products are registered with Apps.gov, the market size and how cloud solutions like AzureGov  are available on Apps.gov.

Following Andrew’s session,  Martin Heinrich, Director of Enterprise Content and Records Management, CGI, discussed CGI’s recently-launched Records Management as a Service (RMaaS) which combines the Microsoft Azure Government Cloud and OpenText’s Content Suite with CGI’s extensive consulting expertise and implementation services.

Hope you can join us for the next meeting on August 31st that will feature Open Source  in government. For more information, please visit

http://www.meetup.com/DCAzureGov/events/233042129/

The fifth #AzureGov meetup took place on June 29th at Microsoft’s K Street office.

Like the previous meetups, this meetup also began with a  networking session. A hot topic of conversation amongst the attendees was the recent announcement about AzureGov achieving high impact provisional authority  (P-ATO) – highest impact level for FedRAMP accreditation.  In other words, AzureGov can now host high-impact level data and applications. This was seen by many as a turning point in AzureGov adoption by federal and state agencies.

After the  networking session, Nate Johnson, Senior Program Manager in the Azure Security Group, presented an insightful session on how apps can achieve ATO.  He talked about the six step process for apps to achieve ATO.

 

 

image

Nate also talked about how AzureGov team can help customers in achieving an ATO for their apps including  Azure SME support, customer responsibility matrix, security documentation, blueprints and templates.

imagecontrol

The next session was presented by Aaron Barth. Principal PFE, Microsoft Services. Aaron’s session built on the FedRAMP process outlined by Nate earlier. Aaron provided a “practitioners perspective” based on his recent experience in going through ATO process for a client of his. As a developer himself,  Aaron was able to demystify, what appears to be  an onerous process  of  documenting every security control in the application. He explained that  by building on a FedRAMP compliant platform,  a large chunk of the documentation requirements were addressed by the cloud provider (AzureGov).

The following slide (also from Aaron’’s  deck) was very helpful in depicting i) how the various  security controls maps to different tiers of the application ii) how the number of ATO controls that you are responsible for (as an app owner), goes down significantly as you move from on-premises, IaaS and PaaS.

image

The next presentation was from Brett Goldsmith of AIS. Brett presented a brief  demonstration of how his team, using the  FBI UCR dataset,  built a nice looking visualizations using Power BI Embedded.

Finally, I tried to answer a question that has come up in previous meetups – “How can I leverage rich ARM templates in an AzureGov setting?”  As you know, not all services (including Azure RM providers) are available in AzureGov today.   So here is my brute force approach for working around this *temporary* limitation ( disclaimer – this is not an “official” workaround by any means, so please conduct your due diligence regarding licensing etc.)

In a nutshell – provision resources in Azure using ARM  (for example the sqlvm-always-on), glean the metadata from the provisioned resources  (AV Set, ILBs, Storage), copy the images to Azure Gov, use the metadata gleaned from the previous step to provision resources in AzureGov using ASM.

 

image

That said, hopefully we will not need to use the aforementioned workaround for long. New ARM Resources Providers are being added to AzureGov at a fairly rapid clip. In fact, I just  ran a console program to dump all resource providers. The output is pasted below.  Notice the addition of providers such as Storage V2.

Provider Namespace Microsoft.Backup
ResourceTypes:
BackupVault

Provider Namespace Microsoft.ClassicCompute
ResourceTypes:
domainNames
checkDomainNameAvailability
domainNames/slots
domainNames/slots/roles
virtualMachines
capabilities
quotas
operations
resourceTypes
moveSubscriptionResources
operationStatuses

Provider Namespace Microsoft.ClassicNetwork
ResourceTypes:
virtualNetworks
reservedIps
quotas
gatewaySupportedDevices
operations
networkSecurityGroups
securityRules
capabilities

Provider Namespace Microsoft.ClassicStorage
ResourceTypes:
storageAccounts
quotas
checkStorageAccountAvailability
capabilities
disks
images
osImages
operations

Provider Namespace Microsoft.SiteRecovery
ResourceTypes:
SiteRecoveryVault

Provider Namespace Microsoft.Web
ResourceTypes:
sites/extensions
sites/slots/extensions
sites/instances
sites/slots/instances
sites/instances/extensions
sites/slots/instances/extensions
publishingUsers
ishostnameavailable
sourceControls
availableStacks
listSitesAssignedToHostName
sites/hostNameBindings
sites/slots/hostNameBindings
operations
certificates
serverFarms
sites
sites/slots
runtimes
georegions
sites/premieraddons
hostingEnvironments
hostingEnvironments/multiRolePools
hostingEnvironments/workerPools
hostingEnvironments/multiRolePools/instances
hostingEnvironments/workerPools/instances
deploymentLocations
ishostingenvironmentnameavailable
checkNameAvailability

Provider Namespace Microsoft.Authorization
ResourceTypes:
roleAssignments
roleDefinitions
classicAdministrators
permissions
locks
operations
policyDefinitions
policyAssignments
providerOperations

Provider Namespace Microsoft.Cache
ResourceTypes:
Redis
locations
locations/operationResults
checkNameAvailability
operations

Provider Namespace Microsoft.EventHub
ResourceTypes:
namespaces
checkNamespaceAvailability
operations

Provider Namespace Microsoft.Features
ResourceTypes:
features
providers

Provider Namespace microsoft.insights
ResourceTypes:
logprofiles
alertrules
autoscalesettings
eventtypes
eventCategories
locations
locations/operationResults
operations
diagnosticSettings
metricDefinitions
logDefinitions

Provider Namespace Microsoft.KeyVault
ResourceTypes:
vaults
vaults/secrets
operations

Provider Namespace Microsoft.Resources
ResourceTypes:
tenants
providers
checkresourcename
resources
subscriptions
subscriptions/resources
subscriptions/providers
subscriptions/operationresults
resourceGroups
subscriptions/resourceGroups
subscriptions/resourcegroups/resources
subscriptions/locations
subscriptions/tagnames
subscriptions/tagNames/tagValues
deployments
deployments/operations
operations

Provider Namespace Microsoft.Scheduler
ResourceTypes:
jobcollections
operations operationResults

Provider Namespace Microsoft.ServiceBus
ResourceTypes:
namespaces
checkNamespaceAvailability
premiumMessagingRegions
operations

Provider Namespace Microsoft.Storage
ResourceTypes:
storageAccounts
operations
usages
checkNameAvailability

 

Here is the code to print all resource providers available in AzureGov

static void Main(string[] args)

  {

      var token = GetAuthorizationHeader();

      var credentials = new Microsoft.Rest.TokenCredentials(token);

      var resourceManagerClient = new Microsoft.Azure.Management.Resources.ResourceManagementClient(new Uri(AzureResourceManagerEndpoint), credentials)

      {

          SubscriptionId = SubscriptionId,

      };


      foreach (var provider in resourceManagerClient.Providers.List())

      {

          Console.WriteLine(String.Format("Provider Namespace {0}", provider.NamespaceProperty));

          Console.WriteLine("ResourceTypes:");


          foreach (var resourceType in provider.ResourceTypes)

          {

              Console.WriteLine(String.Format("\t {0}", resourceType.ResourceType));

          }


          Console.WriteLine("");

      }

 

The fourth #AzureGov meetup took place on May 24th at Microsoft’s K Street office.  

After a short networking session, Jack Bienko, Deputy for Entrepreneurship Education, US Small Business Administration talked about the upcoming National Day of Civic Hacking on June 4th. You can find more information about the event on Jack’s recent blog post

Next. Bill Meskill, Director of Enterprise Information Services, Office of the Under Secretary of Defense for Policy, kicked off a case study presentation of a Intelligent News Aggregator and Recommendation solution that his group has developed on Azure. He started out by describing the motivations for building this solution, a summary of business objectives and why it made sense to develop it on the cloud. 

 IMG_2819

Next Brent Wodikca and Jim Strang  from AIS presented an overview of the architecture, followed by, a brief demo.  At a high-level, the system relies on a Azure WebJobs to pull news feeds from a number of sources. The downloaded news stories are then used to train an Azure Machine Learning model -  LDA implementation of the Topic Model. The trained model is then made available as a web service to serve recommendations based on users’ preference.  There is an also an API Management facade that allows their on-premises systems ( SharePoint) to talk to the Azure hosted solution. Azure API Management allows security policies such as enforcing a JWT policy and restricting the incoming IP addresses is used to secure the connectivity between on-premises and Azure ML based solution.

image 

 

Finally Andrew Weiss, Azure Solution Architect, Microsoft briefly talked about  leveraging Azure Services to help solve hackathon challenges.

 

clip_image002

This guest post is from Brent Wodicka at Applied Information Sciences.

The third #AzureGov meetup was held at the Microsoft Technology Center in Reston on April 27th. This meetup was again well attended and featured three great presentations relating to next-gen cloud applications for government and micro-services.

Mehul Shah got the session started with an overview of the Cortana Intelligence Suite, including the latest announcements coming out of BUILD 2016. The talk started with a lap around the platform, and then focused in on some key areas where features are rolling out quickly – including the Cognitive Services APIs. The session included some good discussion from the group related to potential use cases, and the ability to adapt the services to any number of business verticals. More about the Cortana Intelligence Suite here, and Build 2016 here.

The second session focused on building microservices on Azure. Chandra Sekar lead the discussion that began with a general discussion about the options you have for building microservices on the platform, including container technologies and the Azure Service Fabric. Chandra then went into detail and showed a great demo of a sample microservice built on the Azure Service Fabric. The demo explained how stateful micrososervices can be built using the Service Fabric, and demonstrated the resiliency of this model by walking through a simulated “failure” of the primary service node and recovery of the service – which occurred very quickly and maintained its running state. Cool stuff!

The final speaker was Keith McClellan, a Federal Programs Technical lead with Mesosphere. Keith began by talking about what Mesosphere has been up to, its maturity in the market, and the recent announcement of the DC/OS project. DC/OS is an exciting open source technology (spearheaded by Mesosphere) which offers an enterprise grade data-center scale operating system – meant to be a single location for running workloads of almost any kind. Keith walked through provisioning containers and other interesting services (including a SPARK data cluster for big data analysis) on the platform – and actually provisioned the entire stack on Azure infrastructure. I was impressed with the number of services already available to run on the platform today. More about DC/OS here.

If you haven’t already, join the DC Azure Government meetup group here, and join us for the next meeting. You can also opt to be notified about upcoming events or when group members post content.

 

The second #AzureGov meetup was held in Reston on March 15th. It was well attended ( see picture below of Todd presenting to the audience. Standing next to Todd is Karina Homme – Principal Program Manager for AzureGov  and co-organizer of the meetup )

This meetup was kicked off by Todd Neison from NOAA. Todd gave an excellent presentation on his group’s journey into #Azure. Starting with the decision to  move to the cloud, challenges in getting the necessary approvals and focusing on  #PaaS. Todd’s perspective on adopting the cloud as a federal government employee can be very valuable to anyone looking to move  to the cloud. 

 

 

 

The next segment was presented by Matt Rathbun. Matt reviewed the recent news on #AzureGov compliance including  i) Microsoft cloud for the government has been invited to participate in a pilot for High Impact Baseline and expects to get  a provisional ATO by the end of the month ii) Microsoft has also finalized the requirements to meet DISA Impact Level 4 iii) Microsoft is establishing two new physically isolated Azure Government regions for DoD and DISA Impact Level 5.

 

Capture

 

 

You can read more about the announcements here.  What stood out for me was the idea of fast track compliance that is designed to speed up the compliance from the current annual certification cadence.

The final segment was presented by the Redhat team and Andrew Weiss from Microsoft.  They demonstrated the #OpenShift PaaS offering running on Azure. OpenShift is a container based application development platform that can be deployed to Azure or on-premises. As part of the presentation, they took an ASP.NET core 1.0 based  web application and hosted it on the OpenShift platform.  Next they scaled up the web application using Openshift and underlying Kubernestis container cluster manager.

Hope you can join us for the next meeting. Please register with the meetup here to be notified of the upcoming meetings.   

 

Thanks for those who joined us for inaugural #AzureGov meetup on Feb 22nd. For those who could not join here is a quick update.

We talked about the services that are available in AzureGov today ( see picture below).

image

 

Note that Azure Resource Manager (ARM) is now available in AzureGov.  Why am I singling out ARM from the list above? Mainly because most of the services that are available today such as Azure Cloud Services, Azure Virtual Machines, Azure Storage are based on the classic model (also known as the Service Management Model)  ARM is the “new way” to deploy and manage the services that make up your application in Azure.  The differences between the ARM and the classic model are described here. Further note that the availability of ARM is only the first step. What we also need are the Resource Managers (RM)for various services like Compute and Storage V2 ( ARM in turn calls the necessary RM to provision a service).

Since I could not find sample code to call ARM in AzureGov, here is a code snippet that you may find handy.

 

using System    ;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System.Threading;
using Microsoft.Azure.Management.Resources.Models;
using Microsoft.Azure.Management.Resources;
using Microsoft.Rest;
using Microsoft.Rest.Azure;

namespace AzureGovDemo
{
    class Program
    {
        # Set well-known client ID for Azure PowerShell

        private static string ClientId = "1950a258-227b-4e31-a9cf-717495945fc2";
        private static string TenantId = "XXX.onmicrosoft.com";
        private static string LoginEndpoint = "https://login.microsoftonline.com/";
        private static string ServiceManagementApiEndpoint = "https://management.core.usgovcloudapi.net/";
        private static string RedirectUri = "urn:ietf:wg:oauth:2.0:oob";
        private static string SubscriptionId = "XXXXXXXX;
        private static string AzureResourceManagerEndpoint = "https://management.usgovcloudapi.net";
        static void Main(string[] args)
        {
            var token = GetAuthorizationHeader();
            var credentials = new Microsoft.Rest.TokenCredentials(token);
            var resourceManagerClient = new Microsoft.Azure.Management.Resources.ResourceManagementClient(new Uri(AzureResourceManagerEndpoint), credentials)
            {
                SubscriptionId = SubscriptionId,
            };
            Console.WriteLine("Listing resource groups. Please wait….");
            Console.WriteLine("—————————————-");
            var resourceGroups = resourceManagerClient.ResourceGroups.List();
            foreach (var resourceGroup in resourceGroups)
            {
                Console.WriteLine("Resource Group Name: " + resourceGroup.Name);
                Console.WriteLine("Resource Group Id: " + resourceGroup.Id);
                Console.WriteLine("Resource Group Location: " + resourceGroup.Location);
                Console.WriteLine("—————————————-");
            }
            Console.WriteLine("Press any key to terminate the application");
            Console.ReadLine();
        }

        private static string GetAuthorizationHeader()
        {
            AuthenticationResult result = null;

            var context = new AuthenticationContext(LoginEndpoint + TenantId);

            var thread = new Thread(() =>
            {
                result = context.AcquireToken(
                  ServiceManagementApiEndpoint,
                  ClientId,
                  new Uri(RedirectUri));
            });

            thread.SetApartmentState(ApartmentState.STA);
            thread.Name = "AquireTokenThread";
            thread.Start();
            thread.Join();

            if (result == null)
            {
                throw new InvalidOperationException("Failed to obtain the JWT token");
            }

            string token = result.AccessToken;
            return token;
        }
    }
}

Hope this helps and I do hope you will register for the #AzureGov meetup  here – http://www.meetup.com/DCAzureGov/

Thanks to my friend Gaurav Mantri, fellow Azure MVP and developer of Cloud Portam – www.CloudPortam.com – an excellent tool for managing Azure Services. Gaurav figured out that we need to set the well known client id for powershell.