Design Azure Security
Design Azure Security
White papers
Azure security response in the cloud
Azure advanced threat detection
Azure network security
Develop secure applications on Azure
Best practices
Security best practices for Azure
Network security
Data security
Virtual machine security
Identity and access
IaaS security
Secure PaaS deployments
Secure Azure Admin accounts
Checklists
Securing databases
Operational security
Service Fabric security
Compliance
FFIEC
HIPAA/HITRUST
PCI DSS
FEDRAMP
UK-OFFICIAL
Cybersecurity consulting
Pen testing
Disk Encryption
Overview
We know that security is job one in the cloud and how important it is that you find accurate and timely information
about Azure security. One of the best reasons to use Azure for your applications and services is to take advantage
of its wide array of security tools and capabilities. These tools and capabilities help make it possible to create
secure solutions on the secure Azure platform. Microsoft Azure provides confidentiality, integrity, and availability of
customer data, while also enabling transparent accountability.
To help you better understand the collection of security controls implemented within Microsoft Azure from both
the customer's and Microsoft operations' perspectives, this white paper, "Introduction to Azure Security", is written
to provide a comprehensive look at the security available with Microsoft Azure.
Azure Platform
Azure is a public cloud service platform that supports a broad selection of operating systems, programming
languages, frameworks, tools, databases, and devices. It can run Linux containers with Docker integration; build
apps with JavaScript, Python, .NET, PHP, Java, and Node.js; build back-ends for iOS, Android, and Windows
devices.
Azure public cloud services support the same technologies millions of developers and IT professionals already rely
on and trust. When you build on, or migrate IT assets to, a public cloud service provider you are relying on that
organization’s abilities to protect your applications and data with the services and the controls they provide to
manage the security of your cloud-based assets.
Azure’s infrastructure is designed from facility to applications for hosting millions of customers simultaneously,
and it provides a trustworthy foundation upon which businesses can meet their security requirements.
In addition, Azure provides you with a wide array of configurable security options and the ability to control them
so that you can customize security to meet the unique requirements of your organization’s deployments. This
document helps you understand how Azure security capabilities can help you fulfill these requirements.
NOTE
The primary focus of this document is on customer-facing controls that you can use to customize and increase security for
your applications and services.
We do provide some overview information, but for detailed information on how Microsoft secures the Azure platform itself,
see information provided in the Microsoft Trust Center.
Abstract
Initially, public cloud migrations were driven by cost savings and agility to innovate. Security was considered a
major concern for some time, and even a show stopper, for public cloud migration. However, public cloud security
has transitioned from a major concern to one of the drivers for cloud migration. The rationale behind this is the
superior ability of large public cloud service providers to protect applications and the data of cloud-based assets.
Azure’s infrastructure is designed from the facility to applications for hosting millions of customers simultaneously,
and it provides a trustworthy foundation upon which businesses can meet their security needs. In addition, Azure
provides you with a wide array of configurable security options and the ability to control them so that you can
customize security to meet the unique requirements of your deployments to meet your IT control policies and
adhere to external regulations.
This paper outlines Microsoft’s approach to security within the Microsoft Azure cloud platform:
Security features implemented by Microsoft to secure the Azure infrastructure, customer data, and applications.
Azure services and security features available to you to manage the Security of the Services and your data
within your Azure subscriptions.
Security Development Cycle, Manage your data all the Trust Center How Microsoft secures
Internal audits time customer data in Azure
services
Mandatory Security training, Control on data location Common Controls Hub How Microsoft manage data
background checks location in Azure services
Penetration testing, Provide data access on your The Cloud Services Due Who in Microsoft can access
intrusion detection, DDoS, terms Diligence Checklist your data on what terms
Audits & logging
State of the art data center, Responding to law Compliance by service, How Microsoft secures
physical security, Secure enforcement location & Industry customer data in Azure
Network services
Security Incident response, Stringent privacy standards Review certification for Azure
Shared Responsibility services, Transparency hub
Operations
This section provides additional information regarding key features in security operations and summary
information about these capabilities.
Security and Audit Dashboard
The Security and Audit solution provides a comprehensive view into your organization’s IT security posture with
built-in search queries for notable issues that require your attention. The Security and Audit dashboard is the
home screen for everything related to security in Log Analytics. It provides high-level insight into the Security state
of your computers. It also includes the ability to view all events from the past 24 hours, 7 days, or any other custom
time frame.
In addition, you can configure Security & Compliance to automatically carry out specific actions when a specific
event is detected.
Azure Resource Manager
Azure Resource Manager enables you to work with the resources in your solution as a group. You can deploy,
update, or delete all the resources for your solution in a single, coordinated operation. You use an Azure Resource
Manager template for deployment and that template can work for different environments such as testing, staging,
and production. Resource Manager provides security, auditing, and tagging features to help you manage your
resources after deployment.
Azure Resource Manager template-based deployments help improve the security of solutions deployed in Azure
because standard security control settings and can be integrated into standardized template-based deployments.
This reduces the risk of security configuration errors that might take place during manual deployments.
Application Insights
Application Insights is an extensible Application Performance Management (APM ) service for web developers.
With Application Insights, you can monitor your live web applications and automatically detect performance
anomalies. It includes powerful analytics tools to help you diagnose issues and to understand what users actually
do with your apps. It monitors your application all the time it's running, both during testing and after you've
published or deployed it.
Application Insights creates charts and tables that show you, for example, what times of day you get most users,
how responsive the app is, and how well it is served by any external services that it depends on.
If there are crashes, failures or performance issues, you can search through the telemetry data in detail to diagnose
the cause. And the service sends you emails if there are any changes in the availability and performance of your
app. Application Insight thus becomes a valuable security tool because it helps with the availability in the
confidentiality, integrity, and availability security triad.
Azure Monitor
Azure Monitor offers visualization, query, routing, alerting, auto scale, and automation on data both from the
Azure infrastructure (Activity Log) and each individual Azure resource (Diagnostic Logs). You can use Azure
Monitor to alert you on security-related events that are generated in Azure logs.
Log Analytics
Log Analytics – Provides an IT management solution for both on-premises and third-party cloud-based
infrastructure (such as AWS ) in addition to Azure resources. Data from Azure Monitor can be routed directly to
Log Analytics so you can see metrics and logs for your entire environment in one place.
Log Analytics can be a useful tool in forensic and other security analysis, as the tool enables you to quickly search
through large amounts of security-related entries with a flexible query approach. In addition, on-premises firewall
and proxy logs can be exported into Azure and made available for analysis using Log Analytics.
Azure Advisor
Azure Advisor is a personalized cloud consultant that helps you to optimize your Azure deployments. It analyzes
your resource configuration and usage telemetry. It then recommends solutions to help improve the performance,
security, and high availability of your resources while looking for opportunities to reduce your overall Azure spend.
Azure Advisor provides security recommendations, which can significantly improve your overall security posture
for solutions you deploy in Azure. These recommendations are drawn from security analysis performed by Azure
Security Center.
Azure Security Center
Azure Security Center helps you prevent, detect, and respond to threats with increased visibility into and control
over the security of your Azure resources. It provides integrated security monitoring and policy management
across your Azure subscriptions, helps detect threats that might otherwise go unnoticed, and works with a broad
ecosystem of security solutions.
In addition, Azure Security Center helps with security operations by providing you a single dashboard that surfaces
alerts and recommendations that can be acted upon immediately. Often, you can remediate issues with a single
click within the Azure Security Center console.
Applications
The section provides additional information regarding key features in application security and summary
information about these capabilities.
Web Application vulnerability scanning
One of the easiest ways to get started with testing for vulnerabilities on your App Service app is to use the
integration with Tinfoil Security to perform one-click vulnerability scanning on your app. You can view the test
results in an easy-to-understand report, and learn how to fix each vulnerability with step-by-step instructions.
Penetration Testing
If you prefer to perform your own penetration tests or want to use another scanner suite or provider, you must
follow the Azure penetration testing approval process and obtain prior approval to perform the desired
penetration tests.
Web Application firewall
The web application firewall (WAF ) in Azure Application Gateway helps protect web applications from common
web-based attacks like SQL injection, cross-site scripting attacks, and session hijacking. It comes preconfigured
with protection from threats identified by the Open Web Application Security Project (OWASP ) as the top 10
common vulnerabilities.
Authentication and authorization in Azure App Service
App Service Authentication / Authorization is a feature that provides a way for your application to sign in users so
that you don't have to change code on the app backend. It provides an easy way to protect your application and
work with per-user data.
Layered Security Architecture
Since App Service Environments provide an isolated runtime environment deployed into an Azure Virtual
Network, developers can create a layered security architecture providing differing levels of network access for each
application tier. A common desire is to hide API back-ends from general Internet access, and only allow APIs to be
called by upstream web apps. Network Security groups (NSGs) can be used on Azure Virtual Network subnets
containing App Service Environments to restrict public access to API applications.
Web server diagnostics and application diagnostics
App Service web apps provide diagnostic functionality for logging information from both the web server and the
web application. These are logically separated into web server diagnostics and application diagnostics. Web server
includes two major advances in diagnosing and troubleshooting sites and applications.
The first new feature is real-time state information about application pools, worker processes, sites, application
domains, and running requests. The second new advantages are the detailed trace events that track a request
throughout the complete request-and-response process.
To enable the collection of these trace events, IIS 7 can be configured to automatically capture full trace logs, in
XML format, for any particular request based on elapsed time or error response codes.
Web server diagnostics
You can enable or disable the following kinds of logs:
Detailed Error Logging - Detailed error information for HTTP status codes that indicate a failure (status
code 400 or greater). This may contain information that can help determine why the server returned the
error code.
Failed Request Tracing - Detailed information on failed requests, including a trace of the IIS components
used to process the request and the time taken in each component. This can be useful if you are attempting
to increase site performance or isolate what is causing a specific HTTP error to be returned.
Web Server Logging - Information about HTTP transactions using the W3C extended log file format. This is
useful when determining overall site metrics such as the number of requests handled or how many requests
are from a specific IP address.
Application diagnostics
Application diagnostics allows you to capture information produced by a web application. ASP.NET applications
can use the System.Diagnostics.Trace class to log information to the application diagnostics log. In Application
Diagnostics, there are two major types of events, those related to application performance and those related to
application failures and errors. The failures and errors can be divided further into connectivity, security, and failure
issues. Failure issues are typically related to a problem with the application code.
In Application Diagnostics, you can view events grouped in these ways:
All (displays all events)
Application Errors (displays exception events)
Performance (displays performance events)
Storage
The section provides additional information regarding key features in Azure storage security and summary
information about these capabilities.
Role -Based Access Control (RBAC )
You can secure your storage account with Role-Based Access Control (RBAC ). Restricting access based on the need
to know and least privilege security principles is imperative for organizations that want to enforce Security policies
for data access. These access rights are granted by assigning the appropriate RBAC role to groups and applications
at a certain scope. You can use built-in RBAC roles, such as Storage Account Contributor, to assign privileges to
users. Access to the storage keys for a storage account using the Azure Resource Manager model can be controlled
through Role-Based Access Control (RBAC ).
Shared Access Signature
A shared access signature (SAS ) provides delegated access to resources in your storage account. The SAS means
that you can grant a client limited permissions to objects in your storage account for a specified period and with a
specified set of permissions. You can grant these limited permissions without having to share your account access
keys.
Encryption in Transit
Encryption in transit is a mechanism of protecting data when it is transmitted across networks. With Azure Storage,
you can secure data using:
Transport-level encryption, such as HTTPS when you transfer data into or out of Azure Storage.
Wire encryption, such as SMB 3.0 encryption for Azure File shares.
Client-side encryption, to encrypt the data before it is transferred into storage and to decrypt the data after
it is transferred out of storage.
Encryption at rest
For many organizations, data encryption at rest is a mandatory step towards data privacy, compliance, and data
sovereignty. There are three Azure storage security features that provide encryption of data that is “at rest”:
Storage Service Encryption allows you to request that the storage service automatically encrypt data when
writing it to Azure Storage.
Client-side Encryption also provides the feature of encryption at rest.
Azure Disk Encryption allows you to encrypt the OS disks and data disks used by an IaaS virtual machine.
Storage Analytics
Azure Storage Analytics performs logging and provides metrics data for a storage account. You can use this data to
trace requests, analyze usage trends, and diagnose issues with your storage account. Storage Analytics logs
detailed information about successful and failed requests to a storage service. This information can be used to
monitor individual requests and to diagnose issues with a storage service. Requests are logged on a best-effort
basis. The following types of authenticated requests are logged:
Successful requests.
Failed requests, including timeout, throttling, network, authorization, and other errors.
Requests using a Shared Access Signature (SAS ), including failed and successful requests.
Requests to analytics data.
Enabling Browser-Based Clients Using CORS
Cross-Origin Resource Sharing (CORS ) is a mechanism that allows domains to give each other permission for
accessing each other’s resources. The User Agent sends extra headers to ensure that the JavaScript code loaded
from a certain domain is allowed to access resources located at another domain. The latter domain then replies
with extra headers allowing or denying the original domain access to its resources.
Azure storage services now support CORS so that once you set the CORS rules for the service, a properly
authenticated request made against the service from a different domain is evaluated to determine whether it is
allowed according to the rules you have specified.
Networking
The section provides additional information regarding key features in Azure network security and summary
information about these capabilities.
Network Layer Controls
Network access control is the act of limiting connectivity to and from specific devices or subnets and represents the
core of network security. The goal of network access control is to make sure that your virtual machines and
services are accessible to only users and devices to which you want them accessible.
Network Security Groups
A Network Security Group (NSG ) is a basic stateful packet filtering firewall and it enables you to control access
based on a 5-tuple. NSGs do not provide application layer inspection or authenticated access controls. They can be
used to control traffic moving between subnets within an Azure Virtual Network and traffic between an Azure
Virtual Network and the Internet.
Route Control and Forced Tunneling
The ability to control routing behavior on your Azure Virtual Networks is a critical network security and access
control capability. For example, if you want to make sure that all traffic to and from your Azure Virtual Network
goes through that virtual security appliance, you need to be able to control and customize routing behavior. You
can do this by configuring User-Defined Routes in Azure.
User-Defined Routes allow you to customize inbound and outbound paths for traffic moving into and out of
individual virtual machines or subnets to insure the most secure route possible. Forced tunneling is a mechanism
you can use to ensure that your services are not allowed to initiate a connection to devices on the Internet.
This is different from being able to accept incoming connections and then responding to them. Front-end web
servers need to respond to requests from Internet hosts, and so Internet-sourced traffic is allowed inbound to
these web servers and the web servers can respond.
Forced tunneling is commonly used to force outbound traffic to the Internet to go through on-premises security
proxies and firewalls.
Virtual Network Security Appliances
While Network Security Groups, User-Defined Routes, and forced tunneling provide you a level of security at the
network and transport layers of the OSI model, there may be times when you want to enable security at higher
levels of the stack. You can access these enhanced network security features by using an Azure partner network
security appliance solution. You can find the most current Azure partner network security solutions by visiting the
Azure Marketplace and searching for “security” and “network security.”
Azure Virtual Network
An Azure virtual network (VNet) is a representation of your own network in the cloud. It is a logical isolation of the
Azure network fabric dedicated to your subscription. You can fully control the IP address blocks, DNS settings,
security policies, and route tables within this network. You can segment your VNet into subnets and place Azure
IaaS virtual machines (VMs) and/or Cloud services (PaaS role instances) on Azure Virtual Networks.
Additionally, you can connect the virtual network to your on-premises network using one of the connectivity
options available in Azure. In essence, you can expand your network to Azure, with complete control on IP address
blocks with the benefit of enterprise scale Azure provides.
Azure networking supports various secure remote access scenarios. Some of these include:
Connect individual workstations to an Azure Virtual Network
Connect on-premises network to an Azure Virtual Network with a VPN
Connect on-premises network to an Azure Virtual Network with a dedicated WAN link
Connect Azure Virtual Networks to each other
VPN Gateway
To send network traffic between your Azure Virtual Network and your on-premises site, you must create a VPN
gateway for your Azure Virtual Network. A VPN gateway is a type of virtual network gateway that sends
encrypted traffic across a public connection. You can also use VPN gateways to send traffic between Azure Virtual
Networks over the Azure network fabric.
Express Route
Microsoft Azure ExpressRoute is a dedicated WAN link that lets you extend your on-premises networks into the
Microsoft cloud over a dedicated private connection facilitated by a connectivity provider.
With ExpressRoute, you can establish connections to Microsoft cloud services, such as Microsoft Azure, Office 365,
and CRM Online. Connectivity can be from an any-to-any (IP VPN ) network, a point-to-point Ethernet network, or
a virtual cross-connection through a connectivity provider at a co-location facility.
ExpressRoute connections do not go over the public Internet and thus can be considered more secure than VPN -
based solutions. This allows ExpressRoute connections to offer more reliability, faster speeds, lower latencies, and
higher security than typical connections over the Internet.
Application Gateway
Microsoft Azure Application Gateway provides an Application Delivery Controller (ADC ) as a service, offering
various layer 7 load balancing capabilities for your application.
It allows you to optimize web farm productivity by offloading CPU intensive SSL termination to the Application
Gateway (also known as “SSL offload” or “SSL bridging”). It also provides other Layer 7 routing capabilities
including round-robin distribution of incoming traffic, cookie-based session affinity, URL path-based routing, and
the ability to host multiple websites behind a single Application Gateway. Azure Application Gateway is a layer-7
load balancer.
It provides failover, performance-routing HTTP requests between different servers, whether they are on the cloud
or on-premises.
Application provides many Application Delivery Controller (ADC ) features including HTTP load balancing, cookie-
based session affinity, Secure Sockets Layer (SSL ) offload, custom health probes, support for multi-site, and many
others.
Web Application Firewall
Web Application Firewall is a feature of Azure Application Gateway that provides protection to web applications
that use application gateway for standard Application Delivery Control (ADC ) functions. Web application firewall
does this by protecting them against most of the OWASP top 10 common web vulnerabilities.
Compute
The section provides additional information regarding key features in this area and summary information about
these capabilities.
Antimalware & Antivirus
With Azure IaaS, you can use antimalware software from security vendors such as Microsoft, Symantec, Trend
Micro, McAfee, and Kaspersky to protect your virtual machines from malicious files, adware, and other threats.
Microsoft Antimalware for Azure Cloud Services and Virtual Machines is a protection capability that helps identify
and remove viruses, spyware, and other malicious software. Microsoft Antimalware provides configurable alerts
when known malicious or unwanted software attempts to install itself or run on your Azure systems. Microsoft
Antimalware can also be deployed using Azure Security Center
Hardware Security Module
Encryption and authentication do not improve security unless the keys themselves are protected. You can simplify
the management and security of your critical secrets and keys by storing them in Azure Key Vault. Key Vault
provides the option to store your keys in hardware Security modules (HSMs) certified to FIPS 140-2 Level 2
standards. Your SQL Server encryption keys for backup or transparent data encryption can all be stored in Key
Vault with any keys or secrets from your applications. Permissions and access to these protected items are
managed through Azure Active Directory.
Virtual machine backup
Azure Backup is a solution that protects your application data with zero capital investment and minimal operating
costs. Application errors can corrupt your data, and human errors can introduce bugs into your applications that
can lead to security issues. With Azure Backup, your virtual machines running Windows and Linux are protected.
Azure Site Recovery
An important part of your organization's business continuity/disaster recovery (BCDR ) strategy is figuring out
how to keep corporate workloads and apps up and running when planned and unplanned outages occur. Azure
Site Recovery helps orchestrate replication, failover, and recovery of workloads and apps so that they are available
from a secondary location if your primary location goes down.
SQL VM TDE
Transparent data encryption (TDE ) and column level encryption (CLE ) are SQL server encryption features. This
form of encryption requires customers to manage and store the cryptographic keys you use for encryption.
The Azure Key Vault (AKV ) service is designed to improve the security and management of these keys in a secure
and highly available location. The SQL Server Connector enables SQL Server to use these keys from Azure Key
Vault.
If you are running SQL Server with on-premises machines, there are steps you can follow to access Azure Key
Vault from your on-premises SQL Server machine. But for SQL Server in Azure VMs, you can save time by using
the Azure Key Vault Integration feature. With a few Azure PowerShell cmdlets to enable this feature, you can
automate the configuration necessary for a SQL VM to access your key vault.
VM Disk Encryption
Azure Disk Encryption is a new capability that helps you encrypt your Windows and Linux IaaS virtual machine
disks. It applies the industry standard BitLocker feature of Windows and the DM -Crypt feature of Linux to provide
volume encryption for the OS and the data disks. The solution is integrated with Azure Key Vault to help you
control and manage the disk-encryption keys and secrets in your Key Vault subscription. The solution also ensures
that all data on the virtual machine disks are encrypted at rest in your Azure storage.
Virtual networking
Virtual machines need network connectivity. To support that requirement, Azure requires virtual machines to be
connected to an Azure Virtual Network. An Azure Virtual Network is a logical construct built on top of the physical
Azure network fabric. Each logical Azure Virtual Network is isolated from all other Azure Virtual Networks. This
isolation helps insure that network traffic in your deployments is not accessible to other Microsoft Azure
customers.
Patch Updates
Patch Updates provide the basis for finding and fixing potential problems and simplify the software update
management process, both by reducing the number of software updates you must deploy in your enterprise and
by increasing your ability to monitor compliance.
Security policy management and reporting
Azure Security Center helps you prevent, detect, and respond to threats, and provides you increased visibility into,
and control over, the security of your Azure resources. It provides integrated Security monitoring and policy
management across your Azure subscriptions, helps detect threats that might otherwise go unnoticed, and works
with a broad ecosystem of security solutions.
Azure Security Center
Security Center helps you prevent, detect, and respond to threats with increased visibility into and control over the
security of your Azure resources. It provides integrated security monitoring and policy management across your
Azure subscriptions, helps detect threats that might otherwise go unnoticed, and works with a broad ecosystem of
security solutions.
AZURE ACTIVE
DIRECTORY JOIN –
FREE / COMMON WINDOWS 10 ONLY
FEATURES BASIC FEATURES PREMIUM P1 FEATURES PREMIUM P2 FEATURES RELATED FEATURES
Directory Objects, Group-based access Self-Service Group Identity Protection, Join a device to Azure
User/Group management / and app Privileged Identity AD, Desktop SSO,
Management provisioning, Self- Management/Self- Management Microsoft Passport for
(add/update/delete)/ Service Password Service application Azure AD,
User-based Reset for cloud users, additions/Dynamic Administrator
provisioning, Device Company Branding Groups, Self-Service BitLocker recovery,
registration, Single (Logon Pages/Access Password MDM auto-
Sign-On (SSO), Self- Panel customization), Reset/Change/Unlock enrollment, Self-
Service Password Application Proxy, with on-premises Service BitLocker
Change for cloud SLA 99.9% write-back, Multi- recovery, Additional
users, Connect (Sync Factor Authentication local administrators to
engine that extends (Cloud and On- Windows 10 devices
on-premises premises (MFA via Azure AD Join
directories to Azure Server)), MIM CAL +
Active Directory), MIM Server, Cloud
Security / Usage App Discovery,
Reports Connect Health,
Automatic password
rollover for group
accounts
Cloud App Discovery is a premium feature of Azure Active Directory that enables you to identify cloud
applications that are used by the employees in your organization.
Azure Active Directory Identity Protection is a security service that uses Azure Active Directory anomaly
detection capabilities to provide a consolidated view into risk events and potential vulnerabilities that could
affect your organization’s identities.
Azure Active Directory Domain Services enables you to join Azure VMs to a domain without the need to
deploy domain controllers. Users sign in to these VMs by using their corporate Active Directory credentials,
and can seamlessly access resources.
Azure Active Directory B2C is a highly available, global identity management service for consumer-facing
apps that can scale to hundreds of millions of identities and integrate across mobile and web platforms.
Your customers can sign in to all your apps through customizable experiences that use existing social media
accounts, or you can create new standalone credentials.
Azure Active Directory B2B Collaboration is a secure partner integration solution that supports your cross-
company relationships by enabling partners to access your corporate applications and data selectively by
using their self-managed identities.
Azure Active Directory Join enables you to extend cloud capabilities to Windows 10 devices for centralized
management. It makes it possible for users to connect to the corporate or organizational cloud through
Azure Active Directory and simplifies access to apps and resources.
Azure Active Directory Application Proxy provides SSO and secure remote access for web applications
hosted on-premises.
Next Steps
Getting started with Microsoft Azure Security
Azure services and features you can use to help secure your services and data within Azure
Azure Security Center
Prevent, detect, and respond to threats with increased visibility and control over the security of your Azure
resources
Security health monitoring in Azure Security Center
The monitoring capabilities in Azure Security Center to monitor compliance with policies.
Azure advanced threat detection
2/1/2019 • 21 minutes to read • Edit Online
Azure offers built in advanced threat detection functionality through services such as Azure Active Directory (Azure
AD ), Azure Log Analytics, and Azure Security Center. This collection of security services and capabilities provides a
simple and fast way to understand what is happening within your Azure deployments.
Azure provides a wide array of options to configure and customize security to meet the requirements of your app
deployments. This article discusses how to meet these requirements.
Identity Protection uses adaptive machine learning algorithms and heuristics to detect anomalies and risk events
that might indicate that an identity has been compromised. Using this data, Identity Protection generates reports
and alerts so that you can investigate these risk events and take appropriate remediation or mitigation action.
Azure Active Directory Identity Protection is more than a monitoring and reporting tool. Based on risk events,
Identity Protection calculates a user risk level for each user, so that you can configure risk-based policies to
automatically protect the identities of your organization.
These risk-based policies, in addition to other conditional access controls that are provided by Azure Active
Directory and EMS, can automatically block or offer adaptive remediation actions that include password resets and
multi-factor authentication enforcement.
Identity Protection capabilities
Azure Active Directory Identity Protection is more than a monitoring and reporting tool. To protect your
organization's identities, you can configure risk-based policies that automatically respond to detected issues when a
specified risk level has been reached. These policies, in addition to other conditional access controls provided by
Azure Active Directory and EMS, can either automatically block or initiate adaptive remediation actions including
password resets and multi-factor authentication enforcement.
Examples of some of the ways that Azure Identity Protection can help secure your accounts and identities include:
Detecting risk events and risky accounts
Detect six risk event types using machine learning and heuristic rules.
Calculate user risk levels.
Provide custom recommendations to improve overall security posture by highlighting vulnerabilities.
Investigating risk events
Send notifications for risk events.
Investigate risk events using relevant and contextual information.
Provide basic workflows to track investigations.
Provide easy access to remediation actions such as password reset.
Risk-based, conditional-access policies
Mitigate risky sign-ins by blocking sign-ins or requiring multi-factor authentication challenges.
Block or secure risky user accounts.
Require users to register for multi-factor authentication.
Azure AD Privileged Identity Management
With Azure Active Directory Privileged Identity Management (PIM ), you can manage, control, and monitor access
within your organization. This feature includes access to resources in Azure AD and other Microsoft online
services, such as Office 365 or Microsoft Intune.
The Log Analytics Security and Audit dashboard is organized into four major categories:
Security Domains: Lets you further explore security records over time; access malware assessments;
update assessments; view network security, identity, and access information; view computers with security
events; and quickly access the Azure Security Center dashboard.
Notable Issues: Lets you quickly identify the number of active issues and the severity of the issues.
Detections (Preview): Lets you identify attack patterns by displaying security alerts as they occur against
your resources.
Threat Intelligence: Lets you identify attack patterns by displaying the total number of servers with
outbound malicious IP traffic, the malicious threat type, and a map of the IPs locations.
Common security queries: Lists the most common security queries that you can use to monitor your
environment. When you select any query, the Search pane opens and displays the results for that query.
Insight and analytics
At the center of Log Analytics is the repository, which is hosted by Azure.
You collect data into the repository from connected sources by configuring data sources and adding solutions to
your subscription.
Data sources and solutions each create separate record types with their own set of properties, but you can still
analyze them together in queries to the repository. You can use the same tools and methods to work with a variety
of data that's collected by various sources.
Most of your interaction with Log Analytics is through the Azure portal, which runs in any browser and provides
you with access to configuration settings and multiple tools to analyze and act on collected data. From the portal,
you can use:
Log searches where you construct queries to analyze collected data.
Dashboards, which you can customize with graphical views of your most valuable searches.
Solutions, which provide additional functionality and analysis tools.
Solutions add functionality to Log Analytics. They primarily run in the cloud and provide analysis of data that's
collected in the Log Analytics repository. Solutions might also define new record types to be collected that can be
analyzed with log searches or by using an additional user interface that the solution provides in the Log Analytics
dashboard.
The Security and Audit dashboard is an example of these types of solutions.
Automation and control: Alert on security configuration drifts
Azure Automation automates administrative processes with runbooks that are based on PowerShell and run in the
cloud. Runbooks can also be executed on a server in your local data center to manage local resources. Azure
Automation provides configuration management with PowerShell Desired State Configuration (DSC ).
You can create and manage DSC resources that are hosted in Azure and apply them to cloud and on-premises
systems. By doing so, you can define and automatically enforce their configuration or get reports on drift to help
ensure that security configurations remain within policy.
Azure Security Center
Azure Security Center helps protect your Azure resources. It provides integrated security monitoring and policy
management across your Azure subscriptions. Within the service, you can define polices against both your Azure
subscriptions and resource groups for greater granularity.
Microsoft security researchers are constantly on the lookout for threats. They have access to an expansive set of
telemetry gained from Microsoft’s global presence in the cloud and on-premises. This wide-reaching and diverse
collection of datasets enables Microsoft to discover new attack patterns and trends across its on-premises
consumer and enterprise products, as well as its online services.
Thus, Security Center can rapidly update its detection algorithms as attackers release new and increasingly
sophisticated exploits. This approach helps you keep pace with a fast-moving threat environment.
Security Center threat detection works by automatically collecting security information from your Azure resources,
the network, and connected partner solutions. It analyzes this information, correlating information from multiple
sources, to identify threats.
Security alerts are prioritized in Security Center along with recommendations on how to remediate the threat.
Security Center employs advanced security analytics, which go far beyond signature-based approaches.
Breakthroughs in big data and machine learning technologies are used to evaluate events across the entire cloud
fabric. Advanced analytics can detect threats that would be impossible to identify through manual approaches and
predicting the evolution of attacks. These security analytics types are covered in the next sections.
Threat intelligence
Microsoft has access to an immense amount of global threat intelligence.
Telemetry flows in from multiple sources, such as Azure, Office 365, Microsoft CRM online, Microsoft Dynamics
AX, outlook.com, MSN.com, the Microsoft Digital Crimes Unit (DCU ), and Microsoft Security Response Center
(MSRC ).
Researchers also receive threat intelligence information that is shared among major cloud service providers, and
they subscribe to threat intelligence feeds from third parties. Azure Security Center can use this information to
alert you to threats from known bad actors. Some examples include:
Harnessing the power of machine learning: Azure Security Center has access to a vast amount of data
about cloud network activity, which can be used to detect threats targeting your Azure deployments.
Brute force detection: Machine learning is used to create a historical pattern of remote access attempts,
which allows it to detect brute force attacks against Secure Shell (SSH), Remote Desktop Protocol (RDP ),
and SQL ports.
Outbound DDoS and botnet detection: A common objective of attacks that target cloud resources is to
use the compute power of these resources to execute other attacks.
New behavioral analytics servers and VMs: After a server or virtual machine is compromised, attackers
employ a wide variety of techniques to execute malicious code on that system while avoiding detection,
ensuring persistence, and obviating security controls.
Azure SQL Database Threat Detection: Threat detection for Azure SQL Database, which identifies
anomalous database activities that indicate unusual and potentially harmful attempts to access or exploit
databases.
Behavioral analytics
Behavioral analytics is a technique that analyzes and compares data to a collection of known patterns. However,
these patterns are not simple signatures. They are determined through complex machine learning algorithms that
are applied to massive datasets.
The patterns are also determined through careful analysis of malicious behaviors by expert analysts. Azure
Security Center can use behavioral analytics to identify compromised resources based on analysis of virtual
machine logs, virtual network device logs, fabric logs, crash dumps, and other sources.
In addition, patterns are correlated with other signals to check for supporting evidence of a widespread campaign.
This correlation helps to identify events that are consistent with established indicators of compromise.
Some examples include:
Suspicious process execution: Attackers employ several techniques to execute malicious software without
detection. For example, an attacker might give malware the same names as legitimate system files but place
these files in an alternate location, use a name that is similar to that of a benign file, or mask the file’s true
extension. Security Center models process behaviors and monitor process executions to detect outliers such
as these.
Hidden malware and exploitation attempts: Sophisticated malware can evade traditional antimalware
products by either never writing to disk or encrypting software components stored on disk. However, such
malware can be detected by using memory analysis, because the malware must leave traces in memory to
function. When software crashes, a crash dump captures a portion of memory at the time of the crash. By
analyzing the memory in the crash dump, Azure Security Center can detect techniques used to exploit
vulnerabilities in software, access confidential data, and surreptitiously persist within a compromised
machine without affecting the performance of your machine.
Lateral movement and internal reconnaissance: To persist in a compromised network and locate and
harvest valuable data, attackers often attempt to move laterally from the compromised machine to others
within the same network. Security Center monitors process and login activities to discover attempts to
expand an attacker’s foothold within the network, such as remote command execution, network probing,
and account enumeration.
Malicious PowerShell scripts: PowerShell can be used by attackers to execute malicious code on target
virtual machines for various purposes. Security Center inspects PowerShell activity for evidence of
suspicious activity.
Outgoing attacks: Attackers often target cloud resources with the goal of using those resources to mount
additional attacks. Compromised virtual machines, for example, might be used to launch brute force attacks
against other virtual machines, send spam, or scan open ports and other devices on the internet. By
applying machine learning to network traffic, Security Center can detect when outbound network
communications exceed the norm. When spam is detected, Security Center also correlates unusual email
traffic with intelligence from Office 365 to determine whether the mail is likely nefarious or the result of a
legitimate email campaign.
Anomaly detection
Azure Security Center also uses anomaly detection to identify threats. In contrast to behavioral analytics (which
depends on known patterns derived from large data sets), anomaly detection is more “personalized” and focuses
on baselines that are specific to your deployments. Machine learning is applied to determine normal activity for
your deployments, and then rules are generated to define outlier conditions that could represent a security event.
Here’s an example:
Inbound RDP/SSH brute force attacks: Your deployments might have busy virtual machines with many
logins each day and other virtual machines that have few, if any, logins. Azure Security Center can determine
baseline login activity for these virtual machines and use machine learning to define around the normal login
activities. If there is any discrepancy with the baseline defined for login related characteristics, an alert might be
generated. Again, machine learning determines what is significant.
Continuous threat intelligence monitoring
Azure Security Center operates with security research and data science teams throughout the world that
continuously monitor for changes in the threat landscape. This includes the following initiatives:
Threat intelligence monitoring: Threat intelligence includes mechanisms, indicators, implications, and
actionable advice about existing or emerging threats. This information is shared in the security community,
and Microsoft continuously monitors threat intelligence feeds from internal and external sources.
Signal sharing: Insights from security teams across the broad Microsoft portfolio of cloud and on-
premises services, servers, and client endpoint devices are shared and analyzed.
Microsoft security specialists: Ongoing engagement with teams across Microsoft that work in specialized
security fields, such as forensics and web attack detection.
Detection tuning: Algorithms are run against real customer data sets, and security researchers work with
customers to validate the results. True and false positives are used to refine machine learning algorithms.
These combined efforts culminate in new and improved detections, which you can benefit from instantly. There’s
no action for you to take.
Protections include:
SQL injection protection.
Cross site scripting protection.
Common Web Attacks Protection, such as command injection, HTTP request smuggling, HTTP response
splitting, and remote file inclusion attack.
Protection against HTTP protocol violations.
Protection against HTTP protocol anomalies, such as missing host user-agent and accept headers.
Prevention against bots, crawlers, and scanners.
Detection of common application misconfigurations (that is, Apache, IIS, and so on).
Configuring WAF at your application gateway provides the following benefits:
Protects your web application from web vulnerabilities and attacks without modification of the back-end
code.
Protects multiple web applications at the same time behind an application gateway. An application gateway
supports hosting up to 20 websites.
Monitors web applications against attacks by using real-time reports that are generated by application
gateway WAF logs.
Helps meet compliance requirements. Certain compliance controls require all internet-facing endpoints to
be protected by a WAF solution.
Anomaly Detection API: Built with Azure Machine Learning
The Anomaly Detection API is an API that's useful for detecting a variety of anomalous patterns in your time series
data. The API assigns an anomaly score to each data point in the time series, which can be used for generating
alerts, monitoring through dashboards, or connecting with your ticketing systems.
The Anomaly Detection API can detect the following types of anomalies on time series data:
Spikes and dips: When you're monitoring the number of login failures to a service or number of checkouts
in an e-commerce site, unusual spikes or dips could indicate security attacks or service disruptions.
Positive and negative trends: When you're monitoring memory usage in computing, shrinking free
memory size indicates a potential memory leak. For service queue length monitoring, a persistent upward
trend might indicate an underlying software issue.
Level changes and changes in dynamic range of values: Level changes in latencies of a service after a
service upgrade or lower levels of exceptions after upgrade can be interesting to monitor.
The machine learning-based API enables:
Flexible and robust detection: The anomaly detection models allow users to configure sensitivity settings
and detect anomalies among seasonal and non-seasonal data sets. Users can adjust the anomaly detection
model to make the detection API less or more sensitive according to their needs. This would mean detecting
the less or more visible anomalies in data with and without seasonal patterns.
Scalable and timely detection: The traditional way of monitoring with present thresholds set by experts'
domain knowledge are costly and not scalable to millions of dynamically changing data sets. The anomaly
detection models in this API are learned, and models are tuned automatically from both historical and real-
time data.
Proactive and actionable detection: Slow trend and level change detection can be applied for early
anomaly detection. The early abnormal signals that are detected can be used to direct humans to investigate
and act on the problem areas. In addition, root cause analysis models and alerting tools can be developed
on top of this anomaly-detection API service.
The anomaly-detection API is an effective and efficient solution for a wide range of scenarios, such as service
health and KPI monitoring, IoT, performance monitoring, and network traffic monitoring. Here are some popular
scenarios where this API can be useful:
IT departments need tools to track events, error code, usage log, and performance (CPU, memory, and so
on) in a timely manner.
Online commerce sites want to track customer activities, page views, clicks, and so on.
Utility companies want to track consumption of water, gas, electricity, and other resources.
Facility or building management services want to monitor temperature, moisture, traffic, and so on.
IoT/manufacturers want to use sensor data in time series to monitor work flow, quality, and so on.
Service providers, such as call centers, need to monitor service demand trend, incident volume, wait queue
length, and so on.
Business analytics groups want to monitor business KPIs' (such as sales volume, customer sentiments, or
pricing) abnormal movement in real time.
Cloud App Security
Cloud App Security is a critical component of the Microsoft Cloud Security stack. It's a comprehensive solution
that can help your organization as you move to take full advantage of the promise of cloud applications. It keeps
you in control, through improved visibility into activity. It also helps increase the protection of critical data across
cloud applications.
With tools that help uncover shadow IT, assess risk, enforce policies, investigate activities, and stop threats, your
organization can more safely move to the cloud while maintaining control of critical data.
Next steps
Azure Security Center detection capabilities: Helps identify active threats that target your Azure resources
and provides the insights you need to respond quickly.
Azure SQL Database Threat Detection: Helps address your concerns about potential threats to your
databases.
Azure logging and auditing
2/4/2019 • 20 minutes to read • Edit Online
Azure provides a wide array of configurable security auditing and logging options to help you identify gaps in your
security policies and mechanisms. This article discusses generating, collecting, and analyzing security logs from
services hosted on Azure.
NOTE
Certain recommendations in this article might result in increased data, network, or compute resource usage, and increase
your license or subscription costs.
Activity logs Control-plane events on Provides insight into the Rest API, Azure Monitor
Azure Resource Manager operations that were
resources performed on resources in
your subscription.
Azure diagnostics logs Frequent data about the Provides insight into Azure Monitor, Stream
operation of Azure Resource operations that your
Manager resources in resource itself performed.
subscription
Azure AD reporting Logs and reports Reports user sign-in Graph API
activities and system activity
information about users and
group management.
LOG CATEGORY LOG TYPE USAGE INTEGRATION
Virtual machines and cloud Windows Event Log service Captures system data and Windows (using Windows
services and Linux Syslog logging data on the virtual Azure Diagnostics [WAD]
machines and transfers that storage) and Linux in Azure
data into a storage account Monitor
of your choice.
Azure Storage Analytics Storage logging, provides Provides insight into trace REST API or the client library
metrics data for a storage requests, analyzes usage
account trends, and diagnoses issues
with your storage account.
Network Security Group JSON format, shows Displays information about Azure Network Watcher
(NSG) flow logs outbound and inbound ingress and egress IP traffic
flows on a per-rule basis through a Network Security
Group.
Application insight Logs, exceptions, and Provides an application REST API, Power BI
custom diagnostics performance monitoring
(APM) service for web
developers on multiple
platforms.
Process data / security alerts Azure Security Center alerts, Provides security REST APIs, JSON
Azure Log Analytics alerts information and alerts.
Activity logs
Azure activity logs provide insight into the operations that were performed on resources in your subscription.
Activity logs were previously known as “audit logs” or “operational logs,” because they report control-plane events
for your subscriptions.
Activity logs help you determine the “what, who, and when” for write operations (that is, PUT, POST, or DELETE ).
Activity logs also help you understand the status of the operation and other relevant properties. Activity logs do
not include read (GET) operations.
In this article, PUT, POST, and DELETE refer to all the write operations that an activity log contains on the
resources. For example, you can use the activity logs to find an error when you're troubleshooting issues or to
monitor how a user in your organization modified a resource.
You can retrieve events from an activity log by using the Azure portal, Azure CLI, PowerShell cmdlets, and Azure
Monitor REST API. Activity logs have 90-day data-retention period.
Integration scenarios for an activity log event:
Create an email or webhook alert that's triggered by an activity log event.
Stream it to an event hub for ingestion by a third-party service or custom analytics solution such as
PowerBI.
Analyze it in PowerBI by using the PowerBI content pack.
Save it to a storage account for archival or manual inspection. You can specify the retention time (in days) by
using log profiles.
Query and view it in the Azure portal.
Query it via PowerShell cmdlet, Azure CLI, or REST API.
Export the activity log with log profiles to Log Analytics.
You can use a storage account or event hub namespace that is not in the same subscription as the one that's
emitting the log. Whoever configures the setting must have the appropriate role-based access control (RBAC )
access to both subscriptions.
Azure diagnostics logs
Azure diagnostics logs are emitted by a resource that provides rich, frequent data about the operation of that
resource. The content of these logs varies by resource type. For example, Windows event system logs are a
category of diagnostics logs for VMs, and blob, table, and queue logs are categories of diagnostics logs for storage
accounts. Diagnostics logs differ from activity logs, which provide insight into the operations that were performed
on resources in your subscription.
Azure diagnostics logs offer multiple configuration options, such as the Azure portal, PowerShell, Azure CLI, and
the REST API.
Integration scenarios
Save them to a storage account for auditing or manual inspection. You can specify the retention time (in
days) by using the diagnostics settings.
Stream them to event hubs for ingestion by a third-party service or custom analytics solution, such as
PowerBI.
Analyze them with Log Analytics.
Supported services, schema for diagnostics logs and supported log categories per resource type
SCHEMA AND
SERVICE DOCUMENTATION RESOURCE TYPE CATEGORY
Azure Data Lake Store Access diagnostics logs for Microsoft.DataLakeStore/acc Audit
Data Lake Store ounts Requests
Microsoft.DataLakeStore/acc
ounts
Azure Data Lake Analytics Access diagnostics logs for Microsoft.DataLakeAnalytics/ Audit
Data Lake Analytics accounts Requests
Microsoft.DataLakeAnalytics/
accounts
Sign-ins from unknown sources Application usage: summary Directory audit report
SECURITY REPORTS ACTIVITY REPORTS AUDIT REPORTS
The data in these reports can be useful to your applications, such as Security Information and Event Management
(SIEM ) systems, audit, and business intelligence tools. The Azure AD reporting APIs provide programmatic access
to the data through a set of REST-based APIs. You can call these APIs from various programming languages and
tools.
Events in the Azure AD audit report are retained for 180 days.
NOTE
For more information about report retention, see Azure AD report retention policies.
If you're interested in retaining your audit events longer, use the Reporting API to regularly pullaudit events into a
separate data store.
Virtual machine logs that use Azure Diagnostics
Azure Diagnostics is the capability within Azure that enables the collection of diagnostics data on a deployed
application. You can use the diagnostics extension from any of several sources. Currently supported are Azure
cloud service web and worker roles.
Azure virtual machines that are running Microsoft Windows and Service Fabric
You can enable Azure Diagnostics on a virtual machine by doing any of the following:
Use Visual Studio to trace Azure virtual machines
Set up Azure Diagnostics remotely on an Azure virtual machine
Use PowerShell to set up diagnostics on Azure virtual machines
Create a Windows virtual machine with monitoring and diagnostics by using an Azure Resource Manager
template
Storage Analytics
Azure Storage Analytics logs and provides metrics data for a storage account. You can use this data to trace
requests, analyze usage trends, and diagnose issues with your storage account. Storage Analytics logging is
available for the Azure Blob, Azure Queue, and Azure Table storage services. Storage Analytics logs detailed
information about successful and failed requests to a storage service.
You can use this information to monitor individual requests and to diagnose issues with a storage service. Requests
are logged on a best-effort basis. Log entries are created only if there are requests made against the service
endpoint. For example, if a storage account has activity in its blob endpoint but not in its table or queue endpoints,
only logs that pertain to the Blob storage service are created.
To use Storage Analytics, enable it individually for each service you want to monitor. You can enable it in the Azure
portal. For more information, see Monitor a storage account in the Azure portal. You can also enable Storage
Analytics programmatically via the REST API or the client library. Use the Set Service Properties operation to
enable Storage Analytics individually for each service.
The aggregated data is stored in a well-known blob (for logging) and in well-known tables (for metrics), which you
can access by using the Blob storage service and Table storage service APIs.
Storage Analytics has a 20-terabyte (TB ) limit on the amount of stored data that is independent of the total limit for
your storage account. All logs are stored in block blobs in a container named $logs, which is automatically created
when you enable Storage Analytics for a storage account.
NOTE
For more information about billing and data retention policies, see Storage Analytics and billing.
For more information about storage account limits, see Azure Storage scalability and performance targets.
Storage Analytics logs the following types of authenticated and anonymous requests:
AUTHENTICATED ANONYMOUS
Failed requests, including timeout, throttling, network, Requests using a shared access signature, including failed and
authorization, and other errors successful requests
Requests using a shared access signature, including failed and Time-out errors for both client and server
successful requests
Requests to analytics data Failed GET requests with error code 304 (not modified)
Requests made by Storage Analytics itself, such as log creation All other failed anonymous requests are not logged. A full list
or deletion, are not logged. A full list of the logged data is of the logged data is documented in Storage Analytics logged
documented in Storage Analytics logged operations and operations and status messages and Storage Analytics log
status messages and Storage Analytics log format. format.
Network Watcher is a regional service that enables you to monitor and diagnose conditions at a network scenario
level in, to, and from Azure. Network diagnostics and visualization tools available with Network Watcher help you
understand, diagnose, and gain insights to your network in Azure.
Network Security Group flow logging
NSG flow logs are a feature of Network Watcher that you can use to view information about ingress and egress IP
traffic through an NSG. These flow logs are written in JSON format and show:
Outbound and inbound flows on a per-rule basis.
The NIC that the flow applies to.
5-tuple information about the flow: the source or destination IP, the source or destination port, and the
protocol.
Whether the traffic was allowed or denied.
Although flow logs target NSGs, they are not displayed in the same way as the other logs. Flow logs are stored
only within a storage account.
The same retention policies that are seen on other logs apply to flow logs. Logs have a retention policy that you
can set from 1 day to 365 days. If a retention policy is not set, the logs are maintained forever.
Diagnostics logs
Periodic and spontaneous events are created by network resources and logged in storage accounts, and sent to an
event hub or Log Analytics. The logs provide insights into the health of a resource. They can be viewed in tools
such as Power BI and Log Analytics. To learn how to view diagnostics logs, see Log Analytics.
Diagnostics logs are available for Load Balancer, Network Security Groups, Routes, and Application Gateway.
Network Watcher provides a diagnostics logs view. This view contains all networking resources that support
diagnostics logging. From this view, you can enable and disable networking resources conveniently and quickly.
In addition to the previously mentioned logging capabilities, Network Watcher currently has the following
capabilities:
Topology: Provides a network-level view that shows the various interconnections and associations between
network resources in a resource group.
Variable packet capture: Captures packet data in and out of a virtual machine. Advanced filtering options
and fine-tuning controls, such as time- and size-limitation settings, provide versatility. The packet data can
be stored in a blob store or on the local disk in .cap file format.
IP flow verification: Checks to see whether a packet is allowed or denied based on flow information 5-tuple
packet parameters (that is, destination IP, source IP, destination port, source port, and protocol). If the
packet is denied by a security group, the rule and group that denied the packet is returned.
Next hop: Determines the next hop for packets being routed in the Azure network fabric, so that you can
diagnose any misconfigured user-defined routes.
Security group view: Gets the effective and applied security rules that are applied on a VM.
Virtual network gateway and connection troubleshooting: Helps you troubleshoot virtual network gateways
and connections.
Network subscription limits: Enables you to view network resource usage against limits.
Application Insights
Azure Application Insights is an extensible APM service for web developers on multiple platforms. Use it to
monitor live web applications. It automatically detects performance anomalies. It includes powerful analytics tools
to help you diagnose issues and to understand what users actually do with your app.
Application Insights is designed to help you continuously improve performance and usability.
It works for apps on a wide variety of platforms, including .NET, Node.js, and J2EE, whether they're hosted on-
premises or in the cloud. It integrates with your DevOps process and has connection points with various
development tools.
Application Insights is aimed at the development team, to help you understand how your app is performing and
how it's being used. It monitors:
Request rates, response times, and failure rates: Find out which pages are most popular, at what times
of day, and where your users are. See which pages perform best. If your response times and failure rates go
high when there are more requests, you might have a resourcing problem.
Dependency rates, response times, and failure rates: Find out whether external services are slowing
you down.
Exceptions: Analyze the aggregated statistics, or pick specific instances and drill into the stack trace and
related requests. Both server and browser exceptions are reported.
Page views and load performance: Get reports from your users' browsers.
AJAX calls: Get webpage rates, response times, and failure rates.
User and session counts.
Performance counters: Get data from your Windows or Linux server machines, such as CPU, memory,
and network usage.
Host diagnostics: Get data from Docker or Azure.
Diagnostics trace logs: Get data from your app, so that you can correlate trace events with requests.
Custom events and metrics: Get data that you write yourself in the client or server code, to track business
events such as items sold or games won.
The following table lists and describes integration scenarios:
Application map The components of your app, with key metrics and alerts.
Diagnostics search for instance data Search and filter events such as requests, exceptions,
dependency calls, log traces, and page views.
Metrics Explorer for aggregated data Explore, filter, and segment aggregated data such as rates of
requests, failures, and exceptions; response times, page load
times.
Dashboards Mash up data from multiple resources and share with others.
Great for multi-component applications, and for continuous
display in the team room.
Live Metrics Stream When you deploy a new build, watch these near-real-time
performance indicators to make sure everything works as
expected.
Automatic and manual alerts Automatic alerts adapt to your app's normal patterns of
telemetry and are triggered when there's something outside
the usual pattern. You can also set alerts on particular levels of
custom or standard metrics.
Visual Studio View performance data in the code. Go to code from stack
traces.
REST API Write code to run queries over your metrics and raw data.
Log Analytics
Log Analytics is a service in Azure that helps you collect and analyze data that's generated by resources in your
cloud and on-premises environments. It gives you real-time insights by using integrated search and custom
dashboards to readily analyze millions of records across all your workloads and servers, regardless of their
physical location.
At the center of Log Analytics is the Log Analytics workspace, which is hosted in Azure. Log Analytics collects data
in the workspace from connected sources by configuring data sources and adding solutions to your subscription.
Data sources and solutions each create different record types, each with its own set of properties. But sources and
solutions can still be analyzed together in queries to the workspace. This capability allows you to use the same
tools and methods to work with a variety of data collected by a variety of sources.
Connected sources are the computers and other resources that generate the data that's collected by Log Analytics.
Sources can include agents that are installed on Windows and Linux computers that connect directly, or agents in a
connected System Center Operations Manager management group. Log Analytics can also collect data from an
Azure storage account.
Data sources are the various kinds of data that's collected from each connected source. Sources include events and
performance data from Windows and Linux agents, in addition to sources such as IIS logs and custom text logs.
You configure each data source that you want to collect, and the configuration is automatically delivered to each
connected source.
There are four ways to collect logs and metrics for Azure services:
Azure Diagnostics direct to Log Analytics (Diagnostics in the following table)
Azure Diagnostics to Azure storage to Log Analytics (Storage in the following table)
Connectors for Azure services ( Connector in the following table)
Scripts to collect and then post data into Log Analytics (blank cells in the following table and for services
that are not listed)
Microsoft.Logic/
integrationAccounts
Microsoft.Sql/
servers/
elasticPools
Diagnostics
Microsoft.Compute/
virtualMachineScaleSe
ts/
virtualMachines
Microsoft.Web/
sites/
slots
Log Integration collects Azure diagnostics from your Windows virtual machines, Azure activity logs, Azure Security
Center alerts, and Azure resource provider logs. This integration provides a unified dashboard for all your assets,
whether they're on-premises or in the cloud, so that you can aggregate, correlate, analyze, and alert for security
events.
Log Integration currently supports the integration of Azure activity logs, Windows event logs from Windows
virtual machines with your Azure subscription, Azure Security Center alerts, Azure diagnostics logs, and Azure AD
audit logs.
Get started with Azure Log Integration: This tutorial walks you through installing Azure Log Integration and
integrating logs from Azure storage, Azure activity logs, Azure Security Center alerts, and Azure AD audit logs.
Integration scenarios for SIEM:
Partner configuration steps: This blog post shows you how to configure Azure Log Integration to work with
partner solutions Splunk, HP ArcSight, and IBM QRadar.
Azure Log Integration FAQ: This article answers questions about Azure Log Integration.
Integrating Security Center alerts with Azure Log Integration: This article discusses how to sync Security
Center alerts, virtual machine security events collected by Azure diagnostics logs, and Azure audit logs with
your Log Analytics or SIEM solution.
Next steps
Auditing and logging: Protect data by maintaining visibility and responding quickly to timely security alerts.
Security logging and audit-log collection within Azure: Enforce these settings to ensure that your Azure
instances are collecting the correct security and audit logs.
Configure audit settings for a site collection: If you're a site collection administrator, retrieve the history of
individual users' actions and the history of actions taken during a particular date range.
Search the audit log in the Office 365 Security & Compliance Center: Use the Office 365 Security &
Compliance Center to search the unified audit log and view user and administrator activity in your Office
365 organization.
Azure network security
9/5/2018 • 2 minutes to read • Edit Online
Abstract
Azure network services maximize flexibility, availability, resiliency, security, and integrity by design. This white paper
provides details on the networking functions of Azure. It also describes how customers can use the native security
features in Azure to help protect their information assets. The intended audiences for this white paper include:
Technical managers, network administrators, and developers who are looking for security solutions that are
available and supported in Azure.
SMEs or business process executives who want a high-level overview of the Azure technologies and services
that relate to network security in the Azure public cloud.
Download the white paper
Azure Functions and serverless platform security
12/12/2018 • 2 minutes to read • Edit Online
Abstract
Most enterprises need a significant amount of resources and time to manage servers, which adds cost. If
enterprises can use fewer resources to manage servers, they can focus on building great applications.
Serverless computing helps you do just that, because the infrastructure that you need to run and scale your apps is
managed for you. Serverless computing is the abstraction of servers, infrastructure, and operating systems.
Serverless computing is driven by the reaction to events and triggers, which are all taking place in near real-time—
in the cloud.
As a fully managed service, server management and capacity planning are invisible to the developer. The serverless
framework helps you develop and deploy serverless applications by using Azure Functions. It's a command-line
interface (CLI) that offers structure and automation to help you build sophisticated, event-driven, serverless
architectures composed of functions and events. An Azure function is an independent unit of deployment, like a
microservice. It's merely code, deployed in the cloud, that is most often written to perform a single job.
Despite the benefits, serverless security has its own risk factors to deal with. The serverless approach doesn’t
introduce new security concerns, but it requires having an approach to existing security concerns. This white paper
focuses on these security matters:
Benefits of a serverless platform
Security issues in serverless computing
Critical security issues and mitigations in the context of Azure
Securing the Microsoft serverless platform
Download the white paper
Container security in Microsoft Azure
9/5/2018 • 2 minutes to read • Edit Online
Abstract
Container technology is causing a structural change in the cloud-computing world. Containers make it possible to
run multiple instances of an application on a single instance of an operating system, thereby using resources more
efficiently. Containers give organizations consistency and flexibility. They enable continuous deployment because
the application can be developed on a desktop, tested in a virtual machine, and then deployed for production in the
cloud. Containers provide agility, streamlined operations, scalability, and reduced costs due to resource
optimization.
Because container technology is relatively new, many IT professionals have security concerns about the lack of
visibility and usage in a production environment. Development teams are often unaware of security best practices.
This white paper can help security operations teams and developers in selecting approaches to secure container
development and deployments on the Microsoft Azure platform.
This paper describes containers, container deployment and management, and native platform services. It also
describes runtime security issues that arise with the use of containers on the Azure platform. In figures and
examples, this paper focuses on Docker as the container model and Kubernetes as the container orchestrator. Most
of the security recommendations also apply to other container models from Microsoft partners on the Azure
platform.
Download the white paper
Azure Operational Security
9/5/2018 • 2 minutes to read • Edit Online
Abstract
Microsoft Azure operational security refers to the services, controls, and features available to users for protecting
their data, applications, and other assets in Azure. Azure operational security is built on a framework that
incorporates the knowledge gained through various capabilities that are unique to Microsoft, including the
Microsoft Security Development Lifecycle (SDL ), the Microsoft Security Response Center program, and deep
awareness of the cybersecurity threat landscape. This white paper outlines how you can approach operational
security by using Azure. It covers several Azure services, including:
Azure Log Analytics
Azure Backup
Azure Security Center
Azure Monitor
Azure Network Watcher
Azure Storage Analytics
Azure Active Directory
Download the white paper
Isolation in the Azure Public Cloud
2/4/2019 • 22 minutes to read • Edit Online
Introduction
Overview
To assist current and prospective Azure customers understand and utilize the various security-related capabilities
available in and surrounding the Azure platform, Microsoft has developed a series of White Papers, Security
Overviews, Best Practices, and Checklists. The topics range in terms of breadth and depth and are updated
periodically. This document is part of that series as summarized in the Abstract section following.
Azure Platform
Azure is an open and flexible cloud service platform that supports the broadest selection of operating systems,
programming languages, frameworks, tools, databases, and devices. For example, you can:
Run Linux containers with Docker integration;
Build apps with JavaScript, Python, .NET, PHP, Java, and Node.js; and
Build back-ends for iOS, Android, and Windows devices.
Microsoft Azure supports the same technologies millions of developers and IT professionals already rely on and
trust.
When you build on, or migrate IT assets to, a public cloud service provider, you are relying on that organization’s
abilities to protect your applications and data with the services and the controls they provide to manage the
security of your cloud-based assets.
Azure’s infrastructure is designed from the facility to applications for hosting millions of customers simultaneously,
and it provides a trustworthy foundation upon which businesses can meet their security needs. In addition, Azure
provides you with a wide array of configurable security options and the ability to control them so that you can
customize security to meet the unique requirements of your deployments. This document helps you meet these
requirements.
Abstract
Microsoft Azure allows you to run applications and virtual machines (VMs) on shared physical infrastructure. One
of the prime economic motivations to running applications in a cloud environment is the ability to distribute the
cost of shared resources among multiple customers. This practice of multi-tenancy improves efficiency by
multiplexing resources among disparate customers at low costs. Unfortunately, it also introduces the risk of
sharing physical servers and other infrastructure resources to run your sensitive applications and VMs that may
belong to an arbitrary and potentially malicious user.
This article outlines how Microsoft Azure provides isolation against both malicious and non-malicious users and
serves as a guide for architecting cloud solutions by offering various isolation choices to architects. This white
paper focuses on the technology of Azure platform and customer-facing security controls, and does not attempt to
address SLAs, pricing models, and DevOps practice considerations.
Azure Active Directory hosts each tenant in its own protected container, with policies and permissions to and within
the container solely owned and managed by the tenant.
The concept of tenant containers is deeply ingrained in the directory service at all layers, from portals all the way to
persistent storage.
Even when metadata from multiple Azure Active Directory tenants is stored on the same physical disk, there is no
relationship between the containers other than what is defined by the directory service, which in turn is dictated by
the tenant administrator.
Azure Role -Based Access Control (RBAC )
Azure Role-Based Access Control (RBAC ) helps you to share various components available within an Azure
subscription by providing fine-grained access management for Azure. Azure RBAC enables you to segregate duties
within your organization and grant access based on what users need to perform their jobs. Instead of giving
everybody unrestricted permissions in Azure subscription or resources, you can allow only certain actions.
Azure RBAC has three basic roles that apply to all resource types:
Owner has full access to all resources including the right to delegate access to others.
Contributor can create and manage all types of Azure resources but can’t grant access to others.
Reader can view existing Azure resources.
The rest of the RBAC roles in Azure allow management of specific Azure resources. For example, the Virtual
Machine Contributor role allows the user to create and manage virtual machines. It does not give them access to
the Azure Virtual Network or the subnet that the virtual machine connects to.
RBAC built-in roles list the roles available in Azure. It specifies the operations and scope that each built-in role
grants to users. If you're looking to define your own roles for even more control, see how to build Custom roles in
Azure RBAC.
Some other capabilities for Azure Active Directory include:
Azure AD enables SSO to SaaS applications, regardless of where they are hosted. Some applications are
federated with Azure AD, and others use password SSO. Federated applications can also support user
provisioning and password vaulting.
Access to data in Azure Storage is controlled via authentication. Each storage account has a primary key
(storage account key, or SAK) and a secondary secret key (the shared access signature, or SAS ).
Azure AD provides Identity as a Service through federation by using Active Directory Federation Services,
synchronization, and replication with on-premises directories.
Azure Multi-Factor Authentication is the multi-factor authentication service that requires users to verify
sign-ins by using a mobile app, phone call, or text message. It can be used with Azure AD to help secure on-
premises resources with the Azure Multi-Factor Authentication server, and also with custom applications
and directories using the SDK.
Azure AD Domain Services lets you join Azure virtual machines to an Active Directory domain without
deploying domain controllers. You can sign in to these virtual machines with your corporate Active
Directory credentials and administer domain-joined virtual machines by using Group Policy to enforce
security baselines on all your Azure virtual machines.
Azure Active Directory B2C provides a highly available global-identity management service for consumer-
facing applications that scales to hundreds of millions of identities. It can be integrated across mobile and
web platforms. Your consumers can sign in to all your applications through customizable experiences by
using their existing social accounts or by creating credentials.
Isolation from Microsoft Administrators & Data Deletion
Microsoft takes strong measures to protect your data from inappropriate access or use by unauthorized persons.
These operational processes and controls are backed by the Online Services Terms, which offer contractual
commitments that govern access to your data.
Microsoft engineers do not have default access to your data in the cloud. Instead, they are granted access,
under management oversight, only when necessary. That access is carefully controlled and logged, and
revoked when it is no longer needed.
Microsoft may hire other companies to provide limited services on its behalf. Subcontractors may access
customer data only to deliver the services for which, we have hired them to provide, and they are prohibited
from using it for any other purpose. Further, they are contractually bound to maintain the confidentiality of
our customers’ information.
Business services with audited certifications such as ISO/IEC 27001 are regularly verified by Microsoft and
accredited audit firms, which perform sample audits to attest that access, only for legitimate business purposes.
You can always access your own customer data at any time and for any reason.
If you delete any data, Microsoft Azure deletes the data, including any cached or backup copies. For in-scope
services, that deletion will occur within 90 days after the end of the retention period. (In-scope services are defined
in the Data Processing Terms section of our Online Services Terms.)
If a disk drive used for storage suffers a hardware failure, it is securely erased or destroyed before Microsoft
returns it to the manufacturer for replacement or repair. The data on the drive is overwritten to ensure that the data
cannot be recovered by any means.
Compute Isolation
Microsoft Azure provides various cloud-based computing services that include a wide selection of compute
instances & services that can scale up and down automatically to meet the needs of your application or enterprise.
These compute instance and service offer isolation at multiple levels to secure data without sacrificing the flexibility
in configuration that customers demand.
Isolated Virtual Machine Sizes
Azure Compute offers virtual machine sizes that are Isolated to a specific hardware type and dedicated to a single
customer. These virtual machine sizes are best suited for workloads that require a high degree of isolation from
other customers for workloads involving elements like compliance and regulatory requirements. Customers can
also choose to further subdivide the resources of these Isolated virtual machines by using Azure support for
nested virtual machines.
Utilizing an isolated size guarantees that your virtual machine will be the only one running on that specific server
instance. The current Isolated virtual machine offerings include:
Standard_E64is_v3
Standard_E64i_v3
Standard_M128ms
Standard_GS5
Standard_G5
Standard_DS15_v2
Standard_D15_v2
You can learn more about each Isolated size available here.
Hyper-V & Root OS Isolation Between Root VM & Guest VMs
Azure’s compute platform is based on machine virtualization—meaning that all customer code executes in a
Hyper-V virtual machine. On each Azure node (or network endpoint), there is a Hypervisor that runs directly over
the hardware and divides a node into a variable number of Guest Virtual Machines (VMs).
Each node also has one special Root VM, which runs the Host OS. A critical boundary is the isolation of the root
VM from the guest VMs and the guest VMs from one another, managed by the hypervisor and the root OS. The
hypervisor/root OS pairing leverages Microsoft's decades of operating system security experience, and more
recent learning from Microsoft's Hyper-V, to provide strong isolation of guest VMs.
The Azure platform uses a virtualized environment. User instances operate as standalone virtual machines that do
not have access to a physical host server.
The Azure hypervisor acts like a micro-kernel and passes all hardware access requests from guest virtual machines
to the host for processing by using a shared-memory interface called VMBus. This prevents users from obtaining
raw read/write/execute access to the system and mitigates the risk of sharing system resources.
Advanced VM placement algorithm & protection from side channel attacks
Any cross-VM attack involves two steps: placing an adversary-controlled VM on the same host as one of the victim
VMs, and then breaching the isolation boundary to either steal sensitive victim information or affect its
performance for greed or vandalism. Microsoft Azure provides protection at both steps by using an advanced VM
placement algorithm and protection from all known side channel attacks including noisy neighbor VMs.
The Azure Fabric Controller
The Azure Fabric Controller is responsible for allocating infrastructure resources to tenant workloads, and it
manages unidirectional communications from the host to virtual machines. The VM placing algorithm of the Azure
fabric controller is highly sophisticated and nearly impossible to predict as physical host level.
The Azure hypervisor enforces memory and process separation between virtual machines, and it securely routes
network traffic to guest OS tenants. This eliminates possibility of and side channel attack at VM level.
In Azure, the root VM is special: it runs a hardened operating system called the root OS that hosts a fabric agent
(FA). FAs are used in turn to manage guest agents (GA) within guest OSes on customer VMs. FAs also manage
storage nodes.
The collection of Azure hypervisor, root OS/FA, and customer VMs/GAs comprises a compute node. FAs are
managed by a fabric controller (FC ), which exists outside of compute and storage nodes (compute and storage
clusters are managed by separate FCs). If a customer updates their application’s configuration file while it’s
running, the FC communicates with the FA, which then contacts GAs, which notify the application of the
configuration change. In the event of a hardware failure, the FC will automatically find available hardware and
restart the VM there.
Communication from a Fabric Controller to an agent is unidirectional. The agent implements an SSL -protected
service that only responds to requests from the controller. It cannot initiate connections to the controller or other
privileged internal nodes. The FC treats all responses as if they were untrusted.
Isolation extends from the Root VM from Guest VMs, and the Guest VMs from one another. Compute nodes are
also isolated from storage nodes for increased protection.
The hypervisor and the host OS provide network packet - filters to help assure that untrusted virtual machines
cannot generate spoofed traffic or receive traffic not addressed to them, direct traffic to protected infrastructure
endpoints, or send/receive inappropriate broadcast traffic.
Additional Rules Configured by Fabric Controller Agent to Isolate VM
By default, all traffic is blocked when a virtual machine is created, and then the fabric controller agent configures
the packet filter to add rules and exceptions to allow authorized traffic.
There are two categories of rules that are programmed:
Machine configuration or infrastructure rules: By default, all communication is blocked. There are
exceptions to allow a virtual machine to send and receive DHCP and DNS traffic. Virtual machines can also
send traffic to the “public” internet and send traffic to other virtual machines within the same Azure Virtual
Network and the OS activation server. The virtual machines’ list of allowed outgoing destinations does not
include Azure router subnets, Azure management, and other Microsoft properties.
Role configuration file: This defines the inbound Access Control Lists (ACLs) based on the tenant's
service model.
VLAN Isolation
There are three VLANs in each cluster:
The main VLAN – interconnects untrusted customer nodes
The FC VLAN – contains trusted FCs and supporting systems
The device VLAN – contains trusted network and other infrastructure devices
Communication is permitted from the FC VLAN to the main VLAN, but cannot be initiated from the main VLAN
to the FC VLAN. Communication is also blocked from the main VLAN to the device VLAN. This assures that even
if a node running customer code is compromised, it cannot attack nodes on either the FC or device VLANs.
Storage Isolation
Logical Isolation Between Compute and Storage
As part of its fundamental design, Microsoft Azure separates VM -based computation from storage. This separation
enables computation and storage to scale independently, making it easier to provide multi-tenancy and isolation.
Therefore, Azure Storage runs on separate hardware with no network connectivity to Azure Compute except
logically. This means that when a virtual disk is created, disk space is not allocated for its entire capacity. Instead, a
table is created that maps addresses on the virtual disk to areas on the physical disk and that table is initially empty.
The first time a customer writes data on the virtual disk, space on the physical disk is allocated, and a
pointer to it is placed in the table.
Isolation Using Storage Access control
Access Control in Azure Storage has a simple access control model. Each Azure subscription can create one or
more Storage Accounts. Each Storage Account has a single secret key that is used to control access to all data in
that Storage Account.
Access to Azure Storage data (including Tables) can be controlled through a SAS (Shared Access Signature)
token, which grants scoped access. The SAS is created through a query template (URL ), signed with the SAK
(Storage Account Key). That signed URL can be given to another process (that is, delegated), which can then fill in
the details of the query and make the request of the storage service. A SAS enables you to grant time-based access
to clients without revealing the storage account’s secret key.
The SAS means that we can grant a client limited permissions, to objects in our storage account for a specified
period of time and with a specified set of permissions. We can grant these limited permissions without having to
share your account access keys.
IP Level Storage Isolation
You can establish firewalls and define an IP address range for your trusted clients. With an IP address range, only
clients that have an IP address within the defined range can connect to Azure Storage.
IP storage data can be protected from unauthorized users via a networking mechanism that is used to allocate a
dedicated or dedicated tunnel of traffic to IP storage.
Encryption
Azure offers the following types of Encryption to protect data:
Encryption in transit
Encryption at rest
Encryption in Transit
Encryption in transit is a mechanism of protecting data when it is transmitted across networks. With Azure Storage,
you can secure data using:
Transport-level encryption, such as HTTPS when you transfer data into or out of Azure Storage.
Wire encryption, such as SMB 3.0 encryption for Azure File shares.
Client-side encryption, to encrypt the data before it is transferred into storage and to decrypt the data after
it is transferred out of storage.
Encryption at Rest
For many organizations, data encryption at rest is a mandatory step towards data privacy, compliance, and data
sovereignty. There are three Azure features that provide encryption of data that is “at rest”:
Storage Service Encryption allows you to request that the storage service automatically encrypt data when
writing it to Azure Storage.
Client-side Encryption also provides the feature of encryption at rest.
Azure Disk Encryption allows you to encrypt the OS disks and data disks used by an IaaS virtual machine.
Azure Disk Encryption
Azure Disk Encryption for virtual machines (VMs) helps you address organizational security and compliance
requirements by encrypting your VM disks (including boot and data disks) with keys and policies you control in
Azure Key Vault.
The Disk Encryption solution for Windows is based on Microsoft BitLocker Drive Encryption, and the Linux
solution is based on dm-crypt.
The solution supports the following scenarios for IaaS VMs when they are enabled in Microsoft Azure:
Integration with Azure Key Vault
Standard tier VMs: A, D, DS, G, GS, and so forth, series IaaS VMs
Enabling encryption on Windows and Linux IaaS VMs
Disabling encryption on OS and data drives for Windows IaaS VMs
Disabling encryption on data drives for Linux IaaS VMs
Enabling encryption on IaaS VMs that are running Windows client OS
Enabling encryption on volumes with mount paths
Enabling encryption on Linux VMs that are configured with disk striping (RAID ) by using mdadm
Enabling encryption on Linux VMs by using LVM (Logical Volume Manager) for data disks
Enabling encryption on Windows VMs that are configured by using storage spaces
All Azure public regions are supported
The solution does not support the following scenarios, features, and technology in the release:
Basic tier IaaS VMs
Disabling encryption on an OS drive for Linux IaaS VMs
IaaS VMs that are created by using the classic VM creation method
Integration with your on-premises Key Management Service
Azure Files (shared file system), Network File System (NFS ), dynamic volumes, and Windows VMs that are
configured with software-based RAID systems
The account and subscription are Microsoft Azure platform concepts to associate billing and management.
Logical servers and databases are SQL Azure-specific concepts and are managed by using SQL Azure, provided
OData and TSQL interfaces or via SQL Azure portal that integrated into Azure portal.
SQL Azure servers are not physical or VM instances, instead they are collections of databases, sharing
management and security policies, which are stored in so called “logical master” database.
The tier behind the gateways is called “back-end”. This is where all the data is stored in a highly available fashion.
Each piece of data is said to belong to a “partition” or “failover unit”, each of them having at least three replicas.
Replicas are stored and replicated by SQL Server engine and managed by a failover system often referred to as
“fabric”.
Generally, the back-end system does not communicate outbound to other systems as a security precaution. This is
reserved to the systems in the front-end (gateway) tier. The gateway tier machines have limited privileges on the
back-end machines to minimize the attack surface as a defense-in-depth mechanism.
Isolation by Machine Function and Access
SQL Azure (is composed of services running on different machine functions. SQL Azure is divided into “backend”
Cloud Database and “front-end” (Gateway/Management) environments, with the general principle of traffic only
going into back-end and not out. The front-end environment can communicate to the outside world of other
services and in general, has only limited permissions in the back-end (enough to call the entry points it needs to
invoke).
Networking Isolation
Azure deployment has multiple layers of network isolation. The following diagram shows various layers of network
isolation Azure provides to customers. These layers are both native in the Azure platform itself and customer-
defined features. Inbound from the Internet, Azure DDoS provides isolation against large-scale attacks against
Azure. The next layer of isolation is customer-defined public IP addresses (endpoints), which are used to determine
which traffic can pass through the cloud service to the virtual network. Native Azure virtual network isolation
ensures complete isolation from all other networks, and that traffic only flows through user configured paths and
methods. These paths and methods are the next layer, where NSGs, UDR, and network virtual appliances can be
used to create isolation boundaries to protect the application deployments in the protected network.
Traffic isolation: A virtual network is the traffic isolation boundary on the Azure platform. Virtual machines (VMs)
in one virtual network cannot communicate directly to VMs in a different virtual network, even if both virtual
networks are created by the same customer. Isolation is a critical property that ensures customer VMs and
communication remains private within a virtual network.
Subnet offers an additional layer of isolation with in virtual network based on IP range. IP addresses in the virtual
network, you can divide a virtual network into multiple subnets for organization and security. VMs and PaaS role
instances deployed to subnets (same or different) within a VNet can communicate with each other without any
extra configuration. You can also configure network security group (NSGs) to allow or deny network traffic to a VM
instance based on rules configured in access control list (ACL ) of NSG. NSGs can be associated with either subnets
or individual VM instances within that subnet. When an NSG is associated with a subnet, the ACL rules apply to all
the VM instances in that subnet.
Next Steps
Network Isolation Options for Machines in Windows Azure Virtual Networks
This includes the classic front-end and back-end scenario where machines in a particular back-end network or
subnetwork may only allow certain clients or other computers to connect to a particular endpoint based on a
whitelist of IP addresses.
Compute Isolation
Microsoft Azure provides a various cloud-based computing services that include a wide selection of compute
instances & services that can scale up and down automatically to meet the needs of your application or enterprise.
Storage Isolation
Microsoft Azure separates customer VM -based computation from storage. This separation enables computation
and storage to scale independently, making it easier to provide multi-tenancy and isolation. Therefore, Azure
Storage runs on separate hardware with no network connectivity to Azure Compute except logically. All requests
run over HTTP or HTTPS based on customer’s choice.
Azure security technical capabilities
2/4/2019 • 31 minutes to read • Edit Online
To assist current and prospective Azure customers understand and utilize the various security-related capabilities
available in and surrounding the Azure Platform, Microsoft has developed a series of White Papers, Security
Overviews, Best Practices, and Checklists. The topics range in terms of breadth and depth and are updated
periodically. This document is part of that series as summarized in the Abstract section below. Further information
on this Azure Security series can be found at (URL ).
Azure platform
Microsoft Azure is a cloud platform comprised of infrastructure and application services, with integrated data
services and advanced analytics, and developer tools and services, hosted within Microsoft’s public cloud data
centers. Customers use Azure for many different capacities and scenarios, from basic compute, networking, and
storage, to mobile and web app services, to full cloud scenarios like Internet of Things, and can be used with open
source technologies, and deployed as hybrid cloud or hosted within a customer’s datacenter. Azure provides cloud
technology as building blocks to help companies save costs, innovate quickly, and manage systems proactively.
When you build on, or migrate IT assets to a cloud provider, you are relying on that organization’s abilities to
protect your applications and data with the services and the controls they provide to manage the security of your
cloud-based assets.
Microsoft Azure is the only cloud computing provider that offers a secure, consistent application platform and
infrastructure-as-a-service for teams to work within their different cloud skillsets and levels of project complexity,
with integrated data services and analytics that uncover intelligence from data wherever it exists, across both
Microsoft and non-Microsoft platforms, open frameworks and tools, providing choice for integrating cloud with
on-premises as well deploying Azure cloud services within on-premises datacenters. As part of the Microsoft
Trusted Cloud, customers rely on Azure for industry-leading security, reliability, compliance, privacy, and the vast
network of people, partners, and processes to support organizations in the cloud.
With Microsoft Azure, you can:
Accelerate innovation with the cloud.
Power business decisions & apps with insights.
Build freely and deploy anywhere.
Protect their business.
Scope
The focal point of this whitepaper concerns security features and functionality supporting Microsoft Azure’s core
components, namely Microsoft Azure Storage, Microsoft Azure SQL Database, Microsoft Azure’s virtual machine
model, and the tools and infrastructure that manage it all. This white paper focus on Microsoft Azure technical
capabilities available to you as customers to fulfil their role in protecting the security and privacy of their data.
The importance of understanding this shared responsibility model is essential for customers who are moving to
the cloud. Cloud providers offer considerable advantages for security and compliance efforts, but these advantages
do not absolve the customer from protecting their users, applications, and service offerings.
For IaaS solutions, the customer is responsible or has a shared responsibility for securing and managing the
operating system, network configuration, applications, identity, clients, and data. PaaS solutions build on IaaS
deployments, the customer is still responsible or has a shared responsibility for securing and managing
applications, identity, clients, and data. For SaaS solutions, Nonetheless, the customer continues to be accountable.
They must ensure that data is classified correctly, and they share a responsibility to manage their users and end-
point devices.
This document does not provide detailed coverage of any of the related Microsoft Azure platform components
such as Azure Web Sites, Azure Active Directory, HDInsight, Media Services, and other services that are layered
atop the core components. Although a minimum level of general information is provided, readers are assumed
familiar with Azure basic concepts as described in other references provided by Microsoft and included in links
provided in this white paper.
Subscriptions also have an association with a directory. The directory defines a set of users. These can be users
from the work or school that created the directory, or they can be external users (that is, Microsoft Accounts).
Subscriptions are accessible by a subset of those directory users who have been assigned as either Service
Administrator (SA) or Co-Administrator (CA); the only exception is that, for legacy reasons, Microsoft Accounts
(formerly Windows Live ID ) can be assigned as SA or CA without being present in the directory.
Security-oriented companies should focus on giving employees the exact permissions they need. Too many
permissions can expose an account to attackers. Too few permissions mean that employees can't get their work
done efficiently. Azure Role-Based Access Control (RBAC ) helps address this problem by offering fine-grained
access management for Azure.
Using RBAC, you can segregate duties within your team and grant only the amount of access to users that they
need to perform their jobs. Instead of giving everybody unrestricted permissions in your Azure subscription or
resources, you can allow only certain actions. For example, use RBAC to let one employee manage virtual
machines in a subscription, while another can manage SQL databases within the same subscription.
ENCRYPTION MODELS
• Azure Resource Providers • Azure Resource Providers • Azure Resource Providers • Azure services cannot see
perform the encryption and perform the encryption and perform the encryption and decrypted data
decryption operations decryption operations decryption operations • Customers keep keys on-
• Microsoft manages the • Customer controls keys via • Customer controls keys premises (or in other secure
keys Azure Key Vault On-Prem stores). Keys are not
• Full cloud functionality • Full cloud functionality • Full cloud functionality available to Azure services
• Reduced cloud functionality
NOTE
Not just "application data" or "PII' but any data relating to application including account metadata (subscription mappings,
contract info, PII).
Consider what stores you are using to store data. For example:
External storage (for example, SQL Azure, Document DB, HDInsights, Data Lake, etc.)
Temporary storage (any local cache that includes tenant data)
In-memory cache (could be put into the page file.)
Leverage the existing encryption at rest support in Azure
For each store you use, leverage the existing Encryption at Rest support.
Azure Storage: See Azure Storage Service Encryption for Data at Rest,
SQL Azure: See Transparent Data Encryption (TDE ), SQL Always Encrypted
VM & Local disk storage (Azure Disk Encryption)
For VM and Local disk storage use Azure Disk Encryption where supported:
IaaS
Services with IaaS VMs (Windows or Linux) should use Azure Disk Encryption to encrypt volumes containing
customer data.
PaaS v2
Services running on PaaS v2 using Service Fabric can use Azure disk encryption for Virtual Machine Scale Set
[VMSS ] to encrypt their PaaS v2 VMs.
PaaS v1
Azure Disk Encryption currently is not supported on PaaS v1. Therefore, you must use application level encryption
to encrypt persisted data at rest. This includes, but is not limited to, application data, temporary files, logs, and
crash dumps.
Most services should attempt to leverage the encryption of a storage resource provider. Some services have to do
explicit encryption, for example, any persisted key material (Certificates, root / master keys) must be stored in Key
Vault.
If you support service-side encryption with customer-managed keys there needs to be a way for the customer to
get the key to us. The supported and recommended way to do that by integrating with Azure Key Vault (AKV ). In
this case customers can add and manage their keys in Azure Key Vault. A customer can learn how to use AKV via
Getting Started with Key Vault.
To integrate with Azure Key Vault, you'd add code to request a key from AKV when needed for decryption.
See Azure Key Vault – Step by Step for info on how to integrate with AKV.
If you support customer managed keys, you need to provide a UX for the customer to specify which Key Vault (or
Key Vault URI) to use.
As Encryption at Rest involves the encryption of host, infrastructure and tenant data, the loss of the keys due to
system failure or malicious activity could mean all the encrypted data is lost. It is therefore critical that your
Encryption at Rest solution has a comprehensive disaster recovery story resilient to system failures and malicious
activity.
Services that implement Encryption at Rest are usually still susceptible to the encryption keys or data being left
unencrypted on the host drive (for example, in the page file of the host OS.) Therefore, services must ensure the
host volume for their services is encrypted. To facilitate this Compute team has enabled the deployment of Host
Encryption, which uses BitLocker NKP and extensions to the DCM service and agent to encrypt the host volume.
Most services are implemented on standard Azure VMs. Such services should get Host Encryption automatically
when Compute enables it. For services running in Compute managed clusters host encryption is enabled
automatically as Windows Server 2016 is rolled out.
Encryption in-transit
Protecting data in transit should be essential part of your data protection strategy. Since data is moving back and
forth from many locations, the general recommendation is that you always use SSL/TLS protocols to exchange
data across different locations. In some circumstances, you may want to isolate the entire communication channel
between your on-premises and cloud infrastructure by using a virtual private network (VPN ).
For data moving between your on-premises infrastructure and Azure, you should consider appropriate safeguards
such as HTTPS or VPN.
For organizations that need to secure access from multiple workstations located on-premises to Azure, use Azure
site-to-site VPN.
For organizations that need to secure access from one workstation located on-premises to Azure, use Point-to-Site
VPN.
Larger data sets can be moved over a dedicated high-speed WAN link such as ExpressRoute. If you choose to use
ExpressRoute, you can also encrypt the data at the application-level using SSL/TLS or other protocols for added
protection.
If you are interacting with Azure Storage through the Azure Portal, all transactions occur via HTTPS. Storage REST
API over HTTPS can also be used to interact with Azure Storage and Azure SQL Database.
Organizations that fail to protect data in transit are more susceptible for man-in-the-middle attacks,
eavesdropping, and session hijacking. These attacks can be the first step in gaining access to confidential data.
You can learn more about Azure VPN option by reading the article Planning and design for VPN Gateway.
Enforce file level data encryption
Azure RMS uses encryption, identity, and authorization policies to help secure your files and email. Azure RMS
works across multiple devices — phones, tablets, and PCs by protecting both within your organization and outside
your organization. This capability is possible because Azure RMS adds a level of protection that remains with the
data, even when it leaves your organization’s boundaries.
When you use Azure RMS to protect your files, you are using industry-standard cryptography with full support of
FIPS 140-2. When you leverage Azure RMS for data protection, you have the assurance that the protection stays
with the file, even if it is copied to storage that is not under the control of IT, such as a cloud storage service. The
same occurs for files shared via e-mail, the file is protected as an attachment to an email message, with instructions
how to open the protected attachment. When planning for Azure RMS adoption we recommend the following:
Install the RMS sharing app. This app integrates with Office applications by installing an Office add-in so
that users can easily protect files directly.
Configure applications and services to support Azure RMS
Create custom templates that reflect your business requirements. For example: a template for top secret
data that should be applied in all top secret related emails.
Organizations that are weak on data classification and file protection may be more susceptible to data leakage.
Without proper file protection, organizations won’t be able to obtain business insights, monitor for abuse and
prevent malicious access to files.
NOTE
You can learn more about Azure RMS by reading the article Getting Started with Azure Rights Management.
NOTE
For a more detailed list of rules and their protections see the following Core rule sets:
Azure also provides several easy-to-use features to help secure both inbound and outbound traffic for your app.
Azure also helps customers secure their application code by providing externally provided functionality to scan
your web application for vulnerabilities.
Setup Azure Active Directory authentication for your app
Secure traffic to your app by enabling Transport Layer Security (TLS/SSL ) - HTTPS
Force all incoming traffic over HTTPS connection
Enable Strict Transport Security (HSTS )
Restrict access to your app by client's IP address
Restrict access to your app by client's behavior - request frequency and concurrency
Scan your web app code for vulnerabilities using Tinfoil Security Scanning
Configure TLS mutual authentication to require client certificates to connect to your web app
Configure a client certificate for use from your app to securely connect to external resources
Remove standard server headers to avoid tools from fingerprinting your app
Securely connect your app with resources in a private network using Point-To-Site VPN
Securely connect your app with resources in a private network using Hybrid Connections
Azure App Service uses the same Antimalware solution used by Azure Cloud Services and Virtual Machines. To
learn more about this refer to our Antimalware documentation.
Azure Operational Security is built on a framework that incorporates the knowledge gained through a various
capabilities that are unique to Microsoft, including the Microsoft Security Development Lifecycle (SDL ), the
Microsoft Security Response Centre program, and deep awareness of the cybersecurity threat landscape.
Microsoft Azure Log Analytics
Log Analytics is the IT management solution for the hybrid cloud. Used alone or to extend your existing System
Center deployment, Log Analytics gives you the maximum flexibility and control for cloud-based management of
your infrastructure.
With Log Analytics, you can manage any instance in any cloud, including on-premises, Azure, AWS, Windows
Server, Linux, VMware, and OpenStack, at a lower cost than competitive solutions. Built for the cloud-first world,
Log Analytics offers a new approach to managing your enterprise that is the fastest, most cost-effective way to
meet new business challenges and accommodate new workloads, applications and cloud environments.
Log analytics
Log Analytics provides monitoring services by collecting data from managed resources into a central repository.
This data could include events, performance data, or custom data provided through the API. Once collected, the
data is available for alerting, analysis, and export.
This method allows you to consolidate data from a variety of sources, so you can combine data from your Azure
services with your existing on-premises environment. It also clearly separates the collection of the data from the
action taken on that data so that all actions are available to all kinds of data.
Azure Security Center
Azure Security Center helps you prevent, detect, and respond to threats with increased visibility into and control
over the security of your Azure resources. It provides integrated security monitoring and policy management
across your Azure subscriptions, helps detect threats that might otherwise go unnoticed, and works with a broad
ecosystem of security solutions.
Security Center analyzes the security state of your Azure resources to identify potential security vulnerabilities. A
list of recommendations guides you through the process of configuring needed controls.
Examples include:
Provisioning antimalware to help identify and remove malicious software
Configuring network security groups and rules to control traffic to VMs
Provisioning of web application firewalls to help defend against attacks that target your web applications
Deploying missing system updates
Addressing OS configurations that do not match the recommended baselines
Security Center automatically collects, analyzes, and integrates log data from your Azure resources, the network,
and partner solutions like antimalware programs and firewalls. When threats are detected, a security alert is
created. Examples include detection of:
Compromised VMs communicating with known malicious IP addresses
Advanced malware detected by using Windows error reporting
Brute force attacks against VMs
Security alerts from integrated antimalware programs and firewalls
Azure monitor
Azure Monitor provides pointers to information on specific types of resources. It offers visualization, query,
routing, alerting, auto scale, and automation on data both from the Azure infrastructure (Activity Log) and each
individual Azure resource (Diagnostic Logs).
Cloud applications are complex with many moving parts. Monitoring provides data to ensure that your application
stays up and running in a healthy state. It also helps you to stave off potential problems or troubleshoot past ones.
In addition,
you can use monitoring data to gain deep insights about your application. That knowledge can help you to improve
application performance or maintainability, or automate actions that would otherwise require manual intervention.
Auditing your network security is vital for detecting network vulnerabilities and ensuring compliance with your IT
security and regulatory governance model. With Security Group view, you can retrieve the configured Network
Security Group and security rules, as well as the effective security rules. With the list of rules applied, you can
determine the ports that are open and ss network vulnerability.
Network watcher
Network Watcher is a regional service that enables you to monitor and diagnose conditions at a network level in,
to, and from Azure. Network diagnostic and visualization tools available with Network Watcher help you
understand, diagnose, and gain insights to your network in Azure. This service includes packet capture, next hop, IP
flow verify, security group view, NSG flow logs. Scenario level monitoring provides an end to end view of network
resources in contrast to individual network resource monitoring.
Storage analytics
Storage Analytics can store metrics that include aggregated transaction statistics and capacity data about requests
to a storage service. Transactions are reported at both the API operation level as well as at the storage service level,
and capacity is reported at the storage service level. Metrics data can be used to analyze storage service usage,
diagnose issues with requests made against the storage service, and to improve the performance of applications
that use a service.
Application Insights
Application Insights is an extensible Application Performance Management (APM ) service for web developers on
multiple platforms. Use it to monitor your live web application. It will automatically detect performance anomalies.
It includes powerful analytics tools to help you diagnose issues and to understand what users do with your app. It's
designed to help you continuously improve performance and usability. It works for apps on a wide variety of
platforms including .NET, Node.js and J2EE, hosted on-premises or in the cloud. It integrates with your devOps
process, and has connection points to a various development tools.
It monitors:
Request rates, response times, and failure rates - Find out which pages are most popular, at what times
of day, and where your users are. See which pages perform best. If your response times and failure rates go
high when there are more requests, then perhaps you have a resourcing problem.
Dependency rates, response times, and failure rates - Find out whether external services are slowing
you down.
Exceptions - Analyze the aggregated statistics, or pick specific instances and drill into the stack trace and
related requests. Both server and browser exceptions are reported.
Page views and load performance - reported by your users' browsers.
AJAX calls from web pages - rates, response times, and failure rates.
User and session counts.
Performance counters from your Windows or Linux server machines, such as CPU, memory, and network
usage.
Host diagnostics from Docker or Azure.
Diagnostic trace logs from your app - so that you can correlate trace events with requests.
Custom events and metrics that you write yourself in the client or server code, to track business events
such as items sold, or games won.
The infrastructure for your application is typically made up of many components – maybe a virtual machine,
storage account, and virtual network, or a web app, database, database server, and 3rd party services. You do not
see these components as separate entities, instead you see them as related and interdependent parts of a single
entity. You want to deploy, manage, and monitor them as a group. Azure Resource Manager enables you to work
with the resources in your solution as a group.
You can deploy, update, or delete all the resources for your solution in a single, coordinated operation. You use a
template for deployment and that template can work for different environments such as testing, staging, and
production. Resource Manager provides security, auditing, and tagging features to help you manage your
resources after deployment.
The benefits of using Resource Manager
Resource Manager provides several benefits:
You can deploy, manage, and monitor all the resources for your solution as a group, rather than handling
these resources individually.
You can repeatedly deploy your solution throughout the development lifecycle and have confidence your
resources are deployed in a consistent state.
You can manage your infrastructure through declarative templates rather than scripts.
You can define the dependencies between resources, so they are deployed in the correct order.
You can apply access control to all services in your resource group because Role-Based Access Control
(RBAC ) is natively integrated into the management platform.
You can apply tags to resources to logically organize all the resources in your subscription.
You can clarify your organization's billing by viewing costs for a group of resources sharing the same tag.
NOTE
Resource Manager provides a new way to deploy and manage your solutions. If you used the earlier deployment model and
want to learn about the changes, see Understanding Resource Manager Deployment and classic deployment.
Next steps
Find out more about security by reading some of our in-depth security topics:
Auditing and logging
Cybercrime
Design and operational security
Encryption
Identity and access management
Network security
Threat management
Develop secure applications on Azure
11/16/2018 • 2 minutes to read • Edit Online
Abstract
This paper is a general guide to the security questions and controls you should consider at each phase of the
software development lifecycle when developing applications for the cloud. Implementing these concepts before
you release your product can help you build more secure software. The recommendations presented in this paper
come from our experience with Azure security and the experiences of our customers.
This paper is intended to be a resource for software designers, developers, and testers at all levels who build and
deploy secure Azure solutions.
Download the white paper
Azure encryption overview
9/24/2018 • 11 minutes to read • Edit Online
This article provides an overview of how encryption is used in Microsoft Azure. It covers the major areas of
encryption, including encryption at rest, encryption in flight, and key management with Azure Key Vault. Each
section includes links to more detailed information.
Next steps
Azure security overview
Azure network security overview
Azure database security overview
Azure virtual machines security overview
Data encryption at rest
Data security and encryption best practices
Azure database security overview
11/28/2018 • 13 minutes to read • Edit Online
Security is a top concern for managing databases, and it has always been a priority for Azure SQL Database. Azure
SQL Database supports connection security with firewall rules and connection encryption. It supports
authentication with username and password and Azure Active Directory (Azure AD ) authentication, which uses
identities managed by Azure Active Directory. Authorization uses role-based access control.
Azure SQL Database supports encryption by performing real-time encryption and decryption of databases,
associated backups, and transaction log files at rest without requiring changes to the application.
Microsoft provides additional ways to encrypt enterprise data:
Cell-level encryption is available to encrypt specific columns or even cells of data with different encryption
keys.
If you need a hardware security module or central management of your encryption key hierarchy, consider
using Azure Key Vault with SQL Server in an Azure virtual machine (VM ).
Always Encrypted (currently in preview ) makes encryption transparent to applications. It also allows clients to
encrypt sensitive data inside client applications without sharing the encryption keys with SQL Database.
Azure SQL Database Auditing enables enterprises to record events to an audit log in Azure Storage. SQL
Database Auditing also integrates with Microsoft Power BI to facilitate drill-down reports and analyses.
Azure SQL databases can be tightly secured to satisfy most regulatory or security requirements, including HIPAA,
ISO 27001/27002, and PCI DSS Level 1. A current list of security compliance certifications is available at the
Microsoft Azure Trust Center site.
This article walks through the basics of securing Microsoft Azure SQL databases for structured, tabular, and
relational data. In particular, this article will get you started with resources for protecting data, controlling access,
and proactive monitoring.
Protection of data
SQL Database helps secure your data by providing encryption:
For data in motion through Transport Layer Security (TLS ).
For data at rest through transparent data encryption.
For data in use through Always Encrypted.
For other ways to encrypt your data, consider:
Cell-level encryption to encrypt specific columns or even cells of data with different encryption keys.
Azure Key Vault with SQL Server in an Azure VM, if you need a hardware security module or central
management of your encryption key hierarchy.
Encryption in motion
A common problem for all client/server applications is the need for privacy as data moves over public and private
networks. If data moving over a network is not encrypted, there’s a chance that it can be captured and stolen by
unauthorized users. When you're dealing with database services, make sure that data is encrypted between the
database client and server. Also make sure that data is encrypted between database servers that communicate with
each other and with middle-tier applications.
One problem when you administer a network is securing data that's being sent between applications across an
untrusted network. You can use TLS/SSL to authenticate servers and clients, and then use it to encrypt messages
between the authenticated parties.
In the authentication process, a TLS/SSL client sends a message to a TLS/SSL server. The server responds with
the information that the server needs to authenticate itself. The client and server perform an additional exchange
of session keys, and the authentication dialog ends. When authentication is completed, SSL -secured
communication can begin between the server and the client through the symmetric encryption keys that are
established during the authentication process.
All connections to Azure SQL Database require encryption (TLS/SSL ) at all times while data is "in transit" to and
from the database. SQL Database uses TLS/SSL to authenticate servers and clients and then use it to encrypt
messages between the authenticated parties.
In your application's connection string, you must specify parameters to encrypt the connection and not to trust the
server certificate. (This is done for you if you copy your connection string out of the Azure portal.) Otherwise, the
connection will not verify the identity of the server and will be susceptible to "man-in-the-middle" attacks. For the
ADO.NET driver, for instance, these connection string parameters are Encrypt=True and
TrustServerCertificate=False .
Encryption at rest
You can take several precautions to help secure the database. For example, design a secure system, encrypt
confidential assets, and build a firewall around the database servers. But in a scenario where the physical media
(such as drives or backup tapes) are stolen, a malicious party can just restore or attach the database and browse
the data.
One solution is to encrypt the sensitive data in the database and protect the keys that are used to encrypt the data
with a certificate. This solution prevents anyone without the keys from using the data, but this kind of protection
must be planned.
To solve this problem, SQL Server and SQL Database support transparent data encryption. Transparent data
encryption encrypts SQL Server and SQL Database data files, known as encryption data at rest.
Transparent data encryption helps protect against the threat of malicious activity. It performs real-time encryption
and decryption of the database, associated backups, and transaction log files at rest without requiring changes to
the application.
Transparent data encryption encrypts the storage of an entire database by using a symmetric key called the
database encryption key. In SQL Database, the database encryption key is protected by a built-in server certificate.
The built-in server certificate is unique for each SQL Database server.
If a database is in a Geo-DR relationship, it's protected by a different key on each server. If two databases are
connected to the same server, they share the same built-in certificate. Microsoft automatically rotates these
certificates at least every 90 days.
For more information, see Transparent data encryption.
Encryption in use (client)
Most data breaches involve the theft of critical data such as credit card numbers or personally identifiable
information. Databases can be treasure troves of sensitive information. They can contain customers' personal data
(like national identification numbers), confidential competitive information, and intellectual property. Lost or stolen
data, especially customer data, can result in brand damage, competitive disadvantage, and serious fines--even
lawsuits.
Always Encrypted is a feature designed to protect sensitive data stored in Azure SQL Database or SQL Server
databases. Always Encrypted allows clients to encrypt sensitive data inside client applications and never reveal the
encryption keys to the database engine (SQL Database or SQL Server).
Always Encrypted provides a separation between people who own the data (and can view it) and people who
manage the data (but should have no access). It helps ensure that on-premises database administrators, cloud
database operators, or other high-privileged but unauthorized users cannot access the encrypted data.
In addition, Always Encrypted makes encryption transparent to applications. An Always Encrypted-enabled driver
is installed on the client computer so that it can automatically encrypt and decrypt sensitive data in the client
application. The driver encrypts the data in sensitive columns before passing the data to the database engine. The
driver automatically rewrites queries so that the semantics to the application are preserved. Similarly, the driver
transparently decrypts data, stored in encrypted database columns, contained in query results.
Access control
To provide security, SQL Database controls access by using:
Firewall rules that limit connectivity by IP address.
Authentication mechanisms that require users to prove their identity.
Authorization mechanisms that limit users to specific actions and data.
Database access
Data protection begins with controlling access to your data. The datacenter that hosts your data manages physical
access. You can configure a firewall to manage security at the network layer. You also control access by configuring
logins for authentication and defining permissions for server and database roles.
Firewall and firewall rules
Azure SQL Database provides a relational database service for Azure and other internet-based applications. To
help protect your data, firewalls prevent all access to your database server until you specify which computers have
permission. The firewall grants access to databases based on the originating IP address of each request. For more
information, see Overview of Azure SQL Database firewall rules.
The Azure SQL Database service is available only through TCP port 1433. To access a SQL database from your
computer, ensure that your client computer firewall allows outgoing TCP communication on TCP port 1433. If
inbound connections are not needed for other applications, block them on TCP port 1433.
Authentication
Authentication refers to how you prove your identity when connecting to the database. SQL Database supports
two types of authentication:
SQL Server authentication: A single login account is created when a logical SQL instance is created, called
the SQL Database Subscriber Account. This account connects by using SQL Server authentication (username
and password). This account is an administrator on the logical server instance and on all user databases
attached to that instance. The permissions of the subscriber account cannot be restricted. Only one of these
accounts can exist.
Azure Active Directory authentication: Azure AD authentication is a mechanism of connecting to Azure
SQL Database and Azure SQL Data Warehouse by using identities in Azure AD. You can use it to centrally
manage identities of database users.
NOTE
Dynamic data masking can be configured by the Azure Database admin, server admin, or security officer roles.
Row-Level Security
Another common security requirement for multitenant databases is Row -Level Security. You can use this feature
to control access to rows in a database table based on the characteristics of the user who's executing a query.
(Example characteristics are group membership and execution context.)
The access restriction logic is located in the database tier rather than away from the data in another application tier.
The database system applies the access restrictions every time that data access is attempted from any tier. This
makes your security system more reliable and robust by reducing the surface area of your security system.
Row -Level Security introduces predicate-based access control. It features a flexible, centralized evaluation that can
take into consideration metadata or any other criteria the administrator determines as appropriate. The predicate is
used as a criterion to determine whether or not the user has the appropriate access to the data based on user
attributes. You can implement label-based access control by using predicate-based access control.
Proactive monitoring
SQL Database helps secure your data by providing auditing and threat detection capabilities.
Auditing
Azure SQL Database auditing increases your ability to gain insight into events and changes that occur within the
database. Examples are updates and queries against the data.
SQL Database auditing tracks database events and writes them to an audit log in your Azure storage account.
Auditing can help you maintain regulatory compliance, understand database activity, and gain insight into
discrepancies and anomalies that might indicate business concerns or suspected security violations. Auditing
enables and facilitates adherence to compliance standards but doesn't guarantee compliance.
You can use SQL Database auditing to:
Retain an audit trail of selected events. You can define categories of database actions to be audited.
Report on database activity. You can use pre-configured reports and a dashboard to get started quickly with
activity and event reporting.
Analyze reports. You can find suspicious events, unusual activity, and trends.
There are two auditing methods:
Blob auditing: Logs are written to Azure Blob storage. This is a newer auditing method. It provides higher
performance, supports higher granularity object-level auditing, and is more cost effective.
Table auditing: Logs are written to Azure Table storage.
Threat detection
Advanced Threat Protection for Azure SQL Database detects suspicious activities that indicate potential security
threats. You can use threat detection to respond to suspicious events in the database, such as SQL injections, as
they occur. It provides alerts and allows the use of Azure SQL Database auditing to explore the suspicious events.
SQL Advanced Threat Protection (ATP ) provides a set of advanced SQL security capabilities, including Data
Discovery & Classification, Vulnerability Assessment, and Threat Detection.
Data Discovery & Classification
Vulnerability Assessment
Threat Detection
Azure Database for PostgreSQL Advanced Threat Protection provides a new layer of security, which enables you
to detect and respond to potential threats as they occur by providing security alerts on anomalous activities. Users
receive an alert upon suspicious database activities, and potential vulnerabilities, as well as anomalous database
access and queries patterns. Advanced Threat Protection for Azure Database for PostgreSQL integrates alerts with
Azure Security Center. Type of alerts include:
Access from unusual location
Access from unusual Azure data center
Access from unfamiliar principal
Access from a potentially harmful application
Brute force Azure database for PostgreSQL credentials
Azure Database for MySQL Advanced Threat Protection provides protection similar to PostgreSQL Advanced
Protection.
Azure Marketplace
The Azure Marketplace is an online applications and services marketplace that enables start-ups and independent
software vendors (ISVs) to offer their solutions to Azure customers around the world. The Azure Marketplace
combines Microsoft Azure partner ecosystems into a unified platform to better serve customers and partners. You
can run a search to view database security products available in the Azure Marketplace.
Next steps
Secure your Azure SQL database
Azure Security Center and Azure SQL Database service
SQL Database threat detection
Improve SQL database performance
Azure database security best practices
11/7/2018 • 10 minutes to read • Edit Online
Security is a top concern for managing databases, and it has always been a priority for Azure SQL Database. Your
databases can be tightly secured to help satisfy most regulatory or security requirements, including HIPAA, ISO
27001/27002, and PCI DSS Level 1. A current list of security compliance certifications is available at the Microsoft
Trust Center site. You also can choose to place your databases in specific Azure datacenters based on regulatory
requirements.
In this article, we discuss a collection of Azure database security best practices. These best practices are derived
from our experience with Azure database security and the experiences of customers like yourself.
For each best practice, we explain:
What the best practice is
Why you want to enable that best practice
What might be the result if you fail to enable the best practice
How you can learn to enable the best practice
This Azure Database Security Best Practices article is based on a consensus opinion and Azure platform
capabilities and feature sets as they exist at the time this article was written. Opinions and technologies change
over time and this article will be updated on a regular basis to reflect those changes.
The Azure SQL Database service is available only through TCP port 1433. To access a SQL database from your
computer, ensure that your client computer firewall allows outgoing TCP communication on TCP port 1433. Block
inbound connections on TCP port 1433 by using firewall rules, if you don’t need these connections for other
applications.
As part of the connection process, connections from Azure virtual machines are redirected to an IP address and
port that are unique for each worker role. The port number is in the range from 11000 to 11999. For more
information about TCP ports, see Ports beyond 1433 for ADO.NET 4.5.
For more information about firewall rules in SQL Database, see SQL Database firewall rules.
NOTE
In addition to IP rules, the firewall manages virtual network rules. Virtual network rules are based on virtual network service
endpoints. Virtual network rules might be preferable to IP rules in some cases. To learn more, see Virtual network service
endpoints and rules for Azure SQL Database.
NOTE
SQL Server authentication cannot use the Kerberos security protocol.
NOTE
We recommend the use of Azure AD authentication over the use of SQL Server authentication.
Benefits include the following:
It provides an alternative to SQL Server authentication.
It helps stop the proliferation of user identities across database servers.
It allows password rotation in a single place.
Customers can manage database permissions by using external (Azure AD ) groups.
It can eliminate storing passwords by enabling integrated Windows authentication and other forms of
authentication supported by Azure Active Directory.
It uses contained database users to authenticate identities at the database level.
It supports token-based authentication for applications that connect to SQL Database.
It supports AD FS (domain federation) or native user/password authentication for a local Azure Active
Directory instance without domain synchronization.
Azure AD supports connections from SQL Server Management Studio that use Active Directory Universal
Authentication, which includes Multi-Factor Authentication. Multi-Factor Authentication provides strong
authentication with a range of verification options—phone call, text message, smart cards with PIN, or mobile
app notification. For more information, see SSMS support for Azure AD Multi-Factor Authentication with SQL
Database and SQL Data Warehouse.
The configuration steps include the following procedures to configure and use Azure AD authentication:
Create and populate Azure AD.
Optional: Associate or change the Active Directory instance that’s currently associated with your Azure
subscription.
Create an Azure Active Directory administrator for Azure SQL Database or Azure SQL Data Warehouse.
Configure your client computers.
Create contained database users in your database mapped to Azure AD identities.
Connect to your database by using Azure AD identities.
You can find detailed information in Use Azure Active Directory authentication for authentication with SQL
Database, Managed Instance, or SQL Data Warehouse.
Next steps
See Azure security best practices and patterns for more security best practices to use when you’re designing,
deploying, and managing your cloud solutions by using Azure.
The following resources are available to provide more general information about Azure security and related
Microsoft services:
Azure Security Team Blog - for up to date information on the latest in Azure Security
Microsoft Security Response Center - where Microsoft security vulnerabilities, including issues with Azure, can
be reported or via email to [email protected]
Azure database security checklist
11/7/2018 • 2 minutes to read • Edit Online
To help improve security, Azure Database includes a number of built-in security controls that you can use to limit
and control access.
These include:
A firewall that enables you to create firewall rules limiting connectivity by IP address,
Server-level firewall accessible from the Azure portal
Database-level firewall rules accessible from SSMS
Secure connectivity to your database using secure connection strings
Use access management
Data encryption
SQL Database auditing
SQL Database threat detection
Introduction
Cloud computing requires new security paradigms that are unfamiliar to many application users, database
administrators, and programmers. As a result, some organizations are hesitant to implement a cloud infrastructure
for data management due to perceived security risks. However, much of this concern can be alleviated through a
better understanding of the security features built into Microsoft Azure and Microsoft Azure SQL Database.
Checklist
We recommend that you read the Azure Database Security Best Practices article prior to reviewing this checklist.
You will be able to get the most out of this checklist after you understand the best practices. You can then use this
checklist to make sure that you’ve addressed the important issues in Azure database security.
Protect Data
Control Access
CHECKLIST CATEGORY DESCRIPTION
Proactive Monitoring
Conclusion
Azure Database is a robust database platform, with a full range of security features that meet many organizational
and regulatory compliance requirements. You can easily protect data by controlling the physical access to your
data, and using a variety of options for data security at the file-, column-, or row -level with Transparent Data
Encryption, Cell-Level Encryption, or Row -Level Security. Always Encrypted also enables operations against
encrypted data, simplifying the process of application updates. In turn, access to auditing logs of SQL Database
activity provides you with the information you need, allowing you to know how and when data is accessed.
Next steps
You can improve the protection of your database against malicious users or unauthorized access with just a few
simple steps. In this tutorial you learn to:
Set up firewall rules for your server and or database.
Protect your data with encryption.
Enable SQL Database auditing.
Azure Data Security and Encryption Best Practices
1/2/2019 • 9 minutes to read • Edit Online
To help protect data in the cloud, you need to account for the possible states in which your data can occur, and
what controls are available for that state. Best practices for Azure data security and encryption relate to the
following data states:
At rest: This includes all information storage objects, containers, and types that exist statically on physical
media, whether magnetic or optical disk.
In transit: When data is being transferred between components, locations, or programs, it’s in transit. Examples
are transfer over the network, across a service bus (from on-premises to cloud and vice-versa, including hybrid
connections such as ExpressRoute), or during an input/output process.
In this article we will discuss a collection of Azure data security and encryption best practices. These best practices
are derived from our experience with Azure data security and encryption and the experiences of customers like
yourself.
For each best practice, we’ll explain:
What the best practice is
Why you want to enable that best practice
What might be the result if you fail to enable the best practice
Possible alternatives to the best practice
How you can learn to enable the best practice
This Azure Data Security and Encryption Best Practices article is based on a consensus opinion, and Azure
platform capabilities and feature sets, as they exist at the time this article was written. Opinions and technologies
change over time and this article will be updated on a regular basis to reflect those changes.
NOTE
If a user has contributor permissions (RBAC) to a key vault management plane, they can grant themselves access to the data
plane by setting a key vault access policy. We recommend that you tightly control who has contributor access to your key
vaults, to ensure that only authorized persons can access and manage your key vaults, keys, secrets, and certificates.
Because the vast majority of attacks target the end user, the endpoint becomes one of the primary points of attack.
An attacker who compromises the endpoint can use the user’s credentials to gain access to the organization’s data.
Most endpoint attacks take advantage of the fact that users are administrators in their local workstations.
Best practice: Use a secure management workstation to protect sensitive accounts, tasks, and data.
Detail: Use a privileged access workstation to reduce the attack surface in workstations. These secure
management workstations can help you mitigate some of these attacks and ensure that your data is safer.
Best practice: Ensure endpoint protection.
Detail: Enforce security policies across all devices that are used to consume data, regardless of the data location
(cloud or on-premises).
Next steps
See Azure security best practices and patterns for more security best practices to use when you’re designing,
deploying, and managing your cloud solutions by using Azure.
The following resources are available to provide more general information about Azure security and related
Microsoft services:
Azure Security Team Blog - for up to date information on the latest in Azure Security
Microsoft Security Response Center - where Microsoft security vulnerabilities, including issues with Azure, can
be reported or via email to [email protected]
Azure Data Encryption-at-Rest
1/2/2019 • 19 minutes to read • Edit Online
Microsoft Azure includes tools to safeguard data according to your company’s security and compliance needs.
This paper focuses on:
How data is protected at rest across Microsoft Azure
Discusses the various components taking part in the data protection implementation,
Reviews pros and cons of the different key management protection approaches.
Encryption at Rest is a common security requirement. In Azure, organizations can encrypt data at rest without the
risk or cost of a custom key management solution. Organizations have the option of letting Azure completely
manage Encryption at Rest. Additionally, organizations have various options to closely manage encryption or
encryption keys.
When Server-side encryption with service-managed keys is used, the key creation, storage, and service access are
all managed by the service. Typically, the foundational Azure resource providers will store the Data Encryption
Keys in a store that is close to the data and quickly available and accessible while the Key Encryption Keys are
stored in a secure internal store.
Advantages
Simple setup
Microsoft manages key rotation, backup, and redundancy
Customer does not have the cost associated with implementation or the risk of a custom key management
scheme.
Disadvantages
No customer control over the encryption keys (key specification, lifecycle, revocation, etc.)
No ability to segregate key management from overall management model for the service
Server-side encryption using customer-managed keys in Azure Key Vault
For scenarios where the requirement is to encrypt the data at rest and control the encryption keys customers can
use server-side encryption using customer-managed Keys in Key Vault. Some services may store only the root Key
Encryption Key in Azure Key Vault and store the encrypted Data Encryption Key in an internal location closer to the
data. In that scenario customers can bring their own keys to Key Vault (BYOK – Bring Your Own Key), or generate
new ones, and use them to encrypt the desired resources. While the Resource Provider performs the encryption
and decryption operations it uses the configured key as the root key for all encryption operations.
K e y A c c e ss
The server-side encryption model with customer-managed keys in Azure Key Vault involves the service accessing
the keys to encrypt and decrypt as needed. Encryption at rest keys are made accessible to a service through an
access control policy. This policy grants the service identity access to receive the key. An Azure service running on
behalf of an associated subscription can be configured with an identity in that subscription. The service can
perform Azure Active Directory authentication and receive an authentication token identifying itself as that service
acting on behalf of the subscription. That token can then be presented to Key Vault to obtain a key it has been
given access to.
For operations using encryption keys, a service identity can be granted access to any of the following operations:
decrypt, encrypt, unwrapKey, wrapKey, verify, sign, get, list, update, create, import, delete, backup, and restore.
To obtain a key for use in encrypting or decrypting data at rest the service identity that the Resource Manager
service instance will run as must have UnwrapKey (to get the key for decryption) and WrapKey (to insert a key
into key vault when creating a new key).
NOTE
For more detail on Key Vault authorization see the secure your key vault page in the Azure Key Vault documentation.
Advantages
Full control over the keys used – encryption keys are managed in the customer’s Key Vault under the
customer’s control.
Ability to encrypt multiple services to one master
Can segregate key management from overall management model for the service
Can define service and key location across regions
Disadvantages
Customer has full responsibility for key access management
Customer has full responsibility for key lifecycle management
Additional Setup & configuration overhead
Server-side encryption using service-managed keys in customer-controlled hardware
Some Azure services enable the Host Your Own Key (HYOK) key management model. This management mode is
useful in scenarios where there is a need to encrypt the data at rest and manage the keys in a proprietary
repository outside of Microsoft’s control. In this model, the service must retrieve the key from an external site.
Performance and availability guarantees are impacted, and configuration is more complex. Additionally, since the
service does have access to the DEK during the encryption and decryption operations the overall security
guarantees of this model are similar to when the keys are customer-managed in Azure Key Vault. As a result, this
model is not appropriate for most organizations unless they have specific key management requirements. Due to
these limitations, most Azure Services do not support server-side encryption using server-managed keys in
customer-controlled hardware.
K e y A c c e ss
When server-side encryption using service-managed keys in customer-controlled hardware is used the keys are
maintained on a system configured by the customer. Azure services that support this model provide a means of
establishing a secure connection to a customer supplied key store.
Advantages
Full control over the root key used – encryption keys are managed by a customer provided store
Ability to encrypt multiple services to one master
Can segregate key management from overall management model for the service
Can define service and key location across regions
Disadvantages
Full responsibility for key storage, security, performance, and availability
Full responsibility for key access management
Full responsibility for key lifecycle management
Significant setup, configuration, and ongoing maintenance costs
Increased dependency on network availability between the customer datacenter and Azure datacenters.
Backup - - Yes
Power BI Yes - -
ENCRYPTION MODEL AND KEY
MANAGEMENT
IoT Services
Conclusion
Protection of customer data stored within Azure Services is of paramount importance to Microsoft. All Azure
hosted services are committed to providing Encryption at Rest options. Foundational services such as Azure
Storage, Azure SQL Database, and key analytics and intelligence services already provide Encryption at Rest
options. Some of these services support either customer controlled keys and client-side encryption as well as
service-managed keys and encryption. Microsoft Azure services are broadly enhancing Encryption at Rest
availability and new options are planned for preview and general availability in the upcoming months.
Azure Disk Encryption for IaaS VMs
1/10/2019 • 9 minutes to read • Edit Online
Microsoft Azure is committed to ensuring your data privacy and data sovereignty. Azure enables you to control
your Azure-hosted data through a range of advanced technologies to encrypt, control and manage encryption
keys, and control and audit access of data. This control provides Azure customers with the flexibility to choose the
solution that best meets their business needs. This article introduces you to a technology solution: "Azure Disk
Encryption for Windows and Linux IaaS virtual machines (VMs)." This technology helps protect and safeguard
your data to meet your organizational security and compliance commitments.
NOTE
If you’re interested in viewing or deleting personal data, please see the Azure Data Subject Requests for the GDPR article. If
you’re looking for general info about GDPR, see the GDPR section of the Service Trust portal.
Overview
Azure Disk Encryption is a capability that helps you encrypt your Windows and Linux IaaS VM disks. Disk
Encryption leverages the industry standard BitLocker feature of Windows and the DM -Crypt feature of Linux to
provide volume encryption for the OS and data disks. The solution is integrated with Azure Key Vault to help you
control and manage the disk-encryption keys and secrets. The solution also ensures that all data on the VM disks
are encrypted at rest in your Azure storage.
Disk Encryption for Windows and Linux IaaS VMs is in General Availability in all Azure public regions and Azure
Government regions for Standard VMs and VMs with Azure Premium Storage. When you apply the Disk
Encryption management solution, you can satisfy the following business needs:
IaaS VMs are secured at rest by using industry-standard encryption technology to address organizational
security and compliance requirements.
IaaS VMs boot under customer-controlled keys and policies. You can audit their usage in your key vault.
If you use Azure Security Center, you're alerted if you have VMs that aren't encrypted. The alerts show as High
Severity and the recommendation is to encrypt these VMs.
NOTE
Certain recommendations might increase data, network, or compute resource usage and result in additional license or
subscription costs.
Encryption scenarios
The Disk Encryption solution supports the following customer scenarios:
Enable encryption on new Windows IaaS VMs created from pre-encrypted VHD and encryption keys.
Enable encryption on new IaaS VMs created from the supported Azure Gallery images.
Enable encryption on existing IaaS VMs that run in Azure.
Enable encryption on Windows virtual machine scale sets.
Enable encryption on data drives for Linux virtual machine scale sets.
Disable encryption on Windows IaaS VMs.
Disable encryption on data drives for Linux IaaS VMs.
Disable encryption on Windows virtual machine scale sets.
Disable encryption on data drives for Linux virtual machine scale sets.
Enable encryption of managed disk VMs.
Update encryption settings of an existing encrypted Premium and non-Premium Storage VM.
Back up and restore of encrypted VMs.
The solution supports the following scenarios for IaaS VMs when they're enabled in Microsoft Azure:
Integration with Azure Key Vault.
Standard tier VMs: A, D, DS, G, GS, F, and so on, series IaaS VMs. Linux VMs within these tiers must meet the
minimum memory requirement of 7 GB.
Enable encryption on Windows and Linux IaaS VMs, managed disk, and scale set VMs from the supported
Azure Gallery images.
Disable encryption on OS and data drives for Windows IaaS VMs, scale set VMs, and managed disk VMs.
Disable encryption on data drives for Linux IaaS VMs, scale set VMs, and managed disk VMs.
Enable encryption on IaaS VMs that run the Windows Client OS.
Enable encryption on volumes with mount paths.
Enable encryption on Linux VMs that are configured with disk striping (RAID ) by using mdadm.
Enable encryption on Linux VMs that use LVM for data disks.
Enable encryption on the Linux VM OS and data disks.
NOTE
OS drive encryption for some Linux distributions isn't supported. For more information, see the Azure Disk
Encryption FAQ article.
Enable encryption on Windows VMs that are configured with Windows Storage Spaces.
Update encryption settings for an existing encrypted Premium and non-Premium Storage VM.
Back up and restore of encrypted VMs for both key encryption key (KEK) and non-KEK scenarios.
All Azure Public and Azure Government regions are supported.
The solution doesn't support the following scenarios, features, and technology:
Basic tier IaaS VMs.
Disable encryption on an OS drive for Linux IaaS VMs.
Disable encryption on a data drive when the OS drive is encrypted for Linux IaaS VMs.
IaaS VMs that are created by using the classic VM creation method.
Enable encryption of customer custom images on Linux IaaS VMs.
Integration with your on-premises key management system.
Azure Files (shared file system).
Network File System (NFS ).
Dynamic volumes.
Windows VMs that are configured with software-based RAID systems.
Encryption features
When you enable and deploy Disk Encryption for Azure IaaS VMs, the following capabilities are enabled
depending on the provided configuration:
Encryption of the OS volume to protect the boot volume at rest in your storage.
Encryption of data volumes to protect the data volumes at rest in your storage.
Disable encryption on the OS and data drives for Windows IaaS VMs.
Disable encryption on the data drives for Linux IaaS VMs (only when the OS drive isn't encrypted).
Safeguard the encryption keys and secrets in your Azure Key Vault subscription.
Report the encryption status of the encrypted IaaS VM.
Remove the disk encryption configuration settings from the IaaS VM.
Back up and restore the encrypted VMs by using the Azure Backup service.
Azure Disk Encryption for IaaS VMS for Windows and Linux solution includes:
The disk encryption extension for Windows.
The disk encryption extension for Linux.
The PowerShell disk encryption cmdlets.
The Azure CLI disk encryption cmdlets.
The Azure Resource Manager disk encryption templates.
The Azure Disk Encryption solution is supported on IaaS VMs that run Windows or Linux OS. For more
information about the supported operating systems, see the Prerequisites article.
NOTE
There's no additional charge to encrypt VM disks with Azure Disk Encryption. Standard Key Vault pricing applies to the key
vault that's used to store the encryption keys.
Encryption workflow
To enable disk encryption for Windows and Linux VMs, do the following steps:
1. Choose an encryption scenario from the scenarios listed in the Encryption scenarios section.
2. Opt in to enable disk encryption via the Azure Disk Encryption Resource Manager template, PowerShell
cmdlets, or the Azure CLI, and specify the encryption configuration.
For the customer-encrypted VHD scenario, upload the encrypted VHD to your storage account and the
encryption key material to your key vault. Then, provide the encryption configuration to enable
encryption on a new IaaS VM.
For new VMs that are created from the Marketplace and existing VMs that already run in Azure,
provide the encryption configuration to enable encryption on the IaaS VM.
3. Grant access to the Azure platform to read the encryption key material (BitLocker encryption keys for
Windows systems and Passphrase for Linux) from your key vault to enable encryption on the IaaS VM.
4. Azure updates the VM service model with encryption and the key vault configuration, and sets up your
encrypted VM.
Decryption workflow
To disable disk encryption for IaaS VMs, complete the following high-level steps:
1. Choose to disable encryption (decryption) on a running IaaS VM in Azure and specify the decryption
configuration. You can disable via the Azure Disk Encryption Resource Manager template, PowerShell
cmdlets, or the Azure CLI.
This step disables encryption of the OS or the data volume or both on the running Windows IaaS VM. As
mentioned in the previous section, disabling OS disk encryption for Linux isn't supported. The decryption
step is allowed only for data drives on Linux VMs as long as the OS disk isn't encrypted.
2. Azure updates the VM service model and the IaaS VM is marked as decrypted. The contents of the VM are
no longer encrypted at rest.
NOTE
The disable encryption operation doesn't delete your key vault and the encryption key material (BitLocker
encryption keys for Windows systems or Passphrase for Linux).
Disabling OS disk encryption for Linux isn't supported. The decryption step is allowed only for data drives on Linux
VMs.
Disabling data disk encryption for Linux isn't supported if the OS drive is encrypted.
Terminology
The following table defines some of the common terms that are used in this technology:
TERMINOLOGY DEFINITION
Azure Key Vault Key Vault is a cryptographic, key management service that's
based on Federal Information Processing Standards (FIPS)
validated hardware security modules. These standards help to
safeguard your cryptographic keys and sensitive secrets. For
more information, see the Azure Key Vault documentation.
Azure CLI The Azure CLI is optimized for managing and administering
Azure resources from the command line.
KEK Key encryption key (KEK) is the asymmetric key (RSA 2048)
that you can use to protect or wrap the secret. You can
provide a hardware security module (HSM)-protected key or
software-protected key. For more information, see the Azure
Key Vault documentation.
Next steps
Azure Disk Encryption prerequisites
Quickstart: Encrypt a Windows IaaS VM with Azure
PowerShell
1/14/2019 • 4 minutes to read • Edit Online
Azure Disk Encryption helps you encrypt your Windows and Linux IaaS virtual machine disks. The solution is
integrated with Azure Key Vault to help you control and manage the disk-encryption keys and secrets. By using
Azure Disk encryption, you can ensure that your VMs are secured at rest using industry-standard encryption
technology. In this quickstart, you'll create a Windows Server 2016 VM and encrypt the OS disk.
If you don't have an Azure subscription, create a free account before you begin.
Prerequisites
Windows PowerShell ISE
Install or update to the latest version of the AzureRM PowerShell module
The AzureRM module version needs to be 6.0.0 or higher.
Get-Module AzureRM -ListAvailable | Select-Object -Property Name,Version,Path
A copy of the Azure Disk Encryption prerequisites script.
If you have this script already, download a new copy as it has recently changed.
Use CTRL -A to select all the text then use CTRL -C to copy all the text into Notepad.
Save the file as ADEPrereqScript.ps1
Sign in to Azure
1. Right-click Windows PowerShell ISE and click Run as administrator.
2. In the Administrator: Windows PowerShell ISE window, click View and then click Show Script Pane.
3. In the script pane, type the following cmdlet:
Connect-AzureRMAccount
# Create a virtual network card and associate with public IP address and NSG
$nic = New-AzureRmNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
2. Click on the green arrow for Run Script to build the VM.
2. When the encryption finishes, you can verify that the disk is encrypted with the following cmdlet:
Get-AzureRmVmDiskEncryptionStatus -ResourceGroupName "MySecureRG" -VMName "MySecureVM"
Clean up resources
ADEPrereqScript.ps1 creates a resource lock on the key vault. To clean up the resources from this quickstart, you
need to remove the resource lock first then delete the resource group.
1. Remove the resource lock from the key vault
2. Remove the resource group. This will delete all resources in the group too.
Next steps
Advance to the next article to learn more about Azure Disk Encryption prerequisites for IaaS VMs.
Azure Disk Encryption Prerequisites
Azure Disk Encryption prerequisites
1/23/2019 • 12 minutes to read • Edit Online
This article, Azure Disk Encryption Prerequisites, explains items that need to be in place before you can use
Azure Disk Encryption. Azure Disk Encryption is integrated with Azure Key Vault to help manage encryption
keys. You can use Azure PowerShell, Azure CLI, or the Azure portal to configure Azure Disk Encryption.
Before you enable Azure Disk Encryption on Azure IaaS VMs for the supported scenarios that were discussed in
the Azure Disk Encryption Overview article, be sure to have the prerequisites in place.
WARNING
If you have previously used Azure Disk Encryption with Azure AD app to encrypt this VM, you will have to continue
use this option to encrypt your VM. You can’t use Azure Disk Encryption on this encrypted VM as this isn’t a
supported scenario, meaning switching away from AAD application for this encrypted VM isn’t supported yet.
Certain recommendations might increase data, network, or compute resource usage, resulting in additional license or
subscription costs. You must have a valid active Azure subscription to create resources in Azure in the supported
regions.
Azure PowerShell
Azure PowerShell provides a set of cmdlets that uses the Azure Resource Manager model for managing your
Azure resources. You can use it in your browser with Azure Cloud Shell, or you can install it on your local
machine using the instructions below to use it in any PowerShell session. If you already have it installed locally,
make sure you use the latest version of Azure PowerShell SDK version to configure Azure Disk Encryption.
Download the latest version of Azure PowerShell release.
Install Azure PowerShell for use on your local machine (optional):
1. Follow the instructions in the links for your operating system, then continue though the rest of the steps
below.
Install and configure Azure PowerShell for Windows.
Install PowerShellGet, Azure PowerShell, and load the AzureRM module.
2. Verify the installed versions of the AzureRM module. If needed, update the Azure PowerShell module.
The AzureRM module version needs to be 6.0.0 or higher.
Using the latest AzureRM module version is recommended.
Connect-AzureRmAccount
# For specific instances of Azure, use the -Environment parameter.
Connect-AzureRmAccount –Environment (Get-AzureRmEnvironment –Name AzureUSGovernment)
<# If you have multiple subscriptions and want to specify a specific one,
get your subscription list with Get-AzureRmSubscription and
specify it with Set-AzureRmContext. #>
Get-AzureRmSubscription
Set-AzureRmContext -SubscriptionId "xxxx-xxxx-xxxx-xxxx"
Install the Azure CLI for use on your local machine (optional)
The Azure CLI 2.0 is a command-line tool for managing Azure resources. The CLI is designed to flexibly query
data, support long-running operations as non-blocking processes, and make scripting easy. You can use it in
your browser with Azure Cloud Shell, or you can install it on your local machine and use it in any PowerShell
session.
1. Install Azure CLI for use on your local machine (optional):
2. Verify the installed version.
az --version
az login
# If you have multiple subscriptions, get your subscription list with az account list and specify
with az account set.
az account list
az account set --subscription "<subscription name or ID>"
WARNING
In order to make sure the encryption secrets don’t cross regional boundaries, Azure Disk Encryption needs the Key Vault
and the VMs to be co-located in the same region. Create and use a Key Vault that is in the same region as the VM to be
encrypted.
# Get-AzureRmLocation
New-AzureRmResourceGroup –Name 'MySecureRG' –Location 'East US'
4. Note the Vault Name, Resource Group Name, Resource ID, Vault URI, and the Object ID that are
returned for later use when you encrypt the disks.
Create a key vault with Azure CLI
You can manage your key vault with Azure CLI using the az keyvault commands. To create a key vault, use az
keyvault create.
1. If needed, connect to your Azure subscription.
2. Create a new resource group, if needed, with az group create. To list locations, use az account list-
locations
Enable Key Vault for deployment, if needed: Enables the Microsoft.Compute resource provider to
retrieve secrets from this key vault when this key vault is referenced in resource creation, for example
when creating a virtual machine.
Enable Key Vault for template deployment, if needed: Enables Azure Resource Manager to get
secrets from this key vault when this key vault is referenced in a template deployment.
Set key vault advanced access policies using the Azure CLI
Use az keyvault update to enable disk encryption for the key vault.
Enable Key Vault for disk encryption: Enabled-for-disk-encryption is required.
Enable Key Vault for deployment, if needed: Enables the Microsoft.Compute resource provider to
retrieve secrets from this key vault when this key vault is referenced in resource creation, for example
when creating a virtual machine.
az keyvault update --name "MySecureVault" --resource-group "MySecureRG" --enabled-for-deployment
"true"
Enable Key Vault for template deployment, if needed: Allow Resource Manager to retrieve secrets
from the vault.
Set key vault advanced access policies through the Azure portal
1. Select your keyvault, go to Access Policies, and Click to show advanced access policies.
2. Select the box labeled Enable access to Azure Disk Encryption for volume encryption.
3. Select Enable access to Azure Virtual Machines for deployment and/or Enable Access to Azure
Resource Manager for template deployment, if needed.
4. Click Save.
# Step 1: Create a new resource group and key vault in the same location.
# Fill in 'MyLocation', 'MySecureRG', and 'MySecureVault' with your values.
# Use Get-AzureRmLocation to get available locations and use the DisplayName.
# To use an existing resource group, comment out the line for New-AzureRmResourceGroup
$Loc = 'MyLocation';
$rgname = 'MySecureRG';
$KeyVaultName = 'MySecureVault';
New-AzureRmResourceGroup –Name $rgname –Location $Loc;
New-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname -Location $Loc;
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$KeyVaultResourceId = (Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName
$rgname).ResourceId;
$diskEncryptionKeyVaultUrl = (Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName
$rgname).VaultUri;
#Step 3: Create a new key in the key vault with the Add-AzureKeyVaultKey cmdlet.
# Fill in 'MyKeyEncryptionKey' with your value.
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
Add-AzureKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
$VMName = 'MySecureVM';
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $rgname -VMName $vmName -
DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -
KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;
Next steps
Enable Azure Disk Encryption for Windows
Enable Azure Disk Encryption for Linux
Enable Azure Disk Encryption for Windows IaaS VMs
2/4/2019 • 13 minutes to read • Edit Online
You can enable many disk-encryption scenarios, and the steps may vary according to the scenario. The following
sections cover the scenarios in greater detail for Windows IaaS VMs. Before you can use disk encryption, the
Azure Disk Encryption prerequisites need to be completed.
Take a snapshot and/or back up before disks are encrypted. Backups ensure that a recovery option is possible if an
unexpected failure occurs during encryption. VMs with managed disks require a backup before encryption occurs.
Once a backup is made, you can use the Set-AzureRmVMDiskEncryptionExtension cmdlet to encrypt managed
disks by specifying the -skipVmBackup parameter. For more information about how to back up and restore
encrypted VMs, see the Azure Backup article.
WARNING
If you have previously used Azure Disk Encryption with Azure AD app to encrypt this VM, you will have to continue use
this option to encrypt your VM. You can’t use Azure Disk Encryption on this encrypted VM as this isn’t a supported
scenario, meaning switching away from AAD application for this encrypted VM isn’t supported yet.
Azure Disk Encryption needs the Key Vault and the VMs to be co-located in the same region. Create and use a Key Vault
that is in the same region as the VM to be encrypted.
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
$rgName = 'MySecureRg';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the Get-
AzureRmVmDiskEncryptionStatus cmdlet.
Disable disk encryption: To disable the encryption, use the Disable-AzureRmVMDiskEncryption cmdlet.
Disabling data disk encryption on Windows VM when both OS and data disks have been encrypted doesn’t
work as expected. Disable encryption on all disks using the -VolumeType "All" parameter for PowerShell,
otherwise the disable command will fail.
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the az vm encryption
show command.
Disable encryption: To disable encryption, use the az vm encryption disable command. Disabling data
disk encryption on Windows VM when both OS and data disks have been encrypted doesn’t work as
expected. Disable encryption on all disks using the --volume-type "All" parameter for CLI, otherwise the
disable command will fail.
NOTE
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling
Azure Disk Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used.
Backups ensure that a recovery option is possible in the case of any unexpected failure during encryption. Once a
backup is made, the Set-AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by
specifying the -skipVmBackup parameter. This command will fail against managed disk based VMs until a backup has
been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
PARAMETER DESCRIPTION
keyVaultName Name of the key vault that the BitLocker key should be
uploaded to. You can get it by using the cmdlet
(Get-AzureRmKeyVault -ResourceGroupName
<MyResourceGroupName>). Vaultname
or the Azure CLI command `az keyvault list --resource-group
"MySecureGroup"
keyVaultResourceGroup Name of the resource group that contains the key vault
keyEncryptionKeyURL URL of the key encryption key that's used to encrypt the
generated BitLocker key. This parameter is optional if you
select nokek in the UseExistingKek drop-down list. If you
select kek in the UseExistingKek drop-down list, you must
enter the keyEncryptionKeyURL value.
forceUpdateTag Pass in a unique value like a GUID every time the operation
needs to be force run.
It can take up to 10 minutes for the registration request to propagate. You can check on the registration state with
Get-AzureRmProviderFeature. When the RegistrationState reports Registered, re-register the
Microsoft.Compute provider with Register-AzureRmResourceProvider:
Encrypt a running virtual machine scale set using KEK to wrap the key:
$rgName= "MySecureRg";
$VmssName = "MySecureVmss";
$KeyVaultName= "MySecureVault";
$keyEncryptionKeyName = "MyKeyEncryptionKey";
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgName;
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$KeyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
Set-AzureRmVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $VmssName -
DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -
KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Get encryption status for a virtual machine scale set: Use the Get-AzureRmVmssVMDiskEncryption
cmdlet.
It can take up to 10 minutes for the registration request to propagate. You can check on the registration state with
az feature show. When the State reports Registered, re-register the Microsoft.Compute provider with az provider
register:
az provider register --namespace Microsoft.Compute
Encrypt a running virtual machine scale set using KEK to wrap the key
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Get encryption status for a virtual machine scale set: Use az vmss encryption show
Disable encryption on a virtual machine scale set: Use az vmss encryption disable
Azure Resource Manager templates for Windows virtual machine scale sets
To encrypt or decrypt Windows virtual machine scale sets, use the Azure Resource Manager templates and
instructions below:
Enable encryption on a Windows virtual machine scale set
Deploy a VM scale set of Windows VMs with a jumpbox and enable encryption on the Windows VM scale set
Disable encryption on a Windows VM scale set
1. Click Deploy to Azure.
2. Fill in the required fields then agree to the terms and conditions.
3. Click Purchase to deploy the template.
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
Encrypt a running VM using KEK: This example uses "All" for the -VolumeType parameter, which
includes both OS and Data volumes. If you only want to encrypt the OS volume, use "OS" for the -
VolumeType parameter.
$sequenceVersion = [Guid]::NewGuid();
$rgName = 'MySecureRg';
$vmName = 'MyExtraSecureVM';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Disable encryption
You can disable encryption using Azure PowerShell, the Azure CLI, or with a Resource Manager template.
Disabling data disk encryption on Windows VM when both OS and data disks have been encrypted doesn’t work
as expected. Disable encryption on all disks using either the -VolumeType "All" parameter for PowerShell or --
volume-type "All" for CLI, otherwise the disable command will fail.
Disable disk encryption with Azure PowerShell: To disable the encryption, use the Disable-Azure
RmVMDiskEncryption cmdlet.
Disable encryption with the Azure CLI: To disable encryption, use the az vm encryption disable
command.
Next steps
Enable Azure Disk Encryption for Linux
Enable Azure Disk Encryption for Linux IaaS VMs
2/5/2019 • 17 minutes to read • Edit Online
You can enable many disk-encryption scenarios, and the steps may vary according to the scenario. The following
sections cover the scenarios in greater detail for Linux IaaS VMs. Before you can use disk encryption, the Azure
Disk Encryption prerequisites need to be completed and the Additional prerequisites for Linux IaaS VMs section
should be reviewed.
Take a snapshot and/or back up before disks are encrypted. Backups ensure that a recovery option is possible if an
unexpected failure occurs during encryption. VMs with managed disks require a backup before encryption occurs.
Once a backup is made, you can use the Set-AzureRmVMDiskEncryptionExtension cmdlet to encrypt managed
disks by specifying the -skipVmBackup parameter. For more information about how to back up and restore
encrypted VMs, see the Azure Backup article.
WARNING
If you have previously used Azure Disk Encryption with Azure AD app to encrypt this VM, you will have to continue use
this option to encrypt your VM. You can’t use Azure Disk Encryption on this encrypted VM as this isn’t a supported
scenario, meaning switching away from AAD application for this encrypted VM isn’t supported yet.
Azure Disk Encryption needs the Key Vault and the VMs to be co-located in the same region. Create and use a Key Vault
that is in the same region as the VM to be encrypted.
When encrypting Linux OS volumes, the VM will be unavailable and SSH will be disabled. To check progress, the Get-
AzureRmVmDiskEncryptionStatus or vm encryption show commands can be used. This process can be expected to take a
few hours for a 30GB OS volume, plus additional time for encrypting data volumes. Data volume encryption time will be
proportional to the size and quantity of the data volumes unless the encrypt format all option is used.
Disabling encryption on Linux VMs is only supported for data volumes. It is not supported on data or OS volumes if the
OS volume has been encrypted.
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the az vm encryption
show command.
Disable encryption: To disable encryption, use the az vm encryption disable command. Disabling
encryption is only allowed on data volumes for Linux VMs.
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Encrypt a running VM using KEK: You may need to add the -VolumeType parameter if you're encrypting
data disks and not the OS disk.
$rgName = 'MySecureRg';
$vmName = 'MyExtraSecureVM';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the Get-
AzureRmVmDiskEncryptionStatus cmdlet.
Disable disk encryption: To disable the encryption, use the Disable-AzureRmVMDiskEncryption cmdlet.
Disabling encryption is only allowed on data volumes for Linux VMs.
PARAMETER DESCRIPTION
keyVaultName Name of the key vault that the BitLocker key should be
uploaded to. You can get it by using the cmdlet
(Get-AzureRmKeyVault -ResourceGroupName
<MyResourceGroupName>). Vaultname
or the Azure CLI command `az keyvault list --resource-group
"MySecureGroup"
keyVaultResourceGroup Name of the resource group that contains the key vault
PARAMETER DESCRIPTION
keyEncryptionKeyURL URL of the key encryption key that's used to encrypt the
generated BitLocker key. This parameter is optional if you
select nokek in the UseExistingKek drop-down list. If you
select kek in the UseExistingKek drop-down list, you must
enter the keyEncryptionKeyURL value.
forceUpdateTag Pass in a unique value like a GUID every time the operation
needs to be force run.
It can take up to 10 minutes for the registration request to propagate. You can check on the registration state with
az feature show. When the State reports Registered, re-register the Microsoft.Compute provider with az provider
register:
Encrypt a running virtual machine scale set using KEK to wrap the key
az vmss encryption enable --resource-group "MySecureRG" --name "MySecureVmss" --disk-encryption-
keyvault "MySecureVault" --key-encryption-key "MyKEK" --key-encryption-keyvault "MySecureVault"
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Get encryption status for a virtual machine scale set: Use az vmss encryption show
Disable encryption on a virtual machine scale set: Use az vmss encryption disable
It can take up to 10 minutes for the registration request to propagate. You can check on the registration state with
Get-AzureRmProviderFeature. When the RegistrationState reports Registered, re-register the
Microsoft.Compute provider with Register-AzureRmResourceProvider:
$rgName= "MySecureRg";
$VmssName = "MySecureVmss";
$KeyVaultName= "MySecureVault";
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgName;
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Set-AzureRmVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $VmssName -
DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId;
Encrypt a running virtual machine scale set using KEK to wrap the key:
$rgName= "MySecureRg";
$VmssName = "MySecureVmss";
$KeyVaultName= "MySecureVault";
$keyEncryptionKeyName = "MyKeyEncryptionKey";
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgName;
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$KeyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
Set-AzureRmVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $VmssName -
DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -
KeyEncryptionKeyUrl $KeyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Get encryption status for a virtual machine set: Use the Get-AzureRmVmssVMDiskEncryption cmdlet.
Azure Resource Manager templates for Linux virtual machine scale sets
To encrypt or decrypt Linux virtual machine scale sets, use the Azure Resource Manager templates and
instructions below:
Enable encryption on a Linux virtual machine scale set
Deploy a VM scale set of Linux VMs with a jumpbox and enable encryption on the Linux VM scale set
Disable encryption on a Linux VM scale set
1. Click Deploy to Azure.
2. Fill in the required fields then agree to the terms and conditions.
3. Click Purchase to deploy the template.
EncryptFormatAll criteria
The parameter goes though all partitions and encrypts them as long as they meet all of the criteria below:
Is not a root/OS/boot partition
Is not already encrypted
Is not a BEK volume
Is not a RAID volume
Is not an LVM volume
Is mounted
Encrypt the disks that compose the RAID or LVM volume rather than the RAID or LVM volume.
Use the EncryptFormatAll parameter with Azure CLI
Use the az vm encryption enable command to enable encryption on a running IaaS virtual machine in Azure.
Encrypt a running VM using EncryptFormatAll:
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
3. Add to fstab.
echo "/dev/disk/azure/scsi1/lun0 /mnt/mountpoint ext4 defaults,nofail 1 2" >> /etc/fstab
5. Set up LVM on top of these new disks. Note the encrypted drives are unlocked after the VM has
finished booting. So, the LVM mounting will also have to be subsequently delayed.
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
Use Azure PowerShell to encrypt IaaS VMs with pre -encrypted VHDs
You can enable disk encryption on your encrypted VHD by using the PowerShell cmdlet Set-AzureRmVMOSDisk.
The example below gives you some common parameters.
$sequenceVersion = [Guid]::NewGuid();
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Encrypt data volumes of a running VM using KEK: Acceptable values for the -VolumeType parameter
are All, OS, and Data. If the VM was previously encrypted with a volume type of "OS" or "All", then the -
VolumeType parameter should be changed to All so that both the OS and the new data disk will be
included.
$rgName = 'MySecureRg';
$vmName = 'MyExtraSecureVM';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
IMPORTANT
Disabling encryption with Azure Disk Encryption on Linux VMs is only supported for data volumes. It is not supported on
data or OS volumes if the OS volume has been encrypted.
Disable disk encryption with Azure PowerShell: To disable the encryption, use the Disable-Azure
RmVMDiskEncryption cmdlet.
Disable encryption with the Azure CLI: To disable encryption, use the az vm encryption disable
command.
Disable encryption with a Resource Manager template: Use the Disable encryption on a running Linux
VM template to disable encryption.
1. Click Deploy to Azure.
2. Select the subscription, resource group, location, VM, legal terms, and agreement.
3. Click Purchase to disable disk encryption on a running Windows VM.
Next steps
Enable Azure Disk Encryption for Windows
Appendix for Azure Disk Encryption
1/29/2019 • 18 minutes to read • Edit Online
This article is an appendix to Azure Disk Encryption for IaaS VMs. Make sure you read the Azure Disk Encryption
for IaaS VMs articles first to understand the context. This article describes how to prepare pre-encrypted VHDs
and other tasks.
Connect-AzureRmAccount
2. If you have multiple subscriptions and want to specify one to use, type the following to see the subscriptions
for your account:
Get-AzureRmSubscription
Get-AzureRmSubscription
Connect-AzureAD
Get-command *diskencryption*
az login
3. If you have multiple subscriptions and want to specify a specific one, get your subscription list with az
account list and specify with az account set.
az account list
az account set --subscription "<subscription name or ID>"
az --version
List all disk encryption secrets used for encrypting VMs in a key vault
To compress the OS partition and prepare the machine for BitLocker, execute the bdehdcfg if needed:
NOTE
Prepare the VM with a separate data/resource VHD for getting the external key by using BitLocker.
Encrypting an OS drive on a running Linux VM
Prerequisites for OS disk encryption
The VM must be using a distribution compatible with OS disk encryption as listed in the Azure Disk Encryption
FAQ
The VM must be created from the Marketplace image in Azure Resource Manager.
Azure VM with at least 4 GB of RAM (recommended size is 7 GB ).
(For RHEL and CentOS ) Disable SELinux. To disable SELinux, see "4.4.2. Disabling SELinux" in the SELinux
User's and Administrator's Guide on the VM.
After you disable SELinux, reboot the VM at least once.
Steps
1. Create a VM by using one of the distributions specified previously.
For CentOS 7.2, OS disk encryption is supported via a special image. To use this image, specify "7.2n" as the
SKU when you create the VM:
2. Configure the VM according to your needs. If you're going to encrypt all the (OS + data) drives, the data
drives need to be specified and mountable from /etc/fstab.
NOTE
Use UUID=... to specify data drives in /etc/fstab instead of specifying the block device name (for example, /dev/sdb1).
During encryption, the order of drives changes on the VM. If your VM relies on a specific order of block devices, it will
fail to mount them after encryption.
NOTE
All user-space processes that are not running as systemd services should be killed with a SIGKILL . Reboot the VM.
When you enable OS disk encryption on a running VM, plan on VM downtime.
5. Periodically monitor the progress of encryption by using the instructions in the next section.
6. After Get-AzureRmVmDiskEncryptionStatus shows "VMRestartPending", restart your VM either by signing
in to it or by using the portal, PowerShell, or CLI.
OsVolumeEncrypted : VMRestartPending
DataVolumesEncrypted : NotMounted
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage : OS disk successfully encrypted, reboot the VM
Before you reboot, we recommend that you save boot diagnostics of the VM.
Monitoring OS encryption progress
You can monitor OS encryption progress in three ways:
Use the Get-AzureRmVmDiskEncryptionStatus cmdlet and inspect the ProgressMessage field:
OsVolumeEncrypted : EncryptionInProgress
DataVolumesEncrypted : NotMounted
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage : OS disk encryption started
After the VM reaches "OS disk encryption started", it takes about 40 to 50 minutes on a Premium-storage
backed VM.
Because of issue #388 in WALinuxAgent, OsVolumeEncrypted and DataVolumesEncrypted show up as
Unknown in some distributions. With WALinuxAgent version 2.1.5 and later, this issue is fixed automatically.
If you see Unknown in the output, you can verify disk-encryption status by using the Azure Resource
Explorer.
Go to Azure Resource Explorer, and then expand this hierarchy in the selection panel on left:
|-- subscriptions
|-- [Your subscription]
|-- resourceGroups
|-- [Your resource group]
|-- providers
|-- Microsoft.Compute
|-- virtualMachines
|-- [Your virtual machine]
|-- InstanceView
In the InstanceView, scroll down to see the encryption status of your drives.
Look at boot diagnostics. Messages from the ADE extension should be prefixed with [AzureDiskEncryption] .
Sign in to the VM via SSH, and get the extension log from:
/var/log/azure/Microsoft.Azure.Security.AzureDiskEncryptionForLinux
We recommend that you don't sign-in to the VM while OS encryption is in progress. Copy the logs only
when the other two methods have failed.
2. Create a separate boot drive, which must not be encrypted. Encrypt your root drive.
3. Provide a passphrase. This is the passphrase that you uploaded to the key vault.
4. Finish partitioning.
5. When you boot the VM and are asked for a passphrase, use the passphrase you provided in step 3.
6. Prepare the VM for uploading into Azure using these instructions. Don't run the last step (deprovisioning
the VM ) yet.
Configure encryption to work with Azure by doing the following steps:
1. Create a file under /usr/local/sbin/azure_crypt_key.sh, with the content in the following script. Pay attention
to the KeyFileName, because it's the passphrase file name used by Azure.
#!/bin/sh
MountPoint=/tmp-keydisk-mount
KeyFileName=LinuxPassPhraseFileName
echo "Trying to get the key from disks ..." >&2
mkdir -p $MountPoint
modprobe vfat >/dev/null 2>&1
modprobe ntfs >/dev/null 2>&1
sleep 2
OPENED=0
cd /sys/block
for DEV in sd*; do
chmod +x /usr/local/sbin/azure_crypt_key.sh
3. Prepare the VM for uploading to Azure by following the instructions in Prepare a SLES or openSUSE
virtual machine for Azure. Don't run the last step (deprovisioning the VM ) yet.
To configure encryption to work with Azure, do the following steps:
1. Edit the /etc/dracut.conf, and add the following line: add_drivers+=" vfat ntfs nls_cp437 nls_iso8859-1"
2. Comment out these lines by the end of the file /usr/lib/dracut/modules.d/90crypt/module-setup.sh:
# inst_multiple -o \
# $systemdutildir/system-generators/systemd-cryptsetup-generator \
# $systemdutildir/systemd-cryptsetup \
# $systemdsystemunitdir/systemd-ask-password-console.path \
# $systemdsystemunitdir/systemd-ask-password-console.service \
# $systemdsystemunitdir/cryptsetup.target \
# $systemdsystemunitdir/sysinit.target.wants/cryptsetup.target \
# systemd-ask-password systemd-tty-ask-password-agent
# inst_script "$moddir"/crypt-run-generator.sh /sbin/crypt-run-generator
DRACUT_SYSTEMD=0
if [ -z "$DRACUT_SYSTEMD" ]; then
to:
if [ 1 ]; then
MountPoint=/tmp-keydisk-mount
KeyFileName=LinuxPassPhraseFileName
echo "Trying to get the key from disks ..." >&2
mkdir -p $MountPoint >&2
modprobe vfat >/dev/null >&2
modprobe ntfs >/dev/null >&2
for SFS in /dev/sd*; do
echo "> Trying device:$SFS..." >&2
mount ${SFS}1 $MountPoint -t vfat -r >&2 ||
mount ${SFS}1 $MountPoint -t ntfs -r >&2
if [ -f $MountPoint/$KeyFileName ]; then
echo "> keyfile got..." >&2
cp $MountPoint/$KeyFileName /tmp-keyfile >&2
luksfile=/tmp-keyfile
umount $MountPoint >&2
break
fi
done
3. Provide a passphrase. This is the passphrase that you'll upload to your key vault.
4. When you boot the VM and are asked for a passphrase, use the passphrase you provided in step 3.
5. Prepare the VM for uploading into Azure by using the "CentOS 7.0+" instructions in Prepare a CentOS -
based virtual machine for Azure. Don't run the last step (deprovisioning the VM ) yet.
6. Now you can deprovision the VM and upload your VHD into Azure.
To configure encryption to work with Azure, do the following steps:
1. Edit the /etc/dracut.conf, and add the following line:
# inst_multiple -o \
# $systemdutildir/system-generators/systemd-cryptsetup-generator \
# $systemdutildir/systemd-cryptsetup \
# $systemdsystemunitdir/systemd-ask-password-console.path \
# $systemdsystemunitdir/systemd-ask-password-console.service \
# $systemdsystemunitdir/cryptsetup.target \
# $systemdsystemunitdir/sysinit.target.wants/cryptsetup.target \
# systemd-ask-password systemd-tty-ask-password-agent
# inst_script "$moddir"/crypt-run-generator.sh /sbin/crypt-run-generator
DRACUT_SYSTEMD=0
if [ -z "$DRACUT_SYSTEMD" ]; then
to
if [ 1 ]; then
4. Edit /usr/lib/dracut/modules.d/90crypt/cryptroot-ask.sh and append the following after the “# Open LUKS
device”:
bash MountPoint=/tmp-keydisk-mount KeyFileName=LinuxPassPhraseFileName echo "Trying to get the key from disks
..." >&2 mkdir -p $MountPoint >&2 modprobe vfat >/dev/null >&2 modprobe ntfs >/dev/null >&2 for SFS in
/dev/sd*; do echo "> Trying device:$SFS..." >&2 mount ${SFS}1 $MountPoint -t vfat -r >&2 || mount ${SFS}1
$MountPoint -t ntfs -r >&2 if [ -f $MountPoint/$KeyFileName ]; then echo "> keyfile got..." >&2 cp
$MountPoint/$KeyFileName /tmp-keyfile >&2 luksfile=/tmp-keyfile umount $MountPoint >&2 break fi done
5. Run the “/usr/sbin/dracut -f -v” to update the initrd.
Upload encrypted VHD to an Azure storage account
After BitLocker encryption or DM -Crypt encryption is enabled, the local encrypted VHD needs to be uploaded to
your storage account.
$AadClientId = "My-AAD-Client-Id"
$AadClientSecret = "My-AAD-Client-Secret"
# Change the VM Name, key vault name, and specify the path to the BEK file.
$VMName ="MySecureVM"
$BEKFilepath = "C:\test\BEK\12345678-90AB-CDEF-A1B2-C3D4E5F67890A.BEK"
$VeyVaultName ="MySecureVault"
# Get the name of the BEK file from the BEK file path. This will be a tag for the key vault secret.
$BEKFileName = Split-Path $BEKFilepath -Leaf
# These tags will be added to the key vault secret so you can easily see which BEK file belongs to which VM.
$tags = @{“MachineName” = “$VMName”;"DiskEncryptionKeyEncryptionAlgorithm" = "RSA-OAEP";
"DiskEncryptionKeyFileName" = "$BEKFileName"}
# Create a new secret in the vault from the converted BEK file.
# The file is converted to a secure string before import into the key vault
$SecretName = [guid]::NewGuid().ToString()
$SecureSecretValue = ConvertTo-SecureString $FileContentEncoded -AsPlainText -Force
$Secret = Set-AzureKeyVaultSecret -VaultName $VeyVaultName -Name $SecretName -SecretValue $SecureSecretValue -
tags $tags
# Show the secret's URL and store it as a variable. This is used as -DiskEncryptionKeyUrl in Set-
AzureRmVMOSDisk when you attach your OS disk.
$SecretUrl=$secret.Id
$SecretUrl
Linux
# This is the passphrase that was provided for encryption during the distribution installation
$passphrase = "contoso-password"
Use the $secretUrl in the next step for attaching the OS disk without using KEK.
Disk encryption secret encrypted with a KEK
Before you upload the secret to the key vault, you can optionally encrypt it by using a key encryption key. Use the
wrap API to first encrypt the secret using the key encryption key. The output of this wrap operation is a base64
URL encoded string, which you can then upload as a secret by using the Set-AzureKeyVaultSecret cmdlet.
# This is the passphrase that was provided for encryption during the distribution installation
$passphrase = "contoso-password"
$apiversion = "2015-06-01"
##############################
# Get Auth URI
##############################
$response = try { Invoke-RestMethod -Method GET -Uri $uri -Headers $headers } catch { $_.Exception.Response
}
$authHeader = $response.Headers["www-authenticate"]
$authUri = [regex]::match($authHeader, 'authorization="(.*?)"').Groups[1].Value
##############################
# Get Auth Token
##############################
$response = Invoke-RestMethod -Method POST -Uri $uri -Headers $headers -Body $body
$access_token = $response.access_token
##############################
# Get KEK info
##############################
$keyid = $response.key.kid
##############################
# Encrypt passphrase using KEK
##############################
$passphraseB64 = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Passphrase))
$uri = $keyid + "/encrypt?api-version=" + $apiversion
$headers = @{"Authorization" = "Bearer " + $access_token; "Content-Type" = "application/json"}
$bodyObj = @{"alg" = "RSA-OAEP"; "value" = $passphraseB64}
$body = $bodyObj | ConvertTo-Json
$response = Invoke-RestMethod -Method POST -Uri $uri -Headers $headers -Body $body
$wrappedSecret = $response.value
##############################
# Store secret
##############################
$secretName = [guid]::NewGuid().ToString()
$uri = $KeyVault.VaultUri + "/secrets/" + $secretName + "?api-version=" + $apiversion
$secretAttributes = @{"enabled" = $true}
$secretTags = @{"DiskEncryptionKeyEncryptionAlgorithm" = "RSA-OAEP"; "DiskEncryptionKeyFileName" =
$secretTags = @{"DiskEncryptionKeyEncryptionAlgorithm" = "RSA-OAEP"; "DiskEncryptionKeyFileName" =
"LinuxPassPhraseFileName"}
$headers = @{"Authorization" = "Bearer " + $access_token; "Content-Type" = "application/json"}
$bodyObj = @{"value" = $wrappedSecret; "attributes" = $secretAttributes; "tags" = $secretTags}
$body = $bodyObj | ConvertTo-Json
$response = Invoke-RestMethod -Method PUT -Uri $uri -Headers $headers -Body $body
$secretUrl = $response.id
Use $KeyEncryptionKey and $secretUrl in the next step for attaching the OS disk using KEK.
Set-AzureRmVMOSDisk `
-VM $VirtualMachine `
-Name $OSDiskName `
-SourceImageUri $VhdUri `
-VhdUri $OSDiskUri `
-Linux `
-CreateOption FromImage `
-DiskEncryptionKeyVaultId $KeyVault.ResourceId `
-DiskEncryptionKeyUrl $SecretUrl
Using a KEK
When you attach the OS disk, pass $KeyEncryptionKey and $secretUrl . The URL was generated in the "Disk
encryption secret encrypted with a KEK" section.
Set-AzureRmVMOSDisk `
-VM $VirtualMachine `
-Name $OSDiskName `
-SourceImageUri $CopiedTemplateBlobUri `
-VhdUri $OSDiskUri `
-Linux `
-CreateOption FromImage `
-DiskEncryptionKeyVaultId $KeyVault.ResourceId `
-DiskEncryptionKeyUrl $SecretUrl `
-KeyEncryptionKeyVaultId $KeyVault.ResourceId `
-KeyEncryptionKeyURL $KeyEncryptionKey.Id
Azure Disk Encryption for IaaS VMs FAQ
2/1/2019 • 7 minutes to read • Edit Online
This article provides answers to frequently asked questions (FAQ ) about Azure Disk Encryption for Windows and
Linux IaaS VMs. For more information about this service, see Azure Disk Encryption for Windows and Linux IaaS
VMs.
*New ADE implementation is supported for RHEL OS and data disk for RHEL7 Pay-As-You-Go images.
ADE is currently not supported for RHEL Bring-Your-Own-Subscription (BYOS ) images. Please also refer
to the Azure Disk Encryption for Linux article for more information.
Can I encrypt both boot and data volumes with Azure Disk Encryption?
Yes, you can encrypt boot and data volumes for Windows and Linux IaaS VMs. For Windows VMs, you can't
encrypt the data without first encrypting the OS volume. For Linux VMs, it's possible to encrypt the data volume
without having to encrypt the OS volume first. After you've encrypted the OS volume for Linux, disabling
encryption on an OS volume for Linux IaaS VMs isn't supported.
Does Azure Disk Encryption allow you to bring your own key (BYOK)?
Yes, you can supply your own key encryption keys. These keys are safeguarded in Azure Key Vault, which is the key
store for Azure Disk Encryption. For more information on the key encryption keys support scenarios, see Azure
Disk Encryption prerequisites.
NOTE
The Linux Azure disk encryption preview extension is deprecated. For details, see Deprecating Azure disk encryption preview
extension for Linux IaaS VMs.
NOTE
Do not delete or edit any contents in this disk. Do not unmount the disk since the encryption key presence is needed for any
encryption operations on the IaaS VM.
If I use EncryptFormatAll and specify all volume types, will it erase the
data on the data drives that we already encrypted?
No, data won't be erased from data drives that are already encrypted using Azure Disk Encryption. Similar to how
EncryptFormatAll didn't re-encrypt the OS drive, it won't re-encrypt the already encrypted data drive. For more
information, see the EncryptFormatAll criteria.
Next steps
In this document, you learned more about the most frequent questions related to Azure Disk Encryption. For more
information about this service, see the following articles:
Azure Disk Encryption Overview
Apply disk encryption in Azure Security Center
Azure data encryption at rest
Azure Disk Encryption troubleshooting guide
2/4/2019 • 7 minutes to read • Edit Online
This guide is for IT professionals, information security analysts, and cloud administrators whose organizations use
Azure Disk Encryption. This article is to help with troubleshooting disk-encryption-related problems.
After the VM has restarted into the new kernel, the new kernel version can be confirmed using:
uname -a
Unable to encrypt Linux disks
In some cases, the Linux disk encryption appears to be stuck at "OS disk encryption started" and SSH is disabled.
The encryption process can take between 3-16 hours to finish on a stock gallery image. If multi-terabyte-sized data
disks are added, the process might take days.
The Linux OS disk encryption sequence unmounts the OS drive temporarily. It then performs block-by-block
encryption of the entire OS disk, before it remounts it in its encrypted state. Unlike Azure Disk Encryption on
Windows, Linux Disk Encryption doesn't allow for concurrent use of the VM while the encryption is in progress.
The performance characteristics of the VM can make a significant difference in the time required to complete
encryption. These characteristics include the size of the disk and whether the storage account is standard or
premium (SSD ) storage.
To check the encryption status, poll the ProgressMessage field returned from the Get-
AzureRmVmDiskEncryptionStatus command. While the OS drive is being encrypted, the VM enters a servicing
state, and disables SSH to prevent any disruption to the ongoing process. The EncryptionInProgress message
reports for the majority of the time while the encryption is in progress. Several hours later, a VMRestartPending
message prompts you to restart the VM. For example:
After you're prompted to reboot the VM, and after the VM restarts, you must wait 2-3 minutes for the reboot and
for the final steps to be performed on the target. The status message changes when the encryption is finally
complete. After this message is available, the encrypted OS drive is expected to be ready for use and the VM is
ready to be used again.
In the following cases, we recommend that you restore the VM back to the snapshot or backup taken immediately
before encryption:
If the reboot sequence, described previously, doesn't happen.
If the boot information, progress message, or other error indicators report that OS encryption has failed in the
middle of this process. An example of a message is the "failed to unmount" error that is described in this guide.
Before the next attempt, reevaluate the characteristics of the VM and make sure that all of the prerequisites are
satisfied.
\windows\system32\bdehdcfg.exe
\windows\system32\bdehdcfglib.dll
\windows\system32\en-US\bdehdcfglib.dll.mui
\windows\system32\en-US\bdehdcfg.exe.mui
Next steps
In this document, you learned more about some common problems in Azure Disk Encryption and how to
troubleshoot those problems. For more information about this service and its capabilities, see the following
articles:
Apply disk encryption in Azure Security Center
Azure data encryption at rest
Azure Disk Encryption prerequisites (previous
release)
1/23/2019 • 21 minutes to read • Edit Online
The new release of Azure Disk Encryption eliminates the requirement for providing an Azure AD
application parameter to enable VM disk encryption. With the new release, you are no longer required
to provide Azure AD credentials during the enable encryption step. All new VMs must be encrypted
without the Azure AD application parameters using the new release. To view instructions to enable
VM disk encryption using the new release, see Azure Disk Encryption prerequisites. VMs that were
already encrypted with Azure AD application parameters are still supported and should continue to be
maintained with the AAD syntax.
This article, Azure Disk Encryption Prerequisites, explains items that need to be in place before you can use
Azure Disk Encryption. Along with general prerequisites, Azure Disk Encryption is integrated with Azure Key
Vault and it uses an Azure AD application to provide authentication in order to manage encryption keys in the
key vault. You may also wish to use Azure PowerShell or the Azure CLI to set up or configure Key Vault and the
Azure AD application.
Before you enable Azure Disk Encryption on Azure IaaS VMs for the supported scenarios that were discussed in
the Azure Disk Encryption Overview article, be sure to have the prerequisites in place.
WARNING
Certain recommendations might increase data, network, or compute resource usage, resulting in additional license or
subscription costs. You must have a valid active Azure subscription to create resources in Azure in the supported
regions.
If you have previously used Azure Disk Encryption with Azure AD app to encrypt this VM, you will have to continue use
this option to encrypt your VM. You can’t use Azure Disk Encryption on this encrypted VM as this isn’t a supported
scenario, meaning switching away from AAD application for this encrypted VM isn’t supported yet.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001`
Group Policy:
The Azure Disk Encryption solution uses the BitLocker external key protector for Windows IaaS VMs. For
domain joined VMs, don't push any group policies that enforce TPM protectors. For information about the
group policy for “Allow BitLocker without a compatible TPM,” see BitLocker Group Policy Reference.
BitLocker policy on domain joined virtual machines with custom group policy must include the following
setting: Configure user storage of bitlocker recovery information -> Allow 256-bit recovery key . Azure Disk
Encryption will fail when custom group policy settings for BitLocker are incompatible. On machines that
didn't have the correct policy setting, apply the new policy, force the new policy to update (gpupdate.exe
/force), and then restarting may be required.
Azure PowerShell
Azure PowerShell provides a set of cmdlets that uses the Azure Resource Manager model for managing your
Azure resources. You can use it in your browser with Azure Cloud Shell, or you can install it on your local
machine using the instructions below to use it in any PowerShell session. If you already have it installed locally,
make sure you use the latest version of Azure PowerShell SDK version to configure Azure Disk Encryption.
Download the latest version of Azure PowerShell release.
Install Azure PowerShell for use on your local machine (optional):
1. Follow the instructions in the links for your operating system, then continue though the rest of the steps
below.
Install and configure Azure PowerShell for Windows.
Install PowerShellGet, Azure PowerShell, and load the AzureRM module.
2. Install the Azure Active Directory PowerShell module.
Install-Module AzureAD
Connect-AzureRmAccount
# For specific instances of Azure, use the -Environment parameter.
Connect-AzureRmAccount –Environment (Get-AzureRmEnvironment –Name AzureUSGovernment)
<# If you have multiple subscriptions and want to specify a specific one,
get your subscription list with Get-AzureRmSubscription and
specify it with Set-AzureRmContext. #>
Get-AzureRmSubscription
Set-AzureRmContext -SubscriptionId "xxxx-xxxx-xxxx-xxxx"
Connect-AzureAD
Azure CLI
The Azure CLI 2.0 is a command-line tool for managing Azure resources. The CLI is designed to flexibly query
data, support long-running operations as non-blocking processes, and make scripting easy. You can use it in your
browser with Azure Cloud Shell, or you can install it on your local machine and use it in any PowerShell session.
1. Install Azure CLI for use on your local machine (optional):
2. Verify the installed version.
az --version
az login
# If you have multiple subscriptions, get your subscription list with az account list and specify with
az account set.
az account list
az account set --subscription "<subscription name or ID>"
WARNING
In order to make sure the encryption secrets don’t cross regional boundaries, Azure Disk Encryption needs the Key Vault
and the VMs to be co-located in the same region. Create and use a Key Vault that is in the same region as the VM to be
encrypted.
# Get-AzureRmLocation
New-AzureRmResourceGroup –Name 'MySecureRG' –Location 'East US'
3. Create a new key vault using New -AzureRmKeyVault
4. Note the Vault Name, Resource Group Name, Resource ID, Vault URI, and the Object ID that are
returned for later use when you encrypt the disks.
Create a key vault with Azure CLI
You can manage your key vault with Azure CLI using the az keyvault commands. To create a key vault, use az
keyvault create.
1. If needed, connect to your Azure subscription.
2. Create a new resource group, if needed, with az group create. To list locations, use az account list-locations
4. Note the Vault Name (name), Resource Group Name, Resource ID (ID ), Vault URI, and the Object
ID that are returned for use later.
Create a key vault with a Resource Manager template
You can create a key vault by using the Resource Manager template.
1. On the Azure quickstart template, click Deploy to Azure.
2. Select the subscription, resource group, resource group location, Key Vault name, Object ID, legal terms, and
agreement, and then click Purchase.
3. The $azureAdApplication.ApplicationId is the Azure AD ClientID and the $aadClientSecret is the client
secret that you will use later to enable Azure Disk Encryption. Safeguard the Azure AD client secret
appropriately. Running $azureAdApplication.ApplicationId will show you the ApplicationID.
Set up an Azure AD app and service principal with Azure CLI
You can manage your service principals with Azure CLI using the az ad sp commands. For more information, see
Create an Azure service principal .
1. If needed, connect to your Azure subscription.
2. Create a new service principal.
3. The appId returned is the Azure AD ClientID used in other commands. It's also the SPN you'll use for az
keyvault set-policy. The password is the client secret that you should use later to enable Azure Disk
Encryption. Safeguard the Azure AD client secret appropriately.
Set up an Azure AD app and service principal though the Azure portal
Use the steps from the Use portal to create an Azure Active Directory application and service principal that can
access resources article to create an Azure AD application. Each step listed below will take you directly to the
article section to complete.
1. Verify required permissions
2. Create an Azure Active Directory application
You can use any name and sign-on URL you would like when creating the application.
3. Get the application ID and the authentication key.
The authentication key is the client secret and is used as the AadClientSecret for Set-
AzureRmVMDiskEncryptionExtension.
The authentication key is used by the application as a credential to sign in to Azure AD. In the
Azure portal, this secret is called keys, but has no relation to key vaults. Secure this secret
appropriately.
The application ID will be used later as the AadClientId for Set-AzureRmVMDiskEncryptionExtension
and as the ServicePrincipalName for Set-AzureRmKeyVaultAccessPolicy.
Set the key vault access policy for the Azure AD app
To write encryption secrets to a specified Key Vault, Azure Disk Encryption needs the Client ID and the Client
Secret of the Azure Active Directory application that has permissions to write secrets to the Key Vault.
NOTE
Azure Disk Encryption requires you to configure the following access policies to your Azure AD client application: WrapKey
and Set permissions.
Set the key vault access policy for the Azure AD app with Azure PowerShell
Your Azure AD application needs rights to access the keys or secrets in the vault. Use the Set-
AzureKeyVaultAccessPolicy cmdlet to grant permissions to the application, using the client ID (which was
generated when the application was registered) as the –ServicePrincipalName parameter value. To learn more,
see the blog post Azure Key Vault - Step by Step.
1. If needed, connect to your Azure subscription.
2. Set the key vault access policy for the AD application with PowerShell.
$keyVaultName = 'MySecureVault'
$aadClientID = 'MyAadAppClientID'
$rgname = 'MySecureRG'
Set-AzureRmKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -
PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $rgname
Set the key vault access policy for the Azure AD app with Azure CLI
Use az keyvault set-policy to set the access policy. For more information, see Manage Key Vault using CLI 2.0.
1. If needed, connect to your Azure subscription.
2. Give the service principal you created via the Azure CLI access to get secrets and wrap keys with the
following command:
az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD ClientID>" --
key-permissions wrapKey --secret-permissions set
Set the key vault access policy for the Azure AD app with the portal
1. Open the resource group with your key vault.
2. Select your key vault, go to Access Policies, then click Add new.
3. Under Select principal, search for the Azure AD application you created and select it.
4. For Key permissions, check Wrap Key under Cryptographic Operations.
5. For Secret permissions, check Set under Secret Management Operations.
6. Click OK to save the access policy.
Set key vault advanced access policies
The Azure platform needs access to the encryption keys or secrets in your key vault to make them available to
the VM for booting and decrypting the volumes. Enable disk encryption on the key vault or deployments will fail.
Set key vault advanced access policies with Azure PowerShell
Use the key vault PowerShell cmdlet Set-AzureRmKeyVaultAccessPolicy to enable disk encryption for the key
vault.
Enable Key Vault for disk encryption: EnabledForDiskEncryption is required for Azure Disk
encryption.
Enable Key Vault for deployment, if needed: Enables the Microsoft.Compute resource provider to
retrieve secrets from this key vault when this key vault is referenced in resource creation, for example
when creating a virtual machine.
Enable Key Vault for template deployment, if needed: Enables Azure Resource Manager to get
secrets from this key vault when this key vault is referenced in a template deployment.
Set key vault advanced access policies using the Azure CLI
Use az keyvault update to enable disk encryption for the key vault.
Enable Key Vault for disk encryption: Enabled-for-disk-encryption is required.
Enable Key Vault for deployment, if needed: Allow Virtual Machines to retrieve certificates stored as
secrets from the vault.
Enable Key Vault for template deployment, if needed: Allow Resource Manager to retrieve secrets
from the vault.
Set key vault advanced access policies through the Azure portal
1. Select your keyvault, go to Access Policies, and Click to show advanced access policies.
2. Select the box labeled Enable access to Azure Disk Encryption for volume encryption.
3. Select Enable access to Azure Virtual Machines for deployment and/or Enable Access to Azure
Resource Manager for template deployment, if needed.
4. Click Save.
$Loc = 'MyLocation';
$rgname = 'MySecureRG';
$KeyVaultName = 'MySecureVault';
New-AzureRmResourceGroup –Name $rgname –Location $Loc;
New-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname -Location $Loc;
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$KeyVaultResourceId = (Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName
$rgname).ResourceId;
$diskEncryptionKeyVaultUrl = (Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName
$rgname).VaultUri;
$aadClientSecret = 'MyAADClientSecret';
$aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
$azureAdApplication = New-AzureRmADApplication -DisplayName "<My Application Display Name>" -HomePage "
<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
$servicePrincipal = New-AzureRmADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId;
$aadClientID = $azureAdApplication.ApplicationId;
#Step 3: Enable the vault for disk encryption and set the access policy for the Azure AD application.
#Step 4: Create a new key in the key vault with the Add-AzureKeyVaultKey cmdlet.
# Fill in 'MyKeyEncryptionKey' with your value.
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
Add-AzureKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
$VMName = 'MySecureVM';
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $rgname -VMName $vmName -AadClientID $aadClientID
-AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -
DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -
KeyEncryptionKeyVaultId $KeyVaultResourceId;
$rgname = 'MySecureRG'
$KeyVaultName= 'MySecureVault'
$Loc = 'MyLocation'
New-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname -Location $Loc
Set-AzureRmKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $rgname -
EnabledForDiskEncryption
# Create the Azure AD application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "
<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for -EnabledForDeployment
$VMName = 'MySecureVM'
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $rgname -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl
$CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $rgname
#Enable encryption on the VM using Azure AD client ID and the client certificate thumbprint
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $rgname -VMName $VMName -AadClientID $AADClientID -
AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -
DiskEncryptionKeyVaultId $KeyVaultResourceId
IMPORTANT
Azure AD certificate-based authentication is currently not supported on Linux VMs.
$rgname = 'MySecureRG'
$KeyVaultName= 'MySecureVault'
$Loc = 'MyLocation'
New-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname -Location $Loc
Set-AzureRmKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $rgname -
EnabledForDiskEncryption
# Create the Azure AD application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "
<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for deployment
#Setting some variables with the key vault information and generating a KEK
# FIll in 'KEKName'
$KEKName ='KEKName'
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEK = Add-AzureKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid
$VMName = 'MySecureVM'
$CertUrl = (Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname).ResourceId
$VM = Get-AzureRmVM -ResourceGroupName $rgname -Name $VMName
$VM = Add-AzureRmVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl
$CertUrl
Update-AzureRmVM -VM $VM -ResourceGroupName $rgname
#Enable encryption on the VM using Azure AD client ID and the client certificate thumbprint
Next steps
Enable Azure Disk Encryption for Windows
Enable Azure Disk Encryption for Linux
Enable Azure Disk Encryption for Windows IaaS VMs
(previous release)
12/17/2018 • 16 minutes to read • Edit Online
The new release of Azure Disk Encryption eliminates the requirement for providing an Azure AD
application parameter to enable VM disk encryption. With the new release, you are no longer required
to provide Azure AD credentials during the enable encryption step. All new VMs must be encrypted
without the Azure AD application parameters using the new release. To view instructions to enable VM
disk encryption using the new release, see Azure Disk Encryption for Windows VMS. VMs that were
already encrypted with Azure AD application parameters are still supported and should continue to be
maintained with the AAD syntax.
You can enable many disk-encryption scenarios, and the steps may vary according to the scenario. The following
sections cover the scenarios in greater detail for Windows IaaS VMs. Before you can use disk encryption, the
Azure Disk Encryption prerequisites need to be completed.
Take a snapshot and/or back up before disks are encrypted. Backups ensure that a recovery option is possible if an
unexpected failure occurs during encryption. VMs with managed disks require a backup before encryption occurs.
Once a backup is made, you can use the Set-AzureRmVMDiskEncryptionExtension cmdlet to encrypt managed
disks by specifying the -skipVmBackup parameter. For more information about how to back up and restore
encrypted VMs, see the Azure Backup article.
WARNING
If you have previously used Azure Disk Encryption with Azure AD app to encrypt this VM, you will have to continue use
this option to encrypt your VM. You can’t use Azure Disk Encryption on this encrypted VM as this isn’t a supported
scenario, meaning switching away from AAD application for this encrypted VM isn’t supported yet.
In order to make sure the encryption secrets don’t cross regional boundaries, Azure Disk Encryption needs the Key Vault
and the VMs to be co-located in the same region. Create and use a Key Vault that is in the same region as the VM to be
encrypted.
Select the VM, then click on Disks under the Settings heading to verify encryption status in the
portal. In the chart under Encryption, you'll see if it's enabled.
The following table lists the Resource Manager template parameters for new VMs from the
Marketplace scenario using Azure AD client ID:
PARAMETER DESCRIPTION
vmSize Size of the VM. Currently, only Standard A, D, and G series are
supported.
virtualNetworkName Name of the VNet that the VM NIC should belong to.
subnetName Name of the subnet in the VNet that the VM NIC should
belong to.
keyVaultURL URL of the key vault that the BitLocker key should be
uploaded to. You can get it by using the cmdlet
(Get-AzureRmKeyVault -VaultName,-
ResourceGroupName).VaultURI
or the Azure CLI
az keyvault show --name "MySecureVault" --query
properties.vaultUri
keyEncryptionKeyURL URL of the key encryption key that's used to encrypt the
generated BitLocker key (optional).
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Encrypt a running VM using KEK to wrap the client secret: Azure Disk Encryption lets you specify an
existing key in your key vault to wrap disk encryption secrets that were generated while enabling
encryption. When a key encryption key is specified, Azure Disk Encryption uses that key to wrap the
encryption secrets before writing to Key Vault.
$rgName = 'MySecureRg';
$vmName = ‘MyExtraSecureVM’;
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the Get-
AzureRmVmDiskEncryptionStatus cmdlet.
Disable disk encryption: To disable the encryption, use the Disable-AzureRmVMDiskEncryption cmdlet.
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the az vm encryption
show command.
az vm encryption disable --name "MySecureVM" --resource-group "MySecureRg" --volume-type [ALL, DATA, OS]
NOTE
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling
Azure Disk Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used.
Backups ensure that a recovery option is possible in the case of any unexpected failure during encryption. Once a
backup is made, the Set-AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by
specifying the -skipVmBackup parameter. This command will fail against managed disk based VMs until a backup has
been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
PARAMETER DESCRIPTION
keyVaultName Name of the key vault that the BitLocker key should be
uploaded to. You can get it by using the cmdlet
(Get-AzureRmKeyVault -ResourceGroupName
<MyResourceGroupName>). Vaultname
or the Azure CLI command `az keyvault list --resource-group
"MySecureGroup"
PARAMETER DESCRIPTION
keyEncryptionKeyURL URL of the key encryption key that's used to encrypt the
generated BitLocker key. This parameter is optional if you
select nokek in the UseExistingKek drop-down list. If you
select kek in the UseExistingKek drop-down list, you must
enter the keyEncryptionKeyURL value.
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
Encrypt IaaS VMs with pre -encrypted VHDs with a Resource Manager template
You can enable disk encryption on your encrypted VHD by using the Resource Manager template.
1. On the Azure quickstart template, click Deploy to Azure.
2. Select the subscription, resource group, resource group location, parameters, legal terms, and agreement.
Click Create to enable encryption on the new IaaS VM.
The following table lists the Resource Manager template parameters for your encrypted VHD:
PARAMETER DESCRIPTION
virtualNetworkName Name of the VNet that the VM NIC should belong to. The
name should already have been created in the same resource
group and same location as the VM.
subnetName Name of the subnet on the VNet that the VM NIC should
belong to.
vmSize Size of the VM. Currently, only Standard A, D, and G series are
supported.
keyVaultResourceID The ResourceID that identifies the key vault resource in Azure
Resource Manager. You can get it by using the PowerShell
cmdlet
(Get-AzureRmKeyVault -VaultName
<MyKeyVaultName> -ResourceGroupName
<MyResourceGroupName>).ResourceId
or using the Azure CLI command
az keyvault show --name "MySecureVault" --query id
keyVaultSecretUrl URL of the disk-encryption key that's set up in the key vault.
keyVaultKekUrl URL of the key encryption key for encrypting the generated
disk-encryption key.
$sequenceVersion = [Guid]::NewGuid();
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Encrypt a running VM using KEK to wrap the client secret: Azure Disk Encryption lets you specify an
existing key in your key vault to wrap disk encryption secrets that were generated while enabling
encryption. When a key encryption key is specified, Azure Disk Encryption uses that key to wrap the
encryption secrets before writing to Key Vault. This example uses "All" for the -VolumeType parameter,
which includes both OS and Data volumes. If you only want to encrypt the OS volume, use "OS" for the -
VolumeType parameter.
$sequenceVersion = [Guid]::NewGuid();
$rgName = 'MySecureRg';
$vmName = 'MyExtraSecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
$rgName = 'MySecureRg';
$AADClientID ='My-AAD-client-ID';
$KeyVaultName = 'MySecureVault';
$VMName = ‘MySecureVM’;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
# Fill in the certificate path and the password so the thumbprint can be set as a variable.
Enable encryption using certificate -based authentication and a KEK with Azure PowerShell
# Fill in 'MySecureRg', 'My-AAD-client-ID', 'MySecureVault,, 'MySecureVM’, and "KEKName.
$rgName = 'MySecureRg';
$AADClientID ='My-AAD-client-ID';
$KeyVaultName = 'MySecureVault';
$VMName = 'MySecureVM';
$keyEncryptionKeyName ='KEKName';
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
## Fill in the certificate path and the password so the thumbprint can be read and set as a variable.
# Enable disk encryption using the client certificate thumbprint and a KEK
Disable encryption
You can disable encryption using Azure PowerShell, the Azure CLI, or with a Resource Manager template.
Disable disk encryption with Azure PowerShell: To disable the encryption, use the Disable-Azure
RmVMDiskEncryption cmdlet.
Disable encryption with the Azure CLI: To disable encryption, use the az vm encryption disable
command.
az vm encryption disable --name "MySecureVM" --resource-group "MySecureRg" --volume-type [ALL, DATA, OS]
Next steps
Enable Azure Disk Encryption for Linux
Enable Azure Disk Encryption for Linux IaaS VMs
(previous release)
12/17/2018 • 18 minutes to read • Edit Online
The new release of Azure Disk Encryption eliminates the requirement for providing an Azure AD
application parameter to enable VM disk encryption. With the new release, you're no longer required to
provide Azure AD credentials during the enable encryption step. All new VMs must be encrypted
without the Azure AD application parameters using the new release. To view instructions to enable VM
disk encryption using the new release, see Azure Disk Encryption for Linux VMS. VMs that were already
encrypted with Azure AD application parameters are still supported and should continue to be
maintained with the AAD syntax.
You can enable many disk-encryption scenarios, and the steps may vary according to the scenario. The following
sections cover the scenarios in greater detail for Linux IaaS VMs. Before you can use disk encryption, the Azure
Disk Encryption prerequisites need to be completed and the Additional prerequisites for Linux IaaS VMs section
should be reviewed.
Take a snapshot and/or back up before disks are encrypted. Backups ensure that a recovery option is possible if an
unexpected failure occurs during encryption. VMs with managed disks require a backup before encryption occurs.
Once a backup is made, you can use the Set-AzureRmVMDiskEncryptionExtension cmdlet to encrypt managed
disks by specifying the -skipVmBackup parameter. For more information about how to back up and restore
encrypted VMs, see the Azure Backup article.
WARNING
If you have previously used Azure Disk Encryption with Azure AD app to encrypt this VM, you will have to continue use
this option to encrypt your VM. You can’t use Azure Disk Encryption on this encrypted VM as this isn’t a supported
scenario, meaning switching away from AAD application for this encrypted VM isn’t supported yet.
In order to make sure the encryption secrets don’t cross regional boundaries, Azure Disk Encryption needs the Key Vault
and the VMs to be co-located in the same region. Create and use a Key Vault that is in the same region as the VM to be
encrypted.
When encrypting Linux OS volumes, the process can take a few hours. It is normal for Linux OS volumes to take longer
than data volumes to encrypt.
Disabling encryption on Linux VMs is only supported for data volumes. It is not supported on data or OS volumes if the
OS volume has been encrypted.
Select the VM, then click on Disks under the Settings heading to verify encryption status in the
portal. In the chart under Encryption, you'll see if it's enabled.
PARAMETER DESCRIPTION
AAD Client Secret Client secret of the Azure AD application that has permissions
to write secrets to your key vault.
Key Vault Name Name of the key vault that the key should be placed.
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the az vm encryption
show command.
Disable encryption: To disable encryption, use the az vm encryption disable command. Disabling
encryption is only allowed on data volumes for Linux VMs.
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Encrypt a running VM using KEK to wrap the client secret: Azure Disk Encryption lets you specify an
existing key in your key vault to wrap disk encryption secrets that were generated while enabling
encryption. When a key encryption key is specified, Azure Disk Encryption uses that key to wrap the
encryption secrets before writing to Key Vault. You may need to add the -VolumeType parameter if you're
encrypting data disks and not the OS disk.
$rgName = 'MySecureRg';
$vmName = 'MyExtraSecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-
name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Verify the disks are encrypted: To check on the encryption status of a IaaS VM, use the Get-
AzureRmVmDiskEncryptionStatus cmdlet.
Disable disk encryption: To disable the encryption, use the Disable-AzureRmVMDiskEncryption cmdlet.
Disabling encryption is only allowed on data volumes for Linux VMs.
PARAMETER DESCRIPTION
keyVaultName Name of the key vault that the key should be uploaded to.
You can get it by using the Azure CLI command
az keyvault show --name "MySecureVault" --query
resourceGroup
.
keyEncryptionKeyURL URL of the key encryption key that's used to encrypt the
generated key. This parameter is optional if you select nokek
in the UseExistingKek drop-down list. If you select kek in the
UseExistingKek drop-down list, you must enter the
keyEncryptionKeyURL value.
WARNING
EncryptFormatAll shouldn't be used when there is needed data on a VM's data volumes. You may exclude disks from
encryption by unmounting them. You should first try out the EncryptFormatAll first on a test VM, understand the feature
parameter and its implication before trying it on the production VM. The EncryptFormatAll option formats the data disk and
all the data on it will be lost. Before proceeding, verify that disks you wish to exclude are properly unmounted.
If you’re setting this parameter while updating encryption settings, it might lead to a reboot before the actual encryption. In
this case, you will also want to remove the disk you don’t want formatted from the fstab file. Similarly, you should add the
partition you want encrypt-formatted to the fstab file before initiating the encryption operation.
EncryptFormatAll criteria
The parameter goes though all partitions and encrypts them as long as they meet all of the criteria below:
Is not a root/OS/boot partition
Is not already encrypted
Is not a BEK volume
Is not a RAID volume
Is not a LVM volume
Is mounted
Encrypt the disks that compose the RAID or LVM volume rather than the RAID or LVM volume.
Use the EncryptFormatAll parameter with a template
To use the EncryptFormatAll option, use any pre-existing Azure Resource Manager template that encrypts a Linux
VM and change the EncryptionOperation field for the AzureDiskEncryption resource.
1. As an example, use the Resource Manager template to encrypt a running Linux IaaS VM.
2. Click Deploy to Azure on the Azure quickstart template.
3. Change the EncryptionOperation from EnableEncryption to EnableEncryptionFormatAl
4. Select the subscription, resource group, resource group location, other parameters, legal terms, and agreement.
Click Create to enable encryption on the existing or running IaaS VM.
Use the EncryptFormatAll parameter with a PowerShell cmdlet
Use the Set-AzureRmVMDiskEncryptionExtension cmdlet with the EncryptFormatAll parameter.
Encrypt a running VM using a client secret and EncryptFormatAll: As an example, the script below initializes
your variables and runs the Set-AzureRmVMDiskEncryptionExtension cmdlet with the EncryptFormatAll
parameter. The resource group, VM, key vault, AAD app, and client secret should have already been created as
prerequisites. Replace MySecureRg, MySecureVM, MySecureVault, My-AAD -client-ID, and My-AAD -client-secret
with your values.
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
3. Add to fstab.
echo "/dev/disk/azure/scsi1/lun0 /mnt/mountpoint ext4 defaults,nofail 1 2" >> /etc/fstab
5. Set up LVM on top of these new disks. Note the encrypted drives are unlocked after the VM has finished
booting. So, the LVM mounting will also have to be subsequently delayed.
IMPORTANT
It is mandatory to snapshot and/or backup a managed disk based VM instance outside of, and prior to enabling Azure Disk
Encryption. A snapshot of the managed disk can be taken from the portal, or Azure Backup can be used. Backups ensure
that a recovery option is possible in the case of any unexpected failure during encryption. Once a backup is made, the Set-
AzureRmVMDiskEncryptionExtension cmdlet can be used to encrypt managed disks by specifying the -skipVmBackup
parameter. The Set-AzureRmVMDiskEncryptionExtension command will fail against managed disk based VMs until a backup
has been made and this parameter has been specified.
Encrypting or disabling encryption may cause the VM to reboot.
Use Azure PowerShell to encrypt IaaS VMs with pre -encrypted VHDs
You can enable disk encryption on your encrypted VHD by using the PowerShell cmdlet Set-AzureRmVMOSDisk.
The example below gives you some common parameters.
Use the Resource Manager template to encrypt IaaS VMs with pre -encrypted VHDs
You can enable disk encryption on your encrypted VHD by using the Resource Manager template.
1. On the Azure quickstart template, click Deploy to Azure.
2. Select the subscription, resource group, resource group location, parameters, legal terms, and agreement.
Click Create to enable encryption on the new IaaS VM.
The following table lists the Resource Manager template parameters for your encrypted VHD:
PARAMETER DESCRIPTION
virtualNetworkName Name of the VNet that the VM NIC should belong to. The
name should already have been created in the same resource
group and same location as the VM.
subnetName Name of the subnet on the VNet that the VM NIC should
belong to.
vmSize Size of the VM. Currently, only Standard A, D, and G series are
supported.
keyVaultResourceID The ResourceID that identifies the key vault resource in Azure
Resource Manager. You can get it by using the PowerShell
cmdlet
(Get-AzureRmKeyVault -VaultName
<MyKeyVaultName> -ResourceGroupName
<MyResourceGroupName>).ResourceId
or using the Azure CLI command
az keyvault show --name "MySecureVault" --query id
keyVaultSecretUrl URL of the disk-encryption key that's set up in the key vault.
keyVaultKekUrl URL of the key encryption key for encrypting the generated
disk-encryption key.
$sequenceVersion = [Guid]::NewGuid();
$rgName = 'MySecureRg';
$vmName = 'MySecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Encrypt a running VM using KEK to wrap the client secret: Azure Disk Encryption lets you specify an
existing key in your key vault to wrap disk encryption secrets that were generated while enabling
encryption. When a key encryption key is specified, Azure Disk Encryption uses that key to wrap the
encryption secrets before writing to Key Vault. The -VolumeType parameter is set to data disks and not the
OS disk. If the VM was previously encrypted with a volume type of "OS" or "All", then the -VolumeType
parameter should be changed to All so that both the OS and the new data disk will be included.
$rgName = 'MySecureRg';
$vmName = 'MyExtraSecureVM';
$aadClientID = 'My-AAD-client-ID';
$aadClientSecret = 'My-AAD-client-secret';
$KeyVaultName = 'MySecureVault';
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
$keyEncryptionKeyUrl = (Get-AzureKeyVaultKey -VaultName $KeyVaultName -Name
$keyEncryptionKeyName).Key.kid;
NOTE
The syntax for the value of disk-encryption-keyvault parameter is the full identifier string: /subscriptions/[subscription-id-
guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
The syntax for the value of the key-encryption-key parameter is the full URI to the KEK as in: https://[keyvault-
name].vault.azure.net/keys/[kekname]/[kek-unique-id]
IMPORTANT
Disabling encryption with Azure Disk Encryption on Linux VMs is only supported for data volumes. It is not supported on
data or OS volumes if the OS volume has been encrypted.
Disable disk encryption with Azure PowerShell: To disable the encryption, use the Disable-Azure
RmVMDiskEncryption cmdlet.
Disable encryption with the Azure CLI: To disable encryption, use the az vm encryption disable
command.
Disable encryption with a Resource Manager Template: Use the Disable encryption on a running Linux
VM template to disable encryption.
1. Click Deploy to Azure.
2. Select the subscription, resource group, location, VM, legal terms, and agreement.
3. Click Purchase to disable disk encryption on a running Windows VM.
Next steps
Enable Azure Disk Encryption for Windows
Azure Storage security overview
2/4/2019 • 5 minutes to read • Edit Online
Azure Storage is the cloud storage solution for modern applications that rely on durability, availability, and
scalability to meet the needs of their customers. Azure Storage provides a comprehensive set of security
capabilities. You can:
Secure the storage account by using Role-Based Access Control (RBAC ) and Azure Active Directory.
Secure data in transit between an application and Azure by using client-side encryption, HTTPS, or SMB 3.0.
Set data to be automatically encrypted when it's written to Azure Storage by using Storage Service Encryption.
Set OS and data disks used by virtual machines (VMs) to be encrypted by using Azure Disk Encryption.
Grant delegated access to the data objects in Azure Storage by using shared access signatures (SASs).
Use analytics to track the authentication method that someone is using when they access Storage.
For a more detailed look at security in Azure Storage, see the Azure Storage security guide. This guide provides a
deep dive into the security features of Azure Storage. These features include storage account keys, data encryption
in transit and at rest, and storage analytics.
This article provides an overview of Azure security features that you can use with Azure Storage. Links to articles
give details of each feature so you can learn more.
Encryption in transit
Encryption in transit is a mechanism of protecting data when it's transmitted across networks. With Azure Storage,
you can secure data by using:
Transport-level encryption, such as HTTPS, when you transfer data into or out of Azure Storage.
Wire encryption, such as SMB 3.0 encryption, for Azure file shares.
Client-side encryption, to encrypt the data before it's transferred into Storage and to decrypt the data after it is
transferred out of Storage.
Learn more about client-side encryption:
Client-Side Encryption for Microsoft Azure Storage
Cloud security controls series: Encrypting Data in Transit
Encryption at rest
For many organizations, data encryption at rest is a mandatory step toward data privacy, compliance, and data
sovereignty. Three Azure features provide encryption of data that's at rest:
Storage Service Encryption is always enabled and automatically encrypts storage service data when writing it to
Azure Storage.
Client-side encryption also provides the feature of encryption at rest.
Azure Disk Encryption enables you to encrypt the OS disks and data disks that an IaaS virtual machine uses.
Learn more about Storage Service Encryption:
Azure Storage Service Encryption is available for Azure Blob storage. For details on other Azure storage types,
see Azure Files, Disk (Premium Storage), Table storage, and Queue storage.
Azure Storage Service Encryption for Data at Rest
Azure Storage provides a comprehensive set of security capabilities that together enable developers to build
secure applications:
All data written to Azure Storage is automatically encrypted using Storage Service Encryption (SSE ). For more
information, see Announcing Default Encryption for Azure Blobs, Files, Table and Queue Storage.
Azure Active Directory (Azure AD ) and Role-Based Access Control (RBAC ) are supported for Azure Storage for
both resource management operations and data operations, as follows:
You can assign RBAC roles scoped to the storage account to security principals and use Azure AD to
authorize resource management operations such as key management.
Azure AD integration is supported in preview for data operations on the Blob and Queue services. You
can assign RBAC roles scoped to a subscription, resource group, storage account, or an individual
container or queue to a security principal or a managed identity for Azure resources. For more
information, see Authenticate access to Azure Storage using Azure Active Directory (Preview ).
Data can be secured in transit between an application and Azure by using Client-Side Encryption, HTTPS, or
SMB 3.0.
OS and data disks used by Azure virtual machines can be encrypted using Azure Disk Encryption.
Delegated access to the data objects in Azure Storage can be granted using Shared Access Signatures.
This article provides an overview of each of these security features that can be used with Azure Storage. Links are
provided to articles that will give details of each feature so you can easily do further investigation on each topic.
Here are the topics to be covered in this article:
Management Plane Security – Securing your Storage Account
The management plane consists of the resources used to manage your storage account. This section covers
the Azure Resource Manager deployment model and how to use Role-Based Access Control (RBAC ) to
control access to your storage accounts. It also addresses managing your storage account keys and how to
regenerate them.
Data Plane Security – Securing Access to Your Data
In this section, we'll look at allowing access to the actual data objects in your Storage account, such as blobs,
files, queues, and tables, using Shared Access Signatures and Stored Access Policies. We will cover both
service-level SAS and account-level SAS. We'll also see how to limit access to a specific IP address (or
range of IP addresses), how to limit the protocol used to HTTPS, and how to revoke a Shared Access
Signature without waiting for it to expire.
Encryption in Transit
This section discusses how to secure data when you transfer it into or out of Azure Storage. We'll talk about
the recommended use of HTTPS and the encryption used by SMB 3.0 for Azure file shares. We will also
take a look at Client-side Encryption, which enables you to encrypt the data before it is transferred into
Storage in a client application, and to decrypt the data after it is transferred out of Storage.
Encryption at Rest
We will talk about Storage Service Encryption (SSE ), which is now automatically enabled for new and
existing storage accounts. We will also look at how you can use Azure Disk Encryption and explore the basic
differences and cases of Disk Encryption versus SSE versus Client-Side Encryption. We will briefly look at
FIPS compliance for U.S. Government computers.
Using Storage Analytics to audit access of Azure Storage
This section discusses how to find information in the storage analytics logs for a request. We'll take a look at
real storage analytics log data and see how to discern whether a request is made with the Storage account
key, with a Shared Access signature, or anonymously, and whether it succeeded or failed.
Enabling Browser-Based Clients using CORS
This section talks about how to allow cross-origin resource sharing (CORS ). We'll talk about cross-domain
access, and how to handle it with the CORS capabilities built into Azure Storage.
NOTE
Microsoft recommends using only one of the keys in all of your applications at the same time. If you use Key 1 in some
places and Key 2 in others, you will not be able to rotate your keys without some application losing access.
Resources
Manage storage account settings in the Azure portal
Azure Storage Resource Provider REST API Reference
How the Shared Access Signature is authorized by the Azure Storage Service
When the storage service receives the request, it takes the input query parameters and creates a signature using
the same method as the calling program. It then compares the two signatures. If they agree, then the storage
service can check the storage service version to make sure it's valid, verify that the current date and time are within
the specified window, make sure the access requested corresponds to the request made, etc.
For example, with our URL above, if the URL was pointing to a file instead of a blob, this request would fail
because it specifies that the Shared Access Signature is for a blob. If the REST command being called was to
update a blob, it would fail because the Shared Access Signature specifies that only read access is permitted.
Types of Shared Access Signatures
A service-level SAS can be used to access specific resources in a storage account. Some examples of this are
retrieving a list of blobs in a container, downloading a blob, updating an entity in a table, adding messages to a
queue, or uploading a file to a file share.
An account-level SAS can be used to access anything that a service-level SAS can be used for. Additionally, it
can give options to resources that are not permitted with a service-level SAS, such as the ability to create
containers, tables, queues, and file shares. You can also specify access to multiple services at once. For example,
you might give someone access to both blobs and files in your storage account.
Creating a SAS URI
1. You can create a URI on demand, defining all of the query parameters each time.
This approach is flexible, but if you have a logical set of parameters that are similar each time, using a
Stored Access Policy is a better idea.
2. You can create a Stored Access Policy for an entire container, file share, table, or queue. Then you can use
this as the basis for the SAS URIs you create. Permissions based on Stored Access Policies can be easily
revoked. You can have up to five policies defined on each container, queue, table, or file share.
For example, if you were going to have many people read the blobs in a specific container, you could create
a Stored Access Policy that says "give read access" and any other settings that will be the same each time.
Then you can create an SAS URI using the settings of the Stored Access Policy and specifying the expiration
date/time. The advantage of this is that you don't have to specify all of the query parameters every time.
Revocation
Suppose your SAS has been compromised, or you want to change it because of corporate security or regulatory
compliance requirements. How do you revoke access to a resource using that SAS? It depends on how you
created the SAS URI.
If you are using ad hoc URIs, you have three options. You can issue SAS tokens with short expiration policies and
wait for the SAS to expire. You can rename or delete the resource (assuming the token was scoped to a single
object). You can change the storage account keys. This last option can have a significant impact, depending on how
many services are using that storage account, and probably isn't something you want to do without some
planning.
If you are using a SAS derived from a Stored Access Policy, you can remove access by revoking the Stored Access
Policy – you can just change it so it has already expired, or you can remove it altogether. This takes effect
immediately, and invalidates every SAS created using that Stored Access Policy. Updating or removing the Stored
Access Policy may impact people accessing that specific container, file share, table, or queue via SAS, but if the
clients are written so they request a new SAS when the old one becomes invalid, this will work fine.
Because using a SAS derived from a Stored Access Policy gives you the ability to revoke that SAS immediately, it
is the recommended best practice to always use Stored Access Policies when possible.
Resources
For more detailed information on using Shared Access Signatures and Stored Access Policies, complete with
examples, refer to the following articles:
These are the reference articles.
Service SAS
This article provides examples of using a service-level SAS with blobs, queue messages, table ranges,
and files.
Constructing a service SAS
Constructing an account SAS
These are tutorials for using the .NET client library to create Shared Access Signatures and Stored Access
Policies.
Using Shared Access Signatures (SAS )
Shared Access Signatures, Part 2: Create and Use a SAS with the Blob Service
This article includes an explanation of the SAS model, examples of Shared Access Signatures, and
recommendations for the best practice use of SAS. Also discussed is the revocation of the
permission granted.
Authentication
Authentication for the Azure Storage Services
Shared Access Signatures Getting Started Tutorial
SAS Getting Started Tutorial
Encryption in Transit
Transport-Level Encryption – Using HTTPS
Another step you should take to ensure the security of your Azure Storage data is to encrypt the data between the
client and Azure Storage. The first recommendation is to always use the HTTPS protocol, which ensures secure
communication over the public Internet.
To have a secure communication channel, you should always use HTTPS when calling the REST APIs or accessing
objects in storage. Also, Shared Access Signatures, which can be used to delegate access to Azure Storage
objects, include an option to specify that only the HTTPS protocol can be used when using Shared Access
Signatures, ensuring that anybody sending out links with SAS tokens will use the proper protocol.
You can enforce the use of HTTPS when calling the REST APIs to access objects in storage accounts by enabling
Secure transfer required for the storage account. Connections using HTTP will be refused once this is enabled.
Using encryption during transit with Azure file shares
Azure Files supports encryption via SMB 3.0 and with HTTPS when using the File REST API. When mounting
outside of the Azure region the Azure file share is located in, such as on-premises or in another Azure region, SMB
3.0 with encryption is always required. SMB 2.1 does not support encryption, so by default connections are only
allowed within the same region in Azure, but SMB 3.0 with encryption can be enforced by requiring secure
transfer for the storage account.
SMB 3.0 with encryption is available in all supported Windows and Windows Server operating systems except
Windows 7 and Windows Server 2008 R2, which only support SMB 2.1. SMB 3.0 is also supported on macOS
and on distributions of Linux using Linux kernel 4.11 and above. Encryption support for SMB 3.0 has also been
backported to older versions of the Linux kernel by several Linux distributions, consult Understanding SMB client
requirements.
Using Client-side encryption to secure data that you send to storage
Another option that helps you ensure that your data is secure while being transferred between a client application
and Storage is Client-side Encryption. The data is encrypted before being transferred into Azure Storage. When
retrieving the data from Azure Storage, the data is decrypted after it is received on the client side. Even though the
data is encrypted going across the wire, we recommend that you also use HTTPS, as it has data integrity checks
built in which help mitigate network errors affecting the integrity of the data.
Client-side encryption is also a method for encrypting your data at rest, as the data is stored in its encrypted form.
We'll talk about this in more detail in the section on Encryption at Rest.
Encryption at Rest
There are three Azure features that provide encryption at rest. Azure Disk Encryption is used to encrypt the OS
and data disks in IaaS Virtual Machines. Client-side Encryption and SSE are both used to encrypt data in Azure
Storage.
While you can use Client-side Encryption to encrypt the data in transit (which is also stored in its encrypted form
in Storage), you may prefer to use HTTPS during the transfer, and have some way for the data to be automatically
encrypted when it is stored. There are two ways to do this -- Azure Disk Encryption and SSE. One is used to
directly encrypt the data on OS and data disks used by VMs, and the other is used to encrypt data written to Azure
Blob Storage.
Storage Service Encryption (SSE)
SSE is enabled for all storage accounts and cannot be disabled. SSE automatically encrypts your data when
writing it to Azure Storage. When you read data from Azure Storage, it is decrypted by Azure Storage before being
returned. SSE enables you to secure your data without having to modify code or add code to any applications.
You can use either Microsoft-managed keys or your own custom keys. Microsoft generates managed keys and
handles their secure storage as well as their regular rotation, as defined by internal Microsoft policy. For more
information about using custom keys, see Storage Service Encryption using customer-managed keys in Azure Key
Vault.
SSE automatically encrypts data in all performance tiers (Standard and Premium), all deployment models (Azure
Resource Manager and Classic), and all of the Azure Storage services (Blob, Queue, Table, and File).
Client-side Encryption
We mentioned client-side encryption when discussing the encryption of the data in transit. This feature allows you
to programmatically encrypt your data in a client application before sending it across the wire to be written to
Azure Storage, and to programmatically decrypt your data after retrieving it from Azure Storage.
This does provide encryption in transit, but it also provides the feature of Encryption at Rest. Although the data is
encrypted in transit, we still recommend using HTTPS to take advantage of the built-in data integrity checks that
help mitigate network errors affecting the integrity of the data.
An example of where you might use this is if you have a web application that stores blobs and retrieves blobs, and
you want the application and data to be as secure as possible. In that case, you would use client-side encryption.
The traffic between the client and the Azure Blob Service contains the encrypted resource, and nobody can
interpret the data in transit and reconstitute it into your private blobs.
Client-side encryption is built into the Java and the .NET storage client libraries, which in turn use the Azure Key
Vault APIs, making it easy for you to implement. The process of encrypting and decrypting the data uses the
envelope technique, and stores metadata used by the encryption in each storage object. For example, for blobs, it
stores it in the blob metadata, while for queues, it adds it to each queue message.
For the encryption itself, you can generate and manage your own encryption keys. You can also use keys
generated by the Azure Storage Client Library, or you can have the Azure Key Vault generate the keys. You can
store your encryption keys in your on-premises key storage, or you can store them in an Azure Key Vault. Azure
Key Vault allows you to grant access to the secrets in Azure Key Vault to specific users using Azure Active
Directory. This means that not just anybody can read the Azure Key Vault and retrieve the keys you're using for
client-side encryption.
Resources
Encrypt and decrypt blobs in Microsoft Azure Storage using Azure Key Vault
This article shows how to use client-side encryption with Azure Key Vault, including how to create the KEK
and store it in the vault using PowerShell.
Client-Side Encryption and Azure Key Vault for Microsoft Azure Storage
This article gives an explanation of client-side encryption, and provides examples of using the storage client
library to encrypt and decrypt resources from the four storage services. It also talks about Azure Key Vault.
Using Azure Disk Encryption to encrypt disks used by your virtual machines
Azure Disk Encryption is a new feature. This feature allows you to encrypt the OS disks and Data disks used by an
IaaS Virtual Machine. For Windows, the drives are encrypted using industry-standard BitLocker encryption
technology. For Linux, the disks are encrypted using the DM -Crypt technology. This is integrated with Azure Key
Vault to allow you to control and manage the disk encryption keys.
The solution supports the following scenarios for IaaS VMs when they are enabled in Microsoft Azure:
Integration with Azure Key Vault
Standard tier VMs: A, D, DS, G, GS, and so forth series IaaS VMs
Enabling encryption on Windows and Linux IaaS VMs
Disabling encryption on OS and data drives for Windows IaaS VMs
Disabling encryption on data drives for Linux IaaS VMs
Enabling encryption on IaaS VMs that are running Windows client OS
Enabling encryption on volumes with mount paths
Enabling encryption on Linux VMs that are configured with disk striping (RAID ) by using mdadm
Enabling encryption on Linux VMs by using LVM for data disks
Enabling encryption on Windows VMs that are configured by using storage spaces
All Azure public regions are supported
The solution does not support the following scenarios, features, and technology in the release:
Basic tier IaaS VMs
Disabling encryption on an OS drive for Linux IaaS VMs
IaaS VMs that are created by using the classic VM creation method
Integration with your on-premises Key Management Service
Azure Files (shared file system), Network File System (NFS ), dynamic volumes, and Windows VMs that are
configured with software-based RAID systems
NOTE
Linux OS disk encryption is currently supported on the following Linux distributions: RHEL 7.2, CentOS 7.2n, and Ubuntu
16.04.
This feature ensures that all data on your virtual machine disks is encrypted at rest in Azure Storage.
Resources
Azure Disk Encryption for Windows and Linux IaaS VMs
Comparison of Azure Disk Encryption, SSE, and Client-Side Encryption
IaaS VMs and their VHD files
For data disks used by IaaS VMs, Azure Disk Encryption is recommended. If you create a VM with unmanaged
disks using an image from the Azure Marketplace, Azure performs a shallow copy of the image to your storage
account in Azure Storage, and it is not encrypted even if you have SSE enabled. After it creates the VM and starts
updating the image, SSE will start encrypting the data. For this reason, it's best to use Azure Disk Encryption on
VMs with unmanaged disks created from images in the Azure Marketplace if you want them fully encrypted. If
you create a VM with Managed Disks, SSE encrypts all the data by default using platform managed keys.
If you bring a pre-encrypted VM into Azure from on-premises, you will be able to upload the encryption keys to
Azure Key Vault, and continue using the encryption for that VM that you were using on-premises. Azure Disk
Encryption is enabled to handle this scenario.
If you have non-encrypted VHD from on-premises, you can upload it into the gallery as a custom image and
provision a VM from it. If you do this using the Resource Manager templates, you can ask it to turn on Azure Disk
Encryption when it boots up the VM.
When you add a data disk and mount it on the VM, you can turn on Azure Disk Encryption on that data disk. It will
encrypt that data disk locally first, and then the classic deployment model layer will do a lazy write against storage
so the storage content is encrypted.
Client-side encryption
Client-side encryption is the most secure method of encrypting your data, because it encrypts data prior to transit.
However, it does require that you add code to your applications using storage, which you may not want to do. In
those cases, you can use HTTPS to secure your data in transit. Once data reaches Azure Storage, it is encrypted by
SSE.
With client-side encryption, you can encrypt table entities, queue messages, and blobs.
Client-side encryption is managed entirely by the application. This is the most secure approach, but does require
you to make programmatic changes to your application and put key management processes in place. You would
use this when you want the extra security during transit, and you want your stored data to be encrypted.
Client-side encryption is more load on the client, and you have to account for this in your scalability plans,
especially if you are encrypting and transferring a large amount of data.
Storage Service Encryption (SSE)
SSE is managed by Azure Storage. SSE does not provide for the security of the data in transit, but it does encrypt
the data as it is written to Azure Storage. SSE does not affect Azure Storage performance.
You can encrypt any kind of data of the storage account using SSE (block blobs, append blobs, page blobs, table
data, queue data, and files).
If you have an archive or library of VHD files that you use as a basis for creating new virtual machines, you can
create a new storage account and then upload the VHD files to that account. Those VHD files will be encrypted by
Azure Storage.
If you have Azure Disk Encryption enabled for the disks in a VM, then any newly written data is encrypted both by
SSE and by Azure Disk Encryption.
Storage Analytics
Using Storage Analytics to monitor authorization type
For each storage account, you can enable Azure Storage Analytics to perform logging and store metrics data. This
is a great tool to use when you want to check the performance metrics of a storage account, or need to
troubleshoot a storage account because you are having performance problems.
Another piece of data you can see in the storage analytics logs is the authentication method used by someone
when they access storage. For example, with Blob Storage, you can see if they used a Shared Access Signature or
the storage account keys, or if the blob accessed was public.
This can be helpful if you are tightly guarding access to storage. For example, in Blob Storage you can set all of the
containers to private and implement the use of an SAS service throughout your applications. Then you can check
the logs regularly to see if your blobs are accessed using the storage account keys, which may indicate a breach of
security, or if the blobs are public but they shouldn't be.
What do the logs look like?
After you enable the storage account metrics and logging through the Azure portal, analytics data will start to
accumulate quickly. The logging and metrics for each service is separate; the logging is only written when there is
activity in that storage account, while the metrics will be logged every minute, every hour, or every day, depending
on how you configure it.
The logs are stored in block blobs in a container named $logs in the storage account. This container is
automatically created when Storage Analytics is enabled. Once this container is created, you can't delete it,
although you can delete its contents.
Under the $logs container, there is a folder for each service, and then there are subfolders for the
year/month/day/hour. Under hour, the logs are numbered. This is what the directory structure will look like:
Every request to Azure Storage is logged. Here's a snapshot of a log file, showing the first few fields.
You can see that you can use the logs to track any kind of calls to a storage account.
What are all of those fields for?
There is an article listed in the resources below that provides the list of the many fields in the logs and what they
are used for. Here is the list of fields in order:
We're interested in the entries for GetBlob, and how they are authorized, so we need to look for entries with
operation-type "Get-Blob", and check the request-status (fourth column) and the authorization-type (eighth
column).
For example, in the first few rows in the listing above, the request-status is "Success" and the authorization-type is
"authenticated". This means the request was authorized using the storage account key.
How is access to my blobs being authorized?
We have three cases that we are interested in.
1. The blob is public and it is accessed using a URL without a Shared Access Signature. In this case, the
request-status is "AnonymousSuccess" and the authorization-type is "anonymous".
1.0;2015-11-17T02:01:29.0488963Z;GetBlob;AnonymousSuccess;200;124;37;anonymous;;mystorage…
2. The blob is private and was used with a Shared Access Signature. In this case, the request-status is
"SASSuccess" and the authorization-type is "sas".
1.0;2015-11-16T18:30:05.6556115Z;GetBlob;SASSuccess;200;416;64;sas;;mystorage…
3. The blob is private and the storage key was used to access it. In this case, the request-status is "Success"
and the authorization-type is "authenticated".
1.0;2015-11-16T18:32:24.3174537Z;GetBlob;Success;206;59;22;authenticated;mystorage…
You can use the Microsoft Message Analyzer to view and analyze these logs. It includes search and filter
capabilities. For example, you might want to search for instances of GetBlob to see if the usage is what you expect,
that is, to make sure someone is not accessing your storage account inappropriately.
Resources
Storage Analytics
This article is an overview of storage analytics and how to enable them.
Storage Analytics Log Format
This article illustrates the Storage Analytics Log Format, and details the fields available therein, including
authentication-type, which indicates the type of authentication used for the request.
Monitor a Storage Account in the Azure portal
This article shows how to configure monitoring of metrics and logging for a storage account.
End-to-End Troubleshooting using Azure Storage Metrics and Logging, AzCopy, and Message Analyzer
This article talks about troubleshooting using the Storage Analytics and shows how to use the Microsoft
Message Analyzer.
Microsoft Message Analyzer Operating Guide
This article is the reference for the Microsoft Message Analyzer and includes links to a tutorial, quickstart,
and feature summary.
<Cors>
<CorsRule>
<AllowedOrigins>http://www.contoso.com, http://www.fabrikam.com</AllowedOrigins>
<AllowedMethods>PUT,GET</AllowedMethods>
<AllowedHeaders>x-ms-meta-data*,x-ms-meta-target*,x-ms-meta-abc</AllowedHeaders>
<ExposedHeaders>x-ms-meta-*</ExposedHeaders>
<MaxAgeInSeconds>200</MaxAgeInSeconds>
</CorsRule>
<Cors>
Here's what each row means:
AllowedOrigins This tells which non-matching domains can request and receive data from the storage
service. This says that both contoso.com and fabrikam.com can request data from Blob Storage for a specific
storage account. You can also set this to a wildcard (*) to allow all domains to access requests.
AllowedMethods This is the list of methods (HTTP request verbs) that can be used when making the request.
In this example, only PUT and GET are allowed. You can set this to a wildcard (*) to allow all methods to be
used.
AllowedHeaders This is the request headers that the origin domain can specify when making the request. In
this example, all metadata headers starting with x-ms-meta-data, x-ms-meta-target, and x-ms-meta-abc are
permitted. The wildcard character (*) indicates that any header beginning with the specified prefix is allowed.
ExposedHeaders This tells which response headers should be exposed by the browser to the request issuer. In
this example, any header starting with "x-ms-meta-" will be exposed.
MaxAgeInSeconds This is the maximum amount of time that a browser will cache the preflight OPTIONS
request. (For more information about the preflight request, check the first article below.)
Resources
For more information about CORS and how to enable it, check out these resources.
Cross-Origin Resource Sharing (CORS ) Support for the Azure Storage Services on Azure.com
This article provides an overview of CORS and how to set the rules for the different storage services.
Cross-Origin Resource Sharing (CORS ) Support for the Azure Storage Services on MSDN
This is the reference documentation for CORS support for the Azure Storage Services. This has links to
articles applying to each storage service, and shows an example and explains each element in the CORS file.
Microsoft Azure Storage: Introducing CORS
This is a link to the initial blog article announcing CORS and showing how to use it.
Microsoft Azure runs in datacenters managed and operated by Microsoft. These geographically dispersed
datacenters comply with key industry standards, such as ISO/IEC 27001:2013 and NIST SP 800-53, for security
and reliability. The datacenters are managed, monitored, and administered by Microsoft operations staff. The
operations staff has years of experience in delivering the world’s largest online services with 24 x 7 continuity.
This series of articles provides information about what Microsoft does to secure the Azure infrastructure. The
articles address:
Physical security
Availability
Components and boundaries
Network architecture
Production network
SQL Database
Operations
Monitoring
Integrity
Data protection
You are always responsible for the following, regardless of the type of deployment:
Data
Endpoints
Account
Access management
Be sure that you understand the division of responsibility between you and Microsoft in a SaaS, PaaS, and IaaS
deployment. For more information, see Shared responsibilities for cloud computing.
Next steps
To learn more about what Microsoft does to help secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
Azure facilities, premises, and physical security
7/20/2018 • 5 minutes to read • Edit Online
Azure is composed of a globally distributed datacenter infrastructure, supporting thousands of online services
and spanning more than 100 highly secure facilities worldwide.
The infrastructure is designed to bring applications closer to users around the world, preserving data residency,
and offering comprehensive compliance and resiliency options for customers. Azure has 52 regions worldwide,
and is available in 140 countries.
A region is a set of datacenters that is interconnected via a massive and resilient network. The network includes
content distribution, load balancing, redundancy, and encryption by default. With more global regions than any
other cloud provider, Azure gives you the flexibility to deploy applications where you need them.
Azure regions are organized into geographies. An Azure geography ensures that data residency, sovereignty,
compliance, and resiliency requirements are honored within geographical boundaries.
Geographies allow customers with specific data-residency and compliance needs to keep their data and
applications close. Geographies are fault-tolerant to withstand complete region failure, through their connection
to the dedicated, high-capacity networking infrastructure.
Availability zones are physically separate locations within an Azure region. Each availability zone is made up of
one or more datacenters equipped with independent power, cooling, and networking. Availability zones allow you
to run mission-critical applications with high availability and low -latency replication.
The following figure shows how the Azure global infrastructure pairs region and availability zones within the
same data residency boundary for high availability, disaster recovery, and backup.
Geographically distributed datacenters enables Microsoft to be close to customers, to reduce network latency and
allow for geo-redundant backup and failover.
Physical security
Microsoft designs, builds, and operates datacenters in a way that strictly controls physical access to the areas
where your data is stored. Microsoft understands the importance of protecting your data, and is committed to
helping secure the datacenters that contain your data. We have an entire division at Microsoft devoted to
designing, building, and operating the physical facilities supporting Azure. This team is invested in maintaining
state-of-the-art physical security.
Microsoft takes a layered approach to physical security, to reduce the risk of unauthorized users gaining physical
access to data and the datacenter resources. Datacenters managed by Microsoft have extensive layers of
protection: access approval at the facility’s perimeter, at the building’s perimeter, inside the building, and on the
datacenter floor. Layers of physical security are:
Access request and approval. You must request access prior to arriving at the datacenter. You're
required to provide a valid business justification for your visit, such as compliance or auditing purposes. All
requests are approved on a need-to-access basis by Microsoft employees. A need-to-access basis helps
keep the number of individuals needed to complete a task in the datacenters to the bare minimum. After
Microsoft grants permission, an individual only has access to the discrete area of the datacenter required,
based on the approved business justification. Permissions are limited to a certain period of time, and then
expire.
Facility’s perimeter. When you arrive at a datacenter, you're required to go through a well-defined access
point. Typically, tall fences made of steel and concrete encompass every inch of the perimeter. There are
cameras around the datacenters, with a security team monitoring their videos at all times.
Building entrance. The datacenter entrance is staffed with professional security officers who have
undergone rigorous training and background checks. These security officers also routinely patrol the
datacenter, and monitor the videos of cameras inside the datacenter at all times.
Inside the building. After you enter the building, you must pass two-factor authentication with
biometrics to continue moving through the datacenter. If your identity is validated, you can enter only the
portion of the datacenter that you have approved access to. You can stay there only for the duration of the
time approved.
Datacenter floor. You are only allowed onto the floor that you're approved to enter. You are required to
pass a full body metal detection screening. To reduce the risk of unauthorized data entering or leaving the
datacenter without our knowledge, only approved devices can make their way into the datacenter floor.
Additionally, video cameras monitor the front and back of every server rack. When you exit the datacenter
floor, you again must pass through full body metal detection screening. To leave the datacenter, you're
required to pass through an additional security scan.
Microsoft requires visitors to surrender badges upon departure from any Microsoft facility.
Equipment disposal
Upon a system's end-of-life, Microsoft operational personnel follow rigorous data handling and hardware
disposal procedures to assure that hardware containing your data is not made available to untrusted parties. We
use a secure erase approach for hard drives that support it. For hard drives that can’t be wiped, we use a
destruction process that destroys the drive and renders the recovery of information impossible. This destruction
process can be to disintegrate, shred, pulverize, or incinerate. We determine the means of disposal according to
the asset type. We retain records of the destruction. All Azure services use approved media storage and disposal
management services.
Compliance
We design and manage the Azure infrastructure to meet a broad set of international and industry-specific
compliance standards, such as ISO 27001, HIPAA, FedRAMP, SOC 1, and SOC 2. We also meet country-specific
standards, including Australia IRAP, UK G -Cloud, and Singapore MTCS. Rigorous third-party audits, such as
those done by the British Standards Institute, verify adherence to the strict security controls these standards
mandate.
For a full list of compliance standards that Azure adheres to, see the Compliance offerings.
Next steps
To learn more about what Microsoft does to help secure the Azure infrastructure, see:
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
Azure infrastructure availability
7/20/2018 • 2 minutes to read • Edit Online
Azure provides robust availability, based on extensive redundancy achieved with virtualization technology. Azure
provides numerous levels of redundancy to provide maximum availability of customers’ data.
Disaster recovery
Azure keeps your data durable in two locations. You can choose the location of the backup site. In both locations,
Azure constantly maintains three healthy replicas of your data.
Database availability
Azure ensures that a database is internet accessible through an internet gateway with sustained database
availability. Monitoring assesses the health and state of the active databases at five-minute time intervals.
Storage availability
Azure delivers storage through a highly scalable and durable storage service, which provides connectivity
endpoints. This means that an application can access the storage service directly. The storage service processes
incoming storage requests efficiently, with transactional integrity.
Next steps
To learn more about what Microsoft does to help secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
Azure information system components and
boundaries
7/20/2018 • 8 minutes to read • Edit Online
This article provides a general description of the Azure architecture and management. The Azure system
environment is made up of the following networks:
Microsoft Azure production network (Azure network)
Microsoft corporate network (corpnet)
Separate IT teams are responsible for operations and maintenance of these networks.
Azure architecture
Azure is a cloud computing platform and infrastructure for building, deploying, and managing applications and
services through a network of datacenters. Microsoft manages these datacenters. Based on the number of
resources you specify, Azure creates virtual machines (VMs) based on resource need. These VMs run on an
Azure hypervisor, which is designed for use in the cloud and is not accessible to the public.
On each Azure physical server node, there is a hypervisor that runs directly over the hardware. The hypervisor
divides a node into a variable number of guest VMs. Each node also has one root VM, which runs the host
operating system. Windows Firewall is enabled on each VM. You define which ports are addressable by
configuring the service definition file. These ports are the only ones open and addressable, internally or
externally. All traffic and access to the disk and network is mediated by the hypervisor and root operating system.
At the host layer, Azure VMs run a customized and hardened version of the latest Windows Server. Azure uses a
version of Windows Server that includes only those components necessary to host VMs. This improves
performance and reduces attack surface. Machine boundaries are enforced by the hypervisor, which doesn’t
depend on the operating system security.
Azure management by fabric controllers
In Azure, VMs running on physical servers (blades/nodes) are grouped into clusters of about 1000. The VMs are
independently managed by a scaled-out and redundant platform software component called the fabric controller
(FC ).
Each FC manages the lifecycle of applications running in its cluster, and provisions and monitors the health of the
hardware under its control. It runs autonomic operations, such as reincarnating VM instances on healthy servers
when it determines that a server has failed. The FC also performs application-management operations, such as
deploying, updating, and scaling out applications.
The datacenter is divided into clusters. Clusters isolate faults at the FC level, and prevent certain classes of errors
from affecting servers beyond the cluster in which they occur. FCs that serve a particular Azure cluster are
grouped into an FC cluster.
Hardware inventory
The FC prepares an inventory of Azure hardware and network devices during the bootstrap configuration
process. Any new hardware and network components entering the Azure production environment must follow
the bootstrap configuration process. The FC is responsible for managing the entire inventory listed in the
datacenter.xml configuration file.
FC -managed operating system images
The operating system team provides images, in the form of Virtual Hard Disks, deployed on all host and guest
VMs in the Azure production environment. The team constructs these base images through an automated offline
build process. The base image is a version of the operating system in which the kernel and other core
components have been modified and optimized to support the Azure environment.
There are three types of fabric-managed operating system images:
Host: A customized operating system that runs on host VMs.
Native: A native operating system that runs on tenants (for example, Azure Storage). This operating system
does not have any hypervisor.
Guest: A guest operating system that runs on guest VMs.
The host and native FC -managed operating systems are designed for use in the cloud, and are not publicly
accessible.
Host and native operating systems
Host and native are hardened operating system images that host the fabric agents, and run on a compute node
(runs as first VM on the node) and storage nodes. The benefit of using optimized base images of host and native
is that it reduces the surface area exposed by APIs or unused components. These can present high security risks
and increase the footprint of the operating system. Reduced-footprint operating systems only include the
components necessary to Azure.
Guest operating system
Azure internal components running on guest operating system VMs have no opportunity to run Remote
Desktop Protocol. Any changes to baseline configuration settings must go through the change and release
management process.
Azure datacenters
The Microsoft Cloud Infrastructure and Operations (MCIO ) team manages the physical infrastructure and
datacenter facilities for all Microsoft online services. MCIO is primarily responsible for managing the physical
and environmental controls within the datacenters, as well as managing and supporting outer perimeter network
devices (such as edge routers and datacenter routers). MCIO is also responsible for setting up the bare minimum
server hardware on racks in the datacenter. Customers have no direct interaction with Azure.
AUTHORIZED
PRIVILEGES AND
INTERNAL OR FUNCTIONS
ROLE EX TERNAL SENSITIVITY LEVEL PERFORMED ACCESS TYPE
Azure deployment Internal Access to customer Deploy and upgrade Just-in-time access to
engineers data platform the environment,
components, with limited
software, and persistent access to
scheduled non-customer
configuration systems.
changes in support of
Azure.
Azure customer Internal Access to customer Debug and diagnose Just-in-time access to
outage support data platform outages and the environment,
(tenant) faults for individual with limited
compute tenants and persistent access to
Azure accounts. non-customer
Analyze faults. Drive systems.
critical fixes to the
platform or customer,
and drive technical
improvements across
support.
Azure live site Internal Access to customer Diagnose and Just-in-time access to
engineers data mitigate platform the environment,
(monitoring health by using with limited
engineers) and diagnostic tools. persistent access to
incident Drive fixes for volume non-customer
drivers, repair items systems.
resulting from
outages, and assist
outage restoration
actions.
Azure uses unique identifiers to authenticate organizational users and customers (or processes acting on behalf
of organizational users). This applies to all assets and devices that are part of the Azure environment.
Azure internal authentication
Communications between Azure internal components are protected with TLS encryption. In most cases, the
X.509 certificates are self-signed. Certificates with connections that can be accessed from outside the Azure
network are an exception, as are certificates for the FCs. FCs have certificates issued by a Microsoft Certificate of
Authority (CA) that is backed by a trusted root CA. This allows FC public keys to be rolled over easily.
Additionally, Microsoft developer tools use FC public keys. When developers submit new application images, the
images are encrypted with an FC public key in order to protect any embedded secrets.
Azure hardware device authentication
The FC maintains a set of credentials (keys and/or passwords) used to authenticate itself to various hardware
devices under its control. Microsoft uses a system to prevent access to these credentials. Specifically, the
transport, persistence, and use of these credentials is designed to prevent Azure developers, administrators, and
backup services and personnel access to sensitive, confidential, or private information.
Microsoft uses encryption based on the FC’s master identity public key. This occurs at FC setup and FC
reconfiguration times, to transfer the credentials used to access networking hardware devices. When the FC
needs the credentials, the FC retrieves and decrypts them.
Network devices
The Azure networking team configures network service accounts to enable an Azure client to authenticate to
network devices (routers, switches, and load balancers).
Next steps
To learn more about what Microsoft does to help secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure network architecture
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
Azure network architecture
8/3/2018 • 6 minutes to read • Edit Online
The Azure network architecture follows a modified version of the industry standard core/distribution/access
model, with distinct hardware layers. The layers include:
Core (datacenter routers)
Distribution (access routers and L2 aggregation). The distribution layer separates L3 routing from L2
switching.
Access (L2 host switches)
The network architecture has two levels of layer 2 switches. One layer aggregates traffic from the other layer. The
second layer loops to incorporate redundancy. This provides a more flexible VLAN footprint, and improves port
scaling. The architecture keeps L2 and L3 distinct, which allows the use of hardware in each of the distinct layers
in the network, and minimizes fault in one layer from affecting the other layer(s). The use of trunks allows for
resource sharing, such as the connectivity to the L3 infrastructure.
Network configuration
The network architecture of an Azure cluster within a datacenter consists of the following devices:
Routers (datacenter, access router, and border leaf routers)
Switches (aggregation and top-of-rack switches)
Digi CMs
Power distribution units
Azure has two separate architectures. Some existing Azure customers and shared services reside on the default
LAN architecture (DLA), whereas new regions and virtual customers reside on Quantum 10 (Q10) architecture.
The DLA architecture is a traditional tree design, with active/passive access routers and security access control
lists (ACLs) applied to the access routers. The Quantum 10 architecture is a Close/mesh design of routers, where
ACLs are not applied at the routers. Instead, ACLs are applied below the routing, through Software Load
Balancing (SLB ) or software defined VLANs.
The following diagram provides a high-level overview of the network architecture within an Azure cluster:
Quantum 10 devices
The Quantum 10 design conducts layer 3 switching spread over multiple devices in a Clos/mesh design. The
advantages of the Q10 design include larger capability and greater ability to scale existing network infrastructure.
The design employs border leaf routers, spine switches, and top-of-rack routers to pass traffic to clusters across
multiple routes, allowing for fault tolerance. Software load balancing, instead of hardware devices, handles
security services such as network address translation.
Access routers
The distribution/access L3 routers (ARs) perform the primary routing functionality for the distribution and
access layers. These devices are deployed as a pair, and are the default gateway for subnets. Each AR pair can
support multiple L2 aggregation switch pairs, depending on capacity. The maximum number depends on the
capacity of the device, as well as failure domains. A typical number is three L2 aggregation switch pairs per AR
pair.
L2 aggregation switches
These devices serve as an aggregation point for L2 traffic. They are the distribution layer for the L2 fabric, and
can handle large amounts of traffic. Because these devices aggregate traffic, they require 802.1q functionality,
and high bandwidth technologies such as port aggregation and 10GE.
L2 host switches
Hosts connect directly to these switches. They can be rack mounted switches, or chassis deployments. The 802.1q
standard allows for the designation of one VLAN as a native VLAN, treating that VLAN as normal (untagged)
Ethernet framing. Under normal circumstances, frames on the native VLAN are transmitted and received
untagged on an 802.1q trunk port. This feature was designed for migration to 802.1q and compatibility with
non-802.1q capable devices. In this architecture, only the network infrastructure uses the native VLAN.
This architecture specifies a standard for native VLAN selection. The standard ensures, where possible, that the
AR devices have a unique, native VLAN for every trunk and the L2Aggregation to L2Aggregation trunks. The
L2Aggregation to L2Host Switch trunks have a non-default native VLAN.
Link aggregation (802.3ad)
Link aggregation allows multiple individual links to be bundled together, and treated as a single logical link. To
facilitate operational debugging, the number used to designate port-channel interfaces should be standardized.
The rest of the network uses the same number at both ends of a port-channel.
The numbers specified for the L2Agg to L2Host switch are the port-channel numbers used on the L2Agg side.
Because the range of numbers is more limited at the L2Host side, the standard is to use numbers 1 and 2 at the
L2Host side. These refer to the port-channel going to the “a” side and the “b” side, respectively.
VLANs
The network architecture uses VLANs to group servers together into a single broadcast domain. VLAN numbers
conform to 802.1q standards, which supports VLANs numbered 1–4094.
Customer VLANs
You have various VLAN implementation options you can deploy through the Azure portal to meet the separation
and architecture needs of your solution. You deploy these solutions through virtual machines. For customer
reference architecture examples, see Azure reference architectures.
Edge architecture
Azure datacenters are built upon highly redundant and well-provisioned network infrastructures. Microsoft
implements networks within the Azure datacenters with “need plus one” (N+1) redundancy architectures or
better. Full failover features within and between datacenters help to ensure network and service availability.
Externally, datacenters are served by dedicated, high-bandwidth network circuits. These circuits redundantly
connect properties with over 1200 internet service providers globally at multiple peering points. This provides in
excess of 2,000 Gbps of potential edge capacity across the network.
Filtering routers at the edge and access layer of the Azure network provide well-established security at the packet
level. This helps to prevent unauthorized attempts to connect to Azure. The routers help to ensure that the actual
contents of the packets contain data in the expected format, and conform to the expected client/server
communication scheme. Azure implements a tiered architecture, consisting of the following network segregation
and access control components:
Edge routers. These segregate the application environment from the internet. Edge routers are designed to
provide anti-spoof protection and limit access by using ACLs.
Distribution (access) routers. These allow only Microsoft approved IP addresses, provide anti-spoofing,
and establish connections by using ACLs.
A10 DDOS mitigation architecture
Denial of service attacks continue to present a real threat to the reliability of online services. As attacks become
more targeted and sophisticated, and as the services Microsoft provides become more geographically diverse,
identifying and minimizing the impact of these attacks is a high priority. The following details explain how the
A10 DDOS mitigation system is implemented from a network architecture perspective.
Azure uses A10 network devices at the datacenter router (DCR ) that provide automated detection and
mitigation. The A10 solution uses Azure Network Monitoring to sample flow packets and determine if there is an
attack. If the attack is detected, A10 devices scrub to mitigate attacks. Only then is clean traffic is allowed into the
Azure datacenter directly from the DCR. Microsoft uses the A10 solution to protect the Azure network
infrastructure.
DDoS protections in the A10 solution include:
UDP IPv4 and IPv6 flood protection
ICMP IPv4 and IPv6 flood protection
TCP IPv4 and IPv6 flood protection
TCP SYN attack protection for IPv4 and IPv6
Fragmentation attack
NOTE
Microsoft provides DDoS protection by default for all Azure customers.
Next steps
To learn more about what Microsoft does to help secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
The Azure production network
7/17/2018 • 7 minutes to read • Edit Online
The users of the Azure production network include both external customers who access their own Azure
applications and internal Azure support personnel who manage the production network. This article discusses
the security access methods and protection mechanisms for establishing connections to the Azure production
network.
Next steps
To learn more about what Microsoft does to secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
Azure SQL Database security features
7/20/2018 • 6 minutes to read • Edit Online
Azure SQL Database provides a relational database service in Azure. To protect customer data and provide
strong security features that customers expect from a relational database service, SQL Database has its own sets
of security capabilities. These capabilities build upon the controls that are inherited from Azure.
Security capabilities
Usage of the TDS protocol
Azure SQL Database supports only the tabular data stream (TDS ) protocol, which requires the database to be
accessible over only the default port of TCP/1433.
Azure SQL Database firewall
To help protect customer data, Azure SQL Database includes a firewall functionality, which by default prevents
all access to the SQL Database server, as shown below.
The gateway firewall can limit addresses, which allows customers granular control to specify ranges of
acceptable IP addresses. The firewall grants access based on the originating IP address of each request.
Customers can achieve firewall configuration by using a management portal or programmatically using the
Azure SQL Database Management REST API. The Azure SQL Database gateway firewall by default prevents all
customer TDS access to Azure SQL database instances. Customers must configure access by using access-
control lists (ACLs) to permit Azure SQL Database connections by source and destination internet addresses,
protocols, and port numbers.
DoSGuard
Denial of service (DoS ) attacks are reduced by a SQL Database gateway service called DoSGuard. DoSGuard
actively tracks failed logins from IP addresses. If there are multiple failed logins from a specific IP address within
a period of time, the IP address is blocked from accessing any resources in the service for a pre-defined time
period.
In addition, the Azure SQL Database gateway performs:
Secure channel capability negotiations to implement TDS FIPS 140-2 validated encrypted connections when
it connects to the database servers.
Stateful TDS packet inspection while it accepts connections from clients. The gateway validates the
connection information and passes on the TDS packets to the appropriate physical server based on the
database name that's specified in the connection string.
The overarching principle for network security of the Azure SQL Database offering is to allow only the
connection and communication that is necessary to allow the service to operate. All other ports, protocols, and
connections are blocked by default. Virtual local area networks (VLANs) and ACLs are used to restrict network
communications by source and destination networks, protocols, and port numbers.
Mechanisms that are approved to implement network-based ACLs include ACLs on routers and load balancers.
These mechanisms are managed by Azure networking, guest VM firewall, and Azure SQL Database gateway
firewall rules, which are configured by the customer.
Next steps
To learn more about what Microsoft does to secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
Azure production operations and management
7/20/2018 • 3 minutes to read • Edit Online
The management and operation of the Azure production network is a coordinated effort between the operations
teams of Azure and Azure SQL Database. The teams use several system and application performance-
monitoring tools in the environment. And they use appropriate tools to monitor network devices, servers,
services, and application processes.
To ensure the secure execution of services running in the Azure environment, the operations teams implement
multiple levels of monitoring, logging, and reporting, including the following actions:
Primarily, the Microsoft Monitoring Agent (MMA) gathers monitoring and diagnostic log information
from many places, including the fabric controller (FC ) and the root operating system (OS ), and writes it to
log files. The agent eventually pushes a digested subset of the information into a pre-configured Azure
storage account. In addition, the freestanding monitoring and diagnostic service reads various monitoring
and diagnostic log data and summarizes the information. The monitoring and diagnostic service writes
the information to an integrated log. Azure uses the custom-built Azure security monitoring, which is an
extension to the Azure monitoring system. It has components that observe, analyze, and report on
security-pertinent events from various points in the platform.
The Azure SQL Database Windows Fabric platform provides management, deployment, development,
and operational oversight services for Azure SQL Database. The platform offers distributed, multi-step
deployment services, health monitoring, automatic repairs, and service version compliance. It provides
the following services:
Service modeling capabilities with high-fidelity development environment (datacenter clusters are
expensive and scarce).
One-click deployment and upgrade workflows for service bootstrap and maintenance.
Health reporting with automated repair workflows to enable self-healing.
Real time monitoring, alerting, and debugging facilities across the nodes of a distributed system.
Centralized collection of operational data and metrics for distributed root cause analysis and service
insight.
Operational tooling for deployment, change management, and monitoring.
The Azure SQL Database Windows Fabric platform and watchdog scripts run continuously and
monitor in real time.
If any anomalies occur, the incident response process followed by the Azure incident triage team is activated. The
appropriate Azure support personnel are notified to respond to the incident. Issue tracking and resolution are
documented and managed in a centralized ticketing system. System uptime metrics are available under the non-
disclosure agreement (NDA) and upon request.
Next steps
To learn more about what Microsoft does to secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure SQL Database security features
Azure infrastructure monitoring
Azure infrastructure integrity
Azure customer data protection
Azure infrastructure monitoring
7/20/2018 • 2 minutes to read • Edit Online
Vulnerability management
Security update management helps protect systems from known vulnerabilities. Azure uses integrated
deployment systems to manage the distribution and installation of security updates for Microsoft software.
Azure is also able to draw on the resources of the Microsoft Security Response Center (MSRC ). The MSRC
identifies, monitors, responds to, and resolves security incidents and cloud vulnerabilities around the clock, every
day of the year.
Vulnerability scanning
Vulnerability scanning is performed on server operating systems, databases, and network devices. The
vulnerability scans are performed on a quarterly basis at minimum. Azure contracts with independent assessors
to perform penetration testing of the Azure boundary. Red-team exercises are also routinely performed and the
results are used to make security improvements.
Protective monitoring
Azure security has defined requirements for active monitoring. Service teams configure active monitoring tools
in accordance with these requirements. Active monitoring tools include the Microsoft Monitoring Agent (MMA)
and System Center Operations Manager. These tools are configured to provide time alerts to Azure security
personnel in situations that require immediate action.
Incident management
Microsoft implements a security incident management process to facilitate a coordinated response to incidents,
should one occur.
If Microsoft becomes aware of unauthorized access to customer data that's stored on its equipment or in its
facilities, or it becomes aware of unauthorized access to such equipment or facilities resulting in loss, disclosure,
or alteration of customer data, Microsoft takes the following actions:
Promptly notifies the customer of the security incident.
Promptly investigates the security incident and provides customers detailed information about the security
incident.
Takes reasonable and prompt steps to mitigate the effects and minimize any damage resulting from the
security incident.
An incident management framework has been established that defines roles and allocates responsibilities. The
Azure security incident management team is responsible for managing security incidents, including escalation,
and ensuring the involvement of specialist teams when necessary. Azure operations managers are responsible
for overseeing the investigation and resolution of security and privacy incidents.
Next steps
To learn more about what Microsoft does to secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure integrity
Azure customer data protection
Azure infrastructure integrity
7/20/2018 • 3 minutes to read • Edit Online
Software installation
All components in the software stack that are installed in the Azure environment are custom built following the
Microsoft Security Development Lifecycle (SDL ) process. All software components, including operating system
(OS ) images and SQL Database, are deployed as part of the change management and release management
process. The OS that runs on all nodes is a customized version of Windows Server 2008 or Windows Server
2012. The exact version is chosen by the fabric controller (FC ) according to the role it intends for the OS to play.
In addition, the host OS does not allow installation of any unauthorized software components.
Some Azure components are deployed as Azure customers on a guest VM running on a guest OS.
Web protocols
Role instance monitoring and restart
Azure ensures that all deployed, running roles (internet-facing web, or back-end processing worker roles) are
subject to sustained health monitoring to ensure that they effectively and efficiently deliver the services for
which they’ve been provisioned. If a role becomes unhealthy, by either a critical fault in the application that's
being hosted or an underlying configuration problem within the role instance itself, the FC detects the problem
within the role instance and initiates a corrective state.
Compute connectivity
Azure ensures that the deployed application or service is reachable via standard web-based protocols. Virtual
instances of internet-facing web roles have external internet connectivity and are reachable directly by web
users. To protect the sensitivity and integrity of the operations that worker roles perform on behalf of the
publicly-accessible web role virtual instances, virtual instances of back-end processing worker roles have
external internet connectivity but cannot be accessed directly by external web users.
Next steps
To learn more about what Microsoft does to secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure customer data protection
Azure customer data protection
7/20/2018 • 4 minutes to read • Edit Online
Access to customer data by Microsoft operations and support personnel is denied by default. When access to
customer data is granted, leadership approval is required and then access is carefully managed and logged. The
access-control requirements are established by the following Azure Security Policy:
No access to customer data, by default.
No user or administrator accounts on customer virtual machines (VMs).
Grant the least privilege that's required to complete task; audit and log access requests.
Azure support personnel are assigned unique corporate Active Directory accounts by Microsoft. Azure relies on
Microsoft corporate Active Directory, managed by Microsoft Information Technology (MSIT), to control access
to key information systems. Multi-factor authentication is required, and access is granted only from secure
consoles.
All access attempts are monitored and can be displayed via a basic set of reports.
Data protection
Azure provides customers with strong data security, both by default and as customer options.
Data segregation: Azure is a multi-tenant service, which means that multiple customer deployments and VMs
are stored on the same physical hardware. Azure uses logical isolation to segregate each customer’s data from
the data of others. Segregation provides the scale and economic benefits of multi-tenant services while
rigorously preventing customers from accessing one another’s data.
At-rest data protection: Customers are responsible for ensuring that data stored in Azure is encrypted in
accordance with their standards. Azure offers a wide range of encryption capabilities, giving customers the
flexibility to choose the solution that best meets their needs. Azure Key Vault helps customers easily maintain
control of keys that are used by cloud applications and services to encrypt data. Azure Disk Encryption enables
customers to encrypt VMs. Azure Storage Service Encryption makes it possible to encrypt all data that's placed
into a customer's storage account.
In-transit data protection: Customers can enable encryption for traffic between their own VMs and end users.
Azure protects data in transit to or from outside components and data in transit internally, such as between two
virtual networks. Azure uses the industry-standard Transport Layer Security (TLS ) 1.2 or later protocol with
2,048-bit RSA/SHA256 encryption keys, as recommended by CESG/NCSC, to encrypt communications
between:
The customer and the cloud.
Internally between Azure systems and datacenters.
Encryption: Encryption of data in storage and in transit can be deployed by customers as a best practice for
ensuring confidentiality and integrity of data. It is straightforward for customers to configure their Azure cloud
services to use SSL to protect communications from the internet and even between their Azure-hosted VMs.
Data redundancy: Microsoft helps ensure that data is protected if there is a cyberattack or physical damage to
a datacenter. Customers may opt for:
In-country storage for compliance or latency considerations.
Out-of-country storage for security or disaster recovery purposes.
Data can be replicated within a selected geographic area for redundancy but cannot be transmitted outside it.
Customers have multiple options for replicating data, including the number of copies and the number and
location of replication datacenters.
When you create your storage account, select one of the following replication options:
Locally redundant storage (LRS ): Locally redundant storage maintains three copies of your data. LRS is
replicated three times within a single facility in a single region. LRS protects your data from normal hardware
failures, but not from a failure of a single facility.
Zone-redundant storage (ZRS ): Zone-redundant storage maintains three copies of your data. ZRS is
replicated three times across two to three facilities to provide higher durability than LRS. Replication occurs
within a single region or across two regions. ZRS helps ensure that your data is durable within a single
region.
Geo-redundant storage (GRS ): Geo-redundant storage is enabled for your storage account by default
when you create it. GRS maintains six copies of your data. With GRS, your data is replicated three times
within the primary region. Your data is also replicated three times in a secondary region hundreds of miles
away from the primary region, providing the highest level of durability. In the event of a failure at the
primary region, Azure Storage fails over to the secondary region. GRS helps ensure that your data is durable
in two separate regions.
Data destruction: When customers delete data or leave Azure, Microsoft follows strict standards for
overwriting storage resources before their reuse, as well as the physical destruction of decommissioned
hardware. Microsoft executes a complete deletion of data on customer request and on contract termination.
Records management
Azure has established internal records-retention requirements for back-end data. Customers are responsible for
identifying their own record retention requirements. For records that are stored in Azure, customers are
responsible for extracting their data and retaining their content outside of Azure for a customer-specified
retention period.
Azure allows customers to export data and audit reports from the product. The exports are saved locally to
retain the information for a customer-defined retention time period.
Next steps
To learn more about what Microsoft does to secure the Azure infrastructure, see:
Azure facilities, premises, and physical security
Azure infrastructure availability
Azure information system components and boundaries
Azure network architecture
Azure production network
Azure SQL Database security features
Azure production operations and management
Azure infrastructure monitoring
Azure infrastructure integrity
Microsoft Antimalware for Azure Cloud Services and
Virtual Machines
11/7/2018 • 10 minutes to read • Edit Online
Microsoft Antimalware for Azure is a free real-time protection that helps identify and remove viruses, spyware,
and other malicious software. It generates alerts when known malicious or unwanted software tries to install itself
or run on your Azure systems.
The solution is built on the same antimalware platform as Microsoft Security Essentials [MSE ], Microsoft Forefront
Endpoint Protection, Microsoft System Center Endpoint Protection, Windows Intune, and Windows Defender.
Microsoft Antimalware for Azure is a single-agent solution for applications and tenant environments, designed to
run in the background without human intervention. Protection may be deployed based on the needs of application
workloads, with either basic secure-by-default or advanced custom configuration, including antimalware
monitoring.
When you deploy and enable Microsoft Antimalware for Azure for your applications, the following core features
are available:
Real-time protection - monitors activity in Cloud Services and on Virtual Machines to detect and block
malware execution.
Scheduled scanning - Scans periodically to detect malware, including actively running programs.
Malware remediation - automatically takes action on detected malware, such as deleting or quarantining
malicious files and cleaning up malicious registry entries.
Signature updates - automatically installs the latest protection signatures (virus definitions) to ensure
protection is up-to-date on a pre-determined frequency.
Antimalware Engine updates – automatically updates the Microsoft Antimalware engine.
Antimalware Platform updates – automatically updates the Microsoft Antimalware platform.
Active protection - reports telemetry metadata about detected threats and suspicious resources to Microsoft
Azure to ensure rapid response to the evolving threat landscape, as well as enabling real-time synchronous
signature delivery through the Microsoft Active Protection System (MAPS ).
Samples reporting - provides and reports samples to the Microsoft Antimalware service to help refine the
service and enable troubleshooting.
Exclusions – allows application and service administrators to configure exclusions for files, processes, and
drives.
Antimalware event collection - records the antimalware service health, suspicious activities, and remediation
actions taken in the operating system event log and collects them into the customer’s Azure Storage account.
NOTE
Microsoft Antimalware can also be deployed using Azure Security Center. Read Install Endpoint Protection in Azure Security
Center for more information.
Architecture
Microsoft Antimalware for Azure includes the Microsoft Antimalware Client and Service, Antimalware classic
deployment model, Antimalware PowerShell cmdlets, and Azure Diagnostics Extension. Microsoft Antimalware is
supported on Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2 operating system
families. It is not supported on the Windows Server 2008 operating system, and also is not supported in Linux.
The Microsoft Antimalware Client and Service is installed by default in a disabled state in all supported Azure
guest operating system families in the Cloud Services platform. The Microsoft Antimalware Client and Service is
not installed by default in the Virtual Machines platform and is available as an optional feature through the Azure
portal and Visual Studio Virtual Machine configuration under Security Extensions.
When using Azure App Service, the underlying service that hosts the web app has Microsoft Antimalware enabled
on it. This is used to protect Azure App Service infrastructure and does not run on customer content.
NOTE
Windows Defender is the built-in Antimalware enabled in Windows Server 2016. The Windows Defender Interface is also
enabled by default on some Windows Server 2016 SKU's see here for more information. The Azure VM Antimalware
extension can still be added to a Windows Server 2016 Azure VM with Windows Defender, but in this scenario the extension
will apply any optional configuration policies to be used by Windows Defender, the extension will not deploy any additional
antimalware services. You can read more about this update here.
NOTE
By default the Microsoft Antimalware User Interface on Azure Resource Manager is disabled, cleanuppolicy.xml file to bypass
this error message is not supported. For information on how to create a custom policy, read Enabling Microsoft Antimalware
User Interface on Azure Resource Manager VMs Post Deployment.
The following table summarizes the configuration settings available for the Antimalware service. The default
configuration settings are marked under the column labeled “Default” below.
Antimalware Deployment Scenarios
The scenarios to enable and configure antimalware, including monitoring for Azure Cloud Services and Virtual
Machines, are discussed in this section.
Virtual machines - enable and configure antimalware
Deployment While creating a VM using the Azure portal
To enable and configure Microsoft Antimalware for Azure Virtual Machines using the Azure portal while
provisioning a Virtual Machine, follow the steps below:
1. Sign in to the Azure portal at https://portal.azure.com.
2. To create a new virtual machine, navigate to Virtual machines, select Add, and choose Windows Server.
3. Select the version of Windows server that you would like to use.
4. Select Create.
5. Provide a Name, Username, Password, and create a new resource group or choose an existing resource
group.
6. Select Ok.
7. Choose a vm size.
8. In the next section, make the appropriate choices for your needs select the Extensions section.
9. Select Add extension
10. Under New resource, choose Microsoft Antimalware.
11. Select Create
12. In the Install extension section file, locations, and process exclusions can be configured as well as other scan
options. Choose Ok.
13. Choose Ok.
14. Back in the Settings section, choose Ok.
15. In the Create screen, choose Ok.
Deployment using the Visual Studio virtual machine configuration
To enable and configure the Microsoft Antimalware service using Visual Studio:
1. Connect to Microsoft Azure in Visual Studio.
2. Choose your Virtual Machine in the Virtual Machines node in Server Explorer
5. To customize the default Antimalware configuration, select (highlight) the Antimalware extension in the
installed extensions list and click Configure.
6. Replace the default Antimalware configuration with your custom configuration in supported JSON format
in the public configuration textbox and click OK.
7. Click the Update button to push the configuration updates to your Virtual Machine.
NOTE
The Visual Studio Virtual Machines configuration for Antimalware supports only JSON format configuration. The Antimalware
JSON configuration settings template is included in the Microsoft Antimalware For Azure - Code Samples, showing the
supported Antimalware configuration settings.
NOTE
The Azure Virtual Machines configuration for Antimalware supports only JSON format configuration. The Antimalware JSON
configuration settings template is included in the Microsoft Antimalware For Azure - Code Samples, showing the supported
Antimalware configuration settings.
You can use Azure Virtual Machines to deploy a wide range of computing solutions in an agile way. The service
supports Microsoft Windows, Linux, Microsoft SQL Server, Oracle, IBM, SAP, and Azure BizTalk Services. So you
can deploy any workload and any language on nearly any operating system.
An Azure virtual machine gives you the flexibility of virtualization without having to buy and maintain the physical
hardware that runs the virtual machine. You can build and deploy your applications with the assurance that your
data is protected and safe in highly secure datacenters.
With Azure, you can build security-enhanced, compliant solutions that:
Protect your virtual machines from viruses and malware.
Encrypt your sensitive data.
Secure network traffic.
Identify and detect threats.
Meet compliance requirements.
The goal of this article is to provide an overview of the core Azure security features that can be used with virtual
machines. Links to articles give details of each feature so you can learn more.
Antimalware
With Azure, you can use antimalware software from security vendors such as Microsoft, Symantec, Trend Micro,
and Kaspersky. This software helps protect your virtual machines from malicious files, adware, and other threats.
Microsoft Antimalware for Azure Cloud Services and Virtual Machines is a real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software. Microsoft Antimalware for Azure
provides configurable alerts when known malicious or unwanted software attempts to install itself or run on your
Azure systems.
Microsoft Antimalware for Azure is a single-agent solution for applications and tenant environments. It's designed
to run in the background without human intervention. You can deploy protection based on the needs of your
application workloads, with either basic secure-by-default or advanced custom configuration, including
antimalware monitoring.
When you deploy and enable Microsoft Antimalware for Azure, the following core features are available:
Real-time protection: Monitors activity in Cloud Services and on Virtual Machines to detect and block
malware execution.
Scheduled scanning: Periodically performs targeted scanning to detect malware, including actively running
programs.
Malware remediation: Automatically takes action on detected malware, such as deleting or quarantining
malicious files and cleaning up malicious registry entries.
Signature updates: Automatically installs the latest protection signatures (virus definitions) to ensure that
protection is up-to-date on a pre-determined frequency.
Antimalware engine updates: Automatically updates the Microsoft Antimalware for Azure engine.
Antimalware platform updates: Automatically updates the Microsoft Antimalware for Azure platform.
Active protection: Reports telemetry metadata to Azure about detected threats and suspicious resources to
ensure rapid response. Enables real-time synchronous signature delivery through the Microsoft Active
Protection System (MAPS ).
Samples reporting: Provides and reports samples to the Microsoft Antimalware for Azure service to help
refine the service and enable troubleshooting.
Exclusions: Allows application and service administrators to configure certain files, processes, and drives to
exclude them from protection and scanning for performance and other reasons.
Antimalware event collection: Records antimalware service health, suspicious activities, and remediation
actions taken in the operating system event log and collects them in your Azure storage account.
Learn more about antimalware software to help protect your virtual machines:
Microsoft Antimalware for Azure Cloud Services and Virtual Machines
Deploying Antimalware Solutions on Azure Virtual Machines
How to install and configure Trend Micro Deep Security as a service on a Windows VM
How to install and configure Symantec Endpoint Protection on a Windows VM
Security solutions in the Azure Marketplace
For even more powerful protection, consider using Windows Defender Advanced Threat Protection. With
Windows Defender ATP, you get:
Attack surface reduction
Next generation protection
Endpoint protection and response
Automated investigation and remediation
Secure score
Advanced hunting
Management and APIs
Microsoft Threat Protection
Learn more:
Get Started with WDATP
Overview of WDATP capabilities
Compliance
Azure Virtual Machines is certified for FISMA, FedRAMP, HIPAA, PCI DSS Level 1, and other key compliance
programs. This certification makes it easier for your own Azure applications to meet compliance requirements and
for your business to address a wide range of domestic and international regulatory requirements.
Learn more:
Microsoft Trust Center: Compliance
Trusted Cloud: Microsoft Azure Security, Privacy, and Compliance
Confidential Computing
While confidential computing is not technically part of virtual machine security, the topic of virtual machine
security belongs to the higher-level subject of “compute” security. Confidential computing belongs within the
category of “compute” security.
Confidential computing ensures that when data is “in the clear,” which is required for efficient processing, the data
is protected inside a Trusted Execution Environment https://en.wikipedia.org/wiki/Trusted_execution_environment
(TEE - also known as an enclave), an example of which is shown in the figure below.
TEEs ensure there is no way to view data or the operations inside from the outside, even with a debugger. They
even ensure that only authorized code is permitted to access data. If the code is altered or tampered, the
operations are denied and the environment disabled. The TEE enforces these protections throughout the execution
of code within it.
Learn more:
Introducing Azure confidential computing
Azure confidential computing
Security best practices for IaaS workloads in Azure
12/17/2018 • 11 minutes to read • Edit Online
In most infrastructure as a service (IaaS ) scenarios, Azure virtual machines (VMs) are the main workload for
organizations that use cloud computing. This fact is evident in hybrid scenarios where organizations want to slowly
migrate workloads to the cloud. In such scenarios, follow the general security considerations for IaaS, and apply
security best practices to all your VMs.
Your responsibility for security is based on the type of cloud service. The following chart summarizes the balance
of responsibility for both Microsoft and you:
Security requirements vary depending on a number of factors including different types of workloads. Not one of
these best practices can by itself secure your systems. Like anything else in security, you have to choose the
appropriate options and see how the solutions can complement each other by filling gaps.
This article describes security best practices for VMs and operating systems.
The best practices are based on a consensus of opinion, and they work with current Azure platform capabilities and
feature sets. Because opinions and technologies can change over time, this article will be updated to reflect those
changes.
NOTE
We recommend that you consolidate VMs with the same lifecycle into the same resource group. By using resource groups,
you can deploy, monitor, and roll up billing costs for your resources.
Organizations that control VM access and setup improve their overall VM security.
Monitor VM performance
Resource abuse can be a problem when VM processes consume more resources than they should. Performance
issues with a VM can lead to service disruption, which violates the security principle of availability. This is
particularly important for VMs that are hosting IIS or other web servers, because high CPU or memory usage
might indicate a denial of service (DoS ) attack. It’s imperative to monitor VM access not only reactively while an
issue is occurring, but also proactively against baseline performance as measured during normal operation.
We recommend that you use Azure Monitor to gain visibility into your resource’s health. Azure Monitor features:
Resource diagnostic log files: Monitors your VM resources and identifies potential issues that might
compromise performance and availability.
Azure Diagnostics extension: Provides monitoring and diagnostics capabilities on Windows VMs. You can
enable these capabilities by including the extension as part of the Azure Resource Manager template.
Organizations that don't monitor VM performance can’t determine whether certain changes in performance
patterns are normal or abnormal. A VM that’s consuming more resources than normal might indicate an attack
from an external resource or a compromised process running in the VM.
Next steps
See Azure security best practices and patterns for more security best practices to use when you’re designing,
deploying, and managing your cloud solutions by using Azure.
The following resources are available to provide more general information about Azure security and related
Microsoft services:
Azure Security Team Blog - for up to date information on the latest in Azure Security
Microsoft Security Response Center - where Microsoft security vulnerabilities, including issues with Azure, can
be reported or via email to [email protected]
Security Recommendations for Azure Marketplace
Images
1/11/2019 • 3 minutes to read • Edit Online
We recommend that each solution complies with the following security configuration recommendations. This helps
maintain a high level of security for partner solution images in the Azure Marketplace.
These recommendations can also be helpful for organizations that do not have images in the Azure marketplace.
You may want to check your company's Windows and Linux image configurations against the guidelines found in
the following tables:
Category Check
Security All the latest security patches for the Linux distribution are
installed.
Security Limit the attack surface by keeping minimal footprint with only
necessary Windows Server roles, features, services, and
networking ports.
Security The VHD image only includes necessary locked accounts, that
do not have default passwords that would allow interactive
login; no back doors.
Security All sensitive information has been removed from the VHD
image, such as test SSH keys, known hosts file, log files, and
unnecessary certificates.
Deployment Ensures that Azure Support can provide our partners with
serial console output when needed and provide adequate
timeout for OS disk mounting from cloud storage. Image must
have added the following parameters to the Kernel Boot Line:
console=ttyS0 earlyprintk=ttyS0 rootdelay=300
Category Check
Security Use a secure OS base image. The VHD used for the source of
any image based on Windows Server must be from the
Windows Server OS images provided through Microsoft Azure.
Security Limit the attack surface by keeping minimal footprint with only
necessary Windows Server roles, features, services, and
networking ports enabled.
Security The VHD image only includes necessary locked accounts, that
do not have default passwords that would allow interactive
login; no back doors.
Security All sensitive information has been removed from the VHD
image. For example, HOSTS file, log files, and unnecessary
certificates should be removed.
Identity management is the process of authenticating and authorizing security principals. It also involves
controlling information about those principals (identities). Security principals (identities) may include services,
applications, users, groups, etc. Microsoft identity and access management solutions help IT protect access to
applications and resources across the corporate datacenter and into the cloud. Such protection enables additional
levels of validation, such as Multi-Factor Authentication and conditional access policies. Monitoring suspicious
activity through advanced security reporting, auditing, and alerting helps mitigate potential security issues. Azure
Active Directory Premium provides single sign-on (SSO ) to thousands of cloud software as a service (SaaS ) apps
and access to web apps that you run on-premises.
By taking advantage of the security benefits of Azure Active Directory (Azure AD ), you can:
Create and manage a single identity for each user across your hybrid enterprise, keeping users, groups, and
devices in sync.
Provide SSO access to your applications, including thousands of pre-integrated SaaS apps.
Enable application access security by enforcing rules-based Multi-Factor Authentication for both on-premises
and cloud applications.
Provision secure remote access to on-premises web applications through Azure AD Application Proxy.
The goal of this article is to provide an overview of the core Azure security features that help with identity
management. We also provide links to articles that give details of each feature so you can learn more.
The article focuses on the following core Azure Identity management capabilities:
Single sign-on
Reverse proxy
Multi-Factor Authentication
Role based access control (RBAC )
Security monitoring, alerts, and machine learning-based reports
Consumer identity and access management
Device registration
Privileged identity management
Identity protection
Hybrid identity management/Azure AD connect
Azure AD access reviews
Single sign-on
SSO means being able to access all the applications and resources that you need to do business, by signing in only
once using a single user account. Once signed in, you can access all of the applications you need without being
required to authenticate (for example, type a password) a second time.
Many organizations rely upon SaaS applications such as Office 365, Box, and Salesforce for user productivity.
Historically, IT staff needed to individually create and update user accounts in each SaaS application, and users had
to remember a password for each SaaS application.
Azure AD extends on-premises Active Directory environments into the cloud, enabling users to use their primary
organizational account to sign in not only to their domain-joined devices and company resources, but also to all the
web and SaaS applications they need for their jobs.
Not only do users not have to manage multiple sets of usernames and passwords, you can provision or de-
provision application access automatically, based on their organizational groups and their employee status. Azure
AD introduces security and access governance controls with which you can centrally manage users' access across
SaaS applications.
Learn more:
Overview of single sign-on
What is application access and single sign-on with Azure Active Directory?
Integrate Azure Active Directory single sign-on with SaaS apps
Reverse proxy
Azure AD Application Proxy lets you publish on-premises applications, such as SharePoint sites, Outlook Web App,
and IIS -based apps inside your private network and provides secure access to users outside your network.
Application Proxy provides remote access and SSO for many types of on-premises web applications with the
thousands of SaaS applications that Azure AD supports. Employees can sign in to your apps from home on their
own devices and authenticate through this cloud-based proxy.
Learn more:
Enabling Azure AD Application Proxy
Publish applications using Azure AD Application Proxy
Single sign-on with Application Proxy
Working with conditional access
Multi-Factor Authentication
Azure Multi-Factor Authentication is a method of authentication that requires the use of more than one verification
method and adds a critical second layer of security to user sign-ins and transactions. Multi-Factor Authentication
helps safeguard access to data and applications while meeting user demand for a simple sign-in process. It delivers
strong authentication via a range of verification options: phone calls, text messages, or mobile app notifications or
verification codes and third-party OAuth tokens.
Learn more:
Multi-Factor Authentication
What is Azure Multi-Factor Authentication?
How Azure Multi-Factor Authentication works
RBAC
RBAC is an authorization system built on Azure Resource Manager that provides fine-grained access management
of resources in Azure. RBAC allows you to granularly control the level of access that users have. For example, you
can limit a user to only manage virtual networks and another user to manage all resources in a resource group.
Azure includes several built-in roles that you can use. The following lists four fundamental built-in roles. The first
three apply to all resource types.
Learn more:
What is role-based access control (RBAC )?
Built-in roles for Azure resources
Security monitoring, alerts, and machine learning-based reports
Security monitoring, alerts, and machine learning-based reports that identify inconsistent access patterns can help
you protect your business. You can use Azure AD access and usage reports to gain visibility into the integrity and
security of your organization’s directory. With this information, a directory administrator can better determine
where possible security risks might lie so that they can adequately plan to mitigate those risks.
In the Azure portal, reports fall into the following categories:
Anomaly reports: Contain sign-in events that we found to be anomalous. Our goal is to make you aware of
such activity and enable you to determine whether an event is suspicious.
Integrated Application reports: Provide insights into how cloud applications are being used in your
organization. Azure AD offers integration with thousands of cloud applications.
Error reports: Indicate errors that might occur when you provision accounts to external applications.
User-specific reports: Display device sign-in activity data for a specific user.
Activity logs: Contain a record of all audited events within the last 24 hours, last 7 days, or last 30 days, and
group activity changes and password reset and registration activity.
Learn more:
View your access and usage reports
Get started with Azure Active Directory reporting
Azure Active Directory reporting guide
Device registration
Azure AD device registration is the foundation for device-based conditional access scenarios. When a device is
registered, Azure AD device registration provides the device with an identity that it uses to authenticate the device
when a user signs in. The authenticated device and the attributes of the device can then be used to enforce
conditional access policies for applications that are hosted in the cloud and on-premises.
When combined with a mobile device management solution such as Intune, the device attributes in Azure AD are
updated with additional information about the device. You can then create conditional access rules that enforce
access from devices to meet your standards for security and compliance.
Learn more:
Get started with Azure AD device registration
Automatic device registration with Azure AD for Windows domain-joined devices
Set up automatic registration of Windows domain-joined devices with Azure AD
Identity protection
Azure AD Identity Protection is a security service that provides a consolidated view into risk events and potential
vulnerabilities that affect your organization’s identities. Identity Protection takes advantage of existing Azure AD
anomaly-detection capabilities, which are available through Azure AD Anomalous Activity reports. Identity
Protection also introduces new risk event types that can detect anomalies in real time.
Learn more:
Azure AD Identity Protection
Channel 9: Azure AD and Identity Show: Identity Protection Preview
This article begins a series of articles that help organizations implement a complete Azure Active Directory (Azure
AD ) hybrid identity solution. This solution was outlined as the Hybrid Identity Digital Transformation Framework. It
covers the business outcomes and goals organizations can focus on to implement a robust and secure hybrid
identity solution.
The first business outcome of the framework spells out the requirements for organizations to secure the
authentication process when users access cloud apps. The first business goal in the authentication secured business
outcome is users' ability to sign in to cloud apps by using their on-premises usernames and passwords. This sign-
in process to and how users authenticate make everything in the cloud possible.
Choosing the correct authentication method is the first concern for organizations wanting to move their apps to the
cloud. Don't take this decision lightly, for the following reasons:
1. It's the first decision for an organization that wants to move to the cloud.
2. The authentication method is a critical component of an organization’s presence in the cloud. It controls
access to all cloud data and resources.
3. It's the foundation of all the other advanced security and user experience features in Azure AD.
4. The authentication method is difficult to change after it's implemented.
Identity is the new control plane of IT security. So authentication is an organization’s access guard to the new cloud
world. Organizations need an identity control plane that strengthens their security and keeps their cloud apps safe
from intruders.
Out of scope
Organizations that don't have an existing on-premises directory footprint aren't the focus of this article. Typically,
those businesses create identities only in the cloud, which doesn’t require a hybrid identity solution. Cloud-only
identities exist solely in the cloud and aren't associated with corresponding on-premises identities.
Authentication methods
When the Azure AD hybrid identity solution is your new control plane, authentication is the foundation of cloud
access. Choosing the correct authentication method is a crucial first decision in setting up an Azure AD hybrid
identity solution. Implement the authentication method that is configured by using Azure AD Connect, which also
provisions users in the cloud.
To choose an authentication method, you need to consider the time, existing infrastructure, complexity, and cost of
implementing your choice. These factors are different for every organization and might change over time.
Azure AD supports the following authentication methods for hybrid identity solutions.
Cloud authentication
When you choose this authentication method, Azure AD handles users' sign-in process. Coupled with seamless
single sign-on (SSO ), users can sign in to cloud apps without having to reenter their credentials. With cloud
authentication, you can choose from two options:
Azure AD password hash synchronization. The simplest way to enable authentication for on-premises directory
objects in Azure AD. Users can use the same username and password that they use on-premises without having to
deploy any additional infrastructure. Some premium features of Azure AD, like Identity Protection, require
password hash synchronization for no matter which authentication method you choose.
NOTE
Passwords are never stored in clear text or encrypted with a reversible algorithm in Azure AD. For more information on the
actual process of password hash synchronization, see Implement password hash synchronization with Azure AD Connect
sync.
Azure AD Pass-through Authentication. Provides a simple password validation for Azure AD authentication
services by using a software agent that runs on one or more on-premises servers. The servers validate the users
directly with your on-premises Active Directory, which ensures that the password validation doesn't happen in the
cloud.
Companies with a security requirement to immediately enforce on-premises user account states, password policies,
and sign-in hours might use this authentication method. For more information on the actual pass-through
authentication process, see User sign-in with Azure AD pass-through authentication.
Federated authentication
When you choose this authentication method, Azure AD hands off the authentication process to a separate trusted
authentication system, such as on-premises Active Directory Federation Services (AD FS ), to validate the user’s
password.
The authentication system can provide additional advanced authentication requirements. Examples are smartcard-
based authentication or third-party multifactor authentication. For more information, see Deploying Active
Directory Federation Services.
The following section helps you decide which authentication method is right for you by using a decision tree. It
helps you determine whether to deploy cloud or federated authentication for your Azure AD hybrid identity
solution.
Decision tree
Details on decision questions:
1. Azure AD can handle sign-in for users without relying on on-premises components to verify passwords.
2. Azure AD can hand off user sign-in to a trusted authentication provider such as Microsoft’s AD FS.
3. If you need to apply user-level Active Directory security policies such as account expired, disabled account,
password expired, account locked out, and sign-in hours on each user sign-in, Azure AD requires some on-
premises components.
4. Sign-in features not natively supported by Azure AD:
Sign-in using smartcards or certificates.
Sign-in using on-premises MFA Server.
Sign-in using 3rd party authentication solution.
Multi-site on-premises authentication solution.
5. Azure AD Identity Protection requires Password Hash Sync regardless of which sign-in method you choose, to
provide the Users with leaked credentials report. Organizations can failover to Password Hash Sync if their
primary sign-in method fails and it was configured before the failure event.
NOTE
Azure AD Identity Protection require Azure AD Premium P2 licenses.
Detailed considerations
Cloud authentication: Password hash synchronization
Effort. Password hash synchronization requires the least effort regarding deployment, maintenance, and
infrastructure. This level of effort typically applies to organizations that only need their users to sign in to
Office 365, SaaS apps, and other Azure AD -based resources. When turned on, password hash
synchronization is part of the Azure AD Connect sync process and runs every two minutes.
User experience. To improve users' sign-in experience, deploy seamless SSO with password hash
synchronization. Seamless SSO eliminates unnecessary prompts when users are signed in.
Advanced scenarios. If organizations choose to, it's possible to use insights from identities with Azure AD
Identity Protection reports with Azure AD Premium P2. An example is the leaked credentials report.
Windows Hello for Business is another option that has specific requirements when you use password hash
synchronization.
Organizations that require multifactor authentication with password hash synchronization must use Azure
AD multifactor authentication. Those organizations can't use third-party or on-premises multifactor
authentication methods.
Business continuity. Using password hash synchronization with cloud authentication is highly available as
a cloud service that scales to all Microsoft datacenters. To make sure password hash synchronization does
not go down for extended periods, deploy a second Azure AD Connect server in staging mode in a standby
configuration.
Considerations. Currently, password hash synchronization doesn't immediately enforce changes in on-
premises account states. In this situation, a user has access to cloud apps until the user account state is
synchronized to Azure AD. Organizations might want to overcome this limitation by running a new
synchronization cycle after administrators do bulk updates to on-premises user account states. An example
is disabling accounts.
NOTE
The password expired and account locked-out states aren't currently synced to Azure AD with Azure AD Connect.
NOTE
When you deploy your Azure AD hybrid identity solution, you must implement one of the supported topologies of Azure AD
Connect. Learn more about supported and unsupported configurations at Topologies for Azure AD Connect.
Architecture diagrams
The following diagrams outline the high-level architecture components required for each authentication method
you can use with your Azure AD hybrid identity solution. They provide an overview to help you compare the
differences between the solutions.
Simplicity of a password hash synchronization solution:
Comparing methods
PASSWORD HASH PASS-THROUGH
SYNCHRONIZATION + AUTHENTICATION + SEAMLESS
CONSIDERATION SEAMLESS SSO SSO FEDERATION WITH AD FS
Where does authentication In the cloud In the cloud after a secure On-premises
happen? password verification
exchange with the on-
premises authentication
agent
What are the on-premises None One server for each Two or more AD FS servers
server requirements beyond additional authentication
the provisioning system: agent Two or more WAP servers in
Azure AD Connect? the perimeter/DMZ network
PASSWORD HASH PASS-THROUGH
SYNCHRONIZATION + AUTHENTICATION + SEAMLESS
CONSIDERATION SEAMLESS SSO SSO FEDERATION WITH AD FS
What are the requirements None Outbound Internet access Inbound Internet access to
for on-premises Internet and from the servers running WAP servers in the
networking beyond the authentication agents perimeter
provisioning system?
Inbound network access to
AD FS servers from WAP
servers in the perimeter
Is there a health monitoring Not required Agent status provided by Azure AD Connect Health
solution? Azure Active Directory admin
center
Do users get single sign-on Yes with Seamless SSO Yes with Seamless SSO Yes
to cloud resources from
domain-joined devices
within the company
network?
Alternate login ID
Is Windows Hello for Key trust model Key trust model Key trust model
Business supported?
Certificate trust model with Certificate trust model with Certificate trust model
Intune Intune
Requires Windows Server
2016 Domain functional
level
What are the multifactor Azure MFA Azure MFA Azure MFA
authentication options?
Custom Controls with Custom Controls with Azure MFA server
conditional access* conditional access*
Third-party MFA
What user account states Disabled accounts Disabled accounts Disabled accounts
are supported? (up to 30-minute delay)
Account locked out Account locked out
What are the conditional Azure AD conditional access, Azure AD conditional access, Azure AD conditional access,
access options? with Azure AD Premium with Azure AD Premium with Azure AD Premium
AD FS claim rules
Can you customize the logo, Yes, with Azure AD Premium Yes, with Azure AD Premium Yes
image, and description on
the sign-in pages?
What advanced scenarios Smart password lockout Smart password lockout Multisite low-latency
are supported? authentication system
Leaked credentials reports,
with Azure AD Premium P2 AD FS extranet lockout
NOTE
Custom controls in Azure AD conditional access does not currently support device registration.
Recommendations
Your identity system ensures your users' access to cloud apps and the line-of-business apps that you migrate and
make available in the cloud. To keep authorized users productive and bad actors out of your organization’s sensitive
data, authentication controls access to apps.
Use or enable password hash synchronization for whichever authentication method you choose, for the following
reasons:
1. High availability and disaster recovery. Pass-through Authentication and federation rely on on-premises
infrastructure. For pass-through authentication, the on-premises footprint includes the server hardware and
networking the Pass-through Authentication agents require. For federation, the on-premises footprint is
even larger. It requires servers in your perimeter network to proxy authentication requests and the internal
federation servers.
To avoid single points of failures, deploy redundant servers. Then authentication requests will always be
serviced if any component fails. Both pass-through authentication and federation also rely on domain
controllers to respond to authentication requests, which can also fail. Many of these components need
maintenance to stay healthy. Outages are more likely when maintenance isn't planned and implemented
correctly. Avoid outages by using password hash synchronization because the Microsoft Azure AD cloud
authentication service scales globally and is always available.
2. On-premises outage survival. The consequences of an on-premises outage due to a cyber-attack or
disaster can be substantial, ranging from reputational brand damage to a paralyzed organization unable to
deal with the attack. Recently, many organizations were victims of malware attacks, including targeted
ransomware, that caused their on-premises servers to go down. When Microsoft helps customers deal with
these kinds of attacks, it sees two categories of organizations:
Organizations that previously turned on password hash synchronization changed their authentication
method to use password hash synchronization. They were back online in a matter of hours. By using
access to email via Office 365, they worked to resolve issues and access other cloud-based workloads.
Organizations that didn’t previously enable password hash synchronization had to resort to
untrusted external consumer email systems for communications and resolving issues. In those cases,
it took them weeks or more to be up and running again.
3. Identity protection. One of the best ways to protect users in the cloud is Azure AD Identity Protection with
Azure AD Premium P2. Microsoft continually scans the Internet for user and password lists that bad actors
sell and make available on the dark web. Azure AD can use this information to verify if any of the usernames
and passwords in your organization are compromised. So it's critical to enable password hash
synchronization no matter what authentication method you use, whether that's federated or pass-through
authentication. Leaked credentials are presented as a report. Use this information to block or force users to
change their passwords when they try to sign in with leaked passwords.
Lastly, according to Gartner, Microsoft has the most full-featured set of identity and access management functions.
Microsoft handles 450 billion authentication requests every month to provide access to thousands of SaaS
applications like Office 365 from virtually any device.
Conclusion
This article outlines various authentication options that organizations can configure and deploy to support access
to cloud apps. To meet various business, security, and technical requirements, organizations can choose between
password hash synchronization, Pass-through Authentication, and federation.
Consider each authentication method. Does the effort to deploy the solution, and the user's experience of the sign-
in process, address your business requirements? Evaluate whether your organization needs the advanced scenarios
and business continuity features of each authentication method. Finally, evaluate the considerations of each
authentication method. Do any of them prevent you from implementing your choice?
Next steps
In today’s world, threats are present 24 hours a day and come from everywhere. Implement the correct
authentication method, and it will mitigate your security risks and protect your identities.
Get started with Azure AD and deploy the right authentication solution for your organization.
If you're thinking about migrating from federated to cloud authentication, learn more about changing the sign-in
method. To help you plan and implement the migration, use these project deployment plans.
Five steps to securing your identity infrastructure
2/5/2019 • 12 minutes to read • Edit Online
If you're reading this document, you're aware of the significance of security. You likely already carry the
responsibility for securing your organization. If you need to convince others of the importance of security, send
them to read the latest Microsoft Security Intelligence report.
This document will help you get a more secure posture using the capabilities of Azure Active Directory by using a
five-step checklist to inoculate your organization against cyber-attacks.
This checklist will help you quickly deploy critical recommended actions to protect your organization immediately
by explaining how to:
Strengthen your credentials.
Reduce your attack surface area.
Automate threat response.
Increase your awareness of auditing and monitoring.
Enable more predictable and complete end-user security with self-help.
NOTE
Many of the recommendations in this document apply only to applications that are configured to use Azure Active Directory
as their identity provider. Configuring apps for Single Sign-On assures the benefits of credential policies, threat detection,
auditing, logging, and other features add to those applications. Single sign-on through Azure Active Directory is the
foundation - on which all these recommendations are based.
The recommendations in this document are aligned with the Identity Secure Score, an automated assessment of
your Azure AD tenant’s identity security configuration. Organizations can use the Identity Secure Score page in the
Azure AD portal to find gaps in their current security configuration to ensure they follow current Microsoft best
practices for security. Implementing each recommendation in the Secure Score page will increase your score and
allow you to track your progress, plus help you compare your implementation against other similar size
organizations or your industry.
Summary
There are many aspects to a secure Identity infrastructure, but this five-step checklist will help you quickly
accomplish a safer and secure identity infrastructure:
Strengthen your credentials.
Reduce your attack surface area.
Automate threat response.
Increase your awareness of auditing and monitoring.
Enable more predictable and complete end-user security with self-help.
We appreciate how seriously you take Identity Security and hope this document is a useful roadmap to a more
secure posture for your organization.
Next steps
If you need assistance to plan and deploy the recommendations, refer to the Azure AD project deployment plans
for help.
Azure Identity Management and access control
security best practices
11/7/2018 • 14 minutes to read • Edit Online
Many consider identity to be the new boundary layer for security, taking over that role from the traditional
network-centric perspective. This evolution of the primary pivot for security attention and investments come from
the fact that network perimeters have become increasingly porous and that perimeter defense cannot be as
effective as they once were prior to the explosion of BYOD devices and cloud applications.
In this article, we discuss a collection of Azure identity management and access control security best practices.
These best practices are derived from our experience with Azure AD and the experiences of customers like yourself.
For each best practice, we explain:
What the best practice is
Why you want to enable that best practice
What might be the result if you fail to enable the best practice
Possible alternatives to the best practice
How you can learn to enable the best practice
This Azure identity management and access control security best practices article is based on a consensus opinion
and Azure platform capabilities and feature sets, as they exist at the time this article was written. Opinions and
technologies change over time and this article will be updated on a regular basis to reflect those changes.
Azure identity management and access control security best practices discussed in this article include:
Treat identity as the primary security perimeter
Centralize identity management
Enable single sign-on
Turn on conditional access
Enable password management
Enforce multi-factor verification for users
Use role-based access control
Lower exposure of privileged accounts
Control locations where resources are located
NOTE
Option 1, enabling Multi-Factor Authentication by changing the user state, overrides conditional access policies. Because
options 2 and 3 use conditional access policies, you cannot use option 1 with them.
Organizations that don’t add extra layers of identity protection, such as two-step verification, are more susceptible
for credential theft attack. A credential theft attack can lead to data compromise.
NOTE
Security policies are not the same as RBAC. They actually use RBAC to authorize users to create those resources.
Organizations that are not controlling how resources are created are more susceptible to users who might abuse
the service by creating more resources than they need. Hardening the resource creation process is an important
step to securing a multitenant scenario.
Next step
See Azure security best practices and patterns for more security best practices to use when you’re designing,
deploying, and managing your cloud solutions by using Azure.
Enforce multi-factor authentication (MFA) for
subscription administrators
4/25/2018 • 2 minutes to read • Edit Online
When you create your administrators, including your global administrator account, it is essential that you use very
strong authentication methods.
You can perform day-to-day administration by assigning specific administrator roles—such as Exchange
administrator or Password administrator—to user accounts of IT staff as needed. Additionally, enabling Azure
Multi-factor Authentication (MFA) for your administrators adds a second layer of security to user sign-ins and
transactions. Azure MFA also helps IT reduce the likelihood that a compromised credential will have access to
organization’s data.
For example: you enforce Azure MFA for your users and configure it to use a phone call or text message as
verification. If the user’s credentials are compromised, the attacker won’t be able to access any resource since he
will not have access to user’s phone. Organizations that do not add extra layers of identity protection are more
susceptible for credential theft attack, which may lead to data compromise.
One alternative for organizations that want to keep the entire authentication control on-premises is to use Azure
Multi-Factor Authentication Server, also called "MFA on-premises". By using this method, you will still be able to
enforce multi-factor authentication, while keeping the MFA server on-premises.
To check who in your organization has administrative privileges you can verify by using the following Microsoft
Azure AD V2 PowerShell command:
Enabling MFA
Review how MFA operates before you proceed.
As long as your users have licenses that include Azure Multi-Factor Authentication, there's nothing that you need to
do to turn on Azure MFA. You can start requiring two-step verification on an individual user basis. The licenses that
enable Azure MFA are:
Azure Multi-Factor Authentication
Azure Active Directory Premium
Enterprise Mobility + Security
Network security could be defined as the process of protecting resources from unauthorized access or attack by
applying controls to network traffic. The goal is to ensure that only legitimate traffic is allowed. Azure includes a
robust networking infrastructure to support your application and service connectivity requirements. Network
connectivity is possible between resources located in Azure, between on-premises and Azure hosted resources,
and to and from the internet and Azure.
This article covers some of the options that Azure offers in the area of network security. You can learn about:
Azure networking
Network access control
Azure Firewall
Secure remote access and cross-premises connectivity
Availability
Name resolution
Perimeter network (DMZ ) architecture
Azure DDoS protection
Azure Front Door
Traffic manager
Monitoring and threat detection
Azure networking
Azure requires virtual machines to be connected to an Azure Virtual Network. A virtual network is a logical
construct built on top of the physical Azure network fabric. Each virtual network is isolated from all other virtual
networks. This helps ensure that network traffic in your deployments is not accessible to other Azure customers.
Learn more:
Virtual network overview
Azure Firewall
Azure Firewall is a managed, cloud-based network security service that protects your Azure Virtual Network
resources. It is a fully stateful firewall as a service with built-in high availability and unrestricted cloud scalability.
Some features include:
High availability
Cloud scalability
Application FQDN filtering rules
Network traffic filtering rules
Learn more:
Azure Firewall overview
Availability
Availability is a key component of any security program. If your users and systems can't access what they need to
access over the network, the service can be considered compromised. Azure has networking technologies that
support the following high-availability mechanisms:
HTTP -based load balancing
Network level load balancing
Global load balancing
Load balancing is a mechanism designed to equally distribute connections among multiple devices. The goals of
load balancing are:
To increase availability. When you load balance connections across multiple devices, one or more of the devices
can become unavailable without compromising the service. The services running on the remaining online
devices can continue to serve the content from the service.
To increase performance. When you load balance connections across multiple devices, a single device doesn't
have to handle all processing. Instead, the processing and memory demands for serving the content is spread
across multiple devices.
HTTP-based load balancing
Organizations that run web-based services often desire to have an HTTP -based load balancer in front of those
web services. This helps ensure adequate levels of performance and high availability. Traditional, network-based
load balancers rely on network and transport layer protocols. HTTP -based load balancers, on the other hand,
make decisions based on characteristics of the HTTP protocol.
Azure Application Gateway provides HTTP -based load balancing for your web-based services. Application
Gateway supports:
Cookie-based session affinity. This capability makes sure that connections established to one of the servers
behind that load balancer stays intact between the client and server. This ensures stability of transactions.
SSL offload. When a client connects with the load balancer, that session is encrypted by using the HTTPS (SSL )
protocol. However, in order to increase performance, you can use the HTTP (unencrypted) protocol to connect
between the load balancer and the web server behind the load balancer. This is referred to as "SSL offload,"
because the web servers behind the load balancer don't experience the processor overhead involved with
encryption. The web servers can therefore service requests more quickly.
URL -based content routing. This feature makes it possible for the load balancer to make decisions about where
to forward connections based on the target URL. This provides a lot more flexibility than solutions that make
load balancing decisions based on IP addresses.
Learn more:
Application Gateway overview
Network level load balancing
In contrast to HTTP -based load balancing, network level load balancing makes decisions based on IP address and
port (TCP or UDP ) numbers. You can gain the benefits of network level load balancing in Azure by using Azure
Load Balancer. Some key characteristics of Load Balancer include:
Network level load balancing based on IP address and port numbers.
Support for any application layer protocol.
Load balances to Azure virtual machines and cloud services role instances.
Can be used for both internet-facing (external load balancing) and non-internet facing (internal load balancing)
applications and virtual machines.
Endpoint monitoring, which is used to determine if any of the services behind the load balancer have become
unavailable.
Learn more:
Internet-facing load balancer between multiple virtual machines or services
Internal load balancer overview
Global load balancing
Some organizations want the highest level of availability possible. One way to reach this goal is to host
applications in globally distributed datacenters. When an application is hosted in datacenters located throughout
the world, it's possible for an entire geopolitical region to become unavailable, and still have the application up and
running.
This load-balancing strategy can also yield performance benefits. You can direct requests for the service to the
datacenter that is nearest to the device that is making the request.
In Azure, you can gain the benefits of global load balancing by using Azure Traffic Manager.
Learn more:
What is Traffic Manager?
Name resolution
Name resolution is a critical function for all services you host in Azure. From a security perspective, compromise
of the name resolution function can lead to an attacker redirecting requests from your sites to an attacker's site.
Secure name resolution is a requirement for all your cloud hosted services.
There are two types of name resolution you need to address:
Internal name resolution. This is used by services on your virtual networks, your on-premises networks, or
both. Names used for internal name resolution are not accessible over the internet. For optimal security, it's
important that your internal name resolution scheme is not accessible to external users.
External name resolution. This is used by people and devices outside of your on-premises networks and virtual
networks. These are the names that are visible to the internet, and are used to direct connection to your cloud-
based services.
For internal name resolution, you have two options:
A virtual network DNS server. When you create a new virtual network, a DNS server is created for you. This
DNS server can resolve the names of the machines located on that virtual network. This DNS server is not
configurable, is managed by the Azure fabric manager, and can therefore help you secure your name resolution
solution.
Bring your own DNS server. You have the option of putting a DNS server of your own choosing on your
virtual network. This DNS server can be an Active Directory integrated DNS server, or a dedicated DNS server
solution provided by an Azure partner, which you can obtain from the Azure Marketplace.
Learn more:
Virtual network overview
Manage DNS Servers used by a virtual network
For external name resolution, you have two options:
Host your own external DNS server on-premises.
Host your own external DNS server with a service provider.
Many large organizations host their own DNS servers on-premises. They can do this because they have the
networking expertise and global presence to do so.
In most cases, it's better to host your DNS name resolution services with a service provider. These service
providers have the network expertise and global presence to ensure very high availability for your name
resolution services. Availability is essential for DNS services, because if your name resolution services fail, no one
will be able to reach your internet facing services.
Azure provides you with a highly available and high-performing external DNS solution in the form of Azure DNS.
This external name resolution solution takes advantage of the worldwide Azure DNS infrastructure. It allows you
to host your domain in Azure, using the same credentials, APIs, tools, and billing as your other Azure services. As
part of Azure, it also inherits the strong security controls built into the platform.
Learn more:
Azure DNS overview
Azure DNS private zones allows you to configure private DNS names for Azure resources rather than the
automatically assigned names without the need to add a custom DNS solution.
You can connect Azure virtual machines (VMs) and appliances to other networked devices by placing them on
Azure virtual networks. That is, you can connect virtual network interface cards to a virtual network to allow
TCP/IP -based communications between network-enabled devices. Virtual machines connected to an Azure virtual
network can connect to devices on the same virtual network, different virtual networks, the internet, or your own
on-premises networks.
This article discusses a collection of Azure network security best practices. These best practices are derived from
our experience with Azure networking and the experiences of customers like yourself.
For each best practice, this article explains:
What the best practice is
Why you want to enable that best practice
What might be the result if you fail to enable the best practice
Possible alternatives to the best practice
How you can learn to enable the best practice
This Azure Network Security Best Practices article is based on a consensus opinion, and Azure platform
capabilities and feature sets, as they exist at the time this article was written. Opinions and technologies change
over time and this article will be updated on a regular basis to reflect those changes.
The following sections describe best practices for network security.
NOTE
User-defined routes are not required, and the default system routes usually work.
Next step
See Azure security best practices and patterns for more security best practices to use when you’re designing,
deploying, and managing your cloud solutions by using Azure.
Azure DDoS Protection: Best practices and reference
architectures
12/20/2018 • 17 minutes to read • Edit Online
This article is for IT decision makers and security personnel. It expects that you're familiar with Azure, networking,
and security.
Designing for distributed denial of service (DDoS ) resiliency requires planning and designing for a variety of
failure modes. This article provides best practices for designing applications in Azure for resiliency against DDoS
attacks.
Types of attacks
DDoS is a type of attack that tries to exhaust application resources. The goal is to affect the application’s availability
and its ability to handle legitimate requests. Attacks are becoming more sophisticated and larger in size and impact.
DDoS attacks can be targeted at any endpoint that is publicly reachable through the internet.
Azure provides continuous protection against DDoS attacks. This protection is integrated into the Azure platform
by default and at no extra cost.
In addition to the core DDoS protection in the platform, Azure DDoS Protection Standard provides advanced
DDoS mitigation capabilities against network attacks. It's automatically tuned to protect your specific Azure
resources. Protection is simple to enable during the creation of new virtual networks. It can also be done after
creation and requires no application or resource changes.
DDoS attacks can be classified into three categories: volumetric, protocol, and resource.
Volumetric attacks
Volumetric attacks are the most common type of DDoS attack. Volumetric attacks are brute-force assaults that
target the network and transport layers. They try to exhaust resources like network links.
These attacks often use multiple infected systems to flood the network layers with seemingly legitimate traffic.
They use network-layer protocols such as Internet Control Message Protocol (ICMP ), User Datagram Protocol
(UDP ), and Transmission Control Protocol (TCP ).
The most commonly used network-layer DDoS attacks are TCP SYN flooding, ICMP echo, UDP flooding, DNS,
and NTP amplification attacks. This type of attack can be used not only to disrupt service, but also as a
smokescreen for more nefarious and targeted network intrusion. An example of a recent volumetric attack is the
Memcached exploit that affected GitHub. This attack targeted UDP port 11211 and generated 1.35 Tb/s of attack
volume.
Protocol attacks
Protocol attacks target application protocols. They try to use up all the available resources in infrastructure devices
such as firewalls, application servers, and load balancers. Protocol attacks use packets that are malformed or
contain protocol abnormalities. These attacks operate by sending large numbers of open requests that servers and
other communication devices answer and wait for a packet response. The target tries to respond to the open
requests, eventually causing the system to crash.
The most common example of a protocol-based DDoS attack is TCP SYN flood. In this attack, a succession of TCP
SYN requests tries to overwhelm a target. The goal is to make the target unresponsive. The 2016 Dyn outage,
apart from being an application-layer attack, consisted of TCP SYN floods that targeted port 53 of Dyn’s DNS
servers.
Resource attacks
Resource attacks target the application layer. They trigger back-end processes in an effort to overwhelm a system.
Resource attacks abuse traffic that looks normal but that carries CPU -intensive queries to the server. The volume of
traffic needed to exhaust resources is lower than that of the other type of attacks. The traffic in a resource attack is
indistinguishable from legitimate traffic, making it hard to detect. The most common resource attacks are on
HTTP/HTTPS and DNS services.
Azure customers benefit from reviewing Microsoft best practices and building globally distributed applications that
are designed and tested for failure.
In the Azure portal, select Monitor > Metrics. In the Metrics pane, select the resource group, select a resource
type of Public IP Address, and select your Azure public IP address. DDoS metrics are visible in the Available
metrics pane.
DDoS Protection Standard applies three autotuned mitigation policies (TCP SYN, TCP, and UDP ) for each public IP
of the protected resource, in the virtual network that has DDoS enabled. You can view the policy thresholds by
selecting the metric Inbound packets to trigger DDoS mitigation.
The policy thresholds are autoconfigured via machine learning-based network traffic profiling. DDoS mitigation
occurs for an IP address under attack only when the policy threshold is exceeded.
M e t r i c fo r a n I P a d d r e ss u n d e r D D o S a t t a c k
If the public IP address is under attack, the value for the metric Under DDoS attack or not changes to 1 as DDoS
Protection performs mitigation on the attack traffic.
We recommend configuring an alert on this metric. You'll then be notified when there’s an active DDoS mitigation
performed on your public IP address.
For more information, see Manage Azure DDoS Protection Standard using the Azure portal.
Web application firewall for resource attacks
Specific to resource attacks at the application layer, you should configure a web application firewall (WAF ) to help
secure web applications. A WAF inspects inbound web traffic to block SQL injections, cross-site scripting, DDoS,
and other Layer 7 attacks. Azure provides WAF as a feature of Application Gateway for centralized protection of
your web applications from common exploits and vulnerabilities. There are other WAF offerings available from
Azure partners that might be more suitable for your needs via the Azure Marketplace.
Even web application firewalls are susceptible to volumetric and state exhaustion attacks. We strongly recommend
enabling DDoS Protection Standard on the WAF virtual network to help protect from volumetric and protocol
attacks. For more information, see the DDoS Protection reference architectures section.
Protection planning
Planning and preparation are crucial to understand how a system will perform during a DDoS attack. Designing an
incident management response plan is part of this effort.
If you have DDoS Protection Standard, make sure that it's enabled on the virtual network of internet-facing
endpoints. Configuring DDoS alerts helps you constantly watch for any potential attacks on your infrastructure.
You should monitor your applications independently. Understand the normal behavior of an application. Prepare to
act if the application is not behaving as expected during a DDoS attack.
Testing through simulations
It’s a good practice to test your assumptions about how your services will respond to an attack by conducting
periodic simulations. During testing, validate that your services or applications continue to function as expected
and there’s no disruption to the user experience. Identify gaps from both a technology and process standpoint and
incorporate them in the DDoS response strategy. We recommend that you perform such tests in staging
environments or during non-peak hours to minimize the impact to the production environment.
We have partnered with BreakingPoint Cloud to build an interface where Azure customers can generate traffic
against DDoS Protection-enabled public endpoints for simulations. You can use the BreakingPoint Cloud
simulation to:
Validate how Azure DDoS Protection helps protect your Azure resources from DDoS attacks.
Optimize your incident response process while under DDoS attack.
Document DDoS compliance.
Train your network security teams.
Cybersecurity requires constant innovation in defense. Azure DDoS Standard protection is a state-of-the-art
offering with an effective solution to mitigate increasingly complex DDoS attacks.
In this architecture, a workload is distributed across multiple VM instances. There is a single public IP address, and
internet traffic is distributed to the VMs through a load balancer. DDoS Protection Standard is enabled on the
virtual network of the Azure (internet) load balancer that has the public IP associated with it.
The load balancer distributes incoming internet requests to the VM instances. Virtual machine scale sets allow the
number of VMs to be scaled in or out manually, or automatically based on predefined rules. This is important if the
resource is under DDoS attack. For more information on this reference architecture, see this article.
Application running on Windows N-tier
There are many ways to implement an N -tier architecture. The following diagram shows a typical three-tier web
application. This architecture builds on the article Run load-balanced VMs for scalability and availability. The web
and business tiers use load-balanced VMs.
In this architecture, DDoS Protection Standard is enabled on the virtual network. All public IPs in the virtual
network get DDoS protection for Layer 3 and 4. For Layer 7 protection, deploy Application Gateway in the WAF
SKU. For more information on this reference architecture, see this article.
PaaS web application
This reference architecture shows running an Azure App Service application in a single region. This architecture
shows a set of proven practices for a web application that uses Azure App Service and Azure SQL Database. A
standby region is set up for failover scenarios.
Azure Traffic Manager routes incoming requests to Application Gateway in one of the regions. During normal
operations, it routes requests to Application Gateway in the active region. If that region becomes unavailable,
Traffic Manager fails over to Application Gateway in the standby region.
All traffic from the internet destined to the web application is routed to the Application Gateway public IP address
via Traffic Manager. In this scenario, the app service (web app) itself is not directly externally facing and is protected
by Application Gateway.
We recommend that you configure the Application Gateway WAF SKU (prevent mode) to help protect against
Layer 7 (HTTP/HTTPS/WebSocket) attacks. Additionally, web apps are configured to accept only traffic from the
Application Gateway IP address.
For more information about this reference architecture, see this article.
Mitigation for non-web PaaS services
HDInsight on Azure
This reference architecture shows configuring DDoS Protection Standard for an Azure HDInsight cluster. Make
sure that the HDInsight cluster is linked to a virtual network and that DDoS Protection is enabled on the virtual
network.
In this architecture, traffic destined to the HDInsight cluster from the internet is routed to the public IP associated
with the HDInsight gateway load balancer. The gateway load balancer then sends the traffic to the head nodes or
the worker nodes directly. Because DDoS Protection Standard is enabled on the HDInsight virtual network, all
public IPs in the virtual network get DDoS protection for Layer 3 and 4. This reference architecture can be
combined with the N -Tier and multi-region reference architectures.
For more information on this reference architecture, see the Extend Azure HDInsight using an Azure Virtual
Network documentation.
NOTE
Azure App Service Environment for PowerApps or API management in a virtual network with a public IP are both not natively
supported.
Next steps
Azure DDoS Protection product page
Azure DDoS Protection blog
Azure DDoS Protection documentation
Microsoft cloud services and network security
5/21/2018 • 37 minutes to read • Edit Online
Microsoft cloud services deliver hyper-scale services and infrastructure, enterprise-grade capabilities, and many
choices for hybrid connectivity. Customers can choose to access these services either via the Internet or with Azure
ExpressRoute, which provides private network connectivity. The Microsoft Azure platform allows customers to
seamlessly extend their infrastructure into the cloud and build multi-tier architectures. Additionally, third parties
can enable enhanced capabilities by offering security services and virtual appliances. This white paper provides an
overview of security and architectural issues that customers should consider when using Microsoft cloud services
accessed via ExpressRoute. It also covers creating more secure services in Azure virtual networks.
Fast start
The following logic chart can direct you to a specific example of the many security techniques available with the
Azure platform. For quick reference, find the example that best fits your case. For expanded explanations, continue
reading through the paper.
Example 1: Build a perimeter network (also known as DMZ, demilitarized zone, or screened subnet) to help protect
applications with network security groups (NSGs).
Example 2: Build a perimeter network to help protect applications with a firewall and NSGs.
Example 3: Build a perimeter network to help protect networks with a firewall, user-defined route (UDR ), and NSG.
Example 4: Add a hybrid connection with a site-to-site, virtual appliance virtual private network (VPN ).
Example 5: Add a hybrid connection with a site-to-site, Azure VPN gateway.
Example 6: Add a hybrid connection with ExpressRoute.
Examples for adding connections between virtual networks, high availability, and service chaining will be added to
this document over the next few months.
This approach provides a more secure foundation for customers to deploy their services in the Microsoft cloud.
The next step is for customers to design and create a security architecture to protect these services.
Inbound from the Internet, Azure DDoS helps protect against large-scale attacks against Azure. The next layer is
customer-defined public IP addresses (endpoints), which are used to determine which traffic can pass through the
cloud service to the virtual network. Native Azure virtual network isolation ensures complete isolation from all
other networks and that traffic only flows through user configured paths and methods. These paths and methods
are the next layer, where NSGs, UDR, and network virtual appliances can be used to create security boundaries to
protect the application deployments in the protected network.
The next section provides an overview of Azure virtual networks. These virtual networks are created by customers,
and are what their deployed workloads are connected to. Virtual networks are the basis of all the network security
features required to establish a perimeter network to protect customer deployments in Azure.
NOTE
Traffic isolation refers only to traffic inbound to the virtual network. By default outbound traffic from the VNet to the internet
is allowed, but can be prevented if desired by NSGs.
Multi-tier topology: Virtual networks allow customers to define multi-tier topology by allocating subnets and
designating separate address spaces for different elements or “tiers” of their workloads. These logical
groupings and topologies enable customers to define different access policy based on the workload types, and
also control traffic flows between the tiers.
Cross-premises connectivity: Customers can establish cross-premises connectivity between a virtual network
and multiple on-premises sites or other virtual networks in Azure. To construct a connection, customers can use
VNet Peering, Azure VPN Gateways, third-party network virtual appliances, or ExpressRoute. Azure supports
site-to-site (S2S ) VPNs using standard IPsec/IKE protocols and ExpressRoute private connectivity.
NSG allows customers to create rules (ACLs) at the desired level of granularity: network interfaces, individual
VMs, or virtual subnets. Customers can control access by permitting or denying communication between the
workloads within a virtual network, from systems on customer’s networks via cross-premises connectivity, or
direct Internet communication.
UDR and IP Forwarding allow customers to define the communication paths between different tiers within a
virtual network. Customers can deploy a firewall, IDS/IPS, and other virtual appliances, and route network
traffic through these security appliances for security boundary policy enforcement, auditing, and inspection.
Network virtual appliances in the Azure Marketplace: Security appliances such as firewalls, load balancers,
and IDS/IPS are available in the Azure Marketplace and the VM Image Gallery. Customers can deploy these
appliances into their virtual networks, and specifically, at their security boundaries (including the perimeter
network subnets) to complete a multi-tiered secure network environment.
With these features and capabilities, one example of how a perimeter network architecture could be constructed in
Azure is the following diagram:
TIP
Keep the following two groups separate: the individuals authorized to access the perimeter network security gear and the
individuals authorized as application development, deployment, or operations administrators. Keeping these groups separate
allows for a segregation of duties and prevents a single person from bypassing both applications security and network
security controls.
TIP
Use the smallest number of boundaries that satisfy the security requirements for a given situation. With more boundaries,
operations and troubleshooting can be more difficult, as well as the management overhead involved with managing the
multiple boundary policies over time. However, insufficient boundaries increase risk. Finding the balance is critical.
The preceding figure shows a high-level view of a three security boundary network. The boundaries are between
the perimeter network and the Internet, the Azure front-end and back-end private subnets, and the Azure back-end
subnet and the on-premises corporate network.
2) Where are the boundaries located?
Once the number of boundaries are decided, where to implement them is the next decision point. There are
generally three choices:
Using an Internet-based intermediary service (for example, a cloud-based Web application firewall, which is not
discussed in this document)
Using native features and/or network virtual appliances in Azure
Using physical devices on the on-premises network
On purely Azure networks, the options are native Azure features (for example, Azure Load Balancers) or network
virtual appliances from the rich partner ecosystem of Azure (for example, Check Point firewalls).
If a boundary is needed between Azure and an on-premises network, the security devices can reside on either side
of the connection (or both sides). Thus a decision must be made on the location to place security gear.
In the previous figure, the Internet-to-perimeter network and the front-to-back-end boundaries are entirely
contained within Azure, and must be either native Azure features or network virtual appliances. Security devices
on the boundary between Azure (back-end subnet) and the corporate network could be either on the Azure side or
the on-premises side, or even a combination of devices on both sides. There can be significant advantages and
disadvantages to either option that must be seriously considered.
For example, using existing physical security gear on the on-premises network side has the advantage that no new
gear is needed. It just needs reconfiguration. The disadvantage, however, is that all traffic must come back from
Azure to the on-premises network to be seen by the security gear. Thus Azure-to-Azure traffic could incur
significant latency, and affect application performance and user experience, if it was forced back to the on-premises
network for security policy enforcement.
3) How are the boundaries implemented?
Each security boundary will likely have different capability requirements (for example, IDS and firewall rules on the
Internet side of the perimeter network, but only ACLs between the perimeter network and back-end subnet).
Deciding on which device (or how many devices) to use depends on the scenario and security requirements. In the
following section, examples 1, 2, and 3 discuss some options that could be used. Reviewing the Azure native
network features and the devices available in Azure from the partner ecosystem shows the myriad options
available to solve virtually any scenario.
Another key implementation decision point is how to connect the on-premises network with Azure. Should you
use the Azure virtual gateway or a network virtual appliance? These options are discussed in greater detail in the
following section (examples 4, 5, and 6).
Additionally, traffic between virtual networks within Azure may be needed. These scenarios will be added in the
future.
Once you know the answers to the previous questions, the Fast Start section can help identify which examples are
most appropriate for a given scenario.
Environment description
In this example, there is a subscription that contains the following resources:
A single resource group
A virtual network with two subnets: “FrontEnd” and “BackEnd”
A Network Security Group that is applied to both subnets
A Windows server that represents an application web server (“IIS01”)
Two Windows servers that represent application back-end servers (“AppVM01”, “AppVM02”)
A Windows server that represents a DNS server (“DNS01”)
A public IP associated with the application web server
For scripts and an Azure Resource Manager template, see the detailed build instructions.
NSG description
In this example, an NSG group is built and then loaded with six rules.
TIP
Generally speaking, you should create your specific “Allow” rules first, followed by the more generic “Deny” rules. The given
priority dictates which rules are evaluated first. Once traffic is found to apply to a specific rule, no further rules are evaluated.
NSG rules can apply in either the inbound or outbound direction (from the perspective of the subnet).
Declaratively, the following rules are being built for inbound traffic:
1. Internal DNS traffic (port 53) is allowed.
2. RDP traffic (port 3389) from the Internet to any Virtual Machine is allowed.
3. HTTP traffic (port 80) from the Internet to web server (IIS01) is allowed.
4. Any traffic (all ports) from IIS01 to AppVM1 is allowed.
5. Any traffic (all ports) from the Internet to the entire virtual network (both subnets) is denied.
6. Any traffic (all ports) from the front-end subnet to the back-end subnet is denied.
With these rules bound to each subnet, if an HTTP request was inbound from the Internet to the web server, both
rules 3 (allow ) and 5 (deny) would apply. But because rule 3 has a higher priority, only it would apply, and rule 5
would not come into play. Thus the HTTP request would be allowed to the web server. If that same traffic was
trying to reach the DNS01 server, rule 5 (deny) would be the first to apply, and the traffic would not be allowed to
pass to the server. Rule 6 (deny) blocks the front-end subnet from talking to the back-end subnet (except for
allowed traffic in rules 1 and 4). This rule-set protects the back-end network in case an attacker compromises the
web application on the front end. The attacker would have limited access to the back-end “protected” network
(only to resources exposed on the AppVM01 server).
There is a default outbound rule that allows traffic out to the Internet. For this example, we’re allowing outbound
traffic and not modifying any outbound rules. To lock down traffic in both directions, user-defined routing is
required (see example 3).
Conclusion
This example is a relatively simple and straightforward way of isolating the back-end subnet from inbound traffic.
For more information, see the detailed build instructions. These instructions include:
How to build this perimeter network with classic PowerShell scripts.
How to build this perimeter network with an Azure Resource Manager template.
Detailed descriptions of each NSG command.
Detailed traffic flow scenarios, showing how traffic is allowed or denied in each layer.
Example 2 Build a perimeter network to help protect applications with a firewall and NSGs
Back to Fast start | Detailed build instructions for this example
Environment description
In this example, there is a subscription that contains the following resources:
A single resource group
A virtual network with two subnets: “FrontEnd” and “BackEnd”
A Network Security Group that is applied to both subnets
A network virtual appliance, in this case a firewall, connected to the front-end subnet
A Windows server that represents an application web server (“IIS01”)
Two Windows servers that represent application back-end servers (“AppVM01”, “AppVM02”)
A Windows server that represents a DNS server (“DNS01”)
For scripts and an Azure Resource Manager template, see the detailed build instructions.
NSG description
In this example, an NSG group is built and then loaded with six rules.
TIP
Generally speaking, you should create your specific “Allow” rules first, followed by the more generic “Deny” rules. The given
priority dictates which rules are evaluated first. Once traffic is found to apply to a specific rule, no further rules are evaluated.
NSG rules can apply in either the inbound or outbound direction (from the perspective of the subnet).
Declaratively, the following rules are being built for inbound traffic:
1. Internal DNS traffic (port 53) is allowed.
2. RDP traffic (port 3389) from the Internet to any Virtual Machine is allowed.
3. Any Internet traffic (all ports) to the network virtual appliance (firewall) is allowed.
4. Any traffic (all ports) from IIS01 to AppVM1 is allowed.
5. Any traffic (all ports) from the Internet to the entire virtual network (both subnets) is denied.
6. Any traffic (all ports) from the front-end subnet to the back-end subnet is denied.
With these rules bound to each subnet, if an HTTP request was inbound from the Internet to the firewall, both
rules 3 (allow ) and 5 (deny) would apply. But because rule 3 has a higher priority, only it would apply, and rule 5
would not come into play. Thus the HTTP request would be allowed to the firewall. If that same traffic was trying
to reach the IIS01 server, even though it’s on the front-end subnet, rule 5 (deny) would apply, and the traffic would
not be allowed to pass to the server. Rule 6 (deny) blocks the front-end subnet from talking to the back-end subnet
(except for allowed traffic in rules 1 and 4). This rule-set protects the back-end network in case an attacker
compromises the web application on the front end. The attacker would have limited access to the back-end
“protected” network (only to resources exposed on the AppVM01 server).
There is a default outbound rule that allows traffic out to the Internet. For this example, we’re allowing outbound
traffic and not modifying any outbound rules. To lock down traffic in both directions, user-defined routing is
required (see example 3).
Firewall rule description
On the firewall, forwarding rules should be created. Since this example only routes Internet traffic in-bound to the
firewall and then to the web server, only one forwarding network address translation (NAT) rule is needed.
The forwarding rule accepts any inbound source address that hits the firewall trying to reach HTTP (port 80 or 443
for HTTPS ). It's sent out of the firewall’s local interface and redirected to the web server with the IP Address of
10.0.1.5.
Conclusion
This example is a relatively straightforward way of protecting your application with a firewall and isolating the
back-end subnet from inbound traffic. For more information, see the detailed build instructions. These instructions
include:
How to build this perimeter network with classic PowerShell scripts.
How to build this example with an Azure Resource Manager template.
Detailed descriptions of each NSG command and firewall rule.
Detailed traffic flow scenarios, showing how traffic is allowed or denied in each layer.
Example 3 Build a perimeter network to help protect networks with a firewall and UDR and NSG
Back to Fast start | Detailed build instructions for this example
Environment description
In this example, there is a subscription that contains the following resources:
A single resource group
A virtual network with three subnets: “SecNet”, “FrontEnd”, and “BackEnd”
A network virtual appliance, in this case a firewall, connected to the SecNet subnet
A Windows server that represents an application web server (“IIS01”)
Two Windows servers that represent application back-end servers (“AppVM01”, “AppVM02”)
A Windows server that represents a DNS server (“DNS01”)
For scripts and an Azure Resource Manager template, see the detailed build instructions.
UDR description
By default, the following system routes are defined as:
Effective routes :
Address Prefix Next hop type Next hop IP address Status Source
-------------- ------------- ------------------- ------ ------
{10.0.0.0/16} VNETLocal Active Default
{0.0.0.0/0} Internet Active Default
{10.0.0.0/8} Null Active Default
{100.64.0.0/10} Null Active Default
{172.16.0.0/12} Null Active Default
{192.168.0.0/16} Null Active Default
The VNETLocal is always one or more defined address prefixes that make up the virtual network for that specific
network (that is, it changes from virtual network to virtual network, depending on how each specific virtual
network is defined). The remaining system routes are static and default as indicated in the table.
In this example, two routing tables are created, one each for the front-end and back-end subnets. Each table is
loaded with static routes appropriate for the given subnet. In this example, each table has three routes that direct
all traffic (0.0.0.0/0) through the firewall (Next hop = Virtual Appliance IP address):
1. Local subnet traffic with no Next Hop defined to allow local subnet traffic to bypass the firewall.
2. Virtual network traffic with a Next Hop defined as firewall. This next hop overrides the default rule that allows
local virtual network traffic to route directly.
3. All remaining traffic (0/0) with a Next Hop defined as the firewall.
TIP
Not having the local subnet entry in the UDR breaks local subnet communications.
In our example, 10.0.1.0/24 pointing to VNETLocal is critical! Without it, packet leaving the Web Server (10.0.1.4) destined
to another local server (for example) 10.0.1.25 will fail as they will be sent to the NVA. The NVA will send it to the subnet,
and the subnet will resend it to the NVA in an infinite loop.
The chances of a routing loop are typically higher on appliances with multiple NICs that are connected to separate
subnets, which is often of traditional, on-premises appliances.
Once the routing tables are created, they must be bound to their subnets. The front-end subnet routing table, once
created and bound to the subnet, would look like this output:
Effective routes :
Address Prefix Next hop type Next hop IP address Status Source
-------------- ------------- ------------------- ------ ------
{10.0.1.0/24} VNETLocal Active
{10.0.0.0/16} VirtualAppliance 10.0.0.4 Active
{0.0.0.0/0} VirtualAppliance 10.0.0.4 Active
NOTE
UDR can now be applied to the gateway subnet on which the ExpressRoute circuit is connected.
Examples of how to enable your perimeter network with ExpressRoute or site-to-site networking are shown in examples 3
and 4.
IP Forwarding description
IP Forwarding is a companion feature to UDR. IP Forwarding is a setting on a virtual appliance that allows it to
receive traffic not specifically addressed to the appliance, and then forward that traffic to its ultimate destination.
For example, if AppVM01 makes a request to the DNS01 server, UDR would route this traffic to the firewall. With
IP Forwarding enabled, the traffic for the DNS01 destination (10.0.2.4) is accepted by the appliance (10.0.0.4) and
then forwarded to its ultimate destination (10.0.2.4). Without IP Forwarding enabled on the firewall, traffic would
not be accepted by the appliance even though the route table has the firewall as the next hop. To use a virtual
appliance, it’s critical to remember to enable IP Forwarding along with UDR.
NSG description
In this example, an NSG group is built and then loaded with a single rule. This group is then bound only to the
front-end and back-end subnets (not the SecNet). Declaratively the following rule is being built:
Any traffic (all ports) from the Internet to the entire virtual network (all subnets) is denied.
Although NSGs are used in this example, its main purpose is as a secondary layer of defense against manual
misconfiguration. The goal is to block all inbound traffic from the Internet to either the front-end or back-end
subnets. Traffic should only flow through the SecNet subnet to the firewall (and then, if appropriate, on to the
front-end or back-end subnets). Plus, with the UDR rules in place, any traffic that did make it into the front-end or
back-end subnets would be directed out to the firewall (thanks to UDR ). The firewall would see this traffic as an
asymmetric flow and would drop the outbound traffic. Thus there are three layers of security protecting the
subnets:
No Public IP addresses on any FrontEnd or BackEnd NICs.
NSGs denying traffic from the Internet.
The firewall dropping asymmetric traffic.
One interesting point regarding the NSG in this example is that it contains only one rule, which is to deny Internet
traffic to the entire virtual network, including the Security subnet. However, since the NSG is only bound to the
front-end and back-end subnets, the rule isn’t processed on traffic inbound to the Security subnet. As a result,
traffic flows to the Security subnet.
Firewall rules
On the firewall, forwarding rules should be created. Since the firewall is blocking or forwarding all inbound,
outbound, and intra-virtual network traffic, many firewall rules are needed. Also, all inbound traffic hits the
Security Service public IP address (on different ports), to be processed by the firewall. A best practice is to diagram
the logical flows before setting up the subnets and firewall rules, to avoid rework later. The following figure is a
logical view of the firewall rules for this example:
NOTE
Based on the Network Virtual Appliance used, the management ports vary. In this example, a Barracuda NextGen Firewall is
referenced, which uses ports 22, 801, and 807. Consult the appliance vendor documentation to find the exact ports used for
management of the device being used.
TIP
On the second application traffic rule, to simplify this example, any port is allowed. In a real scenario, the most specific port
and address ranges should be used to reduce the attack surface of this rule.
Once the previous rules are created, it’s important to review the priority of each rule to ensure traffic is allowed or
denied as desired. For this example, the rules are in priority order.
Conclusion
This example is a more complex but complete way of protecting and isolating the network than the previous
examples. (Example 2 protects just the application, and Example 1 just isolates subnets). This design allows for
monitoring traffic in both directions, and protects not just the inbound application server but enforces network
security policy for all servers on this network. Also, depending on the appliance used, full traffic auditing and
awareness can be achieved. For more information, see the detailed build instructions. These instructions include:
How to build this example perimeter network with classic PowerShell scripts.
How to build this example with an Azure Resource Manager template.
Detailed descriptions of each UDR, NSG command, and firewall rule.
Detailed traffic flow scenarios, showing how traffic is allowed or denied in each layer.
Example 4 Add a hybrid connection with a site -to -site, virtual appliance VPN
Back to Fast start | Detailed build instructions available soon
Environment description
Hybrid networking using a network virtual appliance (NVA) can be added to any of the perimeter network types
described in examples 1, 2, or 3.
As shown in the previous figure, a VPN connection over the Internet (site-to-site) is used to connect an on-
premises network to an Azure virtual network via an NVA.
NOTE
If you use ExpressRoute with the Azure Public Peering option enabled, a static route should be created. This static route
should route to the NVA VPN IP address out your corporate Internet and not via the ExpressRoute connection. The NAT
required on the ExpressRoute Azure Public Peering option can break the VPN session.
Once the VPN is in place, the NVA becomes the central hub for all networks and subnets. The firewall forwarding
rules determine which traffic flows are allowed, are translated via NAT, are redirected, or are dropped (even for
traffic flows between the on-premises network and Azure).
Traffic flows should be considered carefully, as they can be optimized or degraded by this design pattern,
depending on the specific use case.
Using the environment built in example 3, and then adding a site-to-site VPN hybrid network connection,
produces the following design:
The on-premises router, or any other network device that is compatible with your NVA for VPN, would be the
VPN client. This physical device would be responsible for initiating and maintaining the VPN connection with your
NVA.
Logically to the NVA, the network looks like four separate “security zones” with the rules on the NVA being the
primary director of traffic between these zones:
Conclusion
The addition of a site-to-site VPN hybrid network connection to an Azure virtual network can extend the on-
premises network into Azure in a secure manner. In using a VPN connection, your traffic is encrypted and routes
via the Internet. The NVA in this example provides a central location to enforce and manage the security policy. For
more information, see the detailed build instructions (forthcoming). These instructions include:
How to build this example perimeter network with PowerShell scripts.
How to build this example with an Azure Resource Manager template.
Detailed traffic flow scenarios, showing how traffic flows through this design.
Example 5 Add a hybrid connection with a site -to -site, Azure VPN gateway
Back to Fast start | Detailed build instructions available soon
Environment description
Hybrid networking using an Azure VPN gateway can be added to either perimeter network type described in
examples 1 or 2.
As shown in the preceding figure, a VPN connection over the Internet (site-to-site) is used to connect an on-
premises network to an Azure virtual network via an Azure VPN gateway.
NOTE
If you use ExpressRoute with the Azure Public Peering option enabled, a static route should be created. This static route
should route to the NVA VPN IP address out your corporate Internet and not via the ExpressRoute WAN. The NAT required
on the ExpressRoute Azure Public Peering option can break the VPN session.
The following figure shows the two network edges in this example. On the first edge, the NVA and NSGs control
traffic flows for intra-Azure networks and between Azure and the Internet. The second edge is the Azure VPN
gateway, which is a separate and isolated network edge between on-premises and Azure.
Traffic flows should be considered carefully, as they can be optimized or degraded by this design pattern,
depending on the specific use case.
Using the environment built in example 1, and then adding a site-to-site VPN hybrid network connection,
produces the following design:
Conclusion
The addition of a site-to-site VPN hybrid network connection to an Azure virtual network can extend the on-
premises network into Azure in a secure manner. Using the native Azure VPN gateway, your traffic is IPSec
encrypted and routes via the Internet. Also, using the Azure VPN gateway can provide a lower-cost option (no
additional licensing cost as with third-party NVAs). This option is most economical in example 1, where no NVA is
used. For more information, see the detailed build instructions (forthcoming). These instructions include:
How to build this example perimeter network with PowerShell scripts.
How to build this example with an Azure Resource Manager template.
Detailed traffic flow scenarios, showing how traffic flows through this design.
Example 6 Add a hybrid connection with ExpressRoute
Back to Fast start | Detailed build instructions available soon
Environment description
Hybrid networking using an ExpressRoute private peering connection can be added to either perimeter network
type described in examples 1 or 2.
As shown in the preceding figure, ExpressRoute private peering provides a direct connection between your on-
premises network and the Azure virtual network. Traffic transits only the service provider network and the
Microsoft Azure network, never touching the Internet.
TIP
Using ExpressRoute keeps corporate network traffic off the Internet. It also allows for service level agreements from your
ExpressRoute provider. The Azure Gateway can pass up to 10 Gbps with ExpressRoute, whereas with site-to-site VPNs, the
Azure Gateway maximum throughput is 200 Mbps.
As seen in the following diagram, with this option the environment now has two network edges. The NVA and
NSG control traffic flows for intra-Azure networks and between Azure and the Internet, while the gateway is a
separate and isolated network edge between on-premises and Azure.
Traffic flows should be considered carefully, as they can be optimized or degraded by this design pattern,
depending on the specific use case.
Using the environment built in example 1, and then adding an ExpressRoute hybrid network connection, produces
the following design:
Conclusion
The addition of an ExpressRoute Private Peering network connection can extend the on-premises network into
Azure in a secure, lower latency, higher performing manner. Also, using the native Azure Gateway, as in this
example, provides a lower-cost option (no additional licensing as with third-party NVAs). For more information,
see the detailed build instructions (forthcoming). These instructions include:
How to build this example perimeter network with PowerShell scripts.
How to build this example with an Azure Resource Manager template.
Detailed traffic flow scenarios, showing how traffic flows through this design.
References
Helpful websites and documentation
Access Azure with Azure Resource Manager:
Accessing Azure with PowerShell: https://docs.microsoft.com/powershell/azureps-cmdlets-docs/
Virtual networking documentation: https://docs.microsoft.com/azure/virtual-network/
Network security group documentation: https://docs.microsoft.com/azure/virtual-network/virtual-networks-
nsg
User-defined routing documentation: https://docs.microsoft.com/azure/virtual-network/virtual-networks-udr-
overview
Azure virtual gateways: https://docs.microsoft.com/azure/vpn-gateway/
Site-to-Site VPNs: https://docs.microsoft.com/azure/vpn-gateway/vpn-gateway-create-site-to-site-rm-
powershell
ExpressRoute documentation (be sure to check out the “Getting Started” and “How To” sections):
https://docs.microsoft.com/azure/expressroute/
Securing PaaS deployments
1/31/2019 • 11 minutes to read • Edit Online
Organizations are able to improve their threat detection and response times by using a provider’s cloud-based
security capabilities and cloud intelligence. By shifting responsibilities to the cloud provider, organizations can get
more security coverage, which enables them to reallocate security resources and budget to other business
priorities.
Division of responsibility
It’s important to understand the division of responsibility between you and Microsoft. On-premises, you own the
whole stack but as you move to the cloud some responsibilities transfer to Microsoft. The following responsibility
matrix shows the areas of the stack in a SaaS, PaaS, and IaaS deployment that you are responsible for and
Microsoft is responsible for.
For all cloud deployment types, you own your data and identities. You are responsible for protecting the security of
your data and identities, on-premises resources, and the cloud components you control (which varies by service
type).
Responsibilities that are always retained by you, regardless of the type of deployment, are:
Data
Endpoints
Account
Access management
Starting at the bottom of the stack, the physical infrastructure, Microsoft mitigates common risks and
responsibilities. Because the Microsoft cloud is continually monitored by Microsoft, it is hard to attack. It doesn’t
make sense for an attacker to pursue the Microsoft cloud as a target. Unless the attacker has lots of money and
resources, the attacker is likely to move on to another target.
In the middle of the stack, there is no difference between a PaaS deployment and on-premises. At the application
layer and the account and access management layer, you have similar risks. In the next steps section of this article,
we will guide you to best practices for eliminating or minimizing these risks.
At the top of the stack, data governance and rights management, you take on one risk that can be mitigated by key
management. (Key management is covered in best practices.) While key management is an additional
responsibility, you have areas in a PaaS deployment that you no longer have to manage so you can shift resources
to key management.
The Azure platform also provides you strong DDoS protection by using various network-based technologies.
However, all types of network-based DDoS protection methods have their limits on a per-link and per-datacenter
basis. To help avoid the impact of large DDoS attacks, you can take advantage of Azure’s core cloud capability of
enabling you to quickly and automatically scale out to defend against DDoS attacks. We'll go into more detail on
how you can do this in the recommended practices articles.
NOTE
Monitoring App Service is in preview and available only on the Standard tier of Security Center.
Next steps
In this article, we focused on security advantages of an Azure PaaS deployment and security best practices for
cloud applications. Next, learn recommended practices for securing your PaaS web and mobile solutions using
specific Azure services. We’ll start with Azure App Service, Azure SQL Database and Azure SQL Data Warehouse,
and Azure Storage. As articles on recommended practices for other Azure services become available, links will be
provided in the following list:
Azure App Service
Azure SQL Database and Azure SQL Data Warehouse
Azure Storage
Azure Cache for Redis
Azure Service Bus
Web Application Firewalls
See Azure security best practices and patterns for more security best practices to use when you’re designing,
deploying, and managing your cloud solutions by using Azure.
The following resources are available to provide more general information about Azure security and related
Microsoft services:
Azure Security Team Blog - for up to date information on the latest in Azure Security
Microsoft Security Response Center - where Microsoft security vulnerabilities, including issues with Azure, can
be reported or via email to [email protected]
Best practices for securing PaaS web and mobile
applications using Azure App Service
12/20/2018 • 2 minutes to read • Edit Online
In this article, we discuss a collection of Azure App Service security best practices for securing your PaaS web and
mobile applications. These best practices are derived from our experience with Azure and the experiences of
customers like yourself.
Azure App Service is a platform-as-a-service (PaaS ) offering that lets you create web and mobile apps for any
platform or device and connect to data anywhere, in the cloud or on-premises. App Service includes the web and
mobile capabilities that were previously delivered separately as Azure Websites and Azure Mobile Services. It also
includes new capabilities for automating business processes and hosting cloud APIs. As a single integrated
service, App Service brings a rich set of capabilities to web, mobile, and integration scenarios.
Next steps
This article introduced you to a collection of App Service security best practices for securing your PaaS web and
mobile applications. To learn more about securing your PaaS deployments, see:
Securing PaaS deployments
Securing PaaS databases in Azure
Best practices for securing PaaS web and mobile
applications using Azure Storage
9/28/2018 • 5 minutes to read • Edit Online
In this article, we discuss a collection of Azure Storage security best practices for securing your platform-as-a-
service (PaaS ) web and mobile applications. These best practices are derived from our experience with Azure and
the experiences of customers like yourself.
Azure makes it possible to deploy and use storage in ways not easily achievable on-premises. With Azure storage,
you can reach high levels of scalability and availability with relatively little effort. Not only is Azure Storage the
foundation for Windows and Linux Azure Virtual Machines, it can also support large distributed applications.
Azure Storage provides the following four services: Blob storage, Table storage, Queue storage, and File storage.
To learn more, see Introduction to Microsoft Azure Storage.
The Azure Storage security guide is a great source for detailed information about Azure Storage and security. This
best practices article addresses at a high level some of the concepts found in the security guide and links to the
security guide, as well as other sources, for more information.
This article addresses the following best practices:
Shared access signatures (SAS )
Role-based access control (RBAC )
Client side encryption for high value data
Storage Service Encryption
Next steps
This article introduced you to a collection of Azure Storage security best practices for securing your PaaS web and
mobile applications. To learn more about securing your PaaS deployments, see:
Securing PaaS deployments
Securing PaaS web and mobile applications using Azure App Services
Securing PaaS databases in Azure
Best practices for securing PaaS databases in Azure
9/28/2018 • 4 minutes to read • Edit Online
In this article, we discuss a collection of Azure SQL Database and SQL Data Warehouse security best practices for
securing your platform-as-a-service (PaaS ) web and mobile applications. These best practices are derived from
our experience with Azure and the experiences of customers like yourself.
Azure SQL Database and SQL Data Warehouse provide a relational database service for your internet-based
applications. Let’s look at services that help protect your applications and data when using Azure SQL Database
and SQL Data Warehouse in a PaaS deployment:
Azure Active Directory authentication (instead of SQL Server authentication)
Azure SQL firewall
Transparent Data Encryption (TDE )
NOTE
To ensure that Azure Active Directory is a good fit for your environment, see Azure AD features and limitations.
Next steps
This article introduced you to a collection of SQL Database and SQL Data Warehouse security best practices for
securing your PaaS web and mobile applications. To learn more about securing your PaaS deployments, see:
Securing PaaS deployments
Securing PaaS web and mobile applications using Azure App Services
Internet of Things security overview
2/4/2019 • 2 minutes to read • Edit Online
Azure internet of things (IoT) services offer a broad range of capabilities. These enterprise grade services enable
you to:
Collect data from devices
Analyze data streams in-motion
Store and query large data sets
Visualize both real-time and historical data
Integrate with back-office systems
To deliver these capabilities, Azure IoT solution accelerators package together multiple Azure services with custom
extensions as preconfigured solutions. These preconfigured solutions are base implementations of common IoT
solution patterns that help to reduce the time you take to deliver your IoT solutions. Using the IoT software
development kits, you can customize and extend these solutions to meet your own requirements. You can also use
these solutions as examples or templates when you are developing new IoT solutions.
The Azure IoT solution accelerators are powerful solutions for your IoT needs. However, it’s of upmost importance
that your IoT solutions are designed with security in mind from the start. Because of the sheer number of IoT
devices, any security incident can quickly become a widespread event with significant consequences.
To help you understand how to secure your IoT solutions, we have the following information.
Security architecture
When designing a system, it is important to understand the potential threats to that system, and add appropriate
defenses accordingly, as the system is designed and architected. It is important to design the product from the start
with security in mind because understanding how an attacker might be able to compromise a system helps make
sure appropriate mitigations are in place from the beginning.
You can learn about IoT security architecture by reading Internet of Things Security Architecture.
This article discusses the following topics:
Security Starts with a Threat Model
Security in IoT
Threat Modeling the Azure IoT Reference Architecture
Best Practices
Securing an IoT infrastructure requires a rigorous security-in-depth strategy. From securing data in the cloud,
protecting data integrity while in transit over the public internet, to securely provisioning devices, each layer builds
greater security assurance in the overall infrastructure.
You can learn about Internet of Things security best practices by reading Internet of Things security best practices.
The article discusses the following topics:
IoT hardware manufacturer/integrator
IoT solution developer
IoT solution deployer
IoT solution operator
2 minutes to read
2 minutes to read
2 minutes to read
Azure Service Fabric security overview
7/3/2018 • 9 minutes to read • Edit Online
Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable
and reliable microservices. Service Fabric addresses the challenges of developing and managing cloud applications.
Developers and administrators can avoid complex infrastructure problems and focus on implementing mission-
critical, demanding workloads that are scalable and reliable.
This article is an overview of security considerations for a Service Fabric deployment.
ClientCertificateCommonNames This is the common name of the first client certificate for
CertificateCommonName. CertificateIssuerThumbprint is the
thumbprint for the issuer of this certificate.
For more information about securing certificates, see Secure a standalone cluster on Windows by using X.509
certificates.
Next steps
For conceptual information about cluster security, see Create a Service Fabric cluster by using Azure Resource
Manager and Create a Service Fabric cluster by using the Azure portal.
To learn more about cluster security in Service Fabric, see Service Fabric cluster security scenarios.
Azure Service Fabric security best practices
1/17/2019 • 10 minutes to read • Edit Online
Deploying an application on Azure is fast, easy, and cost-effective. Before you deploy your cloud application into
production, review our list of essential and recommended best practices for implementing secure clusters in your
application.
Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable
and reliable microservices. Service Fabric also addresses the significant challenges in developing and managing
cloud applications. Developers and administrators can avoid complex infrastructure problems and focus on
implementing mission-critical, demanding workloads that are scalable, reliable, and manageable.
For each best practice, we explain:
What the best practice is.
Why you should implement the best practice.
What might happen if you don't implement the best practice.
How you can learn to implement the best practice.
We recommend the following Azure Service Fabric security best practices:
Use Azure Resource Manager templates and the Service Fabric PowerShell module to create secure clusters.
Use X.509 certificates.
Configure security policies.
Implement the Reliable Actors security configuration.
Configure SSL for Azure Service Fabric.
Use network isolation and security with Azure Service Fabric.
Configure Azure Key Vault for security.
Assign users to roles.
NOTE
Security recommendation for Azure clusters: Use Azure AD security to authenticate clients and certificates for node-to-
node security.
To configure a standalone Windows cluster, see Configure settings for a standalone Windows cluster.
Use Azure Resource Manager templates and the Service Fabric PowerShell module to create a secure cluster. For
step-by-step instructions to create a secure Service Fabric cluster by using Azure Resource Manager templates, see
Creating a Service Fabric cluster.
Use the Azure Resource Manager template:
Customize your cluster by using the template to configure managed storage for VM virtual hard disks (VHDs).
Drive changes to your resource group by using the template for easy configuration management and auditing.
Treat your cluster configuration as code:
Be thorough when checking your deployment configurations.
Avoid using implicit commands to directly modify your resources.
Many aspects of the Service Fabric application lifecycle can be automated. The Service Fabric PowerShell module
automates common tasks for deploying, upgrading, removing, and testing Azure Service Fabric applications.
Managed APIs and HTTP APIs for application management are also available.
NOTE
You cannot obtain an SSL certificate from a CA for the cloudapp.net domain.
NOTE
For more information about using roles in Service Fabric, see Role-Based Access Control for Service Fabric clients.
Azure Service Fabric supports two access control types for clients that are connected to a Service Fabric cluster:
administrator and user. The cluster administrator can use access control to limit access to certain cluster operations
for different groups of users. Access control makes the cluster more secure.
Next steps
Service Fabric security checklist
Set up your Service Fabric development environment.
Learn about Service Fabric support options.
Azure Service Fabric security checklist
1/17/2019 • 2 minutes to read • Edit Online
This article provides an easy-to-use checklist that will help you secure your Azure Service Fabric environment.
Introduction
Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable
and reliable microservices. Service Fabric also addresses the significant challenges in developing and managing
cloud applications. Developers and administrators can avoid complex infrastructure problems and focus on
implementing mission-critical, demanding workloads that are scalable, reliable, and manageable.
Checklist
Use the following checklist to help you make sure that you haven’t overlooked any important issues in
management and configuration of a secure Azure Service Fabric solution.
Role based access control (RBAC) Access control allows the cluster administrator to limit
access to certain cluster operations for different groups
of users, making the cluster more secure.
Administrators have full access to management
capabilities (including read/write capabilities).
Users, by default, have only read access to
management capabilities (for example, query
capabilities), and the ability to resolve applications and
services.
X.509 certificates and Service Fabric Certificates used in clusters running production
workloads should be created by using a correctly
configured Windows Server certificate service or
obtained from an approved Certificate Authority (CA).
Never use any temporary or test certificates in
production that are created with tools such as
MakeCert.exe.
You can use a self-signed certificate but, should only
do so for test clusters and not in production.
ClientCertificateCommonNames Set the common name of the first client certificate for
the CertificateCommonName. The
CertificateIssuerThumbprint is the thumbprint for the
issuer of this certificate.
Next steps
Service Fabric security best practices
Service Fabric Cluster upgrade process and expectations from you
Managing your Service Fabric applications in Visual Studio.
Service Fabric Health model introduction.
Azure security management and monitoring
overview
10/30/2018 • 6 minutes to read • Edit Online
Azure provides security mechanisms to aid in the management and monitoring of Azure cloud services and virtual
machines (VMs). This article provides an overview of these core security features and services. Links are provided
to articles that give details of each so you can learn more.
The security of your Microsoft cloud services is a partnership and a shared responsibility between you and
Microsoft. Microsoft is responsible for the Azure platform and the physical security of its datacenters (by using
security protections such as locked badge-entry doors, fences, and guards). Azure provides strong levels of cloud
security at the software layer that meets the security, privacy, and compliance needs of its customers.
You own your data and identities, the responsibility for protecting them, the security of your on-premises
resources, and the security of cloud components over which you have control. Microsoft gives you security controls
and capabilities to help you protect your data and applications. Your degree of responsibility for security is based
on the type of cloud service.
The following chart summarizes the balance of responsibility between Microsoft and the customer.
For more information about security management, see Security management in Azure.
Antimalware
With Azure, you can use antimalware software from major security vendors such as Microsoft, Symantec, Trend
Micro, McAfee, and Kaspersky. This software helps protect your virtual machines from malicious files, adware, and
other threats.
Microsoft Antimalware for Azure Cloud Services and Virtual Machines offers you the ability to install an
antimalware agent for both PaaS roles and virtual machines. Based on System Center Endpoint Protection, this
feature brings proven on-premises security technology to the cloud.
We also offer deep integration for Trend’s Deep Security and SecureCloud products in the Azure platform. Deep
Security is an antivirus solution, and SecureCloud is an encryption solution. Deep Security is deployed inside VMs
through an extension model. By using the Azure portal UI and PowerShell, you can choose to use Deep Security
inside new VMs that are being spun up, or existing VMs that are already deployed.
Symantec Endpoint Protection (SEP ) is also supported on Azure. Through portal integration, you can specify that
you intend to use SEP on a VM. SEP can be installed on a new VM via the Azure portal, or it can be installed on an
existing VM via PowerShell.
Learn more:
Deploying Antimalware Solutions on Azure Virtual Machines
Microsoft Antimalware for Azure Cloud Services and Virtual Machines
How to install and configure Trend Micro Deep Security as a Service on a Windows VM
How to install and configure Symantec Endpoint Protection on a Windows VM
New Antimalware Options for Protecting Azure Virtual Machines
Multi-Factor Authentication
Azure Multi-Factor Authentication is a method of authentication that requires the use of more than one verification
method. It adds a critical second layer of security to user sign-ins and transactions.
Multi-Factor Authentication helps safeguard access to data and applications while meeting user demand for a
simple sign-in process. It delivers strong authentication via a range of verification options (phone call, text
message, or mobile app notification or verification code) and third-party OATH tokens.
Learn more:
Multi-Factor Authentication
What is Azure Multi-Factor Authentication?
How Azure Multi-Factor Authentication works
ExpressRoute
You can use Azure ExpressRoute to extend your on-premises networks into the Microsoft Cloud over a dedicated
private connection that's facilitated by a connectivity provider. With ExpressRoute, you can establish connections to
Microsoft cloud services such as Azure, Office 365, and CRM Online. Connectivity can be from:
An any-to-any (IP VPN ) network.
A point-to-point Ethernet network.
A virtual cross-connection through a connectivity provider at a co-location facility.
ExpressRoute connections don't go over the public internet. They can offer more reliability, faster speeds, lower
latencies, and higher security than typical connections over the internet.
Learn more:
ExpressRoute technical overview
Identity Protection
Azure AD Identity Protection provides a consolidated view of suspicious sign-in activities and potential
vulnerabilities to help protect your business. Identity Protection detects suspicious activities for users and
privileged (admin) identities, based on signals like:
Brute-force attacks.
Leaked credentials.
Sign-ins from unfamiliar locations and infected devices.
By providing notifications and recommended remediation, Identity Protection helps to mitigate risks in real time. It
calculates user risk severity. You can configure risk-based policies to automatically help safeguard application
access from future threats.
Learn more:
Azure Active Directory Identity Protection
Channel 9: Azure AD and Identity Show: Identity Protection Preview
Security Center
Azure Security Center helps you prevent, detect, and respond to threats. Security Center gives you increased
visibility into, and control over, the security of your Azure resources. It provides integrated security monitoring and
policy management across your Azure subscriptions. It helps detect threats that might otherwise go unnoticed, and
works with a broad ecosystem of security solutions.
Security Center helps you optimize and monitor the security of your Azure resources by:
Enabling you to define policies for your Azure subscription resources according to:
Your company’s security needs.
The type of applications or sensitivity of the data in each subscription.
Monitoring the state of your Azure virtual machines, networking, and applications.
Providing a list of prioritized security alerts, including alerts from integrated partner solutions. It also provides
the information that you need to quickly investigate an attack and recommendations on how to remediate it.
Learn more:
Introduction to Azure Security Center
Improve your secure score in Azure Security Center
Azure Security Center is a unified infrastructure security management system that strengthens the security
posture of your data centers, and provides advanced threat protection across your hybrid workloads in the cloud
- whether they're in Azure or not - as well as on premises.
Keeping your resources safe is a joint effort between your cloud provider, Azure, and you, the customer. You have
to make sure your workloads are secure as you move to the cloud, and at the same time, when you move to IaaS
(infrastructure as a service) there is more customer responsibility than there was in PaaS (platform as a service),
and SaaS (software as a service). Azure Security Center provides you the tools needed to harden your network,
secure your services and make sure you're on top of your security posture.
Azure Security Center addresses the three most urgent security challenges:
Rapidly changing workloads – It’s both a strength and a challenge of the cloud. On the one hand, end
users are empowered to do more. On the other, how do you make sure that the ever-changing services
people are using and creating are up to your security standards and follow security best practices?
Increasingly sophisticated attacks - Wherever you run your workloads, the attacks keep getting more
sophisticated. You have to secure your public cloud workloads, which are, in effect, an Internet facing
workload that can leave you even more vulnerable if you don't follow security best practices.
Security skills are in short supply - The number of security alerts and alerting systems far outnumbers
the number of administrators with the necessary background and experience far to make sure your
environments are protected. Staying up-to-date with the latest attacks is a constant challenge, making it
impossible to stay in place while the world of security is an ever-changing front.
To help you protect yourself against these challenges, Security Center provides you with the tools to:
Strengthen security posture: Security Center assesses your environment and enables you to understand
the status of your resources, are they secure or not?
Protect against threats: Security Center assesses your workloads and raises threat prevention
recommendations and threat detection alerts.
Get secure faster: In Security Center, everything is done in cloud speed. Because it is natively integrated,
deployment of Security Center is easy, providing you with autoprovisioning and protection with Azure
services.
Architecture
Because Security Center is natively part of Azure, PaaS services in Azure - including Service Fabric, SQL
databases, and storage accounts - are monitored and protected by Security Center without necessitating any
deployment.
In addition, Security Center protects non-Azure servers and virtual machines in the cloud or on premises, for
both Windows and Linux servers, by installing the Microsoft Monitoring Agent on them. Azure virtual machines
are auto-provisioned in Security Center.
The events collected from the agents and from Azure are correlated in the security analytics engine to provide
you tailored recommendations (hardening tasks), that you should follow to make sure your workloads are secure,
and threat detection alerts. You should investigate such alerts as soon as possible to make sure malicious attacks
aren't taking place on your workloads.
When you enable Security Center, the security policy built-in to Security Center is reflected in Azure Policy as a
built in initiative under Security Center category. The built-in initiative is automatically assigned to all Security
Center registered subscriptions (Free or Standard tiers). The built-in initiative contains only Audit policies. For
more information about Security Center policies in Azure Policy, see Working with security policies.
Security Center helps you identify Shadow IT subscriptions. By looking at subscriptions labeled not covered
in your dashboard, you can know immediately when there are newly created subscriptions and make sure they
are covered by your policies, and protected by Azure Security Center.
The advanced monitoring capabilities in Security Center also let you track and manage compliance and
governance over time. The overall compliance provides you with a measure of how much your subscriptions
are compliant with policies associated with your workload.
Continuous assessments
Security Center continuously discovers new resources that are being deployed across your workloads and
assesses whether they are configured according to security best practices, if not, they're flagged and you get a
prioritized list of recommendations for what you need to fix in order to protect your machines.
One of the most powerful tools Security Center provides for continuously monitoring the security status of your
network is the Network map. The map enables you to see the topology of your workloads, so you can see if
each node is properly configured. You can see how your nodes are connected, which helps you block unwanted
connections that could potentially make it easier for an attacker to creep along your network.
Security Center makes mitigating your security alerts one step easier, by adding a Secure score. The secure
scores are now associated with each recommendation you receive to help you understand how important each
recommendation is to your overall security posture. This is crucial in enabling you to prioritize your security
work.
Optimize and improve security by configuring recommended controls
The heart of Azure Security Center's value lies in its recommendations. The recommendations are tailored to the
particular security concerns found on your workloads, and Security Center does the security admin work for you,
by not only finding your vulnerabilities, but providing you with specific instructions for how to get rid of them.
In this way, Security Center enables you not just to set security policies, but to apply secure configuration
standards across your resources.
The recommendations help you to reduce the attack surface across each of your resources. That includes Azure
virtual machines, non-Azure servers, and Azure PaaS services such as SQL and Storage accounts and more -
where each type of resource is assessed differently and has its own standards.
Protect against threats
Security Center's threat protection enables you to detect and prevent threats at the Infrastructure as a Service
(IaaS ) layer, non-Azure servers as well as for Platforms as a Service (PaaS ) in Azure.
Security Center's threat protection includes fusion kill-chain analysis, which automatically correlates alerts in
your environment based on cyber kill-chain analysis, to help you better understand the full story of an attack
campaign, where it started and what kind of impact it had on your resources.
Advanced threat protection
With Security Center, you get native integration with Windows Defender Advanced Threat Protection out of the
box. This means that without any configuration, your Windows virtual machines and servers are fully integrated
with Security Center's recommendations and assessments. Advanced threat detection is also offered out of the
box for Linux virtual machines and servers.
In addition, Security Center lets you automate application control policies on server environments. The adaptive
application controls in Security Center enable end-to-end app whitelisting across your Windows servers. You
don't need to create the rules and check violations, it's all done automatically for you.
Protect PaaS
Security Center helps you detect threats across Azure PaaS services. You can detect threats targeting Azure
services including Azure App Service, Azure SQL, Azure Storage Account, and more data services. You can also
take advantage of the native integration with Microsoft Cloud App Security's User and Entity Behavioral
Analytics (UEBA) to perform anomaly detection on your Azure activity logs.
Block brute force attacks
Security Center helps you limit exposure to brute force attacks. By reducing access to virtual machine ports, using
the just-in-time VM access, you can harden your network by preventing unnecessary access. You can set secure
access policies on selected ports, for only authorized users, allowed source IP address ranges or IP addresses,
and for a limited amount of time.
Protect data services
Security Center includes capabilities that help you perform automatic classification of your data in Azure SQL.
You can also get assessments for potential vulnerabilities across Azure SQL and Storage services, and
recommendations for how to mitigate them.
Next steps
To get started with Security Center, you need a subscription to Microsoft Azure. If you do not have a
subscription, you can sign up for a free trial.
Security Center’s Free pricing tier is enabled with your Azure subscription. To take advantage of advanced
security management and threat detection capabilities, you must upgrade to the Standard pricing tier. The
Standard tier can be tried for free. See the Security Center pricing page for more information.
If you’re ready to enable Security Center Standard now, the Quickstart: Onboard your Azure subscription to
Security Center Standard walks you through the steps.
Security management in Azure
11/7/2018 • 20 minutes to read • Edit Online
Azure subscribers may manage their cloud environments from multiple devices, including management
workstations, developer PCs, and even privileged end-user devices that have task-specific permissions. In some
cases, administrative functions are performed through web-based consoles such as the Azure portal. In other
cases, there may be direct connections to Azure from on-premises systems over Virtual Private Networks (VPNs),
Terminal Services, client application protocols, or (programmatically) the Azure Service Management API
(SMAPI). Additionally, client endpoints can be either domain joined or isolated and unmanaged, such as tablets or
smartphones.
Although multiple access and management capabilities provide a rich set of options, this variability can add
significant risk to a cloud deployment. It can be difficult to manage, track, and audit administrative actions. This
variability may also introduce security threats through unregulated access to client endpoints that are used for
managing cloud services. Using general or personal workstations for developing and managing infrastructure
opens unpredictable threat vectors such as web browsing (for example, watering hole attacks) or email (for
example, social engineering and phishing).
The potential for attacks increases in this type of environment because it is challenging to construct security
policies and mechanisms to appropriately manage access to Azure interfaces (such as SMAPI) from widely varied
endpoints.
Remote management threats
Attackers often attempt to gain privileged access by compromising account credentials (for example, through
password brute forcing, phishing, and credential harvesting), or by tricking users into running harmful code (for
example, from harmful websites with drive-by downloads or from harmful email attachments). In a remotely
managed cloud environment, account breaches can lead to an increased risk due to anywhere, anytime access.
Even with tight controls on primary administrator accounts, lower-level user accounts can be used to exploit
weaknesses in one’s security strategy. Lack of appropriate security training can also lead to breaches through
accidental disclosure or exposure of account information.
When a user workstation is also used for administrative tasks, it can be compromised at many different points.
Whether a user is browsing the web, using 3rd-party and open-source tools, or opening a harmful document file
that contains a trojan.
In general, most targeted attacks that result in data breaches can be traced to browser exploits, plug-ins (such as
Flash, PDF, Java), and spear phishing (email) on desktop machines. These machines may have administrative-level
or service-level permissions to access live servers or network devices for operations when used for development
or management of other assets.
Operational security fundamentals
For more secure management and operations, you can minimize a client’s attack surface by reducing the number
of possible entry points. This can be done through security principles: “separation of duties” and “segregation of
environments.”
Isolate sensitive functions from one another to decrease the likelihood that a mistake at one level leads to a breach
in another. Examples:
Administrative tasks should not be combined with activities that might lead to a compromise (for example,
malware in an administrator’s email that then infects an infrastructure server).
A workstation used for high-sensitivity operations should not be the same system used for high-risk purposes
such as browsing the Internet.
Reduce the system’s attack surface by removing unnecessary software. Example:
Standard administrative, support, or development workstation should not require installation of an email client
or other productivity applications if the device’s main purpose is to manage cloud services.
Client systems that have administrator access to infrastructure components should be subjected to the strictest
possible policy to reduce security risks. Examples:
Security policies can include Group Policy settings that deny open Internet access from the device and use of a
restrictive firewall configuration.
Use Internet Protocol security (IPsec) VPNs if direct access is needed.
Configure separate management and development Active Directory domains.
Isolate and filter management workstation network traffic.
Use antimalware software.
Implement multi-factor authentication to reduce the risk of stolen credentials.
Consolidating access resources and eliminating unmanaged endpoints also simplifies management tasks.
Providing security for Azure remote management
Azure provides security mechanisms to aid administrators who manage Azure cloud services and virtual
machines. These mechanisms include:
Authentication and role-based access control.
Monitoring, logging, and auditing.
Certificates and encrypted communications.
A web management portal.
Network packet filtering.
With client-side security configuration and datacenter deployment of a management gateway, it is possible to
restrict and monitor administrator access to cloud applications and data.
NOTE
Certain recommendations in this article may result in increased data, network, or compute resource usage, and may increase
your license or subscription costs.
Security guidelines
In general, helping to secure administrator workstations for use with the cloud is similar to the practices used for
any workstation on-premises—for example, minimized build and restrictive permissions. Some unique aspects of
cloud management are more akin to remote or out-of-band enterprise management. These include the use and
auditing of credentials, security-enhanced remote access, and threat detection and response.
Authentication
You can use Azure logon restrictions to constrain source IP addresses for accessing administrative tools and audit
access requests. To help Azure identify management clients (workstations and/or applications), you can configure
both SMAPI (via customer-developed tools such as Windows PowerShell cmdlets) and the Azure portal to require
client-side management certificates to be installed, in addition to SSL certificates. We also recommend that
administrator access require multi-factor authentication.
Some applications or services that you deploy into Azure may have their own authentication mechanisms for both
end-user and administrator access, whereas others take full advantage of Azure AD. Depending on whether you
are federating credentials via Active Directory Federation Services (AD FS ), using directory synchronization or
maintaining user accounts solely in the cloud, using Microsoft Identity Manager (part of Azure AD Premium) helps
you manage identity lifecycles between the resources.
Connectivity
Several mechanisms are available to help secure client connections to your Azure virtual networks. Two of these
mechanisms, site-to-site VPN (S2S ) and point-to-site VPN (P2S ), enable the use of industry standard IPsec (S2S )
or the Secure Socket Tunneling Protocol (SSTP ) (P2S ) for encryption and tunneling. When Azure is connecting to
public-facing Azure services management such as the Azure portal, Azure requires Hypertext Transfer Protocol
Secure (HTTPS ).
A stand-alone hardened workstation that does not connect to Azure through an RD Gateway should use the
SSTP -based point-to-site VPN to create the initial connection to the Azure Virtual Network, and then establish
RDP connection to individual virtual machines from with the VPN tunnel.
Management auditing vs. policy enforcement
Typically, there are two approaches for helping to secure management processes: auditing and policy enforcement.
Doing both provides comprehensive controls, but may not be possible in all situations. In addition, each approach
has different levels of risk, cost, and effort associated with managing security, particularly as it relates to the level
of trust placed in both individuals and system architectures.
Monitoring, logging, and auditing provide a basis for tracking and understanding administrative activities, but it
may not always be feasible to audit all actions in complete detail due to the amount of data generated. Auditing the
effectiveness of the management policies is a best practice, however.
Policy enforcement that includes strict access controls puts programmatic mechanisms in place that can govern
administrator actions, and it helps ensure that all possible protection measures are being used. Logging provides
proof of enforcement, in addition to a record of who did what, from where, and when. Logging also enables you to
audit and crosscheck information about how administrators follow policies, and it provides evidence of activities
Client configuration
We recommend three primary configurations for a hardened workstation. The biggest differentiators between
them are cost, usability, and accessibility, while maintaining a similar security profile across all options. The
following table provides a short analysis of the benefits and risks to each. (Note that “corporate PC” refers to a
standard desktop PC configuration that would be deployed for all domain users, regardless of roles.)
Stand-alone hardened workstation Tightly controlled workstation higher cost for dedicated desktops
Windows to go with BitLocker drive Compatibility with most PCs Asset tracking
encryption
It is important that the hardened workstation is the host and not the guest, with nothing between the host
operating system and the hardware. Following the “clean source principle” (also known as “secure origin”) means
that the host should be the most hardened. Otherwise, the hardened workstation (guest) is subject to attacks on
the system on which it is hosted.
You can further segregate administrative functions through dedicated system images for each hardened
workstation that have only the tools and permissions needed for managing select Azure and cloud applications,
with specific local AD DS GPOs for the necessary tasks.
For IT environments that have no on-premises infrastructure (for example, no access to a local AD DS instance for
GPOs because all servers are in the cloud), a service such as Microsoft Intune can simplify deploying and
maintaining workstation configurations.
Stand-alone hardened workstation for management
With a stand-alone hardened workstation, administrators have a PC or laptop that they use for administrative
tasks and another, separate PC or laptop for non-administrative tasks. A workstation dedicated to managing your
Azure services does not need other applications installed. Additionally, using workstations that support a Trusted
Platform Module (TPM ) or similar hardware-level cryptography technology aids in device authentication and
prevention of certain attacks. TPM can also support full volume protection of the system drive by using BitLocker
Drive Encryption.
In the stand-alone hardened workstation scenario (shown below ), the local instance of Windows Firewall (or a
non-Microsoft client firewall) is configured to block inbound connections, such as RDP. The administrator can log
on to the hardened workstation and start an RDP session that connects to Azure after establishing a VPN connect
with an Azure Virtual Network, but cannot log on to a corporate PC and use RDP to connect to the hardened
workstation itself.
Best practices
Consider the following additional guidelines when you are managing applications and data in Azure.
Dos and don'ts
Don't assume that because a workstation has been locked down that other common security requirements do not
need to be met. The potential risk is higher because of elevated access levels that administrator accounts generally
possess. Examples of risks and their alternate safe practices are shown in the table below.
DON'T DO
Don't email credentials for administrator access or other Maintain confidentiality by delivering account names and
secrets (for example, SSL or management certificates) passwords by voice (but not storing them in voice mail),
perform a remote installation of client/server certificates (via
an encrypted session), download from a protected network
share, or distribute by hand via removable media.
Don't store account passwords unencrypted or un-hashed in Establish security management principles and system
application storage (such as in spreadsheets, SharePoint sites, hardening policies, and apply them to your development
or file shares). environment.
Don't share accounts and passwords between administrators, Create a dedicated Microsoft account to manage your Azure
or reuse passwords across multiple user accounts or services, subscription—an account that is not used for personal email.
particularly those for social media or other nonadministrative
activities.
DON'T DO
Don't email configuration files. Configuration files and profiles should be installed from a
trusted source (for example, an encrypted USB flash drive), not
from a mechanism that can be easily compromised, such as
email.
Don't use weak or simple logon passwords. Enforce strong password policies, expiration cycles (changeon-
first-use), console timeouts, and automatic account lockouts.
Use a client password management system with multi-factor
authentication for password vault access.
Don't expose management ports to the Internet. Lock down Azure ports and IP addresses to restrict
management access. For more information, see the Azure
Network Security white paper.
Azure operations
Within Microsoft’s operation of Azure, operations engineers and support personnel who access Azure’s
production systems use hardened workstation PCs with VMs provisioned on them for internal corporate network
access and applications (such as e-mail, intranet, etc.). All management workstation computers have TPMs, the
host boot drive is encrypted with BitLocker, and they are joined to a special organizational unit (OU ) in Microsoft’s
primary corporate domain.
System hardening is enforced through Group Policy, with centralized software updating. For auditing and analysis,
event logs (such as security and AppLocker) are collected from management workstations and saved to a central
location.
In addition, dedicated jump-boxes on Microsoft’s network that require two-factor authentication are used to
connect to Azure’s production network.
Summary
Using a hardened workstation configuration for administering your Azure cloud services, Virtual Machines, and
applications can help you avoid numerous risks and threats that can come from remotely managing critical IT
infrastructure. Both Azure and Windows provide mechanisms that you can employ to help protect and control
communications, authentication, and client behavior.
Next steps
The following resources are available to provide more general information about Azure and related Microsoft
services, in addition to specific items referenced in this paper:
Securing Privileged Access – get the technical details for designing and building a secure administrative
workstation for Azure management
Microsoft Trust Center - learn about Azure platform capabilities that protect the Azure fabric and the workloads
that run on Azure
Microsoft Security Response Center -- where Microsoft security vulnerabilities, including issues with Azure, can
be reported or via email to [email protected]
Azure Security Blog – keep up to date on the latest in Azure Security
Introduction to Azure Log Integration
1/14/2019 • 3 minutes to read • Edit Online
IMPORTANT
The Azure Log integration feature will be deprecated by 06/01/2019. AzLog downloads were disabled on Jun 27, 2018. For
guidance on what to do moving forward review the post Use Azure monitor to integrate with SIEM tools
Azure Log Integration was made available to simplify the task of integrating Azure logs with your on-premises
Security Information and Event Management (SIEM ) system.
The recommended method for integrating Azure logs is to use your SIEM vendor's connectors. Azure Monitor
provides the ability to stream the logs into event hubs, and SIEM vendors can write connectors to further integrate
logs from the event hub into the SIEM. For a description of how this works, follow the instructions in Monitor
stream monitoring for data event hubs. The article also lists the SIEMs for which direct Azure connectors are
already available.
IMPORTANT
If your primary interest is collecting virtual machine logs, most SIEM vendors include this option in their solution. Using the
SIEM vendor's connector is always the preferred alternative.
The documentation on the Azure Log Integration feature is still being maintained until the feature is deprecated.
Read further to learn more about the Azure Log Integration feature:
Azure Log Integration collects Windows events from Windows Event Viewer logs, Azure activity logs, Azure
Security Center alerts, and Azure Diagnostics logs from Azure resources. Integration helps your SIEM solution
provide a unified dashboard for all your assets, whether on-premises or in the cloud. You can use a dashboard to
receive, aggregate, correlate, and analyze alerts for security events.
NOTE
Currently, Azure Log Integration supports only Azure commercial and Azure Government clouds. Other clouds are not
supported.
What logs can I integrate?
Azure produces extensive logging for each Azure service. The logs represent three log types:
Control/management logs: Provide visibility into the Azure Resource Manager CREATE, UPDATE, and
DELETE operations. An Azure activity log is an example of this type of log.
Data plane logs: Provide visibility into events that are raised when you use an Azure resource. An example of
this type of log is the Windows Event Viewer's System, Security, and Application channels in a Windows
virtual machine. Another example is Azure Diagnostics logging, which you configure through Azure Monitor.
Processed events: Provide analyzed event and alert information that are processed for you. An example of
this type of event is Azure Security Center alerts. Azure Security Center processes and analyzes your
subscription to provide alerts that are relevant to your current security posture.
Azure Log Integration supports ArcSight, QRadar, and Splunk. Check with your SIEM vendor to assess whether
the vendor has a native connector. Don't use Azure Log Integration if a native connector is available.
If no other options are available, consider using Azure Log Integration. The following table includes our
recommendations:
Splunk Begin migrating to the Azure Monitor Use the Splunk connector.
add-on for Splunk.
QRadar Migrate to or begin using the QRadar Use the QRadar connector that's
connector that's documented in the last documented in the last section of
section of Stream Azure monitoring Stream Azure monitoring data to an
data to an event hub for consumption event hub for consumption by an
by an external tool. external tool.
ArcSight Continue to use the Azure log Consider using Azure Log Analytics as
integrator until a connector is available, an alternative. Don't onboard to Azure
and then migrate to the connector- Log Integration unless you are willing
based solution. to go through the migration process
when the connector becomes available.
NOTE
Although Azure Log Integration is a free solution, there are Azure storage costs associated with log file information storage.
If you need assistance, you can create a support request. For the service, select Log Integration.
Next steps
This article introduced you to Azure Log Integration. To learn more about Azure Log Integration and the types of
logs that are supported, see the following articles:
Get started with Azure Log Integration. This tutorial walks you through the installation of Azure Log
Integration. It also describes how to integrate logs from Windows Azure Diagnostics (WAD ) storage, Azure
activity logs, Azure Security Center alerts, and Azure Active Directory audit logs.
Azure Log Integration frequently asked questions (FAQ ). This FAQ answers common questions about Azure
Log Integration.
Learn more about how to stream Azure monitoring data to an event hub for consumption by an external tool.
Azure Log Integration with Azure Diagnostics
logging and Windows event forwarding
1/14/2019 • 11 minutes to read • Edit Online
IMPORTANT
The Azure Log integration feature will be deprecated by 06/01/2019. AzLog downloads were disabled on Jun 27, 2018. For
guidance on what to do moving forward review the post Use Azure monitor to integrate with SIEM tools
You should only use Azure log integration if an Azure Monitor connector isn't available from your Security
Incident and Event Management (SIEM ) vendor.
Azure Log Integration makes Azure logs available to your SIEM so you can create a unified security dashboard for
all your assets. For more information about the status of an Azure Monitor connector, contact your SIEM vendor.
IMPORTANT
If your primary interest is collecting virtual machine logs, most SIEM vendors include this option in their solution. Using the
SIEM vendor's connector is always the preferred alternative.
This article helps you get started with Azure Log Integration. It focuses on installing the Azure Log Integration
service and integrating the service with Azure Diagnostics. The Azure Log Integration service then collects
Windows Event Log information from the Windows Security Event channel from virtual machines deployed in an
Azure infrastructure as a service. This is similar to event forwarding that you might use in an on-premises system.
NOTE
Integrating the output of Azure Log Integration with an SIEM is done by the SIEM itself. For more information, see Integrate
Azure Log Integration with your on-premises SIEM.
The Azure Log Integration service runs on either a physical or a virtual computer running Windows Server 2008
R2 or later (Windows Server 2016 or Windows Server 2012 R2 is preferred).
A physical computer can run on-premises or on a hosting site. If you choose to run the Azure Log Integration
service on a virtual machine, the virtual machine can be located on-premises or in a public cloud, such as in
Microsoft Azure.
The physical or virtual machine running the Azure Log Integration service requires network connectivity to the
Azure public cloud. This article provides details about the required configuration.
Prerequisites
At a minimum, installing Azure Log Integration requires the following items:
An Azure subscription. If you don't have one, you can sign up for a free account.
A storage account that can be used for Windows Azure Diagnostics (WAD ) logging. You can use a
preconfigured storage account or create a new storage account. Later in this article, we describe how to
configure the storage account.
NOTE
Depending on your scenario, a storage account might not be required. For the Azure Diagnostics scenario covered in
this article, a storage account is required.
Two systems:
A machine that runs the Azure Log Integration service. This machine collects all the log information that
later is imported into your SIEM. This system:
Can be on-premises or hosted in Microsoft Azure.
Must be running an x64 version of Windows Server 2008 R2 SP1 or later, and have Microsoft
.NET 4.5.1 installed. To determine the .NET version installed, see Determine which .NET
Framework versions are installed.
Must have connectivity to the Azure Storage account that's used for Azure Diagnostics logging.
Later in this article, we describe how to confirm connectivity.
A machine that you want to monitor. This is a VM running as an Azure virtual machine. The logging
information from this machine is sent to the Azure Log Integration service machine.
For a quick demonstration of how to create a virtual machine by using the Azure portal, take a look at the
following video:
Deployment considerations
During testing, you can use any system that meets the minimum operating system requirements. For a production
environment, the load might require you to plan for scaling up or scaling out.
You can run multiple instances of the Azure Log Integration service. However, you can run only one instance of
the service per physical or virtual machine. In addition, you can load-balance Azure Diagnostics storage accounts
for WAD. The number of subscriptions to provide to the instances is based on your capacity.
NOTE
Currently, we don't have specific recommendations about when to scale out instances of Azure Log Integration machines
(that is, machines running the Azure Log Integration service), or for storage accounts or subscriptions. Make scaling
decisions based on your performance observations in each of these areas.
To help improve performance, you also have the option to scale up the Azure Log Integration service. The
following performance metrics can help you size the machines that you choose to run the Azure Log Integration
service:
On an 8-processor (core) machine, a single instance of Azure Log Integration can process about 24 million
events per day (approximately 1 million events per hour).
On a 4-processor (core) machine, a single instance of Azure Log Integration can process about 1.5 million
events per day (approximately 62,500 events per hour).
NOTE
We recommend that you allow Microsoft to collect telemetry data. You can turn off the collection of telemetry data by
clearing the Allow Microsoft to collect telemetry data check box.
NOTE
You don't receive feedback when the command succeeds.
4. Before you can monitor a system, you need the name of the storage account that's used for Azure
Diagnostics. In the Azure portal, go to Virtual machines. Look for a Windows virtual machine that you
will monitor. In the Properties section, select Diagnostic Settings. Then, select Agent. Make note of the
storage account name that's specified. You need this account name for a later step.
NOTE
If monitoring wasn't enabled when the virtual machine was created, you can enable it as shown in the preceding
image.
5. Now, go back to the Azure Log Integration machine. Verify that you have connectivity to the storage
account from the system where you installed Azure Log Integration. The computer running the Azure Log
Integration service needs access to the storage account to retrieve information that's logged by Azure
Diagnostics on each of the monitored systems. To verify connectivity:
a. Download Azure Storage Explorer.
b. Complete setup.
c. When installation is finished, select Next. Leave the Launch Microsoft Azure Storage Explorer check
box selected.
d. Sign in to Azure.
e. Verify that you can see the storage account that you configured for Azure Diagnostics:
a. A few options appear under storage accounts. Under Tables, you should see a table called
WADWindowsEventLogsTable.
If monitoring wasn't enabled when the virtual machine was created, you can enable it, as described earlier.
4. A list of storage accounts appears. Double-click the account that you assigned to log storage.
If you want the subscription ID to show up in the event XML, append the subscription ID to the friendly
name:
Azlog source add <FriendlyNameForTheSource>.<SubscriptionID> WAD <StorageAccountName> <StorageKey>
Example:
Azlog source add Azlogtest.YourSubscriptionID WAD Azlog9414
fxxxFxxxxxxxxywoEJK2xxxxxxxxxixxxJ+xVJx6m/X5SQDYc4Wpjpli9S9Mm+vXS2RVYtp1mes0t9H5cuqXEw==
NOTE
Wait up to 60 minutes, and then view the events that are pulled from the storage account. To view the events, in Azure Log
Integration, select Event Viewer > Windows Logs > Forwarded Events.
NOTE
Before you attempt the steps in this article, you must review the Get started article and complete the steps there.
1. Check the following folders to confirm that the Azure Active Directory audit log JSON files are created in them:
C:\Users\azlog\AzureResourceManagerJson
C:\Users\azlog\AzureResourceManagerJsonLD
NOTE
For specific instructions on bringing the information in the JSON files into your security information and event management
(SIEM) system, contact your SIEM vendor.
Community assistance is available through the Azure Log Integration MSDN Forum. This forum enables people
in the Azure Log Integration community to support each other with questions, answers, tips, and tricks. In
addition, the Azure Log Integration team monitors this forum and helps whenever it can.
You can also open a support request. Select Log Integration as the service for which you are requesting support.
Next steps
To learn more about Azure Log Integration, see the following articles: Before you attempt the steps in this article,
you must review the Get started article and complete the steps there.
Introduction to Azure Log Integration. This article introduces you to Azure Log Integration, its key capabilities,
and how it works.
Partner configuration steps. This blog post shows you how to configure Azure Log Integration to work with
partner solutions Splunk, HP ArcSight, and IBM QRadar. It describes our current guidance about how to
configure the SIEM components. Check with your SIEM vendor for additional details.
Azure Log Integration frequently asked questions (FAQ ). This FAQ answers common questions about Azure
Log Integration.
Integrating Azure Security Center alerts with Azure Log Integration. This article shows you how to sync
Security Center alerts and virtual machine security events that are collected by Azure Diagnostics and Azure
activity logs. You sync the logs by using your Azure Log Analytics or SIEM solution.
New features for Azure Diagnostics and Azure audit logs. This blog post introduces you to Azure audit logs
and other features that can help you gain insight into the operations of your Azure resources.
Integrate Azure Active Directory audit logs
1/14/2019 • 2 minutes to read • Edit Online
Azure Active Directory (Azure AD ) audit events help you identify privileged actions that occurred in Azure Active
Directory. You can see the types of events that you can track by reviewing Azure Active Directory audit report
events.
IMPORTANT
The Azure Log integration feature will be deprecated by 06/01/2019. AzLog downloads were disabled on Jun 27, 2018. For
guidance on what to do moving forward review the post Use Azure monitor to integrate with SIEM tools
This command prompts you for your Azure login. The command then creates an Azure Active Directory
service principal in the Azure AD tenants that host the Azure subscriptions in which the logged-in user is an
administrator, a co-administrator, or an owner. The command will fail if the logged-in user is only a guest
user in the Azure AD tenant. Authentication to Azure is done through Azure AD. Creating a service principal
for Azure Log Integration creates the Azure AD identity that is given access to read from Azure
subscriptions.
3. Run the following command to provide your tenant ID. You need to be member of the tenant admin role to
run the command.
Azlog.exe authorizedirectoryreader tenantId
Example:
AZLOG.exe authorizedirectoryreader ba2c0000-d24b-4f4e-92b1-48c4469999
4. Check the following folders to confirm that the Azure Active Directory audit log JSON files are created in
them:
C:\Users\azlog\AzureActiveDirectoryJson
C:\Users\azlog\AzureActiveDirectoryJsonLD
The following video demonstrates the steps covered in this article:
NOTE
For specific instructions on bringing the information in the JSON files into your security information and event management
(SIEM) system, contact your SIEM vendor.
Community assistance is available through the Azure Log Integration MSDN Forum. This forum enables people in
the Azure Log Integration community to support each other with questions, answers, tips, and tricks. In addition,
the Azure Log Integration team monitors this forum and helps whenever it can.
You can also open a support request. Select Log Integration as the service for which you are requesting support.
Next steps
To learn more about Azure Log Integration, see:
Microsoft Azure Log Integration for Azure logs: This Download Center page gives details, system requirements,
and installation instructions for Azure Log Integration.
Introduction to Azure Log Integration: This article introduces you to Azure Log Integration, its key capabilities,
and how it works.
Azure Log Integration FAQ: This article answers questions about Azure Log Integration.
New features for Azure Diagnostics and Azure audit logs: This blog post introduces you to Azure audit logs and
other features that help you gain insights into the operations of your Azure resources.
2 minutes to read
Azure Log Integration tutorial: Process Azure Key
Vault events by using Event Hubs
1/21/2019 • 7 minutes to read • Edit Online
IMPORTANT
The Azure Log integration feature will be deprecated by 06/01/2019. AzLog downloads were disabled on Jun 27, 2018. For
guidance on what to do moving forward review the post Use Azure monitor to integrate with SIEM tools
You can use Azure Log Integration to retrieve logged events and make them available to your security information
and event management (SIEM ) system. This tutorial shows an example of how Azure Log Integration can be used
to process logs that are acquired through Azure Event Hubs.
The preferred method for integrating Azure logs is by using your SIEM vendor's Azure Monitor connector and
following these instructions. However, if your SIEM vendor doesn't provide a connector to Azure Monitor, you may
be able to use Azure Log Integration as a temporary solution (if your SIEM is supported by Azure Log Integration)
until such a connector is available.
Use this tutorial to get acquainted with how Azure Log Integration and Event Hubs work together by following the
example steps and understanding how each step supports the solution. Then you can take what you've learned
here to create your own steps to support your company's unique requirements.
WARNING
The steps and commands in this tutorial are not intended to be copied and pasted. They're examples only. Do not use the
PowerShell commands "as is" in your live environment. You must customize them based on your unique environment.
This tutorial walks you through the process of taking Azure Key Vault activity logged to an event hub and making it
available as JSON files to your SIEM system. You can then configure your SIEM system to process the JSON files.
NOTE
Most of the steps in this tutorial involve configuring key vaults, storage accounts, and event hubs. The specific Azure Log
Integration steps are at the end of this tutorial. Do not perform these steps in a production environment. They are intended
for a lab environment only. You must customize the steps before using them in production.
Information provided along the way helps you understand the reasons behind each step. Links to other articles
give you more detail on certain topics.
For more information about the services that this tutorial mentions, see:
Azure Key Vault
Azure Event Hubs
Azure Log Integration
Initial setup
Before you can complete the steps in this article, you need the following:
1. An Azure subscription and account on that subscription with administrator rights. If you don't have a
subscription, you can create a free account.
2. A system with access to the internet that meets the requirements for installing Azure Log Integration. The
system can be on a cloud service or hosted on-premises.
3. Azure Log Integration installed. To install it:
a. Use Remote Desktop to connect to the system mentioned in step 2.
b. Copy the Azure Log Integration installer to the system. c. Start the installer and accept the Microsoft
Software License Terms.
4. If you will provide telemetry information, leave the check box selected. If you'd rather not send usage
information to Microsoft, clear the check box.
For more information about Azure Log Integration and how to install it, see Azure Log Integration with
Azure Diagnostics logging and Windows Event Forwarding.
5. The latest PowerShell version.
If you have Windows Server 2016 installed, then you have at least PowerShell 5.0. If you're using any other
version of Windows Server, you might have an earlier version of PowerShell installed. You can check the
version by entering get-host in a PowerShell window. If you don't have PowerShell 5.0 installed, you can
download it.
After you have at least PowerShell 5.0, you can proceed to install the latest version:
a. In a PowerShell window, enter the Install-Module Azure command. Complete the installation steps.
b. Enter the Install-Module AzureRM command. Complete the installation steps.
For more information, see Install Azure PowerShell.
3. Enter the Connect-AzureRmAccount command. In the login window, enter the credential information for the
subscription that you will use for this tutorial.
NOTE
If this is the first time that you're logging in to Azure from this machine, you will see a message about allowing
Microsoft to collect PowerShell usage data. We recommend that you enable this data collection because it will be used
to improve Azure PowerShell.
4. After successful authentication, you're logged in and you see the information in the following screenshot.
Take note of the subscription ID and subscription name, because you'll need them to complete later steps.
5. Create variables to store values that will be used later. Enter each of the following PowerShell lines. You might
need to adjust the values to match your environment.
$subscriptionName = 'Visual Studio Ultimate with MSDN' ( Your subscription name might be different. You
can see it as part of the output of the previous command.)
$location = 'West US' ( This variable will be used to pass the location where resources should be created.
You can change this variable to be any location of your choosing.)
$random = Get-Random
$name = 'azlogtest' + $random (The name can be anything, but it should include only lowercase letters
and numbers.)
$storageName = $name (This variable will be used for the storage account name.)
$rgname = $name ( This variable will be used for the resource group name.)
$eventHubNameSpaceName = $name ( This is the name of the event hub namespace.)
6. Specify the subscription that you will be working with:
Select-AzureRmSubscription -SubscriptionName $subscriptionName
8. Create a storage account that will be used to keep track of state information:
$storage = New-AzureRmStorageAccount -ResourceGroupName $rgname -Name $storagename -Location $location -
SkuName Standard_LRS
9. Create the event hub namespace. This is required to create an event hub.
$eventHubNameSpace = New-AzureRmEventHubNamespace -ResourceGroupName $rgname -NamespaceName
$eventHubnamespaceName -Location $location
10. Get the rule ID that will be used with the insights provider:
$sbruleid = $eventHubNameSpace.Id +'/authorizationrules/RootManageSharedAccessKey'
11. Get all possible Azure locations and add the names to a variable that can be used in a later step:
a. $locationObjects = Get-AzureRMLocation
b. $locations = @('global') + $locationobjects.location
If you enter $locations at this point, you see the location names without the additional information
returned by Get-AzureRmLocation.
12. Create an Azure Resource Manager log profile:
Add-AzureRmLogProfile -Name $name -ServiceBusRuleId $sbruleid -Locations $locations
For more information about the Azure log profile, see Overview of the Azure Activity Log.
NOTE
You might get an error message when you try to create a log profile. You can then review the documentation for Get-
AzureRmLogProfile and Remove-AzureRmLogProfile. If you run Get-AzureRmLogProfile, you see information about the log
profile. You can delete the existing log profile by entering the Remove-AzureRmLogProfile -name 'Log Profile Name'
command.
3. Display the keys again and see that key2 holds a different value:
Get-AzureRmStorageAccountKey -Name $storagename -ResourceGroupName $rgname | ft -a
After a minute or so of running the last two commands, you should see JSON files being generated. You can
confirm that by monitoring the directory C:\users\AzLog\EventHubJson.
Next steps
Azure Log Integration FAQ
Get started with Azure Log Integration
Integrate logs from Azure resources into your SIEM systems
Azure Log Integration FAQ
1/14/2019 • 4 minutes to read • Edit Online
This article answers frequently asked questions (FAQ ) about Azure Log Integration.
IMPORTANT
The Azure Log integration feature will be deprecated by 06/01/2019. AzLog downloads were disabled on Jun 27, 2018. For
guidance on what to do moving forward review the post Use Azure monitor to integrate with SIEM tools
Azure Log Integration is a Windows operating system service that you can use to integrate raw logs from your
Azure resources into your on-premises security information and event management (SIEM ) systems. This
integration provides a unified dashboard for all your assets, on-premises or in the cloud. You can then aggregate,
correlate, analyze, and alert for security events associated with your applications.
The preferred method for integrating Azure logs is by using your SIEM vendor's Azure Monitor connector and
following these instructions. However, if your SIEM vendor doesn't provide a connector to Azure Monitor, you
may be able to use Azure Log Integration as a temporary solution (if your SIEM is supported by Azure Log
Integration) until such a connector is available.
How can I see the storage accounts from which Azure Log Integration
is pulling Azure VM logs?
Run the command AzLog source list.
How can I tell which subscription the Azure Log Integration logs are
from?
In the case of audit logs that are placed in the AzureResourcemanagerJson directories, the subscription ID is in
the log file name. This is also true for logs in the AzureSecurityCenterJson folder. For example:
20170407T070805_2768037.0000000023.1111e5ee-1111-111b-a11e-1e111e1111dc.json
Azure Active Directory audit logs include the tenant ID as part of the name.
Diagnostic logs that are read from an event hub do not include the subscription ID as part of the name. Instead,
they include the friendly name specified as part of the creation of the event hub source.
The event XML has the following metadata, including the subscription ID:
Error messages
When I run the command AzLog createazureid , why do I get the following error?
Error:
Failed to create AAD Application - Tenant 72f988bf-86f1 -41af-91ab -2d7cd011db37 - Reason = 'Forbidden' -
Message = 'Insufficient privileges to complete the operation.'
The azlog createazureid command attempts to create a service principal in all the Azure AD tenants for the
subscriptions that the Azure login has access to. If your Azure login is only a guest user in that Azure AD tenant,
the command fails with "Insufficient privileges to complete the operation." Ask the tenant admin to add your
account as a user in the tenant.
When I run the command azlog authorize , why do I get the following error?
Error:
Warning creating Role Assignment - AuthorizationFailed: The client [email protected]' with object id
'fe9e03e4 -4dad -4328 -910f-fd24a9660bd2' does not have authorization to perform action
'Microsoft.Authorization/roleAssignments/write' over scope '/subscriptions/70d95299 -d689 -4c97 -b971 -
0d8ff0000000'.
The azlog authorize command assigns the role of reader to the Azure AD service principal (created with azlog
createazureid) to the provided subscriptions. If the Azure login is not a co-administrator or an owner of the
subscription, it fails with an "Authorization Failed" error message. Azure Role-Based Access Control (RBAC ) of co-
administrator or owner is needed to complete this action.
Where can I find the definition of the properties in the audit log?
See:
Audit operations with Azure Resource Manager
List the management events in a subscription in the Azure Monitor REST API
The following example modifies the Azure Diagnostics configuration. In this configuration, only event ID 4624
and event ID 4625 are collected from the security event log. Microsoft Antimalware for Azure events are collected
from the system event log. For details on the use of XPath expressions, see Consuming Events.
<WindowsEventLog scheduledTransferPeriod="PT1M">
<DataSource name="Security!*[System[(EventID=4624 or EventID=4625)]]" />
<DataSource name="System!*[System[Provider[@Name='Microsoft Antimalware']]]"/>
</WindowsEventLog>
$diagnosticsconfig_path = "d:\WADConfig.xml"
Set-AzureRmVMDiagnosticsExtension -ResourceGroupName AzLog-Integration -VMName AzlogClient -
DiagnosticsConfigurationPath $diagnosticsconfig_path -StorageAccountName log3121 -StorageAccountKey <storage
key>
After you make changes, check the storage account to ensure that the correct events are collected.
If you have any issues during the installation and configuration, please open a support request. Select Log
Integration as the service for which you are requesting support.
Azure operational security refers to the services, controls, and features available to users for protecting their data,
applications, and other assets in Microsoft Azure. It's a framework that incorporates the knowledge gained through
a variety of capabilities that are unique to Microsoft. These capabilities include the Microsoft Security Development
Lifecycle (SDL ), the Microsoft Security Response Center program, and deep awareness of the cybersecurity threat
landscape.
Security Center uses the Microsoft Monitoring Agent. This is the same agent that the Log Analytics service uses.
Data collected from this agent is stored in either an existing Log Analytics workspace associated with your Azure
subscription or a new workspace, taking into account the geolocation of the VM.
Azure Monitor
Performance issues in your cloud app can affect your business. With multiple interconnected components and
frequent releases, degradations can happen at any time. And if you’re developing an app, your users usually
discover issues that you didn’t find in testing. You should know about these issues immediately, and you should
have tools for diagnosing and fixing the problems.
Azure Monitor is basic tool for monitoring services running on Azure. It gives you infrastructure-level data about
the throughput of a service and the surrounding environment. If you're managing your apps all in Azure and
deciding whether to scale up or down resources, Azure Monitor is the place to start.
You can also use monitoring data to gain deep insights about your application. That knowledge can help you to
improve application performance or maintainability, or automate actions that would otherwise require manual
intervention.
Azure Monitor includes the following components.
Azure Activity Log
The Azure Activity Log provides insight into the operations that were performed on resources in your subscription.
It was previously known as “Audit Log” or “Operational Log,” because it reports control-plane events for your
subscriptions.
Azure diagnostic logs
Azure diagnostic logs are emitted by a resource and provide rich, frequent data about the operation of that
resource. The content of these logs varies by resource type.
Windows event system logs are one category of diagnostic logs for VMs. Blob, table, and queue logs are categories
of diagnostic logs for storage accounts.
Diagnostic logs differ from the Activity Log. The Activity log provides insight into the operations that were
performed on resources in your subscription. Diagnostic logs provide insight into operations that your resource
performed itself.
Metrics
Azure Monitor provides telemetry that gives you visibility into the performance and health of your workloads on
Azure. The most important type of Azure telemetry data is the metrics (also called performance counters) emitted
by most Azure resources. Azure Monitor provides several ways to configure and consume these metrics for
monitoring and troubleshooting.
Azure Diagnostics
Azure Diagnostics enables the collection of diagnostic data on a deployed application. You can use the Diagnostics
extension from various sources. Currently supported are Azure cloud service roles, Azure virtual machines running
Microsoft Windows, and Azure Service Fabric.
DevOps
Before Developer Operations (DevOps) application development, teams were in charge of gathering business
requirements for a software program and writing code. Then a separate QA team tested the program in an isolated
development environment. If requirements were met, the QA team released the code for operations to deploy. The
deployment teams were further fragmented into groups like networking and database. Each time a software
program was “thrown over the wall” to an independent team, it added bottlenecks.
DevOps enables teams to deliver more secure, higher-quality solutions faster and more cheaply. Customers expect
a dynamic and reliable experience when consuming software and services. Teams must rapidly iterate on software
updates and measure the impact of the updates. They must respond quickly with new development iterations to
address issues or provide more value.
Cloud platforms such as Microsoft Azure have removed traditional bottlenecks and helped commoditize
infrastructure. Software reigns in every business as the key differentiator and factor in business outcomes. No
organization, developer, or IT worker can or should avoid the DevOps movement.
Mature DevOps practitioners adopt several of the following practices. These practices involve people to form
strategies based on the business scenarios. Tooling can help automate the various practices.
Agile planning and project management techniques are used to plan and isolate work into sprints, manage
team capacity, and help teams quickly adapt to changing business needs.
Version control, usually with Git, enables teams located anywhere in the world to share source and integrate
with software development tools to automate the release pipeline.
Continuous integration drives the ongoing merging and testing of code, which leads to finding defects early.
Other benefits include less time wasted on fighting merge issues and rapid feedback for development teams.
Continuous delivery of software solutions to production and testing environments helps organizations quickly
fix bugs and respond to ever-changing business requirements.
Monitoring of running applications--including production environments for application health, as well as
customer usage--helps organizations form a hypothesis and quickly validate or disprove strategies. Rich data is
captured and stored in various logging formats.
Infrastructure as Code (IaC ) is a practice that enables the automation and validation of creation and teardown of
networks and virtual machines to help with delivering secure, stable application hosting platforms.
Microservices architecture is used to isolate business use cases into small reusable services. This architecture
enables scalability and efficiency.
Next steps
To learn about the Security and Audit solution, see the following articles:
Security and compliance
Azure Security Center
Azure Monitor
Azure Operational Security best practices
1/8/2019 • 9 minutes to read • Edit Online
Azure operational security refers to the services, controls, and features available to users for protecting their data,
applications, and other assets in Azure. Azure operational security is built on a framework that incorporates the
knowledge gained through capabilities that are unique to Microsoft, including the Security Development Lifecycle
(SDL ), the Microsoft Security Response Center program, and deep awareness of the cybersecurity threat
landscape.
In this article, we discuss a collection of security best practices. These best practices are derived from our
experience with Azure database security and the experiences of customers like yourself.
For each best practice, we explain:
What the best practice is
Why you want to enable that best practice
What might be the result if you fail to enable the best practice
How you can learn to enable the best practice
This Azure Operational Security Best Practices article is based on a consensus opinion, and Azure platform
capabilities and feature sets, as they exist at the time this article was written. Opinions and technologies change
over time and this article will be updated on a regular basis to reflect those changes.
Next steps
See Azure security best practices and patterns for more security best practices to use when you’re designing,
deploying, and managing your cloud solutions by using Azure.
The following resources are available to provide more general information about Azure security and related
Microsoft services:
Azure Security Team Blog - for up to date information on the latest in Azure Security
Microsoft Security Response Center - where Microsoft security vulnerabilities, including issues with Azure, can
be reported or via email to [email protected]
Azure operational security checklist
10/18/2018 • 4 minutes to read • Edit Online
Deploying an application on Azure is fast, easy, and cost-effective. Before deploying cloud application in production
useful to have a checklist to assist in evaluating your application against a list of essential and recommended
operational security actions for you to consider.
Introduction
Azure provides a suite of infrastructure services that you can use to deploy your applications. Azure Operational
Security refers to the services, controls, and features available to users for protecting their data, applications, and
other assets in Microsoft Azure.
To get the maximum benefit out of the cloud platform, we recommend that you leverage Azure services and
follow the checklist.
Organizations that invest time and resources assessing the operational readiness of their applications before
launch have a much higher rate of satisfaction than those who don’t. When performing this work, checklists can
be an invaluable mechanism to ensure that applications are evaluated consistently and holistically.
The level of operational assessment will varies depending on the organization’s cloud maturity level and the
application’s development phase, availability needs, and data sensitivity requirements.
Checklist
This checklist is intended to help enterprises think through various operational security considerations as they
deploy sophisticated enterprise applications on Azure. It can also be used to help you build a secure cloud
migration and operation strategy for your organization.
Conclusion
Many organizations have successfully deployed and operated their cloud applications on Azure. The checklists
provided highlight several checklists that is essential and help you to increase the likelihood of successful
deployments and frustration-free operations. We highly recommend these operational and strategic considerations
for your existing and new application deployments on Azure.
Next steps
To learn more about Security, see the following articles:
Design and operational security.
Azure Security Center planning and operations.
Azure Security and Compliance Blueprint - IaaS Web
Application for Australia Protected
10/15/2018 • 19 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of an infrastructure as a
service (IaaS ) environment suitable for the collection, storage, and retrieval of AU -PROTECTED government data
that is compliant with the objectives of the Australian Government Information Security Manual (ISM ) produced
by the Australian Signals Directorate (ASD ). This blueprint showcases a common reference architecture and helps
demonstrate the proper handling of sensitive government data in a secure, compliant, multi-tier environment.
This reference architecture, implementation guide, and threat model provide a foundation for customers to
undertake their own planning and system accreditation processes, helping customers deploy workloads to Azure in
an ASD -compliant manner. Customers may choose to implement an Azure VPN Gateway or ExpressRoute to use
federated services and to integrate on-premises resources with Azure resources. Customers must consider the
security implications of using on-premises resources. Additional configuration is required to meet all the
requirements, as they may vary based on the specifics of each customer's implementation.
Achieving ASD -compliance requires that an Information Security Registered Assessor audits the system.
Customers are responsible for conducting appropriate security and compliance assessments of any solution built
using this architecture, as requirements may vary based on the specifics of each customer's implementation.
This solution uses the following Azure services. Further details are in the deployment architecture section.
Availability Sets
(1) SQL cluster nodes
(1) Web/IIS
Azure Active Directory
Azure Application Gateway
(1) Web application firewall
Firewall mode: prevention
Rule set: OWASP 3.0
Listener port: 443
Azure Cloud Witness
Azure Key Vault
Azure Load Balancer
Azure Monitor
Azure Resource Manager
Azure Security Center
Azure Log Analytics
Azure Storage
Azure Virtual Machines
(1) management/bastion (Windows Server 2016 Datacenter)
(2) SQL Server cluster node (SQL Server 2017 on Windows Server 2016)
(2) Web/IIS (Windows Server 2016 Datacenter)
Azure Virtual Network
(4) Network security groups
Azure Network Watcher
Recovery Services Vault
This Blueprint contains Azure Services that have not been certified for use at the Protected classification by the
Australian Cyber Security Centre (ACSC ). All services included in this reference architecture have been certified by
ACSC at the Dissemination Limiting Markers (DLM ) level. Microsoft recommends that customers review the
published security and audit reports related to these Azure Services and use their risk management framework to
determine whether the Azure Service is suitable for their internal accreditation and use at the Protected
classification.
Deployment architecture
The following section details the deployment and implementation elements.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: This solution deploys resources in an architecture with a separate web subnet,
database subnet, Active Directory subnet, and management subnet inside of a virtual network. Subnets are
logically separated by network security group rules applied to the individual subnets to restrict traffic between
subnets to only that necessary for system and management functionality.
See the configuration for network security groups deployed with this solution. Organizations can configure
network security groups by editing the file above using this documentation as a guide.
Each of the subnets has a dedicated network security group:
1 network security group for Application Gateway (LBNSG )
1 network security group for bastion host (MGTNSG )
1 network security group for SQL Servers and Cloud Witness (SQLNSG )
1 network security group for web tier (WEBNSG )
Data in transit
Azure encrypts all communications to and from Azure datacentres by default.
For Protected data in transit from customer owned networks, the Architecture uses the Internet or ExpressRoute
with a VPN Gateway configured with IPSEC.
Additionally, all transactions to Azure through the Azure management portal occur via HTTPS utilising TLS 1.2.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by the Australian Government ISM.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
SQL Server: The SQL Server instance uses the following database security measures:
SQL Server auditing tracks database events and writes them to audit logs.
Transparent data encryption performs real-time encryption and decryption of the database, associated backups,
and transaction log files to protect information at rest. Transparent data encryption provides assurance that
stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
Dynamic data masking limits sensitive data exposure by masking the data to non-privileged users or
applications. Dynamic data masking can automatically discover potentially sensitive data and suggest the
appropriate masks to be applied. This helps with reducing access such that sensitive data does not exit the
database via unauthorized access. Customers are responsible for adjusting dynamic data masking
settings to adhere to their database schema.
Identity management
Customers may utilize on-premises Active Directory Federated Services to federate with Azure Active Directory,
which is Microsoft's multi-tenant cloud-based directory and identity management service. Azure Active Directory
Connect integrates on-premises directories with Azure Active Directory. All users in this solution require Azure
Active Directory accounts. With federation sign-in, users can sign in to Azure Active Directory and authenticate to
Azure resources using on-premises credentials.
Furthermore, the following Azure Active Directory capabilities help manage access to data in the Azure
environment:
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Azure Multi-Factor Authentication: To protect identities, multi-factor authentication should be implemented.
Azure Multi-Factor Authentication is an easy to use, scalable, and reliable solution that provides a second method
of authentication to protect users. Azure Multi-Factor Authentication uses the power of the cloud and integrates
with on-premises Active Directory and custom applications. This protection is extended to high-volume, mission-
critical scenarios.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security module protected 2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
The solution is integrated with Azure Key Vault to manage IaaS virtual machine disk-encryption keys and
secrets.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Malware protection: Microsoft Antimalware for Virtual Machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Furthermore, this reference architecture utilizes the vulnerability assessment in Azure Security Center. Once
configured, a partner agent (e.g. Qualys) reports vulnerability data to the partner’s management platform. In turn,
the partner's management platform provides vulnerability and health monitoring data back to Azure Security
Center, allowing customers to quickly identify vulnerable virtual machines.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities using an Azure
Application Gateway with a web application firewall configured, and the OWASP ruleset enabled. Additional
capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Business continuity
High availability: The solution deploys all virtual machines in an Availability Set. Availability sets ensure that the
virtual machines are distributed across multiple isolated hardware clusters to improve availability. At least one
virtual machine is available during a planned or unplanned maintenance event, meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure Virtual Machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS virtual machine without restoring the entire virtual machine, enabling faster restore times.
Cloud Witness: Cloud Witness is a type of Failover Cluster quorum witness in Windows Server 2016 that
leverages Azure as the arbitration point. The Cloud Witness, like any other quorum witness, gets a vote and can
participate in the quorum calculations, but it uses the standard publicly available Azure Blob Storage. This
eliminates the extra maintenance overhead of virtual machines hosted in a public cloud.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type, which allows all data to be analysed
together regardless of its original source. Furthermore, Azure Security Center integrates with Log Analytics
allowing customers to use Log Analytics queries to access their security event data and combine it with data from
other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Server. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Azure Network Watcher: Azure Network Watcher provides tools to monitor, diagnose, view metrics, and enable or
disable logs for resources in an Azure virtual network. Commonwealth entities should implement Network
Watcher flow logs for NSGs and Virtual Machines. These logs should be stored in a dedicated storage account that
only security logs are stored in and access to the storage account should be secured with Role Based Access
Controls.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
This compliance documentation is produced by Microsoft based on platforms and services available from
Microsoft. Due to the wide variety of customer deployments, this documentation provides a generalized approach
for a solution only hosted in the Azure environment. Customers may identify and use alternative products and
services based on their own operating environments and business outcomes. Customers choosing to use on-
premises resources must address the security and operations for those on-premises resources. The documented
solution can be customized by customers to address their specific on-premises and security requirements.
The Azure Security and Compliance Blueprint – AU -PROTECTED Customer Responsibility Matrix lists all security
controls required by AU -PROTECTED. This matrix details whether the implementation of each control is the
responsibility of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint – AU -PROTECTED IaaS Web Application Implementation Matrix
provides information on which AU -PROTECTED controls are addressed by the IaaS web application architecture,
including detailed descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint - PaaS Web
Application for Australia PROTECTED
1/4/2019 • 20 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of a platform as a service
(PaaS ) environment suitable for the collection, storage, and retrieval of AU -PROTECTED government data that is
compliant with the objectives of the Australian Government Information Security Manual (ISM ) produced by the
Australian Signals Directorate (ASD ). This blueprint showcases a common reference architecture and helps
demonstrate the proper handling of sensitive government data in a secure, compliant, multi-tier environment.
This reference architecture, implementation guide, and threat model provide a foundation for customers to
undertake their own planning and system accreditation processes, helping customers deploy workloads to Azure in
an ASD -compliant manner. Customers may choose to implement an Azure VPN Gateway or ExpressRoute to use
federated services and to integrate on-premises resources with Azure resources. Customers must consider the
security implications of using on-premises resources. Additional configuration is required to meet all the
requirements, as they may vary based on the specifics of each customer's implementation.
Achieving ASD -compliance requires that an Information Security Registered Assessor audits the system.
Customers are responsible for conducting appropriate security and compliance assessments of any solution built
using this architecture, as requirements may vary based on the specifics of each customer's implementation.
This solution uses the following Azure services. Further details are in the deployment architecture section.
Application Gateway
Web application firewall
Firewall mode: prevention
Rule set: OWASP
Listener port: 443
Application Insights
Azure Active Directory
Azure Application Service Environment v2
Azure Automation
Azure DNS
Azure Key Vault
Azure Load Balancer
Azure Monitor
Azure Resource Manager
Azure Security Center
Azure SQL Database
Azure Storage
Azure Log Analytics
Azure Virtual Network
(1) /16 Network
(4) /24 Networks
Network security groups
Network security groups
Recovery Services Vault
Azure Web App
This Blueprint contains Azure Services that have not been certified for use at the Protected classification by the
Australian Cyber Security Centre (ACSC ). Microsoft recommends that customers review the published security and
audit reports related to these Azure Services and use their risk management framework to determine whether the
Azure Service is suitable for their internal accreditation and use at the Protected classification.
Deployment architecture
The following section details the deployment and implementation elements.
Azure Resource Manager: Azure Resource Manager enables customers to work with the resources in the
solution as a group. Customers can deploy, update, or delete all the resources for the solution in a single,
coordinated operation. Customers use a template for deployment and that template can work for different
environments such as testing, staging, and production. Resource Manager provides security, auditing, and tagging
features to help customers manage their resources after deployment.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
App Service Environment v2: The Azure App Service Environment is an App Service feature that provides a fully
isolated and dedicated environment for securely running App Service applications at a high scale.
App Service Environments are isolated to only run a single customer's applications and are always deployed into a
virtual network. Customers have fine-grained control over both inbound and outbound application network traffic,
and applications can establish high-speed secure connections over virtual networks to on-premises corporate
resources.
Use of App Service Environments for this architecture allow for the following controls/configurations:
App Service Environments must be configured to use the isolated service plan
Configure different App Service Environments for applications at different classifications
Host inside a secured Azure virtual network and network security rules
App Service Environments configured with a self-signed internal load balancer certificate for HTTPS
communication. As a best practice, Microsoft recommends the use of a trusted certificate authority for
enhanced security.
Internal load balancing mode (mode 3)
Disable TLS v1.0 and v1.1
Change TLS cipher
Control inbound traffic N/W ports
Web application firewall – restrict data
Allow Azure SQL Database traffic
Azure Web App: Azure App Service enables customers to build and host web applications in the programming
language of their choice without managing infrastructure. It offers auto-scaling and high availability, supports both
Windows and Linux, and enables automated deployments from GitHub, Azure DevOps Services, or any Git repo.
Virtual Network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual virtual machine
level. The following network security groups exist:
1 network security group for Application Gateway
1 network security group for App Service Environment
1 network security group for Azure SQL Database
1 network security group for bastion host
Each of the network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Azure Log Analytics is connected to the network security group's diagnostics
Subnets: Each subnet is associated with its corresponding network security group.
Azure DNS: The Domain Name System, or DNS, is responsible for translating (or resolving) a website or service
name to its IP address. Azure DNS is a hosting service for DNS domains that provides name resolution using
Azure infrastructure. By hosting domains in Azure, users can manage DNS records using the same credentials,
APIs, tools, and billing as other Azure services. Azure DNS also supports private DNS domains.
Azure Load Balancer: Azure Load Balancer allows customers to scale their applications and create high
availability for services. Load Balancer supports inbound as well as outbound scenarios, and provides low latency,
high throughput, and scales up to millions of flows for all TCP and UDP applications.
Data in transit
Azure encrypts all communications to and from Azure datacentres by default.
For Protected data in transit from customer owned networks, the Architecture uses Azure the Internet or
ExpressRoute with a VPN Gateway configured with IPSEC.
Additionally, all transactions to Azure through the Azure management portal occur via HTTPS utilising TLS v1.2.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by Australian Government ISM.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns. SQL Threat Detection integrates alerts with Azure Security Center, which includes
details of suspicious activity and recommended action on how to investigate and mitigate the threat.
Always Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system.
After enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps with reducing access such that sensitive data does not exit the
database via unauthorized access. Customers will need to adjust dynamic data masking settings to adhere to
their database schema.
Identity management
Customers may utilize on-premises Active Directory Federated Services to federate with Azure Active Directory,
which is Microsoft's multi-tenant cloud-based directory and identity management service. Azure Active Directory
Connect integrates on-premises directories with Azure Active Directory. All users in this solution require Azure
Active Directory accounts, including users accessing the Azure SQL Database. With federation sign-in, users can
sign in to Azure Active Directory and authenticate to Azure resources using on-premises credentials.
Furthermore, the following Azure Active Directory capabilities help manage access to data in the Azure
environment:
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organizations identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Azure Multi-Factor Authentication: To protect identities, multi-factor authentication should be implemented.
Azure Multi-Factor Authentication is an easy to use, scalable, and reliable solution that provides a second method
of authentication to protect users. Azure Multi-Factor Authentication uses the power of the cloud and integrates
with on-premises Active Directory and custom applications. This protection is extended to high-volume, mission-
critical scenarios.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security module protected 2048-bit RSA key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Application Gateway: The architecture reduces the risk of security vulnerabilities using an Application Gateway
with a web application firewall, and the OWASP ruleset enabled. Additional capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type, which allows all data to be analysed
together regardless of its original source. Furthermore, Azure Security Center integrates with Log Analytics
allowing customers to use Log Analytics queries to access their security event data and combine it with data from
other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Azure Network Watcher: Azure Network Watcher provides tools to monitor, diagnose, view metrics, and enable or
disable logs for resources in an Azure virtual network. Commonwealth entities should implement Network
Watcher flow logs for NSGs and Virtual Machines. These logs should be stored in a dedicated storage account that
only security logs are stored in and access to the storage account should be secured with Role Based Access
Controls.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
This compliance documentation is produced by Microsoft based on platforms and services available from
Microsoft. Due to the wide variety of customer deployments, this documentation provides a generalized approach
for a solution only hosted in the Azure environment. Customers may identify and use alternative products and
services based on their own operating environments and business outcomes. Customers choosing to use on-
premises resources must address the security and operations for those on-premises resources. The documented
solution can be customized by customers to address their specific on-premises and security requirements.
The Azure Security and Compliance Blueprint - AU -PROTECTED Customer Responsibility Matrix lists all security
controls required by AU -Prot. This matrix details whether the implementation of each control is the responsibility
of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint - AU -PROTECTED PaaS Web Application Implementation Matrix
provides information on which AU -PROTECTED controls are addressed by the PaaS web application architecture,
including detailed descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: Analytics
for FedRAMP
10/18/2018 • 14 minutes to read • Edit Online
Overview
The Federal Risk and Authorization Management Program (FedRAMP ) is a United States government-wide
program that provides a standardized approach to security assessment, authorization, and continuous monitoring
for cloud products and services. This Azure Security and Compliance Blueprint provides guidance for how to
deliver a Microsoft Azure analytics architecture that helps implement a subset of FedRAMP High controls. This
solution provides guidance on the deployment and configuration of Azure resources for a common reference
architecture, demonstrating ways in which customers can meet specific security and compliance requirements and
serves as a foundation for customers to build and configure their own analytics solutions in Azure.
This reference architecture, associated control implementation guides, and threat models are intended to serve as a
foundation for customers to adjust to their specific requirements and should not be used as-is in a production
environment. Deploying an application into this environment without modification is insufficient to completely
meet the requirements of the FedRAMP High baseline. Please note the following:
The architecture provides a baseline to help customers deploy workloads to Azure in a FedRAMP -compliant
manner.
Customers are responsible for conducting appropriate security and compliance assessments of any solution
built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
Roles
The analytics blueprint outlines a scenario with three general user types: the Operational User, the SQL/Data
Admin, and the Systems Engineer. Azure Role-based Access Control (RBAC ) enables the implementation of precise
access management through built-in custom roles. Resources are available for configuring Role-based Access
Control and outlining and implementing pre-defined roles.
Systems engineer
The Systems Engineer owns the customer subscription for Azure and configures the deployment of the solution
through the Azure Portal.
SQL/data administrator
The SQL/Data Administrator establishes the bulk data import function and the operational data update function
for uploading to the Azure SQL database. The SQL/Data Administrator is not responsible for any operational data
updates in the database but will be able to view the data through Power BI.
Operational user
The Operational User updates the data regularly and owns the day-to-day data generation. The Operational User
will also interpret results through Power BI.
Azure services
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
Architecture section.
Azure Functions
Azure SQL Database
Azure Analysis Service
Azure Active Directory
Azure Key Vault
Azure Log Analytics
Azure Monitor
Azure Storage
ExpressRoute/VPN Gateway
Power BI Dashboard
Deployment architecture
The following section details the development and implementation elements.
Azure Functions: Azure Functions are solutions for running small pieces of code in the cloud via most
programming languages. Functions in this solution integrate with Azure Storage to automatically pull customer
data into the cloud, facilitating integration with other Azure services. Functions are easily scalable and only incur a
cost when they are running.
Azure Analysis Service: Azure Analysis Service provides enterprise data modeling and integration with Azure
data platform services. Azure Analysis Service speeds up browsing through massive amounts of data by
combining data from multiple sources into a single data model.
Power BI: Power BI provides analytics and reporting functionality for customers trying to pull greater insight out
of their data processing efforts.
Networking
Network security groups: NSGs are set up to manage traffic directed at deployed resources and services.
Network Security Groups are set to a deny-by-default scheme and only permit traffic that is contained in the pre-
configured Access Control List (ACL ).
Each of the NSGs have specific ports and protocols open so that the solution can work securely and correctly. In
addition, the following configurations are enabled for each NSG:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the NSG's diagnostic logs.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Data replication Azure Government has two options for data replication:
The default setting for data replication is Geo-Redundant Storage (GRS ), which asynchronously stores
customer data in a separate data center outside of the primary region. This ensures recovery of data in a total
loss event for the primary data center.
Locally Redundant Storage (LRS ) can alternatively be configured via the Azure Storage Account. LRS
replicates data within a storage scale unit, which is hosted in the same region in which the customer creates
their account. All data is replicated concurrently, ensuring that no backup data is lost in a primary storage scale
unit failure.
Azure Storage To meet encrypted data at rest requirements, all services deployed in this reference architecture
leverage Azure Storage, which stores data with Storage Service Encryption.
Azure Disk Encryption Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for OS and data disks. The solution integrates with Azure Key Vault to help control and manage the
disk-encryption keys.
Azure SQL Database The Azure SQL Database instance uses the following database security measures:
AD authentication and authorization enables identity management of database users and other Microsoft
services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
SQL Database is configured to use Transparent Data Encryption (TDE ), which performs real-time encryption
and decryption of data and log files to protect information at rest. TDE provides assurance that stored data has
not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Always Encrypted columns ensure that sensitive data never appears as plaintext inside the database system.
After enabling data encryption, only client applications or app servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking can be done after the reference architecture deploys. Customers will need
to adjust dynamic data masking settings to adhere to their database schema.
Logging and audit
Azure Monitor generates an all-up display of monitoring data including activity logs, metrics, and diagnostic data,
enabling customers to create a complete picture of system health.
Log Analytics provides extensive logging of system and user activity, as well as system health. It collects and
analyzes data generated by resources in Azure and on-premises environments.
Activity Logs: Activity logs provide insight into operations performed on resources in a subscription.
Diagnostic Logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows
event system logs and Azure Blob storage, tables, and queue logs.
Firewall Logs: The Application Gateway provides full diagnostic and access logs. Firewall logs are available for
WAF -enabled Application Gateway resources.
Log Archiving: All diagnostic logs write to a centralized and encrypted Azure storage account for archival with
a defined retention period of 2 days. These logs connect to Azure Log Analytics for processing, storing, and
dashboard reporting.
Additionally, the following monitoring solutions are included as a part of this architecture:
Azure Automation: The Azure Automation solution stores, runs, and manages runbooks.
Security and Audit: The Security and Audit dashboard provides a high-level insight into the security state of
resources by providing metrics on security domains, notable issues, detections, threat intelligence, and common
security queries.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Azure Activity Logs: The Activity Log Analytics solution assists with analysis of the Azure activity logs across all
Azure subscriptions for a customer.
Identity management
Authentication to the application is performed using Azure AD. For more information, see Integrating
applications with Azure Active Directory. Additionally, the database column encryption uses Azure AD to
authenticate the application to Azure SQL Database. For more information, see how to protect sensitive data in
SQL Database.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization’s identities,
configures automated responses to detected suspicious actions related to an organization’s identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Azure Role-based Access Control (RBAC ) enables focused access management for Azure. Subscription access is
limited to the subscription administrator.
To learn more about using the security features of Azure SQL Database, see the Contoso Clinic Demo Application
sample.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services.
High availability: Server workloads are grouped in an Availability Set to help ensure high availability of
virtual machines in Azure. At least one virtual machine is available during a planned or unplanned
maintenance event, meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations
of Azure Virtual Machines in this architecture. With a Recovery Services Vault, customers can restore files
and folders from an IaaS VM without restoring the entire VM, enabling faster restore times.
M o n i t o r i n g so l u t i o n s
AD Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
Antimalware Assessment: The Antimalware solution reports on malware, threats, and protection status.
Update Management: The Update Management solution allows customer management of operating system
security updates, including a status of available updates and the process of installing required updates.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Change Tracking: The Change Tracking solution allows customers to easily identify changes in the environment.
Se c u r i t y
Malware protection: Microsoft Antimalware for Virtual Machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured
by default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when
needed.
Azure Commercial
Although this data analytics architecture is not intended for deployment to the Azure Commercial environment,
similar objectives can be achieved through the services described in this reference architecture, as well as
additional services available only in the Azure Commercial environment. Please note that Azure Commercial
maintains a FedRAMP JAB P -ATO at the Moderate Impact Level, allowing government agencies and partners to
deploy moderately sensitive information to the cloud leveraging the Azure Commercial environment.
Azure Commercial offers a wide variety of analytics services for pulling insights out of large amounts of data:
Azure Machine Learning Studio, a component of the Cortana Intelligence Suite, develops a predictive analysis
model from one or more data sources. Statistical functions are used over several iterations to generate an
effective model that applications such as Power BI can then consume.
Azure Data Lake Store enables the capture of data of any size, type, and ingestion speed in a single place for
operational and exploratory analytics. Azure Data Lake Store is compatible with most open source components
in the Hadoop ecosystem and integrates nicely with other Azure services.
Threat model
The data flow diagram (DFD ) for this reference architecture is available for download or can be found below:
Compliance documentation
The Azure Security and Compliance Blueprint – FedRAMP High Customer Responsibility Matrix lists all security
controls required by the FedRAMP High baseline. Similarly, the Azure Security and Compliance Blueprint –
FedRAMP Moderate Customer Responsibility Matrix lists all security controls required by the FedRAMP Moderate
baseline. Both documents detail whether the implementation of each control is the responsibility of Microsoft, the
customer, or shared between the two.
The Azure Security and Compliance Blueprint - FedRAMP High Control Implementation Matrix and the Azure
Security and Compliance Blueprint - FedRAMP Moderate Control Implementation Matrix provide information on
which controls are covered by the analytics architecture for each FedRAMP baseline, including detailed
descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: Data
Warehouse for FedRAMP Automation
10/18/2018 • 13 minutes to read • Edit Online
Overview
The Federal Risk and Authorization Management Program (FedRAMP ) is a United States government-wide
program that provides a standardized approach to security assessment, authorization, and continuous monitoring
for cloud products and services. This Azure Security and Compliance Blueprint provides guidance for how to
deliver a Microsoft Azure data warehouse architecture that helps implement a subset of FedRAMP High controls.
This solution provides guidance on the deployment and configuration of Azure resources for a common reference
architecture, demonstrating ways in which customers can meet specific security and compliance requirements and
serves as a foundation for customers to build and configure their own data warehouse solutions in Azure.
This reference architecture, associated control implementation guides, and threat models are intended to serve as a
foundation for customers to adjust to their specific requirements and should not be used as-is in a production
environment. Deploying an application into this environment without modification is insufficient to completely
meet the requirements of the FedRAMP High baseline. Please note the following:
The architecture provides a baseline to help customers deploy workloads to Azure in a FedRAMP -compliant
manner.
Customers are responsible for conducting appropriate security and compliance assessments of any solution
built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
architecture section.
Azure Virtual Machines
(1) Bastion Host
(2) Active Directory domain controller
(2) SQL Server Cluster Node
(1) SQL Server Witness
Availability Sets
(1) Active Directory domain controllers
(1) SQL cluster nodes and witness
Virtual Network
(4) Subnets
(4) Network Security Groups
Deployment architecture
The following section details the development and implementation elements.
SQL Data Warehouse: SQL Data Warehouse is an Enterprise Data Warehouse (EDW ) that leverages Massively
Parallel Processing (MPP ) to quickly run complex queries across petabytes of data. Import big data into SQL Data
Warehouse with simple PolyBase T-SQL queries and use the power of MPP to run high-performance analytics.
SQL Server Reporting Services: SQL Server Reporting Services enables quick creation of reports with tables,
charts, maps, gauges, matrixes, and more for Azure SQL Data Warehouse.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the Network Security Group (NSG ).
A virtual machine was created as a domain-joined bastion host with the following configurations:
Antimalware extension
Log Analytics extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault (respects Azure Government, PCI DSS, HIPAA and other
requirements)
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system
Virtual network
This reference architecture defines a private virtual network with an address space of 10.0.0.0/16.
Network security groups: NSGs contain Access Control Lists (ACLs) that allow or deny traffic within a VNet.
NSGs can be used to secure traffic at a subnet or individual VM level. The following NSGs exist:
An NSG for the Data Tier (SQL Server Clusters, SQL Server Witness, and SQL Load Balancer)
An NSG for the management bastion host
An NSG for Active Directory
An NSG for SQL Server Reporting Services
Each of the NSGs have specific ports and protocols open so that the solution can work securely and correctly. In
addition, the following configurations are enabled for each NSG:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the NSG's diagnostics
Subnets: Each subnet is associated with its corresponding NSG.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
Azure Disk Encryption Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for OS and data disks. The solution integrates with Azure Key Vault to help control and manage the
disk-encryption keys.
Azure SQL Database The Azure SQL Database instance uses the following database security measures:
AD Authentication and Authorization enables identity management of database users and other Microsoft
services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
SQL Database is configured to use Transparent Data Encryption (TDE ), which performs real-time encryption
and decryption of data and log files to protect information at rest. TDE provides assurance that stored data has
not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Always Encrypted columns ensure that sensitive data never appears as plaintext inside the database system.
After enabling data encryption, only client applications or app servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking can be done after the reference architecture deploys. Customers will need
to adjust dynamic data masking settings to adhere to their database schema.
Business continuity
High availability: Server workloads are grouped in an Availability Set to help ensure high availability of virtual
machines in Azure. At least one virtual machine is available during a planned or unplanned maintenance event,
meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure Virtual Machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS VM without restoring the entire VM, enabling faster restore times.
Logging and audit
Log Analytics provides extensive logging of system and user activity, as well as system health. The Log Analytics
solution collects and analyzes data generated by resources in Azure and on-premises environments.
Activity Logs: Activity logs provide insight into operations performed on resources in a subscription.
Diagnostic Logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows
event system logs and Azure Blob storage, tables, and queue logs.
Firewall Logs: The Application Gateway provides full diagnostic and access logs. Firewall logs are available for
WAF -enabled Application Gateway resources.
Log Archiving: All diagnostic logs write to a centralized and encrypted Azure storage account for archival with
a defined retention period of 2 days. These logs connect to Azure Log Analytics for processing, storing, and
dashboard reporting.
Additionally, the following monitoring solutions are included as a part of this architecture:
AD Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
Antimalware Assessment: The Antimalware solution reports on malware, threats, and protection status.
Azure Automation: The Azure Automation solution stores, runs, and manages runbooks.
Security and Audit: The Security and Audit dashboard provides a high-level insight into the security state of
resources by providing metrics on security domains, notable issues, detections, threat intelligence, and common
security queries.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Update Management: The Update Management solution allows customer management of operating system
security updates, including a status of available updates and the process of installing required updates.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Azure Activity Logs: The Activity Log Analytics solution assists with analysis of the Azure activity logs across all
Azure subscriptions for a customer.
Change Tracking: The Change Tracking solution allows customers to easily identify changes in the environment.
Identity management
The following technologies provide identity management capabilities in the Azure environment:
Active Directory (AD ) can be Microsoft's multi-tenant cloud-based directory and identity management service.
All users for the solution were created in Azure Active Directory, including users accessing the SQL Database.
Authentication to the application is performed using Azure AD. For more information, see Integrating
applications with Azure Active Directory. Additionally, the database column encryption uses Azure AD to
authenticate the application to Azure SQL Database. For more information, see how to protect sensitive data in
SQL Database.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization’s identities,
configures automated responses to detected suspicious actions related to an organization’s identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Azure Role-based Access Control (RBAC ) enables focused access management for Azure. Subscription access is
limited to the subscription administrator.
To learn more about using the security features of Azure SQL Database, see the Contoso Clinic Demo Application
sample.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services.
Malware protection: Microsoft Antimalware for Virtual Machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Threat model
The data flow diagram (DFD ) for this reference architecture is available for download or can be found below:
Compliance documentation
The Azure Security and Compliance Blueprint – FedRAMP High Customer Responsibility Matrix lists all security
controls required by the FedRAMP High baseline. Similarly, the Azure Security and Compliance Blueprint –
FedRAMP Moderate Customer Responsibility Matrix lists all security controls required by the FedRAMP Moderate
baseline. Both documents detail whether the implementation of each control is the responsibility of Microsoft, the
customer, or shared between the two.
The Azure Security and Compliance Blueprint - FedRAMP High Control Implementation Matrix and the Azure
Security and Compliance Blueprint - FedRAMP Moderate Control Implementation Matrix provide information on
which controls are covered by the data warehouse architecture for each FedRAMP baseline, including detailed
descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: IaaS Web
Application for FedRAMP
1/14/2019 • 12 minutes to read • Edit Online
Overview
The Federal Risk and Authorization Management Program (FedRAMP ) is a U.S. government-wide program that
provides a standardized approach to security assessment, authorization, and continuous monitoring for cloud
products and services. This Azure Security and Compliance Blueprint Automation provides guidance for the
deployment of a FedRAMP -compliant infrastructure as a service (IaaS ) environment suitable for a simple Internet-
facing web application. This solution automates deployment and configuration of Azure resources for a common
reference architecture, demonstrating ways in which customers can meet specific security and compliance
requirements and serves as a foundation for customers to build and configure their own solutions on Azure. The
solution implements a subset of controls from the FedRAMP High baseline, based on NIST SP 800-53. For more
information about FedRAMP requirements and this solution, see the compliance documentation.
NOTE
This solution deploys to Azure Government.
This Azure Security and Compliance Blueprint Automation automatically deploys an IaaS web application
reference architecture with pre-configured security controls to help customers achieve compliance with FedRAMP
requirements. The solution consists of Azure Resource Manager templates and PowerShell scripts that guide
resource deployment and configuration.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment. Deploying an application into this environment without
modification is not sufficient to completely meet the requirements of the FedRAMP High baseline. Please note the
following:
This architecture provides a baseline to help customers use Azure in a FedRAMP -compliant manner.
Customers are responsible for conducting appropriate security and compliance assessment of any solution built
using this architecture, as requirements may vary based on the specifics of each customer's implementation.
For a quick overview of how this solution works, watch this video explaining and demonstrating its deployment.
Click here for deployment instructions.
Deployment architecture
The following section details the development and implementation elements.
Bastion host: The bastion host is the single point of entry that provides a secure connection for administrators to
access deployed resources. The bastion host's NSG allows connections only on TCP port 3389 for RDP. Customers
can further configure the bastion host to meet organization system hardening requirements.
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: This solution deploys resources in an architecture with a separate web subnet,
database subnet, Active Directory subnet, and management subnet inside of a virtual network. Subnets are
logically separated by network security group rules applied to the individual subnets to restrict traffic between
subnets to only that necessary for system and management functionality.
Please see the configuration for network security groups deployed with this solution. Customers can configure
network security groups by editing the file above using this documentation as a guide.
Each of the subnets has a dedicated network security group (NSG ):
1 NSG for Application Gateway (LBNSG )
1 NSG for bastion host (MGTNSG )
1 NSG for Primary and Backup Domain Controllers (ADNSG )
1 NSG for SQL Servers (SQLNSG )
1 NSG for Web Tier (WEBNSG )
Subnets: Each subnet is associated with its corresponding NSG.
Data at rest
The architecture protects data at rest by using several encryption measures.
Azure Storage: To meet data-at-rest encryption requirements, all storage accounts use Storage Service
Encryption.
SQL Server: SQL Server is configured to use Transparent Data Encryption (TDE ), which performs real-time
encryption and decryption of data and log files to protect information at rest. TDE provides assurance that stored
data has not been subject to unauthorized access.
Customers may also configure the following SQL Server security measures:
AD authentication and authorization enables identity management of database users and other Microsoft
services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Always Encrypted columns ensure that sensitive data never appears as plaintext inside the database system.
After enabling data encryption, only client applications or app servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking can be done after the reference architecture deploys. Customers will need
to adjust dynamic data masking settings to adhere to their database schema.
Azure Disk Encryption: Azure Disk Encryption is used to encrypted Windows IaaS virtual machine disks. Azure
Disk Encryption leverages the BitLocker feature of Windows to provide volume encryption for OS and data disks.
The solution is integrated with Azure Key Vault to help control and manage the disk-encryption keys.
Identity management
The following technologies provide identity management capabilities in the Azure environment:
Azure Active Directory (Azure AD ) is Microsoft's multi-tenant cloud-based directory and identity management
service.
Authentication to a customer-deployed web application can be performed using Azure AD. For more
information, see Integrating applications with Azure Active Directory.
Azure Role-based Access Control (RBAC ) enables precisely focused access management for Azure. Subscription
access is limited to the subscription administrator, and access to resources can be limited based on user role.
A deployed IaaS Active Directory instance provides identity management at the OS -level for deployed IaaS
virtual machines.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. Azure Key Vault
helps manage IaaS virtual machine disk-encryption keys and secrets for this reference architecture.
Patch management: Windows virtual machines deployed by this Azure Security and Compliance Blueprint
Automation are configured by default to receive automatic updates from Windows Update Service. This solution
also deploys the Azure Automation solution through which Update Deployments can be created to deploy patches
to Windows servers when needed.
Malware protection: Microsoft Antimalware for Virtual Machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Application Gateway: The architecture reduces the risk of security vulnerabilities using an Application Gateway
with web application firewall (WAF ), and the OWASP ruleset enabled. Additional capabilities include:
End-to-End-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (WAF mode)
Prevention mode with OWASP 3.0 ruleset
Business continuity
High availability: At least one virtual machine is available during a planned or unplanned maintenance event,
meeting the 99.95% Azure SLA. The solution deploys all web tier and data tier virtual machines in an Availability
Set. Availability sets ensure that the virtual machines are distributed across multiple isolated hardware clusters to
improve availability. Furthermore, this solution deploys the SQL Server virtual machines in an Availability Set as an
AlwaysOn availability group. The Always On availability group feature provides for high-availability and disaster-
recovery capabilities.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure Virtual Machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS VM without restoring the entire VM, enabling faster restore times.
Cloud Witness: Cloud Witness is a type of Failover Cluster quorum witness in Windows Server 2016 that
leverages Azure as the arbitration point. The Cloud Witness, like any other quorum witness, gets a vote and can
participate in the quorum calculations, but it uses the standard publicly available Azure Blob Storage. This
eliminates the extra maintenance overhead of VMs hosted in a public cloud.
Logging and auditing
Log Analytics provides extensive logging of system and user activity, as well as system health. The Log Analytics
solution collects and analyzes data generated by resources in Azure and on-premises environments.
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs are all logs emitted by every resource. These logs include Windows event
system logs, Azure storage logs, Key Vault audit logs, and Application Gateway access and firewall logs.
Log archiving: All diagnostic logs write to a centralized and encrypted Azure storage account for archival. The
retention is user-configurable, up to 730 days, to meet organization-specific retention requirements. These logs
connect to Azure Log Analytics for processing, storing, and dashboard reporting.
Additionally, the following monitoring solutions are installed as a part of this architecture. Note that it's the
customer's responsibility to configure these solutions to align with FedRAMP security controls:
AD Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
Antimalware Assessment: The Antimalware solution reports on malware, threats, and protection status.
Azure Automation: The Azure Automation solution stores, runs, and manages runbooks.
Security and Audit: The Security and Audit dashboard provides a high-level insight into the security state of
resources by providing metrics on security domains, notable issues, detections, threat intelligence, and common
security queries.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Update Management: The Update Management solution allows customer management of operating system
security updates, including a status of available updates and the process of installing required updates.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Azure Activity Logs: The Activity Log Analytics solution assists with analysis of the Azure activity logs across all
Azure subscriptions for a customer.
Change Tracking: The Change Tracking solution allows customers to easily identify changes in the environment.
Azure Monitor Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in customers' Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint - FedRAMP High Customer Responsibility Matrix lists all security
controls required by the FedRAMP High baseline. The matrix denotes whether the implementation of each control
is the responsibility of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint - FedRAMP IaaS Web Application High Control Implementation
Matrix lists all security controls required by the FedRAMP High baseline. The matrix provides information on
which controls are covered by the IaaS web application architecture, including detailed descriptions of how the
implementation meets the requirements of each covered control.
NOTE
This solution deploys to Azure Government.
Quickstart
1. Clone or download this GitHub repository to your local workstation.
2. Run the pre-deployment PowerShell script: azure-blueprint/predeploy/Orchestration_InitialSetup.ps1.
3. Click the button below, sign into the Azure portal, enter the required ARM template parameters, and click
Purchase.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: PaaS Web
Application for FedRAMP
1/14/2019 • 12 minutes to read • Edit Online
Overview
The Federal Risk and Authorization Management Program (FedRAMP ) is a United States government-wide
program that provides a standardized approach to security assessment, authorization, and continuous monitoring
for cloud products and services. This Azure Security and Compliance Blueprint provides guidance for how to
deliver a Microsoft Azure platform as a service (PaaS ) architecture that helps implement a subset of FedRAMP
High controls. This solution provides guidance on the deployment and configuration of Azure resources for a
common reference architecture, demonstrating ways in which customers can meet specific security and compliance
requirements and serves as a foundation for customers to build and configure their own solutions on Azure.
This reference architecture, associated control implementation guides, and threat models are intended to serve as a
foundation for customers to adjust to their specific requirements and should not be used as-is in a production
environment. Deploying an application into this environment without modification is insufficient to completely
meet the requirements of the FedRAMP High baseline. Please note the following:
The architecture provides a baseline to help customers deploy workloads to Azure in a FedRAMP -compliant
manner.
Customers are responsible for conducting appropriate security and compliance assessments of any solution
built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
Deployment architecture
The following section details the deployment and implementation elements.
Azure Resource Manager: Azure Resource Manager enables customers to work with the resources in the
solution as a group. Customers can deploy, update, or delete all the resources for the solution in a single,
coordinated operation. Customers use a template for deployment and that template can work for different
environments such as testing, staging, and production. Resource Manager provides security, auditing, and tagging
features to help customers manage their resources after deployment.
App Service Environment v2: The Azure App Service Environment (ASE ) is an App Service feature that provides
a fully isolated and dedicated environment for securely running App Service applications at a high scale.
ASEs are isolated to only run a single customer's applications and are always deployed into a virtual network.
Customers have fine-grained control over both inbound and outbound application network traffic, and applications
can establish high-speed secure connections over virtual networks to on-premises corporate resources.
Use of ASEs for this architecture are allowed for the following controls/configurations:
Host inside a secured Azure Virtual Network and network security rules
ASE configured with self-signed ILB certificate for HTTPS communication
Internal Load Balancing mode
Disable TLS 1.0
Change TLS Cipher
Control inbound traffic N/W ports
Web Application Firewall – Restrict Data
Allow Azure SQL Database traffic
The Guidance and recommendations section contains additional information about ASEs.
Azure Web App: Azure App Service enables customers to build and host web applications in the programming
language of their choice without managing infrastructure. It offers auto-scaling and high availability, supports both
Windows and Linux, and enables automated deployments from GitHub, Azure DevOps, or any Git repo.
Virtual Network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: Network security groups (NSGs) contain access control lists that allow or deny traffic
within a virtual network. NSGs can be used to secure traffic at a subnet or individual VM level. The following NSGs
exist:
1 NSG for Application Gateway
1 NSG for App Service Environment
1 NSG for Azure SQL Database
Each of the NSGs have specific ports and protocols open so that the solution can work securely and correctly. In
addition, the following configurations are enabled for each NSG:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the NSG's diagnostics
Subnets: Each subnet is associated with its corresponding NSG.
Azure DNS: The Domain Name System, or DNS, is responsible for translating (or resolving) a website or service
name to its IP address. Azure DNS is a hosting service for DNS domains that provides name resolution using
Azure infrastructure. By hosting domains in Azure, users can manage DNS records using the same credentials,
APIs, tools, and billing as other Azure services. Azure DNS also supports private DNS domains.
Azure Load Balancer: Azure Load Balancer allows customers to scale their applications and create high
availability for services. Load Balancer supports inbound as well as outbound scenarios, and provides low latency,
high throughput, and scales up to millions of flows for all TCP and UDP applications.
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
Azure Disk Encryption Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
AD authentication and authorization enables identity management of database users and other Microsoft
services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use Transparent Data Encryption (TDE ), which performs real-time
encryption and decryption of the database, associated backups, and transaction log files to protect information
at rest.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Always Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system.
After enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
Row -Level Security enables users to define policies to restrict access to data to discontinue processing.
SQL Database dynamic data masking can be done after the reference architecture deploys. Customers will need
to adjust dynamic data masking settings to adhere to their database schema.
Identity management
The following technologies provide identity management capabilities in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in AAD, including users accessing the Azure SQL Database.
Authentication to the application is performed using AAD. For more information, see Integrating applications
with Azure Active Directory. Additionally, the database column encryption uses Azure Active Directory to
authenticate the application to Azure SQL Database. For more information, see how to protect sensitive data in
Azure SQL Database.
Azure role-based access control enables precisely focused access management for Azure. Subscription access is
limited to the subscription administrator, and access to resources can be limited based on user role.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use AAD Privileged Identity Management to
discover, restrict, and monitor privileged identities and their access to resources. This functionality can also be
used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization’s identities,
configures automated responses to detected suspicious actions related to an organization’s identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets Management The solution uses Azure Key Vault for the management of keys and secrets. Azure Key Vault
helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure Key
Vault capabilities help customers protect data and access to such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules (HSMs). The key type is an HSM
Protected 2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Application Gateway The architecture reduces the risk of security vulnerabilities using an Application Gateway
with Web Application Firewall, and the OWASP ruleset enabled. Additional capabilities include:
End-to-End-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web Application Firewall
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Logging and auditing
Azure Monitor provides extensive logging of system and user activity, as well as system health. It collects and
analyzes data generated by resources in Azure and on-premises environments.
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs.
Log archiving: All diagnostic logs write to a centralized and encrypted Azure storage account for archival. The
retention is user-configurable, up to 730 days, to meet organization-specific retention requirements. These logs
connect to Azure Log Analytics for processing, storing, and dashboard reporting.
Additionally, the following monitoring solutions are included as a part of this architecture:
Active directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
Antimalware Assessment: The Antimalware solution reports on malware, threats, and protection status.
Azure Automation: The Azure Automation solution stores, runs, and manages runbooks. In this solution,
runbooks help collect logs from Application Insights and Azure SQL Database.
Security and Audit: The Security and Audit dashboard provides a high-level insight into the security state of
resources by providing metrics on security domains, notable issues, detections, threat intelligence, and common
security queries.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Update Management: The Update Management solution allows customer management of operating system
security updates, including a status of available updates and the process of installing required updates.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Azure Activity Logs: The Activity Log Analytics solution assists with analysis of the Azure activity logs across all
Azure subscriptions for a customer.
Change Tracking: The Change Tracking solution allows customers to easily identify changes in the environment.
Azure Monitor Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in customers' Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint - FedRAMP High Customer Responsibility Matrix lists all security
controls required by the FedRAMP High baseline. The matrix denotes whether the implementation of each control
is the responsibility of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint - FedRAMP PaaS WebApp High Control Implementation Matrix
lists all security controls required by the FedRAMP High baseline. The matrix provides information on which
controls are covered by the PaaS web application architecture, including detailed descriptions of how the
implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: Analytics
for FFIEC Financial Services
12/6/2018 • 16 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of a data analytics
architecture in Azure suitable for the collection, storage, and retrieval of financial data regulated by the Federal
Financial Institution Examination Council (FFIEC ).
This reference architecture, implementation guide, and threat model provide a foundation for customers to comply
with FFIEC requirements. This solution provides a baseline to help customers deploy workloads to Azure in a
FFIEC compliant manner; however, this solution should not be used as-is in a production environment because
additional configuration is required.
Achieving FFIEC -compliance requires that qualified auditors certify a production customer solution. Audits are
overseen by examiners from FFIEC’s member agencies, including the Board of Governors of the Federal Reserve
System (FRB ), the Federal Deposit Insurance Corporation (FDIC ), the National Credit Union Administration
(NCUA), the Office of the Comptroller of the Currency (OCC ), and the Consumer Financial Protection Bureau
(CFPB ). These examiners certify that audits are completed by assessors who maintain independence from the
audited institution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
Architecture section.
Application Insights
Azure Active Directory
Azure Data Catalog
Azure Disk Encryption
Azure Event Grid
Azure Functions
Azure Key Vault
Azure Machine Learning
Azure Monitor
Azure Security Center
Azure SQL Database
Azure Storage
Azure Log Analytics
Azure Virtual Network
(1) /16 Network
(2) /24 Networks
(2) Network security groups
Power BI Dashboard
Deployment architecture
The following section details the deployment and implementation elements.
Azure Event Grid: Azure Event Grid allows customers to easily build applications with event-based architectures.
Users select the Azure resource they would like to subscribe to and give the event handler or webhook an endpoint
to send the event to. Customers can secure webhook endpoints by adding query parameters to the webhook URL
when creating an Event Subscription. Azure Event Grid only supports HTTPS webhook endpoints. Azure Event
Grid allows customers to control the level of access given to different users to do various management operations
such as list event subscriptions, create new ones, and generate keys. Event Grid utilizes Azure role-based access
control.
Azure Functions: Azure Functions is a server-less compute service that enables users to run code on-demand
without having to explicitly provision or manage infrastructure. Use Azure Functions to run a script or piece of code
in response to a variety of events.
Azure Machine Learning service: Azure Machine Learning is a data science technique that allows computers to
use existing data to forecast future behaviors, outcomes, and trends.
Azure Data Catalog: Data Catalog makes data sources easily discoverable and understandable by the users who
manage the data. Common data sources can be registered, tagged, and searched for financial data. The data
remains in its existing location, but a copy of its metadata is added to Data Catalog, along with a reference to the
data source location. The metadata is also indexed to make each data source easily discoverable via search and
understandable to the users who discover it.
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual VM level. The
following network security groups exist:
A network security group for Active Directory
A network security group for the workload
Each of the network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostic logs
Subnets: Each subnet is associated with its corresponding network security group.
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by FFIEC.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
Extended Properties can be used to discontinue the processing of data subjects, as it allows users to add custom
properties to database objects and tag data as "Discontinued" to support application logic to prevent the
processing of associated financial data.
Row -Level Security enables users to define policies to restrict access to data to discontinue processing.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Application Insights: Application Insights is an extensible Application Performance Management (APM ) service
for web developers on multiple platforms. It detects performance anomalies and includes powerful analytics tools
to help diagnose issues and to understand what users actually do with the app. It's designed to help users
continuously improve performance and usability.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – FFIEC Customer Responsibility Matrix lists all objectives required
by FFIEC. This matrix details whether the implementation of each objective is the responsibility of Microsoft, the
customer, or shared between the two.
The Azure Security and Compliance Blueprint – FFIEC Data Analytics Implementation Matrix provides information
on which FFIEC objectives are addressed by the data analytics architecture, including detailed descriptions of how
the implementation meets the requirements of each covered objective.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: Data
Warehouse for FFIEC Financial Services
10/18/2018 • 18 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of a data warehouse
architecture in Azure suitable for the collection, storage, and retrieval of financial data regulated by the Federal
Financial Institution Examination Council (FFIEC ).
This reference architecture, implementation guide, and threat model provide a foundation for customers to comply
with FFIEC requirements. This solution provides a baseline to help customers deploy workloads to Azure in a
FFIEC compliant manner, however, this solution should not be used as-is in a production environment because
additional configuration is required.
Achieving FFIEC -compliance requires that qualified auditors certify a production customer solution. Audits are
overseen by examiners from FFIEC’s member agencies, including the Board of Governors of the Federal Reserve
System (FRB ), the Federal Deposit Insurance Corporation (FDIC ), the National Credit Union Administration
(NCUA), the Office of the Comptroller of the Currency (OCC ), and the Consumer Financial Protection Bureau
(CFPB ). These examiners certify that audits are completed by assessors who maintain independence from the
audited institution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
Architecture section.
Availability Sets
Active Directory Domain Controllers
SQL Cluster Nodes and Witness
Azure Active Directory
Azure Data Catalog
Azure Key Vault
Azure Monitor
Azure Security Center
Azure Load Balancer
Azure Storage
Azure Log Analytics
Azure Virtual Machines
(1) Bastion Host
(2) Active Directory domain controller
(2) SQL Server Cluster Node
(1) SQL Server Witness
Azure Virtual Network
(1) /16 Network
(4) /24 Networks
(4) Network security groups
Recovery Services Vault
SQL Data Warehouse
SQL Server Reporting Services
Deployment architecture
The following section details the deployment and implementation elements.
SQL Data Warehouse: SQL Data Warehouse is an Enterprise Data Warehouse (EDW ) that leverages Massively
Parallel Processing (MPP ) to quickly run complex queries across petabytes of data, allowing users to efficiently
identify financial data. Users can use simple PolyBase T-SQL queries to import big data into the SQL Data
Warehouse and utilize the power of MPP to run high-performance analytics.
SQL Server Reporting Services (SSRS ): SQL Server Reporting Services provides quick creation of reports with
tables, charts, maps, gauges, matrixes, and more for Azure SQL Data Warehouse.
Data Catalog: Data Catalog makes data sources easily discoverable and understandable by the users who manage
the data. Common data sources can be registered, tagged, and searched for financial data. The data remains in its
existing location, but a copy of its metadata is added to Data Catalog, along with a reference to the data source
location. The metadata is also indexed to make each data source easily discoverable via search and understandable
to the users who discover it.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system.
Virtual network
This reference architecture defines a private virtual network with an address space of 10.0.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual virtual machine
level. The following network security groups exist:
A network security group for the Data Tier (SQL Server Clusters, SQL Server Witness, and SQL Load Balancer)
A network security group for the management bastion host
A network security group for Active Directory
A network security group for SQL Server Reporting Services
Each of the network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostic logs
Subnets: Each subnet is associated with its corresponding network security group.
Data at rest
The architecture protects data at rest through multiple measures, including encryption and database auditing.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by FFIEC.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
Extended Properties can be used to discontinue the processing of data subjects, as it allows users to add custom
properties to database objects and tag data as "Discontinued" to support application logic to prevent the
processing of associated financial data.
Row -Level Security enables users to define policies to restrict access to data to discontinue processing.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Malware protection: Microsoft Antimalware for virtual machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Business continuity
High availability: Server workloads are grouped in an Availability Set to help ensure high availability of virtual
machines in Azure. At least one virtual machine is available during a planned or unplanned maintenance event,
meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure virtual machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS virtual machine without restoring the entire virtual machine, enabling faster restore times.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – FFIEC Customer Responsibility Matrix lists all objectives required
by FFIEC. This matrix details whether the implementation of each objective is the responsibility of Microsoft, the
customer, or shared between the two.
The Azure Security and Compliance Blueprint – FFIEC Data Warehouse Implementation Matrix provides
information on which FFIEC objectives are addressed by the data warehouse architecture, including detailed
descriptions of how the implementation meets the requirements of each covered objective.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: IaaS Web
Application for FFIEC Financial Services
10/18/2018 • 15 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of an infrastructure as a
service (IaaS ) environment suitable for the collection, storage, and retrieval of financial data regulated by the
Federal Financial Institution Examination Council (FFIEC ).
This reference architecture, implementation guide, and threat model provide a foundation for customers to comply
with FFIEC requirements. This solution provides a baseline to help customers deploy workloads to Azure in a
FFIEC compliant manner, however, this solution should not be used as-is in a production environment because
additional configuration is required.
Achieving FFIEC -compliance requires that qualified auditors certify a production customer solution. Audits are
overseen by examiners from FFIEC’s member agencies, including the Board of Governors of the Federal Reserve
System (FRB ), the Federal Deposit Insurance Corporation (FDIC ), the National Credit Union Administration
(NCUA), the Office of the Comptroller of the Currency (OCC ), and the Consumer Financial Protection Bureau
(CFPB ). These examiners certify that audits are completed by assessors who maintain independence from the
audited institution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
Deployment architecture
The following section details the deployment and implementation elements.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: This solution deploys resources in an architecture with a separate web subnet,
database subnet, Active Directory subnet, and management subnet inside of a virtual network. Subnets are
logically separated by network security group rules applied to the individual subnets to restrict traffic between
subnets to only that necessary for system and management functionality.
See the configuration for network security groups deployed with this solution. Organizations can configure
network security groups by editing the file above using this documentation as a guide.
Each of the subnets has a dedicated network Security Group:
1 network Security Group for Application Gateway (LBNSG )
1 network Security Group for bastion host (MGTNSG )
1 network Security Group for primary and backup domain controllers (ADNSG )
1 network Security Group for SQL Servers and Cloud Witness (SQLNSG )
1 network Security Group for web tier (WEBNSG )
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. Additionally, all transactions to Azure
Storage through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by FFIEC.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
The solution is integrated with Azure Key Vault to manage IaaS virtual machine disk-encryption keys and
secrets.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Malware protection: Microsoft Antimalware for Virtual Machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities using an Azure
Application Gateway with a web application firewall configured, and the OWASP ruleset enabled. Additional
capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Business continuity
High availability: The solution deploys all virtual machines in an Availability Set. Availability sets ensure that the
virtual machines are distributed across multiple isolated hardware clusters to improve availability. At least one
virtual machine is available during a planned or unplanned maintenance event, meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure Virtual Machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS virtual machine without restoring the entire virtual machine, enabling faster restore times.
Cloud Witness: Cloud Witness is a type of Failover Cluster quorum witness in Windows Server 2016 that
leverages Azure as the arbitration point. The Cloud Witness, like any other quorum witness, gets a vote and can
participate in the quorum calculations, but it uses the standard publicly available Azure Blob Storage. This
eliminates the extra maintenance overhead of virtual machines hosted in a public cloud.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – FFIEC Customer Responsibility Matrix lists all security objectives
required by FFIEC. This matrix details whether the implementation of each objective is the responsibility of
Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint – FFIEC IaaS Web Application Implementation Matrix provides
information on which FFIEC requirements are addressed by the IaaS web application architecture, including
detailed descriptions of how the implementation meets the requirements of each covered objective.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: PaaS Web
Application for FFIEC Financial Services
12/19/2018 • 18 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint Automation provides guidance for the deployment of a platform as
a service (PaaS ) environment suitable for the collection, storage, and retrieval of financial data regulated by the
Federal Financial Institution Examination Council (FFIEC ). This solution automates deployment and configuration
of Azure resources for a common reference architecture, demonstrating ways in which customers can meet specific
security and compliance requirements and serves as a foundation for customers to build and configure their own
solutions on Azure. The solution implements a subset of requirements from the FFIEC handbooks. For more
information about FFIEC requirements and this solution, see the compliance documentation section.
This Azure Security and Compliance Blueprint Automation deploys a PaaS web application reference architecture
with pre-configured security controls to help customers achieve compliance with FFIEC requirements. The solution
consists of Azure Resource Manager templates and PowerShell scripts that guide resource deployment and
configuration.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment. Deploying an application into this environment without
modification is not sufficient to completely meet the requirements of FFIEC objectives. Please note the following:
This architecture provides a baseline to help customers use Azure in a FFIEC -compliant manner.
Customers are responsible for conducting appropriate security and compliance assessment of any solution built
using this architecture, as requirements may vary based on the specifics of each customer's implementation.
Achieving FFIEC -compliance requires that qualified auditors certify a production customer solution. Audits are
overseen by examiners from FFIEC’s member agencies, including the Board of Governors of the Federal Reserve
System (FRB ), the Federal Deposit Insurance Corporation (FDIC ), the National Credit Union Administration
(NCUA), the Office of the Comptroller of the Currency (OCC ), and the Consumer Financial Protection Bureau
(CFPB ). These examiners certify that audits are completed by assessors who maintain independence from the
audited institution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
Click here for deployment instructions.
This solution uses the following Azure services. Details of the deployment architecture are in the deployment
architecture section.
Application Gateway
Web application firewall
Firewall mode: prevention
Rule set: OWASP
Listener port: 443
Application Insights
Azure Active Directory
Azure Application Service Environment v2
Azure Automation
Azure DNS
Azure Key Vault
Azure Load Balancer
Azure Monitor
Azure Resource Manager
Azure Security Center
Azure SQL Database
Azure Storage
Azure Log Analytics
Azure Virtual Network
(1) /16 Network
(4) /24 Networks
Network security groups
Azure App Service
Deployment architecture
The following section details the deployment and implementation elements.
Azure Resource Manager: Azure Resource Manager enables customers to work with the resources in the
solution as a group. Customers can deploy, update, or delete all the resources for the solution in a single,
coordinated operation. Customers use a template for deployment and that template can work for different
environments such as testing, staging, and production. Resource Manager provides security, auditing, and tagging
features to help customers manage their resources after deployment.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system
App Service Environment v2: The Azure App Service Environment is an App Service feature that provides a fully
isolated and dedicated environment for securely running App Service applications at a high scale. This isolation
feature is required to meet FFIEC compliance requirements.
App Service Environments are isolated to only run a single customer's applications and are always deployed into a
virtual network. This isolation feature enables the reference architecture to have complete tenant isolation,
removing it from Azure’s multi-tenant environment prohibiting those multi-tenants from enumerating the
deployed App Service Environment resources. Customers have fine-grained control over both inbound and
outbound application network traffic, and applications can establish high-speed secure connections over virtual
networks to on-premises corporate resources. Customers can “auto-scale” with App Service Environment based on
load metrics, available budget, or a defined schedule.
Use of App Service Environment for this architecture allows for the following configurations:
Host inside a secured Azure virtual network and network security rules
Self-signed internal load balancer certificate for HTTPS communication. As a best practice, Microsoft
recommends the use of a trusted certificate authority for enhanced security.
Internal Load Balancing mode
Disable TLS 1.0
Change TLS cipher
Control inbound traffic N/W ports
Web application firewall – restrict data
Allow Azure SQL Database traffic
Azure App Service: Azure App Service enables customers to build and host web applications in the programming
language of their choice without managing infrastructure. It offers auto-scaling and high availability, supports both
Windows and Linux, and enables automated deployments from GitHub, Azure DevOps, or any Git repo.
Virtual Network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual virtual machine
level. The following network security groups exist:
1 network security group for Application Gateway
1 network security group for App Service Environment
1 network security group for Azure SQL Database
1 network Security Group for bastion host
Each of the network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostics logs
Subnets: Each subnet is associated with its corresponding network security group.
Azure DNS: The Domain Name System, or DNS, is responsible for translating (or resolving) a website or service
name to its IP address. Azure DNS is a hosting service for DNS domains that provides name resolution using
Azure infrastructure. By hosting domains in Azure, users can manage DNS records using the same credentials,
APIs, tools, and billing as other Azure services. Azure DNS also supports private DNS domains.
Azure Load Balancer: Azure Load Balancer allows customers to scale their applications and create high
availability for services. Load Balancer supports inbound as well as outbound scenarios, and provides low latency,
high throughput, and scales up to millions of flows for all TCP and UDP applications.
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by FFIEC.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities using an Azure
Application Gateway with a web application firewall configured, and the OWASP ruleset enabled. Additional
capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Application Insights: Application Insights is an extensible Application Performance Management service for web
developers on multiple platforms. Application Insights detects performance anomalies and customers can use it to
monitor the live web application. It includes powerful analytics tools to help customers diagnose issues and to
understand what users actually do with their app. It's designed to help customers continuously improve
performance and usability.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – FFIEC Customer Responsibility Matrix lists all security objectives
required by FFIEC. This matrix details whether the implementation of each objective is the responsibility of
Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint – FFIEC PaaS Web Application Implementation Matrix provides
information on which FFIEC requirements are addressed by the PaaS web application architecture, including
detailed descriptions of how the implementation meets the requirements of each covered objective.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint -
HIPAA/HITRUST Health Data and AI
1/28/2019 • 13 minutes to read • Edit Online
Overview
The Azure Security and Compliance Blueprint - HIPAA/HITRUST Health Data and AI offers a turn-key
deployment of an Azure PaaS and IaaS solution to demonstrate how to ingest, store, analyze, interact,
identity and Securely deploy solutions with health data while being able to meet industry compliance
requirements. The blueprint helps accelerate cloud adoption and utilization for customers with data that
is regulated.
The Azure Security and Compliance Blueprint - HIPAA/HITRUST Health Data and AI Blueprint provides tools and
guidance to help deploy a secure, Health Insurance Portability and Accountability Act (HIPAA), and Health
Information Trust Alliance (HITRUST) ready platform-as-a-service (PaaS ) environment for ingesting, storing,
analyzing, and interacting with personal and non-personal medical records in a secure, multi-tier cloud
environment, deployed as an end-to-end solution.
IaaS solution will demonstrate how to migrate an on-premises SQL based solution to Azure, and to implement a
Privileged Access Workstation (PAW ) to securely manage cloud-based services and solutions. The IaaS SQL Server
database adds potential experimentation data is imported into a SQL IaaS VM, and that VM uses MSI
authenticated access to interact a SQL Azure PaaS service.Both these showcases a common reference architecture
and is designed to simplify adoption of Microsoft Azure. This provided architecture illustrates a solution to meet
the needs of organizations seeking a cloud-based approach to reducing the burden and cost of deployment.
The solution is designed to consume a sample data set formatted using Fast Healthcare Interoperability Resources
(FHIR ), a worldwide standard for exchanging healthcare information electronically, and store it in a secure manner.
Customers can then use Azure Machine Learning Studio to take advantage of powerful business intelligence tools
and analytics to review predictions made on the sample data. As an example of the kind of experiment Azure
Machine Learning Studio can facilitate, the blueprint includes a sample dataset, scripts, and tools for predicting the
length of a patient's stay in a hospital facility.
This blueprint is intended to serve as a modular foundation for customers to adjust to their specific requirements,
developing new Azure Machine learning experiments to solve both clinical and operational use case scenarios. It is
designed to be secure and compliant when deployed; however, customers are responsible for configuring roles
correctly and implementing any modifications. Note the following:
This blueprint provides a baseline to help customers use Microsoft Azure in a HITRUST, and HIPAA
environment.
Although the blueprint was designed to be aligned with HIPAA and HITRUST (through the Common
Security Framework -- CSF ), it should not be considered compliant until certified by an external auditor per
HIPAA and HITRUST certification requirements.
Customers are responsible for conducting appropriate security and compliance reviews of any solution built
using this foundational architecture.
Solution components
The foundational architecture is composed of the following components:
Threat model A comprehensive threat model is provided in tm7 format for use with the Microsoft Threat
Modeling Tool, showing the components of the solution, the data flows between them, and the trust
boundaries. The model can help customers understand the points of potential risk in the system
infrastructure when developing Machine Learning Studio components or other modifications.
Customer implementation matrix A Microsoft Excel workbook lists the relevant HITRUST requirements
and explains how Microsoft and the customer are responsible for meeting each one.
Health review. The solution was reviewed by Coalfire systems, Inc. The Health Compliance (HIPAA, and
HITRUST) Review and guidance for implementation provides an auditor's review of the solution, and
considerations for transforming the blueprint to a production-ready deployment.
Architectural diagram
Roles
The blueprint defines two roles for administrative users (operators), and three roles for users in hospital
management and patient care. A sixth role is defined for an auditor to evaluate compliance with HIPAA and other
regulations. Azure Role-based Access Control (RBAC ) enables precisely focused access management for each user
of the solution through built-in and custom roles. See Get started with Role-Based Access Control in the Azure
portal and Built-in roles for Azure role-based access control for detailed information about RBAC, roles, and
permissions.
Site Administrator
The site administrator is responsible for the customer's Azure subscription. They control the overall deployment,
but have no access to patient records.
Default role assignments: Owner
Custom role assignments: N/A
Scope: Subscription
Database Analyst
The database analyst administers the SQL Server instance and database. They have no access to patient records.
Built-in role assignments: SQL DB Contributor, SQL Server Contributor
Custom role assignments: N/A
Scope: ResourceGroup
Data Scientist
The data scientist operates the Azure Machine Learning Studio. They can import, export, and manage data, and run
reports. The data scientist has access to patient data, but does not have administrative privileges.
Built-in role assignments: Storage Account Contributor
Custom role assignments: N/A
Scope: ResourceGroup
Chief Medical Information Officer (CMIO )
The CMIO straddles the divide between informatics/technology and healthcare professionals in a healthcare
organization. Their duties typically include using analytics to determine if resources are being allocated
appropriately within the organization.
Built-in role assignments: None
Care Line Manager
The care line manager is directly involved with the care of patients. This role requires monitoring the status of
individual patients as well as ensuring that staff is available to meet the specific care requirements of their patients.
The care line manager is responsible for adding and updating patient records.
Built-in role assignments: None
Custom role assignments: Has privilege to run HealthcareDemo.ps1 to do both Patient Admission, and
Discharge.
Scope: ResourceGroup
Auditor
The auditor evaluates the solution for compliance. They have no direct access to the network.
Built-in role assignments: Reader
Custom role assignments: N/A
Scope: Subscription
Design configuration
This section details the default configurations and security measures built into the Blueprint outlined to:
INGEST data raw sources including FHIR data source
STORE sensitive information
ANALYZE and predict outcomes
INTERACT with the results and predictions
IDENTITY management of solution
SECURITY enabled features
IDENTITY
Azure Active Directory and role -based access control (RBAC )
Authentication:
Azure Active Directory (Azure AD ) is the Microsoft's multi-tenant cloud-based directory and identity
management service. All users for the solution were created in Azure Active Directory, including users
accessing the SQL Database.
Authentication to the application is performed using Azure AD. For more information, see Integrating
applications with Azure Active Directory.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting your organization's
identities, configures automated responses to detected suspicious actions related to your organization's
identities, and investigates suspicious incidents and takes appropriate action to resolve them.
Azure Role-based Access Control (RBAC ) enables precisely focused access management for Azure.
Subscription access is limited to the subscription administrator, and Azure Key Vault access is limited to the
site administrator. Strong passwords (12 characters minimum with at least one Upper/Lower letter, number,
and special character) are required.
Multi-factor authentication is supported when the -enableMFA switch is enabled during deployment.
Passwords expire after 60 days when the -enableADDomainPasswordPolicy switch is enabled during
deployment.
Roles:
The solution makes use of built-in roles to manage access to resources.
All users are assigned specific built-in roles by default.
Azure Key Vault
Data stored in Key Vault includes:
Application insight key
Patient Data Storage Access key
Patient connection string
Patient data table name
Azure ML Web Service Endpoint
Azure ML Service API Key
Advanced access policies are configured on a need basis
Key Vault access policies are defined with minimum required permissions to keys and secrets
All keys and secrets in Key Vault have expiration dates
All keys in Key Vault are protected by HSM [Key Type = HSM Protected 2048-bit RSA Key]
All users/identities are granted minimum required permissions using Role Based Access Control (RBAC )
Applications do not share a Key Vault unless they trust each other and they need access to the same secrets at
runtime
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required
INGEST
Azure Functions
The solution was designed to use Azure Functions to process the sample length of stay data used in the analytics
demo. Three capabilities in the functions have been created.
1. Bulk import of customer data phi data
When using the demo script. .\HealthcareDemo.ps1 with the BulkPatientAdmission switch as outlined in
Deploying and running the demo it executes the following processing pipeline:
1. Azure Blob Storage - Patient data .csv file sample uploaded to storage
2. Event Grid - Event Publishes data to Azure Function (Bulk import - blob event)
3. Azure Function - Performs the processing and stores the data into SQL Storage using the secure function -
event(type; blob url)
4. SQL DB - The database store for Patient Data using tags for classification, and the ML process is kicked off to
do the training experiment.
Additionally the azure function was designed to read and protect designated sensitive data in the sample data set
using the following tags:
dataProfile => “ePHI”
owner => <Site Admin UPN>
environment => “Pilot”
department => “Global Ecosystem" The tagging was applied to the sample data set where patient 'names' was
identified as clear text.
2. Admission of new patients
When using the demo script. .\HealthcareDemo.ps1 with the BulkPatientadmission switch as outlined in
Deploying and running the demo it executes the following processing pipeline:
1. Azure Function triggered and the function requests for a bearer token from Azure Active directory.
2. Key Vault requested for a secret that is associated to the requested token.
**3. Azure Roles validate the request, and authorize access request to the Key Vault.
4. Key Vault returns the secret, in this case the SQL DB Connection string.
5. Azure Function uses the connection string to securely connect to SQL Database and continues further
processing to store ePHI data.
To achieve the storage of the data, a common API schema was implemented following Fast Healthcare
Interoperability Resources (FHIR, pronounced fire). The function was provided the following FHIR exchange
elements:
Patient schema covers the "who" information about a patient.
Observation schema covers the central element in healthcare, used to support diagnosis, monitor progress,
determine baselines and patterns and even capture demographic characteristics.
Encounter schema covers the types of encounters such as ambulatory, emergency, home health, inpatient,
and virtual encounters.
Condition schema covers detailed information about a condition, problem, diagnosis, or other event,
situation, issue, or clinical concept that has risen to a level of concern.
Event Grid
The solution supports Azure Event Grid, a single service for managing routing of all events from any source to any
destination, providing:
Security and authentication
Role-based access control for various management operations such as listing event subscriptions, creating
new ones, and generating keys
Auditing
STORE
SQL Database and Server
Transparent Data Encryption (TDE ) provides real-time encryption and decryption of data stored in the Azure
SQL Database, using a key stored in Azure Key Vault.
SQL Vulnerability Assessment is an easy to configure tool that can discover, track, and remediate potential
database vulnerabilities.
SQL Database Threat Detection enabled.
SQL Database Auditing enabled.
SQL Database metrics and diagnostic logging enabled.
Server- and database-level firewall rules have been tightened.
Always Encrypted columns are used to protect patient first, middle, and last names. Additionally, the
database column encryption also uses Azure Active Directory (AD ) to authenticate the application to Azure
SQL Database.
Access to SQL Database and SQL Server is configured according to the principle of least privilege.
Only required IP addresses are allowed access through the SQL firewall.
Storage accounts
Data in motion is transferred using TLS/SSL only.
Anonymous access is not allowed for containers.
Alert rules are configured for tracking anonymous activity.
HTTPS is required for accessing storage account resources.
Authentication request data is logged and monitored.
Data in Blob storage is encrypted at rest.
ANALYZE
Machine Learning
Logging is enabled for Machine Learning Studio web services.
Using Machine Learning Studio requires the development of experiments that provide the ability to predict to a
solution set.
SECURITY
Azure Security Center
Azure Security Center provides a centralized view of the security state of all your Azure resources. At a
glance, you can verify that the appropriate security controls are in place and configured correctly, and you
can quickly identify any resources that require attention.
Azure Advisor is a personalized cloud consultant that helps you follow best practices to optimize your Azure
deployments. It analyzes your resource configuration and usage telemetry and then recommends solutions
that can help you improve the cost effectiveness, performance, high availability, and security of your Azure
resources.
Application Insights
Application Insights is an extensible Application Performance Management (APM ) service for web developers
on multiple platforms. Use it to monitor your live web application. It detects performance anomalies. It includes
powerful analytics tools to help you diagnose issues and to understand what users actually do with your app.
It's designed to help you continuously improve performance and usability.
Azure Alerts
[Alerts offer a method of monitoring Azure services and allow you to configure conditions over data. Alerts also
provide notifications when an alert condition matches the monitoring data.
Log Analytics
Log Analytics is a collection of management services.
Workspace is enabled for Security Center
Workspace is enabled for Workload Monitoring
Workload Monitoring is enabled for:
Identity and Access
Security and Audit
Azure SQL DB Analytics
Azure WebApp Analytics Solution
Key Vault Analytics
Change Tracking
Application Insights Connector (Preview ) is enabled
Activity log analytics is enabled
Azure Security and Compliance Blueprint - Data
Analytics for NIST SP 800-171
12/6/2018 • 15 minutes to read • Edit Online
Overview
NIST Special Publication 800-171 provides guidelines for protecting the controlled unclassified information (CUI)
that resides in nonfederal information systems and organizations. NIST SP 800-171 establishes 14 families of
security requirements for protecting the confidentiality of CUI.
This Azure Security and Compliance Blueprint provides guidance to help customers deploy a data analytics
architecture in Azure that implements a subset of NIST SP 800-171 controls. This solution demonstrates ways in
which customers can meet specific security and compliance requirements. It also serves as a foundation for
customers to build and configure their own data analytics solutions in Azure.
This reference architecture, associated implementation guide, and threat model are intended to serve as a
foundation for customers to adapt to their specific requirements. They shouldn't be used as-is in a production
environment. Deploying this architecture without modification is insufficient to completely meet the requirements
of NIST SP 800-171. Customers are responsible for conducting appropriate security and compliance assessments
of any solution built that uses this architecture. Requirements might vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. For more information, see the deployment architecture section.
Application Insights
Azure Active Directory
Azure Data Catalog
Azure Disk Encryption
Azure Event Grid
Azure Functions
Azure Key Vault
Azure Log Analytics
Azure Machine Learning
Azure Monitor
Azure Security Center
Azure SQL Database
Azure Storage
Azure Virtual Network
(1) /16 Network
(2) /24 Networks
(2) Network security groups
Power BI Dashboard
Deployment architecture
The following section details the deployment and implementation elements.
Azure Event Grid: With Event Grid, customers can easily build applications with event-based architectures. Users
select the Azure resource they want to subscribe to. Then they give the event handler or webhook an endpoint to
send the event to. Customers can secure webhook endpoints by adding query parameters to the webhook URL
when they create an event subscription. Event Grid supports only HTTPS webhook endpoints. With Event Grid,
customers can control the level of access given to different users to do various management operations. Users can
list event subscriptions, create new ones, and generate keys. Event Grid uses Azure RBAC.
Azure Functions: Azure Functions is a serverless compute service that runs code on-demand. You don't have to
explicitly provision or manage infrastructure. Use Azure Functions to run a script or piece of code in response to a
variety of events.
Azure Machine Learning service: Machine Learning is a data science technique that allows computers to use
existing data to forecast future behaviors, outcomes, and trends.
Azure Data Catalog: Data Catalog makes data sources easy to discover and understand by the users who
manage the data. Common data sources can be registered, tagged, and searched for data. The data remains in its
existing location, but a copy of its metadata is added to Data Catalog. A reference to the data source location is
included. The metadata is indexed to make each data source easy to discover via search. Indexing also makes it
understandable to the users who discover it.
Virtual network
This reference architecture defines a private virtual network with an address space of 10.0.0.0/16.
Network security groups: Network security groups (NSGs) contain access control lists that allow or deny traffic
within a virtual network. NSGs can be used to secure traffic at a subnet or individual virtual machine level. The
following NSGs exist:
An NSG for Active Directory
An NSG for the workload
Each of the NSGs has specific ports and protocols open so that the solution can work securely and correctly. In
addition, the following configurations are enabled for each NSG:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the NSG's diagnostics
Subnets: Each subnet is associated with its corresponding NSG.
Data in transit
Azure encrypts all communications to and from Azure data centers by default. All transactions to Storage through
the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet requirements for encrypted data at rest, all Storage uses Storage Service Encryption. This
feature helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by NIST SP 800-171.
Azure Disk Encryption: Disk Encryption uses the BitLocker feature of Windows to provide volume encryption for
data disks. The solution integrates with Azure Key Vault to help control and manage the disk-encryption keys.
Azure SQL Database: The SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
SQL Database is configured to use transparent data encryption. It performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data hasn't been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur. It provides security
alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous database
access patterns.
Encrypted columns ensure that sensitive data never appears as plain text inside the database system. After data
encryption is enabled, only client applications or application servers with access to the keys can access plain-text
data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to nonprivileged users
or applications. It can automatically discover potentially sensitive data and suggest the appropriate masks to be
applied. Dynamic data masking helps to reduce access so that sensitive data doesn't exit the database via
unauthorized access. Customers are responsible for adjusting settings to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure AD is the Microsoft multitenant cloud-based directory and identity management service. All users for this
solution are created in Azure AD and include the users who access SQL Database.
Authentication to the application is performed by using Azure AD. For more information, see how to integrate
applications with Azure AD. The database column encryption also uses Azure AD to authenticate the application
to SQL Database. For more information, see how to protect sensitive data in SQL Database.
Azure RBAC can be used by administrators to define fine-grained access permissions. With it, they can grant
only the amount of access that users need to perform their jobs. Instead of giving every user unrestricted
permissions for Azure resources, administrators can allow only certain actions for accessing data. Subscription
access is limited to the subscription administrator.
Azure Active Directory Privileged Identity Management can be used by customers to minimize the number of
users who have access to certain information, such as data. Administrators can use Azure AD Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality also can be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities that affect an organization’s identities.
It configures automated responses to detected suspicious actions related to an organization’s identities. It also
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Key Vault helps
safeguard cryptographic keys and secrets used by cloud applications and services. The following Key Vault
capabilities help customers protect data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security-module-protected 2048-bit RSA key.
All users and identities are granted minimum required permissions by using RBAC.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Security Center, customers can centrally apply and manage security policies across
workloads, limit exposure to threats, and detect and respond to attacks. Security Center also accesses existing
configurations of Azure services to provide configuration and service recommendations to help improve security
posture and protect data.
Security Center uses a variety of detection capabilities to alert customers of potential attacks that target their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Security Center has a set of predefined security alerts that are triggered when a threat or
suspicious activity takes place. Customers can use custom alert rules to define new security alerts based on data
that's already collected from their environment.
Security Center provides prioritized security alerts and incidents. Security Center makes it simpler for customers to
discover and address potential security issues. A threat intelligence report is generated for each detected threat.
Incident response teams can use the reports when they investigate and remediate threats.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Storage logs, Key Vault audit logs, and Azure Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. Users can configure the
retention period, up to 730 days, to meet their specific requirements.
Log Analytics: Logs are consolidated in Log Analytics for processing, storing, and dashboard reporting. After data
is collected, it's organized into separate tables for each data type within Log Analytics workspaces. In this way, all
data can be analyzed together, regardless of its original source. Security Center integrates with Log Analytics.
Customers can use Log Analytics queries to access their security event data and combine it with data from other
services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval. It provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval. It provides customers with a prioritized list of recommendations specific to the deployed server
infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution. It also reports on how many agents are unresponsive and the number of agents that submit
operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Automation stores, runs, and manages runbooks. In this solution, runbooks help collect logs
from SQL Database. Customers can use the Automation Change Tracking solution to easily identify changes in the
environment.
Azure Monitor: Monitor helps users track performance, maintain security, and identify trends. Organizations can
use it to audit, create alerts, and archive data. They also can track API calls in their Azure resources.
Application Insights: Application Insights is an extensible Application Performance Management service for web
developers on multiple platforms. It detects performance anomalies and includes powerful analytics tools. The
tools help diagnose issues and help customers understand what users do with the app. It's designed to help users
continuously improve performance and usability.
Threat model
The data flow diagram for this reference architecture is available for download or can be found here. This model
can help customers understand the points of potential risk in the system infrastructure when they make
modifications.
Compliance documentation
The Azure Security and Compliance Blueprint - NIST SP 800-171 Customer Responsibility Matrix lists all security
controls required by NIST SP 800-171. This matrix details whether the implementation of each control is the
responsibility of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint - NIST SP 800-171 Data Analytics Control Implementation Matrix
provides information on which NIST SP 800-171 controls are addressed by the data analytics architecture. It
includes detailed descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint - Data
Warehouse for NIST SP 800-171
10/18/2018 • 18 minutes to read • Edit Online
Overview
NIST Special Publication 800-171 provides guidelines for protecting the controlled unclassified information (CUI)
that resides in nonfederal information systems and organizations. NIST SP 800-171 establishes 14 families of
security requirements for protecting the confidentiality of CUI.
This Azure Security and Compliance Blueprint provides guidance to help customers deploy a data warehouse
architecture in Azure that implements a subset of NIST SP 800-171 controls. This solution demonstrates ways in
which customers can meet specific security and compliance requirements. It also serves as a foundation for
customers to build and configure their own data warehouse solutions in Azure.
This reference architecture, associated implementation guide, and threat model are intended to serve as a
foundation for customers to adapt to their specific requirements. They shouldn't be used as-is in a production
environment. Customers are responsible for conducting appropriate security and compliance assessments of any
solution built using this architecture. Requirements might vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. For more information, see the deployment architecture section.
Availability sets
Active Directory domain controllers
SQL Server cluster nodes and witness
Azure Active Directory
Azure Data Catalog
Azure Key Vault
Azure Monitor
Azure Security Center
Azure Load Balancer
Azure Storage
Azure Log Analytics
Azure Virtual Machines
(1) Bastion host
(2) Active Directory domain controller
(2) SQL Server cluster node
(1) SQL Server witness
Azure Virtual Network
(1) /16 network
(4) /24 networks
(4) Network security groups
Recovery Services vault
SQL Data Warehouse
SQL Server Reporting Services
Deployment architecture
The following section details the deployment and implementation elements.
Azure SQL Data Warehouse: SQL Data Warehouse is an enterprise data warehouse that takes advantage of
massively parallel processing to quickly run complex queries across petabytes of data. Users can use simple
PolyBase T-SQL queries to import big data into the SQL data warehouse and use the power of massively parallel
processing to run high-performance analytics.
SQL Server Reporting Services: SQL Server Reporting Services provides quick creation of reports with tables,
charts, maps, gauges, matrixes, and more for SQL Data Warehouse.
Azure Data Catalog: Data Catalog makes data sources easy to discover and understand by the users who
manage the data. Common data sources can be registered, tagged, and searched for data. The data remains in its
existing location, but a copy of its metadata is added to Data Catalog. A reference to the data source location is
included. The metadata is indexed to make each data source easy to discover via search. Indexing also makes it
understandable to the users who discover it.
Bastion host: The bastion host is the single point of entry that users can use to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by allowing only remote
traffic from public IP addresses on a safe list. To permit remote desktop traffic, the source of the traffic must be
defined in the network security group.
This solution creates a VM as a domain-joined bastion host with the following configurations:
Antimalware extension.
Azure Diagnostics extension.
Azure Disk Encryption using Key Vault.
An auto-shutdown policy to reduce consumption of VM resources when not in use.
Windows Defender Credential Guard is enabled so that credentials and other secrets run in a protected
environment that's isolated from the running operating system.
Virtual network
This reference architecture defines a private virtual network with an address space of 10.0.0.0/16.
Network security groups: Network security groups (NSGs) contain access control lists that allow or deny traffic
within a virtual network. NSGs can be used to secure traffic at a subnet or individual VM level. The following NSGs
exist:
An NSG for the data tier (SQL Server clusters, SQL Server witness, and SQL load balancer)
An NSG for the management bastion host
An NSG for Active Directory
An NSG for SQL Server Reporting Services
Each of the NSGs has specific ports and protocols open so that the solution can work securely and correctly. In
addition, the following configurations are enabled for each NSG:
Diagnostic logs and events are enabled and stored in a storage account.
Log Analytics is connected to the NSG's diagnostics.
Subnets: Each subnet is associated with its corresponding NSG.
Data at rest
The architecture protects data at rest through multiple measures. These measures include encryption and database
auditing.
Azure Storage: To meet requirements for encrypted data at rest, all Storage uses Storage Service Encryption. This
feature helps protect and safeguard data in support of organizational security commitments and compliance
requirements.
Azure Disk Encryption: Disk Encryption uses the BitLocker feature of Windows to provide volume encryption for
operating system and data disks. The solution integrates with Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL Database auditing tracks database events and writes them to an audit log in an Azure storage account.
SQL Database is configured to use transparent data encryption. It performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data hasn't been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur. It provides security
alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous database
access patterns.
Encrypted columns ensure that sensitive data never appears as plain text inside the database system. After data
encryption is enabled, only client applications or app servers with access to the keys can access plain-text data.
Extended properties can be used to discontinue the processing of data subjects. Users can add custom
properties to database objects. They also can tag data as "Discontinued" to support application logic to prevent
the processing of associated financial data.
Row -Level Security enables users to define policies to restrict access to data to discontinue processing.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to nonprivileged users
or applications. It can automatically discover potentially sensitive data and suggest the appropriate masks to be
applied. Dynamic data masking helps to reduce access so that sensitive data doesn't exit the database via
unauthorized access. Customers are responsible for adjusting settings to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure AD is the Microsoft multitenant cloud-based directory and identity management service. All users for this
solution are created in Azure AD and include the users who access the SQL database.
Authentication to the application is performed by using Azure AD. For more information, see how to integrate
applications with Azure AD. The database column encryption also uses Azure AD to authenticate the application
to SQL Database. For more information, see how to protect sensitive data in SQL Database.
Azure RBAC can be used by administrators to define fine-grained access permissions. With it, they can grant
only the amount of access that users need to perform their jobs. Instead of giving every user unrestricted access
for Azure resources, administrators can allow only certain actions for accessing resources and data.
Subscription access is limited to the subscription administrator.
Azure Active Directory Privileged Identity Management can be used by customers to minimize the number of
users who have access to certain information, such as data. Administrators can use Azure AD Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality also can be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities that affect an organization’s identities.
It configures automated responses to detected suspicious actions related to an organization’s identities. It also
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Key Vault helps
safeguard cryptographic keys and secrets used by cloud applications and services. The following Key Vault
capabilities help customers protect data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security-module-protected 2048-bit RSA key.
All users and identities are granted minimum required permissions by using RBAC.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Patch management: Windows VMs deployed as part of this reference architecture are configured by default to
receive automatic updates from Windows Update Service. This solution also includes the Azure Automation
service through which updated deployments can be created to patch VMs when needed.
Malware protection: Microsoft Antimalware for VMs provides real-time protection capability that helps identify
and remove viruses, spyware, and other malicious software. Customers can configure alerts that generate when
known malicious or unwanted software attempts to install or run on protected VMs.
Azure Security Center: With Security Center, customers can centrally apply and manage security policies across
workloads, limit exposure to threats, and detect and respond to attacks. Security Center also accesses existing
configurations of Azure services to provide configuration and service recommendations to help improve security
posture and protect data.
Security Center uses a variety of detection capabilities to alert customers of potential attacks that target their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Security Center has a set of predefined security alerts that are triggered when a threat or
suspicious activity takes place. Customers can use custom alert rules to define new security alerts based on data
that's already collected from their environment.
Security Center provides prioritized security alerts and incidents. Security Center makes it simpler for customers to
discover and address potential security issues. A threat intelligence report is generated for each detected threat.
Incident response teams can use the reports when they investigate and remediate threats.
This reference architecture also uses the vulnerability assessment capability in Security Center. After it's configured,
a partner agent (for example, Qualys) reports vulnerability data to the partner’s management platform. In turn, the
partner's management platform provides vulnerability and health monitoring data back to Security Center.
Customers can use this information to quickly identify vulnerable VMs.
Business continuity
High availability: Server workloads are grouped in an availability set to help ensure high availability of VMs in
Azure. At least one VM is available during a planned or unplanned maintenance event, which meets the 99.95%
Azure SLA.
Recovery Services vault: The Recovery Services vault houses backup data and protects all configurations of VMs
in this architecture. With a Recovery Services vault, customers can restore files and folders from an IaaS VM
without restoring the entire VM. This process speeds up restore times.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Storage logs, Key Vault audit logs, and Azure Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. Users can configure the
retention period, up to 730 days, to meet their specific requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
After data is collected, it's organized into separate tables for each data type within Log Analytics workspaces. In this
way, all data can be analyzed together, regardless of its original source. Security Center integrates with Log
Analytics. Customers can use Log Analytics queries to access their security event data and combine it with data
from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval. It provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval. It provides customers with a prioritized list of recommendations specific to the deployed server
infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution. It also reports how many agents are unresponsive and the number of agents that submit
operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Automation stores, runs, and manages runbooks. In this solution, runbooks help collect logs
from SQL Database. Customers can use the Automation Change Tracking solution to easily identify changes in the
environment.
Azure Monitor: Monitor helps users track performance, maintain security, and identify trends. Organizations can
use it to audit, create alerts, and archive data. They also can track API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found here. This model
can help customers understand the points of potential risk in the system infrastructure when they make
modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – NIST SP 800-171 Customer Responsibility Matrix lists all security
controls required by NIST SP 800-171. This matrix details whether the implementation of each control is the
responsibility of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint - NIST SP 800-171 Data Warehouse Control Implementation Matrix
provides information on which NIST SP 800-171 controls are covered by the data warehouse architecture. It
includes detailed descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint - IaaS Web
Application for NIST SP 800-171
10/18/2018 • 14 minutes to read • Edit Online
Overview
NIST Special Publication 800-171 provides guidelines for protecting the controlled unclassified information (CUI)
that resides in nonfederal information systems and organizations. NIST SP 800-171 establishes 14 families of
security requirements for protecting the confidentiality of CUI.
This Azure Security and Compliance Blueprint provides guidance to help customers deploy a web application
architecture in Azure that implements a subset of NIST SP 800-171 controls. This solution demonstrates ways in
which customers can meet specific security and compliance requirements. It also serves as a foundation for
customers to build and configure their own web applications in Azure.
This reference architecture, associated implementation guide, and threat model are intended to serve as a
foundation for customers to adapt to their specific requirements. They shouldn't be used as-is in a production
environment. Deploying this architecture without modification is insufficient to completely meet the requirements
of NIST SP 800-171. Customers are responsible for conducting appropriate security and compliance assessments
of any solution built using this architecture. Requirements might vary based on the specifics of each customer's
implementation.
Deployment architecture
The following section details the deployment and implementation elements.
Bastion host: The bastion host is the single point of entry that users can use to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by allowing only remote
traffic from public IP addresses on a safe list. To permit remote desktop traffic, the source of the traffic must be
defined in the network security group (NSG ).
This solution creates a VM as a domain-joined bastion host with the following configurations:
Antimalware extension.
Azure Diagnostics extension.
Azure Disk Encryption using Key Vault.
An auto-shutdown policy to reduce consumption of VM resources when not in use.
Windows Defender Credential Guard is enabled so that credentials and other secrets run in a protected
environment that's isolated from the running operating system.
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: This solution deploys resources in an architecture with separate subnets for web,
database, Active Directory, and management inside a virtual network. Subnets are logically separated by NSG
rules applied to the individual subnets. The rules restrict traffic between subnets to only that necessary for system
and management functionality.
See the configuration for NSGs deployed with this solution. Organizations can configure NSGs by editing the
previous file by using this documentation as a guide.
Each of the subnets has a dedicated NSG:
One NSG for Application Gateway (LBNSG )
One NSG for bastion host (MGTNSG )
One NSG for primary and backup domain controllers (ADNSG )
One NSG for SQL Servers and Cloud Witness (SQLNSG )
One NSG for web tier (WEBNSG )
Data in transit
Azure encrypts all communications to and from Azure data centers by default. Additionally, all transactions to
Storage through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through multiple measures. These measures include encryption and database
auditing.
Azure Storage: To meet requirements for encrypted data at rest, all Storage uses Storage Service Encryption. This
feature helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by the NIST SP 800-171.
Azure Disk Encryption: Disk Encryption is used to encrypted Windows IaaS VM disks. Disk Encryption uses the
BitLocker feature of Windows to provide volume encryption for operating system and data disks. The solution is
integrated with Key Vault to help control and manage the disk-encryption keys.
SQL Server: The SQL Server instance uses the following database security measures:
SQL Server auditing tracks database events and writes them to audit logs.
Transparent data encryption performs real-time encryption and decryption of the database, associated backups,
and transaction log files to protect information at rest. Transparent data encryption provides assurance that
stored data hasn't been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
Encrypted columns ensure that sensitive data never appears as plain text inside the database system. After data
encryption is enabled, only client applications or application servers with access to the keys can access plain-text
data.
Dynamic data masking limits sensitive data exposure by masking the data to nonprivileged users or
applications. It can automatically discover potentially sensitive data and suggest the appropriate masks to be
applied. Dynamic data masking helps to reduce access so that sensitive data doesn't exit the database via
unauthorized access. Customers are responsible for adjusting settings to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure AD is Microsoft's multitenant cloud-based directory and identity management service. All users for this
solution are created in Azure AD and include the users who access the SQL Server instance.
Authentication to the application is performed by using Azure AD. For more information, see how to integrate
applications with Azure AD.
Azure RBAC can be used by administrators to define fine-grained access permissions to grant only the amount
of access that users need to perform their jobs. Instead of giving every user unrestricted permissions for Azure
resources, administrators can allow only certain actions for accessing data. Subscription access is limited to the
subscription administrator.
Azure Active Directory Privileged Identity Management can be used by customers to minimize the number of
users who have access to certain resources. Administrators can use Azure AD Privileged Identity Management
to discover, restrict, and monitor privileged identities and their access to resources. This functionality also can be
used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities that affect an organization’s identities.
It configures automated responses to detected suspicious actions related to an organization’s identities. It also
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Key Vault for the management of keys and secrets. Key Vault helps
safeguard cryptographic keys and secrets used by cloud applications and services. The following Key Vault
capabilities help customers protect data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security-module-protected 2048-bit RSA key.
All users and identities are granted minimum required permissions by using RBAC.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
The solution is integrated with Key Vault to manage IaaS VM disk-encryption keys and secrets.
Patch management: Windows VMs deployed as part of this reference architecture are configured by default to
receive automatic updates from Windows Update Service. This solution also includes the Azure Automation
service through which updated deployments can be created to patch VMs when needed.
Malware protection: Microsoft Antimalware for VMs provides real-time protection capability that helps identify
and remove viruses, spyware, and other malicious software. Customers can configure alerts that generate when
known malicious or unwanted software attempts to install or run on protected VMs.
Azure Security Center: With Security Center, customers can centrally apply and manage security policies across
workloads, limit exposure to threats, and detect and respond to attacks. Security Center also accesses existing
configurations of Azure services to provide configuration and service recommendations to help improve security
posture and protect data.
Security Center uses a variety of detection capabilities to alert customers of potential attacks that target their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Security Center has a set of predefined security alerts that are triggered when a threat, or
suspicious activity takes place. Customers can use custom alert rules to define new security alerts based on data
that's already collected from their environment.
Security Center provides prioritized security alerts and incidents. Security Center makes it simpler for customers to
discover and address potential security issues. A threat intelligence report is generated for each detected threat.
Incident response teams can use the reports when they investigate and remediate threats.
This reference architecture uses the vulnerability assessment capability in Security Center. After it's configured, a
partner agent (for example, Qualys) reports vulnerability data to the partner’s management platform. In turn, the
partner's management platform provides vulnerability and health monitoring data back to Security Center.
Customers can use this information to quickly identify vulnerable VMs.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities by using an application
gateway with a web application firewall configured and the OWASP rule set enabled. Additional capabilities
include:
End-to-end-SSL.
Enable SSL offload.
Disable TLS v1.0 and v1.1.
Web application firewall (prevention mode).
Prevention mode with OWASP 3.0 rule set.
Enable diagnostics logging.
Custom health probes.
Security Center and Azure Advisor provide additional protection and notifications. Security Center also
provides a reputation system.
Business continuity
High availability: The solution deploys all VMs in an availability set. Availability sets ensure that the VMs are
distributed across multiple isolated hardware clusters to improve availability. At least one VM is available during a
planned or unplanned maintenance event, which meets the 99.95% Azure SLA.
Recovery Services vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure Virtual Machines in this architecture. With a Recovery Services vault, customers can restore files and folders
from an IaaS VM without restoring the entire VM. This process speeds up restore times.
Cloud Witness: Cloud Witness is a type of failover cluster quorum witness in Windows Server 2016 that uses
Azure as the arbitration point. Cloud Witness, like any other quorum witness, gets a vote and can participate in the
quorum calculations. It uses the standard publicly available Azure Blob storage. This arrangement eliminates the
extra maintenance overhead of VMs hosted in a public cloud.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All diagnostic
logs write to a centralized and encrypted Azure storage account for archival. Users can configure the retention
period, up to 730 days, to meet their specific requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
After data is collected, it's organized into separate tables for each data type within Log Analytics workspaces. In this
way, all data can be analyzed together, regardless of its original source. Security Center integrates with Log
Analytics. Customers can use Log Analytics queries to access their security event data and combine it with data
from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval. It provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval. It provides customers with a prioritized list of recommendations specific to the deployed server
infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution. It also reports how many agents are unresponsive and the number of agents that submit
operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Automation stores, runs, and manages runbooks. In this solution, runbooks help collect logs
from SQL Server. Customers can use the Automation Change Tracking solution to easily identify changes in the
environment.
Azure Monitor: Monitor helps users track performance, maintain security, and identify trends. Organizations can
use it to audit, create alerts, and archive data. They also can track API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found here. This model
can help customers understand the points of potential risk in the system infrastructure when they make
modifications.
Compliance documentation
The Azure Security and Compliance Blueprint - NIST SP 800-171 Customer Responsibility Matrix lists all security
controls required by NIST SP 800-171. This matrix details whether the implementation of each control is the
responsibility of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint - NIST SP 800-171 IaaS Web Application Control Implementation
Matrix provides information on which NIST SP 800-171 controls are addressed by the IaaS web application
architecture. It includes detailed descriptions of how the implementation meets the requirements of each covered
control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint - PaaS Web
Application for NIST Special Publication 800-171
10/18/2018 • 16 minutes to read • Edit Online
Overview
NIST Special Publication 800-171 provides guidelines for protecting the controlled unclassified information (CUI)
that resides in nonfederal information systems and organizations. NIST SP 800-171 establishes 14 families of
security requirements for protecting the confidentiality of CUI.
This Azure Security and Compliance Blueprint provides guidance to help customers deploy a platform as a service
(PaaS ) web application in Azure that implements a subset of NIST SP 800-171 controls. This solution
demonstrates ways in which customers can meet specific security and compliance requirements. It also serves as a
foundation for customers to build and configure their own web application in Azure.
This reference architecture, associated implementation guide, and threat model are intended to serve as a
foundation for customers to adapt to their specific requirements. They shouldn't be used as-is in a production
environment. Deploying this architecture without modification is insufficient to completely meet the requirements
of NIST SP 800-171. Customers are responsible for conducting appropriate security and compliance assessments
of any solution built using this architecture. Requirements might vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. For more information, see the deployment architecture section.
Azure Virtual Machines
(1) Management/bastion (Windows Server 2016 Datacenter)
Azure Virtual Network
(1) /16 network
(4) /24 networks
(4) Network security groups
Azure Application Gateway
Web application firewall
Firewall mode: prevention
Rule set: OWASP
Listener port: 443
Application Insights
Azure Active Directory
App Service Environment v2
Azure Automation
Azure DNS
Azure Key Vault
Azure Load Balancer
Azure Monitor
Azure Resource Manager
Azure Security Center
Azure SQL Database
Azure Storage
Azure Log Analytics
Azure Automation
Azure Web Apps
Deployment architecture
The following section details the deployment and implementation elements.
Azure Resource Manager: Resource Manager can be used by customers to work with the resources in the
solution as a group. Customers can deploy, update, or delete all the resources for the solution in a single,
coordinated operation. Customers use a template for deployment. The template can work for different
environments, such as testing, staging, and production. Resource Manager provides security, auditing, and tagging
features to help customers manage their resources after deployment.
Bastion host: The bastion host is the single point of entry that users can use to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by allowing only remote
traffic from public IP addresses on a safe list. To permit remote desktop traffic, the source of the traffic must be
defined in the NSG.
This solution creates a VM as a domain-joined bastion host with the following configurations:
Antimalware extension.
Azure Diagnostics extension.
Azure Disk Encryption using Key Vault.
An auto-shutdown policy to reduce consumption of VM resources when not in use.
Windows Defender Credential Guard is enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system.
Web Apps: Web Apps is an Azure App Service feature. Customers can use it to build and host web applications in
the programming language of their choice without managing infrastructure. It offers auto-scaling and high
availability. It supports Windows and Linux and enables automated deployments from GitHub, Azure DevOps, or
any Git repo.
App Service Environment: App Service Environment is an App Service feature. It provides a fully isolated and
dedicated environment for securely running App Service applications at a high scale.
The App Service environment is isolated to run only a single application. It's always deployed into a virtual
network. Because of the isolation feature, the reference architecture has complete tenant isolation, and it's removed
from Azure’s multitenant environment. Customers have fine-grained control over both inbound and outbound
application network traffic. Applications can establish high-speed secure connections over virtual networks to on-
premises corporate resources. Customers can “auto-scale” with App Service Environment based on load metrics,
available budget, or a defined schedule.
Use of App Service Environment for this architecture provides the following controls and configurations:
Host inside a secured Azure virtual network and network security rules.
Self-signed internal load balancer certificate for HTTPS communication. As a best practice, Microsoft
recommends the use of a trusted certificate authority for enhanced security.
Internal load balancing mode (mode 3).
Disable TLS 1.0.
Change TLS cipher.
Control inbound traffic N/W ports.
Web application firewall – restrict data.
Allow Azure SQL Database traffic.
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: NSGs contain access control lists that allow or deny traffic within a virtual network.
NSGs can be used to secure traffic at a subnet or individual VM level. The following NSGs exist:
One NSG for Application Gateway
One NSG for App Service Environment
One NSG for SQL Database
One NSG for bastion host
Each of the NSGs has specific ports and protocols open so that the solution can work securely and correctly. In
addition, the following configurations are enabled for each NSG:
Diagnostic logs and events are enabled and stored in a storage account.
Log Analytics is connected to the NSG's diagnostics.
Subnets: Each subnet is associated with its corresponding NSG.
Azure DNS: The Domain Name System (DNS ) is responsible for translating (or resolving) a website or service
name to its IP address. Azure DNS is a hosting service for DNS domains that provides name resolution by using
Azure infrastructure. By hosting domains in Azure, users can manage DNS records by using the same credentials,
APIs, tools, and billing as other Azure services. Azure DNS also supports private DNS domains.
Azure Load Balancer: Load Balancer can be used by customers to scale their applications and create high
availability for services. Load Balancer supports inbound and outbound scenarios. It provides low latency and high
throughput and scales up to millions of flows for all TCP and UDP applications.
Data in transit
Azure encrypts all communications to and from Azure data centers by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet requirements for encrypted data at rest, all Storage uses Storage Service Encryption. This
feature helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by NIST SP 800-171.
Azure Disk Encryption: Disk Encryption uses the BitLocker feature of Windows to provide volume encryption for
data disks. The solution integrates with Key Vault to help control and manage the disk-encryption keys.
Azure SQL Database: The SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
SQL Database is configured to use transparent data encryption. It performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data hasn't been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur. It provides security
alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous database
access patterns.
Encrypted columns ensure that sensitive data never appears as plain text inside the database system. After data
encryption is enabled, only client applications or application servers with access to the keys can access plain-text
data.
Dynamic data masking limits sensitive data exposure by masking the data to nonprivileged users or
applications. It can automatically discover potentially sensitive data and suggest the appropriate masks to be
applied. Dynamic data masking helps to reduce access so that sensitive data doesn't exit the database via
unauthorized access. Customers are responsible for adjusting settings to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure AD is Microsoft's multitenant cloud-based directory and identity management service. All users for this
solution are created in Azure AD and include users who access the SQL database.
Authentication to the application is performed by using Azure AD. For more information, see how to integrate
applications with Azure AD. The database column encryption also uses Azure AD to authenticate the application
to SQL Database. For more information, see how to protect sensitive data in SQL Database.
Azure RBAC can be used by administrators to define fine-grained access permissions. With it, they can grant
only the amount of access that users need to perform their jobs. Instead of giving every user unrestricted access
for Azure resources, administrators can allow only certain actions for accessing resources and data.
Subscription access is limited to the subscription administrator.
Azure Active Directory Privileged Identity Management can be used by customers to minimize the number of
users who have access to certain information. Administrators can use Azure AD Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality also can be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities that affect an organization’s identities.
It configures automated responses to detected suspicious actions related to an organization’s identities. It also
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Key Vault for the management of keys and secrets. Key Vault helps
safeguard cryptographic keys and secrets used by cloud applications and services. The following Key Vault
capabilities help customers protect data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security-module-protected 2048-bit RSA key.
All users and identities are granted minimum required permissions by using RBAC.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Security Center, customers can centrally apply and manage security policies across
workloads, limit exposure to threats, and detect and respond to attacks. Security Center also accesses existing
configurations of Azure services to provide configuration and service recommendations to help improve security
posture and protect data.
Security Center uses a variety of detection capabilities to alert customers of potential attacks that target their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Security Center has a set of predefined security alerts that are triggered when a threat or
suspicious activity takes place. Customers can use custom alert rules to define new security alerts based on data
that's already collected from their environment.
Security Center provides prioritized security alerts and incidents. Security Center makes it simpler for customers to
discover and address potential security issues. A threat intelligence report is generated for each detected threat.
Incident response teams can use the reports when they investigate and remediate threats.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities by using an application
gateway with a web application firewall configured and the OWASP rule set enabled. Additional capabilities
include:
End-to-end-SSL.
Enable SSL offload.
Disable TLS v1.0 and v1.1.
Web application firewall (prevention mode).
Prevention mode with OWASP 3.0 rule set.
Enable diagnostics logging.
Custom health probes.
Security Center and Azure Advisor provide additional protection and notifications. Security Center also
provides a reputation system.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All diagnostic
logs write to a centralized and encrypted Azure storage account for archival. Users can configure the retention
period, up to 730 days, to meet their specific requirements.
Azure Log Analytics: Logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
After the data is collected, it's organized into separate tables for each data type within Log Analytics workspaces. In
this way, all data can be analyzed together, regardless of its original source. Security Center integrates with Log
Analytics. Customers can use Log Analytics queries to access their security event data and combine it with data
from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval. It provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval. It provides customers with a prioritized list of recommendations specific to the deployed server
infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution. It also reports how many agents are unresponsive and the number of agents that submit
operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Automation stores, runs, and manages runbooks. In this solution, runbooks help collect logs
from SQL Database. Customers can use the Automation Change Tracking solution to easily identify changes in the
environment.
Azure Monitor: Monitor helps users track performance, maintain security, and identify trends. Organizations can
use it to audit, create alerts, and archive data. They also can track API calls in their Azure resources.
Application Insights: Application Insights is an extensible application performance management service for web
developers on multiple platforms. Application Insights detects performance anomalies. Customers can use it to
monitor the live web application. Application Insights includes powerful analytics tools to help customers diagnose
issues and understand what users do with their app. It's designed to help customers continuously improve
performance and usability.
Threat model
The data flow diagram for this reference architecture is available for download or can be found here. This model
can help customers understand the points of potential risk in the system infrastructure when they make
modifications.
Compliance documentation
The Azure Security and Compliance Blueprint - NIST SP 800-171 Customer Responsibility Matrix lists all security
controls required by NIST SP 800-171. This matrix details whether the implementation of each control is the
responsibility of Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint - NIST SP 800-171 PaaS Web Application Control Implementation
Matrix provides information on which NIST SP 800-171 controls are addressed by the PaaS web application
architecture. It includes detailed descriptions of how the implementation meets the requirements of each covered
control.
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of a data analytics
architecture in Azure that assists with the requirements of Payment Card Industry Data Security Standards (PCI
DSS 3.2). It showcases a common reference architecture and demonstrates the proper handling of credit card data
(including card number, expiration, and verification data) in a secure, compliant, multi-tier environment. This
blueprint demonstrates ways in which customers can meet specific security and compliance requirements and
serves as a foundation for customers to build and configure their own data analytics solutions in Azure.
This reference architecture, implementation guide, and threat model provide a foundation for customers to comply
with PCI DSS 3.2 requirements. This solution provides a baseline to help customers deploy workloads to Azure in
a PCI DSS 3.2 compliant manner; however, this solution should not be used as-is in a production environment
because additional configuration is required.
Achieving PCI DSS -compliance requires that an accredited Qualified Security Assessor (QSA) certify a production
customer solution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
Architecture section.
Application Insights
Azure Active Directory
Azure Data Catalog
Azure Disk Encryption
Azure Event Grid
Azure Functions
Azure Key Vault
Azure Machine Learning
Azure Monitor
Azure Security Center
Azure SQL Database
Azure Storage
Azure Virtual Network
(1) /16 Network
(2) /24 Networks
(2) Network Security Groups
Power BI Dashboard
Deployment architecture
The following section details the deployment and implementation elements.
Azure Event Grid: Azure Event Grid allows customers to easily build applications with event-based architectures.
Users select the Azure resource they would like to subscribe to and give the event handler or webhook an endpoint
to send the event to. Customers can secure webhook endpoints by adding query parameters to the webhook URL
when creating an Event Subscription. Azure Event Grid only supports HTTPS webhook endpoints. Azure Event
Grid allows customers to control the level of access given to different users to do various management operations
such as list event subscriptions, create new ones, and generate keys. Event Grid utilizes Azure role-based access
control.
Azure Functions: Azure Functions is a server-less compute service that enables users to run code on-demand
without having to explicitly provision or manage infrastructure. Use Azure Functions to run a script or piece of code
in response to a variety of events.
Azure Machine Learning service: Azure Machine Learning is a data science technique that allows computers to
use existing data to forecast future behaviors, outcomes, and trends.
Azure Data Catalog: Data Catalog makes data sources easily discoverable and understandable by the users who
manage the data. Common data sources can be registered, tagged, and searched for financial data. The data
remains in its existing location, but a copy of its metadata is added to Data Catalog, along with a reference to the
data source location. The metadata is also indexed to make each data source easily discoverable via search and
understandable to the users who discover it.
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual VM level. The
following network security groups exist:
A network security group for Active Directory
A network security group for the workload
Each of the network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostic logs
Subnets: Each subnet is associated with its corresponding network security group.
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard cardholder data in support of organizational security commitments and
compliance requirements defined by PCI DSS 3.2.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
Extended Properties can be used to discontinue the processing of data subjects, as it allows users to add custom
properties to database objects and tag data as "Discontinued" to support application logic to prevent the
processing of associated financial data.
Row -Level Security enables users to define policies to restrict access to data to discontinue processing.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Application Insights: Application Insights is an extensible Application Performance Management (APM ) service
for web developers on multiple platforms. It detects performance anomalies and includes powerful analytics tools
to help diagnose issues and to understand what users actually do with the app. It's designed to help users
continuously improve performance and usability.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint - PCI DSS Customer Responsibility Matrix lists responsibilities for
all PCI DSS 3.2 requirements.
The Azure Security and Compliance Blueprint - PCI DSS Data Analytics Implementation Matrix provides
information on which PCI DSS 3.2 requirements are addressed by the data analytics architecture, including
detailed descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: Data
Warehouse for PCI DSS
10/18/2018 • 18 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of a data warehouse
architecture in Azure that assists with the requirements of Payment Card Industry Data Security Standards (PCI
DSS 3.2). It showcases a common reference architecture and demonstrates the proper handling of credit card data
(including card number, expiration, and verification data) in a secure, compliant, multi-tier environment. This
blueprint demonstrates ways in which customers can meet specific security and compliance requirements and
serves as a foundation for customers to build and configure their own data warehouse solutions in Azure.
This reference architecture, implementation guide, and threat model provide a foundation for customers to comply
with PCI DSS 3.2 requirements. This solution provides a baseline to help customers deploy workloads to Azure in
a PCI DSS 3.2 compliant manner; however, this solution should not be used as-is in a production environment
because additional configuration is required.
Achieving PCI DSS -compliance requires that an accredited Qualified Security Assessor (QSA) certify a production
customer solution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
Architecture section.
Availability Sets
Active Directory Domain Controllers
SQL Cluster Nodes and Witness
Azure Active Directory
Azure Data Catalog
Azure Key Vault
Azure Monitor
Azure Security Center
Azure Load Balancer
Azure Storage
Azure Virtual Machines
(1) Bastion Host
(2) Active Directory domain controller
(2) SQL Server Cluster Node
(1) SQL Server Witness
Azure Virtual Network
(1) /16 Network
(4) /24 Networks
(4) Network Security Groups
Recovery Services Vault
SQL Data Warehouse
SQL Server Reporting Services
Deployment architecture
The following section details the deployment and implementation elements.
SQL Data Warehouse: SQL Data Warehouse is an Enterprise Data Warehouse (EDW ) that leverages Massively
Parallel Processing (MPP ) to quickly run complex queries across petabytes of data, allowing users to efficiently
identify financial data. Users can use simple PolyBase T-SQL queries to import big data into the SQL Data
Warehouse and utilize the power of MPP to run high-performance analytics.
SQL Server Reporting Services (SSRS ): SQL Server Reporting Services provides quick creation of reports with
tables, charts, maps, gauges, matrixes, and more for Azure SQL Data Warehouse.
Data Catalog: Data Catalog makes data sources easily discoverable and understandable by the users who manage
the data. Common data sources can be registered, tagged, and searched for financial data. The data remains in its
existing location, but a copy of its metadata is added to Data Catalog, along with a reference to the data source
location. The metadata is also indexed to make each data source easily discoverable via search and understandable
to the users who discover it.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system.
Virtual network
This reference architecture defines a private virtual network with an address space of 10.0.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual virtual machine
level. The following network security groups exist:
A network security group for the Data Tier (SQL Server Clusters, SQL Server Witness, and SQL Load Balancer)
A network security group for the management bastion host
A network security group for Active Directory
A network security group for SQL Server Reporting Services
Each of the network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostic logs
Subnets: Each subnet is associated with its corresponding network security group.
Data at rest
The architecture protects data at rest through multiple measures, including encryption and database auditing.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard cardholder data in support of organizational security commitments and
compliance requirements defined by PCI DSS 3.2.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for OS and data disks. The solution integrates with Azure Key Vault to help control and manage the
disk-encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
Extended Properties can be used to discontinue the processing of data subjects, as it allows users to add custom
properties to database objects and tag data as "Discontinued" to support application logic to prevent the
processing of associated financial data.
Row -Level Security enables users to define policies to restrict access to data to discontinue processing.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Malware protection: Microsoft Antimalware for virtual machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Business continuity
High availability: Server workloads are grouped in an Availability Set to help ensure high availability of virtual
machines in Azure. At least one virtual machine is available during a planned or unplanned maintenance event,
meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure virtual machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS virtual machine without restoring the entire virtual machine, enabling faster restore times.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – PCI DSS Customer Responsibility Matrix lists responsibilities for
all PCI DSS 3.2 requirements.
The Azure Security and Compliance Blueprint - PCI DSS Data Warehouse Implementation Matrix provides
information on which PCI DSS 3.2 requirements are addressed by the data warehouse architecture, including
detailed descriptions of how the implementation meets the requirements of each covered control.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: IaaS Web
Application for PCI DSS
10/18/2018 • 14 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance for the deployment of a Payment Card Industry
Data Security Standards (PCI DSS 3.2) compliant infrastructure as a service (IaaS ) environment suitable for the
collection, storage, and retrieval of cardholder data. It showcases a common reference architecture and
demonstrates the proper handling of credit card data (including card number, expiration, and verification data) in a
secure, compliant, multi-tier environment. This blueprint illustrates an end-to-end solution to meet the needs of
organizations seeking a cloud-based approach to reducing the burden and cost of deployment.
This reference architecture, implementation guide, and threat model provide a foundation for customers to comply
with PCI DSS 3.2 requirements. This solution provides a baseline to help customers deploy workloads to Azure in
a PCI DSS 3.2 compliant manner; however, this solution should not be used as-is in a production environment
because additional configuration is required.
Achieving PCI DSS -compliance requires that an accredited Qualified Security Assessor (QSA) certify a production
customer solution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
Deployment architecture
The following section details the deployment and implementation elements.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the Network Security Group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: This solution deploys resources in an architecture with a separate web subnet,
database subnet, Active Directory subnet, and management subnet inside of a virtual network. Subnets are
logically separated by network security group rules applied to the individual subnets to restrict traffic between
subnets to only that necessary for system and management functionality.
See the configuration for Network Security Groups deployed with this solution. Organizations can configure
Network Security Groups by editing the file above using this documentation as a guide.
Each of the subnets has a dedicated Network Security Group:
1 Network Security Group for Application Gateway (LBNSG )
1 Network Security Group for bastion host (MGTNSG )
1 Network Security Group for primary and backup domain controllers (ADNSG )
1 Network Security Group for SQL Servers and Cloud Witness (SQLNSG )
1 Network Security Group for web tier (WEBNSG )
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. Additionally, all transactions to Azure
Storage through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through multiple measures, including encryption and database auditing.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard cardholder data in support of organizational security commitments and
compliance requirements defined by PCI DSS 3.2.
Azure Disk Encryption: Azure Disk Encryption is used to encrypted Windows IaaS virtual machine disks. Azure
Disk Encryption leverages the BitLocker feature of Windows to provide volume encryption for OS and data disks.
The solution is integrated with Azure Key Vault to help control and manage the disk-encryption keys.
SQL Server: The SQL Server instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
SQL Database is configured to use Transparent Data Encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent Data Encryption provides assurance that stored cardholder data has not been subject to
unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Always Encrypted Columns ensure that sensitive cardholder data never appears as plaintext inside the database
system. After enabling data encryption, only client applications or application servers with access to the keys
can access plaintext data.
The Extended Properties feature can be used to discontinue the processing of data subjects, as it allows users to
add custom properties to database objects and tag data as "Discontinued" to support application logic to
prevent the processing of associated cardholder data.
Row -Level Security enables users to define policies to restrict access to data to discontinue processing.
SQL Database dynamic data masking limits sensitive cardholder data exposure by masking the data to non-
privileged users or applications. Dynamic data masking can automatically discover potentially sensitive data and
suggest the appropriate masks to be applied. This helps to identify and reduce access to cardholder data such
that it does not exit the database via unauthorized access. Customers are responsible for adjusting dynamic data
masking settings to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
The solution is integrated with Azure Key Vault to manage IaaS virtual machine disk-encryption keys and
secrets.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Malware protection: Microsoft Antimalware for Virtual Machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities using an Azure
Application Gateway with a web application firewall configured, and the OWASP ruleset enabled. Additional
capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Business continuity
High availability: The solution deploys all virtual machines in an Availability Set. Availability sets ensure that the
virtual machines are distributed across multiple isolated hardware clusters to improve availability. At least one
virtual machine is available during a planned or unplanned maintenance event, meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure Virtual Machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS virtual machine without restoring the entire virtual machine, enabling faster restore times.
Cloud Witness: Cloud Witness is a type of Failover Cluster quorum witness in Windows Server 2016 that
leverages Azure as the arbitration point. The Cloud Witness, like any other quorum witness, gets a vote and can
participate in the quorum calculations, but it uses the standard publicly available Azure Blob Storage. This
eliminates the extra maintenance overhead of virtual machines hosted in a public cloud.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram (DFD ) for this reference architecture is available for download or can be found below. This
model can help customers understand the points of potential risk in the system infrastructure when making
modifications.
Compliance documentation
The Azure Security and Compliance Blueprint - PCI DSS Customer Responsibility Matrix lists responsibilities for
all PCI DSS 3.2 requirements.
The Azure Security and Compliance Blueprint - PCI DSS IaaS Web Application Implementation Matrix provides
information on which PCI DSS 3.2 requirements are addressed by the IaaS Web Application architecture, including
detailed descriptions of how the implementation meets the requirements of each covered article.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: PaaS Web
Application for PCI DSS
12/18/2018 • 17 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint Automation provides guidance for the deployment of a Payment
Card Industry Data Security Standards (PCI DSS 3.2) compliant platform as a service (PaaS ) environment suitable
for the collection, storage, and retrieval of cardholder data. This solution automates deployment and configuration
of Azure resources for a common reference architecture, demonstrating ways in which customers can meet specific
security and compliance requirements and serves as a foundation for customers to build and configure their own
solutions on Azure. The solution implements a subset of requirements from PCI DSS 3.2. For more information
about PCI DSS 3.2 requirements and this solution, see the compliance documentation section.
This Azure Security and Compliance Blueprint Automation automatically deploys a PaaS web application reference
architecture with pre-configured security controls to help customers achieve compliance with PCI DSS 3.2
requirements. The solution consists of Azure Resource Manager templates and PowerShell scripts that guide
resource deployment and configuration.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment. Deploying an application into this environment without
modification is not sufficient to completely meet the requirements of PCI DSS 3.2. Please note the following:
This architecture provides a baseline to help customers use Azure in a PCI DSS 3.2 compliant manner.
Customers are responsible for conducting appropriate security and compliance assessment of any solution built
using this architecture, as requirements may vary based on the specifics of each customer's implementation.
Achieving PCI DSS -compliance requires that an accredited Qualified Security Assessor (QSA) certify a production
customer solution. Customers are responsible for conducting appropriate security and compliance assessments of
any solution built using this architecture, as requirements may vary based on the specifics of each customer's
implementation.
Click here for deployment instructions.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
Architecture section.
App Service Environment v2
Application Gateway
(1) web application firewall
Firewall mode: prevention
Rule set: OWASP 3.0
Listener port: 443
Application Insights
Azure Active Directory
Azure Automation
Azure DNS
Azure Key Vault
Azure Load Balancer
Azure Monitor
Azure Resource Manager
Azure Security Center
Azure SQL Database
Azure Storage
Azure Virtual Network
(1) /16 Network
(4) /24 Networks
(4) Network Security Groups
Azure Web App
Deployment architecture
The following section details the deployment and implementation elements.
Azure Resource Manager: Azure Resource Manager enables customers to work with the resources in the
solution as a group. Customers can deploy, update, or delete all the resources for the solution in a single,
coordinated operation. Customers use a template for deployment and that template can work for different
environments such as testing, staging, and production. Resource Manager provides security, auditing, and tagging
features to help customers manage their resources after deployment.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system
App Service Environment v2: The Azure App Service Environment is an App Service feature that provides a fully
isolated and dedicated environment for securely running App Service applications at a high scale. This isolation
feature is required to meet PCI compliance requirements.
App Service Environments are isolated to only run a single customer's applications and are always deployed into a
virtual network. This isolation feature enables the reference architecture to have complete tenant isolation,
removing it from Azure’s multi-tenant environment prohibiting those multi-tenants from enumerating the
deployed App Service Environment resources. Customers have fine-grained control over both inbound and
outbound application network traffic, and applications can establish high-speed secure connections over virtual
networks to on-premises corporate resources. Customers can “auto-scale” with App Service Environment based on
load metrics, available budget, or a defined schedule.
Utilize App Service Environments for the following controls/configurations:
Host inside a secured Azure Virtual Network and network security rules
Self-signed ILB certificate for HTTPS communication
Internal Load Balancing mode
Disable TLS 1.0
Change TLS Cipher
Control inbound traffic N/W ports
Web application firewall – restrict data
Allow Azure SQL Database traffic
Azure Web App: Azure App Service enables customers to build and host web applications in the programming
language of their choice without managing infrastructure. It offers auto-scaling and high availability, supports both
Windows and Linux, and enables automated deployments from GitHub, Azure DevOps, or any Git repo.
Virtual Network
The architecture defines a private Virtual Network with an address space of 10.200.0.0/16.
Network security groups: Network security groups contain Access Control Lists (ACLs) that allow or deny traffic
within a Virtual Network. Network security groups can be used to secure traffic at a subnet or individual VM level.
The following Network security groups exist:
1 Network security group for Application Gateway
1 Network security group for App Service Environment
1 Network security group for Azure SQL Database
1 network Security Group for bastion host
Each of the Network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each Network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the Network security group's diagnostics
Subnets: Each subnet is associated with its corresponding Network security group.
Azure DNS: The Domain Name System, or DNS, is responsible for translating (or resolving) a website or service
name to its IP address. Azure DNS is a hosting service for DNS domains that provides name resolution using
Azure infrastructure. By hosting domains in Azure, users can manage DNS records using the same credentials,
APIs, tools, and billing as other Azure services. Azure DNS also supports private DNS domains.
Azure Load Balancer: Azure Load Balancer allows customers to scale their applications and create high
availability for services. Load Balancer supports inbound as well as outbound scenarios, and provides low latency,
high throughput, and scales up to millions of flows for all TCP and UDP applications.
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard cardholder data in support of organizational security commitments and
compliance requirements defined by PCI DSS 3.2.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to cardholder data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
Integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing cardholder data. Subscription
access is limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information such as cardholder data. Administrators can use Azure Active Directory
Privileged Identity Management to discover, restrict, and monitor privileged identities and their access to
resources. This functionality can also be used to enforce on-demand, just-in-time administrative access when
needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is an HSM Protected
2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities using an Azure
Application Gateway with a web application firewall configured, and the OWASP ruleset enabled. Additional
capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type within Log Analytics workspaces,
which allows all data to be analyzed together regardless of its original source. Furthermore, Azure Security Center
integrates with Log Analytics allowing customers to use Log Analytics queries to access their security event data
and combine it with data from other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Application Insights: Application Insights is an extensible Application Performance Management service for web
developers on multiple platforms. Application Insights detects performance anomalies and customers can use it to
monitor the live web application. It includes powerful analytics tools to help customers diagnose issues and to
understand what users actually do with their app. It's designed to help customers continuously improve
performance and usability.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – PCI DSS Customer Responsibility Matrix lists controller and
processor responsibilities for all PCI DSS 3.2 requirements.
The Azure Security and Compliance Blueprint – PCI DSS PaaS Web Application Implementation Matrix provides
information on which PCI DSS 3.2 requirements are addressed by the PaaS web application architecture, including
detailed descriptions of how the implementation meets the requirements of each covered article.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Trusted Internet Connections guidance
2/5/2019 • 16 minutes to read • Edit Online
This article covers how government agencies can use Microsoft Azure Government to help achieve compliance
with the Trusted Internet Connections (TIC ) initiative. The article describes how to use Azure Government across
Azure infrastructure as a service (IaaS ) and Azure platform as a service (PaaS ) offerings.
All traffic that leaves the virtual network needs to route through the on-premises connection, to ensure that all
traffic traverses the D/A TIC. You create custom routes by creating user-defined routes, or by exchanging Border
Gateway Protocol (BGP ) routes between your on-premises network gateway and an Azure VPN gateway. For
more information about user-defined routes, see Virtual network traffic routing: User-defined routes. For more
information about the BGP, see Virtual network traffic routing: Border Gateway Protocol.
Add user-defined routes
If you use a route-based virtual network gateway, you can force tunneling in Azure. Add a user-defined route
(UDR ) that sets 0.0.0.0/0 traffic to route to a next hop of your virtual network gateway. Azure prioritizes user-
defined routes over system-defined routes. All non-virtual network traffic is sent to your virtual network gateway,
which can then route the traffic to on-premises. After you define the UDR, associate the route with existing subnets
or new subnets within all virtual networks in your Azure environment.
Use the Border Gateway Protocol
If you use ExpressRoute or a BGP -enabled virtual network gateway, BGP is the preferred mechanism for
advertising routes. For a BGP advertised route of 0.0.0.0/0, ExpressRoute and BGP -aware virtual network
gateways ensure the default route applies to all subnets within your virtual networks.
Azure IaaS TIC compliance: Auditing
Azure offers several ways to audit TIC compliance.
View effective routes
Confirm that your default route is propagated by observing the effective routes for a particular virtual machine, a
specific NIC, or a user-defined route table in the Azure portal or in Azure PowerShell. The Effective Routes show
the relevant user-defined routes, BGP advertised routes, and system routes that apply to the relevant entity, as
shown in the following figure:
NOTE
You can't view the effective routes for a NIC, unless the NIC is associated with a running virtual machine.
Use Network Watcher to capture network flow logs that indicate the metadata that surrounds IP traffic. The
network flow logs contain the source and destination addresses of targets, and other data. You can use this data
with logs from the virtual network gateway, on-premises edge devices, or the TIC, to monitor that all traffic routes
on-premises.
NOTE
The availability status corresponds to the Azure services that are commercially available. The availability status for Azure
services in Azure Government is pending.
Azure Storage GA
Azure Batch GA
Azure HDInsight GA
Enforce user-defined route table. Ensure that the default route on all Get started with this template.
virtual networks points to an approved
virtual network gateway for routing to
on-premises.
Audit if Network Watcher isn't enabled Ensure that Network Watcher is enabled Get started with this template.
for a region. for all used regions.
NSG x on every subnet. Ensure that an NSG (or a set of Get started with this template.
approved NSGs) with internet traffic
blocked is applied to all subnets in
every virtual network.
NSG x on every NIC. Ensure that an NSG with internet traffic Get started with this template.
blocked is applied to all NICs on all
virtual machines.
Use an approved virtual network for Ensure that all NICs are on an approved Get started with this template.
virtual machine network interfaces. virtual network.
Allowed locations. Ensure that all resources are deployed Get started with this template.
to regions with compliant virtual
networks and Network Watcher
configuration.
Not allowed resource types, such as Prohibit the deployment of resource Get started with this template.
PublicIPs. types that don't have a compliance plan.
Use this policy to prohibit the
deployment of public IP address
resources. While NSG rules can be used
to effectively block inbound internet
traffic, preventing the use of public IPs
further reduces the attack surface.
Use the Virtual Networks Topology to rapidly survey existing virtual networks:
Network Watcher next hop tests
Networks in regions that are monitored by Network Watcher can conduct next hop tests. In the Azure portal, you
can enter a source and destination for a sample network flow for Network Watcher to resolve the next hop
destination. Run this test against virtual machines and sample internet addresses to ensure the next hop
destination is the expected network virtual gateway.
Conclusions
You can easily configure access for Microsoft Azure, Office 365, and Dynamics 365 to help comply with TIC 2.0
Appendix H guidance, as written and defined May 2018. Microsoft recognizes that the TIC guidance is subject to
change. Microsoft endeavors to help customers meet the guidance in a timely manner as new guidance is released.
Overview
This Azure Security and Compliance Blueprint provides a reference architecture and guidance for a data analytics
solution suitable for the collection, storage, analysis, and retrieval of healthcare data. This solution demonstrates
ways in which customers can comply with guidance provided in the Cloud Security Good Practice Guide published
by NHS Digital, a partner of the United Kingdom's (UK) Department of Health and Social Care (DHSC ). The Cloud
Security Good Practice Guide is based on the 14 Cloud Security Principles published by the UK National Cyber
Security Centre (NCSC ).
This reference architecture, implementation guide, and threat model are intended to serve as a foundation for
customers to adjust to their specific requirements and should not be used as-is in a production environment
without additional configuration. Customers are responsible for conducting appropriate security and compliance
assessments of any solution built using this architecture, as requirements may vary based on the specifics of each
customer's implementation.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
architecture section.
Azure Active Directory
Azure Analysis Service
Azure Automation
Azure Data Catalog
Azure Disk Encryption
Azure Event Grid
Azure Functions
Azure Key Vault
Azure Monitor
Azure Security Center
Azure SQL Database
Azure Storage
Azure Virtual Network
(1) /16 Network
(2) /24 Networks
(2) Network security groups
Power BI Dashboard
Deployment architecture
The following section details the deployment and implementation elements.
Azure Functions: Azure Functions is a server-less compute service that enables users to run code on-demand
without having to explicitly provision or manage infrastructure. Use Azure Functions to run a script or piece of code
in response to a variety of events.
Azure Analysis Service: Azure Analysis Service provides enterprise data modeling and integration with Azure
data platform services. Azure Analysis Service speeds up browsing through massive amounts of data by
combining data from multiple sources into a single data model.
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual virtual machine
level. The following network security groups exist:
1 network security group for Active Directory
1 network security group for the workload
Each of the network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostic logs
Subnets: Each subnet is associated with its corresponding network security group.
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by NHS Digital.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security module protected 2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type, which allows all data to be analyzed
together regardless of its original source. Furthermore, Azure Security Center integrates with Log Analytics
allowing customers to use Log Analytics queries to access their security event data and combine it with data from
other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – UK NHS Customer Responsibility Matrix lists all security principles
required by UK NHS. This matrix details whether the implementation of each principle is the responsibility of
Microsoft, the customer, or shared between the two.
The Azure Security and Compliance Blueprint – UK NHS Data Analytics Implementation Matrix provides
information on which UK NHS requirements are addressed by the data analytics architecture, including detailed
descriptions of how the implementation meets the requirements of each covered principle.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: Data
Warehouse for UK NHS
7/2/2018 • 17 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides a reference architecture and guidance for a data
warehouse solution suitable for securely ingesting, staging, storing, and interacting with sensitive healthcare data.
This solution demonstrates ways in which customers can comply with guidance provided in the Cloud Security
Good Practice Guide published by NHS Digital, a partner of the United Kingdom's (UK) Department of Health and
Social Care (DHSC ). The Cloud Security Good Practice Guide is based on the 14 Cloud Security Principles
published by the UK National Cyber Security Centre (NCSC ).
This reference architecture, implementation guide, and threat model are intended to serve as a foundation for
customers to adjust to their specific requirements and should not be used as-is in a production environment
without additional configuration. Customers are responsible for conducting appropriate security and compliance
assessments of any solution built using this architecture, as requirements may vary based on the specifics of each
customer's implementation.
This solution uses the following Azure services. Details of the deployment architecture are in the Deployment
architecture section.
Availability Sets
Active Directory domain controllers
SQL Cluster Nodes and Witness
Azure Active Directory
Azure Data Catalog
Azure Key Vault
Azure Monitor
Azure Security Center
Azure Load Balancer
Azure Storage
Azure Automation
Azure Virtual Machines
(1) Bastion host
(2) Active Directory domain controller
(2) SQL Server Cluster Node
(1) SQL Server Witness
Azure Virtual Network
(1) /16 Network
(4) /24 Networks
(4) Network security groups
Recovery Services Vault
SQL Data Warehouse
SQL Server Reporting Services
Deployment architecture
The following section details the deployment and implementation elements.
SQL Data Warehouse: SQL Data Warehouse is an Enterprise Data Warehouse that leverages massively parallel
processing to quickly run complex queries across petabytes of data, allowing users to efficiently identify healthcare
data. Users can use simple PolyBase T-SQL queries to import big data into the SQL Data Warehouse and utilize
the power of massively parallel processing to run high-performance analytics.
SQL Server Reporting Services: SQL Server Reporting Services provides quick creation of reports with tables,
charts, maps, gauges, matrixes, and more for Azure SQL Data Warehouse.
Data Catalog: Data Catalog makes data sources easily discoverable and understandable by the users who manage
the data. Common data sources can be registered, tagged, and searched for health-related data. The data remains
in its existing location, but a copy of its metadata is added to Data Catalog, along with a reference to the data
source location. The metadata is also indexed to make each data source easily discoverable via search and
understandable to the users who discover it.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system
Virtual network
This reference architecture defines a private virtual network with an address space of 10.0.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual virtual machine
level. The following Network security groups exist:
A network security group for the Data Tier (SQL Server Clusters, SQL Server Witness, and SQL load balancer)
A network security group for the management bastion host
A network security group for Active Directory
A network security group for SQL Server Reporting Services
Each of the Network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostic logs
Subnets: Each subnet is associated with its corresponding network security group.
Data at rest
The architecture protects data at rest through multiple measures, including encryption and database auditing.
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by NHS Digital.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security module protected 2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Malware protection: Microsoft Antimalware for virtual machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Furthermore, this reference architecture utilizes the vulnerability assessment in Azure Security Center. Once
configured, a partner agent (e.g. Qualys) reports vulnerability data to the partner’s management platform. In turn,
the partner's management platform provides vulnerability and health monitoring data back to Azure Security
Center, allowing customers to quickly identify vulnerable virtual machines.
Business continuity
High availability: Server workloads are grouped in an Availability Set to help ensure high availability of virtual
machines in Azure. At least one virtual machine is available during a planned or unplanned maintenance event,
meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure virtual machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS virtual machine without restoring the entire virtual machine, enabling faster restore times.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type, which allows all data to be analyzed
together regardless of its original source. Furthermore, Azure Security Center integrates with Log Analytics
allowing customers to use Log Analytics queries to access their security event data and combine it with data from
other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – UK NHS Customer Responsibility Matrix lists all UK NHS
requirements. This matrix details whether the implementation of each principle is the responsibility of Microsoft,
the customer, or shared between the two.
The Azure Security and Compliance Blueprint – UK NHS Data Warehouse Implementation Matrix provides
information on which UK NHS requirements are addressed by the data warehouse architecture, including detailed
descriptions of how the implementation meets the requirements of each covered principle.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: IaaS Web
Application for UK NHS
1/28/2019 • 15 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides a reference architecture and guidance for a infrastructure
as a service (IaaS ) web application suitable for the collection, storage, and retrieval of healthcare data. This solution
demonstrates ways in which customers can comply with guidance provided in the Cloud Security Good Practice
Guide published by NHS Digital, a partner of the United Kingdom's (UK) Department of Health and Social Care
(DHSC ). The Cloud Security Good Practice Guide is based on the 14 Cloud Security Principles published by the UK
National Cyber Security Centre (NCSC ).
This reference architecture, implementation guide, and threat model are intended to serve as a foundation for
customers to adjust to their specific requirements and should not be used as-is in a production environment
without additional configuration. Customers are responsible for conducting appropriate security and compliance
assessments of any solution built using this architecture, as requirements may vary based on the specifics of each
customer's implementation.
Deployment architecture
The following section details the deployment and implementation elements.
Bastion host: The bastion host is the single point of entry that allows users to access the deployed resources in
this environment. The bastion host provides a secure connection to deployed resources by only allowing remote
traffic from public IP addresses on a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs
to be defined in the network security group.
This solution creates a virtual machine as a domain-joined bastion host with the following configurations:
Antimalware extension
Azure Diagnostics extension
Azure Disk Encryption using Azure Key Vault
An auto-shutdown policy to reduce consumption of virtual machine resources when not in use
Windows Defender Credential Guard enabled so that credentials and other secrets run in a protected
environment that is isolated from the running operating system
Virtual network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: This solution deploys resources in an architecture with a separate web subnet,
database subnet, Active Directory subnet, and management subnet inside of a virtual network. Subnets are
logically separated by network security group rules applied to the individual subnets to restrict traffic between
subnets to only that necessary for system and management functionality.
See the configuration for network security groups deployed with this solution. Organizations can configure
network security groups by editing the file above using this documentation as a guide.
Each of the subnets has a dedicated Network Security Group:
1 network security group for Application Gateway (LBNSG )
1 network security group for bastion host (MGTNSG )
1 network security group for primary and backup domain controllers (ADNSG )
1 network security group for SQL Servers and Cloud Witness (SQLNSG )
1 network security group for web tier (WEBNSG )
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. Additionally, all transactions to Azure
Storage through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by NHS Digital.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security module protected 2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
The solution is integrated with Azure Key Vault to manage IaaS virtual machine disk-encryption keys and
secrets.
Patch management: Windows virtual machines deployed as part of this reference architecture are configured by
default to receive automatic updates from Windows Update Service. This solution also includes the Azure
Automation service through which updated deployments can be created to patch virtual machines when needed.
Malware protection: Microsoft Antimalware for Virtual Machines provides real-time protection capability that
helps identify and remove viruses, spyware, and other malicious software, with configurable alerts when known
malicious or unwanted software attempts to install or run on protected virtual machines.
Azure Security Center: With Azure Security Center, customers can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler for customers to discover
and address potential security issues. A threat intelligence report is generated for each detected threat to assist
incident response teams in investigating and remediating threats.
Furthermore, this reference architecture utilizes the vulnerability assessment in Azure Security Center. Once
configured, a partner agent (e.g. Qualys) reports vulnerability data to the partner’s management platform. In turn,
the partner's management platform provides vulnerability and health monitoring data back to Azure Security
Center, allowing customers to quickly identify vulnerable virtual machines.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities using an Azure
Application Gateway with a web application firewall configured, and the OWASP ruleset enabled. Additional
capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Business continuity
High availability: The solution deploys all virtual machines in an Availability Set. Availability sets ensure that the
virtual machines are distributed across multiple isolated hardware clusters to improve availability. At least one
virtual machine is available during a planned or unplanned maintenance event, meeting the 99.95% Azure SLA.
Recovery Services Vault: The Recovery Services Vault houses backup data and protects all configurations of
Azure Virtual Machines in this architecture. With a Recovery Services Vault, customers can restore files and folders
from an IaaS virtual machine without restoring the entire virtual machine, enabling faster restore times.
Cloud Witness: Cloud Witness is a type of Failover Cluster quorum witness in Windows Server 2016 that
leverages Azure as the arbitration point. The Cloud Witness, like any other quorum witness, gets a vote and can
participate in the quorum calculations, but it uses the standard publicly available Azure Blob Storage. This
eliminates the extra maintenance overhead of virtual machines hosted in a public cloud.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type, which allows all data to be analyzed
together regardless of its original source. Furthermore, Azure Security Center integrates with Log Analytics
allowing customers to use Log Analytics queries to access their security event data and combine it with data from
other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – UK NHS Customer Responsibility Matrix lists all UK NHS
requirements. This matrix details whether the implementation of each principle is the responsibility of Microsoft,
the customer, or shared between the two.
The Azure Security and Compliance Blueprint – UK NHS IaaS Web Application Implementation Matrix provides
information on which UK NHS requirements are addressed by the IaaS web application architecture, including
detailed descriptions of how the implementation meets the requirements of each covered principle.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: PaaS Web
Application for UK NHS
12/18/2018 • 15 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides a reference architecture and guidance for a platform as a
service (PaaS ) solution suitable for the collection, storage, and retrieval of healthcare data. This solution
demonstrates ways in which customers can comply with guidance provided in the Cloud Security Good Practice
Guide published by NHS Digital, a partner of the United Kingdom's (UK) Department of Health and Social Care
(DHSC ). The Cloud Security Good Practice Guide is based on the 14 Cloud Security Principles published by the UK
National Cyber Security Centre (NCSC ).
This reference architecture, implementation guide, and threat model are intended to serve as a foundation for
customers to adjust to their specific requirements and should not be used as-is in a production environment
without additional configuration. Customers are responsible for conducting appropriate security and compliance
assessments of any solution built using this architecture, as requirements may vary based on the specifics of each
customer's implementation.
Deployment architecture
The following section details the deployment and implementation elements.
Azure Resource Manager: Azure Resource Manager enables customers to work with the resources in the
solution as a group. Customers can deploy, update, or delete all the resources for the solution in a single,
coordinated operation. Customers use a template for deployment and that template can work for different
environments such as testing, staging, and production. Resource Manager provides security, auditing, and tagging
features to help customers manage their resources after deployment.
App Service Environment v2: The Azure App Service Environment is an App Service feature that provides a fully
isolated and dedicated environment for securely running App Service applications at a high scale.
The App Service Environment is isolated to only run a single application and is always deployed into a virtual
network. This isolation feature enables the reference architecture to have complete tenant isolation, removing it
from Azure’s multi-tenant environment. This isolation feature is required to meet the requirements of UK NHS
principle 3. Customers have fine-grained control over both inbound and outbound application network traffic, and
applications can establish high-speed secure connections over virtual networks to on-premises corporate
resources. Customers can “auto-scale” with App Service Environment based on load metrics, available budget, or a
defined schedule.
Use of App Service Environment for this architecture allows for the following controls/configurations:
Host inside a secured Azure virtual network and network security rules
Self-signed internal load balancer certificate for HTTPS communication. As a best practice, Microsoft
recommends the use of a trusted certificate authority for enhanced security.
Internal load balancing mode
Disable TLS 1.0
Change TLS cipher
Control inbound traffic N/W ports
Web application firewall – restrict data
Allow Azure SQL Database traffic
Azure Web App: Azure App Service enables customers to build and host web applications in the programming
language of their choice without managing infrastructure. It offers auto-scaling and high availability, supports both
Windows and Linux, and enables automated deployments from GitHub, Azure DevOps, or any Git repo.
Virtual Network
The architecture defines a private virtual network with an address space of 10.200.0.0/16.
Network security groups: Network security groups contain access control lists that allow or deny traffic within a
virtual network. Network security groups can be used to secure traffic at a subnet or individual virtual machine
level. The following Network security groups exist:
1 network security group for Application Gateway
1 network security group for App Service Environment
1 network security group for Azure SQL Database
Each of the Network security groups have specific ports and protocols open so that the solution can work securely
and correctly. In addition, the following configurations are enabled for each network security group:
Diagnostic logs and events are enabled and stored in a storage account
Log Analytics is connected to the network security group's diagnostics logs
Subnets: Each subnet is associated with its corresponding network security group.
Azure DNS: The Domain Name System, or DNS, is responsible for translating (or resolving) a website or service
name to its IP address. Azure DNS is a hosting service for DNS domains that provides name resolution using
Azure infrastructure. By hosting domains in Azure, users can manage DNS records using the same credentials,
APIs, tools, and billing as other Azure services. Azure DNS also supports private DNS domains.
Azure Load Balancer: Azure Load Balancer allows customers to scale their applications and create high
availability for services. Load Balancer supports inbound as well as outbound scenarios, and provides low latency,
high throughput, and scales up to millions of flows for all TCP and UDP applications.
Data in transit
Azure encrypts all communications to and from Azure datacenters by default. All transactions to Azure Storage
through the Azure portal occur via HTTPS.
Data at rest
The architecture protects data at rest through encryption, database auditing, and other measures.
Azure Storage: To meet encrypted data at rest requirements, all Azure Storage uses Storage Service Encryption.
This helps protect and safeguard data in support of organizational security commitments and compliance
requirements defined by NHS Digital.
Azure Disk Encryption: Azure Disk Encryption leverages the BitLocker feature of Windows to provide volume
encryption for data disks. The solution integrates with Azure Key Vault to help control and manage the disk-
encryption keys.
Azure SQL Database: The Azure SQL Database instance uses the following database security measures:
Active Directory authentication and authorization enables identity management of database users and other
Microsoft services in one central location.
SQL database auditing tracks database events and writes them to an audit log in an Azure storage account.
Azure SQL Database is configured to use transparent data encryption, which performs real-time encryption and
decryption of the database, associated backups, and transaction log files to protect information at rest.
Transparent data encryption provides assurance that stored data has not been subject to unauthorized access.
Firewall rules prevent all access to database servers until proper permissions are granted. The firewall grants
access to databases based on the originating IP address of each request.
SQL Threat Detection enables the detection and response to potential threats as they occur by providing
security alerts for suspicious database activities, potential vulnerabilities, SQL injection attacks, and anomalous
database access patterns.
Encrypted Columns ensure that sensitive data never appears as plaintext inside the database system. After
enabling data encryption, only client applications or application servers with access to the keys can access
plaintext data.
SQL Database dynamic data masking limits sensitive data exposure by masking the data to non-privileged
users or applications. Dynamic data masking can automatically discover potentially sensitive data and suggest
the appropriate masks to be applied. This helps to identify and reduce access to data such that it does not exit
the database via unauthorized access. Customers are responsible for adjusting dynamic data masking settings
to adhere to their database schema.
Identity management
The following technologies provide capabilities to manage access to data in the Azure environment:
Azure Active Directory is Microsoft's multi-tenant cloud-based directory and identity management service. All
users for this solution are created in Azure Active Directory, including users accessing the Azure SQL Database.
Authentication to the application is performed using Azure Active Directory. For more information, see
integrating applications with Azure Active Directory. Additionally, the database column encryption uses Azure
Active Directory to authenticate the application to Azure SQL Database. For more information, see how to
protect sensitive data in Azure SQL Database.
Azure role-based access control enables administrators to define fine-grained access permissions to grant only
the amount of access that users need to perform their jobs. Instead of giving every user unrestricted permission
for Azure resources, administrators can allow only certain actions for accessing data. Subscription access is
limited to the subscription administrator.
Azure Active Directory Privileged Identity Management enables customers to minimize the number of users
who have access to certain information. Administrators can use Azure Active Directory Privileged Identity
Management to discover, restrict, and monitor privileged identities and their access to resources. This
functionality can also be used to enforce on-demand, just-in-time administrative access when needed.
Azure Active Directory Identity Protection detects potential vulnerabilities affecting an organization's identities,
configures automated responses to detected suspicious actions related to an organization's identities, and
investigates suspicious incidents to take appropriate action to resolve them.
Security
Secrets management: The solution uses Azure Key Vault for the management of keys and secrets. Azure Key
Vault helps safeguard cryptographic keys and secrets used by cloud applications and services. The following Azure
Key Vault capabilities help customers protect and access such data:
Advanced access policies are configured on a need basis.
Key Vault access policies are defined with minimum required permissions to keys and secrets.
All keys and secrets in Key Vault have expiration dates.
All keys in Key Vault are protected by specialized hardware security modules. The key type is a hardware
security module protected 2048-bit RSA Key.
All users and identities are granted minimum required permissions using role-based access control.
Diagnostics logs for Key Vault are enabled with a retention period of at least 365 days.
Permitted cryptographic operations for keys are restricted to the ones required.
Azure Security Center: With Azure Security Center, this solution can centrally apply and manage security policies
across workloads, limit exposure to threats, and detect and respond to attacks. Additionally, Azure Security Center
accesses existing configurations of Azure services to provide configuration and service recommendations to help
improve security posture and protect data.
Azure Security Center uses a variety of detection capabilities to alert customers of potential attacks targeting their
environments. These alerts contain valuable information about what triggered the alert, the resources targeted, and
the source of the attack. Azure Security Center has a set of predefined security alerts, which are triggered when a
threat, or suspicious activity takes place. Custom alert rules in Azure Security Center allow customers to define new
security alerts based on data that is already collected from their environment.
Azure Security Center provides prioritized security alerts and incidents, making it simpler to discover and address
potential security issues. A threat intelligence report is generated for each detected threat to assist incident
response teams in investigating and remediating threats.
Azure Application Gateway: The architecture reduces the risk of security vulnerabilities using an Azure
Application Gateway with a web application firewall configured, and the OWASP ruleset enabled. Additional
capabilities include:
End-to-end-SSL
Enable SSL Offload
Disable TLS v1.0 and v1.1
Web application firewall (prevention mode)
Prevention mode with OWASP 3.0 ruleset
Enable diagnostics logging
Custom health probes
Azure Security Center and Azure Advisor provide additional protection and notifications. Azure Security Center
also provides a reputation system.
Logging and auditing
Azure services extensively log system and user activity, as well as system health:
Activity logs: Activity logs provide insight into operations performed on resources in a subscription. Activity
logs can help determine an operation's initiator, time of occurrence, and status.
Diagnostic logs: Diagnostic logs include all logs emitted by every resource. These logs include Windows event
system logs, Azure Storage logs, Key Vault audit logs, and Application Gateway access and firewall logs. All
diagnostic logs write to a centralized and encrypted Azure storage account for archival. The retention is user-
configurable, up to 730 days, to meet organization-specific retention requirements.
Log Analytics: These logs are consolidated in Log Analytics for processing, storing, and dashboard reporting.
Once collected, the data is organized into separate tables for each data type, which allows all data to be analyzed
together regardless of its original source. Furthermore, Azure Security Center integrates with Log Analytics
allowing customers to use Log Analytics queries to access their security event data and combine it with data from
other services.
The following Log Analytics management solutions are included as a part of this architecture:
Active Directory Assessment: The Active Directory Health Check solution assesses the risk and health of server
environments on a regular interval and provides a prioritized list of recommendations specific to the deployed
server infrastructure.
SQL Assessment: The SQL Health Check solution assesses the risk and health of server environments on a
regular interval and provides customers with a prioritized list of recommendations specific to the deployed
server infrastructure.
Agent Health: The Agent Health solution reports how many agents are deployed and their geographic
distribution, as well as how many agents which are unresponsive and the number of agents which are
submitting operational data.
Activity Log Analytics: The Activity Log Analytics solution assists with analysis of the Azure activity logs across
all Azure subscriptions for a customer.
Azure Automation: Azure Automation stores, runs, and manages runbooks. In this solution, runbooks help collect
logs from Azure SQL Database. The Automation Change Tracking solution enables customers to easily identify
changes in the environment.
Azure Monitor: Azure Monitor helps users track performance, maintain security, and identify trends by enabling
organizations to audit, create alerts, and archive data, including tracking API calls in their Azure resources.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Compliance documentation
The Azure Security and Compliance Blueprint – UK NHS Customer Responsibility Matrix lists all UK NHS
requirements. This matrix details whether the implementation of each principle is the responsibility of Microsoft,
the customer, or shared between the two.
The Azure Security and Compliance Blueprint – UK NHS PaaS Web Application Implementation Matrix provides
information on which UK NHS requirements are addressed by the PaaS web application architecture, including
detailed descriptions of how the implementation meets the requirements of each covered principle.
Guidance and recommendations
VPN and ExpressRoute
A secure VPN tunnel or ExpressRoute needs to be configured to securely establish a connection to the resources
deployed as a part of this PaaS web application reference architecture. By appropriately setting up a VPN or
ExpressRoute, customers can add a layer of protection for data in transit.
By implementing a secure VPN tunnel with Azure, a virtual private connection between an on-premises network
and an Azure virtual network can be created. This connection takes place over the Internet and allows customers to
securely "tunnel" information inside an encrypted link between the customer's network and Azure. Site-to-site
VPN is a secure, mature technology that has been deployed by enterprises of all sizes for decades. The IPsec tunnel
mode is used in this option as an encryption mechanism.
Because traffic within the VPN tunnel does traverse the Internet with a site-to-site VPN, Microsoft offers another,
even more secure connection option. Azure ExpressRoute is a dedicated WAN link between Azure and an on-
premises location or an Exchange hosting provider. As ExpressRoute connections do not go over the Internet, these
connections offer more reliability, faster speeds, lower latencies, and higher security than typical connections over
the Internet. Furthermore, because this is a direct connection of customer's telecommunication provider, the data
does not travel over the Internet and therefore is not exposed to it.
Best practices for implementing a secure hybrid network that extends an on-premises network to Azure are
available.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint - Three-Tier
IaaS Web Application for UK OFFICIAL
2/4/2019 • 12 minutes to read • Edit Online
Overview
This article provides guidance and automation scripts to deliver a Microsoft Azure three-tier web based
architecture appropriate for handling many workloads classified as OFFICIAL in the United Kingdom.
Using an Infrastructure as Code approach, the set of Azure Resource Manager templates deploy an environment
that aligns to the UK National Cyber Security Centre (NCSC ) 14 Cloud Security Principles and the Center for
Internet Security (CIS ) Critical Security Controls.
The NCSC recommend their Cloud Security Principles be used by customers to evaluate the security properties of
the service, and to help understand the division of responsibility between the customer and supplier. We've
provided information against each of these principles to help you understand the split of responsibilities.
This architecture and corresponding Azure Resource Manager templates are supported by the Microsoft
whitepaper, 14 Cloud Security Controls for UK cloud Using Microsoft Azure. This paper catalogues how Azure
services align with the UK NCSC 14 Cloud Security Principles, thereby enabling organisations to fast-track their
ability to meet their compliance obligations using cloud-based services globally and in the UK on the Microsoft
Azure cloud.
This template deploys the infrastructure for the workload. Application code and supporting business tier and data
tier software must be installed and configured. Detailed deployment instructions are available here.
If you do not have an Azure subscription then you can sign up quickly and easily - Get Started with Azure.
Load Balancer
(1) Web Tier Load Balancer
(1) Biz Tier Load Balancer
(1) Data Tier Load Balancer
Storage
(14) Total Storage Accounts
Active Directory Domain Controller Availability Set
(2) Primary Locally Redundant Storage (LRS ) accounts - 1 for each VM
(1) Diagnostic Locally Redundant Storage (LRS ) account for the ADDS Availability Set
Management Jumpbox VM
(1) Primary Locally Redundant Storage (LRS ) account for the Jumpbox VM
(1) Diagnostic Locally Redundant Storage (LRS ) account for the Jumpbox VM
Web Tier VMs
(2) Primary Locally Redundant Storage (LRS ) accounts - 1 for each VM
(1) Diagnostic Locally Redundant Storage (LRS ) account for the Web Tier Availability Set
Biz Tier VMs
(2) Primary Locally Redundant Storage (LRS ) accounts - 1 for each VM
(1) Diagnostic Locally Redundant Storage (LRS ) account for the Biz Tier Availability Set
Data Tier VMs
(2) Primary Locally Redundant Storage (LRS ) accounts - 1 for each VM
(1) Diagnostic Locally Redundant Storage (LRS ) account for the Data Tier Availability Set
Deployment Architecture:
On-Premises Network: A private local-area network implemented in an organisation.
Production VNet: The Production VNet (Virtual Network) hosts the application and other operational resources
running in Azure. Each VNet may contain several subnets which are used for isolating and managing network
traffic.
Web Tier: Handles incoming HTTP requests. Responses are returned through this tier.
Business Tier: Implements business processes and other functional logic for the system.
Database Tier: Provides persistent data storage, using SQL Server Always On Availability Groups for high
availability. Customers may use Azure SQL Database as a PaaS alternative.
Gateway: The VPN Gateway provides connectivity between the routers in the on-premises network and the
production VNet.
Internet Gateway and Public IP Address: The internet gateway exposes application services to users through
the internet. Traffic accessing these services is secured using an Application Gateway offering Layer 7 routing and
load balancing capabilities with web application firewall (WAF ) protection.
Management VNet: This VNet contains resources that implement management and monitoring capabilities for
the workloads running in the production VNet.
Jumpbox: Also called a bastion host, which is a secure VM on the network that administrators use to connect to
VMs in the production VNet. The jumpbox has an NSG that allows remote traffic only from public IP addresses on
a safe list. To permit remote desktop (RDP ) traffic, the source of the traffic needs to be defined in the NSG.
Management of production resources is via RDP using a secured Jumpbox VM.
User Defined Routes: User defined routes are used to define the flow of IP traffic within Azure VNets.
Network Peered VNETs: The Production and Management VNets are connected using VNet peering. These
VNets are still managed as separate resources, but appear as one for all connectivity purposes for these virtual
machines. These networks communicate with each other directly by using private IP addresses. VNet peering is
subject to the VNets being in the same Azure Region.
Network Security Groups: NSGs contain Access Control Lists that allow or deny traffic within a VNet. NSGs can
be used to secure traffic at a subnet or individual VM level.
Active Directory Domain Services (AD DS ): This architecture provides a dedicated Active Directory Domain
Services deployment.
Logging and Audit: Azure Activity Log captures operations taken on the resources in your subscription such as
who initiated the operation, when the operation occurred, the status of the operation and the values of other
properties that might help you research the operation. Azure Activity Log is an Azure platform service that
captures all actions on a subscription. Logs can be archived or exported if required.
Network Monitoring and Alerting: Azure Network Watcher is a platform service provides network packet
capture, flow logging, topology tools and diagnostics for network traffics within your VNets.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security and Compliance Blueprint: PaaS Web
Application Hosting for UK OFFICIAL Workloads
2/4/2019 • 16 minutes to read • Edit Online
Overview
This Azure Security and Compliance Blueprint provides guidance and automation scripts to deliver a Microsoft
Azure platform as a service (PaaS ) hosted web application architecture appropriate for handling workloads
classified as UK OFFICIAL. This security classification encompasses the majority of information created or
processed by the public sector. This includes routine business operations and services, which if lost, stolen or
published in the media, some of which could have damaging consequences. The typical threat profile for the
OFFICIAL classification is much the same as a private business who provides valuable information and services.
UK OFFICIAL anticipates the need to defend UK Government data or services against threat or compromise by
attackers with bounded capabilities and resources such as (but is not limited to) hactivists, single-issue pressure
groups, investigative journalists, competent individual hackers, and the majority of criminal individuals and groups.
This blueprint has been reviewed by the UK National Cyber Security Centre (NCSC ) and aligns to the NCSC 14
Cloud Security Principles.
The architecture uses Azure platform as a service components to deliver an environment that allows customers to
avoid the expense and complexity of buying software licenses, of managing the underlying application
infrastructure and middleware or the development tools, and other resources. Customers manage the applications
and services that they develop, focusing on delivering business value, whilst Microsoft Azure manages the other
Azure resources such as virtual machines, storage and networking, putting more of the division of responsibility for
infrastructure management on to the Azure platform. Azure App Services offers auto-scaling, high availability,
supports Windows and Linux, and enables automated deployments from GitHub, Azure DevOps, or any Git
repository as default services. Through using App Services, developers can concentrate on delivering business
value without the overhead of managing infrastructure. It is possible to build greenfield new Java, PHP, Node.js,
Python, HTML or C# web applications or also to migrate existing cloud or on premises web applications to Azure
App Services (although thorough due diligence and testing to confirm performance is required).
This blueprint focuses on the provisioning of a secure foundation platform as a service web-based interface for
public and also back office users. This blueprint design scenario considers the use of Azure hosted web-based
services where a public user can securely submit, view, and manage sensitive data; also that a back office or
government operator can securely process the sensitive data that the public user has submitted. Use cases for this
scenario could include:
A user submitting a tax return, with a government operator processing the submission;
A user requesting a service through a web-based application, with a back office user validating and delivering
the service; or
A user seeking and viewing public domain help information concerning a government service.
Using Azure Resource Manager templates and Azure Command Line Interface scripts, the blueprint deploys an
environment that aligns to the UK National Cyber Security Centre (NCSC ) 14 Cloud Security Principles and the
Center for Internet Security (CIS ) Critical Security Controls. The NCSC recommends their Cloud Security
Principles be used by customers to evaluate the security properties of the service and to help understand the
division of responsibility between the customer and supplier. Microsoft has provided information against each of
these principles to help better understand the split of responsibilities. This architecture and corresponding Azure
Resource Manager templates are supported by the Microsoft whitepaper, 14 Cloud Security Controls for UK cloud
Using Microsoft Azure. This architecture has been reviewed by the NCSC, and aligns with the UK NCSC 14 Cloud
Security Principles, thus enabling public sector organizations to fast-track their ability to meet compliance
obligations using cloud-based services globally and in the UK on the Microsoft Azure cloud. This template deploys
the infrastructure for the workload. Application code and supporting business tier and data tier software must be
installed and configured by customers. Detailed deployment instructions are available here.
This blueprint is a foundation architecture. Our customers can use this blueprint as a foundation for their
OFFICIAL classification web-based workloads and expand on the templates and resources with their own
requirements. This blueprint builds on the principles of the UK-OFFICAL Three-Tier IaaS Web Applications
blueprint to offer our customers both infrastructure as a service (IaaS ) and PaaS implementation choices for
hosting web-based workloads.
To deploy this blueprint, an Azure subscription is required. If you do not have an Azure subscription, you can sign
up quickly and easily at no charge: Get Started with Azure. Click here for deployment instructions.
As part of the deployment architecture, secure storage provision, monitoring & logging, unified security
management & advanced threat protection, and management capabilities are also deployed to ensure that
customers have all the tools required to secure and monitor their environment for this solution.
This solution uses the following Azure services. Details of the deployment architecture are in the deployment
architecture section.
Azure Active Directory
App Service
Web App
API App
Azure DNS
Key Vault
Azure Monitor
Application Insights
Log Analytics
Azure Resource Manager
Azure Security Center
Azure SQL Database
Azure Storage
Deployment architecture
The following section details the deployment and implementation elements.
Security
Identity and authentication
This blueprint ensures that access to resources is protected through directory and identity management services.
This architecture makes full use of identity as the security perimeter.
The following technologies provide identity management capabilities in the Azure environment:
Azure Active Directory (Azure AD ) is Microsoft's multi-tenant cloud-based directory and identity management
service. All users for the solution were created in Azure Active Directory, including users accessing the SQL
Database.
Authentication to the operator facing web application and access for the administration of the Azure resources
is performed using Azure AD. For more information, see Integrating applications with Azure Active Directory.
Database column encryption uses Azure AD to authenticate the application to Azure SQL Database. For more
information, see Always Encrypted: Protect sensitive data in SQL Database.
The citizen facing web application is configured for public access. To allow for account creation and
authentication through active directory or social network identity providers Azure Active Directory B2C can be
integrated if required.
Azure Active Directory Identity Protection detects potential vulnerabilities and risky accounts provides
recommendations to enhance the security posture of your organization’s identities, configures automated
responses to detected suspicious actions related to your organization’s identities, and investigates suspicious
incidents and takes appropriate action to resolve them.
Azure Role-based Access Control (RBAC ) enables precisely focused access management for Azure. Subscription
access is limited to the subscription administrator, and Azure Key Vault access is restricted only to users who
require key management access.
Through leveraging Azure Active Directory Conditional Access customers can enforce additional security
controls on access to apps or users in their environment based on specific conditions such as location, device,
state and sign in risk.
Azure DDoS Protection combined with application design best practices, provides defense against DDoS
attacks, with always-on traffic monitoring, and real-time mitigation of common network-level attacks. With a
PaaS architecture, platform level DDoS protection is transparent to the customer and incorporated into the
platform but it is important to note that the application security design responsibility lies with the customer.
Data in transit
Data is transit from outside and between Azure components is protected using Transport Layer Security/Secure
Sockets Layer (TLS/SSL ), which uses symmetric cryptography based on a shared secret to encrypt
communications as they travel over the network. By default, network traffic is secured using TLS 1.2.
Security and malware protection
Azure Security Center provides a centralized view of the security state of all your Azure resources. At a glance, you
can verify that the appropriate security controls are in place and configured correctly, and you can quickly identify
any resources that require attention.
Azure Advisor is a personalized cloud consultant that helps you follow best practices to optimize your Azure
deployments. It analyzes your resource configuration and usage telemetry and then recommends solutions that
can help you improve the cost effectiveness, performance, high availability, and security of your Azure resources.
Microsoft Antimalware is a real-time protection capability that helps identify and remove viruses, spyware, and
other malicious software. This by default is installed on the underlying PaaS virtual machine infrastructure and is
managed by the Azure fabric transparently to the customer, ensuring
PaaS services in this blueprint
Azure App Service
Azure App Service provides a fully managed web hosting environment for web application developed in Java, PHP,
Node.js Python, HTML and C# without having to manage infrastructure. It offers auto-scaling and high availability,
supports both Windows and Linux, and enables automated deployments from Azure DevOps or any Git-based
repo.
App Service is ISO, SOC, and PCI compliant and can authenticate users with Azure Active Directory or with social
login (Google, Facebook, Twitter, and Microsoft authentication.
Basic, Standard, and Premium plans are for production workloads and run on dedicated Virtual Machine instances.
Each instance can support multiple applications and domains. App services also support IP address restrictions to
secure traffic to trusted IP addresses if required and also managed identities for Azure resources for secure
connection to other PaaS services such as Key Vault and Azure SQL Database. Where additional security is
required our Isolated plan hosts your apps in a private, dedicated Azure environment and is ideal for apps that
require secure connections with your on-premises network, or additional performance and scale.
This template deploys the following App Service features:
Standard App Service Plan Tier
Multiple App Service deployment slots: Dev, Preview, QA, UAT and of course Production (default slot).
Managed identities for Azure resources to connect to Azure Key Vault (this could also be used to provide access
to Azure SQL Database
Integration with Azure Application Insights to monitor performance
Diagnostic Logs
Metric alerts
Azure API Apps
Azure SQL Database
SQL Database is a general-purpose relational database managed service in Microsoft Azure that supports
structures such as relational data, JSON, spatial, and XML. SQL Database offers managed single SQL databases,
managed SQL databases in an elastic pool, and SQL Managed Instances (in public preview ). It delivers
[dynamically scalable performance])https://docs.microsoft.com/azure/sql-database/sql-database-service-tiers) and
provides options such as columnstore indexes for extreme analytic analysis and reporting, and in-memory OLTP
for extreme transactional processing. Microsoft handles all patching and updating of the SQL code base seamlessly
and abstracts away all management of the underlying infrastructure.
Azure SQL Database in this blueprint
The Azure SQL Database instance uses the following database security measures:
Server-level and database-level firewall rules, or through Virtual Network Service Endpoints using virtual
network rules.
Transparent data encryption helps protect Azure SQL Database and Azure Data Warehouse against the threat
of malicious activity. It performs real-time encryption and decryption of the database, associated backups, and
transaction log files at rest without requiring changes to the application.
Azure AD authentication, you can centrally manage the identities of database users and other Microsoft services
in one central location. Central ID management provides a single place to manage database users and simplifies
permission management.
Use of Azure Active Directory for database administration
Audit logs to storage accounts
Metric alerts for failed DB connections
SQL Threat Detection
Always Encrypted columns
Azure Storage
Microsoft Azure Storage is a Microsoft-managed cloud service that provides storage that is highly available,
secure, durable, scalable, and redundant. Azure Storage consists of Blob storage, File Storage, and Queue storage.
Azure Storage in this blueprint
This template uses the following Azure Storage components:
Storage Service Encryption
Only allow HTTPS connections
Data at rest
Through Storage Service Encryption all data written to Azure Storage is encrypted through 256-bit AES
encryption, one of the strongest block ciphers available. You can use Microsoft-managed encryption keys with SSE
or you can use your own encryption keys.
Storage accounts can be secured via Virtual Network Service Endpoints using virtual network rules.
Detailed information about securing Azure Storage can be found in the security guide.
Secrets management
Azure Key Vault
Key Vault is used to secure application keys and secrets to ensure that they are not accessible by third parties. Key
Vault is not intended to be used as a store for user passwords. It allows you to create multiple secure containers,
called vaults. These vaults are backed by hardware security modules (HSMs). Vaults help reduce the chances of
accidental loss of security information by centralizing the storage of application secrets. Key Vaults also control and
log the access to anything stored in them. Azure Key Vault can handle requesting and renewing Transport Layer
Security (TLS ) certificates, providing the features required for a robust certificate lifecycle management solution.
Azure Key Vault in this blueprint
Holds the Storage access key, with read access granted to the managed identity of the Customer facing web app
Holds the SQL Server DBA Password (in a separate vault)
Diagnostics logging
Monitoring, logging, and audit
Log Analytics
Log Analytics is a service in Azure that helps you collect and analyze data generated by resources in your cloud and
on-premises environments.
Log Analytics in this blueprint
SQL Assessment
Key Vault diagnostics
Application Insights connection
Azure Activity Log
Application Insights
Application Insights is an extensible Application Performance Management (APM ) service for web developers on
multiple platforms. Used to monitor live web applications it will automatically detect performance anomalies,
analyze performance, diagnose issues and to understand how users interact with the app. Application Insights can
be deployed on platforms including .NET, Node.js and J2EE, hosted on-premises or in the cloud. It integrates with
your DevOps process, and has connection points to a variety of development tools.
Application Insights in this blueprint
This template uses the following Application Insights components:
Application Insights dashboard per site (Operator, Customer and API)
Azure Activity Logs
Azure Activity Log audits control-plane events for your subscriptions. Using the Activity Log, you can determine
the 'what, who, and when' for any write operations (PUT, POST, DELETE ) taken on the resources in your
subscription. You can also understand the status of the operation and other relevant properties.
Azure Monitor
Azure Monitor enables core monitoring for Azure services by allowing the collection of metrics, activity logs, and
diagnostic logs. Azure Monitor provides base-level infrastructure metrics and logs for most services in Microsoft
Azure.
Threat model
The data flow diagram for this reference architecture is available for download or can be found below. This model
can help customers understand the points of potential risk in the system infrastructure when making modifications.
Third-party assessment
This blueprint has been reviewed by the UK National Cyber Security Centre (NCSC ) and aligns to the NCSC 14
Cloud Security Principles
The automation templates have been tested by the UK Customer Success Unit Azure Cloud Solution Architect
team and by our Microsoft partner, Ampliphae.
Disclaimer
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT. This document is provided
"as-is." Information and views expressed in this document, including URL and other Internet website references,
may change without notice. Customers reading this document bear the risk of using it.
This document does not provide customers with any legal rights to any intellectual property in any Microsoft
product or solutions.
Customers may copy and use this document for internal reference purposes.
Certain recommendations in this document may result in increased data, network, or compute resource usage
in Azure, and may increase a customer's Azure license or subscription costs.
This architecture is intended to serve as a foundation for customers to adjust to their specific requirements and
should not be used as-is in a production environment.
This document is developed as a reference and should not be used to define all means by which a customer can
meet specific compliance requirements and regulations. Customers should seek legal support from their
organization on approved customer implementations.
Azure Security white papers
12/14/2018 • 3 minutes to read • Edit Online
Security best practices for Azure solutions A collection of security best practices to use when you’re
designing, deploying, and managing your cloud solutions by
using Azure.
Developing secure applications on Azure A general guide to the security questions and controls you
should consider at each phase of the software development
lifecycle when developing applications for the cloud.
Advanced threat detection Guides you through the Azure approaches towards threat
vulnerability assessments, diagnostics, and analysis. Explains
how Microsoft uses advanced threat detection mechanisms to
secure the platform. Also explains how Microsoft includes
these mechanisms in public facing features and services.
Azure data encryption-at-rest Focuses on how data is protected at rest across Azure and the
various components taking part in the data protection
implementation. Reviews the pros and cons of the different
key management protection approaches.
Azure logging and auditing Provides an introduction for generating, collecting, and
analyzing security logs from services hosted on Azure. These
logs can help you gain security insights into your Azure
deployments.
Azure network security Introduces you to the wide range of network controls you can
configure to enhance the security of the solutions you deploy
in Azure. The focus is customer-facing network security
controls.
Azure Functions and serverless platform security This downloadable white paper covers the benefits of
serverless computing while providing security considerations
and mitigations in the context of Azure.
Container security in Microsoft Azure Describes containers, container deployment and management,
and native platform services. It also describes runtime security
issues that arise with the use of containers on the Azure
platform.
Azure Storage security guide Provides an overview of each of the security features that can
be used with Azure Storage. Covers management plane
security, data plane security, encryption at rest, encryption in
flight, and storage analytics.
Data classification for cloud readiness This downloadable paper introduces the fundamentals of data
classification and its value in the context of cloud computing.
Organizations assessing cloud computing for future use or
organizations currently using cloud services and seeking ways
to optimize data management will benefit most from this
paper.
Governance in Azure Explains the security and governance features built into Azure.
The main governance issues discussed are: policies, processes,
and procedures implementation for your organization goals;
security and continuous compliance with organization
standards; alerting and monitoring.
Isolation in the Azure public cloud Outlines how Azure provides isolation against both malicious
and non-malicious users. Serves as a guide for architecting
cloud solutions by offering various isolation choices to
architects. Primary focus is on the customer-facing security
controls, and does not attempt to address SLAs, pricing
models, and DevOps practice considerations.
Overview of Azure compliance This downloadable paper discusses Azure compliance offerings,
including formal certifications, attestations, validations,
authorizations, and assessments produced by independent
third-party auditing firms, as well as contractual amendments,
self-assessments, and customer guidance documents
produced by Microsoft.
Each offering description states which Azure customer-facing
services are in scope for the assessment, and provides links to
downloadable resources to assist customers with their own
compliance obligations.
Security management in Azure Discusses issues in the remote access of Azure resources. The
nature of the cloud demands remote access administration
and, therefore, security is paramount. Covers general security
guidelines, client configuration, best practices, and operational
principles and procedures.
Azure AD data and security The downloadable document explains the different
components of Azure Active Directory and their interaction
with each other. It outlines how the various components
protect, secure, encrypt, or hash their data in transit (for
example, across the Internet) and how it is protected at rest. It
explains the various Azure AD datacenter locations and their
interaction with on-premises directories, as well as the flows to
and from Azure AD. Finally, it describes the operational
procedures used by the Azure AD engineering team to
manage and secure the service.
Security services and technologies available on Azure
1/28/2019 • 4 minutes to read • Edit Online
In our discussions with current and future Azure customers, we’re often asked “do you have a list of all the security-
related services and technologies that Azure has to offer?”
When you evaluate cloud service provider options, it’s helpful to have this information. So we have provided this
list to get you started.
Over time, this list will change and grow, just as Azure does. Make sure to check this page on a regular basis to stay
up-to-date on our security-related services and technologies.
Azure Security Center A cloud workload protection solution that provides security
management and advanced threat protection across hybrid
cloud workloads.
Azure Key Vault A secure secrets store for the passwords, connection strings,
and other information you need to keep your apps working.
Log Analytics A monitoring service that collects telemetry and other data,
and provides a query language and analytics engine to deliver
operational insights for your apps and resources. Can be used
alone or with other services such as Security Center.
Azure Dev/Test Labs A service that helps developers and testers quickly create
environments in Azure while minimizing waste and controlling
cost.
Storage security
SERVICE DESCRIPTION
Azure Storage Service Encryption A security feature that automatically encrypts your data in
Azure storage.
StorSimple Encrypted Hybrid Storage An integrated storage solution that manages storage tasks
between on-premises devices and Azure cloud storage.
Azure Client-Side Encryption A client-side encryption solution that encrypts data inside
client applications before uploading to Azure Storage; also
decrypts the data while downloading.
Azure Storage Shared Access Signatures A shared access signature provides delegated access to
resources in your storage account.
Azure Storage Account Keys An access control method for Azure storage that is used for
authentication when the storage account is accessed.
SERVICE DESCRIPTION
Azure File shares with SMB 3.0 Encryption A network security technology that enables automatic
network encryption for the Server Message Block (SMB) file
sharing protocol.
Azure Storage Analytics A logging and metrics-generating technology for data in your
storage account.
Database security
SERVICE DESCRIPTION
Azure SQL Firewall A network access control feature that protects against
network-based attacks to database.
Azure SQL Cell Level Encryption A database security technology that provides encryption at a
granular level.
Azure SQL Connection Encryption To provide security, SQL Database controls access with firewall
rules limiting connectivity by IP address, authentication
mechanisms requiring users to prove their identity, and
authorization mechanisms limiting users to specific actions and
data.
Azure SQL Always Encryption Protects sensitive data, such as credit card numbers or
national identification numbers (for example, U.S. social
security numbers), stored in Azure SQL Database or SQL
Server databases.
Azure SQL Transparent Data Encryption A database security feature that encrypts the storage of an
entire database.
Azure SQL Database Auditing A database auditing feature that tracks database events and
writes them to an audit log in your Azure storage account.
Azure Role Based Access Control An access control feature designed to allow users to access
only the resources they are required to access based on their
roles within the organization.
Azure Active Directory B2C An identity management service that enables control over
how customers sign-up, sign-in, and manage their profiles
when using Azure-based applications.
Azure Active Directory Domain Services A cloud-based and managed version of Active Directory
Domain Services.
SERVICE DESCRIPTION
Azure Multi-Factor Authentication A security provision that employs several different forms of
authentication and verification before allowing access to
secured information.
Networking
SERVICE DESCRIPTION
Azure VPN Gateway A network device used as a VPN endpoint to allow cross-
premises access to Azure Virtual Networks.
Azure Application Gateway An advanced web application load balancer that can route
based on URL and perform SSL-offloading.
Web application firewall (WAF) A feature of Application Gateway that provides centralized
protection of your web applications from common exploits
and vulnerabilities
Azure Application Proxy An authenticating front-end used to secure remote access for
web applications hosted on-premises.
Azure DDoS protection Combined with application design best practices, provides
defense against DDoS attacks.
Virtual Network service endpoints Extends your virtual network private address space and the
identity of your VNet to the Azure services, over a direct
connection.
Azure Security technical overviews
9/20/2018 • 2 minutes to read • Edit Online
The articles below contain security best practices to use when you’re designing, deploying, and managing your
cloud solutions by using Azure. These best practices come from our experience with Azure security and the
experiences of customers like you.
The best practices are intended to be a resource for IT pros. This might include designers, architects, developers,
and testers who build and deploy secure Azure solutions.
Azure boundary security best practices
Azure database security best practices
Azure data security and encryption best practices
Azure identity management and access control security best practices
Azure network security best practices
Azure operational security best practices
Azure PaaS Best Practices
Azure Service Fabric security best practices
Best practices for Azure VM security
Implementing a secure hybrid network architecture in Azure
Internet of Things security best practices
Securing PaaS databases in Azure
Securing PaaS web and mobile applications using Azure App Service
Securing PaaS web and mobile applications using Azure Storage
Security best practices for IaaS workloads in Azure
The white paper Security best practices for Azure solutions is a collection of the security best practices found in
the articles listed above.
Download the white paper
Azure Security MVP Program
1/11/2019 • 2 minutes to read • Edit Online
Microsoft Most Valuable Professionals (MVPs) are community leaders who have demonstrated an exemplary
commitment to helping others. MVPs enable others to get the most out of their experience with Microsoft
technologies. They share their passion, real-world knowledge, and technical expertise with the community and with
Microsoft.
Microsoft Azure now recognizes community experts with special expertise in Azure security. Microsoft MVPs can
be awarded the MVP in Microsoft Azure in the Azure Security contribution area.
There is no benchmark for becoming an MVP. This is in part because it varies by technology and its life cycle.
Some of the criteria includes:
The impact of a nominee’s contributions to online forums such as Microsoft Answers, TechNet, and MSDN
Wikis and online content
Conferences and user groups
Podcasts, Web sites, blogs, and social media
Articles and books.
Are you an expert in Azure security? Do you know someone who is? Then Nominate yourself or someone else to
become an Azure security MVP today!
Microsoft Services in Cybersecurity
1/15/2019 • 2 minutes to read • Edit Online
Microsoft Services provides a comprehensive approach to security, identity, and cybersecurity. They include an
array of Security and Identity services across strategy, planning, implementation, and ongoing support. These
services can help Enterprise customers implement security solutions that align with their strategic goals.
Microsoft services can create solutions that integrate, and enhance the latest security and identity capabilities of
our products to help protect your business and drive innovation.
Our team of technical professionals consists of highly trained experts who offer a wealth of security and identity
experience.
Learn more about services provided by Microsoft Services:
Security Risk Assessment
Dynamic Identity Framework Assessment
Offline Assessment for Active Directory Services
Enhanced Security Administration Environment
Azure AD Implementation Services
Securing Against Lateral Account Movement
Incident Response and Recovery
Learn more about Microsoft Services Security consulting services.
How to Log a Security Event Support Ticket
12/4/2017 • 2 minutes to read • Edit Online
3. After you select the Problem Type and Category, click the 'Start request' button. Provide the following
information to help us better understand the issue.
i. What is the problem and/or vulnerability?
ii. For vulnerabilities, please provide the CVE (mitre.org) or the filled out CVSS3 v3 calculator
(https://www.first.org/cvss/calculator/3.0).
iii. Is there a resolution or mitigation? If yes, then please provide the remediation steps.
iv. Do you have a message that you want to send to customers? We will work with you to craft an
appropriate message if applicable.
4. Submission confirmation - Once you have submitted your issue, we will acknowledge receipt within one
business day and assign your issue a priority and severity.
If you need to communicate with us about your issue, use the confirmation number in all
correspondence.
You can view progress on your issue at any time.
5. What happens next? Depending on the issue and severity, the following steps may be taken:
We will communicate the outcome of our assessment to you. Depending on the outcome, we may
remove or request that you modify your offering. In this event, we will work with you to ensure that
disruption to impacted customers is minimized.
We will work with you to help mitigate the impact of the incident/vulnerability for our mutual customers.
Pen Testing
1/4/2019 • 2 minutes to read • Edit Online
One of the benefits of using Azure for application testing and deployment is that you can quickly get environments
created. You don’t have to worry about requisitioning, acquiring, and “racking and stacking” your own on-premises
hardware.
This is great – but you still need to make sure you perform your normal security due diligence. One of the things
you need to do is penetration test the applications you deploy in Azure.
You might already know that Microsoft performs penetration testing of our Azure environment. This helps drive
Azure improvements.
We don’t pen test your application for you, but we do understand that you will want and need to perform pen
testing on your own applications. That’s a good thing, because when you enhance the security of your applications,
you help make the entire Azure ecosystem more secure.
What to do?
As of June 15, 2017, Microsoft no longer requires pre-approval to conduct a penetration tests against Azure
resources. Customers who wish to formally document upcoming penetration testing engagements against
Microsoft Azure are encouraged to fill out the Azure Service Penetration Testing Notification form. This process is
only related to Microsoft Azure, and not applicable to any other Microsoft Cloud Service.
IMPORTANT
While notifying Microsoft of pen testing activities is no longer required customers must still comply with the Microsoft Cloud
Unified Penetration Testing Rules of Engagement.
Next steps
Are you ready to get started with pen testing your applications hosted in Microsoft Azure? If so, then head on
over to the Penetration Testing Rules of Engagement and fill out the testing notification form.
Microsoft Threat Modeling Tool
1/16/2019 • 2 minutes to read • Edit Online
The Threat Modeling Tool is a core element of the Microsoft Security Development Lifecycle (SDL ). It allows
software architects to identify and mitigate potential security issues early, when they are relatively easy and cost-
effective to resolve. As a result, it greatly reduces the total cost of development. Also, we designed the tool with
non-security experts in mind, making threat modeling easier for all developers by providing clear guidance on
creating and analyzing threat models.
The tool enables anyone to:
Communicate about the security design of their systems
Analyze those designs for potential security issues using a proven methodology
Suggest and manage mitigations for security issues
Here are some tooling capabilities and innovations, just to name a few:
Automation: Guidance and feedback in drawing a model
STRIDE per Element: Guided analysis of threats and mitigations
Reporting: Security activities and testing in the verification phase
Unique Methodology: Enables users to better visualize and understand threats
Designed for Developers and Centered on Software: many approaches are centered on assets or
attackers. We are centered on software. We build on activities that all software developers and architects are
familiar with -- such as drawing pictures for their software architecture
Focused on Design Analysis: The term "threat modeling" can refer to either a requirements or a design
analysis technique. Sometimes, it refers to a complex blend of the two. The Microsoft SDL approach to threat
modeling is a focused design analysis technique
Next steps
The table below contains important links to get you started with the Threat Modeling Tool:
STEP DESCRIPTION
Resources
Here are a few older articles still relevant to threat modeling today:
Article on the Importance of Threat Modeling
Training Published by Trustworthy Computing
Check out what a few Threat Modeling Tool experts have done:
Threats Manager
Simone Curzi Security Blog
Getting started with the Threat Modeling Tool
1/16/2019 • 7 minutes to read • Edit Online
The Microsoft Threat Modeling Tool 2018 was released as GA in September 2018 as a free click-to-download.
The change in delivery mechanism allows us to push the latest improvements and bug fixes to customers each
time they open the tool, making it easier to maintain and use. This article takes you through the process of getting
started with the Microsoft SDL threat modeling approach and shows you how to use the tool to develop great
threat models as a backbone of your security process.
This article builds on existing knowledge of the SDL threat modeling approach. For a quick review, refer to Threat
Modeling Web Applications and an archived version of Uncover Security Flaws Using the STRIDE
Approach MSDN article published in 2006.
To quickly summarize, the approach involves creating a diagram, identifying threats, mitigating them and
validating each mitigation. Here’s a diagram that highlights this process:
Feedback, Suggestions and Issues Button Takes you the MSDN Forum for all things SDL. It gives you
an opportunity to read through what other users are doing,
along with workarounds and recommendations. If you still
can’t find what you’re looking for, email
[email protected] for our support team to help
you
Create a Model Opens a blank canvas for you to draw your diagram. Make
sure to select which template you’d like to use for your model
Template for New Models You must select which template to use before creating a
model. Our main template is the Azure Threat Model
Template, which contains Azure-specific stencils, threats and
mitigations. For generic models, select the SDL TM Knowledge
Base from the drop-down menu. Want to create your own
template or submit a new one for all users? Check out our
Template Repository GitHub Page to learn more
Getting Started Guide Opens the Microsoft Threat Modeling Tool main page
Template section
COMPONENT DETAILS
Create New Template Opens a blank template for you to build on. Unless you have
extensive knowledge in building templates from scratch, we
recommend you to build from existing ones
The Threat Modeling Tool team is constantly working to improve tool functionality and experience. A few minor
changes might take place over the course of the year, but all major changes require rewrites in the guide. Refer to it
often to ensure you get the latest announcements.
Building a model
In this section, we follow:
Cristina (a developer)
Ricardo (a program manager) and
Ashish (a tester)
They are going through the process of developing their first threat model.
Ricardo: Hi Cristina, I worked on the threat model diagram and wanted to make sure we got the details right.
Can you help me look it over? Cristina: Absolutely. Let’s take a look. Ricardo opens the tool and shares his
screen with Cristina.
Cristina: Ok, looks straightforward, but can you walk me through it? Ricardo: Sure! Here is the breakdown:
Our human user is drawn as an outside entity—a square
They’re sending commands to our Web server—the circle
The Web server is consulting a database (two parallel lines)
What Ricardo just showed Cristina is a DFD, short for Data Flow Diagram. The Threat Modeling Tool allows
users to specify trust boundaries, indicated by the red dotted lines, to show where different entities are in control.
For example, IT administrators require an Active Directory system for authentication purposes, so the Active
Directory is outside of their control.
Cristina: Looks right to me. What about the threats? Ricardo: Let me show you.
Analyzing threats
Once he clicks on the analysis view from the icon menu selection (file with magnifying glass), he is taken to a list of
generated threats the Threat Modeling Tool found based on the default template, which uses the SDL approach
called STRIDE (Spoofing, Tampering, Info Disclosure, Repudiation, Denial of Service and Elevation of
Privilege). The idea is that software comes under a predictable set of threats, which can be found using these 6
categories.
This approach is like securing your house by ensuring each door and window has a locking mechanism in place
before adding an alarm system or chasing after the thief.
Ricardo begins by selecting the first item on the list. Here’s what happens:
First, the interaction between the two stencils is enhanced
Second, additional information about the threat appears in the Threat Properties window
The generated threat helps him understand potential design flaws. The STRIDE categorization gives him an idea
on potential attack vectors, while the additional description tells him exactly what’s wrong, along with potential
ways to mitigate it. He can use editable fields to write notes in the justification details or change priority ratings
depending on his organization’s bug bar.
Azure templates have additional details to help users understand not only what’s wrong, but also how to fix it by
adding descriptions, examples and hyperlinks to Azure-specific documentation.
The description made him realize the importance of adding an authentication mechanism to prevent users from
being spoofed, revealing the first threat to be worked on. A few minutes into the discussion with Cristina, they
understood the importance of implementing access control and roles. Ricardo filled in some quick notes to make
sure these were implemented.
As Ricardo went into the threats under Information Disclosure, he realized the access control plan required some
read-only accounts for audit and report generation. He wondered whether this should be a new threat, but the
mitigations were the same, so he noted the threat accordingly. He also thought about information disclosure a bit
more and realized that the backup tapes were going to need encryption, a job for the operations team.
Threats not applicable to the design due to existing mitigations or security guarantees can be changed to “Not
Applicable” from the Status drop-down. There are three other choices: Not Started – default selection, Needs
Investigation – used to follow up on items and Mitigated – once it’s fully worked on.
Next Steps
Send your questions, comments and concerns to [email protected]. Download the Threat Modeling
Tool to get started.
Threat Modeling Tool feature overview
1/17/2019 • 5 minutes to read • Edit Online
The Threat Modeling Tool can help you with your threat modeling needs. For a basic introduction to the tool, see
Get started with the Threat Modeling Tool.
NOTE
The Threat Modeling Tool is updated frequently, so check this guide often to see our latest features and improvements.
To see the features currently available in the tool, use the threat model created by our team in the Get started
example.
Navigation
Before we discuss the built-in features, let's review the main components found in the tool.
Menu items
The experience is similar to other Microsoft products. Let's review the top-level menu items.
LABEL DETAILS
Edit Undo and redo actions, as well as copy, paste, and delete.
Design Opens the Design view, where you can create models.
Zoom in/Zoom out Zooms in and out of the diagram for a better view.
Canvas
The canvas is the space where you drag and drop elements. Drag and drop is the quickest and most efficient way
to build models. You can also right-click and select items from the menu to add generic versions of elements, as
shown:
Drop the stencil on the canvas
Notes/messages
COMPONENT DETAILS
Messages Internal tool logic that alerts users whenever there's an error,
such as no data flows between elements.
Element properties
Element properties vary by the elements you select. Apart from trust boundaries, all other elements contain three
general selections:
ELEMENT PROPERTY DETAILS
Reason for out of scope Justification field to let users know why out of scope was
selected.
Properties are changed under each element category. Select each element to inspect the available options. Or you
can open the template to learn more. Let's review the features.
Welcome screen
When you open the app, you see the Welcome screen.
Open a model
Hover over Open A Model to reveal two options: Open From This Computer and Open From OneDrive. The
first option opens the File Open screen. The second option takes you through the sign-in process for OneDrive.
After successful authentication, you can select folders and files.
Design view
When you open or create a new model, the Design view opens.
Add elements
You can add elements on the grid in two ways:
Drag and drop: Drag the desired element to the grid. Then use the element properties to provide additional
information.
Right-click: Right-click anywhere on the grid, and select items from the drop-down menu. A generic
representation of the element you select appears on the screen.
Connect elements
You can connect elements in two ways:
Drag and drop: Drag the desired dataflow to the grid, and connect both ends to the appropriate elements.
Click + Shift: Click the first element (sending data), press and hold the Shift key, and then select the second
element (receiving data). Right-click, and select Connect. If you use a bi-directional data flow, the order is not
as important.
Properties
To see the properties that can be modified on the stencils, select the stencil and the information populates
accordingly. The following example shows before and after a Database stencil is dragged onto the diagram:
Before
After
Messages
If you create a threat model and forget to connect data flows to elements, you get a notification. You can ignore the
message, or you can follow the instructions to fix the issue.
Notes
To add notes to your diagram, switch from the Messages tab to the Notes tab.
Analysis view
After you build your diagram, select the Analysis symbol (the magnifying glass) on the shortcuts toolbar to switch
to the Analysis view.
Generated threat selection
When you select a threat, you can use three distinct functions:
FEATURE INFORMATION
Read indicator The threat is marked as read, which helps you keep track
of the items you reviewed.
Priority change
You can change the priority level of each generated threat. Different colors make it easy to identify high-, medium-,
and low -priority threats.
Reports
After you finish changing priorities and updating the status of each generated threat, you can save the file and/or
print out a report. Go to Report > Create Full Report. Name the report, and you should see something similar to
the following image:
Next steps
Send your questions, comments and concerns to [email protected]. Download the Threat
Modeling Tool to get started.
To contribute a template for the community, go to our GitHub page.
Microsoft Threat Modeling Tool threats
1/16/2019 • 2 minutes to read • Edit Online
The Threat Modeling Tool is a core element of the Microsoft Security Development Lifecycle (SDL ). It allows
software architects to identify and mitigate potential security issues early, when they are relatively easy and cost-
effective to resolve. As a result, it greatly reduces the total cost of development. Also, we designed the tool with
non-security experts in mind, making threat modeling easier for all developers by providing clear guidance on
creating and analyzing threat models.
The Threat Modeling Tool helps you answer certain questions, such as the ones below:
How can an attacker change the authentication data?
What is the impact if an attacker can read the user profile data?
What happens if access is denied to the user profile database?
STRIDE model
To better help you formulate these kinds of pointed questions, Microsoft uses the STRIDE model, which
categorizes different types of threats and simplifies the overall security conversations.
CATEGORY DESCRIPTION
Denial of Service Denial of service (DoS) attacks deny service to valid users—for
example, by making a Web server temporarily unavailable or
unusable. You must protect against certain types of DoS
threats simply to improve system availability and reliability
CATEGORY DESCRIPTION
Elevation of Privilege An unprivileged user gains privileged access and thereby has
sufficient access to compromise or destroy the entire system.
Elevation of privilege threats include those situations in which
an attacker has effectively penetrated all system defenses and
become part of the trusted system itself, a dangerous
situation indeed
Next steps
Proceed to Threat Modeling Tool Mitigations to learn the different ways you can mitigate these threats with
Azure.
Threat Modeling Tool Releases
1/31/2019 • 2 minutes to read • Edit Online
The Microsoft Threat Modeling Tool is currently released as a free click-to-download application for Windows. This
delivery mechanism allows us to push the latest improvements and bug fixes to customers each time they open the
tool.
System Requirements
Supported Operating Systems
Microsoft Windows 10 Anniversary Update or later
.NET Version Required
.Net 4.7.1 or later
Additional Requirements
An Internet connection is required to receive updates to the tool and templates.
Release Notes
Microsoft Threat Modeling Tool GA Release Version 7.1.60126.1 - January 29 2019
Microsoft Threat Modeling Tool GA Release Version 7.1.51023.1 - November 1 2018
Microsoft Threat Modeling Tool GA Release Version 7.1.50911.2 - September 12 2018
Next steps
Download the latest version of the Microsoft Threat Modeling Tool.
Threat Modeling Tool GA release 7.1.50911.2 -
9/12/2018
1/16/2019 • 3 minutes to read • Edit Online
We are excited to announce the Microsoft Threat Modeling Tool is now available to download as a supported
generally available (GA) release. This release contains important privacy and security updates as well as bug fixes,
feature updates, and stability improvements. Existing users of the 2017 Preview version will be prompted to
update to the latest release through the ClickOnce technology upon opening the client. For new users of the tool,
click here to download the client.
With this release, we are ending support for the 2017 Preview and recommend all users of the Preview update to
the GA release. On or after October 15 2018, we will set the minimum required ClickOnce version for the Threat
Modeling Tool, and all Preview clients will be required to upgrade.
The Microsoft Threat Modeling Tool 2016, which is available from the Microsoft Download Center, remains
supported until October 1 2019 for critical security fixes only.
Feature changes
Azure stencil updates
Additional Azure stencils and their associated threats and mitigations have been added to the stencil set shipping
with this release. Significant changes were made in the focus areas of “Azure App Services”, “Azure Database
Offerings”, and “Azure Storage.”
Workaround
The user can click on the mitigation text and use the standard Windows zoom control (Crtl-Mouse Wheel Up) to
increase the magnification of that section.
Files in the “Recently Opened Models” section of the main window may fail to open
Issue
The “Open From OneDrive” feature of the Preview release has been removed. Users with “Recently Opened
Models” that were saved to OneDrive will receive the following error.
Workaround
Users of OneDrive are encouraged to use Microsoft’s OneDrive for Windows client to access their files stored on
OneDrive through the standard and “Open a model” dialog.
My organization uses the 2016 version of the tool, can I use the Azure stencil set?
Yes, you can! The Azure stencil set is available on github, and can be loaded in the 2016 version of the tool. To
create a new model with the Azure stencil set, use the “Template For New Models” dialog on the main menu
screen. TMT 2016 cannot render the links found in the “Possible Mitigations” fields of the Azure stencil set,
therefore you may see links displayed as HTML tags.
System requirements
Supported Operating Systems
Microsoft Windows 10
.NET Version Required
.Net 3.5.2
Additional Requirements
An Internet connection is required to receive updates to the tool as well as templates.
Next steps
Download the latest version of the Microsoft Threat Modeling Tool.
Threat Modeling Tool update release 7.1.51023.1 -
11/1/2018
1/16/2019 • 2 minutes to read • Edit Online
As originally noted in the GA release notes, we have released an update (7.1.51023.1) to the Microsoft Threat
Modeling Tool that will require users of the Preview version (preview clients with version < 7.1.50911.2) to
upgrade to the supported GA release. This release does not contain any new functionality or fixes.
Users of the Preview version will automatically download the upgrade when the client is opened. If you choose
not to install the new update, the Preview version of the tool will close.
Users of the GA version of the tool will be prompted to choose whether or not they want to upgrade.
Users of the 2016 version of the tool will be unaffected.
Feature changes
None
System requirements
Supported Operating Systems
Microsoft Windows 10
.NET Version Required
.Net 3.5.2
Additional Requirements
An Internet connection is required to receive updates to the tool as well as templates.
Next steps
Download the latest version of the Microsoft Threat Modeling Tool.
Threat Modeling Tool update release 7.1.60126.1 -
1/29/2019
1/30/2019 • 2 minutes to read • Edit Online
Version 7.1.60126.1 of the Microsoft Threat Modeling Tool was released on January 29 2019 and contains the
following changes:
The minimum required version of .NET has been increased to .Net 4.7.1.
The minimum required version of Windows has been increased to Windows 10 Anniversary Update due to the
.NET dependency.
A model validation toggle feature has been added to the tool's Options menu.
Several links in the Threat Properties were updated.
Minor UX changes to the tool's home screen.
The Threat Modeling Tool now inherits the TLS settings of the host operating system and is supported in
environments that require TLS 1.2 or greater.
Feature changes
Model validation option
Based on customer feedback, an option has been added to the tool to enable or disable the model validation.
Previously, if your template used a single unidirectional data flow between two objects, you may have received an
error message in the Messages frame stating: ObjectsName requires at least one 'Any'. Disabling model validation
will prevent these warnings from showing in the view.
The option to toggle model validation on and off can be found in the File->Settings->Options menu. The default
value for this setting is Disabled.
System requirements
Supported Operating Systems
Microsoft Windows 10 Anniversary Update or later
.NET Version Required
.Net 4.7.1 or later
Additional Requirements
An Internet connection is required to receive updates to the tool as well as templates.
Known issues
Unsupported systems
Issue
Users of Windows 10 systems that are unable to install .NET 4.7.1 or later, such as Windows 10 Enterprise LTSB
(version 1507), will be unable to open the tool after upgrading. These older versions of Windows are no longer
supported platforms for the Threat Modeling Tool, and should not install the latest update.
Workaround
Users of Windows 10 Enterprise LTSB (version 1507) that have installed the latest update can revert to the
previous version of the Threat Modeling Tool through the uninstall dialog in Apps & Features.
Next steps
Download the latest version of the Microsoft Threat Modeling Tool.
Microsoft Threat Modeling Tool mitigations
1/16/2019 • 2 minutes to read • Edit Online
The Threat Modeling Tool is a core element of the Microsoft Security Development Lifecycle (SDL ). It allows
software architects to identify and mitigate potential security issues early, when they are relatively easy and cost-
effective to resolve. As a result, it greatly reduces the total cost of development. Also, we designed the tool with
non-security experts in mind, making threat modeling easier for all developers by providing clear guidance on
creating and analyzing threat models.
Visit the Threat Modeling Tool to get started today!
Mitigation categories
The Threat Modeling Tool mitigations are categorized according to the Web Application Security Frame, which
consists of the following:
CATEGORY DESCRIPTION
Auditing and Logging Who did what and when? Auditing and logging refer to how
your application records security-related events
Communication Security Who are you talking to? Communication Security ensures all
communication done is as secure as possible
Configuration Management Who does your application run as? Which databases does it
connect to? How is your application administered? How are
these settings secured? Configuration management refers to
how your application handles these operational issues
Cryptography How are you keeping secrets (confidentiality)? How are you
tamper-proofing your data or libraries (integrity)? How are
you providing seeds for random values that must be
cryptographically strong? Cryptography refers to how your
application enforces confidentiality and integrity
Exception Management When a method call in your application fails, what does your
application do? How much do you reveal? Do you return
friendly error information to end users? Do you pass valuable
exception information back to the caller? Does your
application fail gracefully?
CATEGORY DESCRIPTION
Input Validation How do you know that the input your application receives is
valid and safe? Input validation refers to how your application
filters, scrubs, or rejects input before additional processing.
Consider constraining input through entry points and
encoding output through exit points. Do you trust data from
sources such as databases and file shares?
Sensitive Data How does your application handle sensitive data? Sensitive
data refers to how your application handles any data that
must be protected either in memory, over the network, or in
persistent stores
Session Management How does your application handle and protect user sessions?
A session refers to a series of related interactions between a
user and your Web application
Next steps
Visit Threat Modeling Tool Threats to learn more about the threat categories the tool uses to generate possible
design threats.
Security Frame: Auditing and Logging | Mitigations
1/28/2019 • 8 minutes to read • Edit Online
PRODUCT/SERVICE ARTICLE
Attributes N/A
References N/A
Attributes N/A
References N/A
Attributes N/A
References N/A
TITLE DETAILS
Ensure that the application does not log sensitive user data
TITLE DETAILS
Attributes N/A
References N/A
Steps Check that you do not log any sensitive data that a user
submits to your site. Check for intentional logging as well
as side effects caused by design issues. Examples of
sensitive data include:
User Credentials
Social Security number or other identifying information
Credit card numbers or other financial information
Health information
Private keys or other data that could be used to
decrypt encrypted information
System or application information that can be used to
more effectively attack the application
Attributes N/A
TITLE DETAILS
References N/A
Attributes N/A
References N/A
Attributes N/A
TITLE DETAILS
References N/A
References N/A
Component Database
Attributes N/A
Component Database
Attributes N/A
Steps For each storage account, one can enable Azure Storage
Analytics to perform logging and store metrics data. The
storage analytics logs provide important information such
as authentication method used by someone when they
access storage.
This can be really helpful if you are tightly guarding access
to storage. For example, in Blob Storage you can set all of
the containers to private and implement the use of an SAS
service throughout your applications. Then you can check
the logs regularly to see if your blobs are accessed using
the storage account keys, which may indicate a breach of
security, or if the blobs are public but they shouldn’t be.
Component WCF
Attributes N/A
Steps The lack of a proper audit trail after a security incident can
hamper forensic efforts. Windows Communication
Foundation (WCF) offers the ability to log successful
and/or failed authentication attempts.
Logging failed authentication attempts can warn
administrators of potential brute-force attacks. Similarly,
logging successful authentication events can provide a
useful audit trail when a legitimate account is
compromised. Enable WCF's service security audit feature
Example
The following is an example configuration with auditing enabled
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name=""NewBehavior"">
<serviceSecurityAudit auditLogLocation=""Default""
suppressAuditFailure=""false""
serviceAuthorizationAuditLevel=""SuccessAndFailure""
messageAuthenticationAuditLevel=""SuccessAndFailure"" />
...
</behavior>
</servicebehaviors>
</behaviors>
</system.serviceModel>
Implement sufficient Audit Failure Handling
TITLE DETAILS
Component WCF
Attributes N/A
Example
The <behavior/> element of the WCF configuration file below instructs WCF to not notify the application when
WCF fails to write to an audit log.
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceSecurityAudit auditLogLocation="Application"
suppressAuditFailure="true"
serviceAuthorizationAuditLevel="Success"
messageAuthenticationAuditLevel="Success" />
</behavior>
</serviceBehaviors>
</behaviors>
Configure WCF to notify the program whenever it is unable to write to an audit log. The program should have an
alternative notification scheme in place to alert the organization that audit trails are not being maintained.
Attributes N/A
References N/A
TITLE DETAILS
Steps Enable auditing and logging on Web APIs. Audit logs should
capture user context. Identify all important events and log
those events. Implement centralized logging
Attributes N/A
References N/A
Attributes N/A
PRODUCT/SERVICE ARTICLE
Azure Event Hub Use per device authentication credentials using SaS
tokens
Service Fabric Trust Boundary Restrict anonymous access to Service Fabric Cluster
Ensure that Service Fabric client-to-node certificate is
different from node-to-node certificate
Use AAD to authenticate clients to service fabric
clusters
Ensure that service fabric certificates are obtained from
an approved Certificate Authority (CA)
Machine Trust Boundary Ensure that deployed application's binaries are digitally
signed
PRODUCT/SERVICE ARTICLE
IoT Cloud Gateway Ensure that devices connecting to Cloud gateway are
authenticated
Use per-device authentication credentials
Azure Storage Ensure that only the required containers and blobs are
given anonymous read access
Grant limited access to objects in Azure storage using
SAS or SAP
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
References N/A
Attributes N/A
References N/A
Attributes N/A
References N/A
Details The first solution is to grant access only from a certain source
IP range to the administrative interface. If that solution would
not be possible than it is always recommended to enforce a
step-up or adaptive authentication for logging in into the
administrative interface
Attributes N/A
TITLE DETAILS
References N/A
Details The first thing is to verify that forgot password and other
recovery paths send a link including a time-limited
activation token rather than the password itself. Additional
authentication based on soft-tokens (e.g. SMS token,
native mobile applications, etc.) can be required as well
before the link is sent over. Second, you should not lock
out the users account whilst the process of getting a new
password is in progress.
This could lead to a Denial of service attack whenever an
attacker decides to intentionally lock out the users with an
automated attack. Third, whenever the new password
request was set in progress, the message you display
should be generalized in order to prevent username
enumeration. Fourth, always disallow the use of old
passwords and implement a strong password policy.
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
TITLE DETAILS
References N/A
Component Database
Component Database
Component Database
Attributes N/A
Component Database
Attributes N/A
TITLE DETAILS
Attributes N/A
Attributes N/A
Attributes N/A
Attributes N/A
References N/A
Component WCF
Attributes N/A
References MSDN
Example
The <netMsmqBinding/> element of the WCF configuration file below instructs WCF to disable authentication when
connecting to an MSMQ queue for message delivery.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""None"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
Configure MSMQ to require Windows Domain or Certificate authentication at all times for any incoming or
outgoing messages.
Example
The <netMsmqBinding/> element of the WCF configuration file below instructs WCF to enable certificate
authentication when connecting to an MSMQ queue. The client is authenticated using X.509 certificates. The client
certificate must be present in the certificate store of the server.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""Certificate"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
Component WCF
Example
<message clientCredentialType=""Certificate""/>
Component WCF
Example
<transport clientCredentialType=""Certificate""/>
Attributes N/A
Component Azure AD
TITLE DETAILS
Attributes N/A
Component Azure AD
Attributes N/A
Component Azure AD
Attributes N/A
Example
Example
Here is a sample implementation of the ITokenReplayCache interface. (Please customize and implement your
project-specific caching framework)
The implemented cache has to be referenced in OIDC options via the "TokenValidationParameters" property as
follows.
Please note that to test the effectiveness of this configuration, login into your local OIDC -protected application and
capture the request to "/signin-oidc" endpoint in fiddler. When the protection is not in place, replaying this
request in fiddler will set a new session cookie. When the request is replayed after the TokenReplayCache
protection is added, the application will throw an exception as follows:
SecurityTokenReplayDetectedException: IDX10228: The securityToken has previously been validated, securityToken:
'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ1......
Component Azure AD
Attributes N/A
References ADAL
Attributes N/A
References N/A
References N/A, Azure IoT hub with .NET, Getting Started wih IoT hub and
Node JS, Securing IoT with SAS and certificates, Git repository
Example
static DeviceClient deviceClient;
await deviceClient.SendEventAsync(message);
Example
Node.JS: Authentication
Symmetric key
Create a IoT hub on azure
Create an entry in the device identity registry
javascript var device = new iothub.Device(null); device.deviceId = <DeviceId > registry.create(device,
function(err, deviceInfo, res) {})
Create a simulated device
javascript var clientFromConnectionString = require('azure-iot-device-amqp').clientFromConnectionString; var
Message = require('azure-iot-device').Message; var connectionString = 'HostName=<HostName>DeviceId=
<DeviceId>SharedAccessKey=<SharedAccessKey>'; var client = clientFromConnectionString(connectionString);
#### SAS Token
Gets internally generated when using symmetric key but we can generate and use it explicitly as well
Define a protocol : var Http = require('azure-iot-device-http').Http;
Create a sas token : ```javascript resourceUri =
encodeURIComponent(resourceUri.toLowerCase()).toLowerCase(); var deviceName = ""; var expires =
(Date.now () / 1000) + expiresInMins * 60; var toSign = resourceUri + '\n' + expires; // using crypto var
decodedPassword = new Buffer(signingKey, 'base64').toString('binary'); const hmac =
crypto.createHmac('sha256', decodedPassword); hmac.update(toSign); var base64signature =
hmac.digest('base64'); var base64UriEncoded = encodeURIComponent(base64signature); // construct
authorization string var token = "SharedAccessSignature sr=" + resourceUri +
"%2fdevices%2f"+deviceName+"&sig="
base64UriEncoded + "&se=" + expires; if (policyName) token += "&skn="+policyName; return token; ```
Connect using sas token: javascript Client.fromSharedAccessSignature(sas, Http); #### Certificates
Generate a self signed X509 certificate using any tool such as OpenSSL to generate a .cert and .key files to
store the certificate and the key respectively
Provision a device that accepts secured connection using certificates.
javascript var connectionString = '<connectionString>'; var registry =
iothub.Registry.fromConnectionString(connectionString); var deviceJSON = {deviceId:"<deviceId>",
authentication: { x509Thumbprint: { primaryThumbprint: "<PrimaryThumbprint>", secondaryThumbprint: "
<SecondaryThumbprint>" } }} var device = deviceJSON; registry.create(device, function (err) {});
Connect a device using a certificate
javascript var Protocol = require('azure-iot-device-http').Http; var Client = require('azure-iot-
device').Client; var connectionString = 'HostName=<HostName>DeviceId=<DeviceId>x509=true'; var client =
Client.fromConnectionString(connectionString, Protocol); var options = { key: fs.readFileSync('./key.pem',
'utf8'), cert: fs.readFileSync('./server.crt', 'utf8') }; // Calling setOptions with the x509 certificate
and key (and optionally, passphrase) will configure the client //transport to use x509 when connecting to
IoT Hub client.setOptions(options); //call fn to execute after the connection is set up client.open(fn);
Ensure that only the required containers and blobs are given
anonymous read access
TITLE DETAILS
Attributes N/A
PRODUCT/SERVICE ARTICLE
Machine Trust Boundary Ensure that proper ACLs are configured to restrict
unauthorized access to data on the device
Ensure that sensitive user-specific application content
is stored in user-profile directory
Ensure that the deployed applications are run with
least privileges
Azure Event Hub Use a send-only permissions SAS Key for generating
device tokens
Do not use access tokens that provide direct access to
the Event Hub
Connect to Event Hub using SAS keys that have the
minimum permissions required
Service Fabric Trust Boundary Restrict client's access to cluster operations using RBAC
PRODUCT/SERVICE ARTICLE
Dynamics CRM Perform security modeling and use Field Level Security
where required
Attributes N/A
References N/A
Attributes N/A
References N/A
Ensure that the deployed applications are run with least privileges
TITLE DETAILS
Attributes N/A
References N/A
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
References N/A
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
References N/A
Example
SELECT data
FROM personaldata
WHERE userID=:id < - session var
Now an possible attacker can not tamper and change the application operation since the identifier for retrieving
the data is handled server-side.
Ensure that content and resources are not enumerable or accessible via
forceful browsing
TITLE DETAILS
Attributes N/A
References N/A
Component Database
Attributes N/A
Component Database
Please note that RLS as an out-of-the-box database feature is applicable only to SQL Server starting 2016 and
Azure SQL database. If the out-of-the-box RLS feature is not implemented, it should be ensured that data access is
restricted Using Views and Procedures
Component Database
Attributes N/A
Attributes N/A
Do not use access tokens that provide direct access to the Event Hub
TITLE DETAILS
Attributes N/A
Steps A token that grants direct access to the event hub should not
be given to the device. Using a least privileged token for the
device that gives access only to a publisher would help identify
and blacklist it if found to be a rogue or compromised device.
Connect to Event Hub using SAS keys that have the minimum
permissions required
TITLE DETAILS
Attributes N/A
Attributes N/A
References N/A
Attributes N/A
Perform security modeling and use Field Level Security where required
TITLE DETAILS
Attributes N/A
References N/A
Steps Perform security modeling and use Field Level Security where
required
Attributes N/A
References N/A
Attributes N/A
Attributes N/A
References N/A
TITLE DETAILS
Component WCF
Attributes N/A
Steps The system uses a weak class reference, which might allow
an attacker to execute unauthorized code. The program
references a user-defined class that is not uniquely
identified. When .NET loads this weakly identified class, the
CLR type loader searches for the class in the following
locations in the specified order:
1. If the assembly of the type is known, the loader
searches the configuration file's redirect locations, GAC,
the current assembly using configuration information,
and the application base directory
2. If the assembly is unknown, the loader searches the
current assembly, mscorlib, and the location returned
by the TypeResolve event handler
3. This CLR search order can be modified with hooks such
as the Type Forwarding mechanism and the
AppDomain.TypeResolve event
If an attacker exploits the CLR search order by creating an
alternative class with the same name and placing it in an
alternative location that the CLR will load first, the CLR will
unintentionally execute the attacker-supplied code
Example
The <behaviorExtensions/> element of the WCF configuration file below instructs WCF to add a custom behavior
class to a particular WCF extension.
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name=""myBehavior"" type=""MyBehavior"" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
Using fully qualified (strong) names uniquely identifies a type and further increases security of your system. Use
fully qualified assembly names when registering types in the machine.config and app.config files.
Example
The <behaviorExtensions/> element of the WCF configuration file below instructs WCF to add strongly-referenced
custom behavior class to a particular WCF extension.
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name=""myBehavior"" type=""Microsoft.ServiceModel.Samples.MyBehaviorSection, MyBehavior,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
Component WCF
Attributes N/A
Example
The following configuration instructs WCF to not check the authorization level of the client when executing the
service:
<behaviors>
<serviceBehaviors>
<behavior>
...
<serviceAuthorization principalPermissionMode=""None"" />
</behavior>
</serviceBehaviors>
</behaviors>
Use a service authorization scheme to verify that the caller of the service method is authorized to do so. WCF
provides two modes and allows the definition of a custom authorization scheme. The UseWindowsGroups mode
uses Windows roles and users and the UseAspNetRoles mode uses an ASP.NET role provider, such as SQL
Server, to authenticate.
Example
The following configuration instructs WCF to make sure that the client is part of the Administrators group before
executing the Add service:
<behaviors>
<serviceBehaviors>
<behavior>
...
<serviceAuthorization principalPermissionMode=""UseWindowsGroups"" />
</behavior>
</serviceBehaviors>
</behaviors>
Example
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class ApiAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
public async override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken
cancellationToken)
{
if (actionContext == null)
{
throw new Exception();
}
if (!string.IsNullOrEmpty(base.Roles))
{
bool isAuthorized = ValidateRoles(actionContext);
if (!isAuthorized)
{
HandleUnauthorizedRequest(actionContext);
}
}
base.OnAuthorization(actionContext);
}
All the controllers and action methods which needs to protected should be decorated with above attribute.
[ApiAuthorize]
public class CustomController : ApiController
{
//Application code goes here
}
Attributes N/A
References N/A
TITLE DETAILS
Steps The Device should authorize the caller to check if the caller
has the required permissions to perform the action
requested. For e.g. Lets say the device is a Smart Door
Lock that can be monitored from the cloud, plus it
provides functionalities like Remotely locking the door.
The Smart Door Lock provides unlocking functionality only
when someone physically comes near the door with a
Card. In this case, the implementation of the remote
command and control should be done in such a way that
it does not provide any functionality to unlock the door as
the cloud gateway is not authorized to send a command
to unlock the door.
Attributes N/A
References N/A
Steps The Field Gateway should authorize the caller to check if the
caller has the required permissions to perform the action
requested. For e.g. there should be different permissions for
an admin user interface/API used to configure a field gateway
v/s devices that connect to it.
Security Frame: Communication Security | Mitigations
12/6/2018 • 14 minutes to read • Edit Online
PRODUCT/SERVICE ARTICLE
Dynamics CRM Check service account privileges and check that the
custom Services or ASP.NET Pages respect CRM's
security
Identity Server Ensure that all traffic to Identity Server is over HTTPS
connection
Web API Force all traffic to Web APIs over HTTPS connection
PRODUCT/SERVICE ARTICLE
Azure Cache for Redis Ensure that communication to Azure Cache for Redis is
over SSL
Attributes N/A
Check service account privileges and check that the custom Services or
ASP.NET Pages respect CRM's security
TITLE DETAILS
Attributes N/A
References N/A
Steps Check service account privileges and check that the custom
Services or ASP.NET Pages respect CRM's security
References Moving data between On Prem and Azure Data Factory, Data
management gateway
Attributes N/A
Attributes N/A
References N/A
Steps Applications that use SSL, TLS, or DTLS must fully verify
the X.509 certificates of the entities they connect to. This
includes verification of the certificates for:
Domain name
Validity dates (both beginning and expiration dates)
Revocation status
Usage (for example, Server Authentication for servers,
Client Authentication for clients)
Trust chain. Certificates must chain to a root
certification authority (CA) that is trusted by the
platform or explicitly configured by the administrator
Key length of certificate's public key must be >2048
bits
Hashing algorithm must be SHA256 and above
Steps By default, Azure already enables HTTPS for every app with a
wildcard certificate for the *.azurewebsites.net domain.
However, like all wildcard domains, it is not as secure as using
a custom domain with own certificate Refer. It is
recommended to enable SSL for the custom domain which the
deployed app will be accessed through
Example
The following example contains a basic URL Rewrite rule that forces all incoming traffic to use HTTPS
This rule works by returning an HTTP status code of 301 (permanent redirect) when the user requests a page
using HTTP. The 301 redirects the request to the same URL as the visitor requested, but replaces the HTTP portion
of the request with HTTPS. For example, HTTP://contoso.com would be redirected to HTTPS://contoso.com.
Attributes N/A
Component Database
Component Database
Attributes N/A
References Azure File Storage, Azure File Storage SMB Support for
Windows Clients
TITLE DETAILS
Steps Azure File Storage supports HTTPS when using the REST API,
but is more commonly used as an SMB file share attached to a
VM. SMB 2.1 does not support encryption, so connections are
only allowed within the same region in Azure. However, SMB
3.0 supports encryption, and can be used with Windows
Server 2012 R2, Windows 8, Windows 8.1, and Windows 10,
allowing cross-region access and even access on the desktop.
Attributes N/A
Example
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
namespace CertificatePinningExample
{
class CertificatePinningExample
{
/* Note: In this example, we're hardcoding a the certificate's public key and algorithm for
demonstration purposes. In a real-world application, this should be stored in a secure
configuration area that can be updated as needed. */
try
{
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine($"Success, HTTP status code: {response.StatusCode}");
}
catch(Exception ex)
{
Console.WriteLine($"Failure, {ex.Message}");
}
Console.WriteLine("Press any key to end.");
Console.ReadKey();
}
}
}
Component WCF
Attributes N/A
Component WCF
Attributes N/A
References MSDN
TITLE DETAILS
Example
Configuring the service and the operation to only sign the message is shown in the following examples. Service
Contract Example of ProtectionLevel.Sign : The following is an example of using ProtectionLevel.Sign at the
Service Contract level:
[ServiceContract(Protection Level=ProtectionLevel.Sign]
public interface IService
{
string GetData(int value);
}
Example
Operation Contract Example of ProtectionLevel.Sign (for Granular Control): The following is an example of using
ProtectionLevel.Sign at the OperationContract level:
[OperationContract(ProtectionLevel=ProtectionLevel.Sign]
string GetData(int value);
Component WCF
Attributes N/A
TITLE DETAILS
References MSDN
Attributes N/A
Example
The following code shows a Web API authentication filter that checks for SSL:
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
Add this filter to any Web API actions that require SSL:
Attributes N/A
Steps Redis server does not support SSL out of the box, but Azure
Cache for Redis does. If you are connecting to Azure Cache for
Redis and your client supports SSL, like StackExchange.Redis,
then you should use SSL. By default non-SSL port is disabled
for new Azure Cache for Redis instances. Ensure that the
secure defaults are not changed unless there is a dependency
on SSL support for redis clients.
Please note that Redis is designed to be accessed by trusted clients inside trusted environments. This means that
usually it is not a good idea to expose the Redis instance directly to the internet or, in general, to an environment
where untrusted clients can directly access the Redis TCP port or UNIX socket.
Attributes N/A
References N/A
Attributes N/A
PRODUCT/SERVICE ARTICLE
Web API Ensure that only trusted origins are allowed if CORS is
enabled on ASP.NET Web API
Encrypt sections of Web API's configuration files that
contain sensitive data
IoT Device Ensure that all admin interfaces are secured with
strong credentials
Ensure that unknown code cannot execute on devices
Encrypt OS and additional partitions of IoT Device with
bit-locker
Ensure that only the minimum services/features are
enabled on devices
IoT Cloud Gateway Ensure that the Cloud Gateway implements a process
to keep the connected devices firmware up to date
PRODUCT/SERVICE ARTICLE
Machine Trust Boundary Ensure that devices have end-point security controls
configured as per organizational policies
Attributes N/A
Example
Example policy:
This policy allows scripts to load only from the web application’s server and google analytics server. Scripts loaded
from any other site will be rejected. When CSP is enabled on a website, the following features are automatically
disabled to mitigate XSS attacks.
Example
Inline scripts will not execute. Following are examples of inline scripts
Attributes N/A
Attributes N/A
TITLE DETAILS
Attributes N/A
References N/A
Attributes N/A
Example
The X-FRAME -OPTIONS header can be set via IIS web.config. Web.config code snippet for sites that should never
be framed:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Example
Web.config code for sites that should only be framed by pages in the same domain:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Attributes N/A
References N/A
TITLE DETAILS
Example
If access to Web.config is available, then CORS can be added through the following code:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="http://example.com" />
</customHeaders>
</httpProtocol>
Example
If access to web.config is not available, then CORS can be configured by adding the following CSharp code:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "http://example.com")
Please note that it is critical to ensure that the list of origins in "Access-Control-Allow -Origin" attribute is set to a
finite and trusted set of origins. Failing to configure this inappropriately (e.g., setting the value as '*') will allow
malicious sites to trigger cross origin requests to the web application >without any restrictions, thereby making the
application vulnerable to CSRF attacks.
Attributes N/A
Example
However, this feature can be disabled at page level:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Please note that Request Validation feature is not supported, and is not part of MVC6 pipeline.
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
Example
Add the header in the web.config file if the application is hosted by Internet Information Services (IIS ) 7 onwards.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Example
Add the header through the global Application_BeginRequest
Example
Implement custom HTTP module
Example
You can enable the required header only for specific pages by adding it to individual responses:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Component Database
Attributes N/A
Example
In the App_Start/WebApiConfig.cs, add the following code to the WebApiConfig.Register method
using System.Web.Http;
namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Example
EnableCors attribute can be applied to action methods in a controller as follows:
public class ResourcesController : ApiController
{
[EnableCors("http://localhost:55912", // Origin
null, // Request headers
"GET", // HTTP methods
"bar", // Response headers
SupportsCredentials=true // Allow credentials
)]
public HttpResponseMessage Get(int id)
{
var resp = Request.CreateResponse(HttpStatusCode.NoContent);
resp.Headers.Add("bar", "a bar value");
return resp;
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"PUT", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"POST", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
}
Please note that it is critical to ensure that the list of origins in EnableCors attribute is set to a finite and trusted set
of origins. Failing to configure this inappropriately (e.g., setting the value as '*') will allow malicious sites to trigger
cross origin requests to the API without any restrictions, >thereby making the API vulnerable to CSRF attacks.
EnableCors can be decorated at controller level.
Example
To disable CORS on a particular method in a class, the DisableCors attribute can be used as shown below:
Attributes N/A
Approach-1 Enabling CORS with middleware: To enable CORS for the entire application add the CORS
middleware to the request pipeline using the UseCors extension method. A cross-origin policy can be specified
when adding the CORS middleware using the CorsPolicyBuilder class. There are two ways to do this:
Example
The first is to call UseCors with a lambda. The lambda takes a CorsPolicyBuilder object:
Example
The second is to define one or more named CORS policies, and then select the policy by name at run time.
Approach-2 Enabling CORS in MVC: Developers can alternatively use MVC to apply specific CORS per action,
per controller, or globally for all controllers.
Example
Per action: To specify a CORS policy for a specific action add the [EnableCors] attribute to the action. Specify the
policy name.
Example
Per controller:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Example
Globally:
Please note that it is critical to ensure that the list of origins in EnableCors attribute is set to a finite and trusted set
of origins. Failing to configure this inappropriately (e.g., setting the value as '*') will allow malicious sites to trigger
cross origin requests to the API without any restrictions, >thereby making the API vulnerable to CSRF attacks.
Example
To disable CORS for a controller or action, use the [DisableCors] attribute.
[DisableCors]
public IActionResult About()
{
return View();
}
Attributes N/A
Ensure that all admin interfaces are secured with strong credentials
TITLE DETAILS
Attributes N/A
References N/A
Attributes N/A
Steps UEFI Secure Boot restricts the system to only allow execution
of binaries signed by a specified authority. This feature
prevents unknown code from being executed on the platform
and potentially weakening the security posture of it. Enable
UEFI Secure Boot and restrict the list of certificate authorities
that are trusted for signing code. Sign all code that is
deployed on the device using one of the trusted authorities.
Attributes N/A
References N/A
Attributes N/A
References N/A
Attributes N/A
References N/A
Ensure that the default login credentials of the field gateway are
changed during installation
TITLE DETAILS
Attributes N/A
References N/A
Steps Ensure that the default login credentials of the field gateway
are changed during installation
Steps LWM2M is a protocol from the Open Mobile Alliance for IoT
Device Management. Azure IoT device management allows to
interact with physical devices using device jobs. Ensure that
the Cloud Gateway implements a process to routinely keep
the device and other configuration data up to date using
Azure IoT Hub Device Management.
Attributes N/A
References N/A
Attributes N/A
Attributes N/A
Component WCF
Attributes N/A
Example
The following is an example configuration with throttling enabled:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]"
maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
Component WCF
Attributes N/A
Steps Metadata can help attackers learn about the system and plan
a form of attack. WCF services can be configured to expose
metadata. Metadata gives detailed service description
information and should not be broadcast in production
environments. The HttpGetEnabled / HttpsGetEnabled
properties of the ServiceMetaData class defines whether a
service will expose the metadata
Example
The code below instructs WCF to broadcast a service's metadata
Do not broadcast service metadata in a production environment. Set the HttpGetEnabled / HttpsGetEnabled
properties of the ServiceMetaData class to false.
Example
The code below instructs WCF to not broadcast a service's metadata.
PRODUCT/SERVICE ARTICLE
Web Application Use only approved symmetric block ciphers and key
lengths
Use approved block cipher modes and initialization
vectors for symmetric ciphers
Use approved asymmetric algorithms, key lengths, and
padding
Use approved random number generators
Do not use symmetric stream ciphers
Use approved MAC/HMAC/keyed hash algorithms
Use only approved cryptographic hash functions
Dynamics CRM Mobile Client Ensure a device management policy is in place that
requires a use PIN and allows remote wiping
Dynamics CRM Outlook Client Ensure a device management policy is in place that
requires a PIN/password/auto lock and encrypts all
data (e.g. BitLocker)
Identity Server Ensure that signing keys are rolled over when using
Identity Server
Ensure that cryptographically strong client ID, client
secret are used in Identity Server
Attributes N/A
References N/A
Attributes N/A
References N/A
Attributes N/A
TITLE DETAILS
References N/A
Attributes N/A
TITLE DETAILS
References N/A
Attributes N/A
References N/A
Attributes N/A
References N/A
Attributes N/A
References N/A
TITLE DETAILS
Component Database
Attributes N/A
Component Database
Attributes N/A
Component Database
Attributes N/A
Component Database
Attributes N/A
Component Database
References TPM on Windows IoT Core, Set up TPM on Windows IoT Core,
Azure IoT Device SDK TPM
Example
As can be seen, the device primary key is not present in the code. Instead, it is stored in the TPM at slot 0. TPM
device generates a short-lived SAS token that is then used to connect to the IoT Hub.
References N/A
TITLE DETAILS
Attributes N/A
References N/A
Attributes N/A
References N/A
Ensure that signing keys are rolled over when using Identity Server
TITLE DETAILS
Attributes N/A
Steps Ensure that signing keys are rolled over when using Identity
Server. The link in the references section explains how this
should be planned without causing outages to applications
relying on Identity Server.
Ensure that cryptographically strong client ID, client secret are used in
Identity Server
TITLE DETAILS
Attributes N/A
References N/A
PRODUCT/SERVICE ARTICLE
Component WCF
Attributes N/A
Example
The following configuration file includes the <serviceDebug> tag:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name=""MyServiceBehavior"">
<serviceDebug includeExceptionDetailInFaults=""True"" httpHelpPageEnabled=""True""/>
...
Disable debugging information in the service. This can be accomplished by removing the <serviceDebug> tag from
your application's configuration file.
Component WCF
Attributes N/A
Example
For further control on the exception response, the HttpResponseMessage class can be used as shown below:
To catch unhandled exceptions that are not of the type HttpResponseException , Exception Filters can be used.
Exception filters implement the System.Web.Http.Filters.IExceptionFilter interface. The simplest way to write an
exception filter is to derive from the System.Web.Http.Filters.ExceptionFilterAttribute class and override the
OnException method.
Example
Here is a filter that converts NotImplementedException exceptions into HTTP status code 501, Not Implemented :
namespace ProductStore.Filters
{
using System;
using System.Net;
using System.Net.Http;
using System.Web.Http.Filters;
Example
To apply the filter to all of the actions on a controller , add the filter as an attribute to the controller class:
[NotImplExceptionFilter]
public class ProductsController : ApiController
{
// ...
}
Example
To apply the filter globally to all Web API controllers, add an instance of the filter to the
GlobalConfiguration.Configuration.Filters collection. Exception filters in this collection apply to any Web API
controller action.
GlobalConfiguration.Configuration.Filters.Add(
new ProductStore.NotImplExceptionFilterAttribute());
Example
For model validation, the model state can be passed to CreateErrorResponse method as shown below:
Check the links in the references section for additional details about exceptional handling and model validation in
ASP.Net Web API
Attributes N/A
References N/A
Attributes N/A
Attributes N/A
Attributes N/A
Example
public static bool ValidateDomain(string pathToValidate, Uri currentUrl)
{
try
{
if (!string.IsNullOrWhiteSpace(pathToValidate))
{
var domain = RetrieveDomain(currentUrl);
var replyPath = new Uri(pathToValidate);
var replyDomain = RetrieveDomain(replyPath);
return false;
}
}
return true;
}
catch (UriFormatException ex)
{
LogHelper.LogException("Utilities:ValidateDomain", ex);
return true;
}
}
The above method will always return True, if some exception happens. If the end user provides a malformed URL,
that the browser respects, but the Uri() constructor doesn't, this will throw an exception, and the victim will be
taken to the valid but malformed URL.
Security Frame: Input Validation | Mitigations
1/14/2019 • 31 minutes to read • Edit Online
PRODUCT/SERVICE ARTICLE
Disable XSLT scripting for all transforms using untrusted style sheets
TITLE DETAILS
Attributes N/A
Example
Example
If you are using MSXML 6.0, XSLT scripting is disabled by default; however, you must ensure that it has not been
explicitly enabled through the XML DOM object property AllowXsltScript.
Example
If you are using MSXML 5 or below, XSLT scripting is enabled by default and you must explicitly disable it. Set the
XML DOM object property AllowXsltScript to false.
Ensure that each page that could contain user controllable content
opts out of automatic MIME sniffing
TITLE DETAILS
Attributes N/A
TITLE DETAILS
Example
To enable the required header globally for all pages in the application, you can do one of the following:
Add the header in the web.config file if the application is hosted by Internet Information Services (IIS ) 7
<system.webServer>
<httpProtocol>
<customHeaders>
<add name=""X-Content-Type-Options"" value=""nosniff""/>
</customHeaders>
</httpProtocol>
</system.webServer>
}
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += newEventHandler(context_PreSendRequestHeaders);
}
#endregion
void context_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
if (application == null)
return;
if (application.Response.Headers[""X-Content-Type-Options ""] != null)
return;
application.Response.Headers.Add(""X-Content-Type-Options "", ""nosniff"");
}
}
You can enable the required header only for specific pages by adding it to individual responses:
this.Response.Headers[""X-Content-Type-Options""] = ""nosniff"";
Attributes N/A
Example
For .NET Framework code, you can use the following approaches:
// for .NET 4
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Prohibit;
XmlReader reader = XmlReader.Create(stream, settings);
Note that the default value of ProhibitDtd in XmlReaderSettings is true, but in XmlTextReader it is false. If you are
using XmlReaderSettings, you do not need to set ProhibitDtd to true explicitly, but it is recommended for safety
sake that you do. Also note that the XmlDocument class allows entity resolution by default.
Example
To disable entity resolution for XmlDocuments, use the XmlDocument.Load(XmlReader) overload of the Load method
and set the appropriate properties in the XmlReader argument to disable resolution, as illustrated in the following
code:
Example
If you need to resolve inline entities but do not need to resolve external entities, set the
XmlReaderSettings.XmlResolver property to null. For example:
Note that in MSXML6, ProhibitDTD is set to true (disabling DTD processing) by default. For Apple OSX/iOS code,
there are two XML parsers you can use: NSXMLParser and libXML2.
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
Example
For the last point regarding file format signature validation, refer to the class below for details:
ext = ext.ToUpperInvariant();
return true;
}
if (!fileSignature.ContainsKey(ext))
{
return true;
}
return flag;
}
Ensure that type-safe parameters are used in Web Application for data
access
TITLE DETAILS
Attributes N/A
References N/A
Steps If you use the Parameters collection, SQL treats the input
is as a literal value rather then as executable code. The
Parameters collection can be used to enforce type and
length constraints on input data. Values outside of the
range trigger an exception. If type-safe SQL parameters
are not used, attackers might be able to execute injection
attacks that are embedded in the unfiltered input.
Use type safe parameters when constructing SQL queries
to avoid possible SQL injection attacks that can occur with
unfiltered input. You can use type safe parameters with
stored procedures and with dynamic SQL statements.
Parameters are treated as literal values by the database
and not as executable code. Parameters are also checked
for type and length.
Example
The following code shows how to use type safe parameters with the SqlParameterCollection when calling a stored
procedure.
using System.Data;
using System.Data.SqlClient;
In the preceding code example, the input value cannot be longer than 11 characters. If the data does not conform
to the type or length defined by the parameter, the SqlParameter class throws an exception.
Attributes N/A
Attributes N/A
Example
* Encoder.HtmlEncode
* Encoder.HtmlAttributeEncode
* Encoder.JavaScriptEncode
* Encoder.UrlEncode
* Encoder.VisualBasicScriptEncode
* Encoder.XmlEncode
* Encoder.XmlAttributeEncode
* Encoder.CssEncode
* Encoder.LdapEncode
Attributes N/A
TITLE DETAILS
Attributes N/A
Steps Identify all static markup tags that you want to use. A
common practice is to restrict formatting to safe HTML
elements, such as <b> (bold) and <i> (italic).
Before writing the data, HTML-encode it. This makes any
malicious script safe by causing it to be handled as text,
not as executable code.
1. Disable ASP.NET request validation by the adding the
ValidateRequest="false" attribute to the @ Page
directive
2. Encode the string input with the HtmlEncode method
3. Use a StringBuilder and call its Replace method to
selectively remove the encoding on the HTML
elements that you want to permit
The page-in the references disables ASP.NET request
validation by setting ValidateRequest="false" . It
HTML-encodes the input and selectively allows the <b>
and <i> Alternatively, a .NET library for HTML
sanitization may also be used.
HtmlSanitizer is a .NET library for cleaning HTML
fragments and documents from constructs that can lead
to XSS attacks. It uses AngleSharp to parse, manipulate,
and render HTML and CSS. HtmlSanitizer can be installed
as a NuGet package, and the user input can be passed
through relevant HTML or CSS sanitization methods, as
applicable, on the server side. Please note that Sanitization
as a security control should be considered only as a last
option.
Input validation and Output Encoding are considered
better security controls.
Attributes N/A
References N/A
Example
Following are insecure examples:
document.getElementByID("div1").innerHtml = value;
$("#userName").html(res.Name);
return $('<div/>').html(value)
$('body').append(resHTML);
Don't use innerHtml ; instead use innerText . Similarly, instead of $("#elm").html() , use $("#elm").text()
Validate all redirects within the application are closed or done safely
TITLE DETAILS
Attributes N/A
Attributes N/A
TITLE DETAILS
Steps For methods that just accept primitive data type, and not
models as argument,input validation using Regular Expression
should be done. Here Regex.IsMatch should be used with a
valid regex pattern. If the input doesn't match the specified
Regular Expression, control should not proceed further, and an
adequate warning regarding validation failure should be
displayed.
Attributes N/A
Example
For example, the following configuration will throw a RegexMatchTimeoutException, if the processing takes more
than 5 seconds:
Attributes N/A
TITLE DETAILS
References N/A
Example
Following is an insecure example:
<div class="form-group">
@Html.Raw(Model.AccountConfirmText)
</div>
<div class="form-group">
@Html.Raw(Model.PaymentConfirmText)
</div>
</div>
Do not use Html.Raw() unless you need to display markup. This method does not perform output encoding
implicitly. Use other ASP.NET helpers e.g., @Html.DisplayFor()
Component Database
Attributes N/A
References N/A
Example
Following is an example of insecure dynamic Stored Procedure:
CREATE PROCEDURE [dbo].[uspGetProductsByCriteria]
(
@productName nvarchar(200) = NULL,
@startPrice float = NULL,
@endPrice float = NULL
)
AS
BEGIN
DECLARE @sql nvarchar(max)
SELECT @sql = ' SELECT ProductID, ProductName, Description, UnitPrice, ImagePath' +
' FROM dbo.Products WHERE 1 = 1 '
PRINT @sql
IF @productName IS NOT NULL
SELECT @sql = @sql + ' AND ProductName LIKE ''%' + @productName + '%'''
IF @startPrice IS NOT NULL
SELECT @sql = @sql + ' AND UnitPrice > ''' + CONVERT(VARCHAR(10),@startPrice) + ''''
IF @endPrice IS NOT NULL
SELECT @sql = @sql + ' AND UnitPrice < ''' + CONVERT(VARCHAR(10),@endPrice) + ''''
PRINT @sql
EXEC(@sql)
END
Example
Following is the same stored procedure implemented securely:
Attributes N/A
Example
The following code demonstrates the same:
using System.ComponentModel.DataAnnotations;
namespace MyApi.Models
{
public class Product
{
public int Id { get; set; }
[Required]
[RegularExpression(@"^[a-zA-Z0-9]*$", ErrorMessage="Only alphanumeric characters are allowed.")]
public string Name { get; set; }
public decimal Price { get; set; }
[Range(0, 999)]
public double Weight { get; set; }
}
}
Example
In the action method of the API controllers, validity of the model has to be explicitly checked as shown below:
namespace MyApi.Controllers
{
public class ProductsController : ApiController
{
public HttpResponseMessage Post(Product product)
{
if (ModelState.IsValid)
{
// Do something with the product (not shown).
Attributes N/A
Steps For methods that just accept primitive data type, and not
models as argument,input validation using Regular Expression
should be done. Here Regex.IsMatch should be used with a
valid regex pattern. If the input doesn't match the specified
Regular Expression, control should not proceed further, and an
adequate warning regarding validation failure should be
displayed.
Ensure that type-safe parameters are used in Web API for data access
TITLE DETAILS
Attributes N/A
References N/A
Steps If you use the Parameters collection, SQL treats the input
is as a literal value rather then as executable code. The
Parameters collection can be used to enforce type and
length constraints on input data. Values outside of the
range trigger an exception. If type-safe SQL parameters
are not used, attackers might be able to execute injection
attacks that are embedded in the unfiltered input.
Use type safe parameters when constructing SQL queries
to avoid possible SQL injection attacks that can occur with
unfiltered input. You can use type safe parameters with
stored procedures and with dynamic SQL statements.
Parameters are treated as literal values by the database
and not as executable code. Parameters are also checked
for type and length.
Example
The following code shows how to use type safe parameters with the SqlParameterCollection when calling a stored
procedure.
using System.Data;
using System.Data.SqlClient;
In the preceding code example, the input value cannot be longer than 11 characters. If the data does not conform
to the type or length defined by the parameter, the SqlParameter class throws an exception.
Attributes N/A
Component WCF
Attributes N/A
References MSDN
TITLE DETAILS
Component WCF
Attributes N/A
References MSDN
TITLE DETAILS
PRODUCT/SERVICE ARTICLE
Machine Trust Boundary Ensure that binaries are obfuscated if they contain
sensitive information
Consider using Encrypted File System (EFS) is used to
protect confidential user-specific data
Ensure that sensitive data stored by the application on
the file system is encrypted
Web API Ensure that sensitive data relevant to Web API is not
stored in browser's storage
Azure IaaS VM Trust Boundary Use Azure Disk Encryption to encrypt disks used by
Virtual Machines
Azure Storage Use Azure Storage Service Encryption (SSE) for Data at
Rest (Preview)
Use Client-Side Encryption to store sensitive data in
Azure Storage
Attributes N/A
References N/A
Attributes N/A
References N/A
TITLE DETAILS
Ensure that sensitive data stored by the application on the file system is
encrypted
TITLE DETAILS
Attributes N/A
References N/A
Steps Ensure that sensitive data stored by the application on the file
system is encrypted (e.g., using DPAPI), if EFS cannot be
enforced
Attributes N/A
References N/A
Example
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
<add name="Pragma" value="no-cache" />
<add name="Expires" value="-1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Example
This may be implemented through a filter. Following example may be used:
var attributes =
filterContext.ActionDescriptor.GetCustomAttributes(typeof(System.Web.Mvc.OutputCacheAttribute), false);
if (attributes == null || **Attributes**.Count() == 0)
{
filterContext.HttpContext.Response.Cache.SetNoStore();
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
if (!filterContext.IsChildAction)
{
filterContext.HttpContext.Response.AppendHeader("Pragma", "no-cache");
}
}
base.OnActionExecuting(filterContext);
}
Attributes N/A
Attributes N/A
Example
Attributes N/A
References N/A
Component Database
Component Database
TITLE DETAILS
Attributes N/A
Component Database
Component Database
Attributes N/A
Component Database
Steps SQL Server has the ability to encrypt the data while creating a
backup. By specifying the encryption algorithm and the
encryptor (a Certificate or Asymmetric Key) when creating a
backup, one can create an encrypted backup file.
References N/A
TITLE DETAILS
Example
The below JavaScript snippet is from a custom authentication library which stores authentication artifacts in local
storage. Such implementations should be avoided.
ns.AuthHelper.Authenticate = function () {
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: ns.Configurations.Tenant,
clientId: ns.Configurations.AADApplicationClientID,
postLogoutRedirectUri: window.location.origin,
cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost.
};
Attributes N/A
References N/A
Attributes N/A
Attributes N/A
References N/A
Attributes N/A
References N/A
Train users on the risks associated with the Dynamics CRM Share
feature and good security practices
TITLE DETAILS
Attributes N/A
References N/A
Steps Train users on the risks associated with the Dynamics CRM
Share feature and good security practices
Attributes N/A
References N/A
Use Azure Storage Service Encryption (SSE) for Data at Rest (Preview)
TITLE DETAILS
Attributes N/A
TITLE DETAILS
Steps The Azure Storage Client Library for .NET Nuget package
supports encrypting data within client applications before
uploading to Azure Storage, and decrypting data while
downloading to the client. The library also supports
integration with Azure Key Vault for storage account key
management. Here is a brief description of how client side
encryption works:
The Azure Storage client SDK generates a content
encryption key (CEK), which is a one-time-use
symmetric key
Customer data is encrypted using this CEK
The CEK is then wrapped (encrypted) using the key
encryption key (KEK). The KEK is identified by a key
identifier and can be an asymmetric key pair or a
symmetric key and can be managed locally or stored in
Azure Key Vault. The Storage client itself never has
access to the KEK. It just invokes the key wrapping
algorithm that is provided by Key Vault. Customers can
choose to use custom providers for key
wrapping/unwrapping if they want
The encrypted data is then uploaded to the Azure
Storage service. Check the links in the references
section for low-level implementation details.
Attributes N/A
Example
Intune can be configured with following security policies to safeguard sensitive data:
Example
If the application is not an enterprise application, then use platform provided keystore, keychains to store
encryption keys, using which cryptographic operation may be performed on the file system. Following code
snippet shows how to access key from keychain using xamarin:
return _Key;
}
}
Attributes N/A
Component WCF
Attributes N/A
References Fortify
Example
The following WCF service provider configuration uses the UsernameToken:
<security mode="Message">
<message clientCredentialType="UserName" />
Component WCF
Example
The following configuration sets the security mode to None.
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name=""MyBinding"">
<security mode=""None""/>
</binding>
</bindings>
</system.serviceModel>
Example
Security Mode Across all service bindings there are five possible security modes:
None. Turns security off.
Transport. Uses transport security for mutual authentication and message protection.
Message. Uses message security for mutual authentication and message protection.
Both. Allows you to supply settings for transport and message-level security (only MSMQ supports this).
TransportWithMessageCredential. Credentials are passed with the message and message protection and server
authentication are provided by the transport layer.
TransportCredentialOnly. Client credentials are passed with the transport layer and no message protection is
applied. Use transport and message security to protect the integrity and confidentiality of messages. The
configuration below tells the service to use transport security with message credentials.
<system.serviceModel> <bindings> <wsHttpBinding> <binding name=""MyBinding""> <security
mode=""TransportWithMessageCredential""/> <message clientCredentialType=""Windows""/> </binding> </bindings>
</system.serviceModel>
Security Frame: Session Management
11/7/2018 • 14 minutes to read • Edit Online
PRODUCT/SERVICE ARTICLE
Component Azure AD
Attributes N/A
References N/A
TITLE DETAILS
Example
HttpContext.GetOwinContext().Authentication.SignOut(OpenIdConnectAuthenticationDefaults.AuthenticationType,
CookieAuthenticationDefaults.AuthenticationType)
Example
It should also destroy user's session by calling Session.Abandon() method. Following method shows secure
implementation of user logout:
[HttpPost]
[ValidateAntiForgeryToken]
public void LogOff()
{
string userObjectID =
ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Authority + TenantId, new
NaiveSessionCache(userObjectID));
authContext.TokenCache.Clear();
Session.Clear();
Session.Abandon();
Response.SetCookie(new HttpCookie("ASP.NET_SessionId", string.Empty));
HttpContext.GetOwinContext().Authentication.SignOut(
OpenIdConnectAuthenticationDefaults.AuthenticationType,
CookieAuthenticationDefaults.AuthenticationType);
}
Attributes N/A
References N/A
Attributes N/A
References N/A
Component ADFS
Attributes N/A
References N/A
Example
[HttpPost, ValidateAntiForgeryToken]
[Authorization]
public ActionResult SignOut(string redirectUrl)
{
if (!this.User.Identity.IsAuthenticated)
{
return this.View("LogOff", null);
}
// Signs out at the specified security token service (STS) by using the WS-Federation protocol.
Uri signOutUrl = new Uri(FederatedAuthentication.WSFederationAuthenticationModule.Issuer);
Uri replyUrl = new Uri(FederatedAuthentication.WSFederationAuthenticationModule.Realm);
if (!string.IsNullOrEmpty(redirectUrl))
{
replyUrl = new Uri(FederatedAuthentication.WSFederationAuthenticationModule.Realm +
redirectUrl);
}
// Signs out of the current session and raises the appropriate events.
var authModule = FederatedAuthentication.WSFederationAuthenticationModule;
authModule.SignOut(false);
// Signs out at the specified security token service (STS) by using the WS-Federation
// protocol.
WSFederationAuthenticationModule.FederatedSignOut(signOutUrl, replyUrl);
return new RedirectResult(redirectUrl);
}
Attributes N/A
Steps Cookies are normally only accessible to the domain for which
they were scoped. Unfortunately, the definition of "domain"
does not include the protocol so cookies that are created over
HTTPS are accessible over HTTP. The "secure" attribute
indicates to the browser that the cookie should only be made
available over HTTPS. Ensure that all cookies set over HTTPS
use the secure attribute. The requirement can be enforced in
the web.config file by setting the requireSSL attribute to true.
It is the preferred approach because it will enforce the secure
attribute for all current and future cookies without the need to
make any additional code changes.
Example
<configuration>
<system.web>
<httpCookies requireSSL="true"/>
</system.web>
</configuration>
The setting is enforced even if HTTP is used to access the application. If HTTP is used to access the application, the
setting breaks the application because the cookies are set with the secure attribute and the browser will not send
them back to the application.
TITLE DETAILS
References N/A
Steps When the web application is the Relying Party, and the IdP is
ADFS server, the FedAuth token's secure attribute can be
configured by setting requireSSL to True in
system.identityModel.services section of web.config:
Example
<system.identityModel.services>
<federationConfiguration>
<!-- Set requireSsl=true; domain=application domain name used by FedAuth cookies (Ex: .gdinfra.com); -->
<cookieHandler requireSsl="true" persistentSessionLifetime="0.0:20:0" />
....
</federationConfiguration>
</system.identityModel.services>
All http based application should specify http only for cookie definition
TITLE DETAILS
Attributes N/A
Example
All HTTP -based applications that use cookies should specify HttpOnly in the cookie definition, by implementing
following configuration in web.config:
<system.web>
.
.
<httpCookies requireSSL="false" httpOnlyCookies="true"/>
.
.
</system.web>
TITLE DETAILS
Attributes N/A
TITLE DETAILS
Example
The following code example sets the requireSSL attribute in the Web.config file.
<authentication mode="Forms">
<forms loginUrl="member_login.aspx" cookieless="UseCookies" requireSSL="true"/>
</authentication>
TITLE DETAILS
Example
Following configuration shows the correct configuration:
<federatedAuthentication>
<cookieHandler mode="Custom"
hideFromScript="true"
name="FedAuth"
path="/"
requireSsl="true"
persistentSessionLifetime="25">
</cookieHandler>
</federatedAuthentication>
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
Example
Example
<form action="/UserProfile/SubmitUpdate" method="post">
<input name="__RequestVerificationToken" type="hidden"
value="saTFWpkKN0BYazFtN6c4YbZAmsEwG0srqlUqqloi/fVgeV2ciIFVmelvzwRZpArs" />
<!-- rest of form goes here -->
</form>
Example
At the same time, Html.AntiForgeryToken() gives the visitor a cookie called __RequestVerificationToken, with the
same value as the random hidden value shown above. Next, to validate an incoming form post, add the
[ValidateAntiForgeryToken] filter to the target action method. For example:
[ValidateAntiForgeryToken]
public ViewResult SubmitUpdate()
{
// ... etc.
}
<script>
@functions{
public string TokenHeaderValue()
{
string cookieToken, formToken;
AntiForgery.GetTokens(null, out cookieToken, out formToken);
return cookieToken + ":" + formToken;
}
}
$.ajax("api/values", {
type: "post",
contentType: "application/json",
data: { }, // JSON data goes here
dataType: "json",
headers: {
'RequestVerificationToken': '@TokenHeaderValue()'
}
});
</script>
Example
When you process the request, extract the tokens from the request header. Then call the AntiForgery.Validate
method to validate the tokens. The Validate method throws an exception if the tokens are not valid.
void ValidateRequestHeader(HttpRequestMessage request)
{
string cookieToken = "";
string formToken = "";
IEnumerable<string> tokenHeaders;
if (request.Headers.TryGetValues("RequestVerificationToken", out tokenHeaders))
{
string[] tokens = tokenHeaders.First().Split(':');
if (tokens.Length == 2)
{
cookieToken = tokens[0].Trim();
formToken = tokens[1].Trim();
}
}
AntiForgery.Validate(cookieToken, formToken);
}
TITLE DETAILS
Attributes N/A
Example
Here's the code you need to have in all of your pages:
Attributes N/A
Example
<configuration>
<system.web>
<sessionState mode="InProc" cookieless="true" timeout="15" />
</system.web>
</configuration>
### Example
```XML
<forms name=".ASPXAUTH" loginUrl="login.aspx" defaultUrl="default.aspx" protection="All" timeout="15"
path="/" requireSSL="true" slidingExpiration="true"/>
</forms>
TITLE DETAILS
References asdeqa
TITLE DETAILS
Steps When the web application is Relying Party and ADFS is the
STS, the lifetime of the authentication cookies - FedAuth
tokens - can be set by the following configuration in
web.config:
Example
<system.identityModel.services>
<federationConfiguration>
<!-- Set requireSsl=true; domain=application domain name used by FedAuth cookies (Ex: .gdinfra.com); -->
<cookieHandler requireSsl="true" persistentSessionLifetime="0.0:15:0" />
<!-- Set requireHttps=true; -->
<wsFederation passiveRedirectEnabled="true" issuer="http://localhost:39529/"
realm="https://localhost:44302/" reply="https://localhost:44302/" requireHttps="true"/>
<!--
Use the code below to enable encryption-decryption of claims received from ADFS. Thumbprint value varies
based on the certificate being used.
<serviceCertificate>
<certificateReference findValue="4FBBBA33A1D11A9022A5BF3492FF83320007686A"
storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
</serviceCertificate>
-->
</federationConfiguration>
</system.identityModel.services>
Example
Also the ADFS issued SAML claim token's lifetime should be set to 15 minutes, by executing the following
powershell command on the ADFS server:
Attributes N/A
References N/A
Steps Perform proper Sign Out from the application, when user
presses log out button. Upon logout, application should
destroy user's session, and also reset and nullify session cookie
value, along with resetting and nullifying authentication cookie
value. Also, when multiple sessions are tied to a single user
identity, they must be collectively terminated on the server
side at timeout or logout. Lastly, ensure that Logout
functionality is available on every page.
Mitigate against Cross-Site Request Forgery (CSRF) attacks on
ASP.NET Web APIs
TITLE DETAILS
Attributes N/A
References N/A
TITLE DETAILS
Attributes N/A
Steps Anti-CSRF and AJAX: The form token can be a problem for
AJAX requests, because an AJAX request might send JSON
data, not HTML form data. One solution is to send the tokens
in a custom HTTP header. The following code uses Razor
syntax to generate the tokens, and then adds the tokens to
an AJAX request.
Example
<script>
@functions{
public string TokenHeaderValue()
{
string cookieToken, formToken;
AntiForgery.GetTokens(null, out cookieToken, out formToken);
return cookieToken + ":" + formToken;
}
}
$.ajax("api/values", {
type: "post",
contentType: "application/json",
data: { }, // JSON data goes here
dataType: "json",
headers: {
'RequestVerificationToken': '@TokenHeaderValue()'
}
});
</script>
Example
When you process the request, extract the tokens from the request header. Then call the AntiForgery.Validate
method to validate the tokens. The Validate method throws an exception if the tokens are not valid.
IEnumerable<string> tokenHeaders;
if (request.Headers.TryGetValues("RequestVerificationToken", out tokenHeaders))
{
string[] tokens = tokenHeaders.First().Split(':');
if (tokens.Length == 2)
{
cookieToken = tokens[0].Trim();
formToken = tokens[1].Trim();
}
}
AntiForgery.Validate(cookieToken, formToken);
}
Example
Anti-CSRF and ASP.NET MVC forms - Use the AntiForgeryToken helper method on Views; put an
Html.AntiForgeryToken() into the form, for example,
Example
The example above will output something like the following:
<form action="/UserProfile/SubmitUpdate" method="post">
<input name="__RequestVerificationToken" type="hidden"
value="saTFWpkKN0BYazFtN6c4YbZAmsEwG0srqlUqqloi/fVgeV2ciIFVmelvzwRZpArs" />
<!-- rest of form goes here -->
</form>
Example
At the same time, Html.AntiForgeryToken() gives the visitor a cookie called __RequestVerificationToken, with the
same value as the random hidden value shown above. Next, to validate an incoming form post, add the
[ValidateAntiForgeryToken] filter to the target action method. For example:
[ValidateAntiForgeryToken]
public ViewResult SubmitUpdate()
{
// ... etc.
}
TITLE DETAILS
References Secure a Web API with Individual Accounts and Local Login in
ASP.NET Web API 2.2
Steps If the Web API is secured using OAuth 2.0, then it expects a
bearer token in Authorization request header and grants
access to the request only if the token is valid. Unlike cookie
based authentication, browsers do not attach the bearer
tokens to requests. The requesting client needs to explicitly
attach the bearer token in the request header. Therefore, for
ASP.NET Web APIs protected using OAuth 2.0, bearer tokens
are considered as a defense against CSRF attacks. Please note
that if the MVC portion of the application uses forms
authentication (i.e., uses cookies), anti-forgery tokens have to
be used by the MVC web app.
Example
The Web API has to be informed to rely ONLY on bearer tokens and not on cookies. It can be done by the
following configuration in WebApiConfig.Register method:
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
The SuppressDefaultHostAuthentication method tells Web API to ignore any authentication that happens before
the request reaches the Web API pipeline, either by IIS or by OWIN middleware. That way, we can restrict Web
API to authenticate only using bearer tokens.