应用部署初探:6个保障安全的最佳实践

应用,部署,初探,保障,安全,最佳,实践 · 浏览次数 : 66

小编点评

**安全部署应用程序的6个最佳实践** 1. **控制部署的触发方式** - 避免使用不受信任的代码库、fork或分支进行自动部署。 2. **了解开发环境的安全问题** - 熟悉 Kubernetes 安全最佳实践,例如安全上下文设置。 3. **实施密钥策略** - 使用统一的密钥策略处理运行时和构建时密钥。 4. **采用 GitOps 实践** - 与 Kubernetes 的功能协同工作,确保多个租户以安全的方式使用资源。 5. **永远别用默认配置** - 不要使用与安全策略不一致的默认配置。 6. **运行自动测试** - 对代码安全性进行深入测试,以确保应用程序安全。

正文

在之前的文章中,我们了解了应用部署的阶段以及常见的部署模式,包括微服务架构的应用应该如何部署等基本内容。本篇文章将介绍如何安全地部署应用程序。
 

安全是软件开发生命周期(SDLC)中的关键部分,同时也需要成为 SDLC 中每个环节的一部分,尤其是部署。因此,保障应用部署安全并不是开始于部署阶段,而是从写下第一行代码开始就需要将安全纳入考虑的因素,即安全左移。
 

本文将会介绍6个保障应用部署安全的最佳实践,帮助您避免安全问题。这些最佳实践还可以保证部署过程的速度不受影响。
 

1、控制部署的触发方式

开发团队应该慎重管理触发自动部署到生产环境的代码,生产部署不应该从不受信任的代码库、fork或者分支中进行。
 

2、了解开发环境的安全问题

在启动一个新的软件项目之前,让开发团队熟悉相关系统环境的安全最佳实践是至关重要的。例如,Kubernetes 的安全上下文设置可以帮助开发团队理解 Kubernetes 安全的基本内容。当开发团队了解这些基础知识之后就可以极大程度减少人为错误。
 

这之所以重要是由于 Kubernetes 是历史上发展最迅速的开源项目之一,它被广泛应用于云原生开发和部署,对 Kubernetes 的安全最佳实践有深刻理解可以帮助团队避免安全失误,其他的容器编排系统也同理。
 

3、实施密钥策略

当使用动态服务来处理配置变化时,它们(或类似服务)也应该会处理相关的密钥。它们在运行时将密钥传递给容器,同时使用统一的策略来处理密钥,确保不同类型的密钥(即运行时与构建密钥)不被混淆,并保持测试和开发顺利。
 

应用程序仅需要在打包时构建密钥(比如,项目repo或文件存储凭证)。运行时密钥只有在部署之后才是必要的(比如,私钥、数据库密码以及 SSL 证书),因此开发者仅需传递必要的密钥到应用程序即可。
 

具体的策略并不重要,重要的时候坚持采用统一的策略。每个团队都必须在所有环境中使用相同的密钥处理策略,使其更容易跟踪密钥。这个策略应该是灵活的,以便于测试和部署。重点应该是密钥的使用,而不是其来源。


 

4、采用 GitOps 实践

GitOps 正逐渐成为安全的云原生和以Kubernetes为中心的CI/CD的首选方法。它同时提供了安全和快速部署,这是当前任何软件开发项目中最重要的两个方面。
 

根据许多优秀的开发人员和工程师的说法,GitOps 是一系列针对 Kubernetes 环境的实践,尤其是当单个集群资源被多个用户或团队共享时。
 

GitOps可以与 Kubernetes 的功能(如命名空间)协同工作,确保多个租户以安全的方式使用资源。这些做法通过保持租户之间的隔离、减少安全和可读性的风险来实现。当所有用户都在进行修改时,这一点尤其有帮助。
 

使用像 GitOps 这样的模式,可以确保任何用户所做的任何改变在进入最终构建之前都会被跟踪和批准。这不仅可以管理应用程序的更新,而且如果某个更新并没有像预期那样工作时,你可以轻松回滚到以前的版本。
 

5、永远别用默认配置

如果你正在使用开源项目,那么千万别用它们的默认配置,这点尤为重要。默认配置不一定与你的安全策略一致,因为它们关注的是商业、运营和功能上的成功,而不是安全。此外,它们是常识,任何人都可以利用它们。在这种情况下,你可以寻求商业平台和供应商的帮助。
 

这方面的一个典型例子是,在使用 Kubernetes 时,部署及其 pod 没有网络分段策略。这让所有的资产在它们之间进行通信。如果开发者想快速建立一个应用程序,这种默认设置是很方便的,但保留默认设置意味着,如果一个容器被攻击,威胁就会迅速蔓延。
 

6、作为部署的一部分运行自动测试

经过深思熟虑的测试可以帮助你对代码的安全性获得信心,反之糟糕的测试会妨碍你。如果条件允许的话,将测试自动化,使其支持部署流水线。简单的“测试”可以在每次代码修改时运行,资源密集型的测试可以保存到重要的版本。不要忽视失败的测试,你需要重新评估和重构不起作用的测试。

与应用部署初探:6个保障安全的最佳实践相似的内容:

应用部署初探:6个保障安全的最佳实践

在之前的文章中,我们了解了应用部署的阶段以及常见的部署模式,包括微服务架构的应用应该如何部署等基本内容。本篇文章将介绍如何安全地部署应用程序。 安全是软件开发生命周期(SDLC)中的关键部分,同时也需要成为 SDLC 中每个环节的一部分,尤其是部署。因此,保障应用部署安全并不是开始于部署阶段,而是从

使用K8S进行蓝绿部署的简明实操指南

在之前的应用部署系列文章里,我们已经介绍过什么是蓝绿部署。如需回顾,点击下方文章链接即可重温。本文我们将会介绍如何使用 Kubernetes 实现蓝绿部署。 应用部署初探:3个主要阶段、4种常见模式 应用部署初探:微服务的3大部署模式 应用部署初探:6个保障安全的最佳实践 前期准备: Kuberne

#PowerBi Superchange PowerBi 开篇(1)

本书由B站京西漫步老师推荐,并提供了相应的学习资源,有同感兴趣的朋友,可以加我好友免费分享资源。 本书主要以总结笔记,原文+译文+部分案例实操为主。 预计更新时间为23年6月-23年7月。 本系列笔记背景,笔者在经过一年左右的陆陆续续的学习和实践中,对Powerbi有了初步的应用和学习,但是零散的学

应用部署初探:3个主要阶段、4种常见模式

应用部署是一个将软件提供给用户的过程,通常包含配置环境、安装及测试等步骤。现如今,大部分企业在部署新的应用程序时,会至少自动化其中一些步骤。应用程序部署的策略会影响该应用的性能、稳定性以及运行速度,因此有时会在向所有人提供更新之前,先对一小部分用户进行测试。 软件开发和用户体验的现代标准要求开发人员

应用部署初探:微服务的3大部署模式

在之前的文章中,我们已经充分了解了应用部署的4种常见模式(金丝雀部署、蓝绿部署、滚动部署及影子部署)。随着云原生技术逐步成熟,企业追求更为灵活和可扩展的系统,微服务架构大行其道。 微服务固然有诸多优点,但也给架构及运维工程师带来了新的挑战。在单体架构中,应用的设计、部署以及扩展都是作为一个单元进行,

个人和初创企业想要搭建网站,如何挑选一台便宜合适的云主机?

一台云服务器,除了域名备案外,可以做很多事情,个人可以使用云服务器部署个人博客系统、论坛系统、私人网盘,部署各种后端服务,企业主要用来网站建设,适用于社区网站、企业官网、门户网站、电子商务网站、游戏类等各种应用,还可以用来数据库应用、制图渲染等等。 个人搭建博客、小型网站的话,1核2G配置即可。对于

frida动态插桩初探

前言 近期碰到了分析app的需求,就学习了一下 frida的动态插桩技术。frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在我们自己的控制机上。frida上

虚拟化技术浅析第二弹之初识Kubernetes

作者:京东物流 杨建民 一、微服务架构起源 单体架构:可以理解为主要业务逻辑模块(我们编写的代码模块,不包括独立的中间件)运行在一个进程中的应用,最典型的是运行在一个Tomcat容器中,位于一个进程里。单体架构好处是技术门槛低、编程工作量少、开发简单快捷、调试方便、环境容易搭建、容易发布部署及升级,

计算存储分离在京东云消息中间件JCQ上的应用

作者:田寄远 JCQ 全名 JD Cloud Message Queue,是京东云自研、具有 CloudNative 特性的分布式消息中间件。 JCQ 设计初衷即为适应云特性的消息中间件;具有高可用、数据可靠性、副本物理隔离、服务自治、健康状态汇报、少运维或无运维、容器部署、弹性伸缩、租户隔离、按量

应用部署引起上游服务抖动问题分析及优化实践方案

本文主要围绕应用部署引起上游服务抖动问题展开,结合百川分流系统实例,提供分析、解决思路,并提供一套切实可行的实践方案。