本页面提供了与 DevOps 和云环境相关的安全实践的全面概述。它涵盖了基础安全概念、身份验证和授权机制、加密、基础设施安全、应用程序安全和威胁建模。有关云特定的安全实现,请参阅云平台,有关 Kubernetes 特定的安全实践,请参阅Kubernetes 管理。
DevSecOps 代表了将安全实践集成到 DevOps 软件交付模型中。它建立了一种文化,让开发、运营和安全团队共同负责在整个 IT 生命周期中交付安全的软件。
来源:topics/security/README.md4-13
零信任是一种安全概念,其核心是“永不信任,始终验证”的原则。它要求对尝试访问资源的每个人和系统进行严格的身份验证,无论其是否在网络边界之内。
零信任的关键组成部分
来源:topics/security/README.md15-19
最小权限原则是指为用户、角色和服务账户提供最少的权限,使其只能执行所需的功能。如果一个实体不需要访问权限,那么它就不应该拥有该权限。
优点
来源:topics/security/README.md21-25
身份验证是验证用户、服务或应用程序身份的过程。各种方法都用于身份验证,其安全级别各不相同。
| 身份验证类型 | 描述 | 安全级别 | 用例 |
|---|---|---|---|
| 基于密码 | 用户提供用户名和密码 | 基础 | 传统系统,简单应用 |
| 基于证书 | 使用数字证书来验证身份 | 高 | 安全通信,服务器身份验证 |
| 多因素 (MFA) | 结合多种身份验证方法 | 非常高 | 关键系统,敏感数据访问 |
| 基于令牌 | 使用临时令牌进行身份验证 | 中高 | API 访问,Web 应用程序 |
| 生物识别 | 使用物理特征(指纹等) | 高 | 物理访问,移动设备 |
| SSO(单点登录) | 一组凭据用于多个系统 | 可变 | 企业环境 |
MFA 要求用户提供两个或多个验证因子
这大大提高了安全性,因为仅凭一个因素的泄露不足以获得未经授权的访问。
来源:topics/security/README.md60-127
授权确定身份验证的用户在系统中可以执行的操作。
RBAC 是一种基于角色限制授权用户访问系统的方法。与直接将权限分配给用户不同,权限与角色相关联,然后将用户分配给相应的角色。
来源:topics/security/README.md49-55 topics/kubernetes/README.md60-66
对称加密使用相同的密钥进行加密和解密。虽然比非对称加密快,但共享密钥必须保密并安全分发。
示例:AES、DES、3DES
非对称加密使用一对密钥:公钥和私钥。用公钥加密的数据只能用相应的私钥解密,反之亦然。
示例:RSA、ECC、DSA
来源:topics/security/README.md215-225
TLS 是一种加密协议,用于在计算机网络上提供安全通信。它同时使用非对称和对称加密
TLS 提供
来源:topics/security/README.md392-393 topics/security/README.md475-477
哈希是一种单向函数,它将任意大小的输入转换为固定大小的字符串。与加密不同,哈希不能被反向操作以获得原始输入。
在安全中的用途
常用哈希算法:MD5(不安全)、SHA-1(已弃用)、SHA-256、SHA-3、bcrypt(用于密码)
密码加盐是在哈希密码之前添加随机数据(“盐”)的过程。这确保相同的密码会有不同的哈希值,从而防止
来源:topics/security/README.md251-260 topics/security/README.md165-170
网络安全侧重于保护基础设施免受未经授权的访问、滥用和修改。
关键组件
微隔离是一种安全方法,它将网络划分为安全区域,并通过精细的控制来管理谁可以访问网络的各个部分。它在网络级别实施零信任原则。
优点
来源:topics/security/README.md612-642
云安全包含保护云数据、应用程序和基础设施免受威胁的技术、策略、控制和服务。
| 服务 | 目的 | 主要功能 |
|---|---|---|
| IAM | 身份与访问管理 | 用户管理、MFA、权限策略 |
| 安全组 | EC2 实例的虚拟防火墙 | 控制入站和出站流量 |
| WAF | Web 应用程序防火墙 | 防止常见的 Web 漏洞 |
| Shield | DDoS 防护 | 保护 AWS 上的应用程序 |
| GuardDuty | 威胁检测 | 监控恶意活动 |
| Inspector | 自动化安全评估 | 识别应用程序中的漏洞 |
| CloudTrail | 活动监控 | 记录 API 调用以进行审计 |
| KMS | 密钥管理服务 | 创建和管理加密密钥 |
责任共担模型界定了云提供商和客户之间的安全责任
来源:topics/aws/README.md571-581 certificates/aws-cloud-practitioner.md569-582
容器安全涉及容器生态系统的保护,包括镜像、注册表、编排器和运行时环境。
重点关注领域
镜像安全
注册表安全
运行时安全
编排器安全(Kubernetes)
来源:topics/kubernetes/README.md60-66
OWASP Top 10 是面向开发人员和 Web 应用程序安全性的标准意识文档,代表了对 Web 应用程序最关键安全风险的共识。
| 排序 | 漏洞 | 描述 | 缓解 |
|---|---|---|---|
| 1 | 注入 | SQL、NoSQL、OS、LDAP 注入 | 使用参数化查询,验证输入 |
| 2 | 身份验证失败 | 弱身份验证,糟糕的会话管理 | 实施 MFA,安全的会话处理 |
| 3 | 敏感数据泄露 | 未受保护的数据 | 加密敏感数据,妥善的密钥管理 |
| 4 | XML 外部实体 (XXE) | 配置不当的 XML 处理器 | 禁用 XXE 处理 |
| 5 | 访问控制失败 | 限制未正确执行 | 实施访问控制,默认拒绝 |
| 6 | 安全配置错误 | 不安全的默认配置 | 加固配置,移除不使用的功能 |
| 7 | 跨站脚本 (XSS) | 不受信任的数据在浏览器中执行 | 输入验证,输出编码 |
| 8 | 不安全的反序列化 | 不受信任的数据反序列化 | 验证数据完整性,限制反序列化 |
| 9 | 使用存在已知漏洞的组件 | 过时的库 | 库存依赖关系,补丁管理 |
| 10 | 日志记录和监控不足 | 缺乏检测/响应 | 实施日志记录、监控、警报 |
来源:topics/security/README.md279-282
XSS 是一种攻击,恶意脚本被注入到受信任的网站中。当用户访问这些受感染的页面时,恶意脚本会在他们的浏览器中执行,可能会窃取敏感信息或代表用户执行操作。
XSS 攻击类型
防护措施
来源:topics/security/README.md285-289
SQL 注入是一种攻击,恶意 SQL 语句被插入到输入字段中,由后端数据库执行,可能允许攻击者
防护措施
来源:topics/security/README.md293-297
CSRF(跨站请求伪造)是一种攻击,它会强制已通过身份验证的用户在其当前登录的 Web 应用程序中执行非预期的操作。攻击者会诱使用户执行他们不打算执行的操作。
防护措施
来源:topics/security/README.md396-401
威胁建模是一种结构化方法,用于识别系统中的潜在威胁和漏洞,评估其风险,并确定适当的缓解措施。
常见的威胁建模方法
来源:topics/security/README.md268-276
中间人攻击发生在攻击者将自己插入用户与他们正在通信的系统之间时,通常是为了窃听通信或在传输过程中篡改数据。
防护措施
来源:topics/security/README.md334-335
分布式拒绝服务 (DDoS) 攻击试图通过海量互联网流量淹没目标或其周边基础设施,从而扰乱服务正常运行。
防护策略
来源:topics/security/README.md322-323
软件供应链安全专注于在整个开发和部署过程中保护代码和依赖项的完整性。随着现代应用程序经常包含大量第三方组件,这一点变得至关重要。
关键顾虑
最佳实践
包管理的安全注意事项
来源:topics/security/README.md514-533 topics/security/README.md543-584
安全的编码实践对于构建能够抵御攻击和保护敏感数据的应用程序至关重要。
关键原则
实施安全的编码实践需要
来源:topics/security/README.md323-326
安全是现代 DevOps 实践的关键方面。通过在整个开发生命周期以及所有基础设施层中集成安全性,组织可以更好地保护其系统、数据和用户。本文档中概述的安全实践为实施强大的安全控制奠定了基础,但安全是一个持续的过程,需要不断的评估、改进和警惕。
请记住,安全最强大之处在于分层应用(纵深防御),并且安全考虑因素应从一开始就融入系统,而不是事后添加。始终了解新兴威胁和不断发展的最佳实践,以保持有效的安全态势。