Azure Administrator认证学习指南之配置Azure订阅策略-07
越来越多的企业,开始将企业环境迁移到公有云环境以便加速企业转型,通常在这个过程中会遇到很多IT治理问题,借助Azure 策略,我们可以实现该需求。
Azure 策略是Azure中的一项服务,可用于创建、分配和管理策略定义。 策略定义将在整个资源中强制实施不同的规则和效果,以便这些资源符合公司标准和服务级别协议。Azure策略对资源进行计算和扫描,并找到与所定义策略不相符的资源。例如,可以设置一个策略,只允许特定类型的虚拟机。或者,可要求所有资源都拥有特定标记。在创建和更新资源时评估策略。
Azure 策略与Azure RBAC有何区别:
RBAC,全称Role-based access control,中文叫做基于角色的权限访问控制
在RBAC中,权限与角色相关联,用户通过「角色」而得到这个角色的相对应权限。这就极大简化了权限的管理。
用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而被赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来,来囊括更广泛的客观情况。
RBAC关注不同范围内的用户操作。例如,您可能被添加到所需范围的资源组的参与者角色。该角色允许你对该资源组做出更改。 策略关注部署期间的资源属性,以及现有资源。例如,可通过策略控制能够预配的资源类型。 或者,可限制能够预配资源的位置。不同于RBAC,策略是默认的允许和明确拒绝系统。
当然如果您希望使用Azure 策略,作为用户的您,必须通过 RBAC 进行身份验证。具体而言,帐户需要:
定义策略的 Microsoft.Authorization/policydefinitions/write 权限。
分配策略的 Microsoft.Authorization/policyassignments/write 权限。
定义计划的 Microsoft.Authorization/policySetDefinitions/write 权限。
分配计划的 Microsoft.Authorization/policyassignments/write 权限。
“参与者”角色不包括这些权限。
目前,Azure平台已经默认提供一些可使用的策略。例如:
需要 SQL Server 12.0:此策略定义具有条件/规则,以确保所有 SQL Server 均使用版本 12.0。 其效果是拒绝所有不符合这些条件的服务器。
允许的存储帐户 SKU:此策略定义具有一组条件/规则,可确定正在部署的存储帐户是否在 SKU 大小集内。 其效果是拒绝所有不符合定义的 SKU 大小集的服务器。
允许的资源类型:此策略定义具有一组条件/规则,以指定贵组织可以部署的资源类型。 其效果是拒绝所有不属于此定义列表的资源。
允许的位置:通过此策略,可限制组织在部署资源时可指定的位置。 其效果是用于强制执行异地符合性要求。
允许的虚拟机 SKU:通过此策略,可指定组织可部署的一组虚拟机 SKU。
应用标记及其默认值:若用户未指定所需的标记及其默认值,则通过此策略来应用所需的标记及其默认值。
强制执行标记和值:此策略将对资源强制执行所需的标记和值。
不允许的资源类型:此策略用于指定组织不得部署的资源类型。
当您在您的环境中使用Azure策略时,微软建议:
如果在环境中创建策略定义,我们建议从审核效果(而不是拒绝效果)开始,以跟踪环境中资源上策略定义的影响。如果有用于自动纵向扩展应用程序的脚本,那么设置拒绝效果可能会影响这些已经执行的自动化任务。
请务必在创建定义和分配时考虑组织的层次结构。 我们建议在更高级别创建定义,例如,在订阅级别进行创建,并在下一子级别进行分配。例如,如果在订阅组级别创建策略定义,则可以在订阅中将该定义的一个策略分配缩小到资源组。
即使在只需考虑一个策略的情况下,我们也建议始终使用计划定义,而不使用策略定义。例如,假设你有一个策略定义-policyDefA,并在计划定义 – initiativeDefC 下创建它,如果你决定在稍后使用类似policyDefA的目标为 policyDefB创建另一个策略定义,则只需将其添加到initiativeDefC 下,并通过这种方式来更好地跟踪它们。
请记住,从计划定义创建计划分配后,添加到计划定义的任何新策略定义都将在该计划定义下的计划分配下自动滚动。但是,如果为新的策略定义引入一个新参数,则需要通过编辑计划定义或分配来更新计划定义和分配。
请注意,一旦触发计划分配,也将会触发该计划中的所有策略。 但是,如果需要单独执行某个策略,最好不要将其包含在计划中。
您可以使用Azure Portal、Azure PowerShell、Azure CLI进行创建与管理策略。
点击”所有服务”搜索”策略”并点击
点击”+策略定义”
点击”…”以定义位置,即选择您的订阅
创建完策略之后,需要将其分配到资源组
选择订阅和资源组,如果有单独特例,需要对其做”排除”。默认适用于整个订阅
选择之前创建的策略,点击”分配”
新建F系列VM到资源组”test01″,摘要页面将提示您不满足策略要求
此时我们已经无法创建F系列VM到Azure订阅下。
返回Azure策略页面,点击”符合性”,点击创建的策略
查看活动日志
以上,即时借助Azure策略实现Azure VM资源管控的过程。借助Azure策略,可以通过策略的定义来对资源强制实施规则并执行操作,以便管理和预防问题。
以下为使用Azure CLI部署的一个示例(示例 – 已批准的虚拟机映像)供您参考
# Create the Policy Definition (Subscription scope)
definition=$(az policy definition create –name ‘allowed-custom-images’ –display-name ‘Approved VM images’ –description ‘This policy governs the approved VM images’ –rules ‘https://raw.githubusercontent.com/Azure/azure-policy/master/samples/Compute/allowed-custom-images/azurepolicy.rules.json’ –params ‘https://raw.githubusercontent.com/Azure/azure-policy/master/samples/Compute/allowed-custom-images/azurepolicy.parameters.json’ –mode All)
# Set the scope to a resource group; may also be a resource, subscription, or management group
scope=$(az group show –name ‘YourResourceGroup’)
# Set the Policy Parameter (JSON format)
policyparam='{ “imageIds”: { “value”: [ “/subscriptions/<subscriptionId>/resourceGroups/YourResourceGroup/providers/Microsoft.Compute/images/ContosoStdImage”, “/Subscriptions/<subscriptionId>/Providers/Microsoft.Compute/Locations/centralus/Publishers/MicrosoftWindowsServer/ArtifactTypes/VMImage/Offers/WindowsServer/Skus/2016-Datacenter/Versions/2016.127.20180510” ] } }’
# Create the Policy Assignment
assignment=$(az policy assignment create –name ‘allowed-custom-images-assignment’ –display-name ‘Approved VM images Assignment’ –scope `echo $scope | jq ‘.id’ -r` –policy `echo $definition | jq ‘.name’ -r` –params “$policyparam”)
使用 Azure CLI 进行删除
# Remove the Policy Assignment
az policy assignment delete –name `echo $assignment | jq ‘.name’ -r`
# Remove the Policy Definition
az policy definition delete –name `echo $definition | jq ‘.name’ -r`
【下一篇】Azure Administrator认证学习指南之使用Azure Monitor创建与分析业务监控指标-08