使用管控策略(CP:Allow)实现企业可用产品白名单

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
简介: 作为「资源目录」的核心能力,「管控策略CP:Allow」为企业构建顶层合规方案,帮助企业简单、高效实现“可用产品白名单”管理

本文介绍阿里云资源目录中管控策略能力的一种推荐实践,您可以点击了解资源目录产品背景介绍。

场景说明

企业根据自身情况,通常会限定其业务用云时允许采购的云产品,这些云产品一般经过企业的调研和挑选过程、是企业采购的最佳选项。被确认为适用于企业的产品,并非是阿里云的大量云产品种类,它只要满足企业所需又不会超出必要范围;企业一般会与阿里云签订这些产品的批量采购协议以取得优惠政策,使企业利益最大化。为了在云采用过程中落实可用产品的采购规则、使企业受益,企业需要制定一套顶层策略来限定允许采购的云产品范围,以防止企业内用户的有意或无心的“违规”操作导致企业利益受损。

这是常见的、企业启用“可用产品白名单”的情况;还有很多其他场景,例如基于安全合规考虑,企业也都需要启用这一白名单以规范用户使用行为,本文所描述的方案均适用于解决此类管控需求的问题 。


方案对比和采用

如何禁止企业用户不能订购白名单之外的云产品呢?

我们向您介绍两种方案,分别是使用访问控制(RAM)针对性授权和使用管控策略“允许”(CP:Allow)进行白名单控制。通过对方案实施过程及两者特征的比对,我们建议并推荐您使用后一种方案。

旧方案:授予用户“特定产品”的相应权限

是的,这是看起来最直接的解决方案,但操作起来却很繁琐、不易维护且容易出错。

针对用户的点对点授权,其复杂度与您所管理的用户和资源数量成正比

可以想到,您要为每个用户在相应环境内配置访问不同资源的所需权限。

当某个用户不再需要这个权限(离开这个环境时),或者需要更改权限,您都需要找到它并进行权限修改;您需要在新增用户和减少用户时进行权限的设置和回收;当“可用产品白名单”需要更新时,您不得不再次对所有已生效用户同步这个更新,策略的维护成本不可避免。

授权策略更为复杂,需要满足赋权和规避策略的双重要求

实际上,用户和资源数量的组合本身还不是最复杂的状况。当授权的因素涉及到更多维度,比如您需要考虑因 资源所在位置所在业务环境 等因素不同而设定不同权限时,例如:“某区域资源不允许用户订购”、“A项目采购产品的特定限制”、“某些用户角色可以无限制操作”,这些情况进一步加重了授权管理的复杂性。

授权和管控耦合,带来合规风险

权限管理员根据业务需要调整用户的授权以达到业务要求,这些操作需要避开对“合规类”权限的影响,他需要了解权限设计的所有细节,必要时可能需要合规管理员的协助才能完成;合规管理员也面临同样的问题。很明显,两种角色职能的操作耦合状况,无论对权限管理还是合规管控,都会存在极大地安全隐患。

如图,实线/虚线箭头分别表示允许和拒绝的策略。

为了满足业务需要,用户身份和被访问的资源间存在诸多特定限制,从而形成复杂的权限配置要求,给管理带来麻烦。

授权到每个“身份”,在业务场景比较单一时是或许可用;一旦授权的数量、维度增多以后,通过授权的方式满足企业“限定产品使用”的要求显然很难落地、管理成本会非常高。


新方案:使用管控策略(CP:Allow)进行顶层管控

近期,阿里云资源目录的管控策略(Control Policy,简称CP)支持了"Effect": "Allow",语义上可解释为“仅允许”,企业可以使用它,简单高效的解决上述问题。

先看下面的Control Policy设计:

{

 "Statement":[

   {

     "Effect": "Allow",

     "Action":[

               "ecs:*",

               "rds:*"

     ],

     "Resource": [

               "acs:*:*cn-beijing*:*:*",

              "acs:*:*cn-shanghai*:*:*"

     ]

   },

   {

     "Effect": "Allow",

     "Action": "*",

     "Resource": "*",

     "Condition": {

         "StringLike": {

                   "acs:PrincipalARN": [

                     "acs:ram:*:*:role/a-project-admin-*"

                      ]

                 }    

           }

     }

 ],

 "Version": "1"


}

上方CP中有两个Statement。第一个,定义仅允许“北京”“上海”的ECS和RDS可以操作(即允许订购和使用),其他不符合条件的产品操作将被禁止;第二个,定义名为“a-project-admin-*”的role可以无限制操作。

CP具备基于资源目录树形结构从上向下继承的特点

您只需要将CP绑定到需要管控的节点(Folder或Account)上,它将沿着资源目录树向下(当前节点及其下方所有节点)影响所有账号,无论用户在哪里访问这些账号中的资源,都将受到CP的管控、实现预期管控的结果。在需要更新允许使用的产品清单时,您只需要维护这份CP即可。

CP并不会进行授权,它只定义权限的“边界”,可以在不改变用户原有授权的基础上叠加影响

假设用户zhangsan具有访问ecs、eip的权限,当他被此CP影响后,由于CP的许可范围不包含eip,即使zhangsan拥有访问eip的权限也不能对eip进行任何操作;同时他也不能访问rds,因为CP并不会为他进行授权。

CP与授权策略分开管理、共同生效

使用CP让合规管理与授权管理职能分开,从而保护企业合规安全。CP属于顶层管控决策,高于授权,是企业的基本原则,所有业务规范都必须在企业基本原则之内进行制定。

了解了CP方案的原理之后,您在执行时,还需要做以下两件事。

  • RD推荐您使用ram user通过sts方式登录到成员账号进行管理,所以此时您需要在CP内增加对sts:AssumeRole的许可策略以确保管理用户的登录权限可用。Control Policy修改如下:

{

 "Statement":[

   {

     "Effect": "Allow",

     "Action":[

               "ecs:*",

               "rds:*"

     ],

     "Resource": [

               "acs:*:*cn-beijing*:*:*",

              "acs:*:*cn-shanghai*:*:*"

     ]

   },

   {

     "Effect": "Allow",

     "Action": "*",

     "Resource": "*",

     "Condition": {

         "StringLike": {

                   "acs:PrincipalARN": [

                     "acs:ram:*:*:role/a-project-admin-*"

                      ]

                 }    

           }

     },

   {

     "Effect": "Allow",

     "Action":[

               "sts:AssumeRole"

     ],

     "Resource": "*"

   }

 ],

 "Version": "1"


}

  • 在某个节点上绑定了您自定义的CP后,需要解绑这个节点上的默认系统策略“FullAliyunAccess”。这个系统策略在您未绑定任何CP时“放行所有访问”,避免CP启用后因为没有显式Allow而直接导致“隐式拒绝”所有操作。所以在您使用了自定义的allow CP后,需要解绑它,否则它会使您的allow CP无效。如需了解管控策略的详细工作原理,可以点击产品文档查看。

延伸阅读

灵活使用CP的Allow和Deny,简化策略的编写。

在上述例子中,企业需要对ecs、rds之外的所有产品实施“禁用”,如果使用Deny语句,您将不得不列出ecs、rds之外所有阿里云产品,这个数量目前已经达到260多款,可想而知这一难度之大,使用Allow可以很大程度让实现变得简单可行。

在CP中除了可以使用allow来简化策略内容,也可以使用deny进行配合,进一步使您的CP语句简洁易读。

何时使用Deny?

如果您有明确的禁用操作项,且数量不多,您可以使用Deny来“显式拒绝”这类操作。

例如,明确不允许订购地域为“香港”和“广州”的产品,您可以增加下面的Statement,用deny来处理。如果使用allow,反而更加复杂了。

{

     "Effect": "Deny",

     "Action":[

               "*"

     ],

     "Resource": [

               "acs:*:*cn-hongkong*:*:*",

              "acs:*:*cn-guangzhou*:*:*"

     ]

   }

再次提醒,在一个CP中可以包含多组Allow和Deny的内容,您需要合并评估其产生的最终结果,在设计时避免它们之间差生冲突;一旦冲突,请参考Deny优先原则。同一层级上绑定的所有CP,会被合并在一起进行鉴权,只要命中拒绝(Deny)策略,系统会直接判定结果为拒绝(Explicit Deny),结束整个鉴权流程。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
3393 65
|
SQL 分布式计算 监控
Dataphin 评测报告
作为一名数据开发工程师,我有幸体验了阿里云的Dataphin工具。它提供一站式数据生命周期管理,涵盖采集、建模、治理到使用全流程,显著提升效率。开通试用简单友好,离线管道任务开发通过可视化拖拽组件降低门槛,SQL计算任务实用但调度依赖配置稍复杂。补数据功能出色,即席分析准确,数据分析可视化直观。优点包括全流程覆盖、易用性强、灵活性高;改进建议涉及文档优化、模板丰富度和性能监控增强。总之,Dataphin是构建企业级数据中台的理想选择,值得尝试!
|
6月前
|
XML 算法 安全
详解RAG五种分块策略,技术原理、优劣对比与场景选型之道
RAG通过检索与生成结合,提升大模型在企业场景的准确性与安全性。分块策略是其核心,直接影响检索效果与生成质量。本文系统解析五种主流分块方法:固定大小、语义、递归、基于文档结构及LLM分块,对比其优缺点与适用场景,并探讨RAG在金融、医疗等高风险领域的可验证性挑战与前沿优化路径。
|
12月前
|
开发工具
【HarmonyOS】鸿蒙应用蓝牙功能实现(一)
【HarmonyOS】鸿蒙应用蓝牙功能实现(一)
413 8
【HarmonyOS】鸿蒙应用蓝牙功能实现(一)
|
数据采集 分布式计算 监控
智能数据建设与治理 Dataphin:阿里云的一站式数据治理利器
阿里云Dataphin是一款企业级数据治理与智能建设平台,专注于解决数据孤岛、质量低下和开发效率低等问题。它提供从数据集成、规范建模、智能开发到质量监控及资产管理的全生命周期解决方案,特别适用于中大型企业构建数据中台或推进数字化转型。Dataphin通过自动化生成代码、内置质量规则模板和全局血缘追踪等功能,显著提升数据开发效率与跨团队协作能力。尽管学习曲线较陡峭且资源消耗较高,但其深度集成阿里云生态的优势,使其成为追求规范化数据治理企业的理想选择。推荐已采用阿里云技术栈并具备一定数据团队规模的企业使用。
848 1
|
弹性计算 运维 安全
不得不懂的阿里云账号体系
很多云参与者,并不了解云上账号体系,但了解云账号体系是云采用的基础,本文就带你全面了解阿里云账号体系,适用于所有云参与者。
1700 3
|
弹性计算 监控 安全
打造安全云环境:深入理解阿里云权限体系
本文将探讨阿里云上的权限管理,帮助理解其背后原理并掌握实践方法。主要内容分为三部分:一是访问控制基本原理,强调避免使用root身份,介绍权限策略语言和类型;二是五种典型的授权方式,包括服务级、操作级和资源级授权等;三是多账号环境下的集中化权限管理,重点介绍如何使用管控策略实现安全合规的集中管控。通过这些内容,用户可以更好地理解和应用阿里云的权限管理体系,确保云资源的安全与高效管理。
|
存储 网络协议 网络安全
|
负载均衡 Java 调度
Java中的定时任务实现详解
Java中的定时任务实现详解
|
前端开发 Ubuntu 开发者
【Docker系列】Docker-核心概念/常用命令与项目部署实践
【4月更文挑战第1天】 Docker是容器化技术,打包应用及依赖,实现快速部署。核心概念包括镜像、容器和仓库。镜像是只读模板,容器是镜像运行实例,仓库用于存储和分发镜像。常用命令如`docker search`、`docker pull`、`docker images`、`docker ps`等。安装Docker在Ubuntu上涉及`apt-get update`、`install docker-ce`等步骤。了解这些基础,开发者能更高效地部署和管理应用。Docker简化了环境配置,增强了软件的可移植性和扩展性,是现代开发的必备技能。
958 3

热门文章

最新文章