@@ -13,7 +13,6 @@ import (
13
13
"k8s.io/kubernetes/pkg/labels"
14
14
"k8s.io/kubernetes/pkg/registry/generic"
15
15
"k8s.io/kubernetes/pkg/runtime"
16
- "k8s.io/kubernetes/pkg/util/sets"
17
16
"k8s.io/kubernetes/pkg/util/validation/field"
18
17
19
18
authorizationapi "github.com/openshift/origin/pkg/authorization/api"
@@ -433,19 +432,18 @@ func (v *TagVerifier) Verify(old, stream *api.ImageStream, user user.Info) field
433
432
continue
434
433
}
435
434
436
- subjectAccessReview := authorizationapi.SubjectAccessReview {
435
+ // Make sure this user can pull the specified image before allowing them to tag it into another imagestream
436
+ subjectAccessReview := authorizationapi .AddUserToSAR (user , & authorizationapi.SubjectAccessReview {
437
437
Action : authorizationapi.Action {
438
438
Verb : "get" ,
439
439
Group : api .GroupName ,
440
- Resource : "imagestreams" ,
440
+ Resource : "imagestreams/layers " ,
441
441
ResourceName : streamName ,
442
442
},
443
- User : user .GetName (),
444
- Groups : sets .NewString (user .GetGroups ()... ),
445
- }
443
+ })
446
444
ctx := kapi .WithNamespace (kapi .NewContext (), tagRef .From .Namespace )
447
445
glog .V (4 ).Infof ("Performing SubjectAccessReview for user=%s, groups=%v to %s/%s" , user .GetName (), user .GetGroups (), tagRef .From .Namespace , streamName )
448
- resp , err := v .subjectAccessReviewClient .CreateSubjectAccessReview (ctx , & subjectAccessReview )
446
+ resp , err := v .subjectAccessReviewClient .CreateSubjectAccessReview (ctx , subjectAccessReview )
449
447
if err != nil || resp == nil || (resp != nil && ! resp .Allowed ) {
450
448
errors = append (errors , field .Forbidden (fromPath , fmt .Sprintf ("%s/%s" , tagRef .From .Namespace , streamName )))
451
449
continue
0 commit comments