身份与权限的最佳实践

在云环境中,身份是云环境中执行操作的实体,权限是安全边界的基石。遵循阿里云卓越架构框架(Alibaba Cloud Well-Architected Framework),并结合访问控制(RAM)的产品功能,是构建安全、合规、可扩展云上体系的核心。本指南将从人员身份、程序身份、权限管理三个维度,为您提供一套理论与实践相结合的最佳实践。

人员身份最佳实践

人员身份代表您的企业员工或组织成员,如安全管理员、运维或开发人员等用户。管理的核心在于集中化、精细化,并建立多层防护。

1. 避免使用主账号进行日常运维

  • 最佳实践:阿里云主账号类似于Linux系统中的root用户,拥有所有权限,但不适合日常使用。最佳实践建议如下:

    1. 创建一个拥有管理员权限的RAM用户,专门用于日常管理和技术操作。

    2. 阿里云账号仅在必要时使用,并妥善保管账号密码及MFA等相关凭证。

    3. 所有日常操作都通过RAM管理员用户完成,避免阿里云账号暴露在日常环境中。

  • 操作建议:

    • 创建独立RAM用户:建议首先创建一个有管理员权限的RAM用户,参考创建RAM用户作为管理员,然后为您组织内的每一位成员创建独立的RAM用户,参考创建RAM用户并授权

    • 为主账号启用MFA:参考配置账号的MFA完成对主账号的安全加固,并仅在必要时启用主账号,并妥善保管主账号的账号密码及MFA等。

2. 建立更安全的登录机制

  • 最佳实践:对于人员身份来说,保护好用户名和密码尤为重要。可以从以下几种方式提升登录方式的安全性:复杂的密码、定期轮换和MFA可以显著增加密码凭证被破解的难度。

  • RAM 功能操作指导:

    • 提升密码复杂度:通过设置RAM用户密码策略,修改RAM用户密码的最小长度、复杂度要求、以及密码有效期(如最长90天等),密码重试次数等,提升RAM用户密码的安全性。

    • RAM用户强制启用MFAMFA是在密码之外的第二道坚实防线,即使密码泄露也能有效阻挡非法登录。在管理RAM用户安全设置中,可以设置账号下所有RAM用户登录时必须使用MFA

3. 实现人员身份的统一认证(SSO)

  • 最佳实践:通过单点登录(SSO)将身份认证交由企业统一的身份提供商(Identity Provider,简称 IdP)管理,可以避免在云上维护一套独立的密码体系。同时,人员的入职、离职、权限变更都可以在IdP一处完成,实现身份的生命周期集中管理。

  • 操作建议:使用RAMSSO管理功能,基于SAML 2.0OIDC协议,将您的企业IdP(如企业Active Directory、Okta等)与阿里云的身份体系联合。您可以根据环境和登录需求选择配置用户SSO或者角色SSO

    说明

    说明如果企业使用资源目录RD(Resource Directory)管理多个阿里云账号,则更推荐使用SSO来实现多账号统一身份权限管理。

程序身份最佳实践

程序身份:代表应用程序或服务,通常通过API以非交互式的方式访问云资源和数据。程序身份适用于自动化脚本、应用程序开发、服务集成等场景。管理的核心是杜绝使用永久凭证,全面转向有时效的临时凭证。

1. 优先使用临时凭证(STS Token)

  • 最佳实践:永久AccessKey一旦创建,手动删除之前永远有效。AccessKey一旦泄露,风险持续存在。而通过RAM角色扮演的方式获取的临时凭证STS Token,在超过角色最大会话时间(小时级)后自动失效,即便意外泄露,其被利用的时间窗口也极小。

  • 操作建议:使用无AK方案获取STS Token(例如:ECS实例角色扮演、容器实例角色扮演、函数计算角色扮演等),彻底避免暴露AK。更多内容,请参见:使用访问凭据访问阿里云OpenAPI最佳实践

2. 正确保管和使用不可避免的AccessKey

  • 最佳实践:在某些无法使用STS Token的场景(如本地开发调试),若必须使用永久AccessKey,则应避免使用主账号AccessKey,确保一个AccessKey只用于一个应用的一个环境,并定期更换。

  • 操作建议:

    • 避免使用主账号AccessKey:在必须使用AccessKey的场景下,建议替换为具有适当权限的RAM用户的AccessKey,参考不使用主账号AccessKey

    • 避免共用Accesskey:为每个应用、每个环境(开发/测试/生产)创建独立的RAM用户和专用的AccessKey,参考创建AccessKey

    • 最小权限授权:为AccessKey所在的RAM用户授予该场景下的最小权限策略,可以定期识别过度授权,并按需管理权限策略授权

    • 严禁代码硬编码:通过配置系统环境变量KMS凭据管理等方式管理AccessKey,绝不将AccessKey明文写入代码库。

    • 访问限制:配置网络访问策略,限制AccessKey只能从特定的IP地址访问,参考AccessKey网络访问限制策略

    • 及时禁用并回收闲置AccessKey:设置AccessKey最大闲置时长,建议设置在365天以内,推荐90天,参考管理RAM用户安全设置

    • 监控审计:通过操作审计(ActionTrail)监控AccessKey的使用情况,及时发现异常行为。

权限管理最佳实践

权限是安全的核心,定义了“谁”可以对“什么”资源执行“何种”操作。管理的核心原则是“最小权限”和“职责分离”。

1. 授予最小必要权限

  • 最佳实践:仅授予身份完成其既定任务所必需的最少权限,可以最大程度地减小因凭证被盗用后可能造成的影响。

  • 操作建议:

2. 通过RAM用户组简化权限管理

  • 最佳实践:将权限与职责绑定,将单一RAM用户的权限变更简化为调整其所属的RAM用户组,提升管理效率并确保职责的一致性。

  • 操作建议:

    1. 创建RAM用户组:根据组织内的岗位职责创建RAM用户组,例如网络管理员,应用开发等岗位分组。

    2. 配置权限策略:按照岗位职责要求RAM用户组授权,而不是直接附加到RAM用户

3. 在多账号环境中设置权限边界

  • 最佳实践:对于云上有多个阿里云账号的组织,可以基于资源目录的管控策略,限制成员账号内的RAM身份权限范围

  • 操作建议:在启用资源目录的多账号环境下,当成员账号中的RAM用户RAM角色访问阿里云服务时,阿里云将会先进行管控策略检查,再进行账号内的RAM权限检查,参考管控策略。注意在绑定管控策略前,建议先进行局部小范围测试,确保策略的有效性与预期一致,然后再绑定到全部目标节点(资源夹、成员)。

参考阅读

  1. RAM基本概念:什么是访问控制

  2. 卓越架构:身份和访问控制