mirror of
				https://github.com/kata-containers/kata-containers.git
				synced 2025-10-31 09:26:52 +00:00 
			
		
		
		
	This change enables to run cloud-hypervisor VMM using a non-root user when rootless flag is set true in the configuration Fixes: #2567 Signed-off-by: Feng Wang <fwang@confluent.io>
		
			
				
	
	
		
			33 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ## Introduction
 | |
| To improve security, Kata Container supports running the VMM process (QEMU and cloud-hypervisor) as a non-`root` user. 
 | |
| This document describes how to enable the rootless VMM mode and its limitations.
 | |
| 
 | |
| ## Pre-requisites
 | |
| The permission and ownership of the `kvm` device node (`/dev/kvm`) need to be configured to:
 | |
| ```
 | |
| $ crw-rw---- 1 root kvm
 | |
| ```
 | |
| use the following commands:
 | |
| ```
 | |
| $ sudo groupadd kvm -r
 | |
| $ sudo chown root:kvm /dev/kvm
 | |
| $ sudo chmod 660 /dev/kvm
 | |
| ```
 | |
| 
 | |
| ## Configure rootless VMM
 | |
| By default, the VMM process still runs as the root user. There are two ways to enable rootless VMM:
 | |
| 1. Set the `rootless` flag to `true` in the hypervisor section of `configuration.toml`.
 | |
| 2. Set the Kubernetes annotation `io.katacontainers.hypervisor.rootless` to `true`.
 | |
| 
 | |
| ## Implementation details
 | |
| When `rootless` flag is enabled, upon a request to create a Pod, Kata Containers runtime creates a random user and group (e.g. `kata-123`), and uses them to start the hypervisor process. 
 | |
| The `kvm` group is also given to the hypervisor process as a supplemental group to give the hypervisor process access to the `/dev/kvm` device. 
 | |
| Another necessary change is to move the hypervisor runtime files (e.g. `vhost-fs.sock`, `qmp.sock`) to a directory (under `/run/user/[uid]/`) where only the non-root hypervisor has access to.
 | |
| 
 | |
| ## Limitations
 | |
| 
 | |
| 1. Only the VMM process is running as a non-root user. Other processes such as Kata Container shimv2 and `virtiofsd` still run as the root user.
 | |
| 2. Currently, this feature is only supported in QEMU and cloud-hypervisor. For firecracker, you can use jailer to run the VMM process with a non-root user.
 | |
| 3. Certain features will not work when rootless VMM is enabled, including:
 | |
|    1. Passing devices to the guest (`virtio-blk`, `virtio-scsi`) will not work if the non-privileged user does not have permission to access it (leading to a permission denied error). A more permissive permission (e.g. 666) may overcome this issue. However, you need to be aware of the potential security implications of reducing the security on such devices.
 | |
|    2. `vfio` device will also not work because of permission denied error. |