Vertex AI企业级权限设计与治理:IAM、VPC-SC与最小权限实践
2026/9/15 2:36:36 网站建设 项目流程

上线前一周,模型评测全部通过,训练链路也稳定跑了一周,结果权限评审直接把人卡住了:算法团队要加大模型推理的Key,数据平台不给开,说“这个服务账号权限太大,一开就等于把整个数仓暴露了”;安全团队又说“Vertex AI Endpoint访问权限太散,没法审计”。两边都有理,项目就这么卡了三天——这是我在多家企业落地Vertex AI时最常见的场景。坦白说,模型效果从来不是企业AI项目最大的门槛,权限设计才是。这也是为什么我一直觉得,聊Vertex AI企业级落地,必须先把权限这件事讲透。

这篇文章写给AI平台负责人、ML工程师、架构师和SRE同学,围绕Google Cloud上的Vertex AI权限设计与治理,讲清楚IAM、组织策略、VPC Service Controls这些核心概念怎么做、为什么这么做,以及Google Cloud在“企业级AI权限”这件事上到底有哪些其他平台不好替代的底子。内容偏实操,你可以直接拿着这套思路回去对照自己项目。

1. 为什么企业级AI平台先过权限这关——Vertex AI的“入口”真相

1.1 Vertex AI不是“单个工具”,而是一整张权限网

很多刚接触Vertex AI的团队容易把它理解成一个“训练平台”,类似“把代码传上去,点个按钮跑模型”的工具。但实际上,Vertex AI是一个由多个子服务组成的AI平台全家桶,包括Vertex AI Pipeline、实验跟踪、模型注册、端点部署、Feature Store、模型调优等等。

这意味着一个简单的训练任务,底层可能同时触发多个组件的联动:读取GCS的原始数据、从BigQuery拉特征、把模型检查点写到存储桶、在Artifact Registry存镜像、在Cloud Run或端点跑推理。而这每一步,都是一次独立的权限校验。

所以当你在企业环境里给某个工程师分配Vertex AI的使用权限时,你实际上给的不只是那一个产品页面的访问权,而是一整条数据管线的“通行证”。权限设计做不好,就会出现一个让人头疼的局面:要么开太紧,工程师在平台里寸步难行,天天找管理员提工单;要么开太松,一个服务账号就能读走整个项目里的敏感数据集。两条路都走不远。

1.2 权限混乱的典型症状:上不了线、查不了账、删库跑路风险

我把这些年在客户现场见到的权限事故归了归类,绝大多数跑不出这三种:

第一类是“上不了线”。模型训练好了,要部署到Endpoint,但负责部署的账缺少aiplatform.endpoints.create权限,或者没有Service Account User授权。看起来就是一句“403 Permission Denied”,但背后往往牵扯到三个不同团队的审批流程。碰过一两次就知道,最痛的不是权限本身,而是各方权责边界不清楚。

第二类是“查不了账”。安全合规审计要求提供“谁在什么时候访问过哪些模型、哪些数据”的记录。如果你一开始在设计权限时就没有规划好审计日志的导出通道,或者给服务账号的权限过大,导致告警量爆炸,最终结果就是审计时翻不出一份干净的名单。这在金融、医疗等强监管行业会直接变成合规事故。

第三类是“删库跑路”风险。这不是调侃,是真的见过有人因为本地误操作,把一个用于生产环境的GCS存储桶整个删掉。根因就是那个服务账号同时拥有训练读写的权限和生产环境的删除权限,而这两条链路本来应该彻底隔离。哪怕没有恶意,权限边界不清晰也会导致“误伤”,而且这类事故往往很难定责,复盘起来一团乱麻。

所以,企业级Vertex AI的权限设计,核心目标就是三句话:让人只能做自己分内的事,让机器只能访问自己该读的数据,让所有行为可追溯。接下来我们一步步拆解Google Cloud提供了哪些“武器”来实现这件事。

2. 先弄清楚Google Cloud权限体系的“地基”——IAM与组织层级

2.1 Resource Hierarchy:一切权限继承的起点

聊Google Cloud权限设计,绕不开一个概念:资源层级(Resource Hierarchy)。从顶层到底层依次是:Organization(组织)、Folder(文件夹)、Project(项目)、Resource(具体的云资源,比如GCS Bucket、BigQuery数据集、Vertex AI端点)。

这段层级关系太重要了,因为它决定了权限的“继承规则”:权限在父层授予后,会自动向下传播。换句话说,如果你在组织层给某个人授予了某个角色,他默认就对所有子项目里的对应资源有权限;如果你不想要这个效果,就得在下层用拒绝策略或更精细的条件去“拦截”。

实际落地时,我强烈建议不要把权限策略散落到各个Project级别去管理,那样过不了几个月就会变成谁也说不清的一笔糊涂账。标准做法是在Folder级别定义环境边界,比如dev、staging、prod三个Folder,然后在对应Folder上挂权限策略,让继承规则帮你自动铺开。这样既保证“默认一致”,又保留了单项目做例外调整的空间。

2.2 IAM三种角色类型:Basic、Predefined、Custom

IAM(Identity and Access Management)是Google Cloud权限体系的核心引擎。角色(Role)是权限的集合,Google Cloud提供了三个层次的角色类型:

基础角色(Basic Roles):Project级别的viewer、editor、owner。这三个角色粒度太粗,一个Editor就能对项目里几乎所有资源做修改操作,在企业级场景下基本属于“不可用”状态。我见过很多早期上云的团队图省事直接给全员Editor,后面都会后悔。

预定义角色(Predefined Roles):Google Cloud按服务拆好的角色,比如roles/aiplatform.user、roles/bigquery.dataViewer。这些角色粒度合理得多,日常80%的需求都能用预定义角色覆盖。重点是要分清“User”和“Admin”两类:User够做业务操作,Admin才做管理类操作,大多数情况根本用不上Admin。

自定义角色(Custom Roles):把若干权限组合成一个新角色。可以用YAML文件定义,比如给一个“模型训练执行者”角色,包含aiplatform.trainingjobs.create、aiplatform.models.upload等权限,然后限定它只能读某个存储桶。自定义角色是“最小权限”的终极手段,但要严格控制创建权,避免人人都造一个“神仙角色”。

如果要说一个最容易被忽视的原则,那就是:优先用预定义角色,自定义角色要当“例外”而不是“常态”来用。因为预定义角色会随着服务演进自动获得新权限(Google Cloud会持续更新),自定义角色虽然能锁死权限,但同样意味着后续新功能可能因为缺权限而不可用,维护成本不低。

2.3 服务账号与Workload Identity:区分“人”和“机器”

企业权限设计里,除了给“人”分权,更重要的是管住“机器身份”。Vertex AI的训练任务、调度器、Dataflow作业,这些都是以服务账号(Service Account)的身份在运行的。服务账号本质上是一个不带密码的“机器人账号”,它是某个计算资源运行时用来调用Google Cloud API的凭证。

很多权限事故的根源,是把“人的权限”和“机器权限”混在一起管理。比如让训练代码使用某个工程师自己的账号去读数据,这个工程师离职后模型再跑就报错,或者反过来钥匙一直有效,形成长期安全隐患。标准做法是每个工作负载一个独立服务账号,比如训练任务用一个sa-training,在线预测用一个sa-endpoint,每个账号只拿最窄的权限。

再进一步,如果企业已经自建了AD或Okta,可以考虑用Workload Identity Federation,把外部身份直接映射到Google Cloud的临时凭证上,彻底避免下载和轮转服务账号Key。这是目前Google Cloud最推荐的长期方案,既省运维量,又消除了“静态Key被拷贝到代码仓库”的风险。

3. 真正让Google Cloud成为“唯一舞台”的几个权限设计硬核点

3.1 组织级策略与条件式IAM:把“安全边界”写进策略

大家也能在别的云平台上做角色和权限,但Google Cloud真正特别的地方,是它在身份之外还提供了“组织策略”这个强制层。Organization Policy是独立于IAM的、作用于整个资源层级的策略门禁,管理员可以在一层层级上设置“禁区”。

举个最常用的例子:新创建的服务账号默认被允许为任何资源生成访问密钥,但企业安全规范往往要求“禁止一切长期密钥创建”。在Google Cloud上,你可以直接用约束条件(Constraint)把“服务账号创建密钥”这个行为在Folder层面禁掉,任何人(包括项目Owner)都无法绕过。这种策略能在“权限被误配置”之前就从源头把门关死。

另一个很强大的能力是条件式IAM(IAM Conditions)。它允许在角色绑定上加“条件表达式”,让授权变得动态化——比如“只允许在早上9点到晚上6点执行训练任务”“只允许访问带有env=prod标签的BigQuery数据集”“这个角色只在2025年12月31日前有效”。条件式IAM把权限从“永久静态授权”变成了“实时校验规则”,在大规模多团队协作时非常有用。

3.2 VPC Service Controls:径向隔离与敏感数据保护

如果说IAM是管“谁能操作”,VPC Service Controls(VPC-SC)就是管“流量能不能到达”。这个服务把一组受保护的Google Cloud服务圈在一个“边界”(Perimeter)里,凡是边界外的请求,就算有合法身份凭证,也会被拒绝。

可以这样理解:IAM给每个人发了一张门禁卡,但VPC-SC直接给机房拉了一圈围墙,没在墙里的人,连客户区都进不了。对于企业来说,这个“围墙”意义重大,因为它能把敏感数据隔离在边界内,防止员工从个人设备、不可信网络访问生产数据。配合条件式IAM的“访问级别”限制,比如只允许来自特定IP段或经过端点校验的请求访问,数据保护就是“身份+网络+设备”三层同时生效。

Vertex AI和VPC-SC是天然搭档。很多企业把存放训练集、测试集的GCS和BigQuery数据源放进同一个Perimeter,这样即使工程师在本地开发时拿到了临时凭证,只要网络不在边界内,他也拉不走数据。这个能力在传统云环境的权限治理里很难做到,也是Google Cloud在企业AI隐私保护上比较核心的竞争力。

3.3 与BigQuery、GCS等数据服务权限链的天然联动

Google Cloud的背景决定了它有个独特优势:AI平台和周边数据服务的权限模型是同一个体系。GCS的IAM策略、BigQuery的行级/列级访问控制、Vertex AI的模型服务权限,全部走同一套身份模型和策略引擎,这让权限链路可以做到端到端闭环。

举个例子:你要让Vertex AI的训练节点只能读BigQuery中“经过脱敏的表”,可以在BigQuery那一层创建Authorized Routine或设置行级过滤器,同时在Vertex AI的训练服务账号上只授予对这张表的读取权限。两层权限叠加,“数据集本身敏感”和“模型能访问什么”是被同一个安全团队从同一套规则管控的,不是靠两套互相不通的体系。

这种“统一”在日常权限审计中优势很明显:你要回答“这个模型训练到底读取了哪些生产数据”时,只要沿着权限策略一路查下去就行,不需要跨多个独立平台做数据汇总和关联。很多企业选择Google Cloud作为AI主平台,很大一部分原因就是看中了这种从数据到模型的全链路可治理性。换句话说,不是别的云完全做不到,而是Google Cloud把这些能力做成了平台内置的“标准玩法”,少了很多自己拼装的活。

4. 企业级权限设计实操:一套可以直接抄作业的方案

4.1 项目与Folder结构设计:用层级卡住“爆炸半径”

在实际项目中,我一般建议先画出层级图,再动手配策略。下面是经过验证的资源组织模板:

层级示例说明
Organizationcompany.com全公司统一策略、审计日志、合规底线
Folderplatform / data / security按业务域或职能域划分
Folderdev / staging / prod按环境划分,每个环境一套独立项目
Projectanalytics-prod / ml-prod承载特定业务组件的资源隔离单元
ResourceGCS Bucket / BigQuery Dataset / Vertex AI Endpoint实际数据和模型服务所在

在设计这个层级时,最关键的是“环境强隔离”:dev、staging、prod三个环境之间数据通道必须用VPC-SC界开,不能默认互通。就算再怎么图省事,也不能让开发人员随便读生产数据,这是权限设计里不可触碰的红线。

4.2 最小权限角色矩阵:开发、训练、部署、审计各该给谁什么权限

分层级之后,角色分配的逻辑就清晰了。我整理了一个“最小权限角色矩阵”,你可以直接抄来参考:

人员类型建议角色说明
ML研发工程师roles/aiplatform.user、roles/aiplatform.viewer能创建训练任务、查看实验,但缺少部署和管理模型仓库的权限
MLOps平台工程师roles/aiplatform.admin、roles/iam.serviceAccountUser负责配置流水线、管理端点、设置服务账号委托
数据工程师roles/bigquery.jobUser、roles/bigquery.dataViewer只负责数据接入和质检,不能修改数据
安全审计员roles/iam.securityReviewer、roles/logging.viewer只读权限,专职审计日志和策略合规
CI/CD机器人自定义角色,只包含部署流水线所需权限用Workload Identity Federation绑定到仓库身份

这个矩阵的价值不在于“每个角色叫什么”,而在于“分工边界”:训练和部署分离、业务和运维分离、操作和审计分离。这三道边界是任何一家正经企业做AI平台权限设计都要遵守的基本纪律。

4.3 VPC-SC边界与数据通道配置步骤

下面按步骤走一遍Vertex AI + VPC-SC的配置流程,适用于已经决定把所有数据都“圈起来”的团队。

第1步,创建Access Policy:在Access Context Manager里创建组织的访问策略,这是所有访问级别和Perimeter的基础。访问级别可以按IP、设备、区域等维度定义,比如“仅公司办公网IP”“仅受管设备”。

第2步,创建Perimeter并加入资源:新建一个Service Perimeter,把需要保护的Project全部加进去。常见做法是把存放生产数据的GCS Bucket所在项目、BigQuery数据集所在项目、Vertex AI所在项目都放进同一个Perimeter,确保AI训练链路全程在围墙内。

第3步,配置Ingress/Egress规则:边界不是简单的“全关”,而是允许特定“入口”(Ingress)和“出口”(Egress)流量。在这里要按数据流向仔细设计:允许开发构建阶段访问某个特定的制品仓库镜像,但禁止VPC内任意资源访问任意外部项目。

第4步,为服务账号设置例外:有些场景需要让边界外的合法身份访问边界内数据(比如本地调试模型需要看一些样本数据)。这时可以给指定身份配“Outbound例外”,但一定要同时限制来源网络和访问级别。我见过不少配置失误,就是把这步做成了“永远放行”,相当于围墙开了一扇不设防的后门。

第5步,验证边界:配置完成后,从Different网络环境或即时CloudShell测试访问,确认身份合法但网络不合规时请求被拒绝,再回到正常的办公网确认放行通畅。这个验证步骤省不得,它能在数据事故之前发现绝大多数边界配置问题。

5. 踩坑记录:我见到的权限事故与排查方法

5.1 常见权限错误和排查命令

权限问题在GCP上最常见的报错就是403,但403背后各不相同。我把高频坑列成对照表,方便你快速定位:

常见症状可能原因排查命令/工具
调用Vertex AI Pipeline API返回403服务账号缺少aiplatform.pipelineJobs.creategcloud projects get-iam-policy
训练任务能创建但启动即失败服务账号无法伪装成Dataflow/Cloud Run运行时身份gcloud iam service-accounts get-iam-policy
模型部署后在线预测403Endpoint所在的Service Account未授予aiplatform.endpoints.predictgcloud ai endpoints describe
BigQuery读取被拒绝数据集级IAM或行级过滤器拦截gcloud projects get-iam-policy + BigQuery Information Schema
日志里看不到某些API调用数据访问日志未打开,或日志导出范围有遗漏gcloud logging read / Audit Logs配置

这里最实用的技巧是先用gcloud projects get-iam-policy导出整个项目的IAM策略到本地,再用grep或jq批量搜索某个服务账号被授予的角色。单靠控制台一层层点,很难在全项目范围看清某个账号的完整权限面。

5.2 Policy Analyzer:权限链路排查的利器

排查权限不能只靠直觉,更高效的做法是用Policy Analyzer(在IAM页面里的“Policy Analyzer”标签),输入“谁(Principal)+ 什么权限 + 哪类资源”,系统会返回从组织层级一路继承下来的策略绑定结果,还包括那些通过“权限委托”(Delegation)形成的间接权限。这个工具能极大缩短“凭经验猜权限”的时间。

我在一次客户事故排查中,就是靠Policy Analyzer发现一个开发账号通过“Organization Viewer”的继承关系,意外拥有了对生产项目的只读访问权。如果不是逐一检查策略绑定链,这种权限在医院级别的项目里可能会被存续好几个月。

5.3 几个容易被忽视的设计细节

服务账号密钥自动过期:Google Cloud支持给服务账号Key设置存活期限,有效期到了必须轮换。建议把“过期保护”设成默认开启,尤其是和CI/CD系统直连的存量Key。

Quota不是权限:有时提交训练任务会报“Quota exceeded”,这跟IAM没关系,只是项目层面的资源配额不够。排查时别在权限策略上浪费太多时间,先用gcloud project quotas list确认配额情况。

审计日志保留策略:默认Logging的审计日志保留时间是30天,很多合规要求至少要保留一年。部署时记得立刻创建Log Routing,把Admin Activity日志和数据访问日志同步到BigQuery或Cloud Storage里长期留存。

Exit/Egress规则要画图核对:VPC-SC的复杂程度远超一般人的预期,尤其当多个Perimeter之间互相交叉时有数据转发,配置和想象经常会不符。第一次配置时我的建议是先把“哪些服务在哪个Perimeter里”画成表格,逐条核对Ingress/Egress规则,再动手写配置。

6. 证书热度背后:为什么现在大家都在考GCP认证

6.1 Professional ML Engineer与Cloud Architect怎么选

最近Google Cloud证书(有人习惯叫GCP证书)的热度涨得很快,很多人留言问“考哪个合适”“多久能考”。我的建议是:在AI落地领域,考Professional Machine Learning Engineer,但如果你的职责偏向整体架构,那就是Professional Cloud Architect。

这两个证书的区别,我用一张表来对照:

维度Professional ML EngineerProfessional Cloud Architect
适合人群算法工程师、ML工程师、AI平台管理员解决方案架构师、云运维负责人
核心考点Vertex AI全链路、ML Pipeline、模型部署与监控企业架构设计、迁移、安全合规、成本优化
是否涉及权限设计会考IAM、VPC-SC在ML工作负载中的应用会考组织层级、IAM、Organization Policy等
考试时长大约2小时(部分场景含实验题)大约2小时
有效期2年2年

很多人纠结“ML Engineer会不会比Architect简单”,其实两者的难度和深度都不低。ML Engineer更聚焦AI生命周期的工程化,对Vertex AI的熟悉程度要求非常高;Architect则要覆盖更多传统架构场景。我建议直接看官方考试大纲,对照自己平时的操作内容,哪个覆盖面踩中了你日常60%以上的工作,就选哪个。

6.2 备考时间线建议:考证不是学完权限设计的终点

从备考到底怎么安排,网上说法很多,我的经验是:

先做一次官方Sample Questions摸底,看看自己现有的GCP实操底子能拿到多少分;再针对弱项看Coursera上的专项课程或Google Cloud Skills Boost里的Qwiklabs实验,这个阶段不用赶时间,关键是系统过一遍;考前两周集中刷官方考试指南里的每个考点,至少做一遍真实实验环境和模拟题;最后卡着考试时长做一套Mock,倒逼自己控制读题时间。

考完证不代表权限设计就毕业了,恰恰相反,证书只是证明你对平台机制有系统理解。企业级的权限治理是持续运营的事:新项目要不要进Perimeter?服务账号生命周期怎么管理?新成员入职的权限审批流程是否顺手?这些不是靠一张证书能解决的,要靠团队内部不断迭代策略和操作规范。

结尾:关于权限设计的一点个人心得

项目做得越多,越觉得权限设计的成败不取决于某一次“配置”,而取决于一开始的“取舍”。如果你想省事,直接给全员一个高权限角色,短期内项目推进确实顺,但数据泄漏、合规事故的伏笔已经埋下了。反过来,如果一上来就追求极致的最小权限,每个工程师都卡在“新建一个训练任务都要等半天审批”的流程里,那这个平台早晚会被业务团队放弃。

我个人比较推荐的做法是:先画出数据流和身份矩阵,明确谁要访问什么、访问到什么程度,然后分阶段实施权限策略。第一个月先用预定义角色把大方向定住,第二个月再慢慢收窄到自定义角色和VPC-SC精细边界。等团队适应了,再推行更严格的条件式IAM和Workload Identity Federation。一步一步来,权限设计才能既安全,又不拖业务后腿。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询