Skip to content

Commit 3ff70c6

Browse files
authored
minor fix (#49)
Signed-off-by: Kaizhe Huang <[email protected]>
1 parent 571bf1c commit 3ff70c6

File tree

2 files changed

+37
-14
lines changed

2 files changed

+37
-14
lines changed

generator/generator.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ func (pg *Generator) GetSecuritySpecFromPodSpec(metadata types.Metadata, namespa
363363
RunAsUser: getRunAsUser(container.SecurityContext, spec.SecurityContext),
364364
HostPorts: getHostPorts(container.Ports),
365365
ServiceAccount: getServiceAccountName(spec),
366-
VolumeMounts: getVolumeMounts(container.VolumeMounts),
366+
VolumeMounts: getContainerVolumeMounts(container.VolumeMounts),
367367
}
368368
cssList = append(cssList, csc)
369369
}
@@ -1250,7 +1250,7 @@ func getNamespace(ns string) string {
12501250
return "default"
12511251
}
12521252

1253-
func getVolumeMounts(mounts []corev1.VolumeMount) []types.VolumeMount {
1253+
func getContainerVolumeMounts(mounts []corev1.VolumeMount) []types.VolumeMount {
12541254
list := []types.VolumeMount{}
12551255

12561256
for _, vm := range mounts {

kube-psp-advisor.go

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ import (
2323
_ "k8s.io/client-go/plugin/pkg/client/auth"
2424
)
2525

26+
var (
27+
validPolicyTypes = map[string]bool{
28+
"psp": true,
29+
"opa": true,
30+
}
31+
)
32+
2633
func inspect(kubeconfig string, namespace string, excludeNamespaces []string, withReport, withGrant bool, OPAformat string, OPAdefaultRule bool) error {
2734
advisor, err := advisor.NewAdvisor(kubeconfig)
2835

@@ -140,8 +147,8 @@ func main() {
140147
var excludeNamespaces []string
141148
var podObjFilename string
142149
var pspFilename string
143-
var OPAformat string
144-
var OPAdefaultRule bool
150+
var policyType string
151+
var denyByDefault bool
145152
var logLevel string
146153
var srcYamlDir string
147154
var targetYamlDir string
@@ -168,11 +175,17 @@ func main() {
168175

169176
var inspectCmd = &cobra.Command{
170177
Use: "inspect",
171-
Short: "Inspect a live K8s Environment to generate a PodSecurityPolicy",
172-
Long: "Fetch all objects in the provided namespace to generate a Pod Security Policy",
178+
Short: "Inspect a live K8s Environment to generate a PodSecurityPolicy or OPA policy",
179+
Long: "Fetch all objects in the provided namespace to generate a Pod Security Policy or OPA policy",
180+
PreRun: func(cmd *cobra.Command, args []string) {
181+
if !validPolicyType(policyType) {
182+
log.Fatalf("invalid policy type")
183+
}
184+
},
185+
173186
Run: func(cmd *cobra.Command, args []string) {
174187

175-
err := inspect(kubeconfig, namespace, excludeNamespaces, withReport, withGrant, OPAformat, OPAdefaultRule)
188+
err := inspect(kubeconfig, namespace, excludeNamespaces, withReport, withGrant, policyType, denyByDefault)
176189

177190
if err != nil {
178191
log.Fatalf("Could not run inspect command: %v", err)
@@ -182,8 +195,8 @@ func main() {
182195

183196
var convertCmd = &cobra.Command{
184197
Use: "convert",
185-
Short: "Generate a PodSecurityPolicy from a single K8s Yaml file",
186-
Long: "Generate a PodSecurityPolicy from a single K8s Yaml file containing a pod Spec e.g. DaemonSet, Deployment, ReplicaSet, StatefulSet, ReplicationController, CronJob, Job, or Pod",
198+
Short: "Generate a PodSecurityPolicy or OPA policy from a single K8s Yaml file",
199+
Long: "Generate a PodSecurityPolicy or OPA policy from a single K8s Yaml file containing a pod Spec e.g. DaemonSet, Deployment, ReplicaSet, StatefulSet, ReplicationController, CronJob, Job, or Pod",
187200
PreRun: func(cmd *cobra.Command, args []string) {
188201
if podObjFilename == "" {
189202
log.Fatalf("--podFile must be provided")
@@ -193,10 +206,14 @@ func main() {
193206
log.Fatalf("--pspFile must be provided")
194207
}
195208

209+
if !validPolicyType(policyType) {
210+
log.Fatalf("invalid policy type")
211+
}
212+
196213
},
197214

198215
Run: func(cmd *cobra.Command, args []string) {
199-
err := convert(podObjFilename, pspFilename, OPAformat, OPAdefaultRule)
216+
err := convert(podObjFilename, pspFilename, policyType, denyByDefault)
200217
if err != nil {
201218
log.Fatalf("Could not run convert command: %v", err)
202219
}
@@ -234,13 +251,13 @@ func main() {
234251
inspectCmd.Flags().BoolVarP(&withGrant, "grant", "g", false, "(optional) return with pod security policies, roles and rolebindings")
235252
inspectCmd.Flags().StringVarP(&namespace, "namespace", "n", "", "(optional) namespace")
236253
inspectCmd.Flags().StringSliceVarP(&excludeNamespaces, "exclude-namespaces", "e", []string{}, "(optional) comma separated list of namespaces to exclude")
237-
inspectCmd.Flags().StringVarP(&OPAformat, "policy", "p", "", "set policy type. Default psp")
238-
inspectCmd.Flags().BoolVarP(&OPAdefaultRule, "OPADefaultRule", "", false, "(optional) OPA Default Rule: use this option iF OPA Default Rule is Deny ALL")
254+
inspectCmd.Flags().StringVarP(&policyType, "policy", "p", "psp", "set policy type, valid policy types: psp and opa")
255+
inspectCmd.Flags().BoolVarP(&denyByDefault, "deny-by-default", "", false, "(optional) OPA default rule: use this option if OPA default rule is Deny ALL")
239256

240257
convertCmd.Flags().StringVar(&podObjFilename, "podFile", "", "Path to a yaml file containing an object with a pod Spec")
241258
convertCmd.Flags().StringVar(&pspFilename, "pspFile", "", "Write the resulting output to this file")
242-
convertCmd.Flags().StringVarP(&OPAformat, "policy", "p", "psp", "set policy type. Default psp")
243-
convertCmd.Flags().BoolVarP(&OPAdefaultRule, "deny-by-default", "", false, "(optional) OPA Default Rule: use this option if OPA Default Rule is Deny ALL")
259+
convertCmd.Flags().StringVarP(&policyType, "policy", "p", "psp", "set policy type, valid policy types: psp and opa)")
260+
convertCmd.Flags().BoolVarP(&denyByDefault, "deny-by-default", "", false, "(optional) OPA default rule: use this option if OPA default rule is Deny ALL")
244261

245262
compareCmd.Flags().StringVar(&srcYamlDir, "sourceDir", "", "Source YAML directory to load YAMLs")
246263
compareCmd.Flags().StringVar(&targetYamlDir, "targetDir", "", "Target YAML directory to load YAMLs")
@@ -271,3 +288,9 @@ func getWorkLoadYamls(dir string) ([]string, error) {
271288

272289
return yamls, nil
273290
}
291+
292+
func validPolicyType(policyType string) bool {
293+
_, exists := validPolicyTypes[strings.ToLower(policyType)]
294+
295+
return exists
296+
}

0 commit comments

Comments
 (0)