@@ -150,18 +150,22 @@ delete_pods() {
150150 local encrypted_pod_name=$( esudo kubectl get pod -o wide | grep encrypted-image-tests | awk ' {print $1;}' || true)
151151 local unencrypted_pod_name=$( esudo kubectl get pod -o wide | grep unencrypted-image-tests | awk ' {print $1;}' || true)
152152 local encrypted_pod_name_es=$( esudo kubectl get pod -o wide | grep encrypted-image-tests-es | awk ' {print $1;}' || true)
153+ local signed_pod_name=$( esudo kubectl get pod -o wide | grep signed-image-tests | awk ' {print $1;}' || true)
153154
154- # Delete both encrypted and unencrypted pods
155+ # Delete encrypted, unencrypted, and signed pods
155156 esudo kubectl delete -f \
156157 " ${TEST_DIR} /unencrypted-image-tests.yaml" 2> /dev/null || true
157158 esudo kubectl delete -f \
158159 " ${TEST_DIR} /encrypted-image-tests.yaml" 2> /dev/null || true
159160 esudo kubectl delete -f \
160161 " ${TEST_DIR} /encrypted-image-tests-es.yaml" 2> /dev/null || true
161-
162+ esudo kubectl delete -f \
163+ " ${TEST_DIR} /signed-image-tests.yaml" 2> /dev/null || true
164+
162165 [ -z " ${encrypted_pod_name} " ] || (kubernetes_wait_for_pod_delete_state " ${encrypted_pod_name} " || true)
163166 [ -z " ${unencrypted_pod_name} " ] || (kubernetes_wait_for_pod_delete_state " ${unencrypted_pod_name} " || true)
164167 [ -z " ${encrypted_pod_name_es} " ] || (kubernetes_wait_for_pod_delete_state " ${encrypted_pod_name_es} " || true)
168+ [ -z " ${signed_pod_name} " ] || (kubernetes_wait_for_pod_delete_state " ${signed_pod_name} " || true)
165169}
166170
167171run_kbs () {
@@ -177,6 +181,11 @@ run_kbs() {
177181
178182 pushd simple-kbs
179183 git checkout -b " branch_${simple_kbs_tag} " " ${simple_kbs_tag} "
184+
185+ # copy resources
186+ cp ${TESTS_REPO_DIR} /integration/kubernetes/confidential/fixtures/policy.json resources/
187+ cp ${TESTS_REPO_DIR} /integration/kubernetes/confidential/fixtures/cosign.pub resources/
188+
180189 esudo docker-compose build
181190
182191 esudo docker-compose up -d
@@ -315,6 +324,7 @@ setup_file() {
315324
316325 generate_service_yaml " unencrypted-image-tests" " ${IMAGE_REPO} :unencrypted"
317326 generate_service_yaml " encrypted-image-tests" " ${IMAGE_REPO} :encrypted"
327+ generate_service_yaml " signed-image-tests" " quay.io/kata-containers/confidential-containers:cosign-signed"
318328
319329 # SEV-ES policy is 7:
320330 # - NODBG (1): Debugging of the guest is disallowed when set
@@ -339,10 +349,24 @@ setup() {
339349EOF
340350}
341351
352+ setup_cosign_signatures_files () {
353+ mysql -u${KBS_DB_USER} -p${KBS_DB_PW} -h ${KBS_DB_HOST} -D ${KBS_DB} << EOF
354+ INSERT INTO secrets VALUES (10, 'key_id1', '${ENCRYPTION_KEY} ', 10);
355+ INSERT INTO keysets VALUES (10, 'KEYSET-1', '["key_id1"]', 10);
356+ # see https://github.com/confidential-containers/simple-kbs/blob/8507253e9060fb081fd1eac7bf2841ebf02c0847/db/db-mysql.sql#L140
357+ # INSERT INTO resources VALUES (10, 0, resource_type, resource_path, 10);
358+ INSERT INTO resources SET resource_type="Policy", resource_path="policy.json";
359+ INSERT INTO resources SET resource_type="Cosign Key", resource_path="cosign.pub";
360+ EOF
361+ }
362+
342363@test " $test_tag Test SEV unencrypted container launch success" {
343364 # Turn off pre-attestation. It is not necessary for an unencrypted image.
344365 esudo sed -i ' s/guest_pre_attestation = true/guest_pre_attestation = false/g' ${SEV_CONFIG}
345366
367+ # Turn off signature verification
368+ esudo sed -i ' s/agent.enable_signature_verification=true/agent.enable_signature_verification=false/g' ${SEV_CONFIG}
369+
346370 # Start the service/deployment/pod
347371 esudo kubectl apply -f " ${TEST_DIR} /unencrypted-image-tests.yaml"
348372
516540
517541
518542
543+ @test " $test_tag Test signed image with no required measurement" {
544+ # Add resource files to
545+ setup_cosign_signatures_files
546+
547+ # change kernel command line for signature validation
548+ esudo sed -i ' s/agent.enable_signature_verification=false/agent.enable_signature_verification=true/g' ${SEV_CONFIG}
549+
550+ # Start the service/deployment/pod
551+
552+ esudo kubectl apply -f " ${TEST_DIR} /signed-image-tests.yaml"
553+
554+ # Retrieve pod name, wait for it to come up, retrieve pod ip
555+ pod_name=$( esudo kubectl get pod -o wide | grep signed-image-tests | awk ' {print $1;}' )
556+ kubernetes_wait_for_pod_ready_state " $pod_name " 20
557+ pod_ip=$( esudo kubectl get pod -o wide | grep signed-image-tests | awk ' {print $6;}' )
558+
559+ print_service_info
560+ }
561+
519562teardown_file () {
520563 echo " ###############################################################################"
521564 echo -e " TEARDOWN - STARTED\n"
0 commit comments