云盘算底子

守听  金牌会员 | 2024-11-17 02:35:07 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

免责声明
学习视频来自B 站up主泷羽sec,如涉及侵权立刻删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
云盘算底子

在已往,搭建一个应用步伐可真是个大工程。得去购买服务器,租赁机房,举行安装、上架,还得拧螺丝、接网线。但如今,情况大不相同啦。如今许多底子设施都已经云化了。我们可以直接找像阿里云、腾讯云如许的云服务器厂家,购买一些云服务器,短短几分钟就能申请下来。基于这些云服务器,我们可以轻松地举行各种各样的应用部署。
一、云架构介绍
不管是防御体系还是进攻体系,强大的底层技能底子都是必不可少的。
从防御的角度来看,只有了解底层技能,我们才能知道如何构建防御体系。从进攻的角度讲,了解底层技能才能发现漏洞并开辟出漏洞利用的方法。所以呢,攻击者和防御者都必须清楚对方的运作方式。
以前构建体系的时候,需要购买设备、租用数据中心机柜,然后搭建底子设施。随着处理器的不断进化,虚拟机出现了。它能把一台呆板的资源分成多台呆板来利用,进步了资源利用率,变得更加灵活可拓展,实现了从裸机底子设施到虚拟化底子设施的转变。接着,容器化技能登场,进一步进步了效率,实现了服务器、网络和存储的虚拟交付。如今,我们把最新一代的底子设施称为“云”,它可不是单一的技能哦,而是众多技能的集合。
二、云服务
云是一种 IT 底子设施体系,它将资源的创建抽象在容错、地理分布和可扩展的物理底子设施之上。并以服务器的形式按需求交付本领,非常易于利用,可以自动创建服务器、存储、网络等等。云底子架构必须稳定,不能频繁出现停止。地理分布的云底子设施能够进步容错本领,而且云必须能够快速扩展,以满足各种需求。
有许多公有云服务商,比如 Amazon Web Services(AWS)、Azure、Google(GCP),另有华为云、腾讯云、阿里云等等。组织可以利用 OpenStack 等工具在本身的数据中心搭建私有云,大概一部分业务运行在私有云中,一部分运行在公有云中。
三、云分类

  • 底子设施即服务(IaaS):就像提供建筑质料和工具,让你可以本身搭建房子。
  • 平台即服务(PaaS):类似有了根本框架的房子,你只需举行装修和部署。
  • 软件即服务(SaaS):直接给你一个装修好可以直接入住的房子。
四、共享责任模型
云服务在提供容错和扩展的同时,也在不同层面增加了安全性的含糊性。如果是 AWS 步伐漏洞导致大量数据泄露,AWS 不承担责任。但如果 AWS 数据中心物理安全遭到粉碎,客户数据被偷取,AWS 就得承担责任。
五、云架构

  • 虚拟化:把一台呆板的资源分成多台虚拟呆板,多台裸机汇集形成资源集群,隔离资源的利用,灵活且可扩展资源池。它抽象了硬件安装过程,但仍有改进空间,并非专为云而生。技能栈的灵活性和可定制性提拔,促使了容器的出现。
  • 容器:容器就像一个个独立的小空间,允许开辟职员与堆栈各部分灵活交互,实现按需生成服务,进步网络抽象水平,方便应用迁移扩展,更高效地利用资源。体系管理和网络工程可以外包给其他公司。云是多种技能的集合。
六、云架构设计

  • 组件选择:确定架构(这很难改),选择绑定或非绑定组件,可以本身开辟、用开源的大概购买。云原生组件是为分布式体系设计的,CNCF 认证不是必须的,要安全编码,部分是开源的。
  • 底子设施即代码(IaC):包罗引导介质(Packer)、安装体系(Terraform)、自动设置(Ansible)、状态强制(Monit)。
七、集成部署
利用持续集成和持续交付(CICD)管道来构建环境,包罗测试、丈量和扫描代码更改的自动化测试和部署(GitOps)。要做到有弹性可靠,即任何单点故障都有故障转移或其他机制,让业务能持续提供(这叫冗余)。全球负载均衡(GSLB,比如智能 DNS、GTM)能办理客户单访问的单点故障隐患。还要平衡控制,控制掩护体系免受漏洞和内部攻击的组件,应平衡控制和可用性。
八、云设计模式
云架构设计不必从头开始,采用已查验的设计模式是最佳选择。

  • 微服务架构:为疏松耦合、模块化服务而设计,微服务协同工作完成团体服务。每个服务都可以独立修改代码和重用,进步体系团体弹性和容错。大多数云利用微服务架构,云原生应用被构建充当微服务,便于水平扩展。安全优势是每个微服务应用强化、隔离,单一服务漏洞对团体体系影响小。缺点是调试更复杂,需要跨不同服务跟踪事务;性能大概有短板。
  • 零信任架构:对资源的每个请求都需要验证来源已授权,然后授权短期访问(用令牌)。实现零信任架构的一种常见方法是 Open ID Connect(OIDC)同盟访问。授权处于活动状态时可以访问任何团结内服务。暗码重置是针对零信任架构的常见攻击方式。
九、安全控制

  • 网络控制:传统架构用防火墙实现网络控制,云环境网络抽象为 SDN、SD WAN。SDN 可以对不同的接口(如 API 或 GUI)设置网络规则。通过 mTLS 不仅能加密流量,还能对客户端举行身份验证,有证书才能访问微服务。不正确的访问管理可导致权限提拔,甚至粉碎整个底子设施。现代访问管理体系多利用令牌举行访问控制,提供对服务的短时访问权。JWT 通常用于访问云端资源,伪造和破解暗码是常见攻击手段。另一种类型的权限控制机制是强制访问控制 MAC。
  • 身份管理:企业通常用 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。 正常会拉取不成功,所以我们需要设置一下国内的镜像源。
  1. # 进入到etc/docker目录
  2. cd etc/docker
  3. # 创建 daemon.json文件
  4. touch daemon.json
  5. # 修改权限为777
  6. chmod 777 daemon.json
  7. # 输入镜像名
  8. sudo tee /etc/docker/daemon.json <<-'EOF'
  9. {
  10.     "registry-mirrors": [
  11.         "https://do.nark.eu.org",
  12.         "https://dc.j8.work",
  13.         "https://docker.m.daocloud.io",
  14.         "https://dockerproxy.com",
  15.         "https://docker.mirrors.ustc.edu.cn",
  16.         "https://docker.nju.edu.cn"
  17.     ]
  18. }
  19. EOF
  20. # 载入daemon
  21. sudo systemctl daemon-reload
  22. # 重启doker
  23. sudo systemctl restart docker
复制代码




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


创建 Apache 容器配景运行:docker container run -d --rm -p 8080:80 httpd。


常用命令: docker container ls:检察全部容器。


  1. docker exe -it 899 /bin/bash:进入特定容器。
  2. docker container stop 899:停止容器。
  3. docker container run -d --rm -p 8080:80 -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd:挂载宿主机目录运行容器。
  4. docker container run -d --rm --network host -v /home/user/webroot/:/usr/local/apache2/htdocs/ httd:侦听宿主机 80 端口运行容器。
  5.  docker ps:列出所有正在运行的容器。
复制代码


docker top <container_name_or_id>:检察特定容器的历程信息。


Podman 是 Docker 的替换产物,无守护历程。
  1. sudo podman run -d --r-m --network host httpd:运行容器。
  2. podman pod create --name wha:创建空 pod。
  3. podman run -d --pod wha httpd:在 pod 中运行容器。
  4. podman run -pod wha -it alpine/curl /bin/asho:在 pod 中运行可找东西的工具并互动。
  5. 大部分容器化过程都采用开放容器计划(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:
  1. CAP_CHOWN:允许进程修改文件所有者。
  2.  CAP_NET_ADMIN:对网络配置执行管理任务。
  3.  CAP_NET_BIND_SERVICE:允许绑定低于 1024 的端口。
  4.  CAP_NET_RAW:允许使用 RAW 套接字。
  5.  CAP_SYS_ADMIN:“根”权限(危险),启用过多功能集。
  6.  CAP_SYS_BOOT:允许重新启动主机。
  7.  CAP_SYS_MODULE:允许加载和卸载内核模块。
  8.  CAP_SYS_TIME:允许进程设置系统时钟。
  9.  CAP_SYS_CHROOT:允许使用 chroot。
  10.  CAP_AUDIT_WRITE:允许写入内核审计日志。
复制代码
提拔工具权限有隐患,大概被恶意用户利用,粉碎体系、偷取敏感信息或完全控制整个体系。
十三、Kubernetes(k8s)
Kubernetes 通常简称为 K8s,是一个开源的容器编排平台。它可以自动化部署、扩展和管理容器化应用步伐,在多个服务器上高效运行容器,确保应用的高可用性和可扩展性。
十四、Kubernetes 的焦点概念

  • Pod:是 Kubernetes 中最小的可部署单位,可包含一个或多个容器,这些容器共享网络命名空间和存储卷,一起被调理和管理。
  • Deployment:用于管理 Pod 的副本数量和更新策略,确保应用始终保持指定数量的副本在运行,可实现滚动更新等功能。
  • Service:定义一组 Pod 的访问方式,提供稳定的 IP 地点和端口,让外部可以访问到一组 Pod。
  • Node:是 Kubernetes 中的工作节点,可以是物理服务器或虚拟机。每个 Node 上运行着 Kubelet 和容器运行时,负责管理容器的生命周期。
十五、安装 Kubernetes



  • 安装 Minikube(用于当地开辟的 Kubernetes 环境):下载安装包,根据操纵体系选择符合版本,按照安装向导举行操纵。
  • 启动 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 的端口号,利用<Minikube IP>:<NodePort>在浏览器中访问 Nginx 服务器。
十八、扩展应用

  • 扩展 Deployment 的副本数量:kubectl scale deployment nginx --replicas=3。
  • 检察副本数量:kubectl get deployments。
十九、更新应用

  • 更新 Deployment 的镜像:kubectl set image deployment/nginx nginx=new-image:version。
  • 检察更新进度:kubectl rollout status deployment/nginx。
二十、Git
Git 是一个分布式版本控制体系,用于跟踪文件的变革,方便团队协作开辟软件项目。可以记录文件的历史版本,允许开辟者在不同版本之间切换,并且可以归并多个开辟者的修改。
二十一、安装 Git 在不同操纵体系上安装方法不同:
  1. Windows:从 Git 官方网站下载安装程序进行安装。
  2. macOS:使用 Homebrew 等包管理器安装 Git。
  3. Linux:通过系统的包管理器安装 Git,如在 Ubuntu 上使用“sudo apt-get install git”。
复制代码


二十二、Git 的安全措施

  • 掩护 Git 堆栈很紧张,因为它通常包含项目的源代码和敏感信息。
  • 利用强暗码,为 Git 远程堆栈设置强暗码,制止简单或常用暗码。
  • 限定访问权限,只授予必要职员访问权限,可利用 Git 提供的权限管理功能或第三方工具。
  • 制止提交敏感信息,若不警惕提交,可利用git rm --cached <文件名>从暂存区删除,然后git commit --amend修改上一次提交。创建.gitignore文件,列出不需要被跟踪的文件和目录。
  • 确保与 Git 远程堆栈的通信是加密的,可以利用 SSH 或 HTTPS 协议举行通信。
  • 定期举行安全审计,查抄 Git 堆栈的安全性,包罗权限设置、敏感信息泄露等,可利用第三方工具。
  • 定期备份 Git 堆栈,防止数据丢失,可以利用 Git 的备份工具或复制到其他存储设备中。
  • 克隆堆栈:git clone <远程堆栈地点>。
  • 处理冲突:当多个开辟者同时修改同一个文件时,大概会出现冲突,在归并分支时需要手动办理冲突,然后提交更改。
  • 创建分支:git branch <分支名>。
  • 切换分支:git checkout <分支名>。
  • 归并分支:在一个分支上完成工作后,可将其归并到另一个分支。先切换到目的分支,然后利用git merge <源分支名>命令举行归并。
  • 初始化堆栈:git init。
  • 添加文件:git add <文件名>”或“git add.。
  • 提交更改:git commit -m "提交分析"。
  • 检察状态:git status。
  • 检察历史记录:git log。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表