mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #80007 from liggitt/populate-version-authorization-check
Populate API version in synthetic authorization requests
This commit is contained in:
commit
ab960c612c
@ -80,6 +80,7 @@ func RoleEscalationAuthorized(ctx context.Context, a authorizer.Authorizer) bool
|
|||||||
User: user,
|
User: user,
|
||||||
Verb: "escalate",
|
Verb: "escalate",
|
||||||
APIGroup: requestInfo.APIGroup,
|
APIGroup: requestInfo.APIGroup,
|
||||||
|
APIVersion: "*",
|
||||||
Resource: requestInfo.Resource,
|
Resource: requestInfo.Resource,
|
||||||
Name: requestInfo.Name,
|
Name: requestInfo.Name,
|
||||||
Namespace: requestInfo.Namespace,
|
Namespace: requestInfo.Namespace,
|
||||||
@ -122,10 +123,12 @@ func BindingAuthorized(ctx context.Context, roleRef rbac.RoleRef, bindingNamespa
|
|||||||
switch roleRef.Kind {
|
switch roleRef.Kind {
|
||||||
case "ClusterRole":
|
case "ClusterRole":
|
||||||
attrs.APIGroup = roleRef.APIGroup
|
attrs.APIGroup = roleRef.APIGroup
|
||||||
|
attrs.APIVersion = "*"
|
||||||
attrs.Resource = "clusterroles"
|
attrs.Resource = "clusterroles"
|
||||||
attrs.Name = roleRef.Name
|
attrs.Name = roleRef.Name
|
||||||
case "Role":
|
case "Role":
|
||||||
attrs.APIGroup = roleRef.APIGroup
|
attrs.APIGroup = roleRef.APIGroup
|
||||||
|
attrs.APIVersion = "*"
|
||||||
attrs.Resource = "roles"
|
attrs.Resource = "roles"
|
||||||
attrs.Name = roleRef.Name
|
attrs.Name = roleRef.Name
|
||||||
default:
|
default:
|
||||||
|
@ -373,6 +373,7 @@ func buildAttributes(info user.Info, namespace, policyName, apiGroupName string)
|
|||||||
Namespace: namespace,
|
Namespace: namespace,
|
||||||
Name: policyName,
|
Name: policyName,
|
||||||
APIGroup: apiGroupName,
|
APIGroup: apiGroupName,
|
||||||
|
APIVersion: "*",
|
||||||
Resource: "podsecuritypolicies",
|
Resource: "podsecuritypolicies",
|
||||||
ResourceRequest: true,
|
ResourceRequest: true,
|
||||||
}
|
}
|
||||||
|
@ -68,16 +68,18 @@ func WithImpersonation(handler http.Handler, a authorizer.Authorizer, s runtime.
|
|||||||
groups := []string{}
|
groups := []string{}
|
||||||
userExtra := map[string][]string{}
|
userExtra := map[string][]string{}
|
||||||
for _, impersonationRequest := range impersonationRequests {
|
for _, impersonationRequest := range impersonationRequests {
|
||||||
|
gvk := impersonationRequest.GetObjectKind().GroupVersionKind()
|
||||||
actingAsAttributes := &authorizer.AttributesRecord{
|
actingAsAttributes := &authorizer.AttributesRecord{
|
||||||
User: requestor,
|
User: requestor,
|
||||||
Verb: "impersonate",
|
Verb: "impersonate",
|
||||||
APIGroup: impersonationRequest.GetObjectKind().GroupVersionKind().Group,
|
APIGroup: gvk.Group,
|
||||||
|
APIVersion: gvk.Version,
|
||||||
Namespace: impersonationRequest.Namespace,
|
Namespace: impersonationRequest.Namespace,
|
||||||
Name: impersonationRequest.Name,
|
Name: impersonationRequest.Name,
|
||||||
ResourceRequest: true,
|
ResourceRequest: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
switch impersonationRequest.GetObjectKind().GroupVersionKind().GroupKind() {
|
switch gvk.GroupKind() {
|
||||||
case v1.SchemeGroupVersion.WithKind("ServiceAccount").GroupKind():
|
case v1.SchemeGroupVersion.WithKind("ServiceAccount").GroupKind():
|
||||||
actingAsAttributes.Resource = "serviceaccounts"
|
actingAsAttributes.Resource = "serviceaccounts"
|
||||||
username = serviceaccount.MakeUsername(impersonationRequest.Namespace, impersonationRequest.Name)
|
username = serviceaccount.MakeUsername(impersonationRequest.Namespace, impersonationRequest.Name)
|
||||||
|
Loading…
Reference in New Issue
Block a user