Compare commits

...

208 Commits

Author SHA1 Message Date
openshift-merge-bot[bot] 36e8f213b7
Merge pull request #381 from rhatdan/main
BUmp to v2.238.0
2025-05-30 16:00:49 +00:00
Daniel J Walsh d84ae02fff
BUmp to v2.238.0
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2025-05-30 11:43:54 -04:00
Daniel J Walsh ed59a19f5d
Merge pull request #380 from Luap99/netavark-sysctl
label /run/sysctl.d correctly on creation
2025-05-30 11:42:45 -04:00
Paul Holzinger aff164fb3e
label /run/sysctl.d correctly on creation
As part of a netavark bug[1] fix I must create /run/sysctl.d to write
some config files there for systemd. However in order for them to be
able to get read by systemd-sysctl they must have the system_conf_t
context.

As I don't want to add a manual relabel in netavark add a selinux file
transition rule here because netavark runs as container_runtime_t.

[1] https://github.com/containers/netavark/pull/1245

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-05-30 16:14:40 +02:00
openshift-merge-bot[bot] d7e420a116
Merge pull request #374 from lsm5/2-237-0
bump version to 2.237.0
2025-04-28 14:29:12 +00:00
Lokesh Mandvekar fd56d33ed8
bump version to 2.237.0
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-04-23 19:22:16 +05:30
Lokesh Mandvekar 1331eb275f bootc/install_t: allow transition to container_runtime_t
Generation of bootc compatible disk images is done via the command:
```
sudo podman run --rm -it --privileged \
         --pull=newer \
         --security-opt label=type:unconfined_t \
         -v ./config.toml:/config.toml:ro \
         -v ./output:/output \
         -v /var/lib/containers/storage/:/var/lib/containers/storage/ \
         quay.io/centos-bootc/bootc-image-builder:latest \
         --type qcow2 \
         quay.io/centos-bootc/centos-bootc:stream9
```
Ref: https://github.com/osbuild/bootc-image-builder?tab=readme-ov-file#-examples

And this currently results in an apparently harmless AVC denial:
```
avc:  denied  { nnp_transition nosuid_transition } for  pid=40081 comm="bootc" \
        scontext=system_u:system_r:install_t:s0:c68,c235 \
        tcontext=system_u:system_r:container_runtime_t:s0:c68,c235 \
        tclass=process2 permissive=0
```

This commit adds allow rules for processes with install_t type, like
bootc, to silence the AVCs.

Ref: https://issues.redhat.com/browse/RHEL-85671

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-04-23 15:34:22 +05:30
openshift-merge-bot[bot] 1f3f0f368b
Merge pull request #368 from lsm5/rpmlint
RPM: empty placeholder check section to silence rpmlint
2025-04-22 18:09:32 +00:00
Lokesh Mandvekar 38779f40ee
RPM: empty placeholder check section to silence rpmlint
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-04-21 19:13:21 +05:30
Daniel J Walsh cb32eed6d1
Merge pull request #367 from nalind/allow-container-mask-proc
Allow containers to mask parts of their /proc
2025-03-29 07:43:33 -04:00
Nalin Dahyabhai 4f9fd47087 Allow containers to mask parts of their /proc
Allow processes inside of a container to mount things onto parts of
the /proc that they have in order to mask things which the container
engine didn't for whatever reason.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2025-03-27 13:43:39 -04:00
Daniel J Walsh 4244f856ea
Merge pull request #365 from rhatdan/main
Bump to v2.236.0
2025-03-13 16:24:19 -04:00
Daniel J Walsh ae94810449
Bump to v2.236.0
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2025-03-12 06:53:54 -04:00
openshift-merge-bot[bot] 2c6d8b8598
Merge pull request #364 from debarshiray/wip/rishi/rtkit_scheduled-spc_t-fedora-bug-2298800
Allow super privileged containers to use RealtimeKit for scheduling
2025-03-09 05:38:36 +00:00
Debarshi Ray 37d2cf1142 Allow super privileged containers to use RealtimeKit for scheduling
Toolbx containers are super privileged containers [1,2], because they
use the host's cgroup, IPC, network and PID namespaces, and turn off
SELinux label separation.  It's likely that users will want to use
PipeWire inside Toolbx containers because they need some form of audio
or video, and PipeWire needs to be able to use RealtimeKit to change the
CPU priority of processes using these D-Bus interfaces:
  * org.freedesktop.RealtimeKit1.MakeThreadHighPriorityWithPID
  * org.freedesktop.RealtimeKit1.MakeThreadRealtimeWithPID

If the SELinux policy blocks the processes inside super privileged
containers from using RealtimeKit, then it will lead to:
  type=AVC msg=audit(1721340769.363:269): avc:  denied  { setsched } for
      pid=762 comm="rtkit-daemon"
      scontext=system_u:system_r:rtkit_daemon_t:s0
      tcontext=unconfined_u:unconfined_r:spc_t:s0 tclass=process
      permissive=0

[1] https://developers.redhat.com/blog/2014/11/06/introducing-a-super-privileged-container-concept

[2] https://danwalsh.livejournal.com/74754.html

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2298800

Signed-off-by: Debarshi Ray <rishi@fedoraproject.org>
2025-03-08 01:23:55 +01:00
Daniel J Walsh 28a89f7059
Merge pull request #360 from Luap99/artifacts
add container_ro_file_t to the podman artifact store
2025-02-26 11:24:47 -05:00
Paul Holzinger c318a63178
add container_ro_file_t to the podman artifact store
The artifact store contains many blobs which we like to get mounted into
the container. However by default selinux prevents access to these
files. Now I could patch podman to change the label directly but it
seems like much better to just label the entire artifact store correctly
like we do with the image store.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-02-26 17:03:03 +01:00
openshift-merge-bot[bot] 27e970d942
Merge pull request #359 from lsm5/fix-rpm-gating-yaml
rpm/gating.yaml: fix typo
2025-02-26 14:27:11 +00:00
Lokesh Mandvekar dbaa35aced
rpm/gating.yaml: fix typo
Koji builds don't work without this fix. Doesn't affect upstream,
already fixed downstream.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-02-24 17:19:59 +05:30
openshift-merge-bot[bot] 2180789173
Merge pull request #358 from lsm5/2-235-0
Bump to v2.235.0
2025-02-20 15:30:29 +00:00
Lokesh Mandvekar c9b3eca0e1
Bump to v2.235.0
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-02-19 16:57:06 +05:30
Daniel J Walsh 5a26485b9e
Merge pull request #355 from lsm5/selinux-owners
OWNERS: add wrabcak and zpytela
2025-02-11 09:28:35 -05:00
Lokesh Mandvekar 1b5db5c9a7
OWNERS: add wrabcak and zpytela
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-02-11 17:39:40 +05:30
Lokesh Mandvekar bf26c8d373 OWNERS: initial commit
Need this to enable openshift mergebot.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-02-07 15:59:36 +05:30
Peter Hunt 973d57e58a container_log{reader,writer}_t: allow watch file
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2025-02-06 15:42:40 +05:30
Lokesh Mandvekar b27a1d0c7f RPM: Update gating config
OSCI will gate on TMT tests for CentOS Stream.

Bodhi will gate on pushes for both testing and stable.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-01-30 21:24:41 +05:30
Lokesh Mandvekar b6f01abdd3 Enable aarch64 testing
container-selinux maybe noarch but it would help to have aarch64
visibility to ensure everything works, especially RE: podman.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-01-30 21:24:41 +05:30
Lokesh Mandvekar 3f2d85afe4 TMT: simplify podman tests
`dnf download` on CentOS Stream ends up downloading all rpm versions of
a package from all available repos instead of only the latest rpm. This
leads to more (unnecessary) complications in the test script.

Things are a lot simpler if we directly test using the `podman-tests`
package. This means we'll have to disable podman e2e tests and only do
system tests but that shouldn't be too big a problem.

A better way to run podman e2e tests would be by creating a `podman-src`
rpm subpackage that'll install all the rpm sources.

The same set of tests can be run across all environments so there's no
need to maintain separate plans for upstream and downstream.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2025-01-30 21:24:41 +05:30
Daniel J Walsh 7c024e3305
Merge pull request #350 from maage/var-lib-crio-1
feat: support /var/lib/crio
2025-01-20 10:09:52 -05:00
Markus Linnala f848c3ea61 feat: support /var/lib/crio
Signed-off-by: Markus Linnala <markus.linnala@gmail.com>
2025-01-18 20:55:32 +02:00
Lokesh Mandvekar 7fdbd0e8c4 TMT: enable epel idomatically
Also, renamed plans/all.fmf -> plans/main.fmf.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-12-10 13:48:11 +05:30
Lokesh Mandvekar 7ea797b511 Packit: switch back to fedora-all
F39 is EOL.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-12-10 13:48:11 +05:30
Daniel J Walsh 97e888b107
Merge pull request #343 from lsm5/rpm-bump-epoch
RPM: Bump Epoch to 4
2024-12-09 09:16:42 -05:00
Lokesh Mandvekar 4567d0dd60
RPM: Bump Epoch to 4
There was a recent container-selinux build on RHEL that required bumping
the Epoch to 4. We should bump it here as well to preserve any future
upgrade issues for cases like building from Packit and/or a future RHEL
major version cut from Fedora.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-12-09 19:03:02 +05:30
Lokesh Mandvekar cd0a17583e rpm: ship manpage
manpage ownership no longer conflicts with selinux-policy.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2282098
Ref: https://bugzilla.redhat.com/show_bug.cgi?id=2209120

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-11-11 19:34:34 +05:30
Daniel J Walsh 8ba68ee9e7 Add proper labeling for RamaLama
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-11-11 17:35:33 +05:30
Lokesh Mandvekar a4c8cd9e02 Packit: remove rhel / epel jobs
RHEL jobs tend to be very problematic:
1. Test logs not publicly visible
2. Environment can be older causing frequent test failures
(this was the main reason they were removed from netavark)
3. Only repo maintainers can trigger rhel jobs which isn't ideal.

We already test continuously on CentOS Stream, so that ensures all
eventual RHEL content is tested upstream.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-11-11 17:09:18 +05:30
Lokesh Mandvekar c6abb13d7e packit: remove unused file
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-11-11 17:09:18 +05:30
Daniel J Walsh 3f06c141be
Merge pull request #337 from haircommander/container_engine_t-3
container_engine_t: small change to allow non root exec in a container
2024-11-04 10:37:32 -05:00
Peter Hunt d5d64af733 container_engine_t: small change to allow non root exec in a container
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2024-11-01 15:43:14 -04:00
Daniel J Walsh ff46376ceb
Merge pull request #335 from lsm5/rpm-ownership
RPM: explicitly list ghosted paths and skip mode verification
2024-10-31 16:45:33 -04:00
Lokesh Mandvekar 41ebaefc45
RPM: explicitly list ghosted paths and skip mode verification
Wildcarding filepath in rpm files list doesn't seem to work as expected.
This commit replaces wildcarded path with the exact path and also skips
mode verification of the files installed in the ghosted path.

Also included is a test to check for file ownership in /var/lib/selinux.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2308833

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-10-30 17:53:25 +05:30
Daniel J Walsh 74ab259438
container-selinux install on non selinux-policy-targeted systems (#332)
Helps fix: https://github.com/containers/container-selinux/discussions/331

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-10-07 15:26:07 +05:30
Daniel J Walsh 39997409ab
Merge pull request #333 from lsm5/kube-apiserver
set container_log_t type for /var/log/kube-apiserver
2024-10-06 06:25:20 -04:00
Lokesh Mandvekar a35ee323e8
set container_log_t type for /var/log/kube-apiserver
No type was being set for this directory so it ended up inheriting the
type for /var/log causing testing failures in microshift environments on
upgrade from rhel 9.3 to 9.4.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-10-03 18:33:45 +05:30
Daniel J Walsh 4550c12cc4
Merge pull request #329 from rhatdan/device
Allow kubelet_t to create a sock file kubelet_var_lib_t
2024-09-19 08:45:30 -04:00
Daniel J Walsh 0c0056ffd8
Allow kubelet_t to create a sock file kubelet_var_lib_t
We want to allow container_device_plugin_t to communicate
with kublet_t over a kubelet_var_lib_t socket.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-09-19 06:57:49 -04:00
Daniel J Walsh 25ad643093
Merge pull request #328 from rhatdan/spc
dontaudit spc_t to mmap_zero
2024-09-18 10:59:39 -04:00
Daniel J Walsh af5a09c845 dontaudit spc_t to mmap_zero
For some apps running under docker, docker attempts
emulation mode triggering this AVC.

No reason to now allow it.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2297712

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-09-18 18:21:48 +05:30
Lokesh Mandvekar 6e7f8a97fc
Packit: update targets (#330)
This commit removes f39 from the copr jobs and disables el9 podman
revdep test jobs as we recently disabled f39 and el9
jobs on the podman-next copr due to golang 1.22 bump for our golang
projects.

The copr and dist-git targets are also reused with yaml anchors wherever
possible.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-09-18 18:21:23 +05:30
Peter Hunt bf1c37e409
container_engine_t: another round of small improvements (#327)
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2024-09-18 15:37:12 +05:30
Daniel J Walsh cc5da8a99d
Allow container_device_plugin_t to use the network (#325)
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-09-11 19:22:09 +05:30
Lokesh Mandvekar ce7a50ca6c
RPM: cleanup changelog (#324)
All of Fedora and CentOS Stream 10 have autochangelog support so we
don't need the changelog conditionals.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-08-05 12:15:02 -04:00
Paul Holzinger a1bbef460a
Merge pull request #323 from lsm5/tmt-tests-simplify-2
TMT: Simplify tests
2024-08-01 18:26:47 +02:00
Lokesh Mandvekar 74f7615a38
TMT: Simplify tests
This commit moves a lot of the copr and epel repo enablement in the test
environment from shell script to idiomatic packit.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2024-08-01 10:12:49 -04:00
Daniel J Walsh a68865582e
Merge pull request #316 from lsm5/tmt-rawhide-fix
TMT: Fedora rawhide fix and bump to v2.232.1
2024-06-10 13:25:30 -04:00
Lokesh Mandvekar 4ff1a398a2
Bump to v2.232.1
- Fixes Fedora rawhide gating test issues

Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-06-10 11:43:32 -04:00
Lokesh Mandvekar e41480d054
TMT: fix srpm download syntax on rawhide
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-06-10 11:43:28 -04:00
Daniel J Walsh 5486bd317a
Merge pull request #315 from lsm5/bump-2.232
Bump to v2.232.0
2024-06-10 08:54:40 -04:00
Lokesh Mandvekar 24161182a1
Bump to 2.232.0
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-06-07 14:42:58 -04:00
Lokesh Mandvekar a92e4713e2
Packit: remove `update_release` key from downstream jobs (#313)
`update_release` is useless in downstream. FWIW, it's also
not desirable for upstream / copr jobs.

Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-06-03 16:03:19 -04:00
Daniel J Walsh bdcdb7cb35
Merge pull request #311 from rhatdan/man
Update container-selinux.8 man page
2024-06-01 07:06:54 -04:00
Daniel J Walsh 4fda08e915 Update container-selinux.8 man page
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-05-31 11:46:41 -04:00
Daniel J Walsh 48558153fc
Add ownership of /usr/share/udica (#312)
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-05-31 11:46:21 -04:00
Daniel J Walsh 3615c95029
Merge pull request #310 from lsm5/packit-tmt-bodhi-reuse
Packit/TMT: upstream maintenance of downstream gating tests
2024-05-30 17:02:39 -04:00
Lokesh Mandvekar 82b49716e1
Packit/TMT: upstream maintenance of downstream gating tests
This commit reorganizes tests such that tests can be easily
triggered on local environment without any specialized CI
setup as well as triggered by TMT on PRs and bodhi updates.
This essentially moves all Fedora and CentOS Stream downstream
testing maintenance to the upstream repo.

Tests on upstream PRs use packages from the podman-next copr
wherever relevant while downstream tests use packages from the
official distro repos.

This commit also separates out rhel and centos stream tasks.
This enables centos-stream jobs to run automatically on all PRs
regardless of the PR author's access level on the repo. RHEL tests on
PRs by non-maintainers would need manual triggereing by maintainers.

Co-authored-by: Cristian Le <github@lecris.me>
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-05-28 10:31:12 -04:00
Daniel J Walsh 9e8a0ecda4
Merge pull request #308 from haircommander/userns-2
extend container_engine_t again
2024-05-16 15:34:08 -04:00
Peter Hunt b73f190510 extend container_engine_t again
after running podman system tests inside of a container

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2024-05-15 14:02:17 -04:00
Daniel J Walsh fc5e66e661
Merge pull request #306 from jsegitz/gpu2
introduce container_use_xserver_devices boolean to allow GPU access
2024-05-14 20:53:41 -04:00
Daniel J Walsh 66b00df26b
Merge pull request #307 from jsegitz/time_localctl
Allow privileged containers to use timedatectl and localectl
2024-05-14 20:51:35 -04:00
Johannes Segitz 206866ba08 Allow spc_t to use localectl
Signed-off-by: Johannes Segitz <jsegitz@suse.de>
2024-05-06 16:31:54 +02:00
Johannes Segitz d12a0c4b93 Allow spc_t to use timedatectl
Signed-off-by: Johannes Segitz <jsegitz@suse.de>
2024-05-06 16:31:48 +02:00
Johannes Segitz 6dfcb383de introduce container_use_xserver_devices boolean to allow GPU access
Using GPUs to accelerate workloads requires the permissions guarded
by container_use_xserver_devices. By default it's disabled

Signed-off-by: Johannes Segitz <jsegitz@suse.de>
2024-05-06 16:28:37 +02:00
Lokesh Mandvekar a3cba5ee5c
Packit/TMT: enable downstream syncing to CentOS Stream 10 (#305)
This commit enables downstream syncing to CentOS Stream 10.
This isn't fully automated yet and requires the maintainer to run
`packit propse-downstream` and `centpkg build` steps manually.

This commit also adds TMT podman revdep tests for CentOS Stream 10 and
RHEL 10 Beta Nightly. These tests are likely to fail pending netavark
work to default to nftables.

This commit will also run separate jobs for `epel-9` and
`centos-stream-9` to ensure we're using rhel rpms for rhel tests and
centos stream rpms for centos stream tests. This will also be done for
centos stream 10 / rhel 10 once the epel-10 target is created on copr.

Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-04-26 11:29:57 -04:00
Daniel J Walsh 654b2a41e5
Merge pull request #304 from lsm5/remove-el8
Packit: remove el8 and add centos stream 10
2024-04-24 17:05:23 -04:00
Lokesh Mandvekar 652675e2fc
Packit/rpm: remove el8 and add centos stream 10
- EL8 will go EOL soon and centos stream 10 is now available in copr.
- Remove old fedora 37 and rhel8 conditionals from spec file
- Switch to idiomatic TMT usage wherever possible

Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-04-24 14:23:12 -04:00
Daniel J Walsh 5d98341279
Merge pull request #303 from rhatdan/main
Allow container domains to communicate with spc_t unix_stream_sockets
2024-04-23 17:15:44 -04:00
Daniel J Walsh 0e7f1668b6
Allow container domains to communicate with spc_t unix_stream_sockets
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-04-22 06:37:36 -04:00
Lokesh Mandvekar a8e389dbcd
TMT: reorganize tests into scripts (#302)
This commit also reorganizes individual tests in scripts so they can be
executed standalone if need be.

The RHEL targets are also updated to use more generic floating targets
wherever possible.

Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-03-20 17:08:37 +05:30
Zdeněk Pytela 6200ed9fe2
Rename all /var/run file context entries to /run (#298)
With the 1f76e522a ("Rename all /var/run file context entries to /run")
selinux-policy commit, all /var/run file context entries moved to /run
and the equivalency was inverted. Subsequently, changes in container.fc
need to be done, too, in a similar manner. Together with that, the
"/run/lock = /var/lock" equivalency was also inverted and entries moved.

For RHEL < 10 and Fedora < 40, these changes are reverted in specfile.

Signed-off-by: Zdenek Pytela <zpytela@redhat.com>
2024-03-11 17:41:09 +05:30
Lokesh Mandvekar 6b565b90ee
Merge pull request #299 from lsm5/tmt-fix
TMT: reorganize tests and run podman system tests correctly
2024-03-11 17:20:37 +05:30
Lokesh Mandvekar 5dfcea8613
tmt: run podman system tests correctly
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-03-11 16:38:27 +05:30
Daniel J Walsh 5cec853268
Merge pull request #301 from rhatdan/mount
Allow containers to unmount file systems
2024-03-02 13:40:57 -05:00
Daniel J Walsh 022e31d7d7
Allow containers to unmount file systems
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-03-02 13:15:10 -05:00
Daniel J Walsh a023e9ee6a
Merge pull request #300 from rhatdan/main
Add buildah as a container_runtime_exec_t label
2024-02-28 10:03:09 -05:00
Daniel J Walsh db3b6625f1
Add buildah as a container_runtime_exec_t label
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-02-28 09:16:58 -05:00
Daniel J Walsh eac57925aa
Merge pull request #297 from rhatdan/main
Additional rules for container_user_t
2024-01-22 07:51:21 -05:00
Daniel J Walsh c4fbc450e3
Allow unconfined_r to transition to container_user_r
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-01-19 06:47:07 -05:00
Daniel J Walsh cffb801bdd
Additional rules for container_user_t
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-01-17 15:09:27 -05:00
Daniel J Walsh d733187b76
Merge pull request #296 from haircommander/bump-2.228.1
bump to v2.228.1
2024-01-17 15:08:39 -05:00
Peter Hunt 55fd889a88 bump to v2.228.1
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2024-01-16 14:58:35 -05:00
Daniel J Walsh 00da6b2b9a
Merge pull request #295 from haircommander/engine_t
improve container_engine_t
2024-01-15 15:25:56 -05:00
Peter Hunt 846d933418 improve container_engine_t
in the reviews some things were missed

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2024-01-11 13:36:06 -05:00
Daniel J Walsh 48c2b45fd0
Merge pull request #294 from rhatdan/watch
Allow container domains to watch fifo_files
2024-01-10 22:11:38 -05:00
Daniel J Walsh 26d4f23ec1
Allow container domains to watch fifo_files
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-01-10 10:25:50 -05:00
Daniel J Walsh 540fa9b5ff
Merge pull request #291 from haircommander/engine_t-improvements
container_engine_t: improve for podman in kubernetes case
2023-12-22 08:00:28 -05:00
Peter Hunt 6859af325b container_engine_t: improve for podman in kubernetes case
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2023-12-21 16:13:09 -05:00
Daniel J Walsh 289df825a2
Merge pull request #290 from rhatdan/spc_t
Allow spc_t to transition to install_t domain
2023-12-21 10:49:21 -05:00
Daniel J Walsh 694c7caa6e
Allow spc_t to transition to install_t domain
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-12-21 09:55:23 -05:00
Daniel J Walsh cff8553f61
Merge pull request #289 from rhatdan/kube
Default to allowing containers to use dri devices
2023-11-29 19:38:31 -05:00
Daniel J Walsh e53b5070e0
Default to allowing containers to use dri devices
Fixes: https://github.com/containers/container-selinux/issues/269

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-11-28 12:19:33 -05:00
Daniel J Walsh 3c47d8e340
Merge pull request #288 from rhatdan/kube
Arrange and sort all fs*container_domain calls
2023-11-28 12:16:11 -05:00
Daniel J Walsh 6b0254a83a
Arrange and sort all fs*container_domain calls
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-11-22 12:41:11 -05:00
Daniel J Walsh d73beea8a4
Merge pull request #286 from rhatdan/kube
Fix kubernetes transition rule
2023-11-22 12:36:50 -05:00
Daniel J Walsh 1ff9509407
Merge pull request #287 from dave-tucker/bpffs
Allow access to BPF Filesystems
2023-11-22 12:36:06 -05:00
Dave Tucker bc1e695dc5 Allow access to BPF Filesystems
BPF Filesystems (bpffs) are used to manage BPF Object Lifecycles.
For example, you can place a special object (called a pin) on a BPF
filesystem and use that object to get a reference to the
program/link/map that it references if you have permissions to make
bpf() syscalls.

In a recent kernel patch, a container may also recieve a token
that allows it to make BPF syscalls on this filesystem.

Since bpffs doesn't support xattrs, it's not possible to bind mount
it from the host with `:Z` so it can be re-labelled. Adding xattrs
to bpffs is not something that I've looked into in detail, but I
imagine it's non-trivial.

This commit should add the necessary rules to ensure that SELinux
permits the use of bpf_t file/directory objects from containers
when the BPFFS volume was bind mounted from the host.

Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2023-11-22 16:50:02 +00:00
Daniel J Walsh 1c56b4ecf4
Merge pull request #281 from lsm5/rhel-test-update
TMT: update RHEL test envs
2023-11-20 08:54:59 -05:00
Daniel J Walsh 3d5245ffcc
Merge pull request #284 from haircommander/kubensenter
label kubensenter as well as kubenswrapper
2023-11-20 08:54:22 -05:00
Daniel J Walsh 43704bf3ba
Fix kubernetes transition rule
Fixes: https://github.com/containers/container-selinux/issues/283

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-11-20 08:52:40 -05:00
Peter Hunt a241c30077 label kubensenter as well as kubenswrapper
on openshift, kubenswrapper service calls kubensenter, which calls the kubelet. Without this change,
kubelet will continue to be labeled unconfined_t

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2023-11-14 16:46:02 -05:00
Lokesh Mandvekar f073e0434d
TMT: update RHEL test envs
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2023-10-25 17:40:53 +05:30
Daniel J Walsh 31e9f0bdcc
Merge pull request #280 from rhatdan/runc
Allow container domains to execute container_runtime_tmpfs_t files
2023-10-11 07:07:16 -04:00
Daniel J Walsh 7efdd3d848
Allow container domains to execute container_runtime_tmpfs_t files
Fixes: https://github.com/containers/container-selinux/issues/274

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-10-11 06:44:22 -04:00
Daniel J Walsh 2411667590
Merge pull request #279 from rhatdan/runc
Allow container domains to use container_runtime_tmpfs_t as an entryp…
2023-10-10 18:40:42 -04:00
Daniel J Walsh 4b384f0a49
Allow container domains to ptrace themselves
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-10-10 13:44:57 -04:00
Daniel J Walsh 56fe16a607
Allow container domains to use container_runtime_tmpfs_t as an entrypoint
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-10-10 13:37:13 -04:00
Daniel J Walsh 969dd5a1a1
Merge pull request #278 from rhatdan/dri
Add boolean to allow containers to use dri devices
2023-10-10 09:11:17 -04:00
Daniel J Walsh 7da05b8a55
Add boolean to allow containers to use dri devices
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-10-09 17:26:40 -04:00
Daniel J Walsh b490ecc8ed
Merge pull request #275 from haircommander/pod-resources-container_file_t
give containers access to pod resources endpoint
2023-10-09 17:24:38 -04:00
Lokesh Mandvekar 6a2fba6888
Merge pull request #260 from lsm5/packit-rhel
Packit/TMT: enable CentOS Stream, RHEL [8,9] tests
2023-10-09 16:55:46 -04:00
Lokesh Mandvekar 4682822aac
Packit/TMT: enable CentOS Stream, RHEL [8,9] tests
This commit enables podman system and e2e tests for CentOS Stream and
RHEL, both 8 and 9.

The rhel tests run on the internal testing farm and have an `internal`
suffix appended for clarity. Only people with
access to the internal redhat network can access the logs.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-10-09 15:34:35 -04:00
Daniel J Walsh 615cc90b52
Merge pull request #277 from haircommander/kubenswrapper
label kubenswrapper kubelet_exec_t
2023-10-07 07:16:20 -04:00
Peter Hunt c6473b5686 give containers access to pod resources endpoint
from the kubelet's perspective, this endpoint is read only--a process cannot change anything in the
kubelet by accessing it.

Since access to these files will be prevented by kubernetes security policy (eliminating the vector
of malicious snooping), I think it will be safe to allow containers rw access to this socket.

Fixes https://issues.redhat.com/browse/RHEL-3128

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2023-10-05 14:41:02 -04:00
Peter Hunt 30f1835d8d label kubenswrapper kubelet_exec_t
or else it will be labeled unconfined_service_t, as it's by default a bin_t, and systemd is executing it

fixes https://issues.redhat.com/browse/OCPBUGS-20022

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2023-10-05 14:40:49 -04:00
Daniel J Walsh d9634f7308
Merge pull request #230 from lsm5/packit-podman-integration
Packit: enable podman integration tests
2023-10-04 19:56:25 -04:00
Lokesh Mandvekar dad7d2f276
Packit: enable podman e2e tests
The test scripts are replaced by inline scripting in the fmf file itself
making it much easier to maintain.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-10-04 15:31:13 -04:00
Lokesh Mandvekar 1a74da5224
Merge pull request #272 from lsm5/copr-fail-tag-2
Packit: use @containers/packit-build team for copr failure notification comments
2023-09-25 13:45:13 -04:00
Lokesh Mandvekar 4e35ce6675
Packit: use @containers/packit-build team for copr failure notification comments
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-09-22 09:30:14 -04:00
Daniel J Walsh 2c615b994e
Merge pull request #271 from lsm5/copr-fail-tag
Packit: tag @lsm5 on copr build failures
2023-09-21 17:31:27 -04:00
Lokesh Mandvekar 46ae036c99
Packit: tag @lsm5 on copr build failures
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-09-21 13:40:10 -04:00
Daniel J Walsh cbaa1ba787
Merge pull request #268 from rhatdan/main
Allow containers to read/write inherited dri devices
2023-09-17 09:46:26 -04:00
Daniel J Walsh ef132ebeaf
Allow containers to read/write inherited dri devices
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-09-15 07:03:13 -04:00
Daniel J Walsh bfb44d3835
Merge pull request #266 from rhatdan/pods
Don't allow containers to read /var/lib/kublet/pods by default
2023-08-29 16:30:41 -04:00
Daniel J Walsh 341fb1d253
Don't allow containers to read /var/lib/kublet/pods by default
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-29 07:31:39 -04:00
Daniel J Walsh ed30ab0dc9
Merge pull request #265 from rhatdan/main
Allow container domains to shutdown sockets inheritted from container…
2023-08-14 13:03:00 -04:00
Daniel J Walsh 8bb5627276
Allow containers to shutdown sockets inheritted from container runtimes
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-14 13:02:04 -04:00
Daniel J Walsh ba84254f4e
Merge pull request #264 from rhatdan/main
Allow spc_t to use execmod libraries on container file systems
2023-08-14 11:20:53 -04:00
Daniel J Walsh 4e4e63ca13
Allow spc_t to use execmod libraries on container file systems
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-14 10:51:23 -04:00
Lokesh Mandvekar 66fee64a97
Merge pull request #261 from martinpitt/packit-temp-copr
packit: Build PRs into default packit COPRs
2023-08-08 09:08:38 -04:00
Martin Pitt 881e89c1e0 packit: Build PRs into default packit COPRs
Building all PRs of all container projects into the same COPR does not
properly isolate PRs from each other: E.g. a podman PR currently runs
against whichever container-selinux PR was opened/updated last; in other
words, sending a broken container-selinux PR will instantly break tests
for all subsequent podman runs.

To avoid that, change the copr_build configuration to use the packit
default COPRs, which are specific to the particular PR, and disappear
after a few weeks. Depending projects like podman should only run
against what landed in container-selinux/main, i.e. the podman-next
COPR.

Note that this does not preclude testing a podman PR against an
container-selinux PR: This can be explicitly requested [1]. But most PRs
don't change the API and thus should default to isolation.

In addition, drop the explicit target list for the podman-next build. If
it differs from the actually configured target list in COPR, it will
either fail (if the packit user wasn't granted admin rights), or
actually reconfigure the COPR -- neither is desirable.

[1] https://packit.dev/posts/testing-farm-triggering

Signed-off-by: Martin Pitt <mpitt@redhat.com>
2023-08-08 11:47:09 +02:00
Daniel J Walsh e3d7d0b133
Merge pull request #259 from lsm5/rpm-macros
rpm: replace bcond_ macros with define
2023-06-23 09:56:29 -04:00
Lokesh Mandvekar 7d4ea55c1c
rpm: replace bcond_ macros with define
bcond_with/out macros are hard for the human to read and are often
confused. The `define` macros are much easier.

Also remove the git0 macro as it's no longer needed.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-06-23 09:00:30 -04:00
Daniel J Walsh b2e8f9068c
Merge pull request #258 from penn5/patch-1
Fix user_namespace support detection
2023-06-22 13:22:15 -04:00
Daniel J Walsh 8b8a5fe348
Merge pull request #256 from lsm5/packit-cleanup
Packit: cleanups
2023-06-22 13:19:21 -04:00
Hackintosh Five f9787d65c8 Fix user_namespace support detection
Signed-off-by: Hackintosh Five <git@hack5.dev>
2023-06-22 15:21:49 +01:00
Lokesh Mandvekar c123c047a2
Packit: cleanups
- remove .packit.sh
- use `fedora-all` alias for all active fedora releases
- define selinux_policyver for rhel8
- update changelog conditionals
- bump copr Epoch to 102 to prevent any upgrade issues

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-06-19 10:37:16 -04:00
Daniel J Walsh 124acb6529
Merge pull request #255 from rhatdan/cert
Add boolean to allow containers to read all cert files
2023-06-15 07:07:19 -04:00
Daniel J Walsh d6dfcc6f4f
Add boolean to allow containers to read all cert files
Certain users want to volume mount /etc/pki and friends into
a container but still run locked down.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-14 16:12:02 -04:00
Daniel J Walsh c0328f4567
Merge pull request #254 from bheesham/minor-typo-libvirt
Fix minor typo in README.md (Libvert -> Libvirt)
2023-06-13 14:19:12 -04:00
Bheesham Persaud 60251755b0 Fix minor typo in README.md (Libvert -> Libvirt)
Signed-off-by: Bheesham Persaud <me@bheesham.com>
2023-06-08 13:01:06 -04:00
Daniel J Walsh 08662f133d
Merge pull request #253 from containers/mls
Patches for better MLS support
2023-06-06 11:23:32 -04:00
Daniel J Walsh ced03318f4
More MLS Policy allow rules
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-05 15:42:55 -04:00
Daniel J Walsh e9b8678fa0
Fix file transition rule to specify containers not container
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-05 15:26:44 -04:00
Daniel J Walsh 2b77627e30
Fix spelling mistake in man pages
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-05 15:25:24 -04:00
Daniel J Walsh 2e44806276
Merge pull request #251 from rhatdan/mls
Permissions required to run on an MLS system
2023-06-05 14:26:45 -04:00
Daniel J Walsh c5bf2fe208
Allow container runtimes using pasta bind icmp_socket to port_t
For some reason pasta processes seen to need this access.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-06-05 14:25:20 -04:00
Daniel J Walsh 2e87847c3e
Permissions required to run on an MLS system
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-31 13:41:54 -04:00
Daniel J Walsh a1317a1d55
Merge pull request #250 from rhatdan/spc_t
Fix spc_t transitions from container_runtime_domain
2023-05-30 15:09:10 -04:00
Daniel J Walsh a1a96a2e52
Fix spc_t transitions from container_runtime_domain
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-30 14:28:51 -04:00
Lokesh Mandvekar e16876ee3e
Merge pull request #249 from lsm5/rpm-conflicts
rpm: do not install container_selinux.8 manpage
2023-05-23 09:17:34 -04:00
Lokesh Mandvekar 7959ea9094
rpm: do not install container_selinux.8 manpage
Currently installed by selinux-policy-doc

Ref: https://bugzilla.redhat.com/show_bug.cgi?id=2209120

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-05-23 09:08:40 -04:00
Lokesh Mandvekar 730f696fae
Merge pull request #248 from rhatdan/fedora
Allow container runtime to dyntransition to spc_t
2023-05-22 10:52:49 -04:00
Daniel J Walsh 7b0e34ec2a
Allow container runtime to dyntransition to spc_t
Podman container checkpoint/restore needs to be able to dyntrans
from container_runtime_t to spc_t.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-21 07:25:39 -04:00
Daniel J Walsh 1890e10a2e
Merge pull request #246 from rhatdan/mls
Add some MLS rules to policy
2023-05-18 12:37:42 -04:00
Daniel J Walsh 1d41e599d2
Merge pull request #247 from nforro/spec
Fix conditionalized %changelog content
2023-05-18 12:37:12 -04:00
Nikola Forró 95cfc1ed2e Fix CentOS <= 8 condition
`0%{?centos} <= 8` evaluates to true not only on CentOS <= 8, but also
on any version of Fedora and RHEL. Since CentOS defines both `%rhel`
and `%centos` macros, the new condition should work correctly on all
three OSes.

Signed-off-by: Nikola Forró <nforro@redhat.com>
2023-05-18 14:27:52 +02:00
Nikola Forró 057c609ca8 Fix conditionalized %changelog content
Signed-off-by: Nikola Forró <nforro@redhat.com>
2023-05-18 14:21:04 +02:00
Daniel J Walsh dc06ee2969
Add some MLS rules to policy
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-17 18:42:02 -04:00
Daniel J Walsh c1c72fc396
Merge pull request #243 from rhatdan/map
Allow containers which use devices to map them
2023-05-14 07:31:31 -04:00
Daniel J Walsh 8dc0977b77
Allow containers which use devices to map them
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-14 07:30:39 -04:00
Daniel J Walsh eca999aa22
Merge pull request #242 from mregmi/main
allow container_device_plugin_t access to debugfs
2023-05-12 09:01:52 -04:00
Manish Regmi 8dbfba26d3 allow container_device_plugin_t access to debugfs
One of a new device plugin for openshift we are working on (QAT),
requires access to debugfs. So allow container_device_plugin_t
access to debugfs.

Signed-off-by: Manish regmi <manish.regmi@intel.com>
2023-05-11 16:35:47 -07:00
Lokesh Mandvekar d984ce3fe4
Merge pull request #238 from lsm5/packit-fix
Packit: fix build issues
2023-05-11 11:19:01 -04:00
Lokesh Mandvekar 203d54c31e Packit: fix build issues
A prior merge of 5802ca2b00
undid some changes for the `install.selinux-user` target in rpm/spec.
This commit also fixes that.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-05-11 11:08:01 -04:00
Daniel J Walsh 5356978bf1
Merge pull request #241 from rhatdan/selinux
Cleanup entrypoint definitions
2023-05-11 11:05:46 -04:00
Daniel J Walsh ea3e83e940
Fix iptables to be able to run in unconfined role
Fix other domains that container_runtime_exec_t can
transition to also to run in the unconfined_r role.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-11 09:08:25 -04:00
Daniel J Walsh 487bcfa534
Cleanup entrypoint definitions
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-11 08:35:52 -04:00
Daniel J Walsh 488bf55333
Merge pull request #240 from rhatdan/selinux
Add labels for /var/lib/shared
2023-05-11 08:34:28 -04:00
Lokesh Mandvekar d32e1e9b6d
Merge pull request #237 from lsm5/rpm-ghost-files
RPM: own files created in post install
2023-05-10 13:13:39 -04:00
Daniel J Walsh 5dbe436cf8
Add labels for /var/lib/shared
We have been talking about this directory for years for
shared storage of container images, so setting the
SELinux labels for it.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-10 12:16:44 -04:00
Daniel J Walsh cf504f4417
Merge branch 'main' into rpm-ghost-files
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-10 12:11:16 -04:00
Daniel J Walsh e235f7d76c
Merge pull request #235 from rhatdan/main
Tighten controls on confined users
2023-05-10 12:10:19 -04:00
Daniel J Walsh f7c22ac54c
Install container_u on confined SELinux user systems
Allow users to play with confined users via the container_u description.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-10 12:09:50 -04:00
Lokesh Mandvekar 5802ca2b00
RPM: own files created in post install
Original ref: https://src.fedoraproject.org/rpms/container-selinux/pull-request/7#

From: Nikola Knazekova <nknazeko@redhat.com>

Adding upstream first since we're switching to a packit workflow for
downstream tasks.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-05-10 11:01:39 -04:00
Daniel J Walsh 2361047893
Tighten controls on confined users
This PR adds policy for the container_role_r and container_role_t type
which can be used for a confined user which can run containers.

In order to tighten security for this new role, I have removed spc_t
from the container_domain, which will stop confined users being able
to get to the unconfined domain spc_t.

Additionally I have removed the automatic transition between
unconfined_u to system_r role when running a container_runtime_t
domain.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-10 10:22:21 -04:00
Daniel J Walsh 052093f5a8
Merge pull request #236 from lsm5/fix-packit-tarball-location
Packit: fix source tarball location
2023-05-10 10:21:25 -04:00
Lokesh Mandvekar c356c58a41
Packit: fix source tarball location
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-05-10 08:35:50 -04:00
Daniel J Walsh 10a6a27c87
Merge pull request #232 from lsm5/packit-downstream
Packit: add jobs for downstream Fedora package builds
2023-05-03 14:56:52 -04:00
Lokesh Mandvekar be759f3dc4
Packit: add jobs for downstream Fedora package builds
Get rid of `container-selinux.spec.rpkg` in favour of
`rpm/container-selinux.spec` which gets synced with fedora dist-git on every
upstream release. The version in the new spec file is set to `0` by
default and gets updated by packit automatically on every packit task.

For local manual rpm builds using the spec, the helper script in the
`rpm/` subdir will update the Version field with the latest version
found in the upstream repo.

Packit will automatically create a PR on fedora dist-git on every new
upstream release. A sample PR will look like:
https://src.fedoraproject.org/rpms/container-selinux/pull-request/10#

A dry run for this can be triggered using:
`$ packit propose-downstream --local-content`

To run this command locally, you would need to have your packit
user-configuration-file set.
Ref: https://packit.dev/docs/configuration/#user-configuration-file

along with a fedora api key created at:
https://src.fedoraproject.org/settings#nav-api-tab with sufficient ACLs.

Fixes: #231

Co-authored-by: František Lachman <lachmanfrantisek@gmail.com>
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-05-02 15:28:06 -04:00
Lokesh Mandvekar ae2ada140e
Merge pull request #233 from rhatdan/fc
Fix paths to not cause relabel
2023-05-02 10:20:21 -04:00
Daniel J Walsh 2a8f8f8acd
Fix paths to not cause relabel
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-02 09:17:57 -04:00
Daniel J Walsh 53e7362ac5
Merge pull request #229 from rhatdan/dbus
Allow daemon to send dbus messages to spc_t
2023-04-22 07:28:56 -04:00
Lokesh Mandvekar f4f8294bdc
Merge pull request #226 from lsm5/packit-all-targets
Packit: Explicitly specify all targets
2023-04-21 11:29:36 -04:00
Lokesh Mandvekar 36ca2d6ecd
Packit: Explicitly specify all targets
Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-04-21 08:28:51 -04:00
Daniel J Walsh 3a34da7bfe
Allow daemon to send dbus messages to spc_t
When users run dbus based applications as containers, they
expect other processes to dbus chat with them.  I don't want
to allow all domains to dbus chat since this would include
container_t. Allowing daemon, will allow the bulk of confined
domains to interact with spc_t.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-04-21 05:46:54 -04:00
Daniel J Walsh 3c3ba8b69d
Merge pull request #228 from jcpunk/local-path-provisioner
set default context for local-path-provisioner
2023-04-20 20:09:08 -04:00
Pat Riehecky a3001061e7 set default context for local-path-provisioner
The kubernetes local-path-provisioner uses either
/opt/local-path-provisioner or
/var/local-path-provisioner for its physical volumes

Signed-off-by: Pat Riehecky <riehecky@fnal.gov>
2023-04-20 14:07:16 -05:00
Daniel J Walsh 36709f0c0e
Merge pull request #225 from rhatdan/main
Add container_file_t and container_ro_file_t as user_home_type
2023-04-06 16:06:41 -04:00
Daniel J Walsh 5b5f3b8848
Add container_file_t and container_ro_file_t as user_home_type
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-04-04 16:13:24 -04:00
Daniel J Walsh 5216df30f6
Merge pull request #220 from lsm5/gating-tests-2
Packit: run Podman SELinux-specific tests on public testing farm
2023-04-03 16:18:48 -04:00
Lokesh Mandvekar e29783636a
Packit: run Podman SELinux-specific tests on public testing farm
This commit will enable running Podman's SELinux system and e2e
tests on every PR to container-selinux.

An individual test plan can be run like so:
`$ tmt run --all plan --name /plans/podman_e2e_test provision --how
local`

and likewise for `/plans/podman_system_test`.

All tests can be run locally in the container-selinux repo like so:
`$ tmt run --all provision --how local`

The results from this command can be found in:
`/var/tmp/tmt/run-NNN/packit-tests/$TEST_NAME/execute/data/script-XX/output.txt`

The exact `/var/tmp/tmt/run-NNN`, $TEST_NAME, and `script-XX` will be echoed
in the console logs for the `tmt run ...` command.

FIXME: podman e2e tests run out of disk space on testing farm so they
have been commented out for now.

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
2023-04-03 16:21:45 +05:30
Daniel J Walsh fbec76d068
Merge pull request #224 from rhatdan/main
Allow syslogd_t gettatr on inheritited runtime tmpfs files
2023-04-01 07:26:54 -04:00
Daniel J Walsh 412e752ef2
Allow syslogd_t gettatr on inheritited runtime tmpfs files
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-04-01 07:01:00 -04:00
Daniel J Walsh 547f203653
Merge pull request #223 from rhatdan/main
Revert 88f904d48e
2023-03-31 15:26:26 -04:00
Daniel J Walsh ce5ea79577
Don't transition to initrc_t domains from spc_t
Reverts: 88f904d48e

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-03-31 15:05:28 -04:00
Daniel J Walsh 39c757a44e
Add tunable to allow sshd_t to launch container engines
Some people want to setup sshd to automatically launch podman
containers, since this is potentially dangerous in for users who do not
set this up, wrapping in a tunable.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-03-31 15:04:46 -04:00
Daniel J Walsh b0188001c5
Merge pull request #222 from rhatdan/main
Allow container domains to transition to install_t
2023-03-21 16:03:07 -04:00
Daniel J Walsh 840bc54e2f
Allow container domains to transition to install_t
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-03-21 15:41:26 -04:00
16 changed files with 653 additions and 313 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

View File

@ -1,27 +0,0 @@
#!/usr/bin/env bash
# Packit's default fix-spec-file often doesn't fetch version string correctly.
# This script handles any custom processing of the dist-git spec file and gets used by the
# fix-spec-file action in .packit.yaml
set -eo pipefail
# Get Version from HEAD
HEAD_VERSION=$(grep '^policy_module' container.te | sed 's/[^0-9.]//g')
# Generate source tarball
git archive --prefix=container-selinux-$HEAD_VERSION/ -o container-selinux-$HEAD_VERSION.tar.gz HEAD
# RPM Spec modifications
# Update Version in spec with Version from container.te
sed -i "s/^Version:.*/Version: $HEAD_VERSION/" container-selinux.spec
# Update Release in spec with Packit's release envvar
sed -i "s/^Release:.*/Release: $PACKIT_RPMSPEC_RELEASE%{?dist}/" container-selinux.spec
# Update Source tarball name in spec
sed -i "s/^Source:.*.tar.gz/Source: %{name}-$HEAD_VERSION.tar.gz/" container-selinux.spec
# Update setup macro to use the correct build dir
sed -i "s/^%setup.*/%autosetup -Sgit -n %{name}-$HEAD_VERSION/" container-selinux.spec

View File

@ -1,30 +1,133 @@
---
# See the documentation for more information:
# https://packit.dev/docs/configuration/
# Build targets can be found at:
# https://copr.fedorainfracloud.org/coprs/rhcontainerbot/packit-builds/
downstream_package_name: container-selinux
upstream_tag_template: v{version}
specfile_path: container-selinux.spec
# Ref: https://packit.dev/docs/configuration#files_to_sync
files_to_sync:
- src: rpm/gating.yaml
dest: gating.yaml
delete: true
- src: plans/
dest: plans/
delete: true
mkpath: true
- src: test/
dest: test/
delete: true
mkpath: true
- src: .fmf/
dest: .fmf/
delete: true
- .packit.yaml
packages:
container-selinux-fedora:
pkg_tool: fedpkg
specfile_path: rpm/container-selinux.spec
container-selinux-centos:
pkg_tool: centpkg
specfile_path: rpm/container-selinux.spec
container-selinux-eln:
specfile_path: rpm/container-selinux.spec
srpm_build_deps:
- make
jobs:
- &copr
job: copr_build
# Run on every PR
- job: copr_build
trigger: pull_request
owner: rhcontainerbot
project: packit-builds
packages: [container-selinux-fedora]
notifications: &copr_build_failure_notification
failure_comment:
message: "Ephemeral COPR build failed. @containers/packit-build please check."
enable_net: true
srpm_build_deps:
- make
- rpkg
actions:
post-upstream-clone:
- rpkg spec --outdir ./
fix-spec-file:
- bash .packit.sh
# container-selinux is noarch so we only need to test on one arch
targets: &fedora_copr_targets
- fedora-all-x86_64
- fedora-all-aarch64
- <<: *copr
# Run on commit to main branch
- job: copr_build
trigger: pull_request
packages: [container-selinux-eln]
notifications: *copr_build_failure_notification
enable_net: true
targets:
- fedora-eln-x86_64
- fedora-eln-aarch64
- job: copr_build
trigger: pull_request
packages: [container-selinux-centos]
notifications: *copr_build_failure_notification
enable_net: true
targets: &centos_copr_targets
- centos-stream-9-x86_64
- centos-stream-9-aarch64
- centos-stream-10-x86_64
- centos-stream-10-aarch64
# Run on commit to main branch
# Build targets managed in copr settings
- job: copr_build
trigger: commit
packages: [container-selinux-fedora]
notifications:
failure_comment:
message: "podman-next COPR build failed. @containers/packit-build please check."
branch: main
owner: rhcontainerbot
project: podman-next
enable_net: true
# All tests specified in the `/plans/` subdir
# Tests for Fedora
- job: tests
trigger: pull_request
packages: [container-selinux-fedora]
notifications: &test_failure_notification
failure_comment:
message: "Tests failed. @containers/packit-build please check."
targets: *fedora_copr_targets
tf_extra_params:
environments:
- artifacts:
- type: repository-file
id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/fedora-$releasever/rhcontainerbot-podman-next-fedora-$releasever.repo
# Tests for CentOS Stream
- job: tests
trigger: pull_request
packages: [container-selinux-centos]
notifications: *test_failure_notification
targets: *centos_copr_targets
tf_extra_params:
environments:
- artifacts:
- type: repository-file
id: https://copr.fedorainfracloud.org/coprs/rhcontainerbot/podman-next/repo/centos-stream-$releasever/rhcontainerbot-podman-next-centos-stream-$releasever.repo
- job: propose_downstream
trigger: release
packages: [container-selinux-fedora]
dist_git_branches: &fedora_targets
- fedora-all
- job: propose_downstream
trigger: release
packages: [container-selinux-centos]
dist_git_branches:
- c10s
- job: koji_build
trigger: commit
packages: [container-selinux-fedora]
dist_git_branches: *fedora_targets
- job: bodhi_update
trigger: commit
packages: [container-selinux-fedora]
dist_git_branches:
- fedora-branched # rawhide updates are created automatically

View File

@ -4,6 +4,7 @@ MODULES ?= ${TARGETS:=.pp.bz2}
# Point SHAREDIR to DATADIR by default to not break existing users
DATADIR ?= /usr/share
SHAREDIR ?= ${DATADIR}
SYSCONFDIR ?= /etc
all: ${TARGETS:=.pp.bz2}
@ -30,6 +31,9 @@ install: man
install -D -pm 644 container_selinux.8 ${DESTDIR}${SHAREDIR}/man/man8/container_selinux.8
install -D -pm 644 container_contexts ${DESTDIR}${SHAREDIR}/containers/selinux/contexts
install.selinux-user:
install -D -pm 644 container_u ${DESTDIR}${SYSCONFDIR}/selinux/targeted/contexts/users/container_u
install.udica-templates:
install -dp $(DESTDIR)$(SHAREDIR)/udica/templates
install -pm 644 udica-templates/*.cil $(DESTDIR)$(SHAREDIR)/udica/templates

6
OWNERS Normal file
View File

@ -0,0 +1,6 @@
approvers:
- haircommander
- lsm5
- rhatdan
- wrabcak
- zpytela

View File

@ -8,7 +8,7 @@ Explains `container_t` vs `container_var_lib_t`
**[`container_t` versus `svirt_lxc_net_t`](https://danwalsh.livejournal.com/79191.html)**
Clarifys `container_t` versus `svirt_lxc_net_t` aliases
**[SELinux, Podman, and Libvert](https://danwalsh.livejournal.com/81143.html)**
**[SELinux, Podman, and Libvirt](https://danwalsh.livejournal.com/81143.html)**
Information regarding SELinux blocking Podman container from talking to Libvirt
**[Caution Relabeling Volumes with Container Runtimes](https://danwalsh.livejournal.com/76016.html)**

View File

@ -9,14 +9,19 @@
/usr/local/s?bin/kubelet.* -- gen_context(system_u:object_r:kubelet_exec_t,s0)
/usr/s?bin/hyperkube.* -- gen_context(system_u:object_r:kubelet_exec_t,s0)
/usr/local/s?bin/hyperkube.* -- gen_context(system_u:object_r:kubelet_exec_t,s0)
/usr/local/s?bin/docker.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/kubenswrapper.* -- gen_context(system_u:object_r:kubelet_exec_t,s0)
/usr/local/s?bin/kubenswrapper.* -- gen_context(system_u:object_r:kubelet_exec_t,s0)
/usr/s?bin/kubensenter.* -- gen_context(system_u:object_r:kubelet_exec_t,s0)
/usr/local/s?bin/kubensenter.* -- gen_context(system_u:object_r:kubelet_exec_t,s0)
/usr/local/s?bin/docker.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/containerd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/local/s?bin/containerd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/local/s?bin/containerd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/buildah -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/buildkitd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/local/s?bin/buildkitd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/local/s?bin/buildkitd.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/lxc-.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/lxd-.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/lxc-.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/lxd-.* -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/lxc -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/lxd -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
/usr/s?bin/fuidshift -- gen_context(system_u:object_r:container_runtime_exec_t,s0)
@ -59,6 +64,7 @@
/etc/crio(/.*)? gen_context(system_u:object_r:container_config_t,s0)
/exports(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/lib/shared(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/registry(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/lib/lxc(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/lib/lxd(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
@ -86,6 +92,8 @@
# Unlike the runc-<SNAPSHOTTER> directory, this directory does not contain the "executor" directory inside it.
/var/lib/buildkit/containerd-.*(/.*?) gen_context(system_u:object_r:container_ro_file_t,s0)
HOME_DIR/\.local/share/ramalama(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
HOME_DIR/\.local/share/containers/storage/artifacts(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
HOME_DIR/\.local/share/containers/storage/overlay(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
HOME_DIR/\.local/share/containers/storage/overlay2(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
HOME_DIR/\.local/share/containers/storage/overlay-layers(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
@ -103,6 +111,7 @@ HOME_DIR/\.local/share/containers/storage/volumes/[^/]*/.* gen_context(system_u:
/var/lib/containers/overlay2-images(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/containers/atomic(/.*)? <<none>>
/var/lib/containers/storage/volumes/[^/]*/.* gen_context(system_u:object_r:container_file_t,s0)
/var/lib/containers/storage/artifacts(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/containers/storage/overlay(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/containers/storage/overlay2(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/containers/storage/overlay-layers(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
@ -111,15 +120,21 @@ HOME_DIR/\.local/share/containers/storage/volumes/[^/]*/.* gen_context(system_u:
/var/lib/containers/storage/overlay2-images(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/ocid(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/lib/ocid/sandboxes(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/cache/containers(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/cache/kata-containers(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/kata-containers(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/run/kata-containers(/.*)? gen_context(system_u:object_r:container_kvm_var_run_t,s0)
/run/kata-containers(/.*)? gen_context(system_u:object_r:container_kvm_var_run_t,s0)
/var/local-path-provisioner(/.*)? gen_context(system_u:object_r:container_file_t,s0)
/opt/local-path-provisioner(/.*)? gen_context(system_u:object_r:container_file_t,s0)
/var/lib/origin(/.*)? gen_context(system_u:object_r:container_file_t,s0)
/var/lib/kubernetes/pods(/.*)? gen_context(system_u:object_r:container_file_t,s0)
/var/lib/kubelet(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/lib/kubelet/pod-resources(/.*)? gen_context(system_u:object_r:kubelet_var_lib_t,s0)
/var/lib/docker-latest(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/lib/docker-latest/.*/config\.env gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/docker-latest/containers/.*/.*\.log gen_context(system_u:object_r:container_log_t,s0)
@ -130,27 +145,28 @@ HOME_DIR/\.local/share/containers/storage/volumes/[^/]*/.* gen_context(system_u:
/var/lib/docker-latest/overlay2(/.*)? gen_context(system_u:object_r:container_ro_file_t,s0)
/var/lib/cni(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/var/run/flannel(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/lib/kubelet/pods(/.*)? gen_context(system_u:object_r:container_file_t,s0)
/var/lib/crio(/.*)? gen_context(system_u:object_r:container_var_lib_t,s0)
/run/flannel(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/log/containers(/.*)? gen_context(system_u:object_r:container_log_t,s0)
/var/log/pods(/.*)? gen_context(system_u:object_r:container_log_t,s0)
/var/run/containers(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/crio(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/docker(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/containerd(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/containerd/[^/]*/sandboxes/[^/]*/shm(/.*)? gen_context(system_u:object_r:container_runtime_tmpfs_t,s0)
/var/run/buildkit(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/docker\.pid -- gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/docker\.sock -s gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/docker-client(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/var/run/docker/plugins(/.*)? gen_context(system_u:object_r:container_plugin_var_run_t,s0)
/run/containers(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/run/crio(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/run/docker(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/run/containerd(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/run/containerd/[^/]*/sandboxes/[^/]*/shm(/.*)? gen_context(system_u:object_r:container_runtime_tmpfs_t,s0)
/run/buildkit(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/run/docker\.pid -- gen_context(system_u:object_r:container_var_run_t,s0)
/run/docker\.sock -s gen_context(system_u:object_r:container_var_run_t,s0)
/run/docker-client(/.*)? gen_context(system_u:object_r:container_var_run_t,s0)
/run/docker/plugins(/.*)? gen_context(system_u:object_r:container_plugin_var_run_t,s0)
/srv/containers(/.*)? gen_context(system_u:object_r:container_file_t,s0)
/var/srv/containers(/.*)? gen_context(system_u:object_r:container_file_t,s0)
/var/lock/lxc(/.*)? gen_context(system_u:object_r:container_lock_t,s0)
/run/lock/lxc(/.*)? gen_context(system_u:object_r:container_lock_t,s0)
/var/log/kube-apiserver(/.*)? gen_context(system_u:object_r:container_log_t,s0)
/var/log/lxc(/.*)? gen_context(system_u:object_r:container_log_t,s0)
/var/log/lxd(/.*)? gen_context(system_u:object_r:container_log_t,s0)
/etc/kubernetes(/.*)? gen_context(system_u:object_r:kubernetes_file_t,s0)

View File

@ -512,6 +512,7 @@ interface(`container_filetrans_named_content',`
files_pid_filetrans($1, container_var_run_t, dir, "containers")
files_pid_filetrans($1, container_kvm_var_run_t, dir, "kata-containers")
logging_log_filetrans($1, container_log_t, dir, "kube-apiserver")
logging_log_filetrans($1, container_log_t, dir, "lxc")
files_var_lib_filetrans($1, container_var_lib_t, dir, "containers")
files_var_lib_filetrans($1, container_file_t, dir, "origin")
@ -522,6 +523,7 @@ interface(`container_filetrans_named_content',`
files_var_lib_filetrans($1, container_ro_file_t, dir, "kata-containers")
files_var_lib_filetrans($1, container_var_lib_t, dir, "containerd")
files_var_lib_filetrans($1, container_var_lib_t, dir, "buildkit")
files_var_lib_filetrans($1, container_ro_file_t, dir, "shared")
filetrans_pattern($1, container_var_lib_t, container_file_t, dir, "_data")
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, file, "config.env")
@ -535,6 +537,7 @@ interface(`container_filetrans_named_content',`
# workdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/4/work)
filetrans_pattern($1, container_var_lib_t, container_file_t, dir, "snapshots")
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, dir, "init")
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, dir, "artifacts")
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, dir, "overlay")
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, dir, "overlay-images")
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, dir, "overlay-layers")
@ -560,6 +563,8 @@ interface(`container_filetrans_named_content',`
# Third-party snapshotters
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, dir, "containerd-soci")
filetrans_pattern($1, data_home_t, container_ro_file_t, dir, "ramalama")
filetrans_pattern($1, data_home_t, container_ro_file_t, dir, "artifacts")
filetrans_pattern($1, data_home_t, container_ro_file_t, dir, "overlay")
filetrans_pattern($1, data_home_t, container_ro_file_t, dir, "overlay-images")
filetrans_pattern($1, data_home_t, container_ro_file_t, dir, "overlay-layers")
@ -572,7 +577,7 @@ interface(`container_filetrans_named_content',`
filetrans_pattern($1, container_var_lib_t, container_ro_file_t, dir, "kata-containers")
filetrans_pattern($1, data_home_t, container_ro_file_t, dir, "kata-containers")
filetrans_pattern($1, container_var_run_t, container_runtime_tmpfs_t, dir, "shm")
files_pid_filetrans($1, kubernetes_file_t, dir, "kubernetes")
files_etc_filetrans($1, kubernetes_file_t, dir, "kubernetes")
')
########################################
@ -997,7 +1002,6 @@ interface(`container_kubelet_domtrans',`
interface(`container_kubelet_run',`
gen_require(`
type kubelet_t;
class dbus send_msg;
')
container_kubelet_domtrans($1)

View File

@ -1,7 +1,8 @@
policy_module(container, 2.205.0)
policy_module(container, 2.238.0)
gen_require(`
class passwd rootok;
type system_conf_t;
')
########################################
@ -17,6 +18,20 @@ gen_require(`
## </desc>
gen_tunable(container_connect_any, false)
## <desc>
## <p>
## Allow all container domains to read cert files and directories
## </p>
## </desc>
gen_tunable(container_read_certs, false)
## <desc>
## <p>
## Determine whether sshd can launch container engines
## </p>
## </desc>
gen_tunable(sshd_launch_containers, false)
## <desc>
## <p>
## Allow containers to use any device volume mounted into container
@ -24,6 +39,20 @@ gen_tunable(container_connect_any, false)
## </desc>
gen_tunable(container_use_devices, false)
## <desc>
## <p>
## Allow containers to use any xserver device volume mounted into container, mostly used for GPU acceleration
## </p>
## </desc>
gen_tunable(container_use_xserver_devices, false)
## <desc>
## <p>
## Allow containers to use any dri device volume mounted into container
## </p>
## </desc>
gen_tunable(container_use_dri_devices, true)
## <desc>
## <p>
## Allow sandbox containers to manage cgroup (systemd)
@ -74,10 +103,9 @@ ifdef(`enable_mls',`
range_transition container_runtime_t conmon_exec_t:process s0;
')
type spc_t, container_domain;
type spc_t;
domain_type(spc_t)
role system_r types spc_t;
init_initrc_domain(spc_t)
type container_auth_t alias docker_auth_t;
type container_auth_exec_t alias docker_auth_exec_t;
@ -123,7 +151,9 @@ type container_devpts_t alias docker_devpts_t;
term_pty(container_devpts_t)
typealias container_ro_file_t alias { container_share_t docker_share_t };
typeattribute container_ro_file_t container_file_type, user_home_type;
files_mountpoint(container_ro_file_t)
userdom_user_home_content(container_ro_file_t)
type container_port_t alias docker_port_t;
corenet_port(container_port_t)
@ -162,6 +192,7 @@ allow container_runtime_domain self:tcp_socket create_stream_socket_perms;
allow container_runtime_domain self:udp_socket create_socket_perms;
allow container_runtime_domain self:capability2 block_suspend;
allow container_runtime_domain container_port_t:tcp_socket name_bind;
allow container_runtime_domain port_t:icmp_socket name_bind;
allow container_runtime_domain self:filesystem associate;
allow container_runtime_domain self:packet_socket create_socket_perms;
allow container_runtime_domain self:socket create_socket_perms;
@ -198,19 +229,24 @@ manage_dirs_pattern(container_runtime_domain, container_home_t, container_home_t
manage_lnk_files_pattern(container_runtime_domain, container_home_t, container_home_t)
userdom_admin_home_dir_filetrans(container_runtime_domain, container_home_t, dir, ".container")
userdom_manage_user_home_content(container_runtime_domain)
userdom_map_user_home_files(container_runtime_t)
manage_dirs_pattern(container_runtime_domain, container_config_t, container_config_t)
manage_files_pattern(container_runtime_domain, container_config_t, container_config_t)
files_etc_filetrans(container_runtime_domain, container_config_t, dir, "container")
files_etc_filetrans(container_runtime_domain, container_config_t, dir, "containers")
manage_dirs_pattern(container_runtime_domain, container_lock_t, container_lock_t)
manage_files_pattern(container_runtime_domain, container_lock_t, container_lock_t)
files_lock_filetrans(container_runtime_domain, container_lock_t, { dir file }, "lxc")
files_manage_generic_locks(container_runtime_domain)
manage_dirs_pattern(container_runtime_domain, container_log_t, container_log_t)
manage_files_pattern(container_runtime_domain, container_log_t, container_log_t)
manage_lnk_files_pattern(container_runtime_domain, container_log_t, container_log_t)
logging_read_syslog_pid(container_runtime_domain)
logging_log_filetrans(container_runtime_domain, container_log_t, { dir file lnk_file })
allow container_runtime_domain container_log_t:dir_file_class_set { relabelfrom relabelto };
filetrans_pattern(container_runtime_domain, container_var_lib_t, container_log_t, file, "container-json.log")
allow container_runtime_domain { container_var_lib_t container_ro_file_t }:file entrypoint;
@ -236,8 +272,23 @@ manage_chr_files_pattern(container_runtime_domain, container_ro_file_t, containe
manage_blk_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
manage_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
manage_lnk_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
manage_sock_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
allow container_runtime_domain container_ro_file_t:dir_file_class_set { relabelfrom relabelto };
can_exec(container_runtime_domain, container_ro_file_t)
manage_dirs_pattern(container_runtime_domain, container_var_lib_t, container_var_lib_t)
manage_files_pattern(container_runtime_domain, container_var_lib_t, container_var_lib_t)
manage_lnk_files_pattern(container_runtime_domain, container_var_lib_t, container_var_lib_t)
manage_chr_files_pattern(container_runtime_domain, container_var_lib_t, container_var_lib_t)
manage_blk_files_pattern(container_runtime_domain, container_var_lib_t, container_var_lib_t)
manage_sock_files_pattern(container_runtime_domain, container_var_lib_t, container_var_lib_t)
manage_dirs_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
manage_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
manage_lnk_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
manage_chr_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
manage_blk_files_pattern(container_runtime_domain, container_ro_file_t, container_ro_file_t)
filetrans_pattern(container_runtime_domain, container_var_lib_t, container_ro_file_t, dir, "init")
filetrans_pattern(container_runtime_domain, container_var_lib_t, container_ro_file_t, dir, "overlay")
filetrans_pattern(container_runtime_domain, container_var_lib_t, container_ro_file_t, dir, "overlay2")
@ -255,6 +306,7 @@ manage_sock_files_pattern(container_runtime_domain, container_var_lib_t, contain
manage_lnk_files_pattern(container_runtime_domain, container_var_lib_t, container_var_lib_t)
allow container_runtime_domain container_var_lib_t:dir_file_class_set { relabelfrom relabelto };
files_var_lib_filetrans(container_runtime_domain, container_var_lib_t, { dir file lnk_file })
files_var_filetrans(container_runtime_domain, container_var_lib_t, dir, "containers")
manage_dirs_pattern(container_runtime_domain, container_var_run_t, container_var_run_t)
manage_files_pattern(container_runtime_domain, container_var_run_t, container_var_run_t)
@ -263,17 +315,30 @@ manage_sock_files_pattern(container_runtime_domain, container_var_run_t, contain
manage_lnk_files_pattern(container_runtime_domain, container_var_run_t, container_var_run_t)
files_pid_filetrans(container_runtime_domain, container_var_run_t, { dir file lnk_file sock_file })
files_tmp_filetrans(container_runtime_domain, container_var_run_t, { dir file lnk_file sock_file })
allow container_runtime_domain container_var_run_t:dir_file_class_set relabelfrom;
allow container_runtime_domain container_devpts_t:chr_file { relabelfrom rw_chr_file_perms setattr_chr_file_perms };
term_create_pty(container_runtime_domain, container_devpts_t)
term_use_all_ttys(container_runtime_domain)
term_use_all_inherited_terms(container_runtime_domain)
mls_file_read_to_clearance(container_runtime_t)
mls_file_relabel_to_clearance(container_runtime_t)
mls_file_write_to_clearance(container_runtime_t)
mls_process_read_to_clearance(container_runtime_t)
mls_process_write_to_clearance(container_runtime_t)
mls_socket_read_to_clearance(container_runtime_t)
mls_socket_write_to_clearance(container_runtime_t)
mls_sysvipc_read_to_clearance(container_runtime_t)
mls_sysvipc_write_to_clearance(container_runtime_t)
kernel_read_network_state(container_runtime_domain)
kernel_read_all_sysctls(container_runtime_domain)
kernel_rw_net_sysctls(container_runtime_domain)
kernel_setsched(container_runtime_domain)
kernel_rw_all_sysctls(container_runtime_domain)
kernel_mounton_all_proc(container_runtime_domain)
fs_getattr_all_fs(container_runtime_domain)
domain_obj_id_change_exemption(container_runtime_t)
domain_subj_id_change_exemption(container_runtime_t)
@ -287,6 +352,8 @@ domain_getattr_all_domains(container_runtime_domain)
userdom_map_tmp_files(container_runtime_domain)
anaconda_domtrans_install(container_runtime_domain)
optional_policy(`
gnome_map_generic_data_home_files(container_runtime_domain)
allow container_runtime_domain data_home_t:dir { relabelfrom relabelto };
@ -381,7 +448,10 @@ optional_policy(`
')
optional_policy(`
iptables_domtrans(container_runtime_domain)
gen_require(`
role unconfined_r;
')
iptables_run(container_runtime_domain, unconfined_r)
container_read_pid_files(iptables_t)
container_read_state(iptables_t)
@ -449,33 +519,38 @@ dev_rw_loop_control(container_runtime_domain)
dev_rw_lvm_control(container_runtime_domain)
dev_read_mtrr(container_runtime_domain)
userdom_map_user_home_files(container_runtime_t)
files_getattr_isid_type_dirs(container_runtime_domain)
files_manage_isid_type_dirs(container_runtime_domain)
files_manage_isid_type_files(container_runtime_domain)
files_manage_isid_type_symlinks(container_runtime_domain)
files_manage_isid_type_chr_files(container_runtime_domain)
files_manage_isid_type_blk_files(container_runtime_domain)
files_manage_etc_dirs(container_runtime_domain)
files_manage_etc_files(container_runtime_domain)
files_exec_isid_files(container_runtime_domain)
files_mounton_isid(container_runtime_domain)
files_mounton_non_security(container_runtime_domain)
files_mounton_isid_type_chr_file(container_runtime_domain)
fs_mount_all_fs(container_runtime_domain)
fs_unmount_all_fs(container_runtime_domain)
fs_remount_all_fs(container_runtime_domain)
files_mounton_isid(container_runtime_domain)
fs_getattr_all_fs(container_runtime_domain)
fs_list_hugetlbfs(container_runtime_domain)
fs_manage_cgroup_dirs(container_runtime_domain)
fs_manage_cgroup_files(container_runtime_domain)
fs_rw_nsfs_files(container_runtime_domain)
fs_relabelfrom_xattr_fs(container_runtime_domain)
fs_relabelfrom_tmpfs(container_runtime_domain)
fs_read_tmpfs_symlinks(container_runtime_domain)
fs_getattr_all_fs(container_runtime_domain)
fs_rw_inherited_tmpfs_files(container_runtime_domain)
fs_read_tmpfs_symlinks(container_runtime_domain)
fs_search_tmpfs(container_runtime_domain)
fs_list_hugetlbfs(container_runtime_domain)
fs_manage_hugetlbfs_files(container_runtime_domain)
fs_mount_all_fs(container_runtime_domain)
fs_read_tmpfs_symlinks(container_runtime_domain)
fs_read_tmpfs_symlinks(container_runtime_domain)
fs_relabelfrom_tmpfs(container_runtime_domain)
fs_relabelfrom_xattr_fs(container_runtime_domain)
fs_remount_all_fs(container_runtime_domain)
fs_rw_inherited_tmpfs_files(container_runtime_domain)
fs_rw_nsfs_files(container_runtime_domain)
fs_search_tmpfs(container_runtime_domain)
fs_set_xattr_fs_quotas(container_runtime_domain)
fs_unmount_all_fs(container_runtime_domain)
term_use_generic_ptys(container_runtime_domain)
@ -509,7 +584,6 @@ tunable_policy(`virt_use_nfs',`
fs_manage_nfs_symlinks(container_runtime_domain)
fs_remount_nfs(container_runtime_domain)
fs_mount_nfs(container_runtime_domain)
fs_unmount_nfs(container_runtime_domain)
fs_exec_nfs_files(container_runtime_domain)
kernel_rw_fs_sysctls(container_runtime_domain)
allow container_runtime_domain nfs_t:file execmod;
@ -554,6 +628,10 @@ tunable_policy(`container_use_cephfs',`
allow container_domain cephfs_t:file execmod;
')
tunable_policy(`container_read_certs',`
miscfiles_read_all_certs(container_domain)
')
gen_require(`
type ecryptfs_t;
')
@ -571,22 +649,16 @@ fs_manage_fusefs_dirs(container_runtime_domain)
fs_manage_fusefs_files(container_runtime_domain)
fs_manage_fusefs_symlinks(container_runtime_domain)
fs_mount_fusefs(container_runtime_domain)
fs_unmount_fusefs(container_runtime_domain)
fs_exec_fusefs_files(container_runtime_domain)
storage_rw_fuse(container_runtime_domain)
optional_policy(`
files_search_all(container_domain)
container_read_share_files(container_domain)
container_exec_share_files(container_domain)
allow container_domain container_ro_file_t:file execmod;
container_lib_filetrans(container_domain,container_file_t, sock_file)
container_use_ptys(container_domain)
container_spc_stream_connect(container_domain)
fs_dontaudit_remount_tmpfs(container_domain)
dev_dontaudit_mounton_sysfs(container_domain)
')
files_search_all(container_domain)
container_read_share_files(container_domain)
container_exec_share_files(container_domain)
allow container_domain container_ro_file_t:file execmod;
container_lib_filetrans(container_domain,container_file_t, sock_file)
container_use_ptys(container_domain)
container_spc_stream_connect(container_domain)
optional_policy(`
apache_exec_modules(container_runtime_domain)
@ -640,12 +712,12 @@ optional_policy(`
role unconfined_r;
')
role unconfined_r types container_user_domain;
role unconfined_r types spc_t;
unconfined_domain(container_runtime_t)
unconfined_run_to(container_runtime_t, container_runtime_exec_t)
role_transition unconfined_r container_runtime_exec_t system_r;
allow container_domain unconfined_domain_type:fifo_file { rw_fifo_file_perms map };
allow container_runtime_domain unconfined_t:fifo_file setattr;
allow unconfined_domain_type container_domain:process {transition dyntransition };
allow unconfined_domain_type container_domain:process {transition dyntransition};
allow unconfined_t unlabeled_t:key manage_key_perms;
allow container_runtime_t unconfined_t:process transition;
allow unconfined_domain_type { container_var_lib_t container_ro_file_t }:file entrypoint;
@ -684,33 +756,44 @@ tunable_policy(`container_connect_any',`
#
# spc local policy
#
allow spc_t { container_var_lib_t container_ro_file_t }:file entrypoint;
allow spc_t { container_file_t container_var_lib_t container_ro_file_t container_runtime_tmpfs_t}:file entrypoint;
role system_r types spc_t;
dontaudit spc_t self:memprotect mmap_zero;
domtrans_pattern(container_runtime_domain, container_ro_file_t, spc_t)
domtrans_pattern(container_runtime_domain, container_var_lib_t, spc_t)
domtrans_pattern(container_runtime_domain, fusefs_t, spc_t)
fs_tmpfs_filetrans(spc_t, container_file_t, { dir file lnk_file })
allow container_runtime_domain spc_t:process2 nnp_transition;
allow container_runtime_domain spc_t:process2 { nnp_transition nosuid_transition };
allow spc_t container_file_type:file execmod;
admin_pattern(spc_t, kubernetes_file_t)
allow spc_t container_runtime_domain:fifo_file manage_fifo_file_perms;
allow spc_t { container_ro_file_t container_file_t }:system module_load;
allow container_runtime_domain spc_t:process { setsched signal_perms };
allow container_runtime_domain spc_t:process { dyntransition setsched signal_perms };
ps_process_pattern(container_runtime_domain, spc_t)
allow container_runtime_domain spc_t:socket_class_set { relabelto relabelfrom };
allow spc_t unlabeled_t:key manage_key_perms;
allow spc_t unlabeled_t:socket_class_set create_socket_perms;
fs_fusefs_entrypoint(spc_t)
corecmd_entrypoint_all_executables(spc_t)
init_dbus_chat(spc_t)
optional_policy(`
systemd_dbus_chat_machined(spc_t)
systemd_dbus_chat_logind(spc_t)
systemd_dbus_chat_timedated(spc_t)
systemd_dbus_chat_localed(spc_t)
')
domain_transition_all(spc_t)
anaconda_domtrans_install(spc_t)
optional_policy(`
dbus_chat_system_bus(spc_t)
dbus_chat_session_bus(spc_t)
@ -723,6 +806,11 @@ optional_policy(`
# This should eventually be in upstream policy.
# https://github.com/fedora-selinux/selinux-policy/pull/806
allow spc_t domain:bpf { map_create map_read map_write prog_load prog_run };
allow daemon spc_t:dbus send_msg;
')
optional_policy(`
rtkit_scheduled(spc_t)
')
optional_policy(`
@ -736,7 +824,10 @@ optional_policy(`
gen_require(`
attribute virt_domain;
type virtd_t;
role unconfined_r;
')
role unconfined_r types virt_domain;
role unconfined_r types virtd_t;
container_spc_read_state(virt_domain)
container_spc_rw_pipes(virt_domain)
allow container_runtime_t virtd_t:process transition;
@ -806,10 +897,10 @@ gen_require(`
')
container_manage_files_template(container, container)
typeattribute container_file_t container_file_type;
typeattribute container_file_t container_file_type, user_home_type;
typeattribute container_t container_domain, container_net_domain, container_user_domain;
allow container_user_domain self:process getattr;
allow container_domain { container_var_lib_t container_ro_file_t container_file_t }:file entrypoint;
allow container_domain { container_var_lib_t container_ro_file_t container_file_t container_runtime_tmpfs_t}:file entrypoint;
allow container_runtime_domain container_domain:fifo_file rw_fifo_file_perms;
allow container_domain container_runtime_domain:fifo_file { rw_fifo_file_perms map };
allow container_domain container_runtime_t:unix_dgram_socket sendto;
@ -828,6 +919,7 @@ dontaudit container_domain self:dir { write add_name };
allow container_domain self:file rw_file_perms;
allow container_domain self:lnk_file read_file_perms;
allow container_domain self:fifo_file create_fifo_file_perms;
allow container_domain self:fifo_file watch;
allow container_domain self:filesystem associate;
allow container_domain self:key manage_key_perms;
allow container_domain self:netlink_route_socket r_netlink_socket_perms;
@ -847,28 +939,33 @@ allow container_domain self:unix_dgram_socket create_socket_perms;
allow container_domain self:unix_stream_socket create_stream_socket_perms;
dontaudit container_domain self:capability2 block_suspend ;
allow container_domain self:unix_stream_socket { sendto create_stream_socket_perms };
fs_rw_onload_sockets(container_domain)
fs_fusefs_entrypoint(container_domain)
fs_fusefs_entrypoint(spc_t)
container_read_share_files(container_domain)
container_exec_share_files(container_domain)
container_use_ptys(container_domain)
container_spc_stream_connect(container_domain)
fs_dontaudit_remount_tmpfs(container_domain)
dev_dontaudit_mounton_sysfs(container_domain)
dev_dontaudit_mounton_sysfs(container_domain)
fs_mount_tmpfs(container_domain)
dev_dontaudit_mounton_sysfs(container_domain)
dev_getattr_mtrr_dev(container_domain)
dev_list_sysfs(container_domain)
dev_mounton_sysfs(container_t)
dev_read_mtrr(container_domain)
dev_read_rand(container_domain)
dev_read_sysfs(container_domain)
dev_read_urand(container_domain)
dev_rw_inherited_dri(container_domain)
dev_rw_kvm(container_domain)
dev_rwx_zero(container_domain)
dev_write_rand(container_domain)
dev_write_urand(container_domain)
allow container_domain sysfs_t:dir watch;
dontaudit container_domain container_runtime_tmpfs_t:dir read;
allow container_domain container_runtime_tmpfs_t:dir mounton;
dev_getattr_mtrr_dev(container_domain)
dev_list_sysfs(container_domain)
allow container_domain sysfs_t:dir watch;
dev_rw_kvm(container_domain)
dev_rwx_zero(container_domain)
can_exec(container_domain, container_runtime_tmpfs_t)
allow container_domain self:key manage_key_perms;
dontaudit container_domain container_domain:key search;
@ -884,10 +981,11 @@ allow container_domain self:unix_dgram_socket { sendto create_socket_perms };
allow container_domain self:passwd rootok;
allow container_domain self:filesystem associate;
allow container_domain self:netlink_kobject_uevent_socket create_socket_perms;
allow container_domain container_runtime_domain:socket_class_set { accept ioctl read getattr lock write append getopt setopt };
allow container_domain container_runtime_domain:socket_class_set { accept append getattr getopt ioctl lock map read recv_msg recvfrom send_msg sendto setopt shutdown write };
kernel_getattr_proc(container_domain)
kernel_list_all_proc(container_domain)
kernel_mounton_all_proc(container_domain)
kernel_read_all_sysctls(container_domain)
kernel_dontaudit_write_kernel_sysctl(container_domain)
kernel_read_network_state(container_domain)
@ -901,16 +999,42 @@ kernel_dontaudit_write_usermodehelper_state(container_domain)
kernel_read_irq_sysctls(container_domain)
kernel_get_sysvipc_info(container_domain)
fs_getattr_all_fs(container_domain)
fs_rw_inherited_tmpfs_files(container_domain)
fs_read_tmpfs_symlinks(container_domain)
fs_search_tmpfs(container_domain)
fs_list_hugetlbfs(container_domain)
fs_manage_hugetlbfs_files(container_domain)
fs_exec_hugetlbfs_files(container_domain)
fs_dontaudit_getattr_all_dirs(container_domain)
fs_dontaudit_getattr_all_files(container_domain)
fs_dontaudit_remount_tmpfs(container_domain)
fs_dontaudit_remount_tmpfs(container_domain)
fs_exec_fusefs_files(container_domain)
fs_exec_hugetlbfs_files(container_domain)
fs_fusefs_entrypoint(container_domain)
fs_getattr_all_fs(container_domain)
fs_list_cgroup_dirs(container_domain)
fs_list_hugetlbfs(container_domain)
fs_manage_bpf_files(container_domain)
fs_manage_fusefs_dirs(container_domain)
fs_manage_fusefs_files(container_domain)
fs_manage_fusefs_named_pipes(container_domain)
fs_manage_fusefs_named_sockets(container_domain)
fs_manage_fusefs_symlinks(container_domain)
fs_manage_hugetlbfs_files(container_domain)
fs_mount_fusefs(container_domain)
fs_unmount_fusefs(container_domain)
fs_mount_tmpfs(container_domain)
fs_unmount_tmpfs(container_domain)
fs_mount_xattr_fs(container_domain)
fs_unmount_xattr_fs(container_domain)
fs_mounton_cgroup(container_domain)
fs_mounton_fusefs(container_domain)
fs_read_cgroup_files(container_domain)
fs_read_nsfs_files(container_domain)
fs_read_tmpfs_symlinks(container_domain)
fs_remount_xattr_fs(container_domain)
fs_rw_inherited_tmpfs_files(container_domain)
fs_rw_onload_sockets(container_domain)
fs_search_tmpfs(container_domain)
fs_unmount_cgroup(container_domain)
fs_unmount_fusefs(container_domain)
fs_unmount_nsfs(container_domain)
fs_unmount_xattr_fs(container_domain)
term_use_all_inherited_terms(container_domain)
@ -934,18 +1058,6 @@ gen_require(`
type cgroup_t;
')
dev_read_sysfs(container_domain)
dev_read_mtrr(container_domain)
dev_mounton_sysfs(container_t)
fs_mounton_cgroup(container_t)
fs_unmount_cgroup(container_t)
dev_read_rand(container_domain)
dev_write_rand(container_domain)
dev_read_urand(container_domain)
dev_write_urand(container_domain)
files_read_kernel_modules(container_domain)
allow container_file_t cgroup_t:filesystem associate;
@ -991,7 +1103,7 @@ allow container_net_domain self:rawip_socket create_stream_socket_perms;
allow container_net_domain self:netlink_kobject_uevent_socket create_socket_perms;
allow container_net_domain self:netlink_xfrm_socket create_netlink_socket_perms;
allow container_domain spc_t:unix_stream_socket { read write };
kernel_unlabeled_domtrans(container_runtime_domain, spc_t)
kernel_unlabeled_entry_type(spc_t)
allow container_runtime_domain unlabeled_t:key manage_key_perms;
@ -1001,9 +1113,6 @@ gen_require(`
')
dontaudit container_domain usermodehelper_t:file write;
fs_read_cgroup_files(container_domain)
fs_list_cgroup_dirs(container_domain)
sysnet_read_config(container_domain)
allow container_domain self:cap_userns { chown dac_override fowner kill setgid setuid setpcap net_bind_service net_raw sys_chroot mknod audit_write setfcap };
@ -1031,20 +1140,6 @@ tunable_policy(`container_manage_cgroup',`
fs_manage_cgroup_files(container_domain)
')
fs_manage_fusefs_named_sockets(container_domain)
fs_manage_fusefs_named_pipes(container_domain)
fs_manage_fusefs_dirs(container_domain)
fs_manage_fusefs_files(container_domain)
fs_manage_fusefs_symlinks(container_domain)
fs_manage_fusefs_named_sockets(container_domain)
fs_manage_fusefs_named_pipes(container_domain)
fs_exec_fusefs_files(container_domain)
fs_mount_xattr_fs(container_domain)
fs_unmount_xattr_fs(container_domain)
fs_remount_xattr_fs(container_domain)
fs_mount_fusefs(container_domain)
fs_unmount_fusefs(container_domain)
fs_mounton_fusefs(container_domain)
storage_rw_fuse(container_domain)
allow container_domain fusefs_t:file { mounton execmod };
allow container_domain fusefs_t:filesystem remount;
@ -1119,6 +1214,7 @@ dev_mount_sysfs_fs(container_userns_t)
dev_mounton_sysfs(container_userns_t)
fs_mount_tmpfs(container_userns_t)
fs_unmount_tmpfs(container_userns_t)
fs_relabelfrom_tmpfs(container_userns_t)
fs_remount_cgroup(container_userns_t)
@ -1163,6 +1259,7 @@ logging_read_all_logs(container_logreader_t)
allow container_logreader_t logfile:lnk_file read_lnk_file_perms;
logging_read_audit_log(container_logreader_t)
logging_list_logs(container_logreader_t)
allow container_logreader_t container_log_t:file watch;
# Container Logwriter
container_domain_template(container_logwriter, container)
@ -1172,6 +1269,7 @@ manage_files_pattern(container_logwriter_t, logfile, logfile)
manage_dirs_pattern(container_logwriter_t, logfile, logfile)
manage_lnk_files_pattern(container_logwriter_t, logfile, logfile)
logging_manage_audit_log(container_logwriter_t)
allow container_logwriter_t container_log_t:file watch;
optional_policy(`
gen_require(`
@ -1180,6 +1278,8 @@ optional_policy(`
attribute userdomain;
')
allow userdomain container_domain:process transition;
can_exec(userdomain, container_runtime_exec_t)
container_manage_files(userdomain)
container_manage_share_dirs(userdomain)
@ -1272,6 +1372,7 @@ logging_send_syslog_msg(container_kvm_t)
optional_policy(`
qemu_entry_type(container_kvm_t)
qemu_exec(container_kvm_t)
allow container_kvm_t qemu_exec_t:file { entrypoint execute execute_no_trans getattr ioctl lock map open read };
')
manage_sock_files_pattern(container_kvm_t, container_file_t, container_file_t)
@ -1308,8 +1409,17 @@ optional_policy(`
')
tunable_policy(`container_use_devices',`
allow container_domain device_node:chr_file rw_chr_file_perms;
allow container_domain device_node:blk_file rw_blk_file_perms;
allow container_domain device_node:chr_file {rw_chr_file_perms map};
allow container_domain device_node:blk_file {rw_blk_file_perms map};
')
tunable_policy(`container_use_xserver_devices',`
dev_getattr_xserver_misc_dev(container_t)
dev_rw_xserver_misc(container_t)
')
tunable_policy(`container_use_dri_devices',`
dev_rw_dri(container_domain)
')
tunable_policy(`virt_sandbox_use_sys_admin',`
@ -1328,19 +1438,44 @@ fs_mounton_cgroup(container_engine_t)
fs_unmount_cgroup(container_engine_t)
fs_manage_cgroup_dirs(container_engine_t)
fs_manage_cgroup_files(container_engine_t)
fs_mount_tmpfs(container_engine_t)
fs_write_cgroup_files(container_engine_t)
allow container_engine_t proc_t:file mounton;
allow container_engine_t sysctl_t:file mounton;
allow container_engine_t sysfs_t:filesystem remount;
fs_remount_cgroup(container_engine_t)
fs_mount_all_fs(container_engine_t)
fs_remount_all_fs(container_engine_t)
fs_unmount_all_fs(container_engine_t)
kernel_mounton_all_sysctls(container_engine_t)
kernel_mount_proc(container_engine_t)
kernel_mounton_core_if(container_engine_t)
kernel_mounton_proc(container_engine_t)
kernel_mounton_core_if(container_engine_t)
kernel_mounton_systemd_ProtectKernelTunables(container_engine_t)
term_mount_pty_fs(container_engine_t)
term_use_generic_ptys(container_engine_t)
allow container_engine_t container_file_t:chr_file mounton;
allow container_engine_t filesystem_type:{dir file} mounton;
allow container_engine_t proc_kcore_t:file mounton;
allow container_engine_t proc_t:filesystem remount;
allow container_engine_t sysctl_t:{dir file} mounton;
allow container_engine_t fusefs_t:dir { relabelfrom relabelto };
allow container_engine_t fusefs_t:file relabelto;
allow container_engine_t kernel_t:system module_request;
allow container_engine_t null_device_t:chr_file { mounton setattr_chr_file_perms };
allow container_engine_t random_device_t:chr_file mounton;
allow container_engine_t self:netlink_tcpdiag_socket nlmsg_read;
allow container_engine_t urandom_device_t:chr_file mounton;
allow container_engine_t zero_device_t:chr_file mounton;
allow container_engine_t container_file_t:sock_file mounton;
allow container_engine_t container_runtime_tmpfs_t:dir { ioctl list_dir_perms };
allow container_engine_t devpts_t:chr_file setattr;
manage_chr_files_pattern(container_engine_t, fusefs_t, fusefs_t)
optional_policy(`
gen_require(`
type devtty_t;
')
allow container_engine_t devtty_t:chr_file mounton;
')
type kubelet_t, container_runtime_domain;
domain_type(kubelet_t)
@ -1353,12 +1488,24 @@ optional_policy(`
unconfined_domain(kubelet_t)
')
manage_chr_files_pattern(container_engine_t, fusefs_t, fusefs_t)
type kubelet_exec_t;
application_executable_file(kubelet_exec_t)
can_exec(container_runtime_t, kubelet_exec_t)
allow kubelet_t kubelet_exec_t:file entrypoint;
type kubelet_var_lib_t;
files_type(kubelet_var_lib_t)
manage_dirs_pattern(kubelet_t, kubelet_var_lib_t, kubelet_var_lib_t)
manage_files_pattern(kubelet_t, kubelet_var_lib_t, kubelet_var_lib_t)
manage_lnk_files_pattern(kubelet_t, kubelet_var_lib_t, kubelet_var_lib_t)
manage_sock_files_pattern(kubelet_t, kubelet_var_lib_t, kubelet_var_lib_t)
files_var_lib_filetrans(kubelet_t, kubelet_var_lib_t, dir, "pod-resources")
filetrans_pattern(kubelet_t, container_var_lib_t, kubelet_var_lib_t, dir, "pod-resources")
ifdef(`enable_mcs',`
init_ranged_daemon_domain(kubelet_t, kubelet_exec_t, s0 - mcs_systemhigh)
')
@ -1376,7 +1523,6 @@ optional_policy(`
gen_require(`
type sysadm_t;
role sysadm_r;
attribute userdomain;
role unconfined_r;
')
@ -1393,9 +1539,12 @@ allow container_device_t device_node:chr_file rw_chr_file_perms;
# Standard container which needs to be allowed to use any device and
# communicate with kubelet
container_domain_template(container_device_plugin, container)
typeattribute container_device_plugin_t container_net_domain;
allow container_device_plugin_t device_node:chr_file rw_chr_file_perms;
dev_rw_sysfs(container_device_plugin_t)
kernel_read_debugfs(container_device_plugin_t)
container_kubelet_stream_connect(container_device_plugin_t)
stream_connect_pattern(container_device_plugin_t, container_var_lib_t, kubelet_var_lib_t, kubelet_t)
# Standard container which needs to be allowed to use any device and
# modify kubelet configuration
@ -1411,7 +1560,7 @@ optional_policy(`
type syslogd_t;
')
allow syslogd_t container_runtime_tmpfs_t:file { read write };
allow syslogd_t container_runtime_tmpfs_t:file rw_inherited_file_perms;
logging_send_syslog_msg(container_runtime_t)
')
@ -1422,3 +1571,63 @@ manage_lnk_files_pattern(svirt_sandbox_domain, container_file_t, container_file_
manage_chr_files_pattern(svirt_sandbox_domain, container_file_t, container_file_t)
manage_blk_files_pattern(svirt_sandbox_domain, container_file_t, container_file_t)
manage_sock_files_pattern(svirt_sandbox_domain, container_file_t, container_file_t)
tunable_policy(`sshd_launch_containers',`
gen_require(`
type sshd_t;
type systemd_logind_t;
type iptables_var_run_t;
')
container_runtime_domtrans(sshd_t)
dontaudit systemd_logind_t iptables_var_run_t:dir read;
')
role container_user_r;
userdom_restricted_user_template(container_user)
userdom_manage_home_role(container_user_r, container_user_t)
allow container_user_t container_domain:process { getattr getcap getsched sigchld sigkill signal signull sigstop };
role container_user_r types container_domain;
role container_user_r types container_user_domain;
role container_user_r types container_net_domain;
role container_user_r types container_file_type;
container_runtime_run(container_user_t, container_user_r)
unconfined_role_change_to(container_user_r)
container_use_ptys(container_user_t)
fs_manage_cgroup_dirs(container_user_t)
fs_manage_cgroup_files(container_user_t)
selinux_compute_access_vector(container_user_t)
systemd_dbus_chat_hostnamed(container_user_t)
systemd_start_systemd_services(container_user_t)
allow container_runtime_t container_user_t:process transition;
allow container_runtime_t container_user_t:process2 nnp_transition;
allow container_user_t container_runtime_t:fifo_file rw_fifo_file_perms;
allow container_user_t container_file_t:chr_file manage_chr_file_perms;
allow container_user_t container_file_t:file entrypoint;
allow container_domain container_file_t:file entrypoint;
allow container_domain container_ro_file_t:file { entrypoint execmod execute execute_no_trans getattr ioctl lock map open read };
allow container_domain container_var_lib_t:file entrypoint;
allow container_domain fusefs_t:file { append create entrypoint execmod execute execute_no_trans getattr ioctl link lock map mounton open read rename setattr unlink watch watch_reads write };
allow install_t container_runtime_t:process2 { nnp_transition nosuid_transition };
corecmd_entrypoint_all_executables(container_kvm_t)
allow svirt_sandbox_domain exec_type:file { entrypoint execute execute_no_trans getattr ioctl lock map open read };
allow svirt_sandbox_domain mountpoint:file entrypoint;
tunable_policy(`deny_ptrace',`',`
allow container_domain self:process ptrace;
allow spc_t self:process ptrace;
')
# netavark needs to write to /run/sysctl.d and needs the right label for systemd to read it.
# https://issues.redhat.com/browse/RHEL-91380
files_pid_filetrans(container_runtime_t, system_conf_t, dir, "sysctl.d")

View File

@ -1,4 +1,4 @@
.TH "container_selinux" "8" "22-12-13" "container" "SELinux Policy container"
.TH "container_selinux" "8" "25-03-11" "container" "SELinux Policy container"
.SH "NAME"
container_selinux \- Security Enhanced Linux Policy for the container processes
.SH "DESCRIPTION"
@ -23,7 +23,7 @@ SELinux container policy is very flexible allowing users to setup their containe
The following process types are defined for container:
.EX
.B container_runtime_t, container_auth_t, container_userns_t, container_logreader_t, container_logwriter_t, container_kvm_t, container_init_t, container_engine_t, container_device_t, container_device_plugin_t, container_device_plugin_init_t, container_t
.B container_runtime_t, container_auth_t, container_userns_t, container_logreader_t, container_logwriter_t, container_kvm_t, container_init_t, container_engine_t, container_device_t, container_device_plugin_t, container_device_plugin_init_t, container_user_t, container_t
.EE
.PP
Note:
@ -39,6 +39,14 @@ For example one process might be launched with container_t:s0:c1,c2, and another
SELinux policy is customizable based on least access required. container policy is extremely flexible and has several booleans that allow you to manipulate the policy and run container with the tightest access possible.
.PP
If you want to allow containers to use any xserver device volume mounted into container, mostly used for GPU acceleration, you must turn on the container_use_xserver_devices boolean. Disabled by default.
.EX
.B setsebool -P container_use_xserver_devices 1
.EE
.PP
If you want to deny any process from ptracing or debugging any other processes, you must turn on the deny_ptrace boolean. Disabled by default.
@ -102,6 +110,12 @@ The following port types are defined for container:
The SELinux process type container_t can manage files labeled with the following file types. The paths listed are the default paths for these file types. Note the processes UID still need to have DAC permissions.
.br
.B bpf_t
/sys/fs/bpf
.br
.br
.B cifs_t
@ -122,16 +136,24 @@ The SELinux process type container_t can manage files labeled with the following
/var/srv/containers(/.*)?
.br
/var/lib/containerd/[^/]*/snapshots(/.*)?
.br
/var/lib/kubelet/pods(/.*)?
.br
/var/lib/kubernetes/pods(/.*)?
.br
/opt/local-path-provisioner(/.*)?
.br
/var/local-path-provisioner(/.*)?
.br
/var/lib/containers/storage/volumes/[^/]*/.*
.br
/home/[^/]+/\.local/share/containers/storage/volumes/[^/]*/.*
.br
/home/selinuxuser/\.local/share/containers/storage/volumes/[^/]*/.*
.br
.B ecryptfs_t
/home/[^/]+/\.Private(/.*)?
.br
/home/[^/]+/\.ecryptfs(/.*)?
.br
.br
@ -141,9 +163,7 @@ The SELinux process type container_t can manage files labeled with the following
.br
.B fusefs_t
/var/run/user/[0-9]+/gvfs
.br
/var/run/user/4003/gvfs
/run/user/[0-9]+/gvfs
.br
.br
@ -154,38 +174,6 @@ The SELinux process type container_t can manage files labeled with the following
/usr/lib/udev/devices/hugepages
.br
.br
.B initrc_tmp_t
.br
.B mnt_t
/mnt(/[^/]*)?
.br
/mnt(/[^/]*)?
.br
/rhev(/[^/]*)?
.br
/rhev/[^/]*/.*
.br
/media(/[^/]*)?
.br
/media(/[^/]*)?
.br
/media/\.hal-.*
.br
/var/run/media(/[^/]*)?
.br
/afs
.br
/net
.br
/misc
.br
/rhev
.br
.br
.B nfs_t
@ -209,40 +197,6 @@ The SELinux process type container_t can manage files labeled with the following
.br
/home/[^/]+/\.local/share/gnome-boxes/images(/.*)?
.br
/home/selinuxuser/\.libvirt/qemu(/.*)?
.br
/home/selinuxuser/\.cache/libvirt/qemu(/.*)?
.br
/home/selinuxuser/\.config/libvirt/qemu(/.*)?
.br
/home/selinuxuser/\.local/share/libvirt/boot(/.*)?
.br
/home/selinuxuser/\.local/share/libvirt/images(/.*)?
.br
/home/selinuxuser/\.local/share/gnome-boxes/images(/.*)?
.br
.br
.B tmp_t
/sandbox(/.*)?
.br
/tmp
.br
/usr/tmp
.br
/var/tmp
.br
/var/tmp
.br
/tmp-inst
.br
/var/tmp-inst
.br
/var/tmp/tmp-inst
.br
/var/tmp/vi\.recover
.br
.SH FILE CONTEXTS
SELinux requires files to have an extended attribute to define the file type.
@ -288,14 +242,6 @@ container policy stores data with multiple different file context types under th
.B restorecon -R -v /srv/docker
.PP
.PP
container policy stores data with multiple different file context types under the /var/lib/kubelet directory. If you would like to store the data in a different directory you can use the semanage command to create an equivalence mapping. If you wanted to store this data under the /srv directory you would execute the following command:
.PP
.B semanage fcontext -a -e /var/lib/kubelet /srv/kubelet
.br
.B restorecon -R -v /srv/kubelet
.PP
.PP
container policy stores data with multiple different file context types under the /var/lib/nerdctl directory. If you would like to store the data in a different directory you can use the semanage command to create an equivalence mapping. If you wanted to store this data under the /srv directory you would execute the following command:
.PP
@ -312,29 +258,13 @@ container policy stores data with multiple different file context types under th
.B restorecon -R -v /srv/ocid
.PP
.PP
container policy stores data with multiple different file context types under the /var/run/containerd directory. If you would like to store the data in a different directory you can use the semanage command to create an equivalence mapping. If you wanted to store this data under the /srv directory you would execute the following command:
.PP
.B semanage fcontext -a -e /var/run/containerd /srv/containerd
.br
.B restorecon -R -v /srv/containerd
.PP
.PP
container policy stores data with multiple different file context types under the /var/run/docker directory. If you would like to store the data in a different directory you can use the semanage command to create an equivalence mapping. If you wanted to store this data under the /srv directory you would execute the following command:
.PP
.B semanage fcontext -a -e /var/run/docker /srv/docker
.br
.B restorecon -R -v /srv/docker
.PP
.PP
.B STANDARD FILE CONTEXT
SELinux defines the file context types for the container, if you wanted to
store files with these types in a diffent paths, you need to execute the semanage command to specify alternate labeling and then use restorecon to put the labels on disk.
store files with these types in a different paths, you need to execute the semanage command to specify alternate labeling and then use restorecon to put the labels on disk.
.B semanage fcontext -a -t container_ro_file_t '/srv/mycontainer_content(/.*)?'
.B semanage fcontext -a -t container_var_lib_t '/srv/container/content(/.*)?'
.br
.B restorecon -R -v /srv/mycontainer_content
@ -377,7 +307,7 @@ Paths:
.br
.TP 5
Paths:
/srv/containers(/.*)?, /var/lib/origin(/.*)?, /var/lib/rkt/cas(/.*)?, /var/lib/nerdctl/[^/]*/volumes(/.*)?, /var/lib/buildkit/[^/]*/snapshots(/.*)?, /var/srv/containers(/.*)?, /var/lib/containerd/[^/]*/snapshots(/.*)?, /var/lib/kubelet/pods(/.*)?, /var/lib/kubernetes/pods(/.*)?, /var/lib/containers/storage/volumes/[^/]*/.*, /home/[^/]+/\.local/share/containers/storage/volumes/[^/]*/.*, /home/selinuxuser/\.local/share/containers/storage/volumes/[^/]*/.*
/srv/containers(/.*)?, /var/lib/origin(/.*)?, /var/lib/rkt/cas(/.*)?, /var/lib/nerdctl/[^/]*/volumes(/.*)?, /var/lib/buildkit/[^/]*/snapshots(/.*)?, /var/srv/containers(/.*)?, /var/lib/containerd/[^/]*/snapshots(/.*)?, /var/lib/kubernetes/pods(/.*)?, /opt/local-path-provisioner(/.*)?, /var/local-path-provisioner(/.*)?, /var/lib/containers/storage/volumes/[^/]*/.*, /home/[^/]+/\.local/share/containers/storage/volumes/[^/]*/.*
.EX
.PP
@ -413,7 +343,7 @@ Paths:
.br
.TP 5
Paths:
/var/log/lxc(/.*)?, /var/log/lxd(/.*)?, /var/log/pods(/.*)?, /var/log/containers(/.*)?, /var/lib/docker/containers/.*/.*\.log, /var/lib/docker-latest/containers/.*/.*\.log
/var/log/lxc(/.*)?, /var/log/lxd(/.*)?, /var/log/pods(/.*)?, /var/log/containers(/.*)?, /var/log/kube-apiserver(/.*)?, /var/lib/docker/containers/.*/.*\.log, /var/lib/docker-latest/containers/.*/.*\.log
.EX
.PP
@ -433,7 +363,7 @@ Paths:
.br
.TP 5
Paths:
/var/lib/nerdctl(/.*)?, /var/lib/docker/.*/config\.env, /var/lib/docker/init(/.*)?, /var/lib/containerd/[^/]*/sandboxes(/.*)?, /var/lib/docker/overlay(/.*)?, /var/lib/ocid/sandboxes(/.*)?, /var/lib/docker-latest/.*/config\.env, /var/lib/buildkit/runc-.*/executor(/.*?), /var/lib/docker/overlay2(/.*)?, /var/lib/kata-containers(/.*)?, /var/cache/kata-containers(/.*)?, /var/lib/containers/overlay(/.*)?, /var/lib/docker-latest/init(/.*)?, /var/lib/docker/containers/.*/hosts, /var/lib/docker/containers/.*/hostname, /var/lib/containers/overlay2(/.*)?, /var/lib/buildkit/containerd-.*(/.*?), /var/lib/docker-latest/overlay(/.*)?, /var/lib/docker-latest/overlay2(/.*)?, /var/lib/containers/overlay-images(/.*)?, /var/lib/containers/overlay-layers(/.*)?, /var/lib/docker-latest/containers/.*/hosts, /var/lib/docker-latest/containers/.*/hostname, /var/lib/containers/overlay2-images(/.*)?, /var/lib/containers/overlay2-layers(/.*)?, /var/lib/containers/storage/overlay(/.*)?, /var/lib/containers/storage/overlay2(/.*)?, /var/lib/containers/storage/overlay-images(/.*)?, /var/lib/containers/storage/overlay-layers(/.*)?, /var/lib/containers/storage/overlay2-images(/.*)?, /var/lib/containers/storage/overlay2-layers(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay2(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay-images(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay-layers(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay2-images(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay2-layers(/.*)?, /home/selinuxuser/\.local/share/containers/storage/overlay(/.*)?, /home/selinuxuser/\.local/share/containers/storage/overlay2(/.*)?, /home/selinuxuser/\.local/share/containers/storage/overlay-images(/.*)?, /home/selinuxuser/\.local/share/containers/storage/overlay-layers(/.*)?, /home/selinuxuser/\.local/share/containers/storage/overlay2-images(/.*)?, /home/selinuxuser/\.local/share/containers/storage/overlay2-layers(/.*)?
/var/lib/shared(/.*)?, /var/lib/nerdctl(/.*)?, /var/lib/docker/.*/config\.env, /var/lib/docker/init(/.*)?, /var/lib/containerd/[^/]*/sandboxes(/.*)?, /var/lib/docker/overlay(/.*)?, /var/lib/ocid/sandboxes(/.*)?, /var/lib/docker-latest/.*/config\.env, /var/lib/buildkit/runc-.*/executor(/.*?), /var/lib/docker/overlay2(/.*)?, /var/lib/kata-containers(/.*)?, /var/cache/kata-containers(/.*)?, /var/lib/containers/overlay(/.*)?, /var/lib/docker-latest/init(/.*)?, /var/lib/docker/containers/.*/hosts, /var/lib/docker/containers/.*/hostname, /var/lib/containers/overlay2(/.*)?, /var/lib/buildkit/containerd-.*(/.*?), /var/lib/docker-latest/overlay(/.*)?, /var/lib/docker-latest/overlay2(/.*)?, /var/lib/containers/overlay-images(/.*)?, /var/lib/containers/overlay-layers(/.*)?, /var/lib/docker-latest/containers/.*/hosts, /var/lib/docker-latest/containers/.*/hostname, /var/lib/containers/overlay2-images(/.*)?, /var/lib/containers/overlay2-layers(/.*)?, /var/lib/containers/storage/overlay(/.*)?, /var/lib/containers/storage/overlay2(/.*)?, /var/lib/containers/storage/artifacts(/.*)?, /var/lib/containers/storage/overlay-images(/.*)?, /var/lib/containers/storage/overlay-layers(/.*)?, /var/lib/containers/storage/overlay2-images(/.*)?, /var/lib/containers/storage/overlay2-layers(/.*)?, /home/[^/]+/\.local/share/ramalama(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay2(/.*)?, /home/[^/]+/\.local/share/containers/storage/artifacts(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay-images(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay-layers(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay2-images(/.*)?, /home/[^/]+/\.local/share/containers/storage/overlay2-layers(/.*)?
.EX
.PP
@ -445,7 +375,7 @@ Paths:
.br
.TP 5
Paths:
/usr/s?bin/lxc, /usr/s?bin/lxd, /usr/s?bin/crun, /usr/s?bin/runc, /usr/s?bin/crio.*, /usr/s?bin/lxc-.*, /usr/s?bin/lxd-.*, /usr/s?bin/ocid.*, /usr/s?bin/docker.*, /usr/s?bin/fuidshift, /usr/s?bin/kata-agent, /usr/s?bin/buildkitd.*, /usr/s?bin/containerd.*, /usr/s?bin/buildkit-runc, /usr/s?bin/docker-latest, /usr/s?bin/docker-current, /usr/local/s?bin/crun, /usr/local/s?bin/runc, /usr/local/s?bin/crio.*, /usr/local/s?bin/docker.*, /usr/local/s?bin/kata-agent, /usr/local/s?bin/buildkitd.*, /usr/local/s?bin/containerd.*, /usr/local/s?bin/buildkit-runc, /usr/lib/docker/[^/]*plugin, /usr/libexec/lxc/.*, /usr/libexec/lxd/.*, /usr/bin/container[^/]*plugin, /usr/libexec/docker/.*, /usr/local/lib/docker/[^/]*plugin, /usr/libexec/docker/docker.*, /usr/local/libexec/docker/.*, /usr/local/libexec/docker/docker.*, /usr/bin/podman, /usr/local/bin/podman, /usr/bin/rhel-push-plugin, /usr/sbin/rhel-push-plugin
/usr/s?bin/lxc, /usr/s?bin/lxd, /usr/s?bin/crun, /usr/s?bin/runc, /usr/s?bin/crio.*, /usr/s?bin/lxc-.*, /usr/s?bin/lxd-.*, /usr/s?bin/ocid.*, /usr/s?bin/buildah, /usr/s?bin/docker.*, /usr/s?bin/fuidshift, /usr/s?bin/kata-agent, /usr/s?bin/buildkitd.*, /usr/s?bin/containerd.*, /usr/s?bin/buildkit-runc, /usr/s?bin/docker-latest, /usr/s?bin/docker-current, /usr/local/s?bin/crun, /usr/local/s?bin/runc, /usr/local/s?bin/crio.*, /usr/local/s?bin/docker.*, /usr/local/s?bin/kata-agent, /usr/local/s?bin/buildkitd.*, /usr/local/s?bin/containerd.*, /usr/local/s?bin/buildkit-runc, /usr/lib/docker/[^/]*plugin, /usr/libexec/lxc/.*, /usr/libexec/lxd/.*, /usr/bin/container[^/]*plugin, /usr/libexec/docker/.*, /usr/local/lib/docker/[^/]*plugin, /usr/libexec/docker/docker.*, /usr/local/libexec/docker/.*, /usr/local/libexec/docker/docker.*, /usr/bin/podman, /usr/local/bin/podman, /usr/bin/rhel-push-plugin, /usr/sbin/rhel-push-plugin
.EX
.PP
@ -485,7 +415,7 @@ Paths:
.br
.TP 5
Paths:
/exports(/.*)?, /var/lib/cni(/.*)?, /var/lib/lxc(/.*)?, /var/lib/lxd(/.*)?, /var/lib/ocid(/.*)?, /var/lib/docker(/.*)?, /var/lib/kubelet(/.*)?, /var/lib/buildkit(/.*)?, /var/lib/registry(/.*)?, /var/lib/containerd(/.*)?, /var/lib/containers(/.*)?, /var/lib/docker-latest(/.*)?
/exports(/.*)?, /var/lib/cni(/.*)?, /var/lib/lxc(/.*)?, /var/lib/lxd(/.*)?, /var/lib/crio(/.*)?, /var/lib/ocid(/.*)?, /var/lib/docker(/.*)?, /var/lib/kubelet(/.*)?, /var/lib/buildkit(/.*)?, /var/lib/registry(/.*)?, /var/lib/containerd(/.*)?, /var/lib/containers(/.*)?, /var/cache/containers(/.*)?, /var/lib/docker-latest(/.*)?
.EX
.PP
@ -497,7 +427,7 @@ Paths:
.br
.TP 5
Paths:
/var/run/crio(/.*)?, /var/run/docker(/.*)?, /var/run/flannel(/.*)?, /var/run/buildkit(/.*)?, /var/run/containerd(/.*)?, /var/run/containers(/.*)?, /var/run/docker-client(/.*)?, /var/run/docker\.pid, /var/run/docker\.sock
/run/crio(/.*)?, /run/docker(/.*)?, /run/flannel(/.*)?, /run/buildkit(/.*)?, /run/containerd(/.*)?, /run/containers(/.*)?, /run/docker-client(/.*)?, /run/docker\.pid, /run/docker\.sock
.PP
Note: File context can be temporarily modified with the chcon command. If you want to permanently change the file context you need to use the
@ -531,4 +461,4 @@ This manual page was auto-generated using
.B "sepolicy manpage".
.SH "SEE ALSO"
selinux(8), container(8), semanage(8), restorecon(8), chcon(1), sepolicy(8), setsebool(8), container_auth_selinux(8), container_auth_selinux(8), container_device_selinux(8), container_device_selinux(8), container_device_plugin_selinux(8), container_device_plugin_selinux(8), container_device_plugin_init_selinux(8), container_device_plugin_init_selinux(8), container_engine_selinux(8), container_engine_selinux(8), container_init_selinux(8), container_init_selinux(8), container_kvm_selinux(8), container_kvm_selinux(8), container_logreader_selinux(8), container_logreader_selinux(8), container_logwriter_selinux(8), container_logwriter_selinux(8), container_runtime_selinux(8), container_runtime_selinux(8), container_userns_selinux(8), container_userns_selinux(8)
selinux(8), container(8), semanage(8), restorecon(8), chcon(1), sepolicy(8), setsebool(8), container_auth_selinux(8), container_auth_selinux(8), container_device_selinux(8), container_device_selinux(8), container_device_plugin_selinux(8), container_device_plugin_selinux(8), container_device_plugin_init_selinux(8), container_device_plugin_init_selinux(8), container_engine_selinux(8), container_engine_selinux(8), container_init_selinux(8), container_init_selinux(8), container_kvm_selinux(8), container_kvm_selinux(8), container_logreader_selinux(8), container_logreader_selinux(8), container_logwriter_selinux(8), container_logwriter_selinux(8), container_runtime_selinux(8), container_runtime_selinux(8), container_user_selinux(8), container_user_selinux(8), container_userns_selinux(8), container_userns_selinux(8)

8
container_u Normal file
View File

@ -0,0 +1,8 @@
system_r:init_t:s0 container_user_r:container_user_t:s0
system_r:local_login_t:s0 container_user_r:container_user_t:s0
system_r:remote_login_t:s0 container_user_r:container_user_t:s0
system_r:sshd_t:s0 container_user_r:container_user_t:s0
system_r:cockpit_session_t:s0 container_user_r:container_user_t:s0
system_r:crond_t:s0 container_user_r:container_user_t:s0 container_user_r:cronjob_t:s0
system_r:xdm_t:s0 container_user_r:container_user_t:s0

20
plans/main.fmf Normal file
View File

@ -0,0 +1,20 @@
discover:
how: fmf
execute:
how: tmt
prepare:
- when: distro == centos-stream or distro == rhel
how: shell
script: |
dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm --eval '%{?rhel}').noarch.rpm
dnf -y config-manager --set-enabled epel
order: 10
- when: initiator == packit
how: shell
script: |
COPR_REPO_FILE="/etc/yum.repos.d/*podman-next*.repo"
if compgen -G $COPR_REPO_FILE > /dev/null; then
sed -i -n '/^priority=/!p;$apriority=1' $COPR_REPO_FILE
fi
dnf -y upgrade --allowerasing
order: 20

View File

@ -1,13 +1,7 @@
# For automatic rebuilds in COPR
# The following tag is to get correct syntax highlighting for this file in vim text editor
# vim: syntax=spec
%global debug_package %{nil}
# container-selinux stuff (prefix with ds_ for version/release etc.)
# Some bits borrowed from the openstack-selinux package
%global selinuxtype targeted
%global moduletype services
%global modulenames container
@ -16,15 +10,37 @@
# Format must contain '$x' somewhere to do anything useful
%global _format() export %1=""; for x in %{modulenames}; do %1+=%2; %1+=" "; done;
Name: {{{ git_dir_name }}}
Epoch: 101
Version: {{{ git_dir_version }}}
Release: 1%{?dist}
License: GPLv2
URL: https://github.com/containers/container-selinux
# RHEL < 10 and Fedora < 40 use file context entries in /var/run
%if %{defined rhel} && 0%{?rhel} < 10 || %{defined fedora} && 0%{?fedora} < 40
%define legacy_var_run 1
%endif
# https://github.com/containers/container-selinux/issues/203
%if %{!defined fedora} && %{!defined rhel} || %{defined rhel} && 0%{?rhel} <= 9
%define no_user_namespace 1
%endif
# copr_build is more intuitive than copr_username
%if %{defined copr_username}
%define copr_build 1
%endif
Name: container-selinux
# Set different Epochs for copr and koji
%if %{defined copr_build}
Epoch: 102
%else
Epoch: 4
%endif
# Keep Version in upstream specfile at 0. It will be automatically set
# to the correct value by Packit for copr and koji builds.
# IGNORE this comment if you're looking at it in dist-git.
Version: 0
Release: %autorelease
License: GPL-2.0-only
URL: https://github.com/containers/%{name}
Summary: SELinux policies for container runtimes
VCS: {{{ git_dir_vcs }}}
Source: {{{ git_dir_pack }}}
Source0: %{url}/archive/v%{version}.tar.gz
BuildArch: noarch
BuildRequires: make
BuildRequires: git-core
@ -34,7 +50,8 @@ BuildRequires: selinux-policy-devel >= %_selinux_policy_version
# RE: rhbz#1195804 - ensure min NVR for selinux-policy
Requires: selinux-policy >= %_selinux_policy_version
Requires(post): selinux-policy-base >= %_selinux_policy_version
Requires(post): selinux-policy-targeted >= %_selinux_policy_version
Requires(post): selinux-policy-any >= %_selinux_policy_version
Recommends: selinux-policy-targeted >= %_selinux_policy_version
Requires(post): policycoreutils
Requires(post): libselinux-utils
Requires(post): sed
@ -48,21 +65,17 @@ Conflicts: k3s-selinux <= 0.4-1
SELinux policy modules for use with container runtimes.
%prep
{{{ git_dir_setup_macro }}}
%autosetup -Sgit %{name}-%{version}
# Remove some lines for RHEL 8 build
%if ! 0%{?fedora} && 0%{?rhel} <= 8
sed -i 's/watch watch_reads//' container.if
sed -i '/sysfs_t:dir watch/d' container.te
sed -i '/systemd_chat_resolved/d' container.te
sed -i 's/^man: install-policy/man:/' Makefile
sed -i 's/^install: man/install:/' Makefile
%if %{defined no_user_namespace}
sed -i '/user_namespace/d' container.te
%endif
sed -i 's/man: install-policy/man:/' Makefile
sed -i 's/install: man/install:/' Makefile
# https://github.com/containers/container-selinux/issues/203
%if 0%{?fedora} <= 37 || 0%{?rhel} <= 9
sed -i '/user_namespace/d' container.te
%if %{defined legacy_var_run}
sed -i 's|^/run/|/var/run/|' container.fc
%endif
%build
@ -71,12 +84,10 @@ make
%install
# install policy modules
%_format MODULES $x.pp.bz2
%{__make} DATADIR=%{buildroot}%{_datadir} install install.udica-templates
%check
%{__make} DATADIR=%{buildroot}%{_datadir} SYSCONFDIR=%{buildroot}%{_sysconfdir} install install.udica-templates install.selinux-user
%pre
%selinux_relabel_pre -s %{selinuxtype}
%selinux_relabel_pre
%post
# Install all modules in a single transaction
@ -84,21 +95,24 @@ if [ $1 -eq 1 ]; then
%{_sbindir}/setsebool -P -N virt_use_nfs=1 virt_sandbox_use_all_caps=1
fi
%_format MODULES %{_datadir}/selinux/packages/$x.pp.bz2
%{_sbindir}/semodule -n -s %{selinuxtype} -r container 2> /dev/null
%{_sbindir}/semodule -n -s %{selinuxtype} -d docker 2> /dev/null
%{_sbindir}/semodule -n -s %{selinuxtype} -d gear 2> /dev/null
%selinux_modules_install -s %{selinuxtype} $MODULES
. %{_sysconfdir}/selinux/config
%{_sbindir}/semodule -n -s ${SELINUXTYPE} -r container 2> /dev/null
%{_sbindir}/semodule -n -s ${SELINUXTYPE} -d docker 2> /dev/null
%{_sbindir}/semodule -n -s ${SELINUXTYPE} -d gear 2> /dev/null
%selinux_modules_install -s ${SELINUXTYPE} $MODULES
sed -e "\|container_file_t|h; \${x;s|container_file_t||;{g;t};a\\" -e "container_file_t" -e "}" -i /etc/selinux/${SELINUXTYPE}/contexts/customizable_types
matchpathcon -qV %{_sharedstatedir}/containers || restorecon -R %{_sharedstatedir}/containers &> /dev/null || :
%postun
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{modulenames} docker
%selinux_modules_uninstall %{modulenames} docker
fi
%posttrans
%selinux_relabel_post -s %{selinuxtype}
%selinux_relabel_post
# Empty placeholder check to silence rpmlint
%check
#define license tag if not already defined
%{!?_licensedir:%global license %doc}
@ -106,11 +120,16 @@ fi
%files
%doc README.md
%{_datadir}/selinux/*
%{_mandir}/man8/*
%dir %{_datadir}/containers/selinux
%{_datadir}/containers/selinux/contexts
%dir %{_datadir}/udica
%dir %{_datadir}/udica/templates/
%{_datadir}/udica/templates/*
# Ref: https://bugzilla.redhat.com/show_bug.cgi?id=2209120
%{_mandir}/man8/container_selinux.8.gz
%{_sysconfdir}/selinux/targeted/contexts/users/container_u
%ghost %verify(not mode) %{_selinux_store_path}/targeted/active/modules/200/%{modulenames}
%ghost %verify(not mode) %{_selinux_store_path}/mls/active/modules/200/%{modulenames}
%triggerpostun -- container-selinux < 2:2.162.1-3
if %{_sbindir}/selinuxenabled ; then
@ -119,4 +138,4 @@ if %{_sbindir}/selinuxenabled ; then
fi
%changelog
{{{ git_dir_changelog }}}
%autochangelog

14
rpm/gating.yaml Normal file
View File

@ -0,0 +1,14 @@
--- !Policy
product_versions:
- fedora-*
decision_contexts:
- bodhi_update_push_stable
- bodhi_update_push_testing
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- rhel-*
decision_context: osci_compose_gate
rules: []

17
test/main.fmf Normal file
View File

@ -0,0 +1,17 @@
require:
- attr
- bats
- container-selinux
- podman-tests
- policycoreutils
/basic_check:
summary: Run basic checks
test: |
semodule --list=full | grep container
semodule -B
rpm -Vqf /var/lib/selinux/*/active/modules/200/container
/podman_system_test:
summary: Run SELinux specific Podman system tests
test: bash ./podman-tests.sh

16
test/podman-tests.sh Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -exo pipefail
cat /etc/redhat-release
if [[ "$(id -u)" -ne 0 ]];then
echo "Please run as superuser"
exit 1
fi
# Print versions of distro and installed packages
rpm -q bats container-selinux podman podman-tests policycoreutils selinux-policy
# Run podman system tests
bats /usr/share/podman/test/system/410-selinux.bats