第3章 主流云厂商身份服务对比:AWS IAM、Azure AD、GCP Cloud Identity、阿里云RAM

做多云身份统一,第一步不是写代码,而是搞清楚各家云厂商的「身份服务」到底长什么样。我见过不少团队,上来就想搞个万能对接层,结果被各家API的差异折腾得够呛。说白了,你得先知道每个平台能做什么、不能做什么,才能设计出靠谱的统一方案。

这一章,咱们把四大云厂商的身份服务拉出来遛遛。我会从核心概念、权限模型、适用场景三个维度去拆,最后给一张对比表,方便你快速查阅。

3.1 AWS IAM:老牌劲旅,权限颗粒度最细

AWS IAM(Identity and Access Management)是云身份管理的「老大哥」。2011年就推出了,这么多年迭代下来,成熟度没得说。

核心概念

  • User(用户):代表一个人或一个服务账号。
  • Group(组):用户的集合,权限附加到组上。
  • Role(角色):没有长期凭证的身份,可以被用户、服务或外部身份「扮演」。
  • Policy(策略):JSON格式的权限文档,定义「谁可以对什么资源做什么操作」。

我个人习惯把AWS的权限模型理解成「策略驱动」。你写一个Policy,挂到User、Group或Role上,权限就生效了。策略的语法很灵活,支持条件判断(比如「仅允许来自公司IP的请求」),也支持资源级ARN精确控制。

关键特点

  • 权限颗粒度极细:可以精确到某个S3桶的某个前缀下的某个对象。
  • 支持临时凭证:通过STS(Security Service)生成,有效期可设,安全性高。
  • 与外部IdP集成:支持SAML 2.0和OIDC,可以对接企业AD或Okta。

我的经验:我在项目中遇到过一家客户,把所有权限都挂在User上,结果员工离职时清理权限累到崩溃。后来我建议他们改用Role + 临时凭证的方式,管理成本直接降了一半。记住:能用Role就别用User,能用临时凭证就别用长期密钥。

3.2 Azure AD:企业级身份中心,主打「目录即服务」

Azure AD(现在叫Microsoft Entra ID)跟AWS IAM的思路完全不同。它本质上是一个云上的身份目录服务,脱胎于微软的Active Directory。说白了,它不只是管云资源的访问,更是企业身份的中心化存储。

核心概念

  • Tenant(租户):一个Azure AD实例,代表一个组织。
  • User(用户):目录中的身份对象,可以同步自本地AD。
  • Group(组):支持安全组和Microsoft 365组,可以动态成员规则。
  • Service Principal(服务主体):应用程序在Azure AD中的身份,类似AWS的Role。
  • Managed Identity(托管标识):Azure资源自动获取的身份,无需管理凭证。

Azure AD最让我欣赏的一点是「条件访问」(Conditional Access)。你可以设置策略:只有从公司设备、在特定地理位置、使用合规客户端的用户,才能访问某个应用。这在多云场景下特别有用——你可以用它来控制谁可以访问AWS或GCP的资源。

注意:Azure AD的RBAC(基于角色的访问控制)和AWS IAM的RBAC不是一回事。Azure AD的RBAC管理的是Azure资源(如虚拟机、数据库),而Azure AD本身还有「目录角色」(如全局管理员、用户管理员)。这两个层级容易搞混,我刚开始做Azure项目时就踩过这个坑。

与外部IdP集成:Azure AD原生支持SAML和OIDC,也可以作为IdP被其他云厂商信任。你想想看,如果你用Azure AD做统一身份源,AWS和GCP都信任它,那用户登录一次就能访问所有云资源——这就是「单点登录」的核心思路。

3.3 GCP Cloud Identity:Google的「轻量级选手」

GCP的身份服务叫Cloud Identity,它跟Google Workspace(以前叫G Suite)共享同一个身份后端。如果你公司用Gmail或Google Calendar,那Cloud Identity基本上就是现成的。

核心概念

  • Google Account(谷歌账号):个人身份,可以是@gmail.com或自定义域名。
  • Cloud Identity Account(云身份账号):企业管理的账号,不包含Google Workspace订阅。
  • Service Account(服务账号):GCP中非人类身份的标准方式,类似AWS的Role。
  • IAM Policy(IAM策略):绑定到资源或项目上的权限声明,支持角色(Role)和条件(Condition)。

GCP的权限模型跟AWS很像,但有一个关键区别:GCP的权限是「资源继承」的。你在项目级别设置一个角色,项目下的所有资源都继承这个角色。AWS则更倾向于「显式附加」,每个资源可以有自己的策略。哪种更好?我个人觉得GCP的方式更简洁,但AWS的方式更灵活。

GCP的独特优势

  • 与Google Workspace深度集成:用户和组织结构自动同步。
  • 支持「Google Groups」作为权限容器:一个群组可以同时管理邮件列表和云权限。
  • 条件角色(Conditional Roles):可以基于IP、时间、资源标签等条件动态授权。

嗯,这里要注意:GCP的Service Account默认有「自动生成密钥」的能力,但密钥一旦泄露风险很大。我曾经帮一个客户做安全审计,发现他们有个Service Account的密钥居然硬编码在代码里,而且有项目删除权限。那场面,想想都后怕。

3.4 阿里云RAM:中国市场的「本土化标杆」

阿里云的RAM(Resource Access Management)是四大云里最「年轻」的,但迭代速度很快。如果你主要做中国市场,阿里云RAM是绕不开的。

核心概念

  • RAM用户:对应一个人或应用,有独立的登录密码和AccessKey。
  • RAM角色:类似AWS的Role,可以被阿里云服务或外部身份扮演。
  • 权限策略:JSON格式,支持系统策略(预定义)和自定义策略。
  • 资源组:将资源分组管理,权限可以绑定到资源组级别。

阿里云RAM有一个让我印象深刻的特性:「信任策略」。你可以设置一个RAM角色只能被特定阿里云账号或特定服务扮演。这在多云场景下特别有用——比如你让AWS的某个服务扮演阿里云的RAM角色来读取OSS数据,信任策略就是安全的第一道防线。

避坑指南:我曾经在阿里云上配置跨账号访问时,发现RAM角色的「信任策略」和「权限策略」是两个独立的东西。信任策略决定「谁能扮演这个角色」,权限策略决定「扮演后能做什么」。很多新手只配了权限策略,忘了配信任策略,结果角色永远无法被扮演。记住:两个都要配。

阿里云还有一个「RAM用户无权限」的默认行为:新创建的RAM用户默认没有任何权限,你必须显式授权。这跟AWS的「隐式拒绝」逻辑一致,但跟Azure AD的「默认允许部分操作」不同。设计统一方案时,这个差异要特别注意。

3.5 四大云厂商身份服务对比总表

维度 AWS IAM Azure AD GCP Cloud Identity 阿里云RAM
推出时间 2011年 2013年(Azure AD) 2015年(Cloud Identity) 2015年(RAM)
核心模型 策略驱动 目录驱动 资源继承 策略驱动
用户类型 IAM User Azure AD User Google Account / Cloud Identity Account RAM User
非人类身份 IAM Role Service Principal / Managed Identity Service Account RAM Role
权限粒度 资源级ARN,条件丰富 管理平面 + 数据平面,支持条件访问 项目/资源级,支持条件角色 资源级,支持资源组
外部IdP支持 SAML 2.0, OIDC SAML 2.0, OIDC, WS-Fed SAML 2.0, OIDC SAML 2.0, OIDC
临时凭证 STS(最长36小时) 访问令牌(最长24小时) OAuth 2.0令牌(最长1小时) STS(最长1小时)
中国市场适配 一般(需使用中国区) 一般(由世纪互联运营) 较差(无中国区) 优秀(本土化完善)

3.6 一张图看懂四大云身份服务的关系

下面这张SVG图,我用「身份源」和「权限模型」两个维度,把四家云厂商的位置画了出来。你可以看到:Azure AD偏身份源侧,AWS和阿里云偏权限模型侧,GCP则居中。

四大云身份服务定位图 权限模型复杂度 → 简单 复杂 身份源能力 → 强 弱 Azure AD 身份源强,权限模型适中 GCP Cloud Identity 两者均衡 AWS IAM 权限模型强,身份源弱 阿里云RAM 权限模型强,身份源弱 说明:身份源强 = 支持目录同步、条件访问、外部IdP集成;权限模型强 = 支持资源级细粒度策略、条件判断

3.7 选型建议:你的场景适合哪家?

看完对比,你可能想问:那我到底该选哪家?其实没有标准答案,但有几个判断维度可以参考。

  • 如果你已经有企业AD或微软生态:Azure AD是天然选择。它的目录同步和条件访问能力,其他三家暂时追不上。
  • 如果你追求极致的权限控制:AWS IAM的Policy语法最灵活,适合复杂的企业合规场景。
  • 如果你主要做中国市场:阿里云RAM的本土化做得最好,比如支持手机号登录、实名认证等。
  • 如果你团队小、追求简洁:GCP Cloud Identity的「资源继承」模型上手最快,适合初创团队。

重要提醒:多云身份统一方案的核心不是「选哪家」,而是「如何让它们协同工作」。下一章我们会深入这个话题,但在此之前,请确保你理解了每家云厂商的身份服务边界。我曾经见过一个团队,花三个月写了一个「万能适配器」,结果发现Azure AD的OIDC令牌和AWS的STS令牌根本不能互换——这就是没理解边界的结果。

好了,这一章的内容就到这里。记住:对比不是为了分高下,而是为了在统一方案中「各取所长」。你想想看,如果能把Azure AD的身份源能力、AWS的权限控制、GCP的简洁性、阿里云的本土化结合起来,那才是真正的「多云身份统一」。