Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
水淹萌龙
kubesphere
提交
99aff3c7
K
kubesphere
项目概览
水淹萌龙
/
kubesphere
与 Fork 源项目一致
Fork自
KubeSphere / kubesphere
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kubesphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
未验证
提交
99aff3c7
编写于
7月 07, 2020
作者:
H
hongming
提交者:
GitHub
7月 07, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: resource scope (#2280)
Signed-off-by:
N
hongming
<
talonwan@yunify.com
>
上级
d50e59bc
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
41 addition
and
5 deletion
+41
-5
pkg/apiserver/apiserver.go
pkg/apiserver/apiserver.go
+13
-0
pkg/apiserver/authorization/authorizerfactory/rbac.go
pkg/apiserver/authorization/authorizerfactory/rbac.go
+6
-4
pkg/apiserver/request/requestinfo.go
pkg/apiserver/request/requestinfo.go
+14
-1
pkg/kapis/resources/v1alpha3/register.go
pkg/kapis/resources/v1alpha3/register.go
+4
-0
pkg/kapis/tenant/v1alpha2/register.go
pkg/kapis/tenant/v1alpha2/register.go
+4
-0
未找到文件。
pkg/apiserver/apiserver.go
浏览文件 @
99aff3c7
...
...
@@ -27,6 +27,9 @@ import (
unionauth
"k8s.io/apiserver/pkg/authentication/request/union"
"k8s.io/apiserver/pkg/endpoints/handlers/responsewriters"
"k8s.io/klog"
clusterv1alpha1
"kubesphere.io/kubesphere/pkg/apis/cluster/v1alpha1"
iamv1alpha2
"kubesphere.io/kubesphere/pkg/apis/iam/v1alpha2"
tenantv1alpha1
"kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha1"
audit
"kubesphere.io/kubesphere/pkg/apiserver/auditing"
"kubesphere.io/kubesphere/pkg/apiserver/authentication/authenticators/basic"
"kubesphere.io/kubesphere/pkg/apiserver/authentication/authenticators/jwttoken"
...
...
@@ -233,6 +236,16 @@ func (s *APIServer) buildHandlerChain(stopCh <-chan struct{}) {
requestInfoResolver
:=
&
request
.
RequestInfoFactory
{
APIPrefixes
:
sets
.
NewString
(
"api"
,
"apis"
,
"kapis"
,
"kapi"
),
GrouplessAPIPrefixes
:
sets
.
NewString
(
"api"
,
"kapi"
),
GlobalResources
:
[]
schema
.
GroupResource
{
iamv1alpha2
.
Resource
(
iamv1alpha2
.
ResourcesPluralUser
),
iamv1alpha2
.
Resource
(
iamv1alpha2
.
ResourcesPluralGlobalRole
),
iamv1alpha2
.
Resource
(
iamv1alpha2
.
ResourcesPluralGlobalRoleBinding
),
tenantv1alpha1
.
Resource
(
tenantv1alpha1
.
ResourcePluralWorkspace
),
tenantv1alpha2
.
Resource
(
tenantv1alpha1
.
ResourcePluralWorkspace
),
tenantv1alpha2
.
Resource
(
clusterv1alpha1
.
ResourcesPluralCluster
),
clusterv1alpha1
.
Resource
(
clusterv1alpha1
.
ResourcesPluralCluster
),
resourcev1alpha3
.
Resource
(
clusterv1alpha1
.
ResourcesPluralCluster
),
},
}
handler
:=
s
.
Server
.
Handler
...
...
pkg/apiserver/authorization/authorizerfactory/rbac.go
浏览文件 @
99aff3c7
...
...
@@ -131,8 +131,8 @@ func (r *RBACAuthorizer) Authorize(requestAttributes authorizer.Attributes) (aut
scope
=
fmt
.
Sprintf
(
"in namespace %q"
,
ns
)
}
else
if
ws
:=
requestAttributes
.
GetWorkspace
();
len
(
ws
)
>
0
{
scope
=
fmt
.
Sprintf
(
"in workspace %q"
,
ws
)
}
else
if
cluster
:=
requestAttributes
.
GetWorkspace
();
len
(
cluster
)
>
0
{
scope
=
fmt
.
Sprintf
(
"in cluster %q"
,
cluster
)
}
else
if
requestAttributes
.
GetResourceScope
()
==
request
.
ClusterScope
{
scope
=
"cluster scope"
}
else
{
scope
=
"global-wide"
}
...
...
@@ -228,13 +228,15 @@ func (r *RBACAuthorizer) visitRulesFor(requestAttributes authorizer.Attributes,
}
}
}
if
requestAttributes
.
GetResourceScope
()
==
request
.
GlobalScope
{
return
}
}
if
requestAttributes
.
GetResourceScope
()
==
request
.
WorkspaceScope
||
requestAttributes
.
GetResourceScope
()
==
request
.
NamespaceScope
{
var
workspace
string
var
err
error
if
requestAttributes
.
GetResourceScope
()
==
request
.
NamespaceScope
{
if
workspace
,
err
=
r
.
am
.
GetControlledWorkspace
(
requestAttributes
.
GetNamespace
());
err
!=
nil
{
if
!
visitor
(
nil
,
""
,
nil
,
err
)
{
...
...
pkg/apiserver/request/requestinfo.go
浏览文件 @
99aff3c7
...
...
@@ -26,6 +26,7 @@ import (
metainternalversion
"k8s.io/apimachinery/pkg/apis/meta/internalversion"
metainternalversionscheme
"k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/klog"
"kubesphere.io/kubesphere/pkg/api"
...
...
@@ -75,6 +76,7 @@ type RequestInfo struct {
type
RequestInfoFactory
struct
{
APIPrefixes
sets
.
String
GrouplessAPIPrefixes
sets
.
String
GlobalResources
[]
schema
.
GroupResource
}
// NewRequestInfo returns the information from the http request. If error is not nil, RequestInfo holds the information as best it is known before the failure
...
...
@@ -106,7 +108,6 @@ type RequestInfoFactory struct {
// /kapis/clusters/{cluster}/{api-group}/{version}/namespaces/{namespace}/{resource}/{resourceName}
//
func
(
r
*
RequestInfoFactory
)
NewRequestInfo
(
req
*
http
.
Request
)
(
*
RequestInfo
,
error
)
{
requestInfo
:=
RequestInfo
{
IsKubernetesRequest
:
false
,
RequestInfo
:
&
k8srequest
.
RequestInfo
{
...
...
@@ -309,6 +310,9 @@ const (
)
func
(
r
*
RequestInfoFactory
)
resolveResourceScope
(
request
RequestInfo
)
string
{
if
r
.
isGlobalScopeResource
(
request
.
APIGroup
,
request
.
Resource
)
{
return
GlobalScope
}
if
request
.
Namespace
!=
""
{
return
NamespaceScope
...
...
@@ -320,3 +324,12 @@ func (r *RequestInfoFactory) resolveResourceScope(request RequestInfo) string {
return
ClusterScope
}
func
(
r
*
RequestInfoFactory
)
isGlobalScopeResource
(
apiGroup
,
resource
string
)
bool
{
for
_
,
groupResource
:=
range
r
.
GlobalResources
{
if
groupResource
.
Group
==
apiGroup
&&
groupResource
.
Resource
==
resource
{
return
true
}
}
return
false
}
pkg/kapis/resources/v1alpha3/register.go
浏览文件 @
99aff3c7
...
...
@@ -40,6 +40,10 @@ const (
var
GroupVersion
=
schema
.
GroupVersion
{
Group
:
GroupName
,
Version
:
"v1alpha3"
}
func
Resource
(
resource
string
)
schema
.
GroupResource
{
return
GroupVersion
.
WithResource
(
resource
)
.
GroupResource
()
}
func
AddToContainer
(
c
*
restful
.
Container
,
informerFactory
informers
.
InformerFactory
)
error
{
webservice
:=
runtime
.
NewWebService
(
GroupVersion
)
...
...
pkg/kapis/tenant/v1alpha2/register.go
浏览文件 @
99aff3c7
...
...
@@ -45,6 +45,10 @@ const (
var
GroupVersion
=
schema
.
GroupVersion
{
Group
:
GroupName
,
Version
:
"v1alpha2"
}
func
Resource
(
resource
string
)
schema
.
GroupResource
{
return
GroupVersion
.
WithResource
(
resource
)
.
GroupResource
()
}
func
AddToContainer
(
c
*
restful
.
Container
,
factory
informers
.
InformerFactory
,
k8sclient
kubernetes
.
Interface
,
ksclient
kubesphere
.
Interface
,
evtsClient
events
.
Client
,
loggingClient
logging
.
Interface
,
auditingclient
auditing
.
Client
)
error
{
mimePatch
:=
[]
string
{
restful
.
MIME_JSON
,
runtime
.
MimeMergePatchJson
,
runtime
.
MimeJsonPatchJson
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录