政策和倡议任务
创建策略并将其分组为逻辑计划后,必须将策略分配给作用域,无论是管理组,订阅还是资源组。通过分配,您还可以从策略分配中排除子范围。例如,如果您拒绝在订阅中创建公共IP,则可以为连接到受保护DMZ的资源组创建一个排除项。
您将找到几个策略示例,说明如何在此GitHub存储库中将策略和计划应用于Azure中的各种资源。
身份和访问管理
在开始使用公共云时,您首先要问自己的第一个也是最关键的问题之一是“谁应该有权访问资源?” 和“我该如何控制这种访问?” 允许或禁止访问Azure门户以及控制对门户中资源的访问权限对于资产在云中的长期成功和安全至关重要。
要完成保护资源访问的任务,首先要配置身份提供程序,然后配置角色和访问权限。 Azure Active Directory(Azure AD)连接到本地Active Directory,是Azure Identity的基础。 也就是说,Azure AD不是Active Directory,了解Azure AD租户是什么以及它与Azure注册的关系非常重要。 查看可用信息以获得Azure AD和AD的坚实基础。 若要将Active Directory连接并同步到Azure AD,请在本地安装和配置AD Connect工具。
最初发布Azure时,对订阅的访问控制是基本的:管理员或共同管理员。访问Classic模型中的订阅意味着可以访问门户中的所有资源。缺乏细粒度控制导致订阅数量激增,为Azure注册提供了一定程度的合理访问控制。不再需要这种订阅的激增。使用基于角色的访问控制(RBAC),您可以将用户分配给提供公共访问的标准角色,例如“所有者”,“贡献者”或“读者”,甚至可以创建自己的角色
在实施基于角色的访问时,强烈建议以下内容:
- 控制订阅的管理员/共同管理员,因为这些角色具有广泛的权限。如果需要管理Azure Classic部署,则只需将订阅所有者添加为共同管理员。
- 使用管理组为多个订阅分配角色,并减少在订阅级别管理角色的负担。
- 将Azure用户添加到Active Directory中的组(例如,Application X Owners)。使用同步组为组成员提供管理包含应用程序的资源组的适当权限。
- 遵循授予执行预期工作所需的最小权限的原则。
重要
考虑使用Azure AD特权身份管理,Azure多重身份验证和条件访问功能,以便为Azure订阅中的管理操作提供更好的安全性和更高的可见性。这些功能来自有效的Azure AD Premium许可证(取决于功能),以进一步保护和管理您的身份。 Azure AD PIM通过批准工作流实现“即时”管理访问,并对管理员激活和活动进行全面审核。 Azure MFA是另一项关键功能,可以通过两步验证登录Azure门户。与条件访问控制相结合,您可以有效地管理您的妥协风险。
规划和准备您的身份和访问控制以及遵循Azure身份管理最佳实践(链接)是您可以采用的最佳风险缓解策略之一,并且应该被视为每个部署的强制策略。
安全
云计算采用的最大阻碍之一传统上一直是对安全性的担忧。 IT风险经理和安全部门需要确保默认情况下Azure中的资源受到保护和安全。 Azure提供了许多功能,您可以利用这些功能来保护资源并检测/防止针对这些资源的威胁。
Azure安全中心
除了高级威胁防护之外,Azure安全中心还提供整个环境中资源安全状态的统一视图。 Azure安全中心是一个开放式平台,使Microsoft合作伙伴能够创建插入并增强其功能的软件。 Azure安全中心(免费套餐)的基准功能提供评估和建议,可以增强您的安全状况。其付费层可实现额外且有价值的功能,例如Just In Time管理员访问和自适应应用程序控制(白名单)。
技巧
Azure安全中心是一个非常强大的工具,不断得到增强,并集成了可用于检测威胁和保护企业的新功能。强烈建议始终启用ASC。
Azure资源锁定
随着您的组织向订阅添加核心服务,避免业务中断变得越来越重要。我们经常看到的一种类型的中断是针对Azure订阅的脚本和工具的意外后果,错误地删除了资源。资源锁使您可以限制对高价值资源的操作,而修改或删除它们会产生重大影响。锁定应用于订阅,资源组甚至单个资源。常见用例是将锁应用于基础资源,例如虚拟网络,网关,网络安全组和密钥存储帐户。
安全的DevOps工具包
“Azure的安全DevOps工具包”(AzSK)是最初由Microsoft自己的IT团队创建并通过Github(链接)在OpenSource中发布的脚本,工具,扩展,自动化等的集合。 AzSK迎合了结束Azure订阅和资源安全需求的团队使用广泛的自动化并将安全性平稳地集成到本地开发工作流程中,帮助实现这6个重点领域的安全开发:
- 保护订阅
- 实现安全开发
- 将安全性集成到CICD中
- 持续保证
- 警报和监控
- 云风险治理
AzSK是一套丰富的工具,脚本和信息,是完整Azure治理计划的重要组成部分,并将其整合到您的支架中对于支持您的组织风险管理目标至关重要
Azure更新管理
您可以采取的保护环境安全的关键任务之一是确保使用最新更新修补服务器。虽然有许多工具可以实现这一目标,但Azure提供了Azure更新管理解决方案,以解决关键操作系统补丁的识别和部署问题。它使用Azure自动化(本指南后面的“自动化”部分对此进行了介绍。
监控和警报
收集和分析遥测,提供您在所有Azure订阅中使用的服务的活动,性能指标,运行状况和可用性的视线,对于主动管理您的应用程序和基础架构至关重要,并且是每个Azure订阅的基本需求。每个Azure服务都以活动日志,度量标准和诊断日志的形式发出遥测。
- 活动日志描述对订阅中的资源执行的所有操作
- 度量标准是从资源中发出的描述资源性能和运行状况的数字信息
- 诊断日志由Azure服务发出,并提供有关该服务操作的丰富,频繁的数据。
可以在多个级别查看和处理此信息,并不断改进。 Azure通过下图中列出的服务提供Azure资源的共享,核心和深层监视功能。
共享功能
- 警报:您可以从Azure资源收集每个日志,事件和指标,但无法获得关键条件和行为的通知,此数据仅对历史目的和取证有用。 Azure警报会主动通知您在所有应用程序和基础架构中定义的条件。您可以在使用操作组通知收件人集的日志,事件和指标之间创建警报规则。操作组还提供使用外部操作(如webhooks)自动执行修复以运行Azure自动化Runbook和Azure功能的功能。
- 仪表板:仪表板使您可以聚合监视视图并跨资源和订阅组合数据,从而为您提供企业范围内的Azure资源遥测视图。您可以创建和配置自己的视图并与他人共享。例如,您可以创建一个由DBA的各种磁贴组成的仪表板,以提供跨所有Azure数据库服务的信息,包括Azure SQL DB,用于PostgreSQL的Azure DB和用于MySQL的Azure DB。
- 度量资源管理器:度量标准是由Azure资源生成的数值(例如%CPU,磁盘I / O,可提供对资源的操作和性能的深入了解。通过使用Metrics Explorer,您可以定义并发送您感兴趣的度量标准。 Log Analytics用于聚合和分析。
核心监测
- Azure监视器:Azure监视器是核心平台服务,它提供用于监视Azure资源的单一源。 Azure Monitor的Azure门户界面为Azure中的所有监控功能提供了集中的跳转点,包括Application Insights,Log Analytics,网络监控,管理解决方案和服务映射的深层监控功能。使用Azure Monitor,您可以对整个云环境中来自Azure资源的指标和日志进行可视化,查询,路由,归档和操作。除门户外,您还可以通过Monitor PowerShell Cmdlet,跨平台CLI或Azure Monitor REST API检索数据。
- Azure Advisor:Azure Advisor持续监控您的订阅和环境中的遥测,并提供有关如何优化Azure资源的最佳实践建议,以节省资金并提高构成应用程序的资源的性能,安全性和可用性。
- 服务运行状况:Azure服务运行状况可识别可能影响应用程序的Azure服务的任何问题,并帮助您规划计划的维护时段。
- 活动日志:活动日志描述订阅中资源的所有操作。它提供了一个审计跟踪,以确定对资源的任何创建,更新,删除操作的“什么”,“谁”和“何时”。活动日志事件存储在平台中,可供查询90天。您可以将活动日志提取到Log Analytics中,以实现更长的保留期,并跨多个资源进行更深入的查询和分析。
深度应用监控
- 应用程序洞察:Application Insights使您能够收集特定于应用程序的遥测并监视云或内部部署中应用程序的性能,可用性和使用情况。通过使用支持的SDK为多种语言设置应用程序,包括.NET,JavaScript,JAVA,Node.js,Ruby和Python。 Application Insights事件被提取到支持基础架构和安全监视的同一Log Analytics数据存储中,使您能够通过丰富的查询语言随时间关联和聚合事件。
深基础设施监控
- 日志分析:日志分析通过从各种来源收集遥测数据和其他数据,并提供查询语言和分析引擎,让您深入了解应用程序和资源的运行情况,从而在Azure监控中发挥核心作用。您可以通过高性能的日志搜索和视图直接与Log Analytics数据进行交互,也可以在其他Azure服务中使用分析工具将其数据存储在Log Analytics中,例如Application Insights或Azure安全中心。
- 网络监控:Azure的网络监控服务使您能够深入了解网络流量,性能,安全性,连接性和瓶颈。精心规划的网络设计应包括配置Azure网络监控服务,如Network Watcher和ExpressRoute Monitor。
- 管理解决方案:管理解决方案是针对应用程序或服务的打包逻辑,见解和预定义Log Analytics查询集。他们依靠Log Analytics作为存储和分析事件数据的基础。样本管理解决方案包括监视容器和Azure SQL数据库分析。
- 服务地图:服务地图提供了基础架构组件,其流程以及其他计算机和外部流程之间相互依赖关系的图形视图。它在Log Analytics中集成了事件,性能数据和管理解决方案。
技巧
在创建单个警报之前,请创建并维护一组可在Azure警报中使用的共享操作组。这将使您能够集中维护收件人列表的生命周期,通知传递方法(电子邮件,SMS电话号码)和Webhook到外部操作(Azure自动化Runbook,Azure功能/逻辑应用程序,ITSM)。
成本管理
当您从本地云迁移到公共云时,您将面临的主要变化之一是从资本支出(购买硬件)转换为运营支出(在使用时支付服务费用)。从CAPEX到OPEX的这种转换也需要更仔细地管理您的成本。云的好处在于,只需在不需要时将其关闭(或调整大小),就可以从根本上积极地影响您使用的服务的成本。故意在云中管理您的成本是一种推荐的做法,也是成熟客户每天所做的一种做法。
Microsoft提供了多种工具,使您能够可视化,跟踪和管理成本。我们还提供了一整套API,使您能够自定义成本并将成本管理集成到您自己的工具和仪表板中。这些工具大致分为:Azure门户功能和外部功能
Azure门户功能
这些工具可为您提供有关成本的即时信息以及采取措施的能力
- 订阅资源成本:Azure成本分析视图位于门户中,可快速查看有关资源或资源组每日支出的成本和信息。
- Azure成本管理:此产品是Microsoft购买Cloudyn的结果,它允许您管理和分析Azure支出以及您在其他公共云提供商上的支出。有免费和付费层,具有丰富的功能,如概述中所示。
- Azure预算和行动小组直到最近才知道某些事情的成本并采取了一些措施更多的是手动练习。随着Azure预算及其API的引入,现在可以在成本达到阈值时创建操作(如本例所示)。例如,在达到预算的100%时关闭“测试”资源组,或者[另一个例子]。
- Azure顾问知道什么是成本只是成功的一半;另一半是知道如何处理这些信息。 Azure Advisor为您提供有关为节省资金,提高可靠性甚至提高安全性而采取的措施的建议。
外部成本管理工具
- PowerBI Azure消费洞察。您想为您的组织创建自己的可视化吗?如果是这样,那么PowerBI的Azure Consumer Insights内容包是您的首选工具。使用此内容包和PowerBI,您可以创建自定义可视化来代表您的组织,对成本进行更深入的分析,并添加其他数据源以进一步丰富。
- 消费API。除了有关预算,预留实例和市场费用的信息之外,使用API还可以以编程方式访问成本和使用数据。这些API仅适用于Enterprise Enrollments和一些Web Direct订阅,但是它们使您能够将成本数据集成到您自己的工具和数据仓库中。您还可以使用Azure CLI访问这些API,如此处所示。
当我们查看长期使用云并且在使用中“成熟”的客户时,我们会看到一些强烈推荐的做法
- 积极监控成本。成熟Azure组织的组织会不断监控成本并在需要时采取措施。有些组织甚至致力于人们进行分析并建议改变使用情况,而这些人在第一次找到一个已经运行了数月的未使用的HDInsight集群时,不仅仅为自己买单。
- 使用预留实例。管理云中成本的另一个关键租户是使用正确的工具来完成工作。如果您的IaaS虚拟机必须全天候运行,那么使用预留实例将为您节省大量资金。在自动关闭VM和使用RI之间找到适当的平衡需要经验和分析。
- 有效地使用自动化:许多工作负载不需要每天运行。即使每天关闭VM 4小时也可以节省15%的成本。自动化将很快收回成本。
- 使用资源标记进行可见性:如本文档中其他地方所述,使用资源标记可以更好地分析成本。
成本管理是一个有效和高效运行公共云的核心学科。取得成功的企业将能够控制成本并将其与实际需求相匹配,而不是过度购买和希望需求。
自动化
使用云提供商区分组织成熟度的众多功能之一是它们所包含的自动化水平。自动化是一个永无止境的过程,随着您的组织迁移到云,您需要投入资源和时间进行构建。自动化有许多用途,包括一致地推出资源(它直接与另一个核心脚手架概念,模板和DevOps相关联)以解决问题。自动化是Azure脚手架的“结缔组织”,将每个区域连接在一起。
在构建此功能时,可以使用许多工具,从第一方工具(如Azure自动化,EventGrid和AzureCLI)到大量第三方工具(如Terraform,Jenkins,Chef和Puppet)(以此命名少数)。您的运营团队自动化能力的核心是Azure自动化,事件网格和Azure云Shell:
- Azure自动化:是一种基于云的功能,允许您创建Runbook(在PowerShell或Python中),并允许您自动化流程,配置资源,甚至应用补丁。 Azure自动化拥有广泛的跨平台功能,这些功能对于您的部署而言是不可或缺的,但这些功能过于广泛,无法在此深入介绍。
- 事件网格:此服务是一个完全管理的事件路由系统,可让您对Azure环境中的事件做出反应。就像自动化是成熟云组织的结合组织一样,Event Grid是良好自动化的结合组织。使用Event Grid,您可以创建一个简单的无服务器操作,以便在创建新资源时向管理员发送电子邮件并将该资源记录在数据库中。相同的事件网格可以在删除资源时通知,并从数据库中删除该项。
- Azure Cloud Shell:是一个基于浏览器的交互式shell,用于管理Azure中的资源。它为PowerShell或Bash提供了一个完整的环境,可以根据需要启动(并为您维护),以便您拥有一致的环境来运行脚本。 Azure Cloud Shell提供对已安装的其他关键工具的访问,以自动化您的环境,包括Azure CLI,Terraform以及用于管理容器,数据库(sqlcmd)等的其他工具列表。
自动化是一项全职工作,它将迅速成为云团队中最重要的操作任务之一。采用“自动化第一”方法的组织在使用Azure方面取得了更大的成功:
- 管理成本:积极寻找机会并创建自动化以重新调整资源大小,扩大/缩小和关闭未使用的资源。
- 操作灵活性:通过使用自动化(以及模板和DevOps),您可以获得一定程度的可重复性,从而提高可用性,增强安全性并使您的团队能够专注于解决业务问题。
模板和DevOps
如“自动化”部分所述,您作为组织的目标应该是通过源控制的模板和脚本配置资源,并最大限度地减少环境的交互配置。这种“基础架构作为代码”的方法以及用于持续部署的严格的DevOps流程可以确保一致性并减少整个环境的漂移。几乎所有Azure资源都可以通过Azure资源管理器(ARM)JSON模板与PowerShell或Azure跨平台CLI和工具(如Hashicorp的Terraform(具有一流支持并集成到Azure Cloud Shell))进行部署。
这篇文章对使用Azure DevOps工具链将DevOps方法应用于ARM模板的最佳实践和经验教训进行了很好的讨论。花费时间和精力开发特定于组织要求的核心模板集,并使用DevOps工具链(Azure DevOps,Jenkins,Bamboo,Teamcity,Concourse)开发持续交付管道,尤其适用于您的生产和QA环境。 GitHub上有一个大型的Azure Quick Start模板库,您可以将其用作模板的起点,并且可以使用Azure DevOps快速创建基于云的交付管道。
作为生产订阅或资源组的最佳实践,您的目标应该是利用RBAC安全性默认禁止交互式用户,并利用基于服务主体的自动连续交付管道来配置所有资源并提供所有应用程序代码。任何管理员或开发人员都不应触摸Azure门户以交互式配置资源。这一级别的DevOps需要齐心协力,并利用Azure脚手架的所有概念,并提供一致且更安全的环境,以满足您的组织规模扩大。
技巧
在设计和开发复杂的ARM模板时,使用链接的模板从单个JSON文件组织和重构复杂的资源关系。这将使您能够单独管理资源,使您的模板更具可读性,可测试性和可重用性。
Azure是一个超大规模的云提供商,当您将组织从本地服务器的世界迁移到云时,利用云提供商和SaaS应用程序使用的相同概念将使您的组织能够大大地响应业务需求更有效的方式。
核心网络
Azure scaffold参考模型的最后一个组件是您的组织以安全的方式访问Azure的核心。对资源的访问可以是内部的(在公司的网络内),也可以是外部的(通过互联网)。组织中的用户很容易无意中将资源放在错误的位置,并可能将其打开以进行恶意访问。与内部部署设备一样,企业必须添加适当的控制措施,以确保Azure用户做出正确的决策。对于订阅治理,我们确定了提供访问基本控制的核心资源。核心资源包括:
- 虚拟网络是子网的容器对象。虽然不是绝对必要,但它通常在将应用程序连接到内部公司资源时使用。
- 用户定义的路由允许您操作子网内的路由表,使您能够通过网络虚拟设备或对等虚拟网络上的远程网关发送流量。
- 通过虚拟网络对等,您可以无缝连接两个或多个Azure虚拟网络,从而创建更复杂的中心辐射设计或共享服务网络。
- 服务端点。过去,PaaS服务依靠不同的方法来保护从虚拟网络访问这些资源。服务端点允许您从仅连接的端点安全访问已启用的PaaS服务,从而提高整体安全性。
- 安全组是一组广泛的规则,使您能够允许或拒绝进出Azure资源的入站和出站流量。安全组由安全规则组成,可以使用服务标签(定义常见的Azure服务,如AzureKeyVault,Sql等)和应用程序组(定义和应用程序结构,如WebServers,AppServer等)进行扩充。
技巧
在网络安全组中使用服务标签和应用程序组不仅可以增强规则的可读性 - 这对于理解影响至关重要 - 而且还可以在更大的子网内实现有效的微分段,从而减少扩展并提高灵活性。
虚拟数据中心
Azure通过我们广泛的合作伙伴网络为您提供内部功能和第三方功能,使您能够拥有有效的安全立场。更重要的是,Microsoft以Azure虚拟数据中心的形式提供了最佳实践和指导。当您从单个工作负载转移到利用混合功能的多个工作负载时,VDC指南将为您提供“配方”,以实现随着Azure中的工作负载增长而增长的灵活网络。
下一步
治理对Azure的成功至关重要。本文针对企业架构的技术实现,但仅涉及组件之间更广泛的流程和关系。政策治理从上到下流动,取决于企业想要实现的目标。当然,Azure的治理模型的创建包括来自IT的代表,但更重要的是,它应该具有来自业务组领导者以及安全和风险管理的强有力代表。最后,企业支架旨在降低业务风险,以促进组织的使命和目标
现在您已经了解了订阅治理,现在是时候在实践中看到这些建议了。请参阅实施Azure订阅治理的示例。