首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

云计算基础

  • 25-02-16 23:01
  • 3174
  • 13137
blog.csdn.net

声明
学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负


目录

一、云架构介绍

二、云服务

三、云分类

四、共享责任模型

五、云架构

六、云架构设计

七、集成部署

八、云设计模式

九、安全控制

十、容器与云

十一、容器的真相

十二、Capabilities

十三、Kubernetes(k8s)

十四、Kubernetes 的核心概念

十五、安装 Kubernetes

十六、部署应用到 Kubernetes

十七、访问应用

十八、扩展应用

十九、更新应用

二十、Git

二十一、安装 Git

二十二、Git 的安全措施


在过去,搭建一个应用程序可真是个大工程。得去购买服务器,租赁机房,进行安装、上架,还得拧螺丝、接网线。但如今,情况大不相同啦。现在很多基础设施都已经云化了。我们可以直接找像阿里云、腾讯云这样的云服务器厂家,购买一些云服务器,短短几分钟就能申请下来。基于这些云服务器,我们可以轻松地进行各种各样的应用部署。

一、云架构介绍

不管是防御系统还是进攻系统,强大的底层技术基础都是必不可少的。

从防御的角度来看,只有了解底层技术,我们才能知道如何构建防御体系。从进攻的角度讲,了解底层技术才能发现漏洞并开发出漏洞利用的方法。所以呢,攻击者和防御者都必须清楚对方的运作方式。

以前构建系统的时候,需要购买设备、租用数据中心机柜,然后搭建基础设施。随着处理器的不断进化,虚拟机出现了。它能把一台机器的资源分成多台机器来使用,提高了资源利用率,变得更加灵活可拓展,实现了从裸机基础设施到虚拟化基础设施的转变。接着,容器化技术登场,进一步提高了效率,实现了服务器、网络和存储的虚拟交付。现在,我们把最新一代的基础设施称为“云”,它可不是单一的技术哦,而是众多技术的集合。

二、云服务

云是一种 IT 基础设施系统,它将资源的创建抽象在容错、地理分布和可扩展的物理基础设施之上。并以服务器的形式按需求交付能力,非常易于使用,可以自动创建服务器、存储、网络等等。云基础架构必须稳定,不能频繁出现中断。地理分布的云基础设施能够提高容错能力,而且云必须能够快速扩展,以满足各种需求。

有很多公有云服务商,比如 Amazon Web Services(AWS)、Azure、Google(GCP),还有华为云、腾讯云、阿里云等等。组织可以使用 OpenStack 等工具在自己的数据中心搭建私有云,或者一部分业务运行在私有云中,一部分运行在公有云中。

三、云分类

  1. 基础设施即服务(IaaS):就像提供建筑材料和工具,让你可以自己搭建房子。

  2. 平台即服务(PaaS):类似有了基本框架的房子,你只需进行装修和布置。

  3. 软件即服务(SaaS):直接给你一个装修好可以直接入住的房子。

四、共享责任模型

云服务在提供容错和扩展的同时,也在不同层面增加了安全性的模糊性。如果是 AWS 程序漏洞导致大量数据泄露,AWS 不承担责任。但如果 AWS 数据中心物理安全遭到破坏,客户数据被盗取,AWS 就得承担责任。

五、云架构

  1. 虚拟化:把一台机器的资源分成多台虚拟机器,多台裸机汇集形成资源集群,隔离资源的使用,灵活且可扩展资源池。它抽象了硬件安装过程,但仍有改进空间,并非专为云而生。技术栈的灵活性和可定制性提升,促使了容器的出现。

  2. 容器:容器就像一个个独立的小空间,允许开发人员与堆栈各部分灵活交互,实现按需生成服务,提高网络抽象程度,方便应用迁移扩展,更高效地使用资源。系统管理和网络工程可以外包给其他公司。云是多种技术的集合。

六、云架构设计

  1. 组件选择:确定架构(这很难改),选择绑定或非绑定组件,可以自己开发、用开源的或者购买。云原生组件是为分布式系统设计的,CNCF 认证不是必须的,要安全编码,部分是开源的。

  2. 基础设施即代码(IaC):包括引导介质(Packer)、安装系统(Terraform)、自动配置(Ansible)、状态强制(Monit)。

七、集成部署

使用持续集成和持续交付(CICD)管道来构建环境,包括测试、测量和扫描代码更改的自动化测试和部署(GitOps)。要做到有弹性可靠,即任何单点故障都有故障转移或其他机制,让业务能持续提供(这叫冗余)。全球负载均衡(GSLB,比如智能 DNS、GTM)能解决客户单访问的单点故障隐患。还要平衡控制,控制保护系统免受漏洞和内部攻击的组件,应平衡控制和可用性。

八、云设计模式

云架构设计不必从头开始,采用已检验的设计模式是最佳选择。

  1. 微服务架构:为松散耦合、模块化服务而设计,微服务协同工作完成整体服务。每个服务都可以独立修改代码和重用,提高系统整体弹性和容错。大多数云利用微服务架构,云原生应用被构建充当微服务,便于水平扩展。安全优势是每个微服务应用强化、隔离,单一服务漏洞对整体系统影响小。缺点是调试更复杂,需要跨不同服务跟踪事务;性能可能有短板。

  2. 零信任架构:对资源的每个请求都需要验证来源已授权,然后授权短期访问(用令牌)。实现零信任架构的一种常见方法是 Open ID Connect(OIDC)联盟访问。授权处于活动状态时可以访问任何联合内服务。密码重置是针对零信任架构的常见攻击方式。

九、安全控制

  1. 网络控制:传统架构用防火墙实现网络控制,云环境网络抽象为 SDN、SD WAN。SDN 可以对不同的接口(如 API 或 GUI)设置网络规则。通过 mTLS 不仅能加密流量,还能对客户端进行身份验证,有证书才能访问微服务。不正确的访问管理可导致权限提升,甚至破坏整个基础设施。现代访问管理系统多使用令牌进行访问控制,提供对服务的短时访问权。JWT 通常用于访问云端资源,伪造和破解密码是常见攻击手段。另一种类型的权限控制机制是强制访问控制 MAC。

  2. 身份管理:企业通常用 AD、LDAP 进行身份管理。AWS IAM 是身份和访问管理的公共云服务。Google 联盟认证 OIDC 经常用于 2FA。云身份提供者(IdP)作为真实身份来源,是更安全的解决方案,比如 Azure AD。

十、容器与云

虚拟化中每个 VM 需要运行自己的操作系统,大大增加了总体开销。容器化是更现代的架构,容器共享内核与硬件,更快、更小、更高效。容器是对虚拟化的补充,而非取代。容器的系统开销更小,可以进一步分离应用组件,比如搜索、登录、查询、订单功能分开。容器使用映像作为模板生成,映像相当于计算机硬盘。容器使用不同发行版文件加载内核,运行容器。

在 Ubuntu 上生成 CentOS 7 容器,可以使用 Docker 这个流行的容器化工具。步骤如下:

  • 确保安装了 Docker。如果没有安装,可以使用以下命令安装:“sudo apt-get update”,这个命令让系统检查有没有新软件。“sudo apt-get install docker.io”,安装 Docker。

  • 拉取 CentOS 7 的官方 Docker 镜像:“sudo docker pull centos:7”。

  • 运行一个基于 CentOS 7 镜像的容器:“sudo docker run -it --name my_centos7 centos:7 /bin/bash”。

  • 使用exit退出容器,若要再次进入容器,可以先使用“docker ps -a”查看容器状态,若在运行则使用命令“docker exec -it 容器id /bin/bash” 进入容器,若没有在运行,则使用“docker start 容器id”开启容器后,在使用刚才的命令进入容器。

创建 Apache 容器后台运行:“docker container run -d --rm -p 8080:80 httpd”。

常用命令:

  • “docker container ls”:查看所有容器。

  • “docker exe -it 899 /bin/bash”:进入特定容器。899为容器的id

  • “docker container stop 899”:停止容器。

  • “dock container run -d --rm -p 8080:80 -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd”:挂载宿主机目录运行容器。

  • “docker container run -d --rm --network host -v /home/user/webroot/:/usr/local/apache2/htdocs/ httd”:侦听宿主机 80 端口运行容器。

  • “docker ps”:列出所有正在运行的容器。

  • “docker ps -a”:列出所有的容器,包括停止运行的。

  • “docker top ”:查看特定容器的进程信息。

Podman 是 Docker 的替代产品,无守护进程。

  • “sudo podman run -d --r-m --network host httpd”:运行容器。

  • “podman pod create --name wha”:创建空 pod。

  • “podman run -d --pod wha httpd”:在 pod 中运行容器。

  • “podman run -pod wha -it alpine/curl /bin/asho”:在 pod 中运行可找东西的工具并互动。

大部分容器化过程都采用开放容器计划(OCI)标准,所以 Podman 和 Docker 可互操作。

十一、容器的真相

Linux 没有单一被称为“容器”的特性。实际上,“容器”是阻止进程访问其他进程和资源的特性组合,发生在内核级别,可以控制其限制级别。

容器的历史:

  • 197x 年代引入 chroot,可以指示进程的新根目录,但不完美。命名空间可实现每个进程分离网络、进程和其他命名空间。

  • 1999 年 FreeBSD 发布 Jails,在 chroot 之上提供更多限制(Linux 不支持)。

  • 2002 年引入命名空间,分离内核资源。

  • 2006 年谷歌引入进程容器,后被称为 cgroup,可限制特定进程的内存和 CPU 资源。结合 cgroup 和命名空间发布了 Linux 容器(LXC)项目。

Linux 中有八种用户命名空间:挂载、进程 ID、网络、进程间通信、UTS、用户 ID、控制组、时间、syslog。

十二、Capabilities

Docker 默认不使用用户命名空间。为防止特权内核调用,它使用内核 capabilities 和 seccomp 配置文件限制访问。Linux 有特权或非特权进程。非特权进程有正确权限可写入系统文件,特权进程几乎无所不能。当非特权用户只需要特殊权限时,可使用 Capabilities。Linux 将一些系统级任务分组为 40 多个类别,称为 Capabilities。

常见 Capabilities:

  • CAP_CHOWN:允许进程修改文件所有者。

  • CAP_NET_ADMIN:对网络配置执行管理任务。

  • CAP_NET_BIND_SERVICE:允许绑定低于 1024 的端口。

  • CAP_NET_RAW:允许使用 RAW 套接字。

  • CAP_SYS_ADMIN:“根”权限(危险),启用过多功能集。

  • CAP_SYS_BOOT:允许重新启动主机。

  • CAP_SYS_MODULE:允许加载和卸载内核模块。

  • CAP_SYS_TIME:允许进程设置系统时钟。

  • CAP_SYS_CHROOT:允许使用 chroot。

  • CAP_AUDIT_WRITE:允许写入内核审计日志。

提升工具权限有隐患,可能被恶意用户利用,破坏系统、窃取敏感信息或完全控制整个系统。

十三、Kubernetes(k8s)

Kubernetes 通常简称为 K8s,是一个开源的容器编排平台。它可以自动化部署、扩展和管理容器化应用程序,在多个服务器上高效运行容器,确保应用的高可用性和可扩展性。

十四、Kubernetes 的核心概念

  1. Pod:是 Kubernetes 中最小的可部署单元,可包含一个或多个容器,这些容器共享网络命名空间和存储卷,一起被调度和管理。

  2. Deployment:用于管理 Pod 的副本数量和更新策略,确保应用始终保持指定数量的副本在运行,可实现滚动更新等功能。

  3. Service:定义一组 Pod 的访问方式,提供稳定的 IP 地址和端口,让外部可以访问到一组 Pod。

  4. Node:是 Kubernetes 中的工作节点,可以是物理服务器或虚拟机。每个 Node 上运行着 Kubelet 和容器运行时,负责管理容器的生命周期。

十五、安装 Kubernetes

  1. 安装 Minikube(用于本地开发的 Kubernetes 环境):下载安装包,根据操作系统选择合适版本,按照安装向导进行操作。

  2. 启动 Minikube:打开终端,运行“minikube start”命令。

十六、部署应用到 Kubernetes

  1. 创建一个 Deployment:“kubectl create deployment nginx --image=nginx”,部署 Nginx 服务器。

  2. 查看 Deployment:“kubectl get deployments”。

  3. 创建一个 Service:“kubectl expose deployment nginx --port=80 --type=NodePort”,让外部访问 Nginx 服务器。

  4. 查看 Service:“kubectl get services”。

十七、访问应用

在 Service 信息中找到 NodePort 的端口号,使用“:”在浏览器中访问 Nginx 服务器。

十八、扩展应用

  1. 扩展 Deployment 的副本数量:“kubectl scale deployment nginx --replicas=3”。

  2. 查看副本数量:“kubectl get deployments”。

十九、更新应用

  1. 更新 Deployment 的镜像:“kubectl set image deployment/nginx nginx=new-image:version”。

  2. 查看更新进度:“kubectl rollout status deployment/nginx”。

二十、Git

Git 是一个分布式版本控制系统,用于跟踪文件的变化,方便团队协作开发软件项目。可以记录文件的历史版本,允许开发者在不同版本之间切换,并且可以合并多个开发者的修改。

二十一、安装 Git

在不同操作系统上安装方法不同:

  • Windows:从 Git 官方网站下载安装程序进行安装。

  • macOS:使用 Homebrew 等包管理器安装 Git。

  • Linux:通过系统的包管理器安装 Git,如在 Ubuntu 上使用“sudo apt-get install git”。

二十二、Git 的安全措施

  1. 保护 Git 仓库很重要,因为它通常包含项目的源代码和敏感信息。

  2. 使用强密码,为 Git 远程仓库设置强密码,避免简单或常用密码。

  3. 限制访问权限,只授予必要人员访问权限,可使用 Git 提供的权限管理功能或第三方工具。

  4. 避免提交敏感信息,若不小心提交,可使用“git rm --cached <文件名>”从暂存区删除,然后“git commit --amend”修改上一次提交。创建“.gitignore”文件,列出不需要被跟踪的文件和目录。

  5. 确保与 Git 远程仓库的通信是加密的,可以使用 SSH 或 HTTPS 协议进行通信。

  6. 定期进行安全审计,检查 Git 仓库的安全性,包括权限设置、敏感信息泄露等,可使用第三方工具。

  7. 定期备份 Git 仓库,防止数据丢失,可以使用 Git 的备份工具或复制到其他存储设备中。

  8. 克隆仓库:“git clone <远程仓库地址>”。

  9. 处理冲突:当多个开发者同时修改同一个文件时,可能会出现冲突,在合并分支时需要手动解决冲突,然后提交更改。

  10. 创建分支:“git branch <分支名>”。

  11. 切换分支:“git checkout <分支名>”。

  12. 合并分支:在一个分支上完成工作后,可将其合并到另一个分支。先切换到目标分支,然后使用“git merge <源分支名>”命令进行合并。

  13. 初始化仓库:“git init”。

  14. 添加文件:“git add <文件名>”或“git add.”。

  15. 提交更改:“git commit -m "提交说明"”。

  16. 查看状态:“git status”。

  17. 查看历史记录:“git log”。

注:本文转载自blog.csdn.net的月敛苏时意的文章"https://blog.csdn.net/qq_74342020/article/details/143660824"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

116
云平台
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top