From 7ad72a4955affabb6aea91586aaab8386c6aaae1 Mon Sep 17 00:00:00 2001 From: Qi Zheng Date: Fri, 7 Jul 2023 15:32:45 +0800 Subject: [PATCH] [readthedocs] Update content for Occlum --- docs/readthedocs/docs/source/boot_flow.md | 5 +- .../docs/source/build_and_install.md | 2 +- .../docs/source/filesystem/fs_overview.md | 2 +- .../docs/source/filesystem/mount.md | 4 +- .../docs/source/images/boot_flow.png | Bin 76972 -> 94920 bytes docs/readthedocs/docs/source/index.rst | 5 - docs/readthedocs/docs/source/occlum_cmds.md | 2 +- .../docs/source/occlum_configuration.md | 261 +++++++----------- docs/readthedocs/docs/source/quickstart.md | 6 +- .../docs/source/remote_attestation.md | 5 +- .../source/tutorials/gen_occlum_instance.md | 2 +- 11 files changed, 119 insertions(+), 175 deletions(-) diff --git a/docs/readthedocs/docs/source/boot_flow.md b/docs/readthedocs/docs/source/boot_flow.md index 0ab71830..9ed199c9 100644 --- a/docs/readthedocs/docs/source/boot_flow.md +++ b/docs/readthedocs/docs/source/boot_flow.md @@ -14,13 +14,12 @@ There are total three MACs which are all generated in building stage and verifie * MAC of the configuration file. Both above MACs are filled into the configuration file. Thus the MAC of the configuration file reflects the differences of the two file systems to some extent. -* **mrenclave**, it indicates the measurement of the Occlum LibOS. ## Boot flow -1. To user, the entry point is the command `occlum run`. The steps behind the command are PAL APIs `occlum_pal_init` and `occlum_pal_create_process`. It launches the Occlum LibOS kernel in the Enclave. The kernel then loads the configuration file `.Occlum_sys.json.protected`, doing integrity check with the MAC saved in `KSS ISV FamilyID`. If pass, it uses the settings in the configuration file to do memory/process initialization. Then, it tries mount the init filesystem. It does integrity check again with MAC in the `.Occlum_sys.json.protected`. If pass, the first user space process `init` got launched. +1. To user, the entry point is the command `occlum run`. The steps behind the command are PAL APIs `occlum_pal_init` and `occlum_pal_create_process`. It launches the Occlum LibOS kernel in the Enclave. The kernel then loads the configuration file `.Occlum_sys.json.protected`, doing integrity check with the MAC saved in the LibOS section **builtin_config** (marked as `conf_mac` in the picture). If pass, it uses the settings in the configuration file to do memory/process initialization. Then, it tries mount the init filesystem. It does integrity check again with init FS MAC in the `.Occlum_sys.json.protected`. If pass, the first user space process `init` got launched. -2. There is a default minimal `init` provided. In this `init`, it calls the Occlum added syscall `SYS_MOUNT_FS` to mount the application file system. The syscall implementation in the Occlum kernel does integrity check again with MAC in the `.Occlum_sys.json.protected` to make sure expected application got launched. +2. There is a default minimal `init` provided. In this `init`, it calls the Occlum added syscall `SYS_MOUNT_FS` to mount the application file system. The syscall implementation in the Occlum kernel does integrity check again with root FS MAC in the `.Occlum_sys.json.protected` to make sure expected application got launched. 3. At this stage, the real user application got launched. diff --git a/docs/readthedocs/docs/source/build_and_install.md b/docs/readthedocs/docs/source/build_and_install.md index 5f57ef99..fa8c748f 100644 --- a/docs/readthedocs/docs/source/build_and_install.md +++ b/docs/readthedocs/docs/source/build_and_install.md @@ -51,7 +51,7 @@ The Occlum Dockerfile can be found at [here](https://github.com/occlum/occlum/tr By default, the `occlum build` command builds and signs enclaves in debug mode. These SGX debug-mode enclaves are intended for development and testing purposes only. For production usage, the enclaves must be signed by a key acquired from Intel (a restriction that will be lifted in the future when Flexible Launch Control is ready) and run with SGX debug support disabled. Occlum has built-in support for both building and running enclaves in release mode. -To do that, modify `Occlum.yaml` [metadata]-[debuggable] field to `false`. And then run the commands below: +To do that, modify `Occlum.json` [metadata]-[debuggable] field to `false`. And then run the commands below: ``` $ occlum build --sign-key $ occlum run diff --git a/docs/readthedocs/docs/source/filesystem/fs_overview.md b/docs/readthedocs/docs/source/filesystem/fs_overview.md index eec07438..dc1cb915 100644 --- a/docs/readthedocs/docs/source/filesystem/fs_overview.md +++ b/docs/readthedocs/docs/source/filesystem/fs_overview.md @@ -137,7 +137,7 @@ The HostFS is used for convenient data exchange between the LibOS and the host O ## RamFS and other pseudo filesystems The RamFS and other pseudo filesystems like ProcFS use the memory as the storage. So the data may lose if one terminates the enclave. -Please remember to enlarge the `kernel_space_heap_size` of Occlum.yaml if your app depends on RamFS. +Please remember to enlarge the `kernel_space_heap_size` of Occlum.json if your app depends on RamFS. ## Q & A diff --git a/docs/readthedocs/docs/source/filesystem/mount.md b/docs/readthedocs/docs/source/filesystem/mount.md index b89fb003..81696b2e 100644 --- a/docs/readthedocs/docs/source/filesystem/mount.md +++ b/docs/readthedocs/docs/source/filesystem/mount.md @@ -30,7 +30,7 @@ To mount an Occlum's secure FS image successfully, three conditions must be sati With the three conditions satisfied, the mount command is able to start a Linux FUSE FS server. Any I/O operations on the FUSE FS mounted at the specified path will be redirected by Linux kernel as I/O requests to the FUSE server. The FUSE server is backed by a special enclave, which can encrypt or decrypt the content of the secure FS image on demand. -Please note that if the `autokey_policy` field of the configurations of FS is set in Occlum.yaml, the mount command will not work. This is because the MRENCLAVE is used as an input to generate the encryption key, and the mount tool cannot mimic it. +Please note that if the `autokey_policy` field of the configurations of FS is set in Occlum.json, the mount command will not work. This is because the MRENCLAVE is used as an input to generate the encryption key, and the mount tool cannot mimic it. The mount command **will not return** until the FUSE server is terminated in one of the two ways. The first one is to press ctrl+C. The second one is to use `umount` command. Both ways can terminate the server gracefully. @@ -49,7 +49,7 @@ After mounting the secure FS successfully, you can access and manipulate the FS ## Mount and Unmount Filesystems at Runtime ### Background -Users can specify the mount configuration in the `Occlum.yaml` file, then the file systems are mounted during the libOS startup phase. While this design provides a safe and simple way to access files, it is not as convenient as traditional Host OS. Apps are not allowed to mount and unmount file systems at runtime. +Users can specify the mount configuration in the `Occlum.json` file, then the file systems are mounted during the libOS startup phase. While this design provides a safe and simple way to access files, it is not as convenient as traditional Host OS. Apps are not allowed to mount and unmount file systems at runtime. ### How to mount filesystems at runtime? Apps running inside Occlum can mount some specific file systems via the [mount()](https://man7.org/linux/man-pages/man2/mount.2.html) system call. This makes it flexible to mount and access files at runtime. diff --git a/docs/readthedocs/docs/source/images/boot_flow.png b/docs/readthedocs/docs/source/images/boot_flow.png index b3fb8558aaba89b4f63ec64bcc670cc1c73d29d8..630450af8c87de9c81a885032b016033bc57872a 100644 GIT binary patch literal 94920 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

UQ- zJXKrTDL)9+FfN`Us7$2D4?K=WVdp7Emq5?SbjmiA2-sj^44=SX;vQV-I!IX*VOirfTsZZ%*C`@+4Q8^$gUr*TO@XH zW=nWpF!G6iV8hDzQa$V`-|F~L=-N-{DR8w^?pqc#545E(Qs|}70ej1nfB$$KjD-!_ z`Zi<-YaarKPE715QTM#A>}Pp56m)pu$GsG-9?Wikv6~S8Mv;SA;MpN)_9r^X?eElV z6N?jwbjd6^H__XitMwNq4p#9jjn^pXmrn5g2|S&MWNe>!NYb^Xw1^#+3S zDne=s!45@+`~;^LtML4!!mM} zq&gA0%KrCTPgQ@`P7W5R$&tA~QVrnh=6aQ--9!gBqqJM-x8Bnmp4*12sj!sK>`UiB z2hVJ1p-nZMDcQbcpM5H7ChR>xb~>h|mKq*>S~S7W>I8cE4`{W!SQ(PA_>kZl=00N1qe2B%$6vLe^1 zJZ`&tGNyV0n@k^@O?GWG@}20U9{`sn%#IftE5bP-_K4ziD_4o81feHWofe+EC^9CX zAY@ui)!!)e6$`YS!)z3q)N!qMXdEPtrP@OFyLoh%a~rmq9rc42)_Dy(qZs%`T-e=t z=^ux|iOpjs=1=h>^A+xU>uLB{k5}kCGY8J(Euli0oEsa&QKNZ*;5*=yLG!0-SxH>F zop;T*0ZPw6b77%@OWv6)+aFXfXROCAw(z95;u%b=lHb%>Sao7r{AnXpUNR^eU&ujw)JzVzTh70^L-|&Kw+zELo=6G zAbiQS3)wEfIHfp8U9YZTa_e`iL#$HI8{|kn)bNv7S literal 76972 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%0AS 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 bFYicRg9%8yBn diff --git a/docs/readthedocs/docs/source/index.rst b/docs/readthedocs/docs/source/index.rst index 44fbd8c0..504e056c 100644 --- a/docs/readthedocs/docs/source/index.rst +++ b/docs/readthedocs/docs/source/index.rst @@ -7,11 +7,6 @@ As a LibOS, it enables legacy applications to run on SGX with little or even no .. image:: images/arch_overview.png :alt: Occlum Arch Overview -.. note:: - - This project is under active development. - There is no guarantee that the content here are all up to date. - ***************** Table of Contents ***************** diff --git a/docs/readthedocs/docs/source/occlum_cmds.md b/docs/readthedocs/docs/source/occlum_cmds.md index 4cdb243e..9cf3e50c 100644 --- a/docs/readthedocs/docs/source/occlum_cmds.md +++ b/docs/readthedocs/docs/source/occlum_cmds.md @@ -21,7 +21,7 @@ Initialize a directory as the Occlum instance. ```bash occlum build [--sign-key ] [--sign-tool ] [--image-key ] [-f/--force] ``` -Build and sign an Occlum SGX enclave (.so) and generate its associated secure FS image according to the user-provided image directory and Occlum.yaml config file. +Build and sign an Occlum SGX enclave (.so) and generate its associated secure FS image according to the user-provided image directory and Occlum.json config file. The whole building process is incremental: the building artifacts are built only when needed. To force rebuilding all artifacts, give the [-f/--force] flag. diff --git a/docs/readthedocs/docs/source/occlum_configuration.md b/docs/readthedocs/docs/source/occlum_configuration.md index 1c6047f6..b3af6290 100644 --- a/docs/readthedocs/docs/source/occlum_configuration.md +++ b/docs/readthedocs/docs/source/occlum_configuration.md @@ -1,159 +1,112 @@ # Occlum Configuration -Occlum can be configured easily via a configuration file named `Occlum.yaml`, which is generated by the `occlum init` command in the Occlum instance directory. The user can modify `Occlum.yaml` to configure Occlum. The template of `Occlum.yaml` is shown below. +Occlum can be configured easily via a configuration file named `Occlum.json`, which is generated by the `occlum init` command in the Occlum instance directory. The user can modify `Occlum.json` to configure Occlum. The template of `Occlum.json` is shown below. -```yaml -# All the settings below can only take effect after `occlum build`. -resource_limits: - # The number of OS threads created for this instance. - num_of_cpus: 128 - # The stack size of LibOS kernel. - kernel_space_stack_size: 16MB - # The heap size of LibOS kernel. - # With EDMM support, choose "init" size based on the expected initialization time. And increase the "max" field if memory insufficiency occurs. - # Without EDMM support, increase the "init" field if memory insufficiency occurs. And the "max" field is ignored. - kernel_space_heap_size: - # Reserved and committed during the initialization stage. The more, the longer it takes to initialize. - init: 32MB - # Only committed when necessary. Only valid with EDMM support. - max: 512MB - # The total size of enclave memory available to the user applications running in LibOS. - # With EDMM support, choose "init" size based on the expected initialization time. And increase the "max" field if memory insufficiency occurs. - # Without EDMM support, increase the "init" field if memory insufficiency occurs. And the "max" field is ignored. - user_space_size: - # Reserved and committed during the initialization stage. The more, the longer it takes to initialize. - init: 256MB - # Only committed when necessary. Only valid with EDMM support. - max: 64GB -process: - # Default stack size for each process. If not sure, don't modify it. - default_stack_size: 4MB - # Default heap size for each process. If not sure, don't modify it. - default_heap_size: 32MB - -# Entry points -# Specify all valid absolute in `occlum run `. -# This prevents outside attackers from executing arbitrary commands inside an -# Occlum-powered enclave. -entry_points: - - /bin - -# Environment variables -# -# This gives a list of environment variables for the "root" process started -# by `occlum run` or `occlum exec` command. -env: - # The default env vars given to each "root" LibOS process. As these env vars - # are specified in this config file, they are considered trusted. - default: - - OCCLUM=yes - # The untrusted env vars that are captured by Occlum from the host environment - # and passed to the "root" LibOS processes. These untrusted env vars can - # override the trusted, default envs specified above. - # For example, `OCCLUM=no occlum run xxx` can pass the env OCCLUM=no to the process - # running in LibOS with below settings. - # env: - # default: - # - OCCLUM=yes - # untrusted: - # - OCCLUM - untrusted: - - EXAMPLE - -# Enclave metadata -# If not sure, just keep them no change -metadata: - # Enclave signature structure's ISVPRODID field - product_id: 0 - # Enclave signature structure's ISVSVN field - version_number: 0 - # Whether the enclave is debuggable through special SGX instructions. - # If set to false, no log could be output. - # For production enclave, it is IMPORTANT to set this value to false. - debuggable: true - # SGX Key Separation and Sharing feature support. - # Please always keep it as true. - enable_kss: true - # Enclave signature structure's ISVEXTPRODID field. - # It is separated as two 16 bytes strings. - ext_prod_id: - high: '0x0' - low: '0x0' - # Whether to turn on PKU feature in Occlum - # Occlum uses PKU for isolation between LibOS and userspace program, - # It is useful for developers to detect potential bugs. - # - # "pkru" = 0: PKU feature must be disabled - # "pkru" = 1: PKU feature must be enabled - # "pkru" = 2: PKU feature is enabled if the platform supports it - pkru: 0 - -# Mount points and their file systems -mount: - # RootFS mount point and file systems. - # Generally, just don't change it. - - target: / - type: unionfs - options: - layers: - # The read-only layer which is generated in `occlum build` - - target: / - type: sefs - source: ./build/mount/__ROOT - options: - MAC: '' - # The read-write layer whose content is produced when running the LibOS - - target: / - type: sefs - source: ./run/mount/__ROOT - # options: - # The SEFS just uses MRSIGNER to drived key by default, so the data can - # be shared between same enclave signer on the same machine. - # If you want more secure scheme, you can set the autokey_policy field - # to 1 to enforcing the key is derived by MRSIGNER|MRENCLAVE|ISVFAMILYID. - # So the data can only be accessed by the enclave itself. - # autokey_policy: 1 - # - # HostFS mount - # It provides a channel to exchange files between Host FS and LibOS FS. - # Just note, with this mount, the files written to the target in the LibOS - # is recognizable to users in the Host thus may introduce security issue. - # - # For example, below section mount the occlum_instance directory in the Host FS - # to the path /host in the LibOS FS. - # It is disabled in default. Uncomment it if you are very sure about it. - # - target: /host - # type: hostfs - # source: . - # - # Async FS mount - # - target: /sfs - # type: async_sfs - # source: ./run/async_sfs_image - # options: - # total_size: 4GB - -# Untrusted Unix domain socket -# Besides the common Unix domain socket support that both ends are created in the same -# Occlum instance, the Untrusted Unix domain socket can support cross-world connection by -# mapping a libos socket address with the host socket address. In this way, a Unix domain -# socket created in Occlum can communicate with a Unix domain socket in the host OS or in -# another Occlum instance. -# Uncomment and customize below if you are very sure about it. -# -# untrusted_unix_socks: -# The libos path and the host path correspond to the same host sock file. -# The host side should use the host path and libos side should use the libos path. -# -# Specify socket file in absolute path - # - host: /tmp/occlum/test.sock - # libos: /root/test.sock -# Or any files in the path - # - host: /tmp/root/ - # libos: /root/ -# Or the host path can be a relative path and is relative to the current Occlum instance dir. - # - host: ../test.sock - # libos: /tmp/test.sock +```json +{ + // Resource limits + "resource_limits": { + // The total size of enclave memory available to LibOS processes + "user_space_size": "256MB", + // The heap size of LibOS kernel + "kernel_space_heap_size": "32MB", + // The stack size of LibOS kernel + "kernel_space_stack_size": "1MB", + // The max number of LibOS threads/processes + "max_num_of_threads": 32 + }, + // Process + "process": { + // The stack size of the "main" thread + "default_stack_size": "4MB", + // The max size of memory allocated by brk syscall + "default_heap_size": "16MB", + // The max size of memory by mmap syscall (OBSOLETE. Users don't need to modify this field. Keep it only for compatibility) + "default_mmap_size": "32MB" + }, + // Entry points + // + // Entry points specify all valid path prefixes for in `occlum run + // `. This prevents outside attackers from executing arbitrary + // commands inside an Occlum-powered enclave. + "entry_points": [ + "/bin" + ], + // Environment variables + // + // This gives a list of environment variables for the "root" + // process started by `occlum exec` command. + "env": { + // The default env vars given to each "root" LibOS process. As these env vars + // are specified in this config file, they are considered trusted. + "default": [ + "OCCLUM=yes" + ], + // The untrusted env vars that are captured by Occlum from the host environment + // and passed to the "root" LibOS processes. These untrusted env vars can + // override the trusted, default envs specified above. + "untrusted": [ + "EXAMPLE" + ] + }, + // Enclave metadata + "metadata": { + // Enclave signature structure's ISVPRODID field + "product_id": 0, + // Enclave signature structure's ISVSVN field + "version_number": 0, + // Whether the enclave is debuggable through special SGX instructions. + // For production enclave, it is IMPORTANT to set this value to false. + "debuggable": true, + // Whether to turn on PKU feature in Occlum + // Occlum uses PKU for isolation between LibOS and userspace program, + // It is useful for developers to detect potential bugs. + // + // "pkru" = 0: PKU feature must be disabled + // "pkru" = 1: PKU feature must be enabled + // "pkru" = 2: PKU feature is enabled if the platform supports it + "pkru": 0 + }, + // Mount points and their file systems + // + // The default configuration is shown below. + "mount": [ + { + "target": "/", + "type": "unionfs", + "options": { + "layers": [ + { + "target": "/", + "type": "sefs", + "source": "./build/mount/__ROOT", + "options": { + "MAC": "" + } + }, + { + "target": "/", + "type": "sefs", + "source": "./run/mount/__ROOT" + } + ] + } + }, + { + "target": "/host", + "type": "hostfs", + "source": "." + }, + { + "target": "/proc", + "type": "procfs" + }, + { + "target": "/dev", + "type": "devfs" + } + ] +} ``` ## Runtime Resource Configuration for Occlum process @@ -164,7 +117,7 @@ Occlum has enabled per process resource configuration via [prlimit](https://man7 #! /usr/bin/bash ulimit -a -# ulimit defined below will override configuration in Occlum.yaml +# ulimit defined below will override configuration in Occlum.json ulimit -Ss 10240 # stack size 10M ulimit -Sd 40960 # heap size 40M ulimit -Sv 102400 # virtual memory size 100M (including heap, stack, mmap size) diff --git a/docs/readthedocs/docs/source/quickstart.md b/docs/readthedocs/docs/source/quickstart.md index 1ac1e4be..f851255a 100644 --- a/docs/readthedocs/docs/source/quickstart.md +++ b/docs/readthedocs/docs/source/quickstart.md @@ -6,9 +6,9 @@ First, please make sure the baremetal or VM machine support SGX. Otherwise, users can only try SW simulation mode. -From Occlum v1.0, only SGX2 or SGX1 with [FLC](https://www.intel.com/content/www/us/en/developer/articles/technical/an-update-on-3rd-party-attestation.html)(Flexible Launch Control) feature are supported. +To have best user experience, SGX2 or SGX1 with [FLC](https://www.intel.com/content/www/us/en/developer/articles/technical/an-update-on-3rd-party-attestation.html)(Flexible Launch Control) feature are required. -Users can use command `cpuid` to detect if the HW satisfy Occlum v1.0 requirements. +Users can use command `cpuid` to detect if the HW satisfy Occlum requirements. * SGX2, ```cpuid | grep SGX2``` * FLC, ```cpuid | grep SGX_LC``` @@ -17,7 +17,7 @@ Users can use command `cpuid` to detect if the HW satisfy Occlum v1.0 requiremen #### Kernel Version -From Occlum v1.0, the `io_uring` is used to enhance the IO performance. The `io_uring` is first introduced in Linux kernel 5.1 and still fast growing. To make Occlum v1.0 works well with `io_uring` and also the SGX in-tree driver, Linux kernel 5.10+ is expected. +To use SGX in-tree driver, Linux kernel 5.10+ is expected. For example, in the Ubuntu 20.04 OS (Occlum default development OS), users could update the kernel with below command to get all Occlum required kernel features. ``` diff --git a/docs/readthedocs/docs/source/remote_attestation.md b/docs/readthedocs/docs/source/remote_attestation.md index c98d5f16..b798d425 100644 --- a/docs/readthedocs/docs/source/remote_attestation.md +++ b/docs/readthedocs/docs/source/remote_attestation.md @@ -55,13 +55,10 @@ ISVEXTPRODID, 16 bytes CONFIG ID, 64 bytes CONFIG SVN, 16 bits ``` -Occlum can support both above by either modifying the fields in `Occlum.yaml` (for `Signning stage`) or using Occlum run arguments `"--config-id"` or `"--config-svn"` (for `Running stage`). - -* Note: `ISVFAMILYID` is reserved for saving the MAC of the configuration file. +Occlum can support both above by either modifying the fields in `Occlum.json` (for `Signning stage`) or using Occlum run arguments `"--config-id"` or `"--config-svn"` (for `Running stage`). Details please refer to the [RFC](https://github.com/occlum/occlum/issues/589). - ## References - [DCAP Quick Install Guide](https://software.intel.com/content/www/us/en/develop/articles/intel-software-guard-extensions-data-center-attestation-primitives-quick-install-guide.html) diff --git a/docs/readthedocs/docs/source/tutorials/gen_occlum_instance.md b/docs/readthedocs/docs/source/tutorials/gen_occlum_instance.md index feceb335..02c22523 100644 --- a/docs/readthedocs/docs/source/tutorials/gen_occlum_instance.md +++ b/docs/readthedocs/docs/source/tutorials/gen_occlum_instance.md @@ -3,7 +3,7 @@ For every application to be running in Occlum (TEE env), all the running required files, libraries and binaries have to be put into Occlum file system. Here is the tree view of one Occlum instance. ``` ./occlum_instance/ -|-- Occlum.yaml +|-- Occlum.json |-- build |-- image // Occlum root file system | |-- bin