访问控制
访问控制(认证和授权服务),简称CIAM。
CIAM是资源访问控制服务,主要作用在于集中管理子账号,控制子账号可以访问哪些资源,通过CIAM,解决了公有云环境中如下两个安全问题:
- 每次的API调用者是否为可信实体
- 调用API的可信实体是否被授权访问资源
应用场景与实践
IAM使用场景
使用场景:企业用户账号管理与分权
场景描述
企业A的某项目上云,购买了多种云资源(如CEC实例/CLB实例/COS对象存储桶等)。项目里有多个员工需要操作这些云资源,比如有的负责购买,有的负责运维等。由于每个员工的工作职责不一样,需要的权限也不一样。出于安全或信任的考虑,项目负责人不希望将云账号密钥直接透露给员工,而希望能给员工创建相应的子账号。用户账号只能在授权的前提下操作资源,不需要对子账号进行独立的计量计费,所有开销都从A的账户中扣除。同时,A随时可以撤销子账号的权限,也可以随时删除其创建的子账号。
需求说明
- 杜绝多员工共享主账号,防止主账号密码或AK泄露导致风险不可控
- 给不同员工分配独立用户账号,并独立分配权限,做到责权一致
- 所有用户账号的所有操作行为可审计
- 无需核算每个操作人员的成本,所有费用统一计入主账号账单
解决方案
使用IAM用户账号与授权管理功能,如下图所示:
CIAM最佳实践
不要为主账户创建访问密钥
由于主账户对名下资源有完全控制权限,所以为了避免因访问密钥泄露所带来的灾难性损失,我们不建议创建主账号访问密钥并使用该密钥进行日常工作。只要主账户不主动创建访问密钥,账号名下的资产安全风险可控。
将控制台用户与API用户分离
不建议给一个CIAM子用户同时创建用于控制台操作的登录密码和用于API操作的访问密钥。通常只给员工创建登录密码,给系统或应用程序只创建访问密钥。
撤销用户不再需要的权限
当一个用户由于工作职责变更而不再使用权限时,您应该及时将该用户的权限进行撤销。这样,如果在不知情的时候,当用户的访问凭证泄露时对您带来的安全风险最小。
使用用户组给IAM用户分配权限
一般情况下,您不必对CIAM子用户直接绑定权限策略,更方便的做法是创建与人员工作职责相关的用户组(如admins、developers、accounting等),为每个用户组绑定合适的权限策略,然后将子用户加入这些用户组,用户组内的所有用户共享相同的权限。这样,如果您需要修改用户组内所有人的权限,只需在一处修改即可。当您的组织人员发生调动时,您只需更改用户所属的用户组即可。
遵循最小授权原则
最小授权原则是安全设计的基本原则。当您需要给用户授权时,请授予刚好满足他工作所需的权限,不要过渡授权。比如,在您的组织中,如果Developers组员(或者一个应用系统)的工作职责只需要读取COS存储桶里的数据,那么就只给这个组(或应用系统)授予COS资源的只读权限,而不要授权COS资源的所有权限,更不要授予对所有产品资源的访问权限。