Skip to content

Commit 92f4bd7

Browse files
Merge pull request #483 from fmount/scc_dbsync
Do not run db-sync as root
2 parents 973d64f + f012ff8 commit 92f4bd7

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

pkg/glance/const.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,14 @@ const (
4646
// PvcImageConv is used to define a PVC mounted for image conversion purposes
4747
// when Ceph is detected as a backend
4848
PvcImageConv PvcType = "imageConv"
49-
5049
// GlancePublicPort -
5150
GlancePublicPort int32 = 9292
5251
// GlanceInternalPort -
5352
GlanceInternalPort int32 = 9292
54-
53+
// GlanceUID - https://github.com/openstack/kolla/blob/master/kolla/common/users.py
54+
GlanceUID int64 = 42415
55+
// GlanceGid - https://github.com/openstack/kolla/blob/master/kolla/common/users.py
56+
GlanceGID int64 = 42415
5557
// DefaultsConfigFileName -
5658
DefaultsConfigFileName = "00-config.conf"
5759
// CustomConfigFileName -
@@ -90,6 +92,9 @@ const (
9092
CachePruner CronJobType = "pruner"
9193
//ImageCacheDir -
9294
ImageCacheDir = "/var/lib/glance/image-cache"
95+
96+
// GlanceDBSyncCommand -
97+
GlanceDBSyncCommand = "/usr/local/bin/kolla_start"
9398
// GlanceManage base command (required for DBPurge)
9499
GlanceManage = "/usr/bin/glance-manage"
95100
// GlanceCacheCleaner -

pkg/glance/dbsync.go

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,18 @@ package glance
1717

1818
import (
1919
glancev1 "github.com/openstack-k8s-operators/glance-operator/api/v1beta1"
20-
2120
"github.com/openstack-k8s-operators/lib-common/modules/common/env"
2221
batchv1 "k8s.io/api/batch/v1"
2322
corev1 "k8s.io/api/core/v1"
2423
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2524
)
2625

27-
const (
28-
// DBSyncCommand -
29-
DBSyncCommand = "/usr/local/bin/kolla_set_configs && /usr/local/bin/kolla_start"
30-
)
31-
3226
// DbSyncJob func
3327
func DbSyncJob(
3428
instance *glancev1.Glance,
3529
labels map[string]string,
3630
annotations map[string]string,
3731
) *batchv1.Job {
38-
runAsUser := int64(0)
3932
var config0644AccessMode int32 = 0644
4033

4134
// Unlike the individual glanceAPI services, the DbSyncJob doesn't need a
@@ -104,7 +97,7 @@ func DbSyncJob(
10497
}
10598
}
10699

107-
args := []string{"-c", DBSyncCommand}
100+
args := []string{"-c", GlanceDBSyncCommand}
108101
envVars := map[string]env.Setter{}
109102
envVars["KOLLA_CONFIG_STRATEGY"] = env.SetValue("COPY_ALWAYS")
110103
envVars["KOLLA_BOOTSTRAP"] = env.SetValue("true")
@@ -129,13 +122,11 @@ func DbSyncJob(
129122
Command: []string{
130123
"/bin/bash",
131124
},
132-
Args: args,
133-
Image: instance.Spec.ContainerImage,
134-
SecurityContext: &corev1.SecurityContext{
135-
RunAsUser: &runAsUser,
136-
},
137-
Env: env.MergeEnvs([]corev1.EnvVar{}, envVars),
138-
VolumeMounts: dbSyncMounts,
125+
Args: args,
126+
Image: instance.Spec.ContainerImage,
127+
SecurityContext: glanceSecurityContext(),
128+
Env: env.MergeEnvs([]corev1.EnvVar{}, envVars),
129+
VolumeMounts: dbSyncMounts,
139130
},
140131
},
141132
},

pkg/glance/funcs.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package glance
22

33
import (
44
glancev1 "github.com/openstack-k8s-operators/glance-operator/api/v1beta1"
5+
corev1 "k8s.io/api/core/v1"
56
"sigs.k8s.io/controller-runtime/pkg/client"
67
"strings"
78
)
@@ -53,3 +54,22 @@ func GetGlanceAPIName(name string) string {
5354
}
5455
return api
5556
}
57+
58+
// glanceSecurityContext - currently used to make sure we don't run db-sync as
59+
// root user
60+
func glanceSecurityContext() *corev1.SecurityContext {
61+
trueVal := true
62+
runAsUser := int64(GlanceUID)
63+
runAsGroup := int64(GlanceGID)
64+
65+
return &corev1.SecurityContext{
66+
RunAsUser: &runAsUser,
67+
RunAsGroup: &runAsGroup,
68+
RunAsNonRoot: &trueVal,
69+
Capabilities: &corev1.Capabilities{
70+
Drop: []corev1.Capability{
71+
"MKNOD",
72+
},
73+
},
74+
}
75+
}

0 commit comments

Comments
 (0)