3. 多个层面构建的安全与合规能力
云上安全与合规涉及多个层面,从客户上云开始接触云账号的安全,创建实例后实例内GuestOS的应用系统安全,使用时实例所在的网络环境安全,对高敏感信息有要求的信息数据安全,到使用云安全产品构建安全防御体系,以及涉及大量云上资源管理等一系列安全实践。
1) 云账号安全
身份和访问管理是当今IT行业面临的最大挑战之一,也深受云计算的影响。云的IAM(Identity and Access Management,身份认证与访问管理)解决方案实现零信任安全,并且在每个资源的访问点评估访问请求。这将允许每个应用程序、每个策略和每个访问场景的分布式访问决策,基于云的IAM解决方案允许组织使用单点登录、多因素身份验证和访问控制来直接提供对云服务的安全访问。
账户是资源使用的硬边界,我们建议根据功能、业务、合规性要求等来进行账号的分配和隔离。在多用户需要协同操作资源的场景中,建议避免直接共享使用账号,共享账号的密钥等机密信息会大大增加泄露风险,一旦泄露会威胁账号下所有资源的安全。建议使用访问控制创建用户和用户组,并授予各用户和用户组最小权限,可以有效降低风险。
阿里云提供身份和访问管理的以下安全功能,在账号级别防范风险。
• 身份认证:用户可以使用其云账号(即主账号)或其云账号下RAM用户的密码登录阿里云控制台并对其云上资源进行操作,或者使用阿里云的Access Key(AK)通过API访问阿里云资源时对用户身份进行认证,也可以通过阿里云Security Token Service(STS)为RAM用户、阿里云服务、身份提供商等受信实体提供短期访问资源的权限凭证的云服务。颁发令牌时,管理员可以根据需要来定义令牌的权限和自动过期时间(默认为1小时过期)。此外,阿里云还支持MFA认证、SSO认证、SSH密钥对认证方式。
• 访问授权(RAM):阿里云为客户提供了多种工具和功能,用来帮助客户在各种情况下授权资源的使用权力。其中,阿里云为客户提供Resource Access Management(RAM)资源访问控制服务,用于用户身份管理与资源访问控制。RAM使得一个阿里云账号(主账号)可拥有多个独立的子用户(RAM用户),从而避免与其他用户共享云账号密钥,并可以根据最小权限原则为不同用户分配最小的工作权限,从而降低用户的信息安全管理风险。RAM授权策略可以细化到对某个API-Action和Resource-ID的细粒度授权,还可以支持多种限制条件(例如,源IP地址、安全访问通道SSL/TLS、访问时间、多因素认证等)。
常见的提升账号的安全措施有下面的手段:
a) 开启MFA多因素账号认证
建议账号启用MFA多因素认证,即在用户名和密码(第一层安全要素)的基础上,增加了MFA安全码(第二层安全要素,MFA设备生成的动态验证码),以此提高账号安全性。
b) 使用RAM子账号而不是主账号并合理设置资源安全隔离
确保用户访问ECS资源使用最小使用权限,避免共享账号或是过于宽泛的授权。通过使用访问控制RAM(Resource Access Management),建议禁止直接使用主账号进行资源操作,可创建RAM子用户(组)并授予特定权限策略实现在账号维度上对云服务器ECS资源进行细粒度的访问控制。同时为了限制发起调用的子账号的网络范围,可以设置公网支持访问的CIDR地址。
• 用户:如果您购买了多台云服务器ECS实例,您的组织里有多个用户(如员工、系统或应用程序)需要使用这些实例,您可以创建多个子用户并通过授权的方式使部分用户能够有权使用这些实例,避免了将同一个AccessKey泄露给多人的安全风险。
• 用户组:您可以创建多个用户组,并授予不同权限策略,起到批量管理的效果。
• 用户组的策略:
。 SysAdmins:该用户组需要创建和管理的权限。您可以给SysAdmins组授予一个权限策略,该策略授予用户组成员执行所有ECS操作的权限,包括ECS实例、镜像、快照和安全组等。
。 Developers:该用户组需要使用实例的权限。您可以给Developers组授予一个权限策略,该策略授予用户组成员调用DescribeInstances、StartInstance、StopInstance、RunInstance和DeleteInstance等权限。
c) 云产品API调用使用实例角色而不是AK
实例RAM角色(推荐使用加固模式访问元数据)允许您将一个角色关联到ECS实例,在实例内部基于STS(Security Token Service)临时凭证(临时凭证将周期性更新)访问其他云产品的API。一方面可以保证AccessKey安全,另一方面也可以借助RAM实现权限的精细化控制和管理。
一般情况下,ECS实例的应用程序是通过用户账号或者RAM用户的AccessKey访问阿里云各产品的API。
为了满足调用需求,需要直接把AccessKey固化在实例中,如写在配置文件中。但是这种方式权限过高,存在泄露信息和难以维护等问题。因此,阿里云推出了实例RAM角色解决这些问题。
d) AK防泄密
阿里云账号AccessKey是客户访问阿里云API的密钥,请务必妥善保管。请勿通过任何方式(如Github等)将AccessKey公开至外部渠道,以免被恶意利用而造成安全威胁。AccessKey泄露会威胁所有资源的安全,可以有效降低AccessKey泄露的风险。
AK信息使用安全建议
在使用阿里云产品过程中需要用户遵循以下几点安全规范,降低凭证泄漏造成的影响:
• 不要将AccessKey嵌入代码中
• 定期轮换AccessKey
• 定期吊销不需要的AccessKey
• 遵循最小权限原则,使用RAM账户
• 开启操作日志审计,并将其投递至OSS和SLS长期保存和审计
• 可以开启acs:SourceIp限定公网IP网段访问阿里云API
• 通过设置acs:SecureTransport取值为true,表示通过HTTPS方式访问阿里云
e) 账密管理安全建议
• 云账号
。 管理员账号必须开启MFA认证。
。 账号分级权限设置,最小权限授权原则。
。 禁用root账号访问API或常用请求方法。
。 建议使用服务目录集中身份管理。
• 秘钥凭据
。 过期的证书、凭据禁止使用。
。 根账号需删除访问秘钥。
。 30天以上不再使用的秘钥、凭据定期清理。
。 秘钥、凭据最新使用情况监控。
。 定期自动扫描您的GIT仓库和历史记录排查秘钥泄露可能。
• 密码
。 密码复杂性与到期提醒,密码强度校验。
。 密码复杂度策略强制实施。
。 设置与其他平台不一致的复杂账密,避免被社工风险。
。 建议AK以及其他账密信息使用KMS安全托管,避免明文落盘存储。
。 主机上不同账号间不应共享密码或秘钥对。
• 机密信息使用KMS安全加固托管
机密数据明文落盘存储会导致泄漏风险,建议您提前开通密钥管理服务,无需自行研发和运维密码设施,即可在云服务中使用数据加密功能,例如在云服务器ECS中使用云盘加密、实例可信启动等功能。
《CloudOps云上自动化运维 白皮书2.0》—— 七、安全和合规能力Security——3. 多个层面构建的安全与合规能力(2):https://developer.aliyun.com/article/1222438?groupCode=ecs