3、访问控制:基于角色的访问控制(RBAC)、最小权限原则、临时凭证(STS)机制

说到云平台的远程运维,访问控制是绕不开的核心话题。我见过太多团队,一开始图省事,直接给所有人开了管理员权限,结果出事后追责都找不到人。说白了,访问控制就是解决「谁、能对什么资源、做什么操作」这三个问题。

这一节,我重点聊聊三个关键机制:RBAC最小权限原则STS临时凭证。这三者配合使用,基本能覆盖90%以上的远程运维安全场景。

3.1 基于角色的访问控制(RBAC)

RBAC不是什么新鲜概念,但在云环境里,它的价值被放大了。你想想看,一个云账号可能有几十个甚至上百个运维人员,如果每个人单独配置权限,那简直是噩梦。

RBAC的核心思想:把权限打包成「角色」,然后把角色分配给用户。用户不再直接跟权限打交道,而是通过角色间接获得权限。

举个例子:在阿里云RAM中,我通常会定义这几个角色:

  • 运维工程师:拥有ECS、RDS、SLB的读写权限,但不能删除资源
  • 安全审计员:只有只读权限,可以查看所有操作日志
  • 超级管理员:拥有所有权限,但仅限2人持有

我在项目中遇到过一件事:一个新来的同事误操作删除了生产环境的数据库。事后排查发现,他居然有「管理员」角色。这就是角色定义不清晰导致的。后来我强制要求:每个角色必须明确其权限边界,不能有「万能角色」

RBAC的最佳实践

  • 角色粒度要适中:太粗了不安全,太细了管理成本高。我个人习惯按「职责域」划分,比如网络管理、计算资源管理、存储管理。
  • 避免角色继承过深:有些云平台支持角色嵌套,但嵌套超过3层,权限就变得难以追踪。
  • 定期审计角色成员:每季度检查一次,把不再需要的用户从角色中移除。

3.2 最小权限原则

最小权限原则,说白了就是:只给刚刚好的权限,多一点都不给。这个原则听起来简单,但执行起来很难。

为什么会难?因为很多运维人员觉得「先给个大权限,用着方便」。嗯,这里要注意:方便和安全往往是冲突的。我曾经见过一个案例,某公司给所有运维人员都配了「存储管理员」权限,结果有人不小心删除了共享存储上的备份文件,导致数据恢复花了整整两天。

避坑指南:我曾经接手过一个项目,前任运维把所有权限都配成了「*」(通配符)。我花了整整一周才把权限梳理清楚。所以我的建议是:

  • 从零开始构建权限,不要复制粘贴已有的策略
  • 使用「拒绝优先」原则:先拒绝所有权限,再逐步开放
  • 对于临时操作,使用STS临时凭证(下面会讲)

最小权限原则在云环境中的具体落地,我推荐使用策略模拟器。比如AWS的IAM Policy Simulator,可以提前验证你的策略是否满足需求,避免上线后才发现权限不够或过多。

3.3 临时凭证(STS)机制

这是我最喜欢的一个机制。STS(Security Token Service)允许你生成临时、有期限的访问凭证。说白了,就是给运维人员发一张「临时通行证」,用完就失效。

为什么需要STS? 你想想看,如果运维人员的AK(Access Key)是永久有效的,一旦泄露,攻击者可以一直用。而STS凭证的有效期可以设置为15分钟到36小时,即使泄露,影响范围也有限。

STS的工作流程

  1. 用户向STS服务发起请求,携带身份信息和权限策略
  2. STS验证身份后,返回一个临时凭证(包含AccessKeyId、AccessKeySecret、SecurityToken)
  3. 用户使用临时凭证访问云资源
  4. 凭证过期后,自动失效

我的个人习惯:对于日常运维操作,我通常设置STS凭证有效期为1小时。对于需要长时间执行的脚本,我会设置4小时,但会配合心跳机制,确保脚本在凭证过期前续期。

STS的典型应用场景

场景 说明 推荐有效期
日常运维操作 通过Web控制台或CLI执行操作 1小时
自动化脚本 CI/CD流水线中的部署脚本 2-4小时
第三方集成 外部系统通过API访问云资源 15-30分钟
紧急故障处理 需要临时提升权限的场景 30分钟

STS与RBAC的结合

在实际项目中,我通常这样组合使用:

  • 先通过RBAC定义好角色和权限
  • 然后通过STS为特定操作生成临时凭证
  • 凭证中携带的权限策略,是RBAC角色的子集

举个例子:运维工程师A有「ECS运维」角色,但他今天只需要重启一台服务器。那么我通过STS生成一个临时凭证,只允许他执行「重启」操作,有效期30分钟。这样既满足了需求,又遵循了最小权限原则。

3.4 核心逻辑框架图

下面这张图展示了RBAC、最小权限原则和STS三者之间的关系:

访问控制核心逻辑框架 运维用户 RBAC角色 权限策略 分配 绑定 STS临时凭证 生成 最小权限原则 遵循 云资源(ECS/RDS等) 访问 核心流程: 1. 用户分配RBAC角色 2. 角色绑定权限策略 3. STS生成临时凭证 4. 遵循最小权限原则 5. 最终访问云资源

3.5 实战中的避坑指南

我曾经踩过的坑:

  • 坑1:STS凭证有效期设置过长。有一次我设置了24小时的有效期,结果凭证泄露后,攻击者有一整天的时间搞破坏。现在我的默认值是1小时。
  • 坑2:RBAC角色权限范围过大。比如给「运维工程师」角色配了「ECS:*」权限,结果有人误操作删除了所有ECS实例。现在我会明确区分「读」「写」「管理」三个层级。
  • 坑3:忽略最小权限原则的审计。权限配完后就不管了,结果半年后发现很多人的权限已经远远超出实际需求。现在我会每季度做一次权限审计。

我的建议

  • 使用云平台的「权限分析」工具,比如AWS的IAM Access Analyzer,可以自动发现过度授权的角色
  • 对于敏感操作(如删除资源、修改网络配置),强制使用STS临时凭证+多因素认证(MFA)
  • 建立「权限变更审批流程」,任何权限变更都需要经过审批

好了,关于访问控制的核心内容就这些。RBAC、最小权限原则、STS临时凭证,这三者缺一不可。记住一句话:权限不是越多越好,而是刚刚好最好


公众号:蓝海资料掘金营,微信deep3321