Time and time again, many people get that go ahead for cloud but don't want to unleash everyone into the environment. This is with good understanding. Without policies and governance in place, cloud spend can go unmonitored or resources deployed not following your company's standards. Getting a good standard in place with Azure Policy can make sure you and your team keep an organized Azure environment in the short term and long term as the footprint grows. Security should always be first of mind as well.
Simplicity is key in establishing your definitions and making sure they align to your business needs. Get stakeholders involved and start with some fundamental policies to get established.
Below are common business concerns:
If resources are deployed in Azure and there is no consistent metadata strategy, it will be difficult to appropriately map costs back through the CFO office.
Resources exist with no tagging metadata
Create a policy statement and enforce standards.
Some requirements require data sovereignty and for this use case data must remain in the U.S.
Resources can be deployed to various regions outside of the US by default.
Create a policy for Azure regions.
Resources provisioned that are no longer utilized or were not properly de-provisioned during development periods introduce waste to the business. In addition, over provisioning resources creates additional unneeded costs.
Resources underutilized or identified as over provisioned
Create policy statement and enforce periodic reviews for “waste”.
Inconsistent naming or tagging of resources can make it difficult for IT support teams to troubleshoot incidents, as well as support day to day requests from impacting application teams. Ensuring a consistent naming and tagging standard helps IT to respond more quickly.
X% of resources do not have a compliant naming or tagging structure in place
Create policy statement and enforce via automation.
Established SLAs are needed to ensure that systems are built in compliance with business requirements. Systems should be designed around SLAs and investigated if they are not meeting them.
Critical systems are experiencing less than 99.95% uptime
Create policy statement for production systems.
Now what policies can we use to address these concerns? Right away three come to mind - Allow specific VM sizes, allow specific resource regions and block resource types.
Built in Azure Policies
Allowed virtual machine size SKUS
Create an Azure policy JSON template to limit the instance types that can be created in Azure
D Series instances of all types. Fe series all types
Control the physical location where resources can be deployed
Only allow West US2, Central US and East US
Not allowed resource types
Specify resource types that your organization cannot deploy.
Do not allow SQL Managed Instances
Other built in polices to consider in Azure
Storage accounts should be limited by allowed SKUs
Restrict the set of storage account SKUs that your organization can deploy.
Do not allow Geo-Redundant storage only Local-Redundant
Storage accounts should have infrastructure encryption.
Enable infrastructure encryption for higher level of assurance that the data is secure. When infrastructure encryption is enabled, data in a storage account is encrypted twice.
For compliance storage accounts will be encrypted
No parameters needed for this
Require a tag and its value on resources
Enforces a required tag and its value. Does not apply to resource groups.
Require cost center tags for chargeback
Required Tag Name: Cost Center Required Tag Value: 1984
Managed disks should disable public network access
Disabling public network access improves security by ensuring that a managed disk isn't exposed on the public internet. Creating private endpoints can limit exposure of managed disks. Learn more at: https://aka.ms/disksprivatelinksdoc.
Do not expose public network to managed disk resource
No parameters needed for this
Only approved VM extensions should be installed.
This policy governs the virtual machine extensions that are not approved.
Approve Disk encryption and Windows Security Center agent
Audit machines with insecure password security settings
This initiative deploys the policy requirements and audits machines with insecure password security settings. For more information on Guest Configuration policies, please visit https://aka.ms/gcpol
This is actually an initiative containing policies for maximum password age, reusing previous passwords etc
NOTE: it is important when assigning these policies to use the Initiative. The DeployIfNotExists policy loads the VM extension, which is a requirement for Audit/AuditIfNotExists policies in Guest Configuration to work properly.
These again are just policies commonly deployed in the wild. Your requirements will vary. Once a standard is agreed upon and Azure Polices are defined. You can make sure your environment has the policies enforced and compliant.
Note - Azure Policy uses a JSON format to form the logic the evaluation uses to determine whether a resource is compliant or not.
We will dive deeper into policy inheritance, grouping and automation in the next post.