云时代的身份安全:别再靠“密码123456”扛风险了

举报
Echo_Wish 发表于 2025/12/10 22:37:29 2025/12/10
【摘要】 云时代的身份安全:别再靠“密码123456”扛风险了

云时代的身份安全:别再靠“密码123456”扛风险了

作者|Echo_Wish


说句大实话:
在上云这件事上,大多数企业都很兴奋——弹性扩容爽、自动化运维爽、算力便宜爽——唯独“身份安全”这块儿,很多公司兴奋不起来。

为什么?

因为云时代最大的风险不是服务器宕机,也不是带宽不够,而是**“谁在访问你的资源,你根本不知道”**。
而你不知道的东西,往往是最危险的。

这篇文章,我们就好好聊聊云时代的 身份安全与访问控制(Identity & Access Management,IAM)。我会用通俗的例子、必要的小代码,以及一点点作为老运维的良心经验,带你把这个概念啃透。


一、为什么身份安全在云时代这么关键?

以前在机房时代,安全靠什么?
靠门禁卡、靠物理隔离、靠身后那一堵墙。

但云不是这样的。云像一座“虚拟城市”,所有资源都暴露在 API 之下。
你一个权限没配好,后果可能是这样的:

  • S3 桶公开 → 数据被人爬走
  • 云主机凭证泄露 → 整个账单被挖矿打爆
  • 凭证权限太大 → 一个脚本误删生产环境
  • 开发同事离职 → 你忘记注销他的访问凭证

云时代的访问方式变了,风险也成倍放大了。

所以我常说一句话:

上云成功不叫成功,能在云上活下来才叫成功。

而 IAM,就是你在云上活下来的底层基石。


二、身份是什么?不是用户名密码那么简单

我们先厘清一个概念:

身份(Identity)不是“账号”,而是“谁有权访问什么资源”。

在云平台上,常见的身份包括:

  • 用户(User)
  • 角色(Role)
  • 服务账号(Service Account)
  • 临时凭证(STS Token)
  • 设备身份(比如 IoT)

不同身份在云里扮演不同的角色。

举个例子:

  • 你是开发 → 应该能读写 Dev 环境
  • 测试是测试 → 不能动生产
  • CI/CD 机器人 → 能部署但不能登录服务器
  • 数据分析服务 → 能读数据库但不应该能删表

如果把所有人都给 root 权限,那跟把办公室钥匙给全公司一样荒诞。


三、访问控制核心思想:RBAC → ABAC → PBAC

云时代 IAM 的演进,本质上就是一句话:

从“凭感觉授权”走向“可控可解释的授权”。

让我们按顺序讲讲。

1)RBAC —— 角色为主(Role-Based Access Control)

传统方式,最常见:

  • 你是 DBA → 你有 DBA 角色
  • 你是 SRE → 你有 SRE 角色

简单明了,但问题也明显:

  • 角色越配越多
  • 权限越配越大
  • 最终人人都是 admin

这在云上等于玩火。

2)ABAC —— 属性为主(Attribute-Based Access Control)

云时代更推荐 ABAC:

权限 = 用户属性 + 资源属性 + 请求条件

比如:

  • 用户属性:部门=研发
  • 资源属性:环境=Dev
  • 条件:工作时间 9:00–19:00

这就能实现:

研发只能在工作时间访问开发环境资源。

这才叫“安全策略”,而不是“拍脑袋的权限划分”。

3)PBAC —— 策略为主(Policy-Based Access Control)

现在更先进的是策略控制:

  • JSON/ YAML 写策略
  • 精准描述可执行动作、资源范围、来源 IP、MFA 要求等

虽然看起来很技术化,但其实并不难。


四、上手示例:写一个最小的 IAM 策略

下面举一个精细控制 S3 桶访问的 AWS IAM policy,示例用 JSON(云厂商差别不大):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": "arn:aws:s3:::project-dev-data/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/department": "dev"
        }
      }
    }
  ]
}

含义很明确:

  • 只允许用户读取 project-dev-data
  • 用户必须带有标签 department=dev
  • 写操作全部禁止

这就是一个典型的 ABAC。

如果你在企业里能把 70% 的权限改成这种“最小授权策略”,安全能力至少提升 5 倍。


五、再来点实际的:如何给机器(而不是人)做身份?

云时代最危险的不是人,而是 机器

  • CI/CD 脚本
  • Lambda / Function
  • K8s Pod
  • 数据同步程序
  • 各种边缘节点

如果还在用“写死 AccessKey”这种上古方式,你离事故只差一个 Git 泄露。

安全方式应该是:

身份 → 角色 → 临时凭证(STS)→ 自动轮转

示例(伪代码):

import boto3

sts = boto3.client("sts")

creds = sts.assume_role(
    RoleArn="arn:aws:iam::1234567890:role/CIDeployRole",
    RoleSessionName="ci-runner"
)["Credentials"]

print(creds["AccessKeyId"])
print(creds["SecretAccessKey"])
print(creds["SessionToken"])

特点:

  • 临时凭证自动过期
  • 权限严格隔离
  • 日志可追踪到具体服务

这比写死在代码里的 AccessKey 安全十万倍。


六、云时代访问控制的黄金法则(这部分超有价值)

作为一个在运维领域摸爬滚打多年的老兵,我总结了云端 IAM 的“五条铁律”。
每一条都是血泪换来的。


默认拒绝,按需授权(Deny by Default)

能不给就不要给,能少给就少给。
“临时授权 + 自动过期”是最理想模式。


人机分离(Human ≠ Machine)

人用人类账号
服务用服务账号
千万不要混着来。


分环境隔离(Prod ≠ Dev ≠ Test)

这句话看似简单,但 80% 的企业都栽在这里。

  • Dev 权限可以大
  • Prod 权限必须小
  • Audit(审计)必须独立

所有 API 调用都要可追踪(Audit Logging)

你要知道:

  • 谁做了什么
  • 在什么时候
  • 从什么地方
  • 成功还是失败

安全不是“不出事”,而是“出了事能查清楚”。


访问需要多因子认证(MFA)

尤其是:

  • 控制台访问
  • root 账号
  • 高风险 API(比如删除资源)

MFA 是上云时代最有效的“杀手级防线”。


七、图例:IAM 架构全景图(便于理解)

看到上图你会发现:

IAM 是整个云平台的“总闸门”。
数据流、服务调用、用户请求、自动化脚本,全都绕不开它。

所以 IAM 搞不好,上云一切白搭。


八、写在最后:身份安全,是云时代的“地基”

我见过不少企业“上云很快,掉坑更快”。

本质原因就是:

没把身份安全当成工程项目来建设。

IAM 不是文档,也不是权限表,它是:

  • 组织架构的模型化
  • 权限的工程化
  • 风险的可视化
  • 合规的制度化

云时代的某一天你会突然明白:

没有身份安全,一切云能力都是幻觉。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。