当前位置:网站首页>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
边栏推荐
- Leetcode 1170. 比较字符串最小字母出现频次(可以,已解决)
- Junit单元测试
- QT 5.9.8 installation tutorial
- Call the random function to generate 20 different integers and put them in the index group of institute a
- Count the number of words in a line of string and take it as the return value of the function
- Web3去中心化存储生态图景
- Calculate the average of N numbers in the index group of X, and return the number that is less than the average and closest to the average through formal parameters
- STM32F103C8T6实现呼吸灯代码
- How to separate jar packages and resource files according to packaging?
- JUnit unit test
猜你喜欢

C language --- basic function realization of push box 01

【毕业季】致毕业生的一句话:天高任鸟飞,海阔凭鱼跃
![[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

When a programmer is disturbed 10 times a day, the consequences are amazing!

Teach you to learn dapr - 2 Must know concept

Screenshot of the answers to C language exercises

JUnit unit test

牛客编程题--必刷101之动态规划(一文彻底了解动态规划)

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

无需人工先验!港大&同济&LunarAI&旷视提出基于语义分组的自监督视觉表征学习,显著提升目标检测、实例分割和语义分割任务!...
随机推荐
LeetCode Algorithm 24. Exchange the nodes in the linked list in pairs
牛客编程题--必刷101之动态规划(一文彻底了解动态规划)
TCP拥塞控制详解 | 1. 概述
[机缘参悟-31]:鬼谷子-抵巇[xī]篇-危机是危险与机会并存
Greenplum database fault analysis - semop (id=2000421076, num=11) failed: invalid argument
LeetCode Algorithm 24. 两两交换链表中的节点
Niuke Xiaobai monthly race 50
What is the preferential account opening policy of securities companies now? Is it safe to open an account online now?
IAR engineering adapts gd32 chip
Acid of redis
Several forms of buffer in circuit
GUI+SQLServer考试系统
QT 5.9.8 installation tutorial
[207] several possible causes of Apache crash
Summary of all knowledge points of C language
Multiply the values of the upper triangular elements of the array by M
板卡的分级调试经验
Develop operator based on kubebuilder (for getting started)
Count the number of words in a line of string and take it as the return value of the function
Stm32h7b0 replaces the h750 program, causing the MCU to hang up and unable to burn the program
