阿里云多账号财务管理优秀实践

云计算
本文通过真实场景案例,来介绍如何合理使用阿里云现有产品的能力,在多账号的环境中根据财务需求进行分账。

大型企业或集团公司,由于组织架构复杂,业务复杂等原因,通常拥有多个阿里云账号来管理规模庞大的云上资源。多账号的环境,又进一步加大了分账的难度。本文通过真实场景案例,来介绍如何合理使用阿里云现有产品的能力,在多账号的环境中根据财务需求进行分账。

规划设计

图片

多账号分账:站在总公司视角,来归集各阿里云账号产生的账单费用,由企业管理账号统一进行出账。

单账号分账:站在单个账号视角,以部门/项目这种更细的力度进行分账。

多账号分账

财务关联

从现有多个阿里云账号中选择一个账号作为企业管理账号,或者新建一个专门的企业管理账号。其他账号可以通过财务关联的方式与企业管理账号进行连接,由企业管理账号统一管理和处理账单、发票和付款等财务信息。简化财务管理流程,提高财务透明度和控制力。

第一步、企业管理账号发起关联邀请

企业管理账号主账号登录“费用与成本控制台”,进入“企业财务-账务关联”,点击“邀请关联账号”按钮,如下图:

图片

点击“邀请关联账号”后,首先弹出“填写关联账户信息”页面,您需要填写“关联的阿里云账号”、”显示名称”,系统将自动校验子账号是否满足建立主、子财务关联的条件。校验通过后点击“下一步”,进入下个步骤。

图片

关系类型选择“企业集团关系”,关系策略选择“财务管理”,全选或按需求选择财务管理下的权限选项,设置无误后点击“下一步”,进入下一个步骤

图片

系统会向待关联的子账号发起邀请;待关联的子账号将收到站内信、短信及邮件通知,需要确认授权。

图片

第二步、被邀请账号接受邀请

被邀请账号登录“费用与成本控制台”后,进入“企业财务-财务关联”,点击“确认邀请”。

图片

第三步、企业管理账号查看关联关系状态

企业管理账号主账号登录“费用与成本控制台”,进入“财务关联”,查看跟所有子账号建立关联关系的状态。

图片


共享信控

“信控额度”是阿里云给予部分大客户一定的账号透支的权限,可以先消费,后还款。客户在有信控额度时,预付费订单及后付费账单,均可通过信控额度进行支付或抵扣。企业管理账号将信控额度分配给已关联的账号,共享企业管理账号的信控额度。

第一步、企业管理账号登录“费用与成本”,进入“企业财务管理 - 财务资产管理 - 统一资产管理”,进行各账号的信控额度调整或首次额度划拨。

图片

在弹出的“信控额度设置”界面,设置该账号的信控额度,完成后点击“确定”按钮。

图片

第二步、被分配信控额度的账号需登录“费用与成本”,进入“合同管理 - 合同管理 页面,在合同类型选择信控合同,找到对应待确认的信控,进行相应的合同确认操作。如下图所示找到需要确认的合同,点击右侧“确认通过”,合同状态变为“生效中”后,该账号被设置的信控额度才真正生效,并可以被使用。

图片

统一结算

将同一个企业组织下不同账号、账期,统一建立定制化结算任务,统一开具发票,避免了多个账号各自汇款,开票,结算的繁琐操作。

第一步、企业管理账号登录费用与成本控制台,进入“企业财务管理-统一结算”,点击“创建结算任务”按钮,进行创建统一结算任务,如下图:

图片

第二步、点击“创建结算任务”按钮后,在创建统一结算任务页面:设置结算单名称;设置主账号需要预留的金额,以防主账号下运行的业务可用金不足;根据账号、账期完成筛选,可在下方列表勾选想要结算的对象;点击“保存草稿”,后续可以选择草稿状态的统一结算任务继续编辑。完成上述配置后,点击“下一步”按钮。

图片

第三步、生成结算单后,确认结算单内容,完成后点击“生成并运行结算单”按钮,正式创建统一结算任务。

图片

第四步、如果主账号的账户余额大于结算单待结算金额时,会自动完成划拨和核销;如果主账号的账户余额不足,主账号充值后,系统将自动完成划拨和核销;当结算金额被全部支付后,该统一结算完成。

图片


多账号分账

企业管理账号通过“月账单概览”功能查看整个企业的总账以及各个子账号的详细费用。

第一步、使用企业管理账号登录“费用与成本控制台”,进入“账单管理-月账单概览”,选择账期,点击“账单文件导出”按钮。

图片

第二步、导出账号内容选择“全部账号”,按需选择账期,导出内容选择“当前实时月账单PDF”,账号是否合并选择“是”,完成配置后点击“确定”按钮。

图片

第三步、下载PDF后打开,找到“账单支付汇总”,如下图所示,即可看到各个账号的分账情况。

图片

单账号分账

分账准备

资源组

资源组是在阿里云账号下进行资源分组管理的一种机制,在资源管理、财务分账、信息传递和权限控制等方面都发挥着不可或缺的作用:
  • 财务单元分账是按照资源组来进行的,在创建资源的时候,必须慎重选择资源组,以确保财务分账的准确性和合理性。
  • 一个资源组代表着一个项目,它为项目的管理和推进提供了清晰的分类和标识
  • 依据资源组可以创建飞书群,这个群将用于发送云资源告警和分账账单,方便及时了解资源状况和财务情况。
  • 账号以资源组维度进行授权,进一步明确了账号的使用范围和权限,保障了资源的安全和合理使用。

标签

阿里云标签的优势在于简化资源管理、提高资源可视性、优化成本控制和满足合规性要求。以某公司为例,从以下几个方面进行了标签设计:

图片

财务单元

财务单元是基于规则归集汇总云资源费用或成本的工具,可根据自身成本分析维度需求设置分账规则,并实现资源费用归集,以达到分账的目的。

图片

第一步、登录账号1,在费用-分账管理-财务单元处,点击财务单元旁的加号,创建一级财务单元。

图片

第二步、填写上表所示的一级财务单元名称,完成后点击“确认按钮”。依次创建上表所示的一级财务单元。

图片

第三步、点击一级财务单元,在右侧自动分配规则中,点击“编辑”按钮,按上表所示的自动分配规则进行配置。按上表所示依次配置一级财务单元的自动分配规则。

图片

第四步、点击“总览”,查看单账号按部门分账的情况

图片

成本管家

开通成本管家

点击https://sls.console.aliyun.com/lognext/app/bill_app/?resource=/setting

此链接,勾选“导入账单授权”和“授权开通表格存储”,点击“立即更新”按钮。

图片

选择“阿里云账单导入”,点击“下一步”按钮。

图片

点击“更新资源&下一步”。

图片

点击“完成”按钮。

图片

成本管家导入分账账单

账单明细中的财务单元,对于分拆型产品来说是不准确的,分拆型产品的财务单元需要以分账账单内的为准。目前成本管家默认没有导入分账账单,如果需要导入的话,可以手动进行如下几步操作:

第一步、表格存储创建数据表

点击https://otsnext.console.aliyun.com/cn-wulanchabu/totalList

此链接,进入表格存储,选择乌兰察布区域,进入’bss-'形式命名的实例。

图片

选择“数据表列表”,点击“创建数据表”按钮。

图片

创建splititem_bill表,主键配置参考instance_bill,完成配置后点击“确定”按钮。

图片

图片

第二步、进入成本管家执行查询语句

点击https://sls.console.aliyun.com/lognext/profile此链接,找到“bill-analysis-”开头,主账号uid结尾的的project,点击进入。

图片

双击名为“aliyun_bill”的logstore,在搜索框中填写下面的SQL语句。其中 {endpoint}需要替换为表格存储中’bss-‘开头命名的实例经典网络访问地址,{ots_instance_name}需要替换为表格存储中’bss-‘开头命名的实例名称,{uid} 需要替换为主账号uid。点击“查询/搜索”按钮。

* | create table splititem_bill (hash_key varchar, __time__ bigint, __source__ varchar, instanceconfig varchar, productcode varchar, internetip varchar, outstandingamount double, pretaxamount double, instancespec varchar, subscriptiontype varchar, billingitem varchar, pretaxgrossamount double, usage double, producttype varchar, paymentamount double, listprice double, zone varchar, usageunit varchar, nickname varchar, productname varchar, currency varchar, tag varchar, invoicediscount double, productdetail varchar, item varchar, resourcegroup varchar, deductedbycashcoupons double, deductedbyprepaidcard double, ownerid varchar, billingdate varchar, listpriceunit varchar, deductedbycoupons double, instanceid varchar, serviceperiod double, deductedbyresourcepackage double, billingtype varchar, region varchar, intranetip varchar, accountname varchar, AdjustAmount double, BizType varchar,CashAmount double, CommodityCode varchar, CostUnit varchar, ServicePeriodUnit varchar, SplitAccountID varchar, SplitAccountName varchar, SplitBillingCycle varchar, SplitBillingDate varchar, SplitCommodityCode varchar, SplitItemID varchar, SplitItemName varchar, SplitProductDetail varchar ) with ( endpoint='{endpoint}',accessid='rolearn',accesskey='acs:ram::{uid}:role/aliyunserviceroleforslsaudit',instance_name='{ots_instance_name}',table_name='splititem_bill',type='tablestore')

图片

第三步、联系阿里云后台创建分账账单的导入任务

图片

仪表盘

根据导入的账单数据,自定义一个账单仪表盘。以下图为例,通过该仪表盘,可以灵活地选择时间范围、财务单元和资源组,从而获取详细的消费金额,以及各产品和各实例的具体花费情况。仪表盘将以图表的形式展示这些数据,更加直观和清晰地了解各项费用的分布和变化趋势。

图片

图片

订阅

使用订阅功能,每月初自动发送账单仪表盘到飞书群。确保所有相关人员都能及时获取最新的账单信息,增强财务透明度,及时了解和控制成本,提高整体运营效率。并且定期接收账单数据,方便进行历史对比和趋势分析。

第一步、在仪表盘右上角选择“订阅”,点击“创建”。

图片

第二步、在弹出“创建订阅”界面,输入订阅名称和频率,下图示例为每月发送一次,完成上述配置后,点击“下一步”按钮。

图片

第三步、通知选择“WebHook-钉钉机器人”,填写请求地址和标题,完成上述配置后,点击“提交”按钮。

图片

优化

特殊产品自定义分账

为了实现对MaxComputer、DataWorks、图数据库、ECI等云产品的分账需求,由于这些产品无法通过资源组或标签的方式进行分账,我们决定通过修改表格存储中的分账账单数据来达到目标。鉴于账单数据量庞大,我们采用脚本的方式代替人工操作。

为了避免直接修改原始分账账单数据(即splititem_bill表),我们的策略是先从splititem_bill表中读取数据,根据自定义的规则进行修改,然后将处理后的数据写入到一个新的表中。最后,我们将仪表盘的数据源切换到这个新创建的表上。

代码逻辑,请见下面的流程图:

图片

此外,可能会出现多个应用共享同一实例或集群的情况,这种情况下无法通过资源组或标签的方式实现精准分账。为了应对这种情况,以容器服务 Kubernetes(ACK)为例,首先需要梳理 ACK 关联的所有资源实例及其费用。可以通过成本洞察或其他工具对 ACK 资源进行详细的费用分析,然后手动进行分账。

在读取 splititem_bill 表的数据时,应忽略 ACK 关联资源的账单,不将其写入 splititem_bill_transform 表中。对于其他资源,按照既定的分账规则进行处理,并将结果写入 splititem_bill_transform 表。代码执行完毕后,再手动将 ACK 的分账结果按照我们的分账逻辑写入 splititem_bill_transform 表中。

图片

最终效果如下图所示,ack 这条数据即为我们手动写入的分账数据,包含了ECS、SLB、SLS等相关费用的详细信息。通过这种方式,我们可以精确地跟踪和管理每个项目的成本,确保费用分配的透明性和准确性。

图片

按资源组维度发送通知

分账不仅需要运维人员了解,也需要通知应用人员。我们将按照资源组(即应用)的维度,每月发送前两个月的费用明细至各应用团队所在的飞书告警群。确保各团队对成本分配有清晰的认识,这有助于促进资源的合理使用和成本的有效控制。通过这种方式,每个团队都能更好地管理自己的预算,避免不必要的资源浪费,提高整体运营效率。

图片


为了实现账单数据的自动发送,我们有两种方案可供选择:一是利用阿里云的SDK直接获取表格存储 splititem_bill_transform 表的数据;二是调用SLS的SDK(https://api.aliyun.com/api/Sls/2020-12-30/GetLogsV2?sdkStyle=dara)获取账单数据,其本质也是从SLS的表映射中获取 splititem_bill_transform 表的数据。无论采用哪种方式,最终目标是通过Webhook将前两个月的账单数据自动发送到指定的飞书群中,效果如上图所示。

可用额度告警

在企业管理账号上可以看到各个账号的可用额度,且可以为各个账号设置可用额度阈值告警,如下图所示。但是这个预警通知,只能发送到子账号维护的安全手机、邮箱及站内信,且每天提醒一次,最多连续5天,可能导致重要通知被忽略或延迟处理。

图片

为此,通过编写自定义脚本的方式,

各个账号调用https://api.aliyun.com/api/BssOpenApi/2017-12-14/QueryAccountBalance

这个接口,获取每个账号的可用额度,并设置规则,当可用额度小于信控额度的20%就发送告警。最终效果如下图所示:

图片

术预算超支告警

为了更好地管理和监控阿里云资源的消费情况,建议设置年度消费阈值,并根据该阈值计算每月可消费金额。每月定期发送通知,报告各账户当月和当年的总消费金额、可消费金额以及已消费金额占可消费金额的比例。同时,罗列各账号当月的具体消费金额,并附带账单仪表盘,以便直观地查看消费情况。最终效果如下图所示:

图片

若当月消费超过每月预算值,则另外发送预算超支告警。

图片

遇到的问题

某个实例的分账费用突增

如下面两个图所示,同一快照不同月份的应付金额不同,且相差较大。

图片


图片

阿里云的说法

阿里云的云产品定价策略是到小数点后6位~12位,但是采取的结算策略是在商品粒度按一系列出账规则汇总结算并出账,结算过程中将6位~12位小数位抹零减少到2位小数后和客户进行结算。

结算后为了满足客户精细化对账需求,又会将商品粒度2位的结算金额反摊至2位的资源实例和计费项粒度,反摊过程中因存在算术上除不尽的情况,此时会把除不尽的零头随机记在某个资源实例或计费项上,这就导致了明细账单中某些资源实例、计费项对应的账单出现”应付金额“大于优惠金额扣减之前的“官网价”的情况。

该现象是在整条账单结算完成,账单向更细粒度数据做拆分时产生,因此并不影响客户和阿里云的真实结算金额。

这个抹零和除不尽的金额是阿里云的结算策略,目前来讲是无法改变的。

简单的说:应付金额只显示2位小数,实际金额到小数点后6位~12位,两者汇总算起来就存在差价,这个差价会随机记在某个资源实例或计费项上。

总结

至此,通过企业管理账号,根据成员账号及其所属的部门进行分账,实现成员账号费用的部门分摊和核算。同时,各个子账号根据各自的项目进行独立的分账操作,确保每个项目的费用分摊和分配,实现独立成本核算和费用管理,提高费用透明度和准确性。

责任编辑:姜华 来源: 新钛云服
相关推荐

2023-12-06 08:00:41

2009-10-21 17:53:30

Oracle财务管理系

2012-07-24 15:52:44

财税

2017-12-22 09:44:34

桃源居OracleERP

2015-11-18 21:22:18

翼启云服

2023-02-07 15:33:16

云迁移数据中心云计算

2019-11-27 10:55:36

云迁移云计算云平台

2015-12-11 09:42:37

浪潮财务管控服务

2025-01-07 17:31:52

中电金信鞍钢

2020-07-23 15:13:19

AWS财务管理

2024-07-10 08:52:17

2019-11-22 15:27:07

技术漏洞管理网络

2019-11-24 23:39:01

漏洞管理漏洞风险

2012-11-19 10:35:18

阿里云云计算

2022-07-13 08:00:29

安全风险管理IT

2019-03-01 14:15:20

智慧费用管理零售SAP Concur

2023-07-03 12:09:38

云日志云服务

2021-11-10 13:38:05

云计算云计算环境云应用

2021-07-02 10:59:39

云计算云计算环境云应用
点赞
收藏

51CTO技术栈公众号