From 9d54648be3f3a3d485e1e819f225fa649db62151 Mon Sep 17 00:00:00 2001 From: Akihiro Suda Date: Tue, 10 Nov 2020 14:19:35 +0900 Subject: [PATCH] ctr: add AppArmor flags e.g. ``` $ sudo ./bin/ctr run --apparmor-default-profile "cri-containerd.apparmor.d" docker.io/library/alpine:latest foo cat /proc/self/attr/current cri-containerd.apparmor.d (enforce) ``` Signed-off-by: Akihiro Suda --- cmd/ctr/commands/commands.go | 8 ++++++++ cmd/ctr/commands/run/run_unix.go | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/cmd/ctr/commands/commands.go b/cmd/ctr/commands/commands.go index 0d831f150..789300c73 100644 --- a/cmd/ctr/commands/commands.go +++ b/cmd/ctr/commands/commands.go @@ -159,6 +159,14 @@ var ( Name: "seccomp-profile", Usage: "file path to custom seccomp profile. seccomp must be set to true, before using seccomp-profile", }, + cli.StringFlag{ + Name: "apparmor-default-profile", + Usage: "enable AppArmor with the default profile with the specified name, e.g. \"cri-containerd.apparmor.d\"", + }, + cli.StringFlag{ + Name: "apparmor-profile", + Usage: "enable AppArmor with an existing custom profile", + }, } ) diff --git a/cmd/ctr/commands/run/run_unix.go b/cmd/ctr/commands/run/run_unix.go index 7ee1d9b2f..332cec140 100644 --- a/cmd/ctr/commands/run/run_unix.go +++ b/cmd/ctr/commands/run/run_unix.go @@ -27,6 +27,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/cmd/ctr/commands" + "github.com/containerd/containerd/contrib/apparmor" "github.com/containerd/containerd/contrib/nvidia" "github.com/containerd/containerd/contrib/seccomp" "github.com/containerd/containerd/oci" @@ -205,6 +206,17 @@ func NewContainer(ctx gocontext.Context, client *containerd.Client, context *cli } } + if s := context.String("apparmor-default-profile"); len(s) > 0 { + opts = append(opts, apparmor.WithDefaultProfile(s)) + } + + if s := context.String("apparmor-profile"); len(s) > 0 { + if len(context.String("apparmor-default-profile")) > 0 { + return nil, fmt.Errorf("apparmor-profile conflicts with apparmor-default-profile") + } + opts = append(opts, apparmor.WithProfile(s)) + } + if cpus := context.Float64("cpus"); cpus > 0.0 { var ( period = uint64(100000)