AWS支持外部身份系统以用户属性访问资源

AWS扩大支持以属性作为基础的访问控制(Attribute-Based Access Control,ABAC),用户现在可以在AWS对话(Session)中传递用户属性,把外部身份系统中定义的属性,用作AWS内部ABAC的一部分。

不少系统皆提供基于角色的访问控制(Role-Based Access Control,RBAC),这是一种限制系统仅供被授权用户访问资源的方法,在RBAC中,用户定义资源的访问权限,并把这些权限分组成政策,企业中的角色会被赋给这些政策,而角色会被指定给诸如人、服务器或是应用程序等实体。

但AWS提到,复杂的资源使RBAC难以被扩展,在新资源添加到系统之后,系统管理员必须要将新资源权限添加到所有相关的政策,但是当系统中存在上千种资源与上千种政策时,这个工作变得困难,当用户或是应用程序被授与了不必要的权限,系统管理员也难以验证权限配置的正确性。

为了在资源数量不断增长的情况下,简化系统管理员管理权限的工作,AWS提供了新兴管理典范ABAC,用户可以在政策中使用任何的属性,包括用户属性、资源属性和环境属性等,政策可以使用IF…THEN来编写规则,像是IF用户属性角色是经理,THEN可以访问文件属性为机密的文件资源。

而现在AWS进一步宣布,当使用标准SAML(Security Assertion Markup Language),以外部身份提供者(IdP)提供的身份,联合(Federation)连接进AWS,则可以在AWS对话中传递用户属性,访问具相同属性的资源。外部身份系统的管理员可管理用户属性,并在联合期间传递属性,这些属性称为对话标签,对话标签是临时标签,仅在联合期间有效。

要于AWS的ABAC上使用外部身份提供者,流程如下图,蓝、黄和绿代表三个不同的成本中心(Cost Center),企业可以用成本中心的标签标记所有项目资源,系统管理员可在外部身份系统的开发者对话中,加人成本中心标签,如此,只有具有相同成本中心标签值的连接,才能访问对应的标签的资源。

当用户需要变更访问不同标签的资源,则系统管理员只要更新外部身份系统连接的标签,在AWS中不需要进行额外更改授权的动作,AWS就会根据外部连接的标签,自动应用新的访问授权。AWS现在已经与Auth0、ForgeRock和IBM等多家企业的身份系统合作,确保系统对话的属性正确,而对于其他身份供应商来说,只要是使用标准SAML 2.0和OpenID Connect,也都可以配置对话标签。