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

news2024/12/29 14:47:12

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

安全是软件开发生命周期(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、作为部署的一部分运行自动测试

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java反序列化——CommonsCollections中基础知识

一、CC链总结图二、常见类1、Map类 --> TransformedMapMap类是存储键值对的数据结构。 Apache Commons Collections中实现了TransformedMap ,该类可以在一个元素被添加/删除/或是被修改时(即key或value:集合中的数据存储形式即是一个索引对应一个值&a…

2022年Q4业绩超预期,被严重低估的Roku迎来反弹

在资本市场上,Roku应该是流媒体领域最具戏剧性的公司。它曾经被突发的疫情推向股价顶峰,但很快又随着疫情结束跌入谷底。 2022年对于Roku来说,仍然是继续探底的一年。随着股价跌回疫情发生前的水平,争论也开始越来越激烈&#xf…

spring-web HandlerMethodArgumentResolver 源码分析

HandlerMethodArgumentResolver 的使用处,解析参数 org.springframework.web.method.support.InvocableHandlerMethod#getMethodArgumentValues HandlerMethodArgumentResolver 在解析参数时使用,以下是使用处 InvocableHandlerMethod#getMethodArgume…

面试题----集合

概述 从上图可以看出,在Java 中除了以 Map 结尾的类之外, 其他类都实现了 Collection 接⼝。 并且,以 Map 结尾的类都实现了 Map 接⼝List,Set,Map List (对付顺序的好帮⼿): 存储的元素是有序的、可重复的。 Set (注重独⼀⽆⼆…

2.Telegraf简介

Telegraf简介 Telegraf是Influx公司一款基于插件化的开源指标收集工具.主要结合时序性数据库进行使用,用于性能监控.通常Telegraf会每间隔一段时间抓取一批指标数据并将数据发送给时序性数据库或其他自定义的Output. 官方文档 https://docs.influxdata.com/telegraf/v1.24 与…

分享7个比B站更刺激的老司机网站,别轻易点开

俗话说摸鱼一时爽,一直摸一直爽,作为一个程序员老司机了,一头乌黑浓密的头发还时不时被同事调侃,就靠这10个网站让我健康生活,不建议经常性使用,因为还有一句俗话,那就是“摸鱼一时爽&#xff0…

22- 隐马尔科夫HMM (NLP自然语言算法) (算法)

HMM模型 : from hmmlearn.hmm import GaussianHMM model GaussianHMM(n_components3,n_iter100000, covariance_type diag) model.fit(X) 1、马尔科夫链 有向图模型(贝叶斯网络):用有向图表示变量间的依赖关系; 无向图模型&…

【GlobalMapper精品教程】051:融合Dissolve操作详解

本节讲解globalmapper中融合Dissolve工具的使用。 文章目录 一、工具介绍1. 工具位置2. 融合工具二、案例实战1. 加载实验数据2. 根据字段分组融合案例一:根据地类名称分组,将相同的类型融合到一起。案例二:根据权属地类名称分组,将相同的类型融合到一起。一、工具介绍 1.…

UE4 手把手教你做插件(1) 从代码引用插件

0,前言 我看的是 技术宅阿棍儿 的视频,B站有。 系列视频:从代码引用插件_哔哩哔哩_bilibili 看不懂,只能边查资料边看,讲的顺序有点乱 1,根据视频提示创建第三方插件 注意:如果只有空白插件的情…

如何从手工测试进阶自动化测试?阿里10年测开经验分享...

随着行业的竞争加剧,互联网产品迭代速度越来越快,QA 与测试工程师都需要在越来越短的测试周期内充分保证质量。可是,App 测试面临着很多挑战,比如多端发布、多版本发布、多机型发布等等,导致了手工测试很难完全胜任。因…

使用yolov5和强化学习训练一个AI智能欢乐斗地主(一)

这里写自定义目录标题项目介绍项目过程介绍训练yolov5目标检测斗地主收集数据集yolov5调参项目介绍 你好! 欢迎阅读我的文章,本章将介绍,如何使用yolov5和强化学习训练一个AI斗地主,本项目将分为三个部分,其中包含&am…

一篇搞懂Mock测试

1. 什么是Mock测试 mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象/数据/场景,用一个虚拟的对象来创建以便测试的测试方法。 2. Mock测试常见场景 无法控制第三方系统接口的返回,返回的数据不满足要求依赖的接口还未开…

DEM数据下载——以地理空间数据云为例

数字高程模型(Digital Elevation Model)是进行地形分析的重要基础,诸如坡度、坡向及水文分析等都在此基础上进行。今天,我们一起来聊一聊一种DEM数据常见下载方式。按照惯例,先将网址列出:https://www.gscloud.cn/home…

2023年美赛 MCM B题 重新构想马赛马拉岛

背景肯尼亚的野生动物保护区最初主要是为了保护野生动物和其他自然资源。肯尼亚议会于2013 年通过了《野生动物保护和管理法》,以提供更公平的资源共享,并允许进行替代的、以社 区为基础的管理工作[1].此后,肯尼亚增加了修正案,以…

有特别有创意的网站设计案例

有人说 UI 设计师集艺术性与科学性于一身,不仅需要对工具的使用熟练,更需要对美术艺术有一定的基础了解。如果想要成为优秀的 UI 设计师是一个需要磨砺的过程,需要不断的学习和积累,多看多练多感受,其中对于优质的设计…

力扣53.最大子数组和

文章目录力扣53.最大子数组和题目描述贪心动态规划力扣53.最大子数组和 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例…

4、HAL库SPI数据收发

1、通过SPI轮询的方式实现数据收发 1.1、通过CubeMx配置SPI轮询的方式实现数据收发 SPI模式 CPOL CPHA 空闲时 SCK 时钟 采样时刻 0 0 0 低电平 奇数边沿(W25Qxx支持) 1 0 1 低电平 偶数边沿 2 1 0 高电平 奇数边沿 3 1 1 高电平 偶数边沿(W25Qxx支持)当前使用 生成代码工程 …

[计算机操作系统(慕课版)]第一章 操作系统引论(学习笔记)

操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。操作系统的主要作用: 管理硬件设备,提高他们的利用率和系统吞吐量 利用率:使硬件充分忙碌系统吞吐量…

Python|每日一练|树|深度优先搜索|数组|二分查找|链表|双指针|单选记录:填充每个节点的下一个右侧节点指针|搜索插入位置|旋转链表

1、填充每个节点的下一个右侧节点指针(树,深度优先搜索) 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *rig…

同一个整型常量怎样在不同进制间之间转换?

整型常量可以分别用二进制、八进制、十进制和十六进制表示,不同的进制并不影响数据本身的大小,同一个整型常量可以在不同进制之间转换,具体转换方式如下。1.十进制和二进制之间的转换(1)十进制转二进制。十进制转换成二进制就是一个除以2取余…