文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

DevOps优秀实践之用户与权限

2024-11-30 07:06

关注

本系列内容是我们在不同项目的维护过程中总结的关于 DevOps/SRE 方面的最佳实践,我们将致力于在项目上尽最大的努力来推行这些最佳实践。我们希望这些最佳实践能对项目的稳定运营提供帮助,也希望刚接触 DevOps/SRE 的新人能通过学习这些最佳实践来提升自己在这方面的水平。

用户和权限管理对于维护一个安全可靠的基础设施和应用资源至关重要。在当今快节奏和协作的开发环境中,确保合适的人员拥有系统、资源和数据的适当访问权限非常重要。通过实施用户与权限管理实践,组织可以降低未经授权访问的风险,减少人为错误,强制执行安全控制,符合法规。

在本文中,我们将探讨一组最佳实践,包括给每个用户建立独立的账号,给每个服务建立专用的账号,减少使用特权账号,使用角色而非用户账号,定期进行轮换长期凭证的密码或访问密钥,最小化权限原则,定期查看并移除未使用的用户、角色、权限等凭证,分离开发、测试和生产环境权限,使用强密码策略,使用多重验证,开启审计日志。以在 Devops/SRE 流程中建立坚实的用户和权限管理基础。通过遵循这些实践,您可以提高系统的安全性、效率和明确责任,促进协作,并保持流程的简化。

给每个用户建立独立的账号

在任何的系统中,我们都强烈建议给每个用户建立独立的账号,而非使用共享账号。相比共享账号,独立账号可以更明确地划分用户的归属和权限,便于最小化权限管理,并减少账号泄露的风险。此外,独立账号还方便后续的风险评估和操作审计等工作。

优点:

缺点:

实施要点:

给每个服务建立专用的账号

一些自动化工具会需要和相关的系统/平台进行交互操作,大部分的系统/平台都会对类似的操作鉴权,因此这些工具也需要对应账号来完成相应的验证。我们建议给类似的需求建立服务专用的账号,为方便管理,可以给账号名称上加上一些表意的前后缀,比如 svc 或者machine_user 等来区分账号的属性。

如果需要使用的第三方服务并不需要每个团队成员都注册账号,我们建议使用一个管理专用而非个人所属邮箱等信息来注册,以避免团队成员变动带来的账号无法保留等影响。

优点:

缺点:

实施要点:

实施示例:

(1)以 Github 为例,在代码管理平台上为 CI/CD 平台的 agent 创建单独的账户

(2)以 Nexus 为例,在制品库平台上为 CI/CD 平台的 agent 创建单独的账户。例如,创建 -build-automation 的用户来推送拉取构建镜像

减少使用特权(root)账号

在任何系统的日常管理工作中,在非必要的情况下,我们强烈建议不要使用特权(root)账号来进行操作。特权账号具有系统所有权限,疏忽和不慎的操作有可能带来极大的损失。如果是在多人管理的情况下,也会增加账号泄漏的风险。同时,我们强烈建议对于特权账号施行一切必要的安全管理,比如强密码,开启多重验证,及时的操作审计等。

优点:

缺点:

实施要点:

(1)保护和减少使用云服务账号根用户(以 AWS 为例):

(2)限制应用程序的权限

(3)日常操作数据库时,应使用普通权限的账号而非管理员账号

(4)加强对特权账号的审计和监管

使用角色而非用户账号

用户应该被分配到特定的角色,这些角色决定了他们在系统中的访问级别。不同的角色通常被赋予一系列不同的权限。一些平台,比如AWS,支持角色使用临时认证进行获取操作权限,所以我们建议在你的业务或者操作支持的情况下,使用角色 (Role) 而非用户账号来完成对应的操作。

优点:

缺点:

实施示例:

(1)例如 AWS:AWS Identity and Access Management (IAM) 提供了角色的临时认证功能。这使得我们可以方便地创建角色,并使用临时凭证来获取对 AWS 资源的操作权限,而无需使用长期凭证(如用户名和密码)。以下是一个具体的例子:假设我们在 AWS 上有一个 EC2 实例,并且想要让该实例能够访问 S3 存储桶。以下是如何使用角色进行临时认证的具体步骤:

通过使用角色的临时认证,可以避免在 EC2 实例上设置和管理长期凭证。相反,EC2 实例可以通过角色来获取所需的临时凭证,并且这些凭证具有定义的 S3 访问权限。这提高了安全性,并简化了凭证管理过程。

请注意,上述示例仅适用于AWS,并且是一个具体的用例。其他平台和服务可能具有类似的功能和实现方式,但具体细节可能会有所不同。而且上述的步骤在实际的使用中是需要 as code 的,拒绝任何人为的步骤。

(2)例如 Github:在 Github 中的组织中,我们可以创建团队,为团队分配权限和访问控制。通过创建团队,可以将一组人员组织在一起,并为他们分配某个代码仓库的特定的权限角色,例如 Admin/Write/Read 等 role,分别对应读取或写入等操作代码仓库的权限。这样,我们可以更容易地管理团队成员的访问权限,而不是单独为每个成员设置权限。

对于长期凭证,定期轮换密码或访问密钥

长期凭证(如密码、访问密钥、证书等)是指用于身份验证和授权的凭证,它们被分配给个人或应用程序,以便它们可以访问系统或服务。长期凭证容易被盗用或泄露,如果不及时轮换,可能会导致安全漏洞。定期轮换长期凭证是一种重要的安全管理措施,可以帮助组织降低风险,符合安全合规要求,防止不可撤销的访问权限,并提高安全意识。

优点:

缺点:

实施示例:

(1)对需要轮换的凭证设置监控或通知,务必确保监控或通知系统的可用性。

(2)对更换周期要仔细斟酌,没有适合所有系统的最优解。

(3)使用密钥扫描工具对代码库进行扫描,避免代码中出现硬编码的密钥,例如:

(4)定期检查证书是否需要使用较新的 cipher,增强系统安全性。

(5)记录和完善文档

最小化权限原则

最小化权限原则是指系统的每个程序或者用户都应该使用完成工作所需的最小权限工作。最小权限原则限制操作所需的权限,降低账号或者系统在被恶意利用时造成的损失。因此在给账号或者角色赋权时,尽可能只赋予操作所需的权限,应为用户提供履行其工作职责所需的最低访问级别,而非随意扩大权限范围,这有助于降低意外或故意滥用特权的风险。即使我们需要给一些临时的操作赋权,也不要赋予不必要的额外权限,并在操作完成之后清理临时权限。如有可能,我们也建议新建临时账号来完成此类操作,而非扩大原有账号的权限。

优点:

缺点:

实施要点:

定期查看并移除未使用的用户、角色、权限等凭证

我们建议定期去查看系统中是否有未被使用的凭证信息,如果发现要及时进行清理或禁用,以防止不必要的访问权限和潜在的安全风险,提高安全水平。

优点:

减少混淆:可以直接专注于真正在使用中的用户、角色和权限。

缺点:

实施要点:

分离开发、测试和生产环境权限

我们日常大部分的工作场景都有多个环境,我们建议对于开发、测试和生产环境应该分别有不同的权限管理策略,以确保每个环境都具有正确的访问权限,并且不会影响其他环境的安全性。

优点:

缺点:

实施要点:

实施示例:

以 AWS 为例,对于部署在 AWS 上的服务,我们建议:

(1)将开发,测试和生产环境账号分开,部署在不同的 AWS Account 里,实现整个环境的隔离

(2)分别为用户在不同环境创建不同权限的 IAM role,例如:

使用强密码策略

我们强烈建议使用强密码策略,一个安全的密码应该不少于12个字符,至少有三种不同的字符,如数字,特殊字符,大小写字母。应避免在密码中包含个人信息,如出生日期或名字,宠物或乐队。还要避免歌词,伴侣和常用词组等。并且我们建议不要使用重复密码,尽可能在不同的系统中使用不同的密码,并定期更换密码。

优点:

缺点:

实施示例:

例如 AWS:可以在 AWS IAM 中设置如下的用户密码策略,任何用户的密码必须遵守设置的策略:

使用多重验证(MFA)

多重验证(MFA)是一个额外的安全措施,要求用户在被授予系统访问权限之前提供多种形式的身份验证。这可能包括发送到手机或其他设备的密码或代码。如果对应的系统支持多重验证,我们建议开启使用多重验证功能。并且不要把密码管理工具和MFA工具安装在同一设备上。

优点:

缺点:

实施要点:

开启审计日志

如果你的系统支持记录审计日志,我们建议开启审计日志并保存至少半年的记录。审计日志本身是法律刚性需求,是安全合规性检查的必备材料之一。

优点:

缺点:

实施要点:

来源:Thoughtworks洞见内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯