|
| 1 | +--- |
| 2 | +title: Azure Security Benchmark blueprint sample controls |
| 3 | +description: Control mapping of the Azure Security Benchmark blueprint sample to Azure Policy. |
| 4 | +ms.date: 04/16/2020 |
| 5 | +ms.topic: sample |
| 6 | +--- |
| 7 | +# Control mapping of the Azure Security Benchmark blueprint sample |
| 8 | + |
| 9 | +The following article details how the Azure Blueprints Azure Security Benchmark |
| 10 | +blueprint sample maps to the Azure Security Benchmark controls. For more |
| 11 | +information about the controls, see [Azure Security Benchmark](https://docs.microsoft.com/azure/security/benchmarks/overview). |
| 12 | + |
| 13 | +The following mappings are to the **Azure Security Benchmark** controls. Use the navigation on the |
| 14 | +right to jump directly to a specific control mapping. The mapped controls are implemented with an |
| 15 | +[Azure Policy](../../../policy/overview.md) initiative. To review the complete initiative, open |
| 16 | +**Policy** in the Azure portal and select the **Definitions** page. Then, find and select the |
| 17 | +**\[Preview\]: Audit Azure Security Benchmark recommendations and deploy specific supporting VM |
| 18 | +Extensions** built-in policy initiative. |
| 19 | + |
| 20 | +> [!IMPORTANT] |
| 21 | +> Each control below is associated with one or more [Azure Policy](../../../policy/overview.md) |
| 22 | +> definitions. These policies may help you [assess compliance](../../../policy/how-to/get-compliance-data.md) |
| 23 | +> with the control; however, there often is not a 1:1 or complete match between a control and one or |
| 24 | +> more policies. As such, **Compliant** in Azure Policy refers only to the policies themselves; this |
| 25 | +> doesn't ensure you're fully compliant with all requirements of a control. In addition, the |
| 26 | +> compliance standard may include controls that aren't addressed by any Azure Policy definitions at |
| 27 | +> this time. Therefore, compliance in Azure Policy is only a partial view of your overall compliance |
| 28 | +> status. The associations between controls and Azure Policy definitions for this compliance |
| 29 | +> blueprint sample may change over time. To view the change history, see the |
| 30 | +> [GitHub Commit History](https://github.com/MicrosoftDocs/azure-docs/commits/master/articles/governance/blueprints/samples/azure-security-benchmark/control-mapping.md). |
| 31 | +
|
| 32 | +## 1.1 Protect resources using Network Security Groups or Azure Firewall on your Virtual Network |
| 33 | + |
| 34 | +- Subnets should be associated with a Network Security Group |
| 35 | +- Adaptive Network Hardening recommendations should be applied on internet facing virtual machines |
| 36 | +- Virtual machines should be connected to an approved virtual network |
| 37 | +- Internet-facing virtual machines should be protected with Network Security Groups |
| 38 | +- Service Bus should use a virtual network service endpoint |
| 39 | +- App Service should use a virtual network service endpoint |
| 40 | +- SQL Server should use a virtual network service endpoint |
| 41 | +- Event Hub should use a virtual network service endpoint |
| 42 | +- Cosmos DB should use a virtual network service endpoint |
| 43 | +- Key Vault should use a virtual network service endpoint |
| 44 | +- Audit unrestricted network access to storage accounts |
| 45 | +- Storage Accounts should use a virtual network service endpoint |
| 46 | +- Container Registry should use a virtual network service endpoint |
| 47 | +- Virtual networks should use specified virtual network gateway |
| 48 | +- Authorized IP ranges should be defined on Kubernetes Services |
| 49 | +- \[Preview\]: IP Forwarding on your virtual machine should be disabled |
| 50 | +- Internet-facing virtual machines should be protected with Network Security Groups |
| 51 | +- Just-In-Time network access control should be applied on virtual machines |
| 52 | +- Management ports should be closed on your virtual machines |
| 53 | + |
| 54 | +## 1.2 Monitor and log the configuration and traffic of Vnets, Subnets, and NICs |
| 55 | + |
| 56 | +- Network Watcher should be enabled |
| 57 | + |
| 58 | +## 1.3 Protect critical web applications |
| 59 | + |
| 60 | +- Ensure WEB app has 'Client Certificates (Incoming client certificates)' set to 'On' |
| 61 | +- CORS should not allow every resource to access your Web Applications |
| 62 | +- CORS should not allow every resource to access your Function Apps |
| 63 | +- CORS should not allow every resource to access your API App |
| 64 | +- Remote debugging should be turned off for Web Applications |
| 65 | +- Remote debugging should be turned off for Function Apps |
| 66 | +- Remote debugging should be turned off for API Apps |
| 67 | + |
| 68 | +## 1.4 Deny communications with known malicious IP addresses |
| 69 | + |
| 70 | +- DDoS Protection Standard should be enabled |
| 71 | +- Just-In-Time network access control should be applied on virtual machines |
| 72 | +- Adaptive Network Hardening recommendations should be applied on internet facing virtual machines |
| 73 | + |
| 74 | +## 1.5 Record network packets and flow logs |
| 75 | + |
| 76 | +- Network Watcher should be enabled |
| 77 | + |
| 78 | +## 1.11 Use automated tools to monitor network resource configurations and detect changes |
| 79 | + |
| 80 | +- Deploy prerequisites to audit Windows VMs configurations in 'Security Options - Network Access' |
| 81 | +- Show audit results from Windows VMs configurations in 'Security Options - Microsoft Network Client' |
| 82 | +- Deploy prerequisites to audit Windows VMs configurations in 'Security Options - Network Security' |
| 83 | +- Show audit results from Windows VMs configurations in 'Security Options - Network Security' |
| 84 | +- Deploy prerequisites to audit Windows VMs configurations in 'Security Options - Microsoft Network Server' |
| 85 | +- Show audit results from Windows VMs configurations in 'Security Options - Microsoft Network Server' |
| 86 | +- Deploy prerequisites to audit Windows VMs configurations in 'Administrative Templates - Network' |
| 87 | +- Show audit results from Windows VMs configurations in 'Administrative Templates - Network' |
| 88 | + |
| 89 | +## 2.2 Configure central security log management |
| 90 | + |
| 91 | +- The Log Analytics agent should be installed on virtual machines |
| 92 | +- The Log Analytics agent should be installed on Virtual Machine Scale Sets |
| 93 | +- Deploy prerequisites to audit Windows VMs on which the Log Analytics agent is not connected as expected |
| 94 | +- Show audit results from Windows VMs on which the Log Analytics agent is not connected as expected |
| 95 | +- Azure Monitor log profile should collect logs for categories 'write,' 'delete,' and 'action' |
| 96 | +- Azure Monitor should collect activity logs from all regions |
| 97 | +- Automatic provisioning of the Log Analytics monitoring agent should be enabled on your subscription |
| 98 | + |
| 99 | +## 2.3 Enable audit logging for Azure resources |
| 100 | + |
| 101 | +- Diagnostic logs in Azure Data Lake Store should be enabled |
| 102 | +- Diagnostic logs in Logic Apps should be enabled |
| 103 | +- Diagnostic logs in IoT Hub should be enabled |
| 104 | +- Diagnostic logs in Batch accounts should be enabled |
| 105 | +- Diagnostic logs in Virtual Machine Scale Sets should be enabled |
| 106 | +- Diagnostic logs in Event Hub should be enabled |
| 107 | +- Diagnostic logs in Search services should be enabled |
| 108 | +- Diagnostic logs in App Services should be enabled |
| 109 | +- Diagnostic logs in Data Lake Analytics should be enabled |
| 110 | +- Diagnostic logs in Key Vault should be enabled |
| 111 | +- Diagnostic logs in Service Bus should be enabled |
| 112 | +- Diagnostic logs in Azure Stream Analytics should be enabled |
| 113 | +- Auditing on SQL server should be enabled |
| 114 | +- Audit diagnostic setting |
| 115 | + |
| 116 | +## 2.4 Collect security logs from operating systems |
| 117 | + |
| 118 | +- Automatic provisioning of the Log Analytics monitoring agent should be enabled on your subscription |
| 119 | +- The Log Analytics agent should be installed on virtual machines |
| 120 | +- The Log Analytics agent should be installed on Virtual Machine Scale Sets |
| 121 | +- Deploy prerequisites to audit Windows VMs on which the Log Analytics agent is not connected as expected |
| 122 | +- Show audit results from Windows VMs on which the Log Analytics agent is not connected as expected |
| 123 | + |
| 124 | +## 2.7 Enable alerts for anomalous activity |
| 125 | + |
| 126 | +- Security Center standard pricing tier should be selected |
| 127 | +- Advanced data security should be enabled on your SQL servers |
| 128 | +- Advanced data security should be enabled on your SQL managed instances |
| 129 | +- Advanced Threat Protection types should be set to 'All' in SQL server Advanced Data Security settings |
| 130 | +- Advanced Threat Protection types should be set to 'All' in SQL managed instance Advanced Data Security settings |
| 131 | + |
| 132 | +## 2.8 Centralize anti-malware logging |
| 133 | + |
| 134 | +- Microsoft Antimalware for Azure should be configured to automatically update protection signatures |
| 135 | +- Monitor missing Endpoint Protection in Azure Security Center |
| 136 | +- Endpoint protection solution should be installed on virtual machine scale sets |
| 137 | + |
| 138 | +## 3.1 Maintain an inventory of administrative accounts |
| 139 | + |
| 140 | +- A maximum of 3 owners should be designated for your subscription |
| 141 | +- There should be more than one owner assigned to your subscription |
| 142 | +- External accounts with owner permissions should be removed from your subscription |
| 143 | +- Deprecated accounts with owner permissions should be removed from your subscription |
| 144 | + |
| 145 | +## 3.3 Use dedicated administrative accounts |
| 146 | + |
| 147 | +- Deploy prerequisites to audit Windows VMs in which the Administrators group does not contain only the specified members |
| 148 | +- Show audit results from Windows VMs in which the Administrators group does not contain only the specified members |
| 149 | +- Deploy prerequisites to audit Windows VMs in which the Administrators group does not contain all of the specified members |
| 150 | +- Show audit results from Windows VMs in which the Administrators group does not contain all of the specified members |
| 151 | +- Deploy prerequisites to audit Windows VMs in which the Administrators group contains any of the specified members |
| 152 | +- Show audit results from Windows VMs in which the Administrators group contains any of the specified members |
| 153 | +- A maximum of 3 owners should be designated for your subscription |
| 154 | +- There should be more than one owner assigned to your subscription |
| 155 | + |
| 156 | +## 3.5 Use multi-factor authentication for all Azure Active Directory based access |
| 157 | + |
| 158 | +- MFA should be enabled on accounts with owner permissions on your subscription |
| 159 | +- MFA should be enabled accounts with write permissions on your subscription |
| 160 | +- MFA should be enabled on accounts with read permissions on your subscription |
| 161 | + |
| 162 | +## 3.7 Log and alert on suspicious activity from administrative accounts |
| 163 | + |
| 164 | +- Security Center standard pricing tier should be selected |
| 165 | + |
| 166 | +## 3.9 Use Azure Active Directory |
| 167 | + |
| 168 | +- An Azure Active Directory administrator should be provisioned for SQL servers |
| 169 | +- Service Fabric clusters should only use Azure Active Directory for client authentication |
| 170 | +- Ensure that Register with Azure Active Directory is enabled on API app |
| 171 | +- Ensure that Register with Azure Active Directory is enabled on WEB App |
| 172 | +- Ensure that Register with Azure Active Directory is enabled on Function App |
| 173 | + |
| 174 | +## 3.10 Regularly review and reconcile user access |
| 175 | + |
| 176 | +- Deprecated accounts should be removed from your subscription |
| 177 | +- Deprecated accounts with owner permissions should be removed from your subscription |
| 178 | +- External accounts with read permissions should be removed from your subscription |
| 179 | +- External accounts with write permissions should be removed from your subscription |
| 180 | +- External accounts with owner permissions should be removed from your subscription |
| 181 | + |
| 182 | +## 4.1 Maintain an inventory of sensitive Information |
| 183 | + |
| 184 | +- Sensitive data in your SQL databases should be classified |
| 185 | + |
| 186 | +## 4.4 Encrypt all sensitive information in transit |
| 187 | + |
| 188 | +- Secure transfer to storage accounts should be enabled |
| 189 | +- Latest TLS version should be used in your API App |
| 190 | +- Latest TLS version should be used in your Web App |
| 191 | +- Latest TLS version should be used in your Function App |
| 192 | +- Function App should only be accessible over HTTPS |
| 193 | +- Web Application should only be accessible over HTTPS |
| 194 | +- API App should only be accessible over HTTPS |
| 195 | +- Enforce SSL connection should be enabled for MySQL database servers |
| 196 | +- Enforce SSL connection should be enabled for PostgreSQL database servers |
| 197 | +- Only secure connections to your Redis Cache should be enabled |
| 198 | + |
| 199 | +## 4.5 Use an active discovery tool to identify sensitive data |
| 200 | + |
| 201 | +- Sensitive data in your SQL databases should be classified |
| 202 | +- Advanced data security should be enabled on your SQL servers |
| 203 | +- Advanced data security should be enabled on your SQL managed instances |
| 204 | + |
| 205 | +## 4.6 Use Azure RBAC to control access to resources |
| 206 | + |
| 207 | +- Role-Based Access Control (RBAC) should be used on Kubernetes Services |
| 208 | +- Audit usage of custom RBAC rules |
| 209 | + |
| 210 | +## 4.8 Encrypt sensitive information at rest |
| 211 | + |
| 212 | +- Transparent Data Encryption on SQL databases should be enabled |
| 213 | +- Disk encryption should be applied on virtual machines |
| 214 | +- Unattached disks should be encrypted |
| 215 | +- SQL server TDE protector should be encrypted with your own key |
| 216 | +- SQL managed instance TDE protector should be encrypted with your own key |
| 217 | +- Automation account variables should be encrypted |
| 218 | +- Service Fabric clusters should have the ClusterProtectionLevel property set to EncryptAndSign |
| 219 | + |
| 220 | +## 4.9 Log and alert on changes to critical Azure resources |
| 221 | + |
| 222 | +- Azure Monitor should collect activity logs from all regions |
| 223 | + |
| 224 | +## 5.1 Run automated vulnerability scanning tools |
| 225 | + |
| 226 | +- Vulnerability assessment should be enabled on your SQL servers |
| 227 | +- Vulnerability assessment should be enabled on your SQL managed instances |
| 228 | +- \[Preview\] Vulnerability Assessment should be enabled on Virtual Machines |
| 229 | +- Vulnerability Assessment settings for SQL server should contain an email address to receive scan reports |
| 230 | + |
| 231 | +## 5.2 Deploy automated operating system patch management solution |
| 232 | + |
| 233 | +- System updates should be installed on your machines |
| 234 | +- System updates on virtual machine scale sets should be installed |
| 235 | +- Ensure that '.NET Framework' version is the latest, if used as a part of the Function App |
| 236 | +- Ensure that '.NET Framework' version is the latest, if used as a part of the Web app |
| 237 | +- Ensure that '.NET Framework' version is the latest, if used as a part of the API app |
| 238 | + |
| 239 | +## 5.3 Deploy automated third-party software patch management solution |
| 240 | + |
| 241 | +- Ensure that 'PHP version' is the latest, if used as a part of the Api app |
| 242 | +- Ensure that 'PHP version' is the latest, if used as a part of the WEB app |
| 243 | +- Ensure that 'PHP version' is the latest, if used as a part of the Function app |
| 244 | +- Ensure that 'Java version' is the latest, if used as a part of the Web app |
| 245 | +- Ensure that 'Java version' is the latest, if used as a part of the Function app |
| 246 | +- Ensure that 'Java version' is the latest, if used as a part of the Api app |
| 247 | +- Ensure that 'Python version' is the latest, if used as a part of the Web app |
| 248 | +- Ensure that 'Python version' is the latest, if used as a part of the Function app |
| 249 | +- Ensure that 'Python version' is the latest, if used as a part of the Api app |
| 250 | +- Kubernetes Services should be upgraded to a non-vulnerable Kubernetes version |
| 251 | + |
| 252 | +## 5.5 Use a risk-rating process to prioritize the remediation of discovered vulnerabilities |
| 253 | + |
| 254 | +- Vulnerabilities should be remediated by a Vulnerability Assessment solution |
| 255 | +- Vulnerabilities in security configuration on your machines should be remediated |
| 256 | +- Vulnerabilities in security configuration on your virtual machine scale sets should be remediated |
| 257 | +- Vulnerabilities in container security configurations should be remediated |
| 258 | +- Vulnerabilities on your SQL databases should be remediated |
| 259 | + |
| 260 | +## 6.8 Use only approved applications |
| 261 | + |
| 262 | +- Security Center standard pricing tier should be selected |
| 263 | +- Adaptive Application Controls should be enabled on virtual machines |
| 264 | + |
| 265 | +## 6.9 Use only approved Azure services |
| 266 | + |
| 267 | +- Virtual machines should be migrated to new Azure Resource Manager resources |
| 268 | +- Storage accounts should be migrated to new Azure Resource Manager resources |
| 269 | + |
| 270 | +## 6.10 Implement approved application list |
| 271 | + |
| 272 | +- Security Center standard pricing tier should be selected |
| 273 | +- Adaptive Application Controls should be enabled on virtual machines |
| 274 | + |
| 275 | +## 7.3 Maintain secure Azure resource configurations |
| 276 | + |
| 277 | +- \[Preview\]: Pod Security Policies should be defined on Kubernetes Services |
| 278 | + |
| 279 | +## 7.4 Maintain secure operating system configurations |
| 280 | + |
| 281 | +- Vulnerabilities in security configuration on your machines should be remediated |
| 282 | +- Vulnerabilities in container security configurations should be remediated |
| 283 | +- Vulnerabilities in security configuration on your virtual machine scale sets should be remediated |
| 284 | + |
| 285 | +## 7.9 Implement automated configuration monitoring for Azure services |
| 286 | + |
| 287 | +- \[Preview\]: Pod Security Policies should be defined on Kubernetes Services |
| 288 | + |
| 289 | +## 7.10 Implement automated configuration monitoring for operating systems |
| 290 | + |
| 291 | +- Vulnerabilities in security configuration on your machines should be remediated |
| 292 | +- Vulnerabilities in container security configurations should be remediated |
| 293 | +- Vulnerabilities in security configuration on your virtual machine scale sets should be remediated |
| 294 | + |
| 295 | +## 7.11 Manage Azure secrets securely |
| 296 | + |
| 297 | +- Key Vault objects should be recoverable |
| 298 | + |
| 299 | +## 7.12 Manage identities securely and automatically |
| 300 | + |
| 301 | +- Managed identity should be used in your Function App |
| 302 | +- Managed identity should be used in your Web App |
| 303 | +- Managed identity should be used in your API App |
| 304 | + |
| 305 | +## 8.1 Use centrally managed anti-malware software |
| 306 | + |
| 307 | +- Monitor missing Endpoint Protection in Azure Security Center |
| 308 | +- Endpoint protection solution should be installed on virtual machine scale sets |
| 309 | + |
| 310 | +## 8.2 Pre-scan files to be uploaded to non-compute Azure resources |
| 311 | + |
| 312 | +- Security Center standard pricing tier should be selected |
| 313 | + |
| 314 | +## 8.3 Ensure anti-malware software and signatures are updated |
| 315 | + |
| 316 | +- Microsoft Antimalware for Azure should be configured to automatically update protection signatures |
| 317 | + |
| 318 | +## 9.1 Ensure regular automated back ups |
| 319 | + |
| 320 | +- Long-term geo-redundant backup should be enabled for Azure SQL Databases |
| 321 | +- Geo-redundant backup should be enabled for Azure Database for MySQL |
| 322 | +- Geo-redundant backup should be enabled for Azure Database for PostgreSQL |
| 323 | +- Geo-redundant backup should be enabled for Azure Database for MariaDB |
| 324 | +- Azure Backup should be enabled for Virtual Machines |
| 325 | + |
| 326 | +## 9.2 Perform complete system backups and backup any customer managed keys |
| 327 | + |
| 328 | +- Long-term geo-redundant backup should be enabled for Azure SQL Databases |
| 329 | +- Geo-redundant backup should be enabled for Azure Database for MySQL |
| 330 | +- Geo-redundant backup should be enabled for Azure Database for PostgreSQL |
| 331 | +- Geo-redundant backup should be enabled for Azure Database for MariaDB |
| 332 | +- Azure Backup should be enabled for Virtual Machines |
| 333 | + |
| 334 | +## 9.4 Ensure protection of backups and customer managed keys |
| 335 | + |
| 336 | +- Key Vault objects should be recoverable |
| 337 | + |
| 338 | +## 10.2 Create an incident scoring and prioritization procedure |
| 339 | + |
| 340 | +- Security Center standard pricing tier should be selected |
| 341 | + |
| 342 | +## 10.4 Provide security incident contact details and configure alert notifications for security incidents |
| 343 | + |
| 344 | +- A security contact email address should be provided for your subscription |
| 345 | +- A security contact phone number should be provided for your subscription |
| 346 | +- Advanced data security settings for SQL server should contain an email address to receive security alerts |
| 347 | +- Advanced data security settings for SQL managed instance should contain an email address to receive security alerts |
| 348 | +- Email notifications to admins and subscription owners should be enabled in SQL server advanced data security settings |
| 349 | +- Email notifications to admins and subscription owners should be enabled in SQL managed instance advanced data security settings |
| 350 | + |
| 351 | +## Next steps |
| 352 | + |
| 353 | +Now that you've reviewed the control mapping of the Azure Security Benchmark blueprint, visit Azure |
| 354 | +Policy in the Azure portal to assign the initiative: |
| 355 | + |
| 356 | +> [!div class="nextstepaction"] |
| 357 | +> [Azure Policy](https://portal.azure.com/#blade/Microsoft_Azure_Policy/PolicyMenuBlade/Definitions) |
| 358 | +
|
| 359 | +Additional articles about blueprints and how to use them: |
| 360 | + |
| 361 | +- Learn about the [blueprint lifecycle](../../concepts/lifecycle.md). |
| 362 | +- Understand how to use [static and dynamic parameters](../../concepts/parameters.md). |
| 363 | +- Learn to customize the [blueprint sequencing order](../../concepts/sequencing-order.md). |
| 364 | +- Find out how to make use of [blueprint resource locking](../../concepts/resource-locking.md). |
| 365 | +- Learn how to [update existing assignments](../../how-to/update-existing-assignments.md). |
0 commit comments