安全一直是 Amazon Web Services (亚马逊云科技) 的核心主题之一,无论是在云采用框架 CAF,还是在 Well-architected Framework 中。同样,安全也一直是亚马逊云大会 re:Invent 的热点内容,在讨论的众多方面里,亚马逊云科技身份认证安全是企业 IT 部署和运维中要面临的首要问题。
在这一类事件中,每一个操作者都不是有意为之,每一个攻击者也不需要很强的技术。因此,虽然安全技术很重要,但是比安全技术更重要的是安全规范和安全意识。
以下是两个常见的不规范操作,请各位小伙伴们注意避雷。
01:把秘钥上传到公网,被黑客截取后对账号进行危险操作。(X)
02:对存储桶设置了公网读写权限,导致重要信息的泄露。(X)
身份设置是使用亚马逊云科技的基础,开始使用亚马逊云科技之前必须要设置身份认证。本文将归纳总结如何从身份安全的角度来设计应用架构。亚马逊云科技中的身份认证服务是 Amazon Identity and Access Management (Amazon IAM),亚马逊云科技所有的服务都会使用 Amazon IAM 来决定如何访问其他的服务。因此,有必要对身份的安全最佳实践进行梳理,发现并修复资源、账户以及整个组织内的权限问题。通过这些安全检查,可以优化组织的亚马逊云科技身份,拥有更好的安全性。
在今年的亚马逊 re:Invent 上,关于亚马逊云科技身份认证的主题演讲就有 2 个:
十项身份健康检查提高云端的安全性:获取实用的建议和准则,帮助您在现有的亚马逊云科技环境中实现最小特权原则。
选择正确的 Amazon IAM 策略组合以进行扩展:本场会议将对不同的IAM策略进行战略和战术层面的概述。
围绕亚马逊云科技身份认证的安全实践,主要原则包括以下几点:
最小权限原则
避免在 Policy 的 Action 和 Resource 元素中使用通配符,要避免使用宽泛授权。
使用多个亚马逊云科技账号
根据环境类型(开发、测试、生产)等分类创建不同的亚马逊云科技账号,这样就可以清晰地拆分账单,以及从根本上设置用户操作的安全边界。
创建有意义的 Organizational Unit (OU) 结构
当组织创建越来越多的亚马逊云科技账号时,就需要使用 Amazon Organization 来管理账号,通过 OU 对账号进行分组。在使用 OU 对账号进行分组时,应该保证 OU 能够反映实际业务、环境,甚至组织架构。另外,Amazon Control Tower 和 Amazon Landing Zone 两项服务,可以帮助用户使用最佳实践创建亚马逊云科技账号结构,并实施初始安全基线。
使用服务控制策略 (Service Control Policy, SCP)
当认真构建了 OU 层级之后,就可以针对整个组织、OU,或者单独的成员账号,设置 SCP,进行账号层面的权限管控。
使用联合身份认证
如果组织已有企业目录,那么建议使用其对亚马逊云科技账号进行联合身份认证。这样,就可以避免在云上再单独维护一份身份清单,并且避免创建长期身份,即 IAM User。
使用 Role
要使用联合身份认证,需要创建 Role,以保证联合权限只在 Role 的过期时间内有效。另外,Role 应该用于运行在亚马逊云科技环境上的应用的授权,这样就不需要创建并分发长期秘钥。同时,Role 也应该用于跨账号访问的授权,避免为第三方应用创建组织账号内的长期权限。
清楚定义信任策略 (Trust Policy)
信任策略定义了谁(Principal)可以使用某个 Role。Principal 可以是用户、另一个Role、账号,或者 Identity Provider。当使用 Role 进行授权的时候,注意要清楚定义使用 Role 的 Principal,避免使用星号,如sts:assumerole:*。
尽量避免使用长期秘钥
在必须创建 Access Key 的情况下要保证密钥的安全,应当遵循如下五点:
1) 对 Access Key 设置 IP 白名单授权,保证只能从授权的服务器使用;
2) 不要把密钥硬编码到代码里;
3) 定时 Rotate Access Key;
4) 不要以明文发送 Access Key,应当加密文件,然后将文件和解密密码分两封邮件发送;
5) 不要把 Access Key 上传到 GitHub 等公网环境。
保证 root 用户的安全
除了一些特殊操作之外,永远不要使用 root 用户,尤其不应该使用 root 进行日常的运维操作。同时,在实践中应当遵循:
1) 删除 Access Keys;
2) 使用 SCP 限制 root 权限;
3) 启用 Multi-factor Authentication (MFA);
4) 设置强密码,并定期修改密码;
5) 将 root 用户邮箱设置为组邮箱,便于 root 找回。
保证 IAM User 安全
如果组织暂时无法使用联合身份认证,则需要在Amazon 创建User,应当遵循:
1) 创建 IAM Group,按照不同的用户角色对用户进行分组;
2) 设置强密码策略,并定期修改密码;
3) 为每个人创建单独的用户,不能多人共用 User;
4) 用户登录使用 MFA;
5) 使用 Amazon Config 审查没有设置 MFA 的用户;
6) 避免为个人用户创建秘钥,使用 CloudShell。
定期检查 Policy 设置
在最初设置 Policy 的时候使用 IAM Policy Simulator 模拟 Policy 的权限,以保证最小权限。之后使用 IAM Access Advisor 持续查看一定时间内没有被访问过的服务,然后在 SCP 中禁用这些服务。
定期检查未使用的身份
通过 Credential Report 检查一定时间内没有使用过的 Identity(Role、Access Key、User),并且将其禁用或者删除。
设置审计
对整个组织开启 CloudTrail,并且将 CloudTrail 日志存储到单独账号,以避免用户删除操作记录。同时,运维人员应该熟悉使用 Athena 等服务查询 CloudTrail 日志的方式。
上述建议从账号管理到用户管理,从最小权限原则到操作审计,都需要认真落实。让组织内每一个人都规范操作,建立起安全意识,预防安全事故的出现。聚云科技深知安全的重要性,因此从一开始就会对客户进行安全培训,并定期与客户沟通对配置进行巡检,保证客户账号环境的安全。