€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ'/translations/zh_CN/admin-guide/LSM/ipe”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/zh_TW/admin-guide/LSM/ipe”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/it_IT/admin-guide/LSM/ipe”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ja_JP/admin-guide/LSM/ipe”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ko_KR/admin-guide/LSM/ipe”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/pt_BR/admin-guide/LSM/ipe”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/sp_SP/admin-guide/LSM/ipe”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒA/var/lib/git/docbuild/linux/Documentation/admin-guide/LSM/ipe.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ"Integrity Policy Enforcement (IPE)”h]”hŒ"Integrity Policy Enforcement (IPE)”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒnote”“”)�”}”(hŒÔThis is the documentation for admins, system builders, or individuals attempting to use IPE. If you're looking for more developer-focused documentation about IPE please see :doc:`the design docs `.”h]”hŒ paragraph”“”)�”}”(hŒÔThis is the documentation for admins, system builders, or individuals attempting to use IPE. If you're looking for more developer-focused documentation about IPE please see :doc:`the design docs `.”h]”(hŒ¯This is the documentation for admins, system builders, or individuals attempting to use IPE. If you’re looking for more developer-focused documentation about IPE please see ”…”�”}”(hhåh²hh³Nh´Nubh)�”}”(hŒ&:doc:`the design docs `”h]”hŒinline”“”)�”}”(hhïh]”hŒthe design docs”…”�”}”(hhóh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-doc”eh"]”h$]”h&]”uh1hñhhíubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œadmin-guide/LSM/ipe”Œ refdomain”hþŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ /security/ipe”uh1hh³hÇh´KhhåubhŒ.”…”�”}”(hhåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khhßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhhÊh²hh³hÇh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj"h²hh³hÇh´K ubhä)�”}”(hXËIntegrity Policy Enforcement (IPE) is a Linux Security Module that takes a complementary approach to access control. Unlike traditional access control mechanisms that rely on labels and paths for decision-making, IPE focuses on the immutable security properties inherent to system components. These properties are fundamental attributes or features of a system component that cannot be altered, ensuring a consistent and reliable basis for security decisions.”h]”hXËIntegrity Policy Enforcement (IPE) is a Linux Security Module that takes a complementary approach to access control. Unlike traditional access control mechanisms that rely on labels and paths for decision-making, IPE focuses on the immutable security properties inherent to system components. These properties are fundamental attributes or features of a system component that cannot be altered, ensuring a consistent and reliable basis for security decisions.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khj"h²hubhä)�”}”(hX|To elaborate, in the context of IPE, system components primarily refer to files or the devices these files reside on. However, this is just a starting point. The concept of system components is flexible and can be extended to include new elements as the system evolves. The immutable properties include the origin of a file, which remains constant and unchangeable over time. For example, IPE policies can be crafted to trust files originating from the initramfs. Since initramfs is typically verified by the bootloader, its files are deemed trustworthy; "file is from initramfs" becomes an immutable property under IPE's consideration.”h]”hX‚To elaborate, in the context of IPE, system components primarily refer to files or the devices these files reside on. However, this is just a starting point. The concept of system components is flexible and can be extended to include new elements as the system evolves. The immutable properties include the origin of a file, which remains constant and unchangeable over time. For example, IPE policies can be crafted to trust files originating from the initramfs. Since initramfs is typically verified by the bootloader, its files are deemed trustworthy; “file is from initramfsâ€� becomes an immutable property under IPE’s consideration.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khj"h²hubhä)�”}”(hXThe immutable property concept extends to the security features enabled on a file's origin, such as dm-verity or fs-verity, which provide a layer of integrity and trust. For example, IPE allows the definition of policies that trust files from a dm-verity protected device. dm-verity ensures the integrity of an entire device by providing a verifiable and immutable state of its contents. Similarly, fs-verity offers filesystem-level integrity checks, allowing IPE to enforce policies that trust files protected by fs-verity. These two features cannot be turned off once established, so they are considered immutable properties. These examples demonstrate how IPE leverages immutable properties, such as a file's origin and its integrity protection mechanisms, to make access control decisions.”h]”hXThe immutable property concept extends to the security features enabled on a file’s origin, such as dm-verity or fs-verity, which provide a layer of integrity and trust. For example, IPE allows the definition of policies that trust files from a dm-verity protected device. dm-verity ensures the integrity of an entire device by providing a verifiable and immutable state of its contents. Similarly, fs-verity offers filesystem-level integrity checks, allowing IPE to enforce policies that trust files protected by fs-verity. These two features cannot be turned off once established, so they are considered immutable properties. These examples demonstrate how IPE leverages immutable properties, such as a file’s origin and its integrity protection mechanisms, to make access control decisions.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K!hj"h²hubhä)�”}”(hXFor the IPE policy, specifically, it grants the ability to enforce stringent access controls by assessing security properties against reference values defined within the policy. This assessment can be based on the existence of a security property (e.g., verifying if a file originates from initramfs) or evaluating the internal state of an immutable security property. The latter includes checking the roothash of a dm-verity protected device, determining whether dm-verity possesses a valid signature, assessing the digest of a fs-verity protected file, or determining whether fs-verity possesses a valid built-in signature. This nuanced approach to policy enforcement enables a highly secure and customizable system defense mechanism, tailored to specific security requirements and trust models.”h]”hXFor the IPE policy, specifically, it grants the ability to enforce stringent access controls by assessing security properties against reference values defined within the policy. This assessment can be based on the existence of a security property (e.g., verifying if a file originates from initramfs) or evaluating the internal state of an immutable security property. The latter includes checking the roothash of a dm-verity protected device, determining whether dm-verity possesses a valid signature, assessing the digest of a fs-verity protected file, or determining whether fs-verity possesses a valid built-in signature. This nuanced approach to policy enforcement enables a highly secure and customizable system defense mechanism, tailored to specific security requirements and trust models.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K-hj"h²hubhä)�”}”(hŒ”To enable IPE, ensure that ``CONFIG_SECURITY_IPE`` (under :menuselection:`Security -> Integrity Policy Enforcement (IPE)`) config option is enabled.”h]”(hŒTo enable IPE, ensure that ”…”�”}”(hjkh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``CONFIG_SECURITY_IPE``”h]”hŒCONFIG_SECURITY_IPE”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjkubhŒ (under ”…”�”}”(hjkh²hh³Nh´Nubhò)�”}”(hŒ.Security -> Integrity Policy Enforcement (IPE)”h]”hŒ.Security -> Integrity Policy Enforcement (IPE)”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”Œ?:menuselection:`Security -> Integrity Policy Enforcement (IPE)`”uh1hñhjkubhŒ) config option is enabled.”…”�”}”(hjkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K:hj"h²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Use Cases”h]”hŒ Use Cases”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjªh²hh³hÇh´K?ubhä)�”}”(hXIPE works best in fixed-function devices: devices in which their purpose is clearly defined and not supposed to be changed (e.g. network firewall device in a data center, an IoT device, etcetera), where all software and configuration is built and provisioned by the system owner.”h]”hXIPE works best in fixed-function devices: devices in which their purpose is clearly defined and not supposed to be changed (e.g. network firewall device in a data center, an IoT device, etcetera), where all software and configuration is built and provisioned by the system owner.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KAhjªh²hubhä)�”}”(hX^IPE is a long-way off for use in general-purpose computing: the Linux community as a whole tends to follow a decentralized trust model (known as the web of trust), which IPE has no support for it yet. Instead, IPE supports PKI (public key infrastructure), which generally designates a set of trusted entities that provide a measure of absolute trust.”h]”hX^IPE is a long-way off for use in general-purpose computing: the Linux community as a whole tends to follow a decentralized trust model (known as the web of trust), which IPE has no support for it yet. Instead, IPE supports PKI (public key infrastructure), which generally designates a set of trusted entities that provide a measure of absolute trust.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KFhjªh²hubhä)�”}”(hX5Additionally, while most packages are signed today, the files inside the packages (for instance, the executables), tend to be unsigned. This makes it difficult to utilize IPE in systems where a package manager is expected to be functional, without major changes to the package manager and ecosystem behind it.”h]”hX5Additionally, while most packages are signed today, the files inside the packages (for instance, the executables), tend to be unsigned. This makes it difficult to utilize IPE in systems where a package manager is expected to be functional, without major changes to the package manager and ecosystem behind it.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KLhjªh²hubhä)�”}”(hŒ›The digest_cache LSM [#digest_cache_lsm]_ is a system that when combined with IPE, could be used to enable and support general-purpose computing use cases.”h]”(hŒThe digest_cache LSM ”…”�”}”(hjåh²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[#digest_cache_lsm]_”h]”hŒ1”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œauto”KŒrefid”Œdigest-cache-lsm”Œdocname”j uh1jíhjåŒresolved”KubhŒr is a system that when combined with IPE, could be used to enable and support general-purpose computing use cases.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KRhjªh²hubeh}”(h]”Œ use-cases”ah ]”h"]”Œ use cases”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K?ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒKnown Limitations”h]”hŒKnown Limitations”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KVubhä)�”}”(hXIPE cannot verify the integrity of anonymous executable memory, such as the trampolines created by gcc closures and libffi (<3.4.2), or JIT'd code. Unfortunately, as this is dynamically generated code, there is no way for IPE to ensure the integrity of this code to form a trust basis.”h]”hXIPE cannot verify the integrity of anonymous executable memory, such as the trampolines created by gcc closures and libffi (<3.4.2), or JIT’d code. Unfortunately, as this is dynamically generated code, there is no way for IPE to ensure the integrity of this code to form a trust basis.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KXhjh²hubhä)�”}”(hX‡IPE cannot verify the integrity of programs written in interpreted languages when these scripts are invoked by passing these program files to the interpreter. This is because the way interpreters execute these files; the scripts themselves are not evaluated as executable code through one of IPE's hooks, but they are merely text files that are read (as opposed to compiled executables). However, with the introduction of the ``AT_EXECVE_CHECK`` flag (:doc:`AT_EXECVE_CHECK `), interpreters can use it to signal the kernel that a script file will be executed, and request the kernel to perform LSM security checks on it.”h]”(hX¬IPE cannot verify the integrity of programs written in interpreted languages when these scripts are invoked by passing these program files to the interpreter. This is because the way interpreters execute these files; the scripts themselves are not evaluated as executable code through one of IPE’s hooks, but they are merely text files that are read (as opposed to compiled executables). However, with the introduction of the ”…”�”}”(hj4h²hh³Nh´Nubjt)�”}”(hŒ``AT_EXECVE_CHECK``”h]”hŒAT_EXECVE_CHECK”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj4ubhŒ flag (”…”�”}”(hj4h²hh³Nh´Nubh)�”}”(hŒ2:doc:`AT_EXECVE_CHECK `”h]”hò)�”}”(hjPh]”hŒAT_EXECVE_CHECK”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”(hýŒstd”Œstd-doc”eh"]”h$]”h&]”uh1hñhjNubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”j\Œreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆjŒ/userspace-api/check_exec”uh1hh³hÇh´K]hj4ubhŒ‘), interpreters can use it to signal the kernel that a script file will be executed, and request the kernel to perform LSM security checks on it.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K]hjh²hubhä)�”}”(hX€IPE's EXECUTE operation enforcement differs between compiled executables and interpreted scripts: For compiled executables, enforcement is triggered automatically by the kernel during ``execve()``, ``execveat()``, ``mmap()`` and ``mprotect()`` syscalls when loading executable content. For interpreted scripts, enforcement requires explicit interpreter integration using ``execveat()`` with ``AT_EXECVE_CHECK`` flag. Unlike exec syscalls that IPE intercepts during the execution process, this mechanism needs the interpreter to take the initiative, and existing interpreters won't be automatically supported unless the signal call is added.”h]”(hŒºIPE’s EXECUTE operation enforcement differs between compiled executables and interpreted scripts: For compiled executables, enforcement is triggered automatically by the kernel during ”…”�”}”(hjxh²hh³Nh´Nubjt)�”}”(hŒ ``execve()``”h]”hŒexecve()”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjxubhŒ, ”…”�”}”(hjxh²hh³Nh´Nubjt)�”}”(hŒ``execveat()``”h]”hŒ execveat()”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjxubhŒ, ”…”�”}”hjxsbjt)�”}”(hŒ ``mmap()``”h]”hŒmmap()”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjxubhŒ and ”…”�”}”(hjxh²hh³Nh´Nubjt)�”}”(hŒ``mprotect()``”h]”hŒ mprotect()”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjxubhŒ€ syscalls when loading executable content. For interpreted scripts, enforcement requires explicit interpreter integration using ”…”�”}”(hjxh²hh³Nh´Nubjt)�”}”(hŒ``execveat()``”h]”hŒ execveat()”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjxubhŒ with ”…”�”}”(hjxh²hh³Nh´Nubjt)�”}”(hŒ``AT_EXECVE_CHECK``”h]”hŒAT_EXECVE_CHECK”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjxubhŒè flag. Unlike exec syscalls that IPE intercepts during the execution process, this mechanism needs the interpreter to take the initiative, and existing interpreters won’t be automatically supported unless the signal call is added.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kghjh²hubeh}”(h]”Œknown-limitations”ah ]”h"]”Œknown limitations”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KVubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Threat Model”h]”hŒ Threat Model”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjúh²hh³hÇh´Krubhä)�”}”(hŒÈIPE specifically targets the risk of tampering with user-space executable code after the kernel has initially booted, including the kernel modules loaded from userspace via ``modprobe`` or ``insmod``.”h]”(hŒ­IPE specifically targets the risk of tampering with user-space executable code after the kernel has initially booted, including the kernel modules loaded from userspace via ”…”�”}”(hj h²hh³Nh´Nubjt)�”}”(hŒ ``modprobe``”h]”hŒmodprobe”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj ubhŒ or ”…”�”}”(hj h²hh³Nh´Nubjt)�”}”(hŒ ``insmod``”h]”hŒinsmod”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kthjúh²hubhä)�”}”(hXTo illustrate, consider a scenario where an untrusted binary, possibly malicious, is downloaded along with all necessary dependencies, including a loader and libc. The primary function of IPE in this context is to prevent the execution of such binaries and their dependencies.”h]”hXTo illustrate, consider a scenario where an untrusted binary, possibly malicious, is downloaded along with all necessary dependencies, including a loader and libc. The primary function of IPE in this context is to prevent the execution of such binaries and their dependencies.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kxhjúh²hubhä)�”}”(hXSIPE achieves this by verifying the integrity and authenticity of all executable code before allowing them to run. It conducts a thorough check to ensure that the code's integrity is intact and that they match an authorized reference value (digest, signature, etc) as per the defined policy. If a binary does not pass this verification process, either because its integrity has been compromised or it does not meet the authorization criteria, IPE will deny its execution. Additionally, IPE generates audit logs which may be utilized to detect and analyze failures resulting from policy violation.”h]”hXUIPE achieves this by verifying the integrity and authenticity of all executable code before allowing them to run. It conducts a thorough check to ensure that the code’s integrity is intact and that they match an authorized reference value (digest, signature, etc) as per the defined policy. If a binary does not pass this verification process, either because its integrity has been compromised or it does not meet the authorization criteria, IPE will deny its execution. Additionally, IPE generates audit logs which may be utilized to detect and analyze failures resulting from policy violation.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K}hjúh²hubhä)�”}”(hŒqTampering threat scenarios include modification or replacement of executable code by a range of actors including:”h]”hŒqTampering threat scenarios include modification or replacement of executable code by a range of actors including:”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K‡hjúh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ+Actors with physical access to the hardware”h]”hä)�”}”(hjph]”hŒ+Actors with physical access to the hardware”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KŠhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubjm)�”}”(hŒ.Actors with local network access to the system”h]”hä)�”}”(hj‡h]”hŒ.Actors with local network access to the system”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K‹hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubjm)�”}”(hŒ+Actors with access to the deployment system”h]”hä)�”}”(hjžh]”hŒ+Actors with access to the deployment system”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KŒhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubjm)�”}”(hŒ3Compromised internal systems under external control”h]”hä)�”}”(hjµh]”hŒ3Compromised internal systems under external control”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K�hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubjm)�”}”(hŒ!Malicious end users of the system”h]”hä)�”}”(hjÌh]”hŒ!Malicious end users of the system”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KŽhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubjm)�”}”(hŒ#Compromised end users of the system”h]”hä)�”}”(hjãh]”hŒ#Compromised end users of the system”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K�hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubjm)�”}”(hŒ+Remote (external) compromise of the system ”h]”hä)�”}”(hŒ*Remote (external) compromise of the system”h]”hŒ*Remote (external) compromise of the system”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K�hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjih²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jgh³hÇh´KŠhjúh²hubhä)�”}”(hX—IPE does not mitigate threats arising from malicious but authorized developers (with access to a signing certificate), or compromised developer tools used by them (i.e. return-oriented programming attacks). Additionally, IPE draws hard security boundary between userspace and kernelspace. As a result, kernel-level exploits are considered outside the scope of IPE and mitigation is left to other mechanisms.”h]”hX—IPE does not mitigate threats arising from malicious but authorized developers (with access to a signing certificate), or compromised developer tools used by them (i.e. return-oriented programming attacks). Additionally, IPE draws hard security boundary between userspace and kernelspace. As a result, kernel-level exploits are considered outside the scope of IPE and mitigation is left to other mechanisms.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K’hjúh²hubeh}”(h]”Œ threat-model”ah ]”h"]”Œ threat model”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KrubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPolicy”h]”hŒPolicy”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj.h²hh³hÇh´Kšubhä)�”}”(hŒÙIPE policy is a plain-text [#devdoc]_ policy composed of multiple statements over several lines. There is one required line, at the top of the policy, indicating the policy name, and the policy version, for instance::”h]”(hŒIPE policy is a plain-text ”…”�”}”(hj?h²hh³Nh´Nubjî)�”}”(hŒ [#devdoc]_”h]”hŒ2”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”jþKjÿŒdevdoc”jj uh1jíhj?jKubhŒ³ policy composed of multiple statements over several lines. There is one required line, at the top of the policy, indicating the policy name, and the policy version, for instance:”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kœhj.h²hubhŒ literal_block”“”)�”}”(hŒ*policy_name=Ex_Policy policy_version=0.0.0”h]”hŒ*policy_name=Ex_Policy policy_version=0.0.0”…”�”}”hjcsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´K¡hj.h²hubhä)�”}”(hŒÙThe policy name is a unique key identifying this policy in a human readable name. This is used to create nodes under securityfs as well as uniquely identify policies to deploy new policies vs update existing policies.”h]”hŒÙThe policy name is a unique key identifying this policy in a human readable name. This is used to create nodes under securityfs as well as uniquely identify policies to deploy new policies vs update existing policies.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K£hj.h²hubhä)�”}”(hŒÃThe policy version indicates the current version of the policy (NOT the policy syntax version). This is used to prevent rollback of policy to potentially insecure previous versions of the policy.”h]”hŒÃThe policy version indicates the current version of the policy (NOT the policy syntax version). This is used to prevent rollback of policy to potentially insecure previous versions of the policy.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K¨hj.h²hubhä)�”}”(hXŒThe next portion of IPE policy are rules. Rules are formed by key=value pairs, known as properties. IPE rules require two properties: ``action``, which determines what IPE does when it encounters a match against the rule, and ``op``, which determines when the rule should be evaluated. The ordering is significant, a rule must start with ``op``, and end with ``action``. Thus, a minimal rule is::”h]”(hŒ†The next portion of IPE policy are rules. Rules are formed by key=value pairs, known as properties. IPE rules require two properties: ”…”�”}”(hj�h²hh³Nh´Nubjt)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�ubhŒR, which determines what IPE does when it encounters a match against the rule, and ”…”�”}”(hj�h²hh³Nh´Nubjt)�”}”(hŒ``op``”h]”hŒop”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�ubhŒj, which determines when the rule should be evaluated. The ordering is significant, a rule must start with ”…”�”}”(hj�h²hh³Nh´Nubjt)�”}”(hŒ``op``”h]”hŒop”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�ubhŒ, and end with ”…”�”}”(hj�h²hh³Nh´Nubjt)�”}”(hŒ ``action``”h]”hŒaction”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�ubhŒ. Thus, a minimal rule is:”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K¬hj.h²hubjb)�”}”(hŒop=EXECUTE action=ALLOW”h]”hŒop=EXECUTE action=ALLOW”…”�”}”hjãsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´K³hj.h²hubhä)�”}”(hXlThis example will allow any execution. Additional properties are used to assess immutable security properties about the files being evaluated. These properties are intended to be descriptions of systems within the kernel that can provide a measure of integrity verification, such that IPE can determine the trust of the resource based on the value of the property.”h]”hXlThis example will allow any execution. Additional properties are used to assess immutable security properties about the files being evaluated. These properties are intended to be descriptions of systems within the kernel that can provide a measure of integrity verification, such that IPE can determine the trust of the resource based on the value of the property.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kµhj.h²hubhä)�”}”(hŒÀRules are evaluated top-to-bottom. As a result, any revocation rules, or denies should be placed early in the file to ensure that these rules are evaluated before a rule with ``action=ALLOW``.”h]”(hŒ¯Rules are evaluated top-to-bottom. As a result, any revocation rules, or denies should be placed early in the file to ensure that these rules are evaluated before a rule with ”…”�”}”(hjÿh²hh³Nh´Nubjt)�”}”(hŒ``action=ALLOW``”h]”hŒ action=ALLOW”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÿubhŒ.”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K»hj.h²hubhä)�”}”(hŒŠIPE policy supports comments. The character '#' will function as a comment, ignoring all characters to the right of '#' until the newline.”h]”hŒ’IPE policy supports comments. The character ‘#’ will function as a comment, ignoring all characters to the right of ‘#’ until the newline.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K¿hj.h²hubhä)�”}”(hŒªThe default behavior of IPE evaluations can also be expressed in policy, through the ``DEFAULT`` statement. This can be done at a global level, or a per-operation level::”h]”(hŒUThe default behavior of IPE evaluations can also be expressed in policy, through the ”…”�”}”(hj-h²hh³Nh´Nubjt)�”}”(hŒ ``DEFAULT``”h]”hŒDEFAULT”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj-ubhŒI statement. This can be done at a global level, or a per-operation level:”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÂhj.h²hubjb)�”}”(hŒS# Global DEFAULT action=ALLOW # Operation Specific DEFAULT op=EXECUTE action=ALLOW”h]”hŒS# Global DEFAULT action=ALLOW # Operation Specific DEFAULT op=EXECUTE action=ALLOW”…”�”}”hjMsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´KÆhj.h²hubhä)�”}”(hXA default must be set for all known operations in IPE. If you want to preserve older policies being compatible with newer kernels that can introduce new operations, set a global default of ``ALLOW``, then override the defaults on a per-operation basis (as above).”h]”(hŒ½A default must be set for all known operations in IPE. If you want to preserve older policies being compatible with newer kernels that can introduce new operations, set a global default of ”…”�”}”(hj[h²hh³Nh´Nubjt)�”}”(hŒ ``ALLOW``”h]”hŒALLOW”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj[ubhŒA, then override the defaults on a per-operation basis (as above).”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÌhj.h²hubhä)�”}”(hŒ—With configurable policy-based LSMs, there's several issues with enforcing the configurable policies at startup, around reading and parsing the policy:”h]”hŒ™With configurable policy-based LSMs, there’s several issues with enforcing the configurable policies at startup, around reading and parsing the policy:”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÑhj.h²hubhŒenumerated_list”“”)�”}”(hhh]”(jm)�”}”(hŒeThe kernel *should* not read files from userspace, so directly reading the policy file is prohibited.”h]”hä)�”}”(hŒeThe kernel *should* not read files from userspace, so directly reading the policy file is prohibited.”h]”(hŒ The kernel ”…”�”}”(hj’h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*should*”h]”hŒshould”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’ubhŒR not read files from userspace, so directly reading the policy file is prohibited.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÕhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‹h²hh³hÇh´Nubjm)�”}”(hŒ�The kernel command line has a character limit, and one kernel module should not reserve the entire character limit for its own configuration.”h]”hä)�”}”(hŒ�The kernel command line has a character limit, and one kernel module should not reserve the entire character limit for its own configuration.”h]”hŒ�The kernel command line has a character limit, and one kernel module should not reserve the entire character limit for its own configuration.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K×hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‹h²hh³hÇh´Nubjm)�”}”(hŒsThere are various boot loaders in the kernel ecosystem, so handing off a memory block would be costly to maintain. ”h]”hä)�”}”(hŒrThere are various boot loaders in the kernel ecosystem, so handing off a memory block would be costly to maintain.”h]”hŒrThere are various boot loaders in the kernel ecosystem, so handing off a memory block would be costly to maintain.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÚhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‹h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j‰hj.h²hh³hÇh´KÕubhä)�”}”(hXuAs a result, IPE has addressed this problem through a concept of a "boot policy". A boot policy is a minimal policy which is compiled into the kernel. This policy is intended to get the system to a state where userspace is set up and ready to receive commands, at which point a more complex policy can be deployed via securityfs. The boot policy can be specified via ``SECURITY_IPE_BOOT_POLICY`` config option, which accepts a path to a plain-text version of the IPE policy to apply. This policy will be compiled into the kernel. If not specified, IPE will be disabled until a policy is deployed and activated through securityfs.”h]”(hXsAs a result, IPE has addressed this problem through a concept of a “boot policyâ€�. A boot policy is a minimal policy which is compiled into the kernel. This policy is intended to get the system to a state where userspace is set up and ready to receive commands, at which point a more complex policy can be deployed via securityfs. The boot policy can be specified via ”…”�”}”(hjõh²hh³Nh´Nubjt)�”}”(hŒ``SECURITY_IPE_BOOT_POLICY``”h]”hŒSECURITY_IPE_BOOT_POLICY”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjõubhŒê config option, which accepts a path to a plain-text version of the IPE policy to apply. This policy will be compiled into the kernel. If not specified, IPE will be disabled until a policy is deployed and activated through securityfs.”…”�”}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÝhj.h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDeploying Policies”h]”hŒDeploying Policies”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´Kèubhä)�”}”(hXAPolicies can be deployed from userspace through securityfs. These policies are signed through the PKCS#7 message format to enforce some level of authorization of the policies (prohibiting an attacker from gaining unconstrained root, and deploying an "allow all" policy). These policies must be signed by a certificate that chains to the ``SYSTEM_TRUSTED_KEYRING``, or to the secondary and/or platform keyrings if ``CONFIG_IPE_POLICY_SIG_SECONDARY_KEYRING`` and/or ``CONFIG_IPE_POLICY_SIG_PLATFORM_KEYRING`` are enabled, respectively. With openssl, the policy can be signed by::”h]”(hXUPolicies can be deployed from userspace through securityfs. These policies are signed through the PKCS#7 message format to enforce some level of authorization of the policies (prohibiting an attacker from gaining unconstrained root, and deploying an “allow allâ€� policy). These policies must be signed by a certificate that chains to the ”…”�”}”(hj&h²hh³Nh´Nubjt)�”}”(hŒ``SYSTEM_TRUSTED_KEYRING``”h]”hŒSYSTEM_TRUSTED_KEYRING”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj&ubhŒ2, or to the secondary and/or platform keyrings if ”…”�”}”(hj&h²hh³Nh´Nubjt)�”}”(hŒ+``CONFIG_IPE_POLICY_SIG_SECONDARY_KEYRING``”h]”hŒ'CONFIG_IPE_POLICY_SIG_SECONDARY_KEYRING”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj&ubhŒ and/or ”…”�”}”(hj&h²hh³Nh´Nubjt)�”}”(hŒ*``CONFIG_IPE_POLICY_SIG_PLATFORM_KEYRING``”h]”hŒ&CONFIG_IPE_POLICY_SIG_PLATFORM_KEYRING”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj&ubhŒF are enabled, respectively. With openssl, the policy can be signed by:”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kêhjh²hubjb)�”}”(hŒÀopenssl smime -sign \ -in "$MY_POLICY" \ -signer "$MY_CERTIFICATE" \ -inkey "$MY_PRIVATE_KEY" \ -noattr \ -nodetach \ -nosmimecap \ -outform der \ -out "$MY_POLICY.p7b"”h]”hŒÀopenssl smime -sign \ -in "$MY_POLICY" \ -signer "$MY_CERTIFICATE" \ -inkey "$MY_PRIVATE_KEY" \ -noattr \ -nodetach \ -nosmimecap \ -outform der \ -out "$MY_POLICY.p7b"”…”�”}”hjjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Kôhjh²hubhä)�”}”(hŒ–Deploying the policies is done through securityfs, through the ``new_policy`` node. To deploy a policy, simply cat the file into the securityfs node::”h]”(hŒ?Deploying the policies is done through securityfs, through the ”…”�”}”(hjxh²hh³Nh´Nubjt)�”}”(hŒ``new_policy``”h]”hŒ new_policy”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjxubhŒH node. To deploy a policy, simply cat the file into the securityfs node:”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kþhjh²hubjb)�”}”(hŒ:cat "$MY_POLICY.p7b" > /sys/kernel/security/ipe/new_policy”h]”hŒ:cat "$MY_POLICY.p7b" > /sys/kernel/security/ipe/new_policy”…”�”}”hj˜sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Mhjh²hubhä)�”}”(hX‘Upon success, this will create one subdirectory under ``/sys/kernel/security/ipe/policies/``. The subdirectory will be the ``policy_name`` field of the policy deployed, so for the example above, the directory will be ``/sys/kernel/security/ipe/policies/Ex_Policy``. Within this directory, there will be seven files: ``pkcs7``, ``policy``, ``name``, ``version``, ``active``, ``update``, and ``delete``.”h]”(hŒ6Upon success, this will create one subdirectory under ”…”�”}”(hj¦h²hh³Nh´Nubjt)�”}”(hŒ&``/sys/kernel/security/ipe/policies/``”h]”hŒ"/sys/kernel/security/ipe/policies/”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ. The subdirectory will be the ”…”�”}”(hj¦h²hh³Nh´Nubjt)�”}”(hŒ``policy_name``”h]”hŒ policy_name”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒO field of the policy deployed, so for the example above, the directory will be ”…”�”}”(hj¦h²hh³Nh´Nubjt)�”}”(hŒ/``/sys/kernel/security/ipe/policies/Ex_Policy``”h]”hŒ+/sys/kernel/security/ipe/policies/Ex_Policy”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ4. Within this directory, there will be seven files: ”…”�”}”(hj¦h²hh³Nh´Nubjt)�”}”(hŒ ``pkcs7``”h]”hŒpkcs7”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ, ”…”�”}”(hj¦h²hh³Nh´Nubjt)�”}”(hŒ ``policy``”h]”hŒpolicy”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ, ”…”�”}”(hj¦h²hh³Nh´Nubjt)�”}”(hŒ``name``”h]”hŒname”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ, ”…”�”}”hj¦sbjt)�”}”(hŒ ``version``”h]”hŒversion”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ, ”…”�”}”hj¦sbjt)�”}”(hŒ ``active``”h]”hŒactive”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ, ”…”�”}”hj¦sbjt)�”}”(hŒ ``update``”h]”hŒupdate”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ, and ”…”�”}”(hj¦h²hh³Nh´Nubjt)�”}”(hŒ ``delete``”h]”hŒdelete”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¦ubhŒ.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjh²hubhä)�”}”(hŒàThe ``pkcs7`` file is read-only. Reading it returns the raw PKCS#7 data that was provided to the kernel, representing the policy. If the policy being read is the boot policy, this will return ``ENOENT``, as it is not signed.”h]”(hŒThe ”…”�”}”(hjhh²hh³Nh´Nubjt)�”}”(hŒ ``pkcs7``”h]”hŒpkcs7”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjhubhŒ³ file is read-only. Reading it returns the raw PKCS#7 data that was provided to the kernel, representing the policy. If the policy being read is the boot policy, this will return ”…”�”}”(hjhh²hh³Nh´Nubjt)�”}”(hŒ ``ENOENT``”h]”hŒENOENT”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjhubhŒ, as it is not signed.”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjh²hubhä)�”}”(hŒ�The ``policy`` file is read only. Reading it returns the PKCS#7 inner content of the policy, which will be the plain text policy.”h]”(hŒThe ”…”�”}”(hjšh²hh³Nh´Nubjt)�”}”(hŒ ``policy``”h]”hŒpolicy”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjšubhŒs file is read only. Reading it returns the PKCS#7 inner content of the policy, which will be the plain text policy.”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjh²hubhä)�”}”(hXgThe ``active`` file is used to set a policy as the currently active policy. This file is rw, and accepts a value of ``"1"`` to set the policy as active. Since only a single policy can be active at one time, all other policies will be marked inactive. The policy being marked active must have a policy version greater or equal to the currently-running version.”h]”(hŒThe ”…”�”}”(hjºh²hh³Nh´Nubjt)�”}”(hŒ ``active``”h]”hŒactive”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjºubhŒf file is used to set a policy as the currently active policy. This file is rw, and accepts a value of ”…”�”}”(hjºh²hh³Nh´Nubjt)�”}”(hŒ``"1"``”h]”hŒ"1"”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjºubhŒì to set the policy as active. Since only a single policy can be active at one time, all other policies will be marked inactive. The policy being marked active must have a policy version greater or equal to the currently-running version.”…”�”}”(hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjh²hubhä)�”}”(hX¥The ``update`` file is used to update a policy that is already present in the kernel. This file is write-only and accepts a PKCS#7 signed policy. Two checks will always be performed on this policy: First, the ``policy_names`` must match with the updated version and the existing version. Second the updated policy must have a policy version greater than the currently-running version. This is to prevent rollback attacks.”h]”(hŒThe ”…”�”}”(hjìh²hh³Nh´Nubjt)�”}”(hŒ ``update``”h]”hŒupdate”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjìubhŒÃ file is used to update a policy that is already present in the kernel. This file is write-only and accepts a PKCS#7 signed policy. Two checks will always be performed on this policy: First, the ”…”�”}”(hjìh²hh³Nh´Nubjt)�”}”(hŒ``policy_names``”h]”hŒ policy_names”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjìubhŒÄ must match with the updated version and the existing version. Second the updated policy must have a policy version greater than the currently-running version. This is to prevent rollback attacks.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjh²hubhä)�”}”(hXHThe ``delete`` file is used to remove a policy that is no longer needed. This file is write-only and accepts a value of ``1`` to delete the policy. On deletion, the securityfs node representing the policy will be removed. However, delete the current active policy is not allowed and will return an operation not permitted error.”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubjt)�”}”(hŒ ``delete``”h]”hŒdelete”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubhŒj file is used to remove a policy that is no longer needed. This file is write-only and accepts a value of ”…”�”}”(hjh²hh³Nh´Nubjt)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjubhŒË to delete the policy. On deletion, the securityfs node representing the policy will be removed. However, delete the current active policy is not allowed and will return an operation not permitted error.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjh²hubhä)�”}”(hXSimilarly, writing to both ``update`` and ``new_policy`` could result in bad message(policy syntax error) or file exists error. The latter error happens when trying to deploy a policy with a ``policy_name`` while the kernel already has a deployed policy with the same ``policy_name``.”h]”(hŒSimilarly, writing to both ”…”�”}”(hjPh²hh³Nh´Nubjt)�”}”(hŒ ``update``”h]”hŒupdate”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjPubhŒ and ”…”�”}”(hjPh²hh³Nh´Nubjt)�”}”(hŒ``new_policy``”h]”hŒ new_policy”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjPubhŒ‡ could result in bad message(policy syntax error) or file exists error. The latter error happens when trying to deploy a policy with a ”…”�”}”(hjPh²hh³Nh´Nubjt)�”}”(hŒ``policy_name``”h]”hŒ policy_name”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjPubhŒ> while the kernel already has a deployed policy with the same ”…”�”}”(hjPh²hh³Nh´Nubjt)�”}”(hŒ``policy_name``”h]”hŒ policy_name”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjPubhŒ.”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M%hjh²hubhä)�”}”(hŒ©Deploying a policy will *not* cause IPE to start enforcing the policy. IPE will only enforce the policy marked active. Note that only one policy can be active at a time.”h]”(hŒDeploying a policy will ”…”�”}”(hj¦h²hh³Nh´Nubj›)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj¦ubhŒŒ cause IPE to start enforcing the policy. IPE will only enforce the policy marked active. Note that only one policy can be active at a time.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M*hjh²hubhä)�”}”(hŒ»Once deployment is successful, the policy can be activated, by writing file ``/sys/kernel/security/ipe/policies/$policy_name/active``. For example, the ``Ex_Policy`` can be activated by::”h]”(hŒLOnce deployment is successful, the policy can be activated, by writing file ”…”�”}”(hjÆh²hh³Nh´Nubjt)�”}”(hŒ9``/sys/kernel/security/ipe/policies/$policy_name/active``”h]”hŒ5/sys/kernel/security/ipe/policies/$policy_name/active”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÆubhŒ. For example, the ”…”�”}”(hjÆh²hh³Nh´Nubjt)�”}”(hŒ ``Ex_Policy``”h]”hŒ Ex_Policy”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÆubhŒ can be activated by:”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M.hjh²hubjb)�”}”(hŒ=echo 1 > "/sys/kernel/security/ipe/policies/Ex_Policy/active"”h]”hŒ=echo 1 > "/sys/kernel/security/ipe/policies/Ex_Policy/active"”…”�”}”hjøsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´M2hjh²hubhä)�”}”(hŒLFrom above point on, ``Ex_Policy`` is now the enforced policy on the system.”h]”(hŒFrom above point on, ”…”�”}”(hj h²hh³Nh´Nubjt)�”}”(hŒ ``Ex_Policy``”h]”hŒ Ex_Policy”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj ubhŒ* is now the enforced policy on the system.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M4hjh²hubhä)�”}”(hŒËIPE also provides a way to delete policies. This can be done via the ``delete`` securityfs node, ``/sys/kernel/security/ipe/policies/$policy_name/delete``. Writing ``1`` to that file deletes the policy::”h]”(hŒEIPE also provides a way to delete policies. This can be done via the ”…”�”}”(hj& h²hh³Nh´Nubjt)�”}”(hŒ ``delete``”h]”hŒdelete”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj& ubhŒ securityfs node, ”…”�”}”(hj& h²hh³Nh´Nubjt)�”}”(hŒ9``/sys/kernel/security/ipe/policies/$policy_name/delete``”h]”hŒ5/sys/kernel/security/ipe/policies/$policy_name/delete”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj& ubhŒ . Writing ”…”�”}”(hj& h²hh³Nh´Nubjt)�”}”(hŒ``1``”h]”hŒ1”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj& ubhŒ! to that file deletes the policy:”…”�”}”(hj& h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M7hjh²hubjb)�”}”(hŒ@echo 1 > "/sys/kernel/security/ipe/policies/$policy_name/delete"”h]”hŒ@echo 1 > "/sys/kernel/security/ipe/policies/$policy_name/delete"”…”�”}”hjj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´M<hjh²hubhä)�”}”(hŒ\There is only one requirement to delete a policy: the policy being deleted must be inactive.”h]”hŒ\There is only one requirement to delete a policy: the policy being deleted must be inactive.”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M>hjh²hubhÞ)�”}”(hŒ‚If a traditional MAC system is enabled (SELinux, apparmor, smack), all writes to ipe's securityfs nodes require ``CAP_MAC_ADMIN``.”h]”hä)�”}”(hŒ‚If a traditional MAC system is enabled (SELinux, apparmor, smack), all writes to ipe's securityfs nodes require ``CAP_MAC_ADMIN``.”h]”(hŒrIf a traditional MAC system is enabled (SELinux, apparmor, smack), all writes to ipe’s securityfs nodes require ”…”�”}”(hjŠ h²hh³Nh´Nubjt)�”}”(hŒ``CAP_MAC_ADMIN``”h]”hŒ CAP_MAC_ADMIN”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjŠ ubhŒ.”…”�”}”(hjŠ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MChj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjh²hh³hÇh´Nubeh}”(h]”Œdeploying-policies”ah ]”h"]”Œdeploying policies”ah$]”h&]”uh1hÈhj.h²hh³hÇh´KèubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒModes”h]”hŒModes”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¸ h²hh³hÇh´MGubhä)�”}”(hXIPE supports two modes of operation: permissive (similar to SELinux's permissive mode) and enforced. In permissive mode, all events are checked and policy violations are logged, but the policy is not really enforced. This allows users to test policies before enforcing them.”h]”hXIPE supports two modes of operation: permissive (similar to SELinux’s permissive mode) and enforced. In permissive mode, all events are checked and policy violations are logged, but the policy is not really enforced. This allows users to test policies before enforcing them.”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MIhj¸ h²hubhä)�”}”(hŒ©The default mode is enforce, and can be changed via the kernel command line parameter ``ipe.enforce=(0|1)``, or the securityfs node ``/sys/kernel/security/ipe/enforce``.”h]”(hŒVThe default mode is enforce, and can be changed via the kernel command line parameter ”…”�”}”(hj× h²hh³Nh´Nubjt)�”}”(hŒ``ipe.enforce=(0|1)``”h]”hŒipe.enforce=(0|1)”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj× ubhŒ, or the securityfs node ”…”�”}”(hj× h²hh³Nh´Nubjt)�”}”(hŒ$``/sys/kernel/security/ipe/enforce``”h]”hŒ /sys/kernel/security/ipe/enforce”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj× ubhŒ.”…”�”}”(hj× h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MNhj¸ h²hubhÞ)�”}”(hŒŒIf a traditional MAC system is enabled (SELinux, apparmor, smack, etcetera), all writes to ipe's securityfs nodes require ``CAP_MAC_ADMIN``.”h]”hä)�”}”(hŒŒIf a traditional MAC system is enabled (SELinux, apparmor, smack, etcetera), all writes to ipe's securityfs nodes require ``CAP_MAC_ADMIN``.”h]”(hŒ|If a traditional MAC system is enabled (SELinux, apparmor, smack, etcetera), all writes to ipe’s securityfs nodes require ”…”�”}”(hj h²hh³Nh´Nubjt)�”}”(hŒ``CAP_MAC_ADMIN``”h]”hŒ CAP_MAC_ADMIN”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MThj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj¸ h²hh³hÇh´Nubeh}”(h]”Œmodes”ah ]”h"]”Œmodes”ah$]”h&]”uh1hÈhj.h²hh³hÇh´MGubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Audit Events”h]”hŒ Audit Events”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj; h²hh³hÇh´MXubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ1420 AUDIT_IPE_ACCESS”h]”hŒ1420 AUDIT_IPE_ACCESS”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjL h²hh³hÇh´M[ubhä)�”}”(hŒEvent Examples::”h]”hŒEvent Examples:”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M\hjL h²hubjb)�”}”(hXwtype=1420 audit(1653364370.067:61): ipe_op=EXECUTE ipe_hook=MMAP enforcing=1 pid=2241 comm="ld-linux.so" path="/deny/lib/libc.so.6" dev="sda2" ino=14549020 rule="DEFAULT action=DENY" type=1300 audit(1653364370.067:61): SYSCALL arch=c000003e syscall=9 success=no exit=-13 a0=7f1105a28000 a1=195000 a2=5 a3=812 items=0 ppid=2219 pid=2241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=2 comm="ld-linux.so" exe="/tmp/ipe-test/lib/ld-linux.so" subj=unconfined key=(null) type=1327 audit(1653364370.067:61): 707974686F6E3300746573742F6D61696E2E7079002D6E00 type=1420 audit(1653364735.161:64): ipe_op=EXECUTE ipe_hook=MMAP enforcing=1 pid=2472 comm="mmap_test" path=? dev=? ino=? rule="DEFAULT action=DENY" type=1300 audit(1653364735.161:64): SYSCALL arch=c000003e syscall=9 success=no exit=-13 a0=0 a1=1000 a2=4 a3=21 items=0 ppid=2219 pid=2472 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=2 comm="mmap_test" exe="/root/overlake_test/upstream_test/vol_fsverity/bin/mmap_test" subj=unconfined key=(null) type=1327 audit(1653364735.161:64): 707974686F6E3300746573742F6D61696E2E7079002D6E00”h]”hXwtype=1420 audit(1653364370.067:61): ipe_op=EXECUTE ipe_hook=MMAP enforcing=1 pid=2241 comm="ld-linux.so" path="/deny/lib/libc.so.6" dev="sda2" ino=14549020 rule="DEFAULT action=DENY" type=1300 audit(1653364370.067:61): SYSCALL arch=c000003e syscall=9 success=no exit=-13 a0=7f1105a28000 a1=195000 a2=5 a3=812 items=0 ppid=2219 pid=2241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=2 comm="ld-linux.so" exe="/tmp/ipe-test/lib/ld-linux.so" subj=unconfined key=(null) type=1327 audit(1653364370.067:61): 707974686F6E3300746573742F6D61696E2E7079002D6E00 type=1420 audit(1653364735.161:64): ipe_op=EXECUTE ipe_hook=MMAP enforcing=1 pid=2472 comm="mmap_test" path=? dev=? ino=? rule="DEFAULT action=DENY" type=1300 audit(1653364735.161:64): SYSCALL arch=c000003e syscall=9 success=no exit=-13 a0=0 a1=1000 a2=4 a3=21 items=0 ppid=2219 pid=2472 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=2 comm="mmap_test" exe="/root/overlake_test/upstream_test/vol_fsverity/bin/mmap_test" subj=unconfined key=(null) type=1327 audit(1653364735.161:64): 707974686F6E3300746573742F6D61696E2E7079002D6E00”…”�”}”hjk sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´M^hjL h²hubhä)�”}”(hŒžThis event indicates that IPE made an access control decision; the IPE specific record (1420) is always emitted in conjunction with a ``AUDITSYSCALL`` record.”h]”(hŒ†This event indicates that IPE made an access control decision; the IPE specific record (1420) is always emitted in conjunction with a ”…”�”}”(hjy h²hh³Nh´Nubjt)�”}”(hŒ``AUDITSYSCALL``”h]”hŒ AUDITSYSCALL”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjy ubhŒ record.”…”�”}”(hjy h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MfhjL h²hubhä)�”}”(hŒ�Determining whether IPE is in permissive or enforced mode can be derived from ``success`` property and exit code of the ``AUDITSYSCALL`` record.”h]”(hŒNDetermining whether IPE is in permissive or enforced mode can be derived from ”…”�”}”(hj™ h²hh³Nh´Nubjt)�”}”(hŒ ``success``”h]”hŒsuccess”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj™ ubhŒ property and exit code of the ”…”�”}”(hj™ h²hh³Nh´Nubjt)�”}”(hŒ``AUDITSYSCALL``”h]”hŒ AUDITSYSCALL”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj™ ubhŒ record.”…”�”}”(hj™ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MjhjL h²hubhä)�”}”(hŒField descriptions:”h]”hŒField descriptions:”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MnhjL h²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hjà ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hjà ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hjà ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”KQuh1jã hjà ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hä)�”}”(hŒField”h]”hŒField”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mqhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒ Value Type”h]”hŒ Value Type”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mqhj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒ Optional?”h]”hŒ Optional?”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MqhjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒDescription of Value”h]”hŒDescription of Value”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mqhj^ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjà ubhŒtbody”“”)�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒipe_op”h]”hŒipe_op”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mshj‰ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj† ubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mshj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj† ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mshj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj† ubj )�”}”(hhh]”hä)�”}”(hŒ.The IPE operation name associated with the log”h]”hŒ.The IPE operation name associated with the log”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MshjÎ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒipe_hook”h]”hŒipe_hook”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Muhjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Muhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Muhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubj )�”}”(hhh]”hä)�”}”(hŒ5The name of the LSM hook that triggered the IPE event”h]”hŒ5The name of the LSM hook that triggered the IPE event”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Muhj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ enforcing”h]”hŒ enforcing”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MwhjS ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mwhjj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mwhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP ubj )�”}”(hhh]”hä)�”}”(hŒOThe current IPE enforcing state 1 is in enforcing mode, 0 is in permissive mode”h]”hŒOThe current IPE enforcing state 1 is in enforcing mode, 0 is in permissive mode”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mwhj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒpid”h]”hŒpid”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Myhj¸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MyhjÏ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Myhjæ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ ubj )�”}”(hhh]”hä)�”}”(hŒ4The pid of the process that triggered the IPE event.”h]”hŒ4The pid of the process that triggered the IPE event.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Myhjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒcomm”h]”hŒcomm”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M{hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M{hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M{hjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒIThe command line program name of the process that triggered the IPE event”h]”hŒIThe command line program name of the process that triggered the IPE event”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M{hjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M}hj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M}hj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M}hj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒ'The absolute path to the evaluated file”h]”hŒ'The absolute path to the evaluated file”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M}hjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒino”h]”hŒino”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjç ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubj )�”}”(hhh]”hä)�”}”(hŒ&The inode number of the evaluated file”h]”hŒ&The inode number of the evaluated file”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjä ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubj )�”}”(hhh]”hä)�”}”(hŒ/The device name of the evaluated file, e.g. vda”h]”hŒ/The device name of the evaluated file, e.g. vda”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒrule”h]”hŒrule”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mƒhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MƒhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mƒhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubj )�”}”(hhh]”hä)�”}”(hŒThe matched policy rule”h]”hŒThe matched policy rule”…”�”•2}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mƒhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjà ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÞ hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÙ hjL h²hh³hÇh´Nubeh}”(h]”Œaudit-ipe-access”ah ]”h"]”Œ1420 audit_ipe_access”ah$]”h&]”uh1hÈhj; h²hh³hÇh´M[ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ1421 AUDIT_IPE_CONFIG_CHANGE”h]”hŒ1421 AUDIT_IPE_CONFIG_CHANGE”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj.h²hh³hÇh´M‡ubhä)�”}”(hŒEvent Example::”h]”hŒEvent Example:”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M‰hj.h²hubjb)�”}”(hXtype=1421 audit(1653425583.136:54): old_active_pol_name="Allow_All" old_active_pol_version=0.0.0 old_policy_digest=sha256:E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 new_active_pol_name="boot_verified" new_active_pol_version=0.0.0 new_policy_digest=sha256:820EEA5B40CA42B51F68962354BA083122A20BB846F26765076DD8EED7B8F4DB auid=4294967295 ses=4294967295 lsm=ipe res=1 type=1300 audit(1653425583.136:54): SYSCALL arch=c000003e syscall=1 success=yes exit=2 a0=3 a1=5596fcae1fb0 a2=2 a3=2 items=0 ppid=184 pid=229 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="python3" exe="/usr/bin/python3.10" key=(null) type=1327 audit(1653425583.136:54): PROCTITLE proctitle=707974686F6E3300746573742F6D61696E2E7079002D66002E2”h]”hXtype=1421 audit(1653425583.136:54): old_active_pol_name="Allow_All" old_active_pol_version=0.0.0 old_policy_digest=sha256:E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 new_active_pol_name="boot_verified" new_active_pol_version=0.0.0 new_policy_digest=sha256:820EEA5B40CA42B51F68962354BA083122A20BB846F26765076DD8EED7B8F4DB auid=4294967295 ses=4294967295 lsm=ipe res=1 type=1300 audit(1653425583.136:54): SYSCALL arch=c000003e syscall=1 success=yes exit=2 a0=3 a1=5596fcae1fb0 a2=2 a3=2 items=0 ppid=184 pid=229 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="python3" exe="/usr/bin/python3.10" key=(null) type=1327 audit(1653425583.136:54): PROCTITLE proctitle=707974686F6E3300746573742F6D61696E2E7079002D66002E2”…”�”}”hjMsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´M‹hj.h²hubhä)�”}”(hX�This event indicates that IPE switched the active poliy from one to another along with the version and the hash digest of the two policies. Note IPE can only have one policy active at a time, all access decision evaluation is based on the current active policy. The normal procedure to deploy a new policy is loading the policy to deploy into the kernel first, then switch the active policy to it.”h]”hX�This event indicates that IPE switched the active poliy from one to another along with the version and the hash digest of the two policies. Note IPE can only have one policy active at a time, all access decision evaluation is based on the current active policy. The normal procedure to deploy a new policy is loading the policy to deploy into the kernel first, then switch the active policy to it.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hj.h²hubhä)�”}”(hŒkThis record will always be emitted in conjunction with a ``AUDITSYSCALL`` record for the ``write`` syscall.”h]”(hŒ9This record will always be emitted in conjunction with a ”…”�”}”(hjih²hh³Nh´Nubjt)�”}”(hŒ``AUDITSYSCALL``”h]”hŒ AUDITSYSCALL”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjiubhŒ record for the ”…”�”}”(hjih²hh³Nh´Nubjt)�”}”(hŒ ``write``”h]”hŒwrite”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjiubhŒ syscall.”…”�”}”(hjih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M–hj.h²hubhä)�”}”(hŒField descriptions:”h]”hŒField descriptions:”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M˜hj.h²hubjÚ )�”}”(hhh]”jß )�”}”(hhh]”(jä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jã hj¬ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hj¬ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hj¬ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K3uh1jã hj¬ubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒField”h]”hŒField”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M›hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚubj )�”}”(hhh]”hä)�”}”(hŒ Value Type”h]”hŒ Value Type”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M›hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚubj )�”}”(hhh]”hä)�”}”(hŒ Optional?”h]”hŒ Optional?”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M›hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚubj )�”}”(hhh]”hä)�”}”(hŒDescription of Value”h]”hŒDescription of Value”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M›hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬ubj‚ )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒold_active_pol_name”h]”hŒold_active_pol_name”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHubj )�”}”(hhh]”hä)�”}”(hŒ"The name of previous active policy”h]”hŒ"The name of previous active policy”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒold_active_pol_version”h]”hŒold_active_pol_version”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MŸhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MŸhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MŸhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubj )�”}”(hhh]”hä)�”}”(hŒ%The version of previous active policy”h]”hŒ%The version of previous active policy”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MŸhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒold_policy_digest”h]”hŒold_policy_digest”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¡hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¡hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¡hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒ"The hash of previous active policy”h]”hŒ"The hash of previous active policy”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¡hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒnew_active_pol_name”h]”hŒnew_active_pol_name”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M£hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M£hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M£hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwubj )�”}”(hhh]”hä)�”}”(hŒ!The name of current active policy”h]”hŒ!The name of current active policy”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M£hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒnew_active_pol_version”h]”hŒnew_active_pol_version”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¥hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¥hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¥hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubj )�”}”(hhh]”hä)�”}”(hŒ$The version of current active policy”h]”hŒ$The version of current active policy”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¥hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒnew_policy_digest”h]”hŒnew_policy_digest”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M§hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjAubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M§hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjAubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M§hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjAubj )�”}”(hhh]”hä)�”}”(hŒ!The hash of current active policy”h]”hŒ!The hash of current active policy”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M§hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒauid”h]”hŒauid”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M©hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M©hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M©hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦ubj )�”}”(hhh]”hä)�”}”(hŒThe login user ID”h]”hŒThe login user ID”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M©hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒses”h]”hŒses”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M«hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M«hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M«hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒThe login session ID”h]”hŒThe login session ID”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M«hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒlsm”h]”hŒlsm”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M­hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M­hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M­hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpubj )�”}”(hhh]”hä)�”}”(hŒ&The lsm name associated with the event”h]”hŒ&The lsm name associated with the event”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M­hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒres”h]”hŒres”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¯hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¯hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¯hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕubj )�”}”(hhh]”hä)�”}”(hŒ1The result of the audited operation(success/fail)”h]”hŒ1The result of the audited operation(success/fail)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¯hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÞ hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÙ hj.h²hh³hÇh´Nubeh}”(h]”Œaudit-ipe-config-change”ah ]”h"]”Œ1421 audit_ipe_config_change”ah$]”h&]”uh1hÈhj; h²hh³hÇh´M‡ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ1422 AUDIT_IPE_POLICY_LOAD”h]”hŒ1422 AUDIT_IPE_POLICY_LOAD”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjUh²hh³hÇh´M³ubhä)�”}”(hŒEvent Example::”h]”hŒEvent Example:”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MµhjUh²hubjb)�”}”(hXltype=1422 audit(1653425529.927:53): policy_name="boot_verified" policy_version=0.0.0 policy_digest=sha256:820EEA5B40CA42B51F68962354BA083122A20BB846F26765076DD8EED7B8F4DB auid=4294967295 ses=4294967295 lsm=ipe res=1 errno=0 type=1300 audit(1653425529.927:53): arch=c000003e syscall=1 success=yes exit=2567 a0=3 a1=5596fcae1fb0 a2=a07 a3=2 items=0 ppid=184 pid=229 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="python3" exe="/usr/bin/python3.10" key=(null) type=1327 audit(1653425529.927:53): PROCTITLE proctitle=707974686F6E3300746573742F6D61696E2E7079002D66002E2E”h]”hXltype=1422 audit(1653425529.927:53): policy_name="boot_verified" policy_version=0.0.0 policy_digest=sha256:820EEA5B40CA42B51F68962354BA083122A20BB846F26765076DD8EED7B8F4DB auid=4294967295 ses=4294967295 lsm=ipe res=1 errno=0 type=1300 audit(1653425529.927:53): arch=c000003e syscall=1 success=yes exit=2567 a0=3 a1=5596fcae1fb0 a2=a07 a3=2 items=0 ppid=184 pid=229 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="python3" exe="/usr/bin/python3.10" key=(null) type=1327 audit(1653425529.927:53): PROCTITLE proctitle=707974686F6E3300746573742F6D61696E2E7079002D66002E2E”…”�”}”hjtsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´M·hjUh²hubhä)�”}”(hŒxThis record indicates a new policy has been loaded into the kernel with the policy name, policy version and policy hash.”h]”hŒxThis record indicates a new policy has been loaded into the kernel with the policy name, policy version and policy hash.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M»hjUh²hubhä)�”}”(hŒkThis record will always be emitted in conjunction with a ``AUDITSYSCALL`` record for the ``write`` syscall.”h]”(hŒ9This record will always be emitted in conjunction with a ”…”�”}”(hj�h²hh³Nh´Nubjt)�”}”(hŒ``AUDITSYSCALL``”h]”hŒ AUDITSYSCALL”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�ubhŒ record for the ”…”�”}”(hj�h²hh³Nh´Nubjt)�”}”(hŒ ``write``”h]”hŒwrite”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�ubhŒ syscall.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M½hjUh²hubhä)�”}”(hŒField descriptions:”h]”hŒField descriptions:”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¿hjUh²hubjÚ )�”}”(hhh]”jß )�”}”(hhh]”(jä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jã hjÓubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hjÓubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hjÓubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K=uh1jã hjÓubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒField”h]”hŒField”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÂhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒ Value Type”h]”hŒ Value Type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÂhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒ Optional?”h]”hŒ Optional?”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÂhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒDescription of Value”h]”hŒDescription of Value”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÂhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓubj‚ )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ policy_name”h]”hŒ policy_name”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÄhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÄhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÄhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoubj )�”}”(hhh]”hä)�”}”(hŒThe policy_name”h]”hŒThe policy_name”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÄhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒpolicy_version”h]”hŒpolicy_version”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÆhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÆhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÆhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔubj )�”}”(hhh]”hä)�”}”(hŒThe policy_version”h]”hŒThe policy_version”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÆhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ policy_digest”h]”hŒ policy_digest”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÈhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÈhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj )�”}”(hhh]”hä)�”}”(hŒYes”h]”hŒYes”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÈhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj )�”}”(hhh]”hä)�”}”(hŒThe policy hash”h]”hŒThe policy hash”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÈhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒauid”h]”hŒauid”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÊhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÊhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÊhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubj )�”}”(hhh]”hä)�”}”(hŒThe login user ID”h]”hŒThe login user ID”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÊhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒses”h]”hŒses”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÌhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÌhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÌhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒThe login session ID”h]”hŒThe login session ID”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÌhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒlsm”h]”hŒlsm”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÎhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjhubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÎhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjhubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÎhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjhubj )�”}”(hhh]”hä)�”}”(hŒ&The lsm name associated with the event”h]”hŒ&The lsm name associated with the event”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÎhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒres”h]”hŒres”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÐhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÐhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÐhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubj )�”}”(hhh]”hä)�”}”(hŒ1The result of the audited operation(success/fail)”h]”hŒ1The result of the audited operation(success/fail)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÐhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒerrno”h]”hŒerrno”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÒhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÒhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÒhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2ubj )�”}”(hhh]”hä)�”}”(hŒ;Error code from policy loading operations (see table below)”h]”hŒ;Error code from policy loading operations (see table below)”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÒhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÓubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÞ hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jÙ hjUh²hh³hÇh´Nubhä)�”}”(hŒPolicy error codes (errno):”h]”hŒPolicy error codes (errno):”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÕhjUh²hubhä)�”}”(hŒrThe following table lists the error codes that may appear in the errno field while loading or updating the policy:”h]”hŒrThe following table lists the error codes that may appear in the errno field while loading or updating the policy:”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M×hjUh²hubjÚ )�”}”(hhh]”jß )�”}”(hhh]”(jä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jã hjÉubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K8uh1jã hjÉubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ Error Code”h]”hŒ Error Code”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÚhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjãubj )�”}”(hhh]”hä)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÚhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉubj‚ )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ0”h]”hŒ0”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÜhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj#ubj )�”}”(hhh]”hä)�”}”(hŒSuccess”h]”hŒSuccess”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÜhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-EPERM”h]”hŒ-EPERM”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÞhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZubj )�”}”(hhh]”hä)�”}”(hŒInsufficient permission”h]”hŒInsufficient permission”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÞhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-EEXIST”h]”hŒ-EEXIST”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Màhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‘ubj )�”}”(hhh]”hä)�”}”(hŒ!Same name policy already deployed”h]”hŒ!Same name policy already deployed”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Màhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-EBADMSG”h]”hŒ-EBADMSG”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MâhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÈubj )�”}”(hhh]”hä)�”}”(hŒPolicy is invalid”h]”hŒPolicy is invalid”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mâhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-ENOMEM”h]”hŒ-ENOMEM”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mähjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿubj )�”}”(hhh]”hä)�”}”(hŒOut of memory (OOM)”h]”hŒOut of memory (OOM)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mähjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-ERANGE”h]”hŒ-ERANGE”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mæhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6ubj )�”}”(hhh]”hä)�”}”(hŒPolicy version number overflow”h]”hŒPolicy version number overflow”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MæhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-EINVAL”h]”hŒ-EINVAL”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mèhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmubj )�”}”(hhh]”hä)�”}”(hŒPolicy version parsing error”h]”hŒPolicy version parsing error”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mèhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-ENOKEY”h]”hŒ-ENOKEY”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mêhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”hä)�”}”(hŒ4Key used to sign the IPE policy not found in keyring”h]”hŒ4Key used to sign the IPE policy not found in keyring”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mêhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ -EKEYREJECTED”h]”hŒ -EKEYREJECTED”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MìhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛubj )�”}”(hhh]”hä)�”}”(hŒ$Policy signature verification failed”h]”hŒ$Policy signature verification failed”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mìhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-ESTALE”h]”hŒ-ESTALE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mîhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒ5Attempting to update an IPE policy with older version”h]”hŒ5Attempting to update an IPE policy with older version”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mîhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ-ENOENT”h]”hŒ-ENOENT”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MðhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubj )�”}”(hhh]”hä)�”}”(hŒ!Policy was deleted while updating”h]”hŒ!Policy was deleted while updating”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mðhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÞ hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jÙ hjUh²hh³hÇh´Nubeh}”(h]”Œaudit-ipe-policy-load”ah ]”h"]”Œ1422 audit_ipe_policy_load”ah$]”h&]”uh1hÈhj; h²hh³hÇh´M³ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ1404 AUDIT_MAC_STATUS”h]”hŒ1404 AUDIT_MAC_STATUS”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj›h²hh³hÇh´Môubhä)�”}”(hŒEvent Examples::”h]”hŒEvent Examples:”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Möhj›h²hubjb)�”}”(hXòtype=1404 audit(1653425689.008:55): enforcing=0 old_enforcing=1 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=ipe res=1 type=1300 audit(1653425689.008:55): arch=c000003e syscall=1 success=yes exit=2 a0=1 a1=55c1065e5c60 a2=2 a3=0 items=0 ppid=405 pid=441 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=) type=1327 audit(1653425689.008:55): proctitle="-bash" type=1404 audit(1653425689.008:55): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=ipe res=1 type=1300 audit(1653425689.008:55): arch=c000003e syscall=1 success=yes exit=2 a0=1 a1=55c1065e5c60 a2=2 a3=0 items=0 ppid=405 pid=441 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=) type=1327 audit(1653425689.008:55): proctitle="-bash"”h]”hXòtype=1404 audit(1653425689.008:55): enforcing=0 old_enforcing=1 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=ipe res=1 type=1300 audit(1653425689.008:55): arch=c000003e syscall=1 success=yes exit=2 a0=1 a1=55c1065e5c60 a2=2 a3=0 items=0 ppid=405 pid=441 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=) type=1327 audit(1653425689.008:55): proctitle="-bash" type=1404 audit(1653425689.008:55): enforcing=1 old_enforcing=0 auid=4294967295 ses=4294967295 enabled=1 old-enabled=1 lsm=ipe res=1 type=1300 audit(1653425689.008:55): arch=c000003e syscall=1 success=yes exit=2 a0=1 a1=55c1065e5c60 a2=2 a3=0 items=0 ppid=405 pid=441 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=) type=1327 audit(1653425689.008:55): proctitle="-bash"”…”�”}”hjºsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Møhj›h²hubhä)�”}”(hŒkThis record will always be emitted in conjunction with a ``AUDITSYSCALL`` record for the ``write`` syscall.”h]”(hŒ9This record will always be emitted in conjunction with a ”…”�”}”(hjÈh²hh³Nh´Nubjt)�”}”(hŒ``AUDITSYSCALL``”h]”hŒ AUDITSYSCALL”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÈubhŒ record for the ”…”�”}”(hjÈh²hh³Nh´Nubjt)�”}”(hŒ ``write``”h]”hŒwrite”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÈubhŒ syscall.”…”�”}”(hjÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj›h²hubhä)�”}”(hŒField descriptions:”h]”hŒField descriptions:”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj›h²hubjÚ )�”}”(hhh]”jß )�”}”(hhh]”(jä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jã hj ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hj ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jã hj ubjä )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kauh1jã hj ubj )�”}”(hhh]”j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒField”h]”hŒField”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj )�”}”(hhh]”hä)�”}”(hŒ Value Type”h]”hŒ Value Type”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj )�”}”(hhh]”hä)�”}”(hŒ Optional?”h]”hŒ Optional?”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubj )�”}”(hhh]”hä)�”}”(hŒDescription of Value”h]”hŒDescription of Value”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj‚ )�”}”(hhh]”(j )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ enforcing”h]”hŒ enforcing”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§ubj )�”}”(hhh]”hä)�”}”(hŒ]The enforcing state IPE is being switched to, 1 is in enforcing mode, 0 is in permissive mode”h]”hŒ]The enforcing state IPE is being switched to, 1 is in enforcing mode, 0 is in permissive mode”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ old_enforcing”h]”hŒ old_enforcing”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒ_The enforcing state IPE is being switched from, 1 is in enforcing mode, 0 is in permissive mode”h]”hŒ_The enforcing state IPE is being switched from, 1 is in enforcing mode, 0 is in permissive mode”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒauid”h]”hŒauid”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubj )�”}”(hhh]”hä)�”}”(hŒThe login user ID”h]”hŒThe login user ID”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒses”h]”hŒses”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖubj )�”}”(hhh]”hä)�”}”(hŒThe login session ID”h]”hŒThe login session ID”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒenabled”h]”hŒenabled”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubj )�”}”(hhh]”hä)�”}”(hŒ!The new TTY audit enabled setting”h]”hŒ!The new TTY audit enabled setting”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒ old-enabled”h]”hŒ old-enabled”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”hä)�”}”(hŒ!The old TTY audit enabled setting”h]”hŒ!The old TTY audit enabled setting”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒlsm”h]”hŒlsm”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒstring”h]”hŒstring”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”hä)�”}”(hŒ&The lsm name associated with the event”h]”hŒ&The lsm name associated with the event”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubj )�”}”(hhh]”(j )�”}”(hhh]”hä)�”}”(hŒres”h]”hŒres”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubj )�”}”(hhh]”hä)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubj )�”}”(hhh]”hä)�”}”(hŒNo”h]”hŒNo”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubj )�”}”(hhh]”hä)�”}”(hŒ1The result of the audited operation(success/fail)”h]”hŒ1The result of the audited operation(success/fail)”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÞ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÙ hj›h²hh³hÇh´Nubeh}”(h]”Œaudit-mac-status”ah ]”h"]”Œ1404 audit_mac_status”ah$]”h&]”uh1hÈhj; h²hh³hÇh´MôubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSuccess Auditing”h]”hŒSuccess Auditing”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjêh²hh³hÇh´Mubhä)�”}”(hX!IPE supports success auditing. When enabled, all events that pass IPE policy and are not blocked will emit an audit event. This is disabled by default, and can be enabled via the kernel command line ``ipe.success_audit=(0|1)`` or ``/sys/kernel/security/ipe/success_audit`` securityfs file.”h]”(hŒÇIPE supports success auditing. When enabled, all events that pass IPE policy and are not blocked will emit an audit event. This is disabled by default, and can be enabled via the kernel command line ”…”�”}”(hjûh²hh³Nh´Nubjt)�”}”(hŒ``ipe.success_audit=(0|1)``”h]”hŒipe.success_audit=(0|1)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjûubhŒ or ”…”�”}”(hjûh²hh³Nh´Nubjt)�”}”(hŒ*``/sys/kernel/security/ipe/success_audit``”h]”hŒ&/sys/kernel/security/ipe/success_audit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjûubhŒ securityfs file.”…”�”}”(hjûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjêh²hubhä)�”}”(hŒsThis is *very* noisy, as IPE will check every userspace binary on the system, but is useful for debugging policies.”h]”(hŒThis is ”…”�”}”(hj- h²hh³Nh´Nubj›)�”}”(hŒ*very*”h]”hŒvery”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj- ubhŒe noisy, as IPE will check every userspace binary on the system, but is useful for debugging policies.”…”�”}”(hj- h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M"hjêh²hubhÞ)�”}”(hŒŒIf a traditional MAC system is enabled (SELinux, apparmor, smack, etcetera), all writes to ipe's securityfs nodes require ``CAP_MAC_ADMIN``.”h]”hä)�”}”(hŒŒIf a traditional MAC system is enabled (SELinux, apparmor, smack, etcetera), all writes to ipe's securityfs nodes require ``CAP_MAC_ADMIN``.”h]”(hŒ|If a traditional MAC system is enabled (SELinux, apparmor, smack, etcetera), all writes to ipe’s securityfs nodes require ”…”�”}”(hjQ h²hh³Nh´Nubjt)�”}”(hŒ``CAP_MAC_ADMIN``”h]”hŒ CAP_MAC_ADMIN”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjQ ubhŒ.”…”�”}”(hjQ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M'hjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjêh²hh³hÇh´Nubeh}”(h]”Œsuccess-auditing”ah ]”h"]”Œsuccess auditing”ah$]”h&]”uh1hÈhj; h²hh³hÇh´Mubeh}”(h]”Œ audit-events”ah ]”h"]”Œ audit events”ah$]”h&]”uh1hÈhj.h²hh³hÇh´MXubeh}”(h]”Œpolicy”ah ]”h"]”Œpolicy”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KšubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Properties”h]”hŒ Properties”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj� h²hh³hÇh´M+ubhä)�”}”(hXÜAs explained above, IPE properties are ``key=value`` pairs expressed in IPE policy. Two properties are built-into the policy parser: 'op' and 'action'. The other properties are used to restrict immutable security properties about the files being evaluated. Currently those properties are: '``boot_verified``', '``dmverity_signature``', '``dmverity_roothash``', '``fsverity_signature``', '``fsverity_digest``'. A description of all properties supported by IPE are listed below:”h]”(hŒ'As explained above, IPE properties are ”…”�”}”(hj  h²hh³Nh´Nubjt)�”}”(hŒ ``key=value``”h]”hŒ key=value”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj  ubhŒø pairs expressed in IPE policy. Two properties are built-into the policy parser: ‘op’ and ‘action’. The other properties are used to restrict immutable security properties about the files being evaluated. Currently those properties are: ‘”…”�”}”(hj  h²hh³Nh´Nubjt)�”}”(hŒ``boot_verified``”h]”hŒ boot_verified”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj  ubhŒ’, ‘”…”�”}”(hj  h²hh³Nh´Nubjt)�”}”(hŒ``dmverity_signature``”h]”hŒdmverity_signature”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj  ubhŒ’, ‘”…”�”}”(hj  h²hh³Nh´Nubjt)�”}”(hŒ``dmverity_roothash``”h]”hŒdmverity_roothash”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj  ubhŒ’, ‘”…”�”}”(hj  h²hh³Nh´Nubjt)�”}”(hŒ``fsverity_signature``”h]”hŒfsverity_signature”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj  ubhŒ’, ‘”…”�”}”(hj  h²hh³Nh´Nubjt)�”}”(hŒ``fsverity_digest``”h]”hŒfsverity_digest”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj  ubhŒG’. A description of all properties supported by IPE are listed below:”…”�”}”(hj  h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M-hj� h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒop”h]”hŒop”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj!h²hh³hÇh´M6ubhä)�”}”(hŒ�Indicates the operation for a rule to apply to. Must be in every rule, as the first token. IPE supports the following operations:”h]”hŒ�Indicates the operation for a rule to apply to. Must be in every rule, as the first token. IPE supports the following operations:”…”�”}”(hj+!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M8hj!h²hubhŒ block_quote”“”)�”}”(hXE``EXECUTE`` Pertains to any file attempting to be executed, or loaded as an executable. ``FIRMWARE``: Pertains to firmware being loaded via the firmware_class interface. This covers both the preallocated buffer and the firmware file itself. ``KMODULE``: Pertains to loading kernel modules via ``modprobe`` or ``insmod``. ``KEXEC_IMAGE``: Pertains to kernel images loading via ``kexec``. ``KEXEC_INITRAMFS`` Pertains to initrd images loading via ``kexec --initrd``. ``POLICY``: Controls loading policies via reading a kernel-space initiated read. An example of such is loading IMA policies by writing the path to the policy file to ``$securityfs/ima/policy`` ``X509_CERT``: Controls loading IMA certificates through the Kconfigs, ``CONFIG_IMA_X509_PATH`` and ``CONFIG_EVM_X509_PATH``. ”h]”(hä)�”}”(hŒ ``EXECUTE``”h]”jt)�”}”(hjA!h]”hŒEXECUTE”…”�”}”(hjC!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj?!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M;hj;!ubj:!)�”}”(hŒLPertains to any file attempting to be executed, or loaded as an executable. ”h]”hä)�”}”(hŒKPertains to any file attempting to be executed, or loaded as an executable.”h]”hŒKPertains to any file attempting to be executed, or loaded as an executable.”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M=hjV!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M=hj;!ubhä)�”}”(hŒ ``FIRMWARE``:”h]”(jt)�”}”(hŒ ``FIRMWARE``”h]”hŒFIRMWARE”…”�”}”(hjr!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjn!ubhŒ:”…”�”}”(hjn!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M@hj;!ubj:!)�”}”(hŒ‹Pertains to firmware being loaded via the firmware_class interface. This covers both the preallocated buffer and the firmware file itself. ”h]”hä)�”}”(hŒŠPertains to firmware being loaded via the firmware_class interface. This covers both the preallocated buffer and the firmware file itself.”h]”hŒŠPertains to firmware being loaded via the firmware_class interface. This covers both the preallocated buffer and the firmware file itself.”…”�”}”(hjŽ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MBhjŠ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MBhj;!ubhä)�”}”(hŒ ``KMODULE``:”h]”(jt)�”}”(hŒ ``KMODULE``”h]”hŒKMODULE”…”�”}”(hj¦!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¢!ubhŒ:”…”�”}”(hj¢!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MFhj;!ubj:!)�”}”(hŒCPertains to loading kernel modules via ``modprobe`` or ``insmod``. ”h]”hä)�”}”(hŒBPertains to loading kernel modules via ``modprobe`` or ``insmod``.”h]”(hŒ'Pertains to loading kernel modules via ”…”�”}”(hjÂ!h²hh³Nh´Nubjt)�”}”(hŒ ``modprobe``”h]”hŒmodprobe”…”�”}”(hjÊ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÂ!ubhŒ or ”…”�”}”(hjÂ!h²hh³Nh´Nubjt)�”}”(hŒ ``insmod``”h]”hŒinsmod”…”�”}”(hjÜ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÂ!ubhŒ.”…”�”}”(hjÂ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MHhj¾!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MHhj;!ubhä)�”}”(hŒ``KEXEC_IMAGE``:”h]”(jt)�”}”(hŒ``KEXEC_IMAGE``”h]”hŒ KEXEC_IMAGE”…”�”}”(hjþ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjú!ubhŒ:”…”�”}”(hjú!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MJhj;!ubj:!)�”}”(hŒ1Pertains to kernel images loading via ``kexec``. ”h]”hä)�”}”(hŒ0Pertains to kernel images loading via ``kexec``.”h]”(hŒ&Pertains to kernel images loading via ”…”�”}”(hj"h²hh³Nh´Nubjt)�”}”(hŒ ``kexec``”h]”hŒkexec”…”�”}”(hj""h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj"ubhŒ.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MLhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MLhj;!ubhä)�”}”(hŒ``KEXEC_INITRAMFS``”h]”jt)�”}”(hjB"h]”hŒKEXEC_INITRAMFS”…”�”}”(hjD"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj@"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MNhj;!ubj:!)�”}”(hŒ:Pertains to initrd images loading via ``kexec --initrd``. ”h]”hä)�”}”(hŒ9Pertains to initrd images loading via ``kexec --initrd``.”h]”(hŒ&Pertains to initrd images loading via ”…”�”}”(hj["h²hh³Nh´Nubjt)�”}”(hŒ``kexec --initrd``”h]”hŒkexec --initrd”…”�”}”(hjc"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj["ubhŒ.”…”�”}”(hj["h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MPhjW"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MPhj;!ubhä)�”}”(hŒ ``POLICY``:”h]”(jt)�”}”(hŒ ``POLICY``”h]”hŒPOLICY”…”�”}”(hj…"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�"ubhŒ:”…”�”}”(hj�"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MRhj;!ubj:!)�”}”(hŒ¶Controls loading policies via reading a kernel-space initiated read. An example of such is loading IMA policies by writing the path to the policy file to ``$securityfs/ima/policy`` ”h]”(hä)�”}”(hŒDControls loading policies via reading a kernel-space initiated read.”h]”hŒDControls loading policies via reading a kernel-space initiated read.”…”�”}”(hj¡"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MThj�"ubhä)�”}”(hŒoAn example of such is loading IMA policies by writing the path to the policy file to ``$securityfs/ima/policy``”h]”(hŒUAn example of such is loading IMA policies by writing the path to the policy file to ”…”�”}”(hj¯"h²hh³Nh´Nubjt)�”}”(hŒ``$securityfs/ima/policy``”h]”hŒ$securityfs/ima/policy”…”�”}”(hj·"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj¯"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MVhj�"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MThj;!ubhä)�”}”(hŒ``X509_CERT``:”h]”(jt)�”}”(hŒ ``X509_CERT``”h]”hŒ X509_CERT”…”�”}”(hjÕ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjÑ"ubhŒ:”…”�”}”(hjÑ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MYhj;!ubj:!)�”}”(hŒoControls loading IMA certificates through the Kconfigs, ``CONFIG_IMA_X509_PATH`` and ``CONFIG_EVM_X509_PATH``. ”h]”hä)�”}”(hŒnControls loading IMA certificates through the Kconfigs, ``CONFIG_IMA_X509_PATH`` and ``CONFIG_EVM_X509_PATH``.”h]”(hŒ8Controls loading IMA certificates through the Kconfigs, ”…”�”}”(hjñ"h²hh³Nh´Nubjt)�”}”(hŒ``CONFIG_IMA_X509_PATH``”h]”hŒCONFIG_IMA_X509_PATH”…”�”}”(hjù"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjñ"ubhŒ and ”…”�”}”(hjñ"h²hh³Nh´Nubjt)�”}”(hŒ``CONFIG_EVM_X509_PATH``”h]”hŒCONFIG_EVM_X509_PATH”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjñ"ubhŒ.”…”�”}”(hjñ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M[hjí"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M[hj;!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M;hj!h²hubeh}”(h]”Œop”ah ]”h"]”Œop”ah$]”h&]”uh1hÈhj� h²hh³hÇh´M6ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj:#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj7#h²hh³hÇh´M_ubj:!)�”}”(hXjDetermines what IPE should do when a rule matches. Must be in every rule, as the final clause. Can be one of: ``ALLOW``: If the rule matches, explicitly allow access to the resource to proceed without executing any more rules. ``DENY``: If the rule matches, explicitly prohibit access to the resource to proceed without executing any more rules. ”h]”(hä)�”}”(hŒmDetermines what IPE should do when a rule matches. Must be in every rule, as the final clause. Can be one of:”h]”hŒmDetermines what IPE should do when a rule matches. Must be in every rule, as the final clause. Can be one of:”…”�”}”(hjL#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MahjH#ubhä)�”}”(hŒ ``ALLOW``:”h]”(jt)�”}”(hŒ ``ALLOW``”h]”hŒALLOW”…”�”}”(hj^#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjZ#ubhŒ:”…”�”}”(hjZ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MdhjH#ubj:!)�”}”(hŒjIf the rule matches, explicitly allow access to the resource to proceed without executing any more rules. ”h]”hä)�”}”(hŒiIf the rule matches, explicitly allow access to the resource to proceed without executing any more rules.”h]”hŒiIf the rule matches, explicitly allow access to the resource to proceed without executing any more rules.”…”�”}”(hjz#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mfhjv#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MfhjH#ubhä)�”}”(hŒ ``DENY``:”h]”(jt)�”}”(hŒ``DENY``”h]”hŒDENY”…”�”}”(hj’#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjŽ#ubhŒ:”…”�”}”(hjŽ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MihjH#ubj:!)�”}”(hŒmIf the rule matches, explicitly prohibit access to the resource to proceed without executing any more rules. ”h]”hä)�”}”(hŒlIf the rule matches, explicitly prohibit access to the resource to proceed without executing any more rules.”h]”hŒlIf the rule matches, explicitly prohibit access to the resource to proceed without executing any more rules.”…”�”}”(hj®#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mkhjª#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MkhjH#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´Mahj7#h²hubeh}”(h]”Œaction”ah ]”h"]”Œaction”ah$]”h&]”uh1hÈhj� h²hh³hÇh´M_ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ boot_verified”h]”hŒ boot_verified”…”�”}”(hjÓ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÐ#h²hh³hÇh´Moubj:!)�”}”(hXThis property can be utilized for authorization of files from initramfs. The format of this property is:: boot_verified=(TRUE|FALSE) .. WARNING:: This property will trust files from initramfs(rootfs). It should only be used during early booting stage. Before mounting the real rootfs on top of the initramfs, initramfs script will recursively remove all files and directories on the initramfs. This is typically implemented by using switch_root(8) [#switch_root]_. Therefore the initramfs will be empty and not accessible after the real rootfs takes over. It is advised to switch to a different policy that doesn't rely on the property after this point. This ensures that the trust policies remain relevant and effective throughout the system's operation. ”h]”(hä)�”}”(hŒiThis property can be utilized for authorization of files from initramfs. The format of this property is::”h]”hŒhThis property can be utilized for authorization of files from initramfs. The format of this property is:”…”�”}”(hjå#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mqhjá#ubjb)�”}”(hŒboot_verified=(TRUE|FALSE)”h]”hŒboot_verified=(TRUE|FALSE)”…”�”}”hjó#sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Mthjá#ubhŒwarning”“”)�”}”(hXaThis property will trust files from initramfs(rootfs). It should only be used during early booting stage. Before mounting the real rootfs on top of the initramfs, initramfs script will recursively remove all files and directories on the initramfs. This is typically implemented by using switch_root(8) [#switch_root]_. Therefore the initramfs will be empty and not accessible after the real rootfs takes over. It is advised to switch to a different policy that doesn't rely on the property after this point. This ensures that the trust policies remain relevant and effective throughout the system's operation.”h]”hä)�”}”(hXaThis property will trust files from initramfs(rootfs). It should only be used during early booting stage. Before mounting the real rootfs on top of the initramfs, initramfs script will recursively remove all files and directories on the initramfs. This is typically implemented by using switch_root(8) [#switch_root]_. Therefore the initramfs will be empty and not accessible after the real rootfs takes over. It is advised to switch to a different policy that doesn't rely on the property after this point. This ensures that the trust policies remain relevant and effective throughout the system's operation.”h]”(hX.This property will trust files from initramfs(rootfs). It should only be used during early booting stage. Before mounting the real rootfs on top of the initramfs, initramfs script will recursively remove all files and directories on the initramfs. This is typically implemented by using switch_root(8) ”…”�”}”(hj$h²hh³Nh´Nubjî)�”}”(hŒ[#switch_root]_”h]”hŒ3”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”jþKjÿŒ switch-root”jj uh1jíhj$jKubhX(. Therefore the initramfs will be empty and not accessible after the real rootfs takes over. It is advised to switch to a different policy that doesn’t rely on the property after this point. This ensures that the trust policies remain relevant and effective throughout the system’s operation.”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Myhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjá#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MqhjÐ#h²hubeh}”(h]”Œ boot-verified”ah ]”h"]”Œ boot_verified”ah$]”h&]”uh1hÈhj� h²hh³hÇh´MoubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒdmverity_roothash”h]”hŒdmverity_roothash”…”�”}”(hj@$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj=$h²hh³hÇh´M…ubj:!)�”}”(hX�This property can be utilized for authorization or revocation of specific dm-verity volumes, identified via their root hashes. It has a dependency on the DM_VERITY module. This property is controlled by the ``IPE_PROP_DM_VERITY`` config option, it will be automatically selected when ``SECURITY_IPE`` and ``DM_VERITY`` are all enabled. The format of this property is:: dmverity_roothash=DigestName:HexadecimalString The supported DigestNames for dmverity_roothash are [#dmveritydigests]_ + blake2b-512 + blake2s-256 + sha256 + sha384 + sha512 + sha3-224 + sha3-256 + sha3-384 + sha3-512 + sm3 + rmd160 ”h]”(hä)�”}”(hXpThis property can be utilized for authorization or revocation of specific dm-verity volumes, identified via their root hashes. It has a dependency on the DM_VERITY module. This property is controlled by the ``IPE_PROP_DM_VERITY`` config option, it will be automatically selected when ``SECURITY_IPE`` and ``DM_VERITY`` are all enabled. The format of this property is::”h]”(hŒÏThis property can be utilized for authorization or revocation of specific dm-verity volumes, identified via their root hashes. It has a dependency on the DM_VERITY module. This property is controlled by the ”…”�”}”(hjR$h²hh³Nh´Nubjt)�”}”(hŒ``IPE_PROP_DM_VERITY``”h]”hŒIPE_PROP_DM_VERITY”…”�”}”(hjZ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjR$ubhŒ7 config option, it will be automatically selected when ”…”�”}”(hjR$h²hh³Nh´Nubjt)�”}”(hŒ``SECURITY_IPE``”h]”hŒ SECURITY_IPE”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjR$ubhŒ and ”…”�”}”(hjR$h²hh³Nh´Nubjt)�”}”(hŒ ``DM_VERITY``”h]”hŒ DM_VERITY”…”�”}”(hj~$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjR$ubhŒ1 are all enabled. The format of this property is:”…”�”}”(hjR$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M‡hjN$ubjb)�”}”(hŒ.dmverity_roothash=DigestName:HexadecimalString”h]”hŒ.dmverity_roothash=DigestName:HexadecimalString”…”�”}”hj–$sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´MŽhjN$ubhä)�”}”(hŒGThe supported DigestNames for dmverity_roothash are [#dmveritydigests]_”h]”(hŒ4The supported DigestNames for dmverity_roothash are ”…”�”}”(hj¤$h²hh³Nh´Nubjî)�”}”(hŒ[#dmveritydigests]_”h]”hŒ4”…”�”}”(hj¬$h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”jþKjÿŒdmveritydigests”jj uh1jíhj¤$jKubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M�hjN$ubj:!)�”}”(hŒr+ blake2b-512 + blake2s-256 + sha256 + sha384 + sha512 + sha3-224 + sha3-256 + sha3-384 + sha3-512 + sm3 + rmd160 ”h]”jh)�”}”(hhh]”(jm)�”}”(hŒ blake2b-512”h]”hä)�”}”(hjË$h]”hŒ blake2b-512”…”�”}”(hjÍ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M’hjÉ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒ blake2s-256”h]”hä)�”}”(hjâ$h]”hŒ blake2s-256”…”�”}”(hjä$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M“hjà$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsha256”h]”hä)�”}”(hjù$h]”hŒsha256”…”�”}”(hjû$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M”hj÷$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsha384”h]”hä)�”}”(hj%h]”hŒsha384”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M•hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsha512”h]”hä)�”}”(hj'%h]”hŒsha512”…”�”}”(hj)%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M–hj%%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsha3-224”h]”hä)�”}”(hj>%h]”hŒsha3-224”…”�”}”(hj@%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M—hj<%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsha3-256”h]”hä)�”}”(hjU%h]”hŒsha3-256”…”�”}”(hjW%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M˜hjS%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsha3-384”h]”hä)�”}”(hjl%h]”hŒsha3-384”…”�”}”(hjn%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M™hjj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsha3-512”h]”hä)�”}”(hjƒ%h]”hŒsha3-512”…”�”}”(hj…%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mšhj�%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒsm3”h]”hä)�”}”(hjš%h]”hŒsm3”…”�”}”(hjœ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M›hj˜%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubjm)�”}”(hŒrmd160 ”h]”hä)�”}”(hŒrmd160”h]”hŒrmd160”…”�”}”(hj³%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mœhj¯%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆ$ubeh}”(h]”h ]”h"]”h$]”h&]”jŒ+”uh1jgh³hÇh´M’hjÂ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M’hjN$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M‡hj=$h²hubeh}”(h]”Œdmverity-roothash”ah ]”h"]”Œdmverity_roothash”ah$]”h&]”uh1hÈhj� h²hh³hÇh´M…ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒdmverity_signature”h]”hŒdmverity_signature”…”�”}”(hjå%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjâ%h²hh³hÇh´MŸubj:!)�”}”(hX0This property can be utilized for authorization of all dm-verity volumes that have a signed roothash that validated by a keyring specified by dm-verity's configuration, either the system trusted keyring, or the secondary keyring. It depends on ``DM_VERITY_VERIFY_ROOTHASH_SIG`` config option and is controlled by the ``IPE_PROP_DM_VERITY_SIGNATURE`` config option, it will be automatically selected when ``SECURITY_IPE``, ``DM_VERITY`` and ``DM_VERITY_VERIFY_ROOTHASH_SIG`` are all enabled. The format of this property is:: dmverity_signature=(TRUE|FALSE) ”h]”(hä)�”}”(hX This property can be utilized for authorization of all dm-verity volumes that have a signed roothash that validated by a keyring specified by dm-verity's configuration, either the system trusted keyring, or the secondary keyring. It depends on ``DM_VERITY_VERIFY_ROOTHASH_SIG`` config option and is controlled by the ``IPE_PROP_DM_VERITY_SIGNATURE`` config option, it will be automatically selected when ``SECURITY_IPE``, ``DM_VERITY`` and ``DM_VERITY_VERIFY_ROOTHASH_SIG`` are all enabled. The format of this property is::”h]”(hŒöThis property can be utilized for authorization of all dm-verity volumes that have a signed roothash that validated by a keyring specified by dm-verity’s configuration, either the system trusted keyring, or the secondary keyring. It depends on ”…”�”•Dc}”(hj÷%h²hh³Nh´Nubjt)�”}”(hŒ!``DM_VERITY_VERIFY_ROOTHASH_SIG``”h]”hŒDM_VERITY_VERIFY_ROOTHASH_SIG”…”�”}”(hjÿ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj÷%ubhŒ( config option and is controlled by the ”…”�”}”(hj÷%h²hh³Nh´Nubjt)�”}”(hŒ ``IPE_PROP_DM_VERITY_SIGNATURE``”h]”hŒIPE_PROP_DM_VERITY_SIGNATURE”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj÷%ubhŒ7 config option, it will be automatically selected when ”…”�”}”(hj÷%h²hh³Nh´Nubjt)�”}”(hŒ``SECURITY_IPE``”h]”hŒ SECURITY_IPE”…”�”}”(hj#&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj÷%ubhŒ, ”…”�”}”(hj÷%h²hh³Nh´Nubjt)�”}”(hŒ ``DM_VERITY``”h]”hŒ DM_VERITY”…”�”}”(hj5&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj÷%ubhŒ and ”…”�”}”(hj÷%h²hh³Nh´Nubjt)�”}”(hŒ!``DM_VERITY_VERIFY_ROOTHASH_SIG``”h]”hŒDM_VERITY_VERIFY_ROOTHASH_SIG”…”�”}”(hjG&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj÷%ubhŒ1 are all enabled. The format of this property is:”…”�”}”(hj÷%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¡hjó%ubjb)�”}”(hŒdmverity_signature=(TRUE|FALSE)”h]”hŒdmverity_signature=(TRUE|FALSE)”…”�”}”hj_&sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´M«hjó%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M¡hjâ%h²hubeh}”(h]”Œdmverity-signature”ah ]”h"]”Œdmverity_signature”ah$]”h&]”uh1hÈhj� h²hh³hÇh´MŸubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfsverity_digest”h]”hŒfsverity_digest”…”�”}”(hj~&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj{&h²hh³hÇh´M®ubj:!)�”}”(hXðThis property can be utilized for authorization of specific fsverity enabled files, identified via their fsverity digests. It depends on ``FS_VERITY`` config option and is controlled by the ``IPE_PROP_FS_VERITY`` config option, it will be automatically selected when ``SECURITY_IPE`` and ``FS_VERITY`` are all enabled. The format of this property is:: fsverity_digest=DigestName:HexadecimalString The supported DigestNames for fsverity_digest are [#fsveritydigest]_ + sha256 + sha512 ”h]”(hä)�”}”(hX_This property can be utilized for authorization of specific fsverity enabled files, identified via their fsverity digests. It depends on ``FS_VERITY`` config option and is controlled by the ``IPE_PROP_FS_VERITY`` config option, it will be automatically selected when ``SECURITY_IPE`` and ``FS_VERITY`` are all enabled. The format of this property is::”h]”(hŒ‰This property can be utilized for authorization of specific fsverity enabled files, identified via their fsverity digests. It depends on ”…”�”}”(hj�&h²hh³Nh´Nubjt)�”}”(hŒ ``FS_VERITY``”h]”hŒ FS_VERITY”…”�”}”(hj˜&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�&ubhŒ( config option and is controlled by the ”…”�”}”(hj�&h²hh³Nh´Nubjt)�”}”(hŒ``IPE_PROP_FS_VERITY``”h]”hŒIPE_PROP_FS_VERITY”…”�”}”(hjª&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�&ubhŒ7 config option, it will be automatically selected when ”…”�”}”(hj�&h²hh³Nh´Nubjt)�”}”(hŒ``SECURITY_IPE``”h]”hŒ SECURITY_IPE”…”�”}”(hj¼&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�&ubhŒ and ”…”�”}”(hj�&h²hh³Nh´Nubjt)�”}”(hŒ ``FS_VERITY``”h]”hŒ FS_VERITY”…”�”}”(hjÎ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshj�&ubhŒ1 are all enabled. The format of this property is:”…”�”}”(hj�&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M°hjŒ&ubjb)�”}”(hŒ,fsverity_digest=DigestName:HexadecimalString”h]”hŒ,fsverity_digest=DigestName:HexadecimalString”…”�”}”hjæ&sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´M·hjŒ&ubhä)�”}”(hŒDThe supported DigestNames for fsverity_digest are [#fsveritydigest]_”h]”(hŒ2The supported DigestNames for fsverity_digest are ”…”�”}”(hjô&h²hh³Nh´Nubjî)�”}”(hŒ[#fsveritydigest]_”h]”hŒ5”…”�”}”(hjü&h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”jþKjÿŒfsveritydigest”jj uh1jíhjô&jKubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¹hjŒ&ubj:!)�”}”(hŒ+ sha256 + sha512 ”h]”jh)�”}”(hhh]”(jm)�”}”(hŒsha256”h]”hä)�”}”(hj'h]”hŒsha256”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M»hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj'ubjm)�”}”(hŒsha512 ”h]”hä)�”}”(hŒsha512”h]”hŒsha512”…”�”}”(hj4'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¼hj0'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj'ubeh}”(h]”h ]”h"]”h$]”h&]”jjÍ%uh1jgh³hÇh´M»hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M»hjŒ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M°hj{&h²hubeh}”(h]”Œfsverity-digest”ah ]”h"]”Œfsverity_digest”ah$]”h&]”uh1hÈhj� h²hh³hÇh´M®ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfsverity_signature”h]”hŒfsverity_signature”…”�”}”(hje'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjb'h²hh³hÇh´M¿ubj:!)�”}”(hXThis property is used to authorize all fs-verity enabled files that have been verified by fs-verity's built-in signature mechanism. The signature verification relies on a key stored within the ".fs-verity" keyring. It depends on ``FS_VERITY_BUILTIN_SIGNATURES`` config option and it is controlled by the ``IPE_PROP_FS_VERITY`` config option, it will be automatically selected when ``SECURITY_IPE``, ``FS_VERITY`` and ``FS_VERITY_BUILTIN_SIGNATURES`` are all enabled. The format of this property is:: fsverity_signature=(TRUE|FALSE) ”h]”(hä)�”}”(hXóThis property is used to authorize all fs-verity enabled files that have been verified by fs-verity's built-in signature mechanism. The signature verification relies on a key stored within the ".fs-verity" keyring. It depends on ``FS_VERITY_BUILTIN_SIGNATURES`` config option and it is controlled by the ``IPE_PROP_FS_VERITY`` config option, it will be automatically selected when ``SECURITY_IPE``, ``FS_VERITY`` and ``FS_VERITY_BUILTIN_SIGNATURES`` are all enabled. The format of this property is::”h]”(hŒëThis property is used to authorize all fs-verity enabled files that have been verified by fs-verity’s built-in signature mechanism. The signature verification relies on a key stored within the “.fs-verityâ€� keyring. It depends on ”…”�”}”(hjw'h²hh³Nh´Nubjt)�”}”(hŒ ``FS_VERITY_BUILTIN_SIGNATURES``”h]”hŒFS_VERITY_BUILTIN_SIGNATURES”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjw'ubhŒ+ config option and it is controlled by the ”…”�”}”(hjw'h²hh³Nh´Nubjt)�”}”(hŒ``IPE_PROP_FS_VERITY``”h]”hŒIPE_PROP_FS_VERITY”…”�”}”(hj‘'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjw'ubhŒ7 config option, it will be automatically selected when ”…”�”}”(hjw'h²hh³Nh´Nubjt)�”}”(hŒ``SECURITY_IPE``”h]”hŒ SECURITY_IPE”…”�”}”(hj£'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjw'ubhŒ, ”…”�”}”(hjw'h²hh³Nh´Nubjt)�”}”(hŒ ``FS_VERITY``”h]”hŒ FS_VERITY”…”�”}”(hjµ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjw'ubhŒ and ”…”�”}”(hjw'h²hh³Nh´Nubjt)�”}”(hŒ ``FS_VERITY_BUILTIN_SIGNATURES``”h]”hŒFS_VERITY_BUILTIN_SIGNATURES”…”�”}”(hjÇ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjw'ubhŒ1 are all enabled. The format of this property is:”…”�”}”(hjw'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÁhjs'ubjb)�”}”(hŒfsverity_signature=(TRUE|FALSE)”h]”hŒfsverity_signature=(TRUE|FALSE)”…”�”}”hjß'sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´MÊhjs'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´MÁhjb'h²hubeh}”(h]”Œfsverity-signature”ah ]”h"]”Œfsverity_signature”ah$]”h&]”uh1hÈhj� h²hh³hÇh´M¿ubeh}”(h]”Œ properties”ah ]”h"]”Œ properties”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M+ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPolicy Examples”h]”hŒPolicy Examples”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj(h²hh³hÇh´MÍubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Allow all”h]”hŒ Allow all”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj(h²hh³hÇh´MÐubjb)�”}”(hŒ?policy_name=Allow_All policy_version=0.0.0 DEFAULT action=ALLOW”h]”hŒ?policy_name=Allow_All policy_version=0.0.0 DEFAULT action=ALLOW”…”�”}”hj%(sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´MÔhj(h²hubeh}”(h]”Œ allow-all”ah ]”h"]”Œ allow all”ah$]”h&]”uh1hÈhj(h²hh³hÇh´MÐubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAllow only initramfs”h]”hŒAllow only initramfs”…”�”}”(hj>(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj;(h²hh³hÇh´MØubjb)�”}”(hŒppolicy_name=Allow_Initramfs policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE boot_verified=TRUE action=ALLOW”h]”hŒppolicy_name=Allow_Initramfs policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE boot_verified=TRUE action=ALLOW”…”�”}”hjL(sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´MÜhj;(h²hubeh}”(h]”Œallow-only-initramfs”ah ]”h"]”Œallow only initramfs”ah$]”h&]”uh1hÈhj(h²hh³hÇh´MØubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAAllow any signed and validated dm-verity volume and the initramfs”h]”hŒAAllow any signed and validated dm-verity volume and the initramfs”…”�”}”(hje(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjb(h²hh³hÇh´Mâubjb)�”}”(hŒ¯policy_name=Allow_Signed_DMV_And_Initramfs policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE boot_verified=TRUE action=ALLOW op=EXECUTE dmverity_signature=TRUE action=ALLOW”h]”hŒ¯policy_name=Allow_Signed_DMV_And_Initramfs policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE boot_verified=TRUE action=ALLOW op=EXECUTE dmverity_signature=TRUE action=ALLOW”…”�”}”hjs(sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Mæhjb(h²hubeh}”(h]”ŒAallow-any-signed-and-validated-dm-verity-volume-and-the-initramfs”ah ]”h"]”ŒAallow any signed and validated dm-verity volume and the initramfs”ah$]”h&]”uh1hÈhj(h²hh³hÇh´MâubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ3Prohibit execution from a specific dm-verity volume”h]”hŒ3Prohibit execution from a specific dm-verity volume”…”�”}”(hjŒ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‰(h²hh³hÇh´Míubjb)�”}”(hXpolicy_name=Deny_DMV_By_Roothash policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE dmverity_roothash=sha256:cd2c5bae7c6c579edaae4353049d58eb5f2e8be0244bf05345bc8e5ed257baff action=DENY op=EXECUTE boot_verified=TRUE action=ALLOW op=EXECUTE dmverity_signature=TRUE action=ALLOW”h]”hXpolicy_name=Deny_DMV_By_Roothash policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE dmverity_roothash=sha256:cd2c5bae7c6c579edaae4353049d58eb5f2e8be0244bf05345bc8e5ed257baff action=DENY op=EXECUTE boot_verified=TRUE action=ALLOW op=EXECUTE dmverity_signature=TRUE action=ALLOW”…”�”}”hjš(sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Mñhj‰(h²hubeh}”(h]”Œ3prohibit-execution-from-a-specific-dm-verity-volume”ah ]”h"]”Œ3prohibit execution from a specific dm-verity volume”ah$]”h&]”uh1hÈhj(h²hh³hÇh´MíubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ&Allow only a specific dm-verity volume”h]”hŒ&Allow only a specific dm-verity volume”…”�”}”(hj³(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj°(h²hh³hÇh´Múubjb)�”}”(hŒµpolicy_name=Allow_DMV_By_Roothash policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE dmverity_roothash=sha256:401fcec5944823ae12f62726e8184407a5fa9599783f030dec146938 action=ALLOW”h]”hŒµpolicy_name=Allow_DMV_By_Roothash policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE dmverity_roothash=sha256:401fcec5944823ae12f62726e8184407a5fa9599783f030dec146938 action=ALLOW”…”�”}”hjÁ(sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Mþhj°(h²hubeh}”(h]”Œ&allow-only-a-specific-dm-verity-volume”ah ]”h"]”Œ&allow only a specific dm-verity volume”ah$]”h&]”uh1hÈhj(h²hh³hÇh´MúubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ8Allow any fs-verity file with a valid built-in signature”h]”hŒ8Allow any fs-verity file with a valid built-in signature”…”�”}”(hjÚ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj×(h²hh³hÇh´Mubjb)�”}”(hŒ‰policy_name=Allow_Signed_And_Validated_FSVerity policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE fsverity_signature=TRUE action=ALLOW”h]”hŒ‰policy_name=Allow_Signed_And_Validated_FSVerity policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE fsverity_signature=TRUE action=ALLOW”…”�”}”hjè(sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Mhj×(h²hubeh}”(h]”Œ8allow-any-fs-verity-file-with-a-valid-built-in-signature”ah ]”h"]”Œ8allow any fs-verity file with a valid built-in signature”ah$]”h&]”uh1hÈhj(h²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ,Allow execution of a specific fs-verity file”h]”hŒ,Allow execution of a specific fs-verity file”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjþ(h²hh³hÇh´Mubjb)�”}”(hŒ¹policy_name=ALLOW_FSV_By_Digest policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE fsverity_digest=sha256:fd88f2b8824e197f850bf4c5109bea5cf0ee38104f710843bb72da796ba5af9e action=ALLOW”h]”hŒ¹policy_name=ALLOW_FSV_By_Digest policy_version=0.0.0 DEFAULT action=DENY op=EXECUTE fsverity_digest=sha256:fd88f2b8824e197f850bf4c5109bea5cf0ee38104f710843bb72da796ba5af9e action=ALLOW”…”�”}”hj)sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jah³hÇh´Mhjþ(h²hubeh}”(h]”Œ,allow-execution-of-a-specific-fs-verity-file”ah ]”h"]”Œ,allow execution of a specific fs-verity file”ah$]”h&]”uh1hÈhj(h²hh³hÇh´Mubeh}”(h]”Œpolicy-examples”ah ]”h"]”Œpolicy examples”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MÍubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAdditional Information”h]”hŒAdditional Information”…”�”}”(hj0)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj-)h²hh³hÇh´Mubjh)�”}”(hhh]”(jm)�”}”(hŒ7`Github Repository `_”h]”hä)�”}”(hjC)h]”(hŒ reference”“”)�”}”(hjC)h]”hŒGithub Repository”…”�”}”(hjJ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒGithub Repository”Œrefuri”Œ https://github.com/microsoft/ipe”uh1jH)hjE)ubhŒtarget”“”)�”}”(hŒ# ”h]”h}”(h]”Œgithub-repository”ah ]”h"]”Œgithub repository”ah$]”h&]”Œrefuri”jZ)uh1j[)Œ referenced”KhjE)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjA)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj>)h²hh³hÇh´Nubjm)�”}”(hŒ9:doc:`Developer and design docs for IPE ` ”h]”hä)�”}”(hŒ8:doc:`Developer and design docs for IPE `”h]”h)�”}”(hj})h]”hò)�”}”(hj})h]”hŒ!Developer and design docs for IPE”…”�”}”(hj‚)h²hh³Nh´Nubah}”(h]”h ]”(hýŒstd”Œstd-doc”eh"]”h$]”h&]”uh1hñhj)ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jŒ)Œreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆjŒ /security/ipe”uh1hh³hÇh´Mhj{)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhjw)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj>)h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jgh³hÇh´Mhj-)h²hubeh}”(h]”Œadditional-information”ah ]”h"]”Œadditional information”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFAQ”h]”hŒFAQ”…”�”}”(hj»)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¸)h²hh³hÇh´MubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒcQ: What's the difference between other LSMs which provide a measure of trust-based access control? ”h]”(hŒterm”“”)�”}”(hŒQ:”h]”hŒQ:”…”�”}”(hjÖ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÔ)h³hÇh´M"hjÐ)ubhŒ definition”“”)�”}”(hhh]”hä)�”}”(hŒ_What's the difference between other LSMs which provide a measure of trust-based access control?”h]”hŒaWhat’s the difference between other LSMs which provide a measure of trust-based access control?”…”�”}”(hjé)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M!hjæ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jä)hjÐ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÎ)h³hÇh´M"hjË)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ)hj¸)h²hh³hÇh´Nubhä)�”}”(hŒA:”h]”hŒA:”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M$hj¸)h²hubj:!)�”}”(hX$In general, there's two other LSMs that can provide similar functionality: IMA, and Loadpin. IMA and IPE are functionally very similar. The significant difference between the two is the policy. [#devdoc]_ Loadpin and IPE differ fairly dramatically, as Loadpin only covers the IPE's kernel read operations, whereas IPE is capable of controlling execution on top of kernel read. The trust model is also different; Loadpin roots its trust in the initial super-block, whereas trust in IPE is stemmed from kernel itself (via ``SYSTEM_TRUSTED_KEYS``). ”h]”(hä)�”}”(hŒ\In general, there's two other LSMs that can provide similar functionality: IMA, and Loadpin.”h]”hŒ^In general, there’s two other LSMs that can provide similar functionality: IMA, and Loadpin.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M&hj*ubhä)�”}”(hŒoIMA and IPE are functionally very similar. The significant difference between the two is the policy. [#devdoc]_”h]”(hŒeIMA and IPE are functionally very similar. The significant difference between the two is the policy. ”…”�”}”(hj)*h²hh³Nh´Nubjî)�”}”(hŒ [#devdoc]_”h]”hŒ2”…”�”}”(hj1*h²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”jþKjÿjVjj uh1jíhj)*jKubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M)hj*ubhä)�”}”(hXTLoadpin and IPE differ fairly dramatically, as Loadpin only covers the IPE's kernel read operations, whereas IPE is capable of controlling execution on top of kernel read. The trust model is also different; Loadpin roots its trust in the initial super-block, whereas trust in IPE is stemmed from kernel itself (via ``SYSTEM_TRUSTED_KEYS``).”h]”(hX=Loadpin and IPE differ fairly dramatically, as Loadpin only covers the IPE’s kernel read operations, whereas IPE is capable of controlling execution on top of kernel read. The trust model is also different; Loadpin roots its trust in the initial super-block, whereas trust in IPE is stemmed from kernel itself (via ”…”�”}”(hjF*h²hh³Nh´Nubjt)�”}”(hŒ``SYSTEM_TRUSTED_KEYS``”h]”hŒSYSTEM_TRUSTED_KEYS”…”�”}”(hjN*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jshjF*ubhŒ).”…”�”}”(hjF*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M,hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j9!h³hÇh´M&hj¸)h²hubhŒ transition”“”)�”}”(hŒ -----------”h]”h}”(h]”h ]”h"]”h$]”h&]”uh1jl*h³hÇh´M2hj¸)h²hubhŒfootnote”“”)�”}”(hŒUhttps://lore.kernel.org/lkml/20240415142436.2545003-1-roberto.sassu@huaweicloud.com/ ”h]”(hŒlabel”“”)�”}”(hhh]”hŒ1”…”�”}”(hj€*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~*hjz*h²hh³Nh´Nubhä)�”}”(hŒThttps://lore.kernel.org/lkml/20240415142436.2545003-1-roberto.sassu@huaweicloud.com/”h]”jI))�”}”(hj�*h]”hŒThttps://lore.kernel.org/lkml/20240415142436.2545003-1-roberto.sassu@huaweicloud.com/”…”�”}”(hj‘*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j�*uh1jH)hj�*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M4hjz*ubeh}”(h]”jah ]”h"]”Œdigest_cache_lsm”ah$]”h&]”jùajþKjj uh1jx*h³hÇh´M4hj¸)h²hubjy*)�”}”(hŒJPlease see :doc:`the design docs ` for more on this topic. ”h]”(j*)�”}”(hhh]”hŒ2”…”�”}”(hj°*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~*hj¬*h²hh³Nh´Nubhä)�”}”(hŒIPlease see :doc:`the design docs ` for more on this topic.”h]”(hŒ Please see ”…”�”}”(hj½*h²hh³Nh´Nubh)�”}”(hŒ&:doc:`the design docs `”h]”hò)�”}”(hjÇ*h]”hŒthe design docs”…”�”}”(hjÉ*h²hh³Nh´Nubah}”(h]”h ]”(hýŒstd”Œstd-doc”eh"]”h$]”h&]”uh1hñhjÅ*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j Œ refdomain”jÓ*Œreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆjŒ /security/ipe”uh1hh³hÇh´M6hj½*ubhŒ for more on this topic.”…”�”}”(hj½*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M6hj¬*ubeh}”(h]”jVah ]”h"]”Œdevdoc”ah$]”h&]”(jQj;*ejþKjj uh1jx*h³hÇh´M6hj¸)h²hubjy*)�”}”(hŒ9https://man7.org/linux/man-pages/man8/switch_root.8.html ”h]”(j*)�”}”(hhh]”hŒ3”…”�”}”(hjú*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~*hjö*h²hh³Nh´Nubhä)�”}”(hŒ8https://man7.org/linux/man-pages/man8/switch_root.8.html”h]”jI))�”}”(hj +h]”hŒ8https://man7.org/linux/man-pages/man8/switch_root.8.html”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j +uh1jH)hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M9hjö*ubeh}”(h]”j$ah ]”h"]”Œ switch_root”ah$]”h&]”j$ajþKjj uh1jx*h³hÇh´M9hj¸)h²hubjy*)�”}”(hŒµThese hash algorithms are based on values accepted by the Linux crypto API; IPE does not impose any restrictions on the digest algorithm itself; thus, this list may be out of date. ”h]”(j*)�”}”(hhh]”hŒ4”…”�”}”(hj*+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~*hj&+h²hh³Nh´Nubhä)�”}”(hŒ´These hash algorithms are based on values accepted by the Linux crypto API; IPE does not impose any restrictions on the digest algorithm itself; thus, this list may be out of date.”h]”hŒ´These hash algorithms are based on values accepted by the Linux crypto API; IPE does not impose any restrictions on the digest algorithm itself; thus, this list may be out of date.”…”�”}”(hj7+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M;hj&+ubeh}”(h]”j»$ah ]”h"]”Œdmveritydigests”ah$]”h&]”j¶$ajþKjj uh1jx*h³hÇh´M;hj¸)h²hubjy*)�”}”(hŒ½These hash algorithms are based on values accepted by the kernel's fsverity support; IPE does not impose any restrictions on the digest algorithm itself; thus, this list may be out of date.”h]”(j*)�”}”(hhh]”hŒ5”…”�”}”(hjP+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j~*hjL+h²hh³Nh´Nubhä)�”}”(hŒ½These hash algorithms are based on values accepted by the kernel's fsverity support; IPE does not impose any restrictions on the digest algorithm itself; thus, this list may be out of date.”h]”hŒ¿These hash algorithms are based on values accepted by the kernel’s fsverity support; IPE does not impose any restrictions on the digest algorithm itself; thus, this list may be out of date.”…”�”}”(hj]+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M@hjL+ubeh}”(h]”j 'ah ]”h"]”Œfsveritydigest”ah$]”h&]”j'ajþKjj uh1jx*h³hÇh´M@hj¸)h²hubeh}”(h]”Œfaq”ah ]”h"]”Œfaq”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Mubeh}”(h]”Œ integrity-policy-enforcement-ipe”ah ]”h"]”Œ"integrity policy enforcement (ipe)”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j¤+Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œdigest_cache_lsm”]”jïaŒdevdoc”]”(jGj1*eŒ switch_root”]”j$aŒdmveritydigests”]”j¬$aŒfsveritydigest”]”jü&auŒrefids”}”(j]”jïajV]”(jGj1*ej$]”j$aj»$]”j¬$aj ']”jü&auŒnameids”}”(j+j|+j§j¤jjj÷jôj+j(jŒ j‰ jµ j² j8 j5 j„ j� j+j(jRjOj˜j•jçjäj| jy j(jý'j4#j1#jÍ#jÊ#j:$j7$jß%jÜ%jx&ju&j_'j\'jø'jõ'j*)j')j8(j5(j_(j\(j†(jƒ(j­(jª(jÔ(jÑ(jû(jø(j")j)jµ)j²)jf)jc)jw+jt+j©*jjó*jVj#+j$jI+j»$jo+j 'uŒ nametypes”}”(j+‰j§‰j‰j÷‰j+‰jŒ ‰jµ ‰j8 ‰j„ ‰j+‰jR‰j˜‰jç‰j| ‰j(‰j4#‰jÍ#‰j:$‰jß%‰jx&‰j_'‰jø'‰j*)‰j8(‰j_(‰j†(‰j­(‰jÔ(‰jû(‰j")‰jµ)‰jf)ˆjw+‰j©*ˆjó*ˆj#+ˆjI+ˆjo+ˆuh}”(j|+hÊj¤j"jjªjùjïjôjj(júj‰ j.jQjGj² jj5 j¸ j� j; j(jL jOj.j•jUjäj›jy jêjý'j� j1#j!jÊ#j7#j7$jÐ#j$j$jÜ%j=$j¶$j¬$ju&jâ%j\'j{&j'jü&jõ'jb'j')j(j5(j(j\(j;(jƒ(jb(jª(j‰(jÑ(j°(jø(j×(j)jþ(j²)j-)jc)j])jt+j¸)j;*j1*jjz*jVj¬*j$jö*j»$j&+j 'jL+uŒ footnote_refs”}”(jä+]”jïajæ+]”(jGj1*ejè+]”j$ajê+]”j¬$ajì+]”jü&auŒ citation_refs”}”Œ autofootnotes”]”(jz*j¬*jö*j&+jL+eŒautofootnote_refs”]”(jïjGj$j¬$jü&j1*eŒsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j²+Ks…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.