认证配置
KubeSphere 包含一个内置的 OAuth 服务和帐户系统。用户通过获取 OAuth 访问令牌以对 API 进行身份验证。
认证配置
作为管理员,您可以通过以下命令修改认证配置:
kubectl -n kubesphere-system edit cc ks-installer
配置示例:
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
name: ks-installer
spec:
authentication:
jwtSecret: ********************************
authenticateRateLimiterMaxTries: 10
authenticateRateLimiterDuration: 10m
oauthOptions:
accessTokenInactivityTimeout: 30m
accessTokenMaxAge: 1h
identityProviders:
- mappingMethod: auto
name: github
type: GitHubIdentityProvider
provider:
...
参数释意:
-
authenticateRateLimiterMaxTries
:authenticateLimiterDuration
指定的期间内允许的最大连续登录失败次数。如果用户连续登录失败次数达到限制,则该用户将被封禁。 -
authenticateRateLimiterDuration
: 作用于authenticateRateLimiterMaxTries
。 -
loginHistoryRetentionPeriod
: 用户登录记录保留期限,过期条目将被自动删除。 -
maximumClockSkew
: 控制执行对时间敏感的操作(例如验证用户令牌的过期时间)时允许的最大时钟偏移,默认值为10秒。 -
multipleLogin
: 允许多个用户同时从不同位置登录,默认值为true
。 -
jwtSecret
: 签发用户令牌的密钥,最小长度为32个字符。多集群环境需要注意的事项。
oauthOptions
: OAuth settings
accessTokenMaxAge
: 访问令牌有效期。对于多集群环境中的成员集群,默认值为0h
,这意味着访问令牌永不过期。对于其他集群,默认值为2h
。accessTokenInactivityTimeout
: 令牌空闲超时时间。该值表示令牌过期后,刷新用户令牌最大的间隔时间,如果不在此时间窗口内刷新用户身份令牌,用户将需要重新登录以获得访问权。identityProviders
: Identity providersname
: 身份提供者的名称。type
: 身份提供者的类型。mappingMethod
: 帐户映射方式. 值可以是auto
或者lookup
。- 默认值为
auto
, 通过第三方帐户登录时会自动创建关联帐户。 - 如果值为
lookup
, 你需要手动关联第三方帐户与KubeSphere帐户。 provider
: Identity provider 配置,此部分中的字段根据身份提供的类型而异。
当您修改上述配置后,需要等待配置生效,可以通过以下命令查看相关进度及日志:
kubectl -n kubesphere-system logs -l app=ks-installer -f
如果 mappingMethod
设置为 lookup
, 可以通过以下命令进行帐户关联。 如果 mappingMethod
是 auto
你可以跳过这个部分。
kubectl edit user <KubeSphere username>
labels:
iam.kubesphere.io/identify-provider: <Identity provider name>
iam.kubesphere.io/origin-uid: <Third-party username>
备注
身份提供者
您可以在 identityProviders
部分中配置多个身份提供者(IdentityProvider, IdP)。身份提供者会对用户进行认证,并向 KubeSphere 提供身份令牌。
KubeSphere 默认提供了以下几种类型的身份提供者:
您也可以拓展 KubeSphere OAuth2 认证插件与您的帐户系统进行集成。
反馈
这篇文章对您有帮助吗?
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。