亚马逊AWS官方博客

成本分配博文之三:强制执行与验证Amazon资源标签

成本分配博文之三:强制执行与验证Amazon资源标签

本文由Amazon Web Services公司高性能计算高级顾问Roberto Meda参与贡献。文中提到的部分服务还未在由光环新网运营的亚马逊云科技北京区域和由西云数据运营的亚马逊云科技宁夏区域提供,因此以亚马逊云科技已开通相关服务的区域为描述对象。

正如我们在之前《您需要了解的成本分配基础知识》一文中所述,要建立起有意义的成本分配模型,我们首先需要对各项资源及服务进行标记。标签还能够控制对于AWS资源的访问,应用于IAM用户与角色,并通过Amazon API或直接在Amazon控制台中定位各类Amazon资源。

客户一直询问我们该如何使用Amazon生成与用户定义型成本分配标签,以及应如何满足相关标记需求。在今天的博文中,高性能计算高级顾问Roberto Meda将聊聊您的团队(特别是Amazon管理员)该如何实施并验证资源标签。

 

集中添加及管理资源标签

首先,我们需要重新回顾关于集中添加及管理资源标签的知识。

如果您以编程方式管理Amazon资源,则可以在创建资源时标记资源,并通过遍历来修改现有标签。

如果您使用Amazon控制台,则需要单独选定每项Amazon资源并管理其相应标签。例如,如果要将项目标签添加至现有EC2实例当中,请前往Amazon Console→EC2→Instances,而后选择目标实例并在其下的标签选项卡中指定标签。

如果有大量标签需要更新,那么整个过程将极为耗时。幸运的是,您可以使用Amazon资源组快速搜索Amazon资源,并通过Tag Editor管理各资源标签。仍然以前文实例标签为例,您可以前往Amazon Console→Amazon Resource Groups→Tagging→Tag editor,在这里快速搜索AWS::EC2::Instance资源类型,选择需要标记的全部实例,而后一次性修改所有标签。

 

核心概念

  • 强制使用标签:确保您的用户始终创建标签,并将标签附加至计划部署/正在使用的Amazon资源之上
  • 验证标签值:验证用户定义的标签值是否与企业的标记策略保持一致

 

服务概述

为了实施并验证Amazon资源标签,我们主要使用两项Amazon服务:Amazon OrganizationsAmazon IAM

Amazon Organizations将帮助您集中管理环境,借此应对Amazon上不断增长及扩展的工作负载。无论您身为成长中的初创企业还是大型公司,AWS Organizations都能帮助您集中管理账单,控制访问、合规性与安全性,并在您的各Amazon账户之间共享资源。

要强制使用标签,我们将使用Amazon Organizations服务控制策略(SCP)。SCP是一组特定的可调整策略,用于对组织内所有账户的最大可用权限进行集中控制,借此保证您的账户不致与组织内的访问控制准则相冲突。

为了验证标签值,我们需要使用Amazon Organizations标签策略。标签策略可帮助您维护统一标签,包括标签键与标签值的首选大小写处理方法。

Amazon身份与访问管理(IAM)使您能够安全管理对于Amazon服务及资源的访问活动。使用IAM,您可以创建并管理Amazon用户与分组,并借助权限机制批准及拒绝各用户/分组对Amazon资源的访问行为。

 

先决条件

本文假定大家熟悉Amazon Organizations的使用方法,而且至少拥有2个Amazon账户。首先是root账户,其次是成本账户。为了简单起见,我们在本篇博文中将介绍如何实施并验证成员账户标签。当然,您也可以使用同样的流程管理其他账户或组织单位(OU)。您应在root账户上拥有管理员角色。

如果您已经管理有Amazon Landing Zone,应该对Amazon Organizations比较熟悉。

如果您还不满足以上先决条件,本文建议您首先参阅《教程:组织的创建与配置》。

 

强制标签

在本文示例中,我们强制要求各用户创建具有一组预定义值的Project标签,并将此标签附加到用户希望创建的任何CloudFormation栈当中。

我们还会检查Amazon Organizations当中是否已经启用了服务控制策略:

  • 前往Amazon Console并选择Amazon Organizations
  • 在Organize accounts选项卡上,从左侧导航窗格中选择Root
  • 在右侧详情窗格中的Service control policies旁,选择Enable
  • 在What is a service control policy?下,选择Enable service control polices

在完成以上操作步骤之后,您的root账户详情窗格应显示服务控制策略现已启用:

现在,您可以切换至Policies选项卡,而后点击Service control policies(服务控制策略)。您将在这里找到默认的预设策略FullAWSAccess,此策略负责为各项操作授予访问权限。

您可以单击Create Policy以添加用于实现标签要求的新策略。

在本示例中,我们将指定必要的选项,例如策略名称(例如EnforceProjectTag)与相关描述。另外,我们将在示例中对用户后续将要创建的所有CloudFormation栈强制使用Project标签。

在这种情况下,策略JSON将如下所示:

这项策略的基本原则为:如果用户未分配Project标签,则禁止创建任何CloudFormation栈(拒绝cloudformation:CreateStack操作)。

关于完整操作流程,请参阅Amazon IAM操作、资源与条件

最后,我们将刚刚创建完成的新策略附加至您的成员账户或OU:

  • 返回Amazon Organizations主页
  • 选择所要附加的目标账户或OU
  • 在左侧选择Service control policies
  • 附加新策略


在完成此项变更后,任何未向新创建CloudFormation栈指定Project标签的成员账户用户,都将收到以下错误提示:

 

验证标签

与强制标签部分一样,验证标签的第一步同样是检查root账户是否已经启用Tag Policies。

  • 前往Amazon Console并选择Amazon Organizations
  • 在Organize accounts选项卡上,选择左侧窗格中的Root
  • 在右侧详情窗格中的Tag Policies旁,选择Enable

现在,我们可以创建一项新策略,用于定义特定标签的可用值区间。在示例中,我们假定Project标签只能为以下三个值之一:ProjectAProjectB或者ProjectC

您可以按Amazon Organizations→Organize accounts→Policies→Create Policy的顺序,指定策略名称与描述。

您可以使用可视化编辑器或相应的JSON代码指定策略代码,以下为我们的具体操作方式:

请注意:Amazon CloudFormation目前尚不支持标签策略强制使用,因此在我们的标签策略中,我们将引用 CloudFormation 模板创建的基本资源或前几个资源。例如,如果我们的CloudFormation栈创建的首批资源之一为EC2网络接口,则如果不使用Project=ProjectA, ProjectB或ProjectC进行标记,Amazon将明确拒绝这项创建操作。

使用可视化编辑器,大家可以通过以下设置创建标签策略:

以上设置等效于以下JSON选项卡内容:

其效果可以总结为:如果CloudFormation栈未使用包含ProjectA, ProjectB或 ProjectC值的Project键进行标记,则拒绝一切EC2网络接口或弹性IP的创建操作(拒绝ec2:network-interface ec2:elastic-ip)。

现在,您可以将标签策略附加至成员账户当中。

    • 返回至Amazon Organizations主页
    • 选择所要附加的目标账户或OU
    • 在右侧窗格中选择Tag Policies
    • 选择新策略,而后单击附加

由于此想新标签策略的激活,任何尝试创建EC2网络接口、或涉及创建EC2网络接口但却未能关联Project标签与允许值的CloudFormation栈用户,都将收到以下错误提示:

 

通过Cost Explorer实现可视化

在Project标签完成实施与验证之后,您可以在Cost Explorer中清晰的监控成本与用量信息,并按标签进行信息过滤。

您可以按Amazon Console→Cost Explorer→Cost Explorer图标(lens)的顺序进行访问,并使用以下三个值之一将Project设置为标签过滤器:

 

总结

要正确应用标签策略,用户保证标签值符合预先定义的值区间。这一点对于高效、精确地监控用量与成本尤其重要。在各类组织内,Project、Group以及Department等标签都有助于填补灵活运营与严格合规之间,以及意外开销与明确成本分配之间的空白环节。

TAGS: AWS Cost ExplorerAWS IAMAWS OrganizationsAWS Resources GroupsCost Allocationenforce taggingtagvalidate tagging

 

本篇作者

Bowen Wang

Bowen,Amazon Web Services公司计费与成本管理服务首席产品营销经理。她致力于帮助财务及业务主管更好地理解云技术的价值,探索优化自身云财务管理的方法。在之前的职业生涯中,她曾帮助一家技术企业将业务自动化产品推向中国市场,并建立起本地客户服务呼叫中心。