@@ -908,6 +908,27 @@ func TestNodeRestrictionServiceAccountAudience(t *testing.T) {
908
908
}, metav1.CreateOptions {})
909
909
checkNilError (t , err )
910
910
911
+ _ , err = superuserClient .CoreV1 ().PersistentVolumeClaims ("ns" ).Create (context .TODO (), & corev1.PersistentVolumeClaim {
912
+ ObjectMeta : metav1.ObjectMeta {Name : "mypvc-azurefile" },
913
+ Spec : corev1.PersistentVolumeClaimSpec {
914
+ AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadOnlyMany },
915
+ Resources : corev1.VolumeResourceRequirements {Requests : corev1.ResourceList {corev1 .ResourceStorage : resource .MustParse ("1" )}},
916
+ VolumeName : "mypv-azurefile" ,
917
+ },
918
+ }, metav1.CreateOptions {})
919
+ checkNilError (t , err )
920
+
921
+ _ , err = superuserClient .CoreV1 ().PersistentVolumes ().Create (context .TODO (), & corev1.PersistentVolume {
922
+ ObjectMeta : metav1.ObjectMeta {Name : "mypv-azurefile" },
923
+ Spec : corev1.PersistentVolumeSpec {
924
+ AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadOnlyMany },
925
+ Capacity : corev1.ResourceList {corev1 .ResourceStorage : resource .MustParse ("1" )},
926
+ ClaimRef : & corev1.ObjectReference {Namespace : "ns" , Name : "mypvc-azurefile" },
927
+ PersistentVolumeSource : corev1.PersistentVolumeSource {AzureFile : & corev1.AzureFilePersistentVolumeSource {ShareName : "share" , SecretName : "secret" }},
928
+ },
929
+ }, metav1.CreateOptions {})
930
+ checkNilError (t , err )
931
+
911
932
node1Client , _ := clientsetForToken (tokenNode1 , clientConfig )
912
933
createNode (t , node1Client , "node1" )
913
934
createDefaultServiceAccount (t , superuserClient )
@@ -934,12 +955,12 @@ func TestNodeRestrictionServiceAccountAudience(t *testing.T) {
934
955
})
935
956
936
957
t .Run ("pod --> csi --> driver --> tokenrequest with audience works" , func (t * testing.T ) {
937
- createCSIDriver (t , superuserClient , "csidriver-audience" )
958
+ createCSIDriver (t , superuserClient , "csidriver-audience" , "com.example.csi.mydriver" )
938
959
csiDriverVolumeSource := & corev1.CSIVolumeSource {Driver : "com.example.csi.mydriver" }
939
960
pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {CSI : csiDriverVolumeSource }}})
940
961
expectAllowed (t , createTokenRequest (node1Client , pod .UID , "csidriver-audience" ))
941
962
deletePod (t , superuserClient , "pod1" )
942
- deleteCSIDriver (t , superuserClient )
963
+ deleteCSIDriver (t , superuserClient , "com.example.csi.mydriver" )
943
964
})
944
965
945
966
t .Run ("pod --> pvc --> pv --> csi --> driver --> tokenrequest with audience forbidden - CSI driver not found" , func (t * testing.T ) {
@@ -950,21 +971,21 @@ func TestNodeRestrictionServiceAccountAudience(t *testing.T) {
950
971
})
951
972
952
973
t .Run ("pod --> pvc --> pv --> csi --> driver --> tokenrequest with audience forbidden - pvc not found" , func (t * testing.T ) {
953
- createCSIDriver (t , superuserClient , "pvcnotfound-audience" )
974
+ createCSIDriver (t , superuserClient , "pvcnotfound-audience" , "com.example.csi.mydriver" )
954
975
persistentVolumeClaimVolumeSource := & corev1.PersistentVolumeClaimVolumeSource {ClaimName : "mypvc1" }
955
976
pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {PersistentVolumeClaim : persistentVolumeClaimVolumeSource }}})
956
977
expectedForbiddenMessage (t , createTokenRequest (node1Client , pod .UID , "pvcnotfound-audience" ), `error validating audience "pvcnotfound-audience": persistentvolumeclaim "mypvc1" not found` )
957
978
deletePod (t , superuserClient , "pod1" )
958
- deleteCSIDriver (t , superuserClient )
979
+ deleteCSIDriver (t , superuserClient , "com.example.csi.mydriver" )
959
980
})
960
981
961
982
t .Run ("pod --> pvc --> pv --> csi --> driver --> tokenrequest with audience works" , func (t * testing.T ) {
962
- createCSIDriver (t , superuserClient , "pvccsidriver-audience" )
983
+ createCSIDriver (t , superuserClient , "pvccsidriver-audience" , "com.example.csi.mydriver" )
963
984
persistentVolumeClaimVolumeSource := & corev1.PersistentVolumeClaimVolumeSource {ClaimName : "mypvc" }
964
985
pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {PersistentVolumeClaim : persistentVolumeClaimVolumeSource }}})
965
986
expectAllowed (t , createTokenRequest (node1Client , pod .UID , "pvccsidriver-audience" ))
966
987
deletePod (t , superuserClient , "pod1" )
967
- deleteCSIDriver (t , superuserClient )
988
+ deleteCSIDriver (t , superuserClient , "com.example.csi.mydriver" )
968
989
})
969
990
970
991
t .Run ("pod --> ephemeral --> pvc --> pv --> csi --> driver --> tokenrequest with audience forbidden - CSI driver not found" , func (t * testing.T ) {
@@ -980,7 +1001,7 @@ func TestNodeRestrictionServiceAccountAudience(t *testing.T) {
980
1001
})
981
1002
982
1003
t .Run ("pod --> ephemeral --> pvc --> pv --> csi --> driver --> tokenrequest with audience works" , func (t * testing.T ) {
983
- createCSIDriver (t , superuserClient , "ephemeralcsidriver-audience" )
1004
+ createCSIDriver (t , superuserClient , "ephemeralcsidriver-audience" , "com.example.csi.mydriver" )
984
1005
ephemeralVolumeSource := & corev1.EphemeralVolumeSource {VolumeClaimTemplate : & corev1.PersistentVolumeClaimTemplate {
985
1006
Spec : corev1.PersistentVolumeClaimSpec {
986
1007
AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadOnlyMany },
@@ -990,28 +1011,28 @@ func TestNodeRestrictionServiceAccountAudience(t *testing.T) {
990
1011
pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {Ephemeral : ephemeralVolumeSource }}})
991
1012
expectAllowed (t , createTokenRequest (node1Client , pod .UID , "ephemeralcsidriver-audience" ))
992
1013
deletePod (t , superuserClient , "pod1" )
993
- deleteCSIDriver (t , superuserClient )
1014
+ deleteCSIDriver (t , superuserClient , "com.example.csi.mydriver" )
994
1015
})
995
1016
996
1017
t .Run ("csidriver exists but tokenrequest audience not found should be forbidden" , func (t * testing.T ) {
997
- createCSIDriver (t , superuserClient , "csidriver-audience" )
1018
+ createCSIDriver (t , superuserClient , "csidriver-audience" , "com.example.csi.mydriver" )
998
1019
pod := createPod (t , superuserClient , nil )
999
1020
expectedForbiddenMessage (t , createTokenRequest (node1Client , pod .UID , "csidriver-audience-not-found" ), `audience "csidriver-audience-not-found" not found in pod spec volume` )
1000
1021
deletePod (t , superuserClient , "pod1" )
1001
- deleteCSIDriver (t , superuserClient )
1022
+ deleteCSIDriver (t , superuserClient , "com.example.csi.mydriver" )
1002
1023
})
1003
1024
1004
1025
t .Run ("pvc and csidriver exists but tokenrequest audience not found should be forbidden" , func (t * testing.T ) {
1005
- createCSIDriver (t , superuserClient , "csidriver-audience" )
1026
+ createCSIDriver (t , superuserClient , "csidriver-audience" , "com.example.csi.mydriver" )
1006
1027
persistentVolumeClaimVolumeSource := & corev1.PersistentVolumeClaimVolumeSource {ClaimName : "mypvc" }
1007
1028
pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {PersistentVolumeClaim : persistentVolumeClaimVolumeSource }}})
1008
1029
expectedForbiddenMessage (t , createTokenRequest (node1Client , pod .UID , "csidriver-audience-not-found" ), `audience "csidriver-audience-not-found" not found in pod spec volume` )
1009
1030
deletePod (t , superuserClient , "pod1" )
1010
- deleteCSIDriver (t , superuserClient )
1031
+ deleteCSIDriver (t , superuserClient , "com.example.csi.mydriver" )
1011
1032
})
1012
1033
1013
1034
t .Run ("ephemeral volume source with audience not found should be forbidden" , func (t * testing.T ) {
1014
- createCSIDriver (t , superuserClient , "csidriver-audience" )
1035
+ createCSIDriver (t , superuserClient , "csidriver-audience" , "com.example.csi.mydriver" )
1015
1036
ephemeralVolumeSource := & corev1.EphemeralVolumeSource {VolumeClaimTemplate : & corev1.PersistentVolumeClaimTemplate {
1016
1037
Spec : corev1.PersistentVolumeClaimSpec {
1017
1038
AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadOnlyMany },
@@ -1021,7 +1042,23 @@ func TestNodeRestrictionServiceAccountAudience(t *testing.T) {
1021
1042
pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {Ephemeral : ephemeralVolumeSource }}})
1022
1043
expectedForbiddenMessage (t , createTokenRequest (node1Client , pod .UID , "csidriver-audience-not-found" ), `audience "csidriver-audience-not-found" not found in pod spec volume` )
1023
1044
deletePod (t , superuserClient , "pod1" )
1024
- deleteCSIDriver (t , superuserClient )
1045
+ deleteCSIDriver (t , superuserClient , "com.example.csi.mydriver" )
1046
+ })
1047
+
1048
+ t .Run ("intree pv to csi migration, pod --> csi --> driver --> tokenrequest with audience works" , func (t * testing.T ) {
1049
+ createCSIDriver (t , superuserClient , "csidriver-audience" , "file.csi.azure.com" )
1050
+ pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {PersistentVolumeClaim : & corev1.PersistentVolumeClaimVolumeSource {ClaimName : "mypvc-azurefile" }}}})
1051
+ expectAllowed (t , createTokenRequest (node1Client , pod .UID , "csidriver-audience" ))
1052
+ deletePod (t , superuserClient , "pod1" )
1053
+ deleteCSIDriver (t , superuserClient , "file.csi.azure.com" )
1054
+ })
1055
+
1056
+ t .Run ("intree inline volume to csi migration, pod --> csi --> driver --> tokenrequest with audience works" , func (t * testing.T ) {
1057
+ createCSIDriver (t , superuserClient , "csidriver-audience" , "file.csi.azure.com" )
1058
+ pod := createPod (t , superuserClient , []corev1.Volume {{Name : "foo" , VolumeSource : corev1.VolumeSource {AzureFile : & corev1.AzureFileVolumeSource {ShareName : "default" , SecretName : "mypvsecret" }}}})
1059
+ expectAllowed (t , createTokenRequest (node1Client , pod .UID , "csidriver-audience" ))
1060
+ deletePod (t , superuserClient , "pod1" )
1061
+ deleteCSIDriver (t , superuserClient , "file.csi.azure.com" )
1025
1062
})
1026
1063
1027
1064
t .Run ("token request with multiple audiences should be forbidden" , func (t * testing.T ) {
@@ -1090,22 +1127,22 @@ func createTokenRequest(client clientset.Interface, uid types.UID, audiences ...
1090
1127
}
1091
1128
}
1092
1129
1093
- func createCSIDriver (t * testing.T , client clientset.Interface , audience string ) {
1130
+ func createCSIDriver (t * testing.T , client clientset.Interface , audience , driverName string ) {
1094
1131
t .Helper ()
1095
1132
1096
1133
_ , err := client .StorageV1 ().CSIDrivers ().Create (context .TODO (), & storagev1.CSIDriver {
1097
- ObjectMeta : metav1.ObjectMeta {Name : "com.example.csi.mydriver" },
1134
+ ObjectMeta : metav1.ObjectMeta {Name : driverName },
1098
1135
Spec : storagev1.CSIDriverSpec {
1099
1136
TokenRequests : []storagev1.TokenRequest {{Audience : audience }},
1100
1137
},
1101
1138
}, metav1.CreateOptions {})
1102
1139
checkNilError (t , err )
1103
1140
}
1104
1141
1105
- func deleteCSIDriver (t * testing.T , client clientset.Interface ) {
1142
+ func deleteCSIDriver (t * testing.T , client clientset.Interface , driverName string ) {
1106
1143
t .Helper ()
1107
1144
1108
- checkNilError (t , client .StorageV1 ().CSIDrivers ().Delete (context .TODO (), "com.example.csi.mydriver" , metav1.DeleteOptions {GracePeriodSeconds : ptr.To [int64 ](0 )}))
1145
+ checkNilError (t , client .StorageV1 ().CSIDrivers ().Delete (context .TODO (), driverName , metav1.DeleteOptions {GracePeriodSeconds : ptr.To [int64 ](0 )}))
1109
1146
}
1110
1147
1111
1148
func createDefaultServiceAccount (t * testing.T , client clientset.Interface ) {
0 commit comments