IAM(Identity and Access Management,身份验证及访问控制)是管理用户身份与资源访问权限的服务。IAM允许在一个账号下创建并管理多个身份,并允许给单个身份或一组身份分配不同的权限,从而实现不同的用户拥有不同的资源访问权限。IAM的功能特性如下:
集中控制IAM用户及其密钥:管理每个IAM用户及其访问密钥。
集中控制IAM用户的访问资源:控制每个IAM用户访问资源的权限。
集中控制云资源:对IAM用户创建的实例或数据进行集中控制。当用户离开组织时,实例或数据不会丢失。
账号(主账号,account)
使用本系统的云服务前,首先需要注册一个账号。该账号是云资源归属、资源使用计量计费的基本主体。账号为其名下所拥有的资源付费,并对其名下的所有资源拥有完全控制权限。默认情况下,资源只能被账号所访问,任何其他用户访问都需要获得账号的显示授权。账号就是操作系统的root或Administrator,所以我们有时称它为根账号或主账号。
身份(Identity)
IAM用户、用户组
IAM用户(IAM user)
IAM用户是IAM的一种实体身份类型,有确定的身份ID和身份凭证,它通常与某个确定的人或应用程序一一对应。
一个账号下可以创建多个IAM用户,对应企业的员工、系统或应用程序。
IAM用户不拥有资源,不能独立计量计费,由所属账号统一控制和付费。
IAM用户归属于账号(并不是独立的账号),只能在所属账号的空间下可见。
IAM用户必须在获得账号的授权后才能登录控制台或使用API操作账号下的资源。
登录密码(Password)
登录密码是登录管理系统的身份凭证,用于证明用户真实身份的凭证。请妥善保管您的登录密码并定时更换。
访问密钥(AccessKey)
访问密钥指的是访问身份验证中用到的AccessKey ID和AccessKey Secret。您可以使用访问密钥创建一个API请求,IAM通过AccessKey ID和AccessKey Secret对称加密的方法来验证某个请求的发送者身份,身份验证成功后将可以操作相关资源。AccessKey ID和AccessKey Secret一起使用,AccessKey ID用于标识用户,AccessKey Secret用于加密签名字符,IAM用来验证签名字符串的密钥。
用户组(IAM user group)
用户组是IAM的一种实体身份类型,用户组可以对职责相同的IAM用户进行分类并授权,从而更好的管理用户及其权限。在IAM用户职责发生变化时,只需将其移动到相应职责的用户组下,不会对其他IAM用户产生影响;当用户组的权限发生变化时,只需修改用户组的权限策略,就可应用到该用户组中的所有IAM用户。
权限(Permission)
权限是指是否允许用户对某种资源执行某种操作,权限分为:允许(Allow)或拒绝(Deny); 操作分为两大类:
资源管控操作:指云资源的生命周期管理及运维管理操作,所面向的用户一般是资源购买者或组织内的运维员工。例如:弹性云主机的创建、停止或重启, OSS存储空间的创建、修改或删除等。
资源使用操作:指使用资源的核心功能,所面向的用户一般是组织内的研发员工或应用系统。例如:弹性云主机实例操作系统中的用户操作,或OSS字眼空间的数据上传或下载。
权限策略(Policy)
权限策略是用语法结构描述的一组权限的集合,可以精确地描述被授权的资源集以及授权条件。 在IAM中,通过为IAM用户、用户组绑定权限策略,可以获得权限策略中指定的访问权限。权限策略是一种资源实体。目前IAM仅支持系统策略,系统策略已经预先统一创建,用户只能使用不能修改,策略的版本更新由本系统维护。
被授权主体(Principal)
获得策略中定义的权限主体,被授权主体可以为IAM用户、用户组。
效力(Effect)
权限策略基本元素之一,表示授权效力,取值为:允许(Allow)或拒绝(Deny)。
操作(Action)
权限策略基本元素之一,表示对具体资源的操作,取值为:云服务所定义的API操作名称。
限制条件(Condition)
权限策略基本元素之一,表示授权生效的限制条件。
资源(Resource)
资源是云服务呈现给用户与之交互的对象实体的一种抽象,例如:OSS存储空间或弹性云主机实例等。
使用IAM,您可以创建、管理IAM用户(例如员工、系统或应用程序),并可以控制这些IAM用户对资源的操作权限。当您的企业存在多用户协同操作资源的场景时,IAM可以让您避免与其他用户共享账号密钥,按需为用户分配最小权限,从而降低企业的信息安全风险。
企业A的某个项目上云,购买了多种云资源,例如:弹性云主机、RDS、负载均衡、OSS等。项目里有多个员工需要操作这些资源,由于每个员工的工作职责不同,需要的权限也不同。
企业购买了弹性云主机,并计划在弹性云主机中部署企业的应用程序。这些应用程序需要使用访问密钥(AccessKey)访问其他云服务API。
企业正在开发多个项目,每个项目都会用到多种云资源。企业可以通过创建资源组进行云资源分组,并可独立管理资源组内成员、权限和资源。