File redmine.apparmor of Package redmine

# This AppArmor profile is part of the redmine package
# Georg Pfuetzenreuter <mail+apparmor@georg-pfuetzenreuter.net>

abi <abi/3.0>,

include <tunables/global>

@{RM_BASE}=__BASE__
@{RM_RUBY_SUFFIX}=__RUBY_SUFFIX__
@{RM_RUBY_VERSION}=__RUBY_VERSION__

profile redmine flags=(attach_disconnected) {
  include <abstractions/base>
  include <abstractions/fonts>
  include <abstractions/openssl>
  include <abstractions/redmine>

  /dev/tty rw,

  owner /proc/@{pid}/task/*/comm rw,

  /usr/bin/bash Cx -> &redmine//bash,
  /usr/bin/gs.bin Cx -> &redmine//ghostscript,
  /usr/bin/magick Cx -> &redmine//magick,
  /usr/lib/git/git Cx -> &redmine//git,

  /bin/sh Cx -> bash,
  /usr/bin/convert Cx -> magick,
  /usr/bin/git Cx -> git,
  /usr/bin/gs Cx -> ghostscript,

  /usr/bin/puma.@{RM_RUBY_SUFFIX}-[0-9].[0-9].[0-9] r,
  /usr/bin/ruby.@{RM_RUBY_SUFFIX} ix,
  /run/redmine/puma.pid rw,

  /etc/redmine/puma.rb r,
  @{RM_BASE}/app/views/*/*.{api.rsb,builder} r,
  @{RM_BASE}/config.ru r,
  @{RM_BASE}/db/migrate/ r,
  @{RM_BASE}/public/assets/**.{css,js{,.map},gif,ico,png,svg,ttf,woff,woff2} r,
  @{RM_BASE}/public/favicon.ico r,
  @{RM_BASE}/public/help/*.css r,
  @{RM_BASE}/public/help/{*/,}*.html r,
  @{RM_BASE}/public/{404,500}.html r,

  owner @{RM_BASE}/tmp/cache/**.stable r,
  owner @{RM_BASE}/tmp/cache/*/*/.permissions_check.* rw,
  owner @{RM_BASE}/tmp/cache/*/*/i18n%[0-9][A-Z]languages_options%[0-9][A-Z][0-9].[0-9].[0-9].stable rw,
  owner @{RM_BASE}/tmp/cache/*/*/{formatted_text,views}* rw,
  owner @{RM_BASE}/tmp/cache/*/{,*/} rw,
  owner @{RM_BASE}/tmp/cache/.formatted_text* rw,
  owner @{RM_BASE}/tmp/cache/.i18n[0-9][A-Z]languages_options[0-9][A-Z][0-9].[0-9].[0-9].stable20[2-3][0-9][0-9][0-9][0-9][0-9]-*-* rw,
  owner @{RM_BASE}/tmp/cache/.views* rw,
  owner @{RM_BASE}/tmp/{cache,pids}/ rw,
  owner @{RM_BASE}/tmp/thumbnails/ r,
  owner @{RM_BASE}/tmp/thumbnails/*.thumb rw,

  owner /tmp/0.* rw,
  owner /tmp/RackMultipart* rw,
  owner /tmp/mini_magick*-*-*.png rw,
  owner /tmp/puma2[0-9][0-9][0-9][0-9][0-9][0-9][0-9]-*-* rw,

  owner /var/lib/redmine/files/** rw,

  # repository browser, aligns with the git subprofile
  /srv/git/*.git/** r,

  # ImageMagick, aligns with the magick subprofile
  /etc/ImageMagick-7-SUSE/*.xml r,


  # plugin additions
  include <redmine.d>
  # administrator additions
  include if exists <local/redmine>


  profile bash flags=(attach_disconnected) {
    include <abstractions/base>
    include <abstractions/bash>
    include <abstractions/consoles>
    include <abstractions/nameservice>

    /usr/bin/bash mr,
    /usr/bin/gs.bin Px -> redmine//ghostscript,
    /usr/bin/magick Px -> redmine//magick,
    /usr/lib/git/git Px -> redmine//git,

    /var/log/redmine/production.scm.stderr.log rw,

  }


  profile git flags=(attach_disconnected) {
    include <abstractions/base>

    /usr/lib/git/git mr,

    deny network,

    # repository browser
    /srv/git/*.git/** r,

  }


  profile ghostscript flags=(attach_disconnected) {
    include <abstractions/base>

    /usr/bin/gs.bin mr,

    network inet stream,
    network inet6 stream,
    unix (receive, send),

    /proc/sys/crypto/fips_enabled r,

    /usr/share/crypto-policies/DEFAULT/gnutls.txt r,

  }


  profile magick flags=(attach_disconnected) {
    include <abstractions/base>
    include <abstractions/fonts>

    /usr/bin/magick mr,

    /etc/ImageMagick-7-SUSE/*.xml r,

    owner /tmp/magick-* rw,
    owner /tmp/mini_magick*-*-*.png rw,
    owner /var/lib/redmine/files/** rw,
    owner @{RM_BASE}/tmp/thumbnails/*.thumb rw,

    deny network inet stream,
    deny network inet6 stream,

  }

}


profile redmine-sidekiq flags=(attach_disconnected) {
  include <abstractions/base>
  include <abstractions/openssl>
  include <abstractions/redmine>
  # these ruby abstractions are unfortunately pretty useless on openSUSE, but better than nothing
  include <abstractions/ruby>

  network inet dgram,
  network inet stream,
  network inet6 dgram,
  network inet6 stream,
  unix (receive, send) type="dgram" addr=auto,
  unix (receive, send) type="stream",

  /etc/hosts r,
  /etc/nsswitch.conf r,
  /etc/services r,

  owner /proc/@{pid}/status r,
  owner /proc/@{pid}/task/*/comm rw,

  /usr/bin/sidekiq.@{RM_RUBY_SUFFIX}-[0-9].[0-9].[0-9] r,

  /usr/lib64/ruby/@{RM_RUBY_VERSION}/**.rb r,
  /usr/lib64/ruby/@{RM_RUBY_VERSION}/x86_64-linux-gnu/ r,
  /usr/lib64/ruby/@{RM_RUBY_VERSION}/x86_64-linux-gnu/**.so mr,
  /usr/lib64/ruby/gems/@{RM_RUBY_VERSION}/extensions/x86_64-linux/@{RM_RUBY_VERSION}/*/ r,
  /usr/lib64/ruby/gems/@{RM_RUBY_VERSION}/gems/*/{,**{/,.rb}} r,
  /usr/lib64/ruby/gems/@{RM_RUBY_VERSION}/gems/active*/lib/*/locale/*.yml r,
  /usr/lib64/ruby/gems/@{RM_RUBY_VERSION}/gems/sidekiq-[0-9].[0-9].[0-9]/bin/sidekiq r,

  /var/lib/ca-certificates/ca-bundle.pem r,

  @{RM_BASE}/lib/redmine/scm/adapters/*/ r,
  @{RM_BASE}/lib/redmine/views/builders/{,*.rb} r,

  # plugin additions
  include <redmine.d>

  owner /tmp/bundler*/ rw,

}
openSUSE Build Service is sponsored by