Skip to content

Commit 305184f

Browse files
LinuxContainerSecurityContext field apparmor_profile has been deprecated in favor of the newer structured apparmor field.
Introduce new tests for new field Apparmor alongside the old ApparmorProfile Signed-off-by: roman-kiselenko <[email protected]>
1 parent be631da commit 305184f

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

Diff for: pkg/validate/apparmor_linux.go

+34-7
Original file line numberDiff line numberDiff line change
@@ -82,37 +82,64 @@ var _ = framework.KubeDescribe("AppArmor", func() {
8282
})
8383

8484
It("should fail with an unloaded profile", func() {
85-
profile := apparmorProfileNamePrefix + "non-existent-profile"
85+
profile := &runtimeapi.LinuxContainerSecurityContext{
86+
ApparmorProfile: apparmorProfileNamePrefix + "non-existent-profile",
87+
}
8688
containerID := createContainerWithAppArmor(rc, ic, sandboxID, sandboxConfig, profile, false)
8789
Expect(containerID).To(BeEmpty())
8890
})
8991

9092
It("should enforce a profile blocking writes", func() {
91-
profile := apparmorProfileNamePrefix + "cri-validate-apparmor-test-deny-write"
93+
profile := &runtimeapi.LinuxContainerSecurityContext{
94+
ApparmorProfile: apparmorProfileNamePrefix + "cri-validate-apparmor-test-deny-write",
95+
}
9296
containerID := createContainerWithAppArmor(rc, ic, sandboxID, sandboxConfig, profile, true)
9397
checkContainerApparmor(rc, containerID, false)
9498
})
9599

96100
It("should enforce a permissive profile", func() {
97-
profile := apparmorProfileNamePrefix + "cri-validate-apparmor-test-audit-write"
101+
profile := &runtimeapi.LinuxContainerSecurityContext{
102+
ApparmorProfile: apparmorProfileNamePrefix + "cri-validate-apparmor-test-audit-write",
103+
}
98104
containerID := createContainerWithAppArmor(rc, ic, sandboxID, sandboxConfig, profile, true)
99105
checkContainerApparmor(rc, containerID, true)
100106
})
107+
108+
It("should work with another field", func() {
109+
profile := &runtimeapi.LinuxContainerSecurityContext{
110+
Apparmor: &runtimeapi.SecurityProfile{
111+
ProfileType: runtimeapi.SecurityProfile_Localhost,
112+
LocalhostRef: apparmorProfileNamePrefix + "cri-validate-apparmor-test-deny-write",
113+
},
114+
}
115+
containerID := createContainerWithAppArmor(rc, ic, sandboxID, sandboxConfig, profile, true)
116+
Expect(containerID).To(BeEmpty())
117+
})
118+
119+
It("should work with different fields", func() {
120+
profile := &runtimeapi.LinuxContainerSecurityContext{
121+
ApparmorProfile: apparmorProfileNamePrefix + "non-existent-profile",
122+
Apparmor: &runtimeapi.SecurityProfile{
123+
ProfileType: runtimeapi.SecurityProfile_Localhost,
124+
LocalhostRef: apparmorProfileNamePrefix + "cri-validate-apparmor-test-deny-write",
125+
},
126+
}
127+
containerID := createContainerWithAppArmor(rc, ic, sandboxID, sandboxConfig, profile, true)
128+
Expect(containerID).To(BeEmpty())
129+
})
101130
})
102131
}
103132
})
104133

105-
func createContainerWithAppArmor(rc internalapi.RuntimeService, ic internalapi.ImageManagerService, sandboxID string, sandboxConfig *runtimeapi.PodSandboxConfig, profile string, shouldSucceed bool) string {
134+
func createContainerWithAppArmor(rc internalapi.RuntimeService, ic internalapi.ImageManagerService, sandboxID string, sandboxConfig *runtimeapi.PodSandboxConfig, profile *runtimeapi.LinuxContainerSecurityContext, shouldSucceed bool) string {
106135
By("create a container with apparmor")
107136
containerName := "apparmor-test-" + framework.NewUUID()
108137
containerConfig := &runtimeapi.ContainerConfig{
109138
Metadata: framework.BuildContainerMetadata(containerName, framework.DefaultAttempt),
110139
Image: &runtimeapi.ImageSpec{Image: framework.TestContext.TestImageList.DefaultTestContainerImage},
111140
Command: []string{"touch", "/tmp/foo"},
112141
Linux: &runtimeapi.LinuxContainerConfig{
113-
SecurityContext: &runtimeapi.LinuxContainerSecurityContext{
114-
ApparmorProfile: profile,
115-
},
142+
SecurityContext: profile,
116143
},
117144
}
118145

0 commit comments

Comments
 (0)