mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	pkg/apis/rbac: make apiversion optional for subjects and fix validation
This commit is contained in:
		@@ -54,9 +54,8 @@ type Subject struct {
 | 
			
		||||
	// Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
 | 
			
		||||
	// If the Authorizer does not recognized the kind value, the Authorizer should report an error.
 | 
			
		||||
	Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"`
 | 
			
		||||
	// APIVersion holds the API group and version of the referenced object. For non-object references such as "Group" and "User" this is
 | 
			
		||||
	// expected to be API version of this API group. For example "rbac/v1alpha1".
 | 
			
		||||
	APIVersion string `json:"apiVersion" protobuf:"bytes,2,opt.name=apiVersion"`
 | 
			
		||||
	// APIVersion holds the API group and version of the referenced object.
 | 
			
		||||
	APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,2,opt.name=apiVersion"`
 | 
			
		||||
	// Name of the object being referenced.
 | 
			
		||||
	Name string `json:"name" protobuf:"bytes,3,opt,name=name"`
 | 
			
		||||
	// Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
 | 
			
		||||
 
 | 
			
		||||
@@ -105,9 +105,6 @@ func validateRoleBindingSubject(subject rbac.Subject, isNamespaced bool, fldPath
 | 
			
		||||
	if len(subject.Name) == 0 {
 | 
			
		||||
		allErrs = append(allErrs, field.Required(fldPath.Child("name"), ""))
 | 
			
		||||
	}
 | 
			
		||||
	if len(subject.APIVersion) != 0 {
 | 
			
		||||
		allErrs = append(allErrs, field.Forbidden(fldPath.Child("apiVersion"), subject.APIVersion))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch subject.Kind {
 | 
			
		||||
	case rbac.ServiceAccountKind:
 | 
			
		||||
 
 | 
			
		||||
@@ -96,15 +96,6 @@ func TestValidateRoleBinding(t *testing.T) {
 | 
			
		||||
			T: field.ErrorTypeInvalid,
 | 
			
		||||
			F: "subjects[0].name",
 | 
			
		||||
		},
 | 
			
		||||
		"forbidden fields": {
 | 
			
		||||
			A: rbac.RoleBinding{
 | 
			
		||||
				ObjectMeta: api.ObjectMeta{Namespace: api.NamespaceDefault, Name: "master"},
 | 
			
		||||
				RoleRef:    api.ObjectReference{Namespace: "master", Name: "valid"},
 | 
			
		||||
				Subjects:   []rbac.Subject{{Name: "subject", Kind: rbac.ServiceAccountKind, APIVersion: "foo"}},
 | 
			
		||||
			},
 | 
			
		||||
			T: field.ErrorTypeForbidden,
 | 
			
		||||
			F: "subjects[0].apiVersion",
 | 
			
		||||
		},
 | 
			
		||||
		"missing subject name": {
 | 
			
		||||
			A: rbac.RoleBinding{
 | 
			
		||||
				ObjectMeta: api.ObjectMeta{Namespace: api.NamespaceDefault, Name: "master"},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user