安全至关重要

当您运行应用程序时,必须确保它是安全的。攻击者可以通过多种方式攻击您的应用程序,并有可能获取您的数据或使您的应用程序崩溃。如果您在 Azure 中运行应用程序,则可以获得许多现成的世界一流的保护。但您仍需遵循最佳安全实践,以确保 Azure 中的应用程序和基础结构尽可能安全。在本文中,我们将探讨 Azure 的一些安全方面的最佳做法,这些最佳做法可以帮助您提高应用程序的安全性。

#1.对静态和移动数据进行加密

数据通常是企业最重要的资产。这意味着您需要保护其免受攻击。您可以采取很多方法来保护数据,但是在最坏的情况下,攻击者可能会获得您的数据的访问权,例如Azure SQL 数据库 中的数据。即使发生这种情况,您的数据也可以受到保护。因为默认情况下,Azure SQL 和Azure Synapse Analytics 中均启用了 TDE(透明数据加密)。Azure Database of PostgreSQL和Azure Database for MySQL 也启用了等效的技术。这些技术会对您的数据进行加密,因此除持有加密密钥的服务外,其他任何人都无法读取数据。Azure 管理用于加密静态数据的加密密钥。如果需要,您也可以将您自己的加密秘钥用于 Azure SQL 数据库和 Azure Synapse Analytics。

(Azure SQL 数据库 TDE 设置)

Azure 存储在默认情况下也会对静态数据进行加密。不能禁用此加密,这是一件好事。默认情况下,Azure 负责管理 Azure 存储加密的加密密钥。您也可以在 Azure Blob 存储和 Azure 文件中使用您自己的加密秘钥来加密和解密数据。

对静态数据进行加密非常重要,但当数据在服务之间或网络浏览器中传播时确保攻击者在不能拦截数据也很重要。这类数据称为动态数据,您可以使用 TLS(也称为 SSL)加密方法对其进行加密。默认情况下,所有 Azure 服务都启用了 TLS,并且对于大多数服务而言,都无法禁用 TLS。它对数据经过的通道进行加密。除了使用 TLS,您还可以使用 Azure 存储客户端库在客户端应用程序内对数据进行加密,然后再将其上载到 Azure 存储并在下载到客户端时解密数据。

最佳实践是:

>> 始终对景泰数据进行加密

>> 始终对动态数据进行加密

#2.限制对数据库的访问

数据库是您的应用程序的骨干。您的应用程序需要访问它们,有时管理员需要从工作站访问它们以运行查询或执行维护。如何确保可以安全地访问数据库而又不会留下攻击者可能用来获取数据库访问权限的漏洞?

在Azure SQL 数据库、Azure Synapse Analytics、Azure Database for PostgreSQL和 Azure Database for MySQL 中,您需要确保启用了防火墙。这些服务的防火墙默认情况下处于启用状态,防火墙仅允许 Azure 服务通过您指定的 IP 地址。这对谁可以访问您的数据库是一个很大的限制,这是确保数据库安全的好方法。

(Azure SQL 数据库防火墙)

使用数据库防火墙是一个好主意,但是在生产环境中很难管理。在生产中,理想情况下,您希望数据库与外界完全隔离,并且只能从所需的服务中进行访问。您可以通过使用 Azure 专用链接来实现这一点,专用链接允许您通过专用端点连接到 Azure 中的各种服务。专用端点是特定 VNet 和子网中的专用 IP 地址。使用专用链接,您可以授予对 Web 应用程序的访问权限,也可以授予对 VNet 中用于登录数据库的虚拟机的访问权限(使用 SQL Server Management Studio 等工具)并对其进行管理。

Azure 中的数据库还支持通过 Azure Active Directory (AAD) 帐户进行验证。如果您使用 AAD 帐户而不是数据库服务器特定的帐户(例如 SQL Server 身份验证帐户),您的数据库会更加安全,这是因为:

>> AAD 帐户可以在数据库级别对身份进行身份验证,而数据库服务器特定的帐户默认情况下将授予对整个服务器及其所有数据库的访问权限

>> 您可以在一个地方管理 AAD 帐户的密码策略和密码轮换

>> 默认情况下,使用 AAD 帐户进行身份验证是很安全的。您可以将其与 Windows 用户关联,您可以启用多重身份验证

最佳实践是:

>>启用数据库防火墙并严格保留它们

>> 在生产环境中,使用 Azure 专用链接将数据库与外部环境隔离开来。

>> 使用 Azure Active Directory帐户进行数据库访问

#3.限制对 VMS 的访问

如果您在 Azure 虚拟机 (VM) 中运行应用程序,或者将虚拟机用于其他用途(例如管理数据库),则需要确保虚拟机是安全的。大多数人使用 RDP 或 SSH 登录虚拟机,系统会要求您打开虚拟机上的端口,但这会将虚拟机暴露给攻击者。如何使虚拟机更安全呢?

应该禁用 RDP/SSH 对您的虚拟机的访问在 Azure 中创建虚拟机时,可能会在创建向导中启用 RDP 和 SSH 端口。禁用它们可以最大程度地减少虚拟机的攻击面。好的做法是在虚拟网络中部署虚拟机并使用 Azure Bastion来访问它们。Azure Bastion 提供了与虚拟机的安全 RDP 和 SSH 连接,而无需在虚拟机上打开 RDP 或 SSH 端口。使用 Azure Bastion 时,您的虚拟机不需要公共 IP 地址,这意味着攻击者没有机会访问虚拟机。

(在 Azure 虚拟机创建向导中启用端口)

最佳实践是:

>> 将虚拟机的 RDP 和 SSH 端口保持禁用状态

>> 使用Azure Bastion连接到您的虚拟机

#4.保护您的应用程序机密信息

您的应用程序存储有用于连接到其他服务(例如 API 和数据库)的机密信息,例如 API 密钥和连接密钥。将这些机密信息存储在应用程序代码中不是一个好办法,因为密钥对所有有权访问该代码的人都可用。您应将应用程序机密信息存储在安全的地方,即专门用来存储机密信息的地方。

在 Azure 中,您应当将应用程序机密信息、秘钥和证书存储在Azure 秘钥保管库中。Azure 秘钥保管库是一项很安全的服务,您可以将应用程序连接到该保管库,以便检索机密信息。除了安全地存储您的机密信息外,您还可以让负责管理您的机密信息的管理人员(而不是开发人员)来管理您的机密信息。例如,DevOps 工程师可以在 Azure 秘钥保管库中管理数据库连接字符串。只有该工程师可以处理这些机密信息,其他在应用程序或基础架构上工作的人都不知道这些机密信息。这是一种安全的工作方式。

如果机密信息存储在 Azure 秘钥保管库中,并且您的应用程序需要检索这些机密信息,那么您的应用程序如何连接到 Azure 秘钥保管库呢?您的应用程序在 Azure Web 应用这样的服务中运行,后者支持托管服务身份。这些是 Azure Active Directory 中的身份。使用这些身份,可以为您的 Web 应用授予访问 Azure 秘钥保管库的权限,而无需使用连接字符串或 API 密钥。

(Azure 秘钥保管库机密信息)

最佳实践是:

>> 将应用程序机密信息存储在Azure 秘钥保管库这样的中央位置

>> 使用托管服务身份等内置机制来连接到 Azure 秘钥保管库

#5.对生产环境使用单独的 Azure 订阅

您可能会使用许多不同的环境来开发和测试应用程序。可以将这些环境分为不同的 Azure 资源组,以明确哪个服务属于哪个环境。您可以使用这种机制来保护对服务的访问,因为您可以对资源组应用基于角色的访问控制 (RBAC)。使用 RBAC,您可以为特定的人授予相应权限,以便能够管理特定资源组中的服务。这种方法效果很好,建议在开发和测试环境中使用。

对于生产环境,最佳实践是创建单独的 Azure 订阅。这可以帮助您将生产数据和其他资产排除在开发/测试环境之外。您还可以轻松地在两个订阅中的资源之间应用两组不同的策略。如果您的设置复杂且包含许多服务,并且可能分布在多个地理位置并用于不同目的,您可以需要考虑创建一个 Azure 管理组结构,它可以为生产环境管理多个订阅和策略。

最佳实践是:

>> 始终应用基于角色的访问控制来控制哪些人可以访问哪些 Azure 资源

>> 将生产资源与非生产资源分隔开

#6.实施 Web 应用程序防火墙(WAF)

当您的应用程序暴露于 Internet 时,它们很容易受到攻击。应用程序面临的常见攻击是 SQL 注入攻击和跨站点脚本攻击,还有很多其他攻击。

通过实施 Web 应用程序防火墙 (WAF),可以保护Web 应用程序免受攻击。在 Azure 中,您可以启用 Azure Front Door的 WAF 功能,您可以将该服务放在 Web 应用程序的前端,它可以充当您的应用程序的网关,您可以设置路由规则和过滤通信。您还可以启用 Azure 应用程序网关的 WAF 功能,它是一项与 Azure Front Door 类似的服务,但在不同的网络层运行并且具有不同的功能。WAF 可以保护您的应用程序免受任何类型的攻击,包括来自Open Web Application Security Project (OWASP) 核心规则集。

您可以通过选择 WAF 需要防御的攻击并告诉它在受到攻击时应采取的措施来自定义 WAF 的行为。您可以阻止攻击,将其转发到其他地方,进行记录等。您还可以添加更多规则并限制允许访问您的 Web 应用程序的 IP 地址,或者限制来自特定 IP 地址的流量。

(Azure WAF 策略)

最佳实践是:

>> 在您 Web 应用程序前端实施 Azure 应用程序网关或 Azure Front Door 等网关服务

>> 启用 Web 应用程序防火墙功能来保护您的应用程序免受攻击

#7.使用 Azure 安全中心来监控和提高安全性并应对安全事件

如果您只能从这篇文章中采用一种最佳实践,那么应该就是这一条。使用 Azure 安全中心。这是一项 Azure 服务,您可以免费使用,也可以在付费层中使用,它会告诉您什么是安全状态,您可以做什么改进以及如何改进。您可以使用 Azure安全中心定期检查资源的安全性,并在出现需要注意的情况时收到警报。安全中心会告诉您需要在哪里实施这些最佳实践,从而帮助您实施最佳实践,并允许您直接从安全中心实施这些最佳实践。

(Azure 安全中心)

最佳实践是:

>> 使用 Azure 安全中心。

#总结

安全是一个很负责的主题。您需要做很多事情来优化和维护安全性。点击此处了解有关 Azure 安全性最佳实践的更多信息,并确保使用 Azure 安全中心在您的 Azure 订阅中实施这些最佳实践。保持安全!

你可能感兴趣的:(安全至关重要)