@@ -79,6 +79,16 @@ var _ = SIGDescribe("Advanced Audit", func() {
79
79
anonymousClient , err := clientset .NewForConfig (config )
80
80
framework .ExpectNoError (err )
81
81
82
+ By ("Creating a kubernetes client that impersonates an authorized user" )
83
+ config , err = framework .LoadConfig ()
84
+ framework .ExpectNoError (err )
85
+ config .Impersonate = restclient.ImpersonationConfig {
86
+ UserName : "superman" ,
87
+ Groups : []string {"system:masters" },
88
+ }
89
+ impersonatedClient , err := clientset .NewForConfig (config )
90
+ framework .ExpectNoError (err )
91
+
82
92
testCases := []struct {
83
93
action func ()
84
94
events []utils.AuditEvent
@@ -668,6 +678,30 @@ var _ = SIGDescribe("Advanced Audit", func() {
668
678
},
669
679
},
670
680
},
681
+ // List pods as impersonated user.
682
+ {
683
+ func () {
684
+ _ , err = impersonatedClient .CoreV1 ().Pods (namespace ).List (metav1.ListOptions {})
685
+ framework .ExpectNoError (err , "failed to list pods" )
686
+ },
687
+ []utils.AuditEvent {
688
+ {
689
+ Level : auditinternal .LevelRequest ,
690
+ Stage : auditinternal .StageResponseComplete ,
691
+ RequestURI : fmt .Sprintf ("/api/v1/namespaces/%s/pods" , namespace ),
692
+ Verb : "list" ,
693
+ Code : 200 ,
694
+ User : auditTestUser ,
695
+ ImpersonatedUser : "superman" ,
696
+ ImpersonatedGroups : "system:masters" ,
697
+ Resource : "pods" ,
698
+ Namespace : namespace ,
699
+ RequestObject : false ,
700
+ ResponseObject : false ,
701
+ AuthorizeDecision : "allow" ,
702
+ },
703
+ },
704
+ },
671
705
}
672
706
673
707
// test authorizer annotations, RBAC is required.
@@ -684,17 +718,19 @@ var _ = SIGDescribe("Advanced Audit", func() {
684
718
},
685
719
[]utils.AuditEvent {
686
720
{
687
- Level : auditinternal .LevelRequest ,
688
- Stage : auditinternal .StageResponseComplete ,
689
- RequestURI : fmt .Sprintf ("/api/v1/namespaces/%s/pods/another-audit-pod" , namespace ),
690
- Verb : "get" ,
691
- Code : 403 ,
692
- User : auditTestUser ,
693
- Resource : "pods" ,
694
- Namespace : namespace ,
695
- RequestObject : false ,
696
- ResponseObject : false ,
697
- AuthorizeDecision : "forbid" ,
721
+ Level : auditinternal .LevelRequest ,
722
+ Stage : auditinternal .StageResponseComplete ,
723
+ RequestURI : fmt .Sprintf ("/api/v1/namespaces/%s/pods/another-audit-pod" , namespace ),
724
+ Verb : "get" ,
725
+ Code : 403 ,
726
+ User : auditTestUser ,
727
+ ImpersonatedUser : "system:anonymous" ,
728
+ ImpersonatedGroups : "system:unauthenticated" ,
729
+ Resource : "pods" ,
730
+ Namespace : namespace ,
731
+ RequestObject : false ,
732
+ ResponseObject : false ,
733
+ AuthorizeDecision : "forbid" ,
698
734
},
699
735
},
700
736
},
0 commit comments