当前位置:网站首页>Sandboxed container: container or virtual machine
Sandboxed container: container or virtual machine
2022-06-26 16:45:00 【Cloud primary pointing North】
With IT Technological development ,AI、 Blockchain, big data and other technologies increase the demand for millisecond expansion of applications , Developers are also under pressure to quickly launch new features . Hybrid clouds are the new normal , Digital transformation is a necessary condition for maintaining competitiveness , Virtualization has become the basic technology for these challenges .
In a virtualized world , There are two familiar words : Virtual machines and containers . The former is the virtualization of hardware , The latter is more like the virtualization of the operating system . Both provide sandbox capabilities : Virtual machines are provided through hardware level abstraction , The container uses a common kernel to provide process level isolation . Many people think of containers as “ Lightweight virtual machines ”, Usually we think the container is safe , Is that the same as we thought ?
Containers : Lightweight virtual machines ?
Containers are packaged 、 A modern way to share and deploy applications , Help enterprises realize rapid development 、 standard 、 Flexible service interaction . Containerization is based on Linux The namespace of (namespace) And the control group (cgroup) On the design of .

Namespace creates an almost isolated user space , And provide special system resources for applications , Such as file system 、 Network stack 、 process ID And the user ID. With the introduction of user namespaces , Kernel version 3.8 Provides support for container functionality :Mount(mnt)、 process ID(pid)、Network(net)、 Interprocess communication (ipc)、UTS、 user ID(user)6 Namespace ( Now it has reached 8 individual , Later joined cgroup and time Namespace ).
cgroup Then implement resource restrictions on the application 、 priority 、 Bookkeeping and control .cgroup Can be controlled CPU、 Memory 、 Equipment, network and other resources .
Use at the same time namespace and cgroup It enables us to run multiple applications safely on one host , And each application is located in an isolated environment .
Virtual machines provide more powerful isolation

Although the container is great , Lightweight enough . But through the above description , Multiple containers on the same host are actually Share the same operating system kernel , Just virtualization at the operating system level . Although namespaces provide a high degree of isolation , But there are still resources that the container can access , These resources do not provide a namespace . These resources are common to all containers on the host , Like the kernel Keyring、/proc、 system time 、 The kernel module 、 Hardware .
We all know there is no 100% Safe software , The same is true for container applications , From application source code to dependency library to container base Mirror image , Even the container engine itself may have security vulnerabilities . The risk of container escape is much higher than that of virtual machines , Hackers can exploit these escape vulnerabilities , The external resources of the operation container, that is, the resources on the host . Except for loopholes , Sometimes improper use will also bring security risks , For example, the container is assigned too high permissions (CAP_SYS_ADMIN function 、 Privileges ), Can cause the container to escape .
Virtual machines rely on hardware level virtualization , The implemented hardware isolation provides a stronger security boundary than namespace isolation . Compare with container , Virtual machines provide a higher degree of isolation , Just because it has My own kernel .
thus it can be seen , Containers are not really “ Sandbox ”, Also not Not a lightweight virtual machine . Is it possible to add a safer boundary to the container , Isolate from the host operating system as much as possible , Achieve strong isolation similar to virtual machines , Make it real “ Sandbox ”?

Sandboxed containers
The answer is yes. , It's a sandbox container . Like a virtual machine, this container has its own kernel , This layer of kernel becomes User space kernel . This layer of kernel should keep the container lightweight , Write... Using modern programming techniques , It's very light , Only used as a strong isolation layer between the container and the host .
And support OCI and CRI standard , It can be done with Docker and Kubernetes And other container tools are well integrated .

Here is a brief introduction gVisor and Kata Containers.
gVisor
gVisor It's using Go Written application kernel , Realized Linux Most of the interfaces of the operating system . It contains a runsc Of OCI Runtime , It provides an isolation layer between the application and the host kernel .runsc It's also realized with Docker and Kubernetes Integration of , You can easily run sandbox containers .

gVisor A separate operating system kernel is provided for each container . Application and gVisor Interact with the virtual environment provided by the kernel , Not directly accessing the host's kernel .gVisor It also limits and manages file and network operations , Ensure that there are two isolation layers between the container application and the host operating system . By reducing and limiting the interaction between the application and the host kernel , Minimize the attack surface of attackers bypassing the container isolation mechanism .
Unlike most kernels ,gVisor No fixed physical resources are required ; contrary , It takes advantage of existing host kernel functions , And run as a normal process . let me put it another way ,gVisor With Linux In this way Linux.
gVisor A sandbox consists of multiple processes , Together, these processes form an environment in which one or more containers can run .
Each sandbox has its own instance :
- Sentry: The kernel that runs the container , Intercept and respond to the system call of the application .
Each container in the sandbox has its own instance :
- Gofer: Provides access to the container file system .

Kata Containers
Kata Containers As lightweight and fast as a container , And integrate with container management -- Include Docker and Kubernetes And other popular container choreography tools -- It also provides the same security as virtual machines .

Kata Containers And OCI、 Container runtime interface (CRI) And container network interface (CNI) Fully integrated . It supports various types of network models ( for example ,passthrough、MacVTap、 The bridge 、tc Mirror image ) And configurable guest kernel , So that applications that need a special network model or kernel version can run on it . The figure above shows Kata VM How containers in interact with existing orchestration platforms .
Kata There's a... On the mainframe kata Run time to start and configure a new container . about Kata VM Every container in , There is a corresponding... On the host Kata Shim.Kata Shim Receive from client ( for example docker or kubectl) Of API request , And pass VSock Forward the request to Kata VM Agent inside .Kata The container has been further optimized , In order to reduce VM Starting time .
Kata Containers From the merger of two open source projects :Intel Of Clear containers and Hyper runV. The former focuses on performance ( Boot time is less than 100ms) And security ; The latter supports different CPU Architecture and management system , Put technology independence first .Kata Containers It can be said that it integrates the two .

Compared with traditional containers ,Kata Container The isolation of virtual machines , It integrates the security of virtual machine and the performance of container .
summary
Compared with ordinary containers , Sandbox containers provide greater isolation , This strong isolation provides higher security . At the same time, this kind of container technical support OCI and CRI standard , It can be used with existing container tools and Kubernetes Good integration .
The article is issued in official account
The cloud points north
边栏推荐
- Codeforces Round #802 (Div. 2)
- Teach you to learn dapr - 8 binding
- 安信证券排名第几位?开户安全吗?
- Least squares system identification class II: recursive least squares
- Swap two numbers
- Niuke programming problem -- dynamic programming of must brush 101 (a thorough understanding of dynamic programming)
- y=1/100*100+1/200*200+1/300*300+.....+ 1/m*m
- GUI+SQLServer考试系统
- Kept to implement redis autofailover (redisha) 1
- day10每日3题(1):逐步求和得到正数的最小值
猜你喜欢

Discover K8E: minimalist kubernetes distribution

进军AR领域,这一次罗永浩能成吗?

当一个程序员一天被打扰 10 次,后果很惊人!
Scala Basics (II): variables and data types

Stm32h7b0 replaces the h750 program, causing the MCU to hang up and unable to burn the program

Structure the graduation project of actual combat camp

Arduino uno + DS1302 simple time acquisition and serial port printing

QT 5.9.8 installation tutorial
![[matlab project practice] prediction of remaining service life of lithium ion battery based on convolutional neural network and bidirectional long short time (cnn-lstm) fusion](/img/a6/6d3914360ffe4732db0dbd2aaf1994.png)
[matlab project practice] prediction of remaining service life of lithium ion battery based on convolutional neural network and bidirectional long short time (cnn-lstm) fusion

Gui+sqlserver examination system
随机推荐
牛客编程题--必刷101之动态规划(一文彻底了解动态规划)
Toupper function
当一个程序员一天被打扰 10 次,后果很惊人!
MS | Xie Liwei group found that mixed probiotics and their metabolites could alleviate colitis
最小二乘系统辨识课 中篇:递归最小二乘
Count the number of each vowel letter in the string
Acid of redis
Qt 5.9.8 安装教程
Notes on key review of software engineering at the end of the term
Fgetc() reads content from file
探讨:下一代稳定币
Scala Foundation (2): variables et types de données
架构实战营毕业设计
The student record consists of student number and academic performance. The data of n students have been stored in the a structure array to find out the student record with the lowest performance
Kept to implement redis autofailover (redisha) 1
Redis overview
proxy
Leetcode 1169. 查询无效交易(如果数据量不大,这种题还是得暴力枚举解决)
Call the random function to generate 20 different integers and put them in the index group of institute a
GUI+SQLServer考试系统
