Commit fc8736fd authored by Pengfei Ni's avatar Pengfei Ni

Admit NoNewPrivs for remote and rkt runtimes

parent 6368c1fc
...@@ -187,45 +187,34 @@ func (a *noNewPrivsAdmitHandler) Admit(attrs *PodAdmitAttributes) PodAdmitResult ...@@ -187,45 +187,34 @@ func (a *noNewPrivsAdmitHandler) Admit(attrs *PodAdmitAttributes) PodAdmitResult
return PodAdmitResult{Admit: true} return PodAdmitResult{Admit: true}
} }
// Always admit for remote runtime. // Always admit runtimes except docker.
if a.Runtime.Type() == kubetypes.RemoteContainerRuntime { if a.Runtime.Type() != kubetypes.DockerContainerRuntime {
return PodAdmitResult{Admit: true} return PodAdmitResult{Admit: true}
} }
// Make sure it is either docker or rkt runtimes. // Make sure docker api version is valid.
if a.Runtime.Type() != kubetypes.DockerContainerRuntime && a.Runtime.Type() != kubetypes.RktContainerRuntime { rversion, err := a.Runtime.APIVersion()
if err != nil {
return PodAdmitResult{ return PodAdmitResult{
Admit: false, Admit: false,
Reason: "NoNewPrivs", Reason: "NoNewPrivs",
Message: fmt.Sprintf("Cannot enforce NoNewPrivs: %s runtime not supported", a.Runtime.Type()), Message: fmt.Sprintf("Cannot enforce NoNewPrivs: %v", err),
} }
} }
v, err := rversion.Compare("1.23.0")
if a.Runtime.Type() == kubetypes.DockerContainerRuntime { if err != nil {
// Make sure docker api version is valid. return PodAdmitResult{
rversion, err := a.Runtime.APIVersion() Admit: false,
if err != nil { Reason: "NoNewPrivs",
return PodAdmitResult{ Message: fmt.Sprintf("Cannot enforce NoNewPrivs: %v", err),
Admit: false,
Reason: "NoNewPrivs",
Message: fmt.Sprintf("Cannot enforce NoNewPrivs: %v", err),
}
}
v, err := rversion.Compare("1.23.0")
if err != nil {
return PodAdmitResult{
Admit: false,
Reason: "NoNewPrivs",
Message: fmt.Sprintf("Cannot enforce NoNewPrivs: %v", err),
}
} }
// If the version is less than 1.23 it will return -1 above. }
if v == -1 { // If the version is less than 1.23 it will return -1 above.
return PodAdmitResult{ if v == -1 {
Admit: false, return PodAdmitResult{
Reason: "NoNewPrivs", Admit: false,
Message: fmt.Sprintf("Cannot enforce NoNewPrivs: docker runtime API version %q must be greater than or equal to 1.23", rversion.String()), Reason: "NoNewPrivs",
} Message: fmt.Sprintf("Cannot enforce NoNewPrivs: docker runtime API version %q must be greater than or equal to 1.23", rversion.String()),
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment