From ecc75ec7f14c8f31410adf1f0cd02f57633960fe Mon Sep 17 00:00:00 2001
From: Mengjiao Liu
- -EgressSelectorConfiguration 为 Egress 选择算符客户端提供版本化的配置选项。 -
-| 字段 | 描述 |
|---|---|
apiVersionstring | apiserver.k8s.io/v1beta1 |
kindstring | EgressSelectorConfiguration |
egressSelections [必需]- []EgressSelection
- |
-
- - - connectionServices 包含一组 Egress 选择算符客户端配置选项。 - - |
-
+ +AuthenticationConfiguration 为身份验证提供版本化的配置。 +
+ + +| 字段 | 描述 |
|---|---|
apiVersionstring | apiserver.k8s.io/v1beta1 |
kindstring | AuthenticationConfiguration |
jwt [必需]+ []JWTAuthenticator
+ |
+
+ + + jwt 是一个身份验证器列表,用于对使用符合 JWT 的令牌的 Kubernetes 用户进行身份验证。 + 身份验证器将尝试解析原始 ID 令牌,验证其是否由配置的发放者签名。用于验证签名的公钥是通过 + OIDC 发现从颁发者的公开端点获取的。对于传入的令牌,将按照此列表中指定的顺序尝试每个 JWT + 身份验证器。但是请注意,其他身份验证器可能会在 JWT 身份验证器之前或之后运行。JWT + 身份验证器相对于其他身份验证器的具体位置在不同版本中既未定义也不稳定。由于每个 JWT + 身份验证器必须具有唯一的颁发者 URL,因此最多只有一个 JWT 身份验证器会尝试基于密码学方法对对令牌进行合法性检查。 + ++ +最小有效 JWT 负载必须包含以下声明: +
+{
+ "iss": "https://issuer.example.com",
+ "aud": ["audience"],
+ "exp": 1234567890,
+ "<username claim>": "username"
+}
+
+
+ |
+
anonymous [必需]+ AnonymousAuthConfig
+ |
+
+
+
+ 如果设置了此字段,则不得设置 |
+
| 字段 | 描述 |
|---|---|
apiVersionstring | apiserver.k8s.io/v1beta1 |
kindstring | AuthorizationConfiguration |
authorizers [必需]+ []AuthorizerConfiguration
+ |
+
+
+
+ authorizers 是一个有序的鉴权器列表,用于对请求进行鉴权。
+ 这类似于 kube-apiserver |
+
+ +EgressSelectorConfiguration 为离站流量选择器客户端(Egress Selector Client)提供版本化的配置选项。 +
+ +| 字段 | 描述 |
|---|---|
apiVersionstring | apiserver.k8s.io/v1beta1 |
kindstring | EgressSelectorConfiguration |
egressSelections [必需]+ []EgressSelection
+ |
+
+ + + connectionServices 包含一组离站流量选择器客户端(Egress Selector Client)配置选项。 + + |
+
@@ -142,6 +259,549 @@ TracingConfiguration 为跟踪客户端提供版本化的配置信息。 +## `AnonymousAuthCondition` {#apiserver-k8s-io-v1beta1-AnonymousAuthCondition} + + + +**出现在:** + +- [AnonymousAuthConfig](#apiserver-k8s-io-v1beta1-AnonymousAuthConfig) + + +
+ +AnonymousAuthCondition 描述了应启用匿名身份验证的条件。 +
+ + +| 字段 | 描述 |
|---|---|
path [必需]+ string
+ |
+
+ + + 启用匿名身份验证的路径。 + + |
+
+ +AnonymousAuthConfig 为匿名身份认证器提供配置信息。
+ + +| 字段 | 描述 |
|---|---|
enabled [必需]+ bool
+ |
++ | +
conditions [必需]+ []AnonymousAuthCondition
+ |
+
+ + + 如果设置,只有在请求满足其中一个条件时才允许匿名身份验证。 + + |
+
+ +AudienceMatchPolicyType 是 issuer.audienceMatchPolicy 合法值的集合 +
+ + + +## `AuthorizerConfiguration` {#apiserver-k8s-io-v1beta1-AuthorizerConfiguration} + + + +**出现在:** + +- [AuthorizationConfiguration](#apiserver-k8s-io-v1beta1-AuthorizationConfiguration) + + + +| 字段 | 描述 |
|---|---|
type [必需]+ string
+ |
+
+ + + type 指的是鉴权器的类型。 + 通用 API 服务器支持 "Webhook"。 + 其他 API 服务器可能支持其他授权者类型,如 Node、RBAC、ABAC 等。 + + |
+
name [必需]+ string
+ |
+
+
+
+ name 是用于描述 webhook 的名称。
+ 此字段专为监控机制中的指标提供。
+ 注意:name 值必须是 DNS1123 标签,如 |
+
webhook [必需]+ WebhookConfiguration
+ |
+
+ + + webhook 定义 Webhook 鉴权器的配置。 + 当 type=Webhook 时必须定义。 + 当 type!=Webhook 时不得定义。 + + |
+
+ +ClaimMappings 为声明映射提供配置信息 +
+ + +| 字段 | 描述 |
|---|---|
username [必需]+ PrefixedClaimOrExpression
+ |
+
+
+
+ username 表示用户名属性的一个选项。
+ 声明的值必须是单一字符串。
+ 与 + +在基于标志的方法中,--oidc-username-claim 和 --oidc-username-prefix +是可选的。如果未设置 --oidc-username-claim,默认值为 "sub"。 +对于身份验证配置,声明或前缀都没有默认值。声明和前缀必须显式设置。 +对于声明,如果在传统标志方法中未设置 --oidc-username-claim, +请在身份验证配置中配置 username.claim="sub"。 +对于前缀: +(1) --oidc-username-prefix="-", 未添加前缀到用户名。要实现相同的行为,请在身份验证配置中设置 +username.prefix="" +(2) --oidc-username-prefix="" 并且 --oidc-username-claim != "email", +前缀为 "<--oidc-issuer-url 的值>#"。要实现相同的行为,请在身份验证配置中设置 +username.prefix="<issuer.url 的值>#"。 +(3) --oidc-username-prefix="<value>"。要实现相同的行为,请在身份验证配置中设置 +username.prefix="<value>"。 + + |
+
groups+ PrefixedClaimOrExpression
+ |
+
+ + + groups 表示 groups 属性的一个选项。 + 其中 claim 字段的值必须是字符串或字符串数组。 + 如果设置了 groups.claim,则必须指定 prefix 字段(可以是空字符串)。 + 如果设置了 groups.expression,则该表达式必须生成一个字符串或字符串数组值。 + ""、[] 和 null 值被视为不存在组映射。 + + |
+
uid+ ClaimOrExpression
+ |
+
+ + + uid 表示 uid 属性的一个选项。 + 其中的 claim 字段必须是一个字符串。 + 如果设置了 uid.expression,则该表达式必须生成一个字符串值。 + + |
+
extra+ []ExtraMapping
+ |
+
+ + + extra 表示 extra 属性的一个选项。 + expression 必须生成一个字符串或字符串数组值。 + 如果值为空,则不会存在 extra 映射。 + ++ +硬编码的额外 key/value + +- key: "foo" + valueExpression: "'bar'" ++这将导致一个额外的属性 - foo: ["bar"] + +硬编码 key,value 从声明的值复制 + + - key: "foo" + valueExpression: "claims.some_claim" ++这将导致一个额外的属性 - foo: [some_claim 的值] + +硬编码 key,value 从声明的值派生 + +- key: "admin" + valueExpression: '(has(claims.is_admin) && claims.is_admin) ? "true":""' ++这将导致: + +
|
+
+ +ClaimOrExpression 为单个声明或表达式提供配置信息。 +
+ + +| 字段 | 描述 |
|---|---|
claim+ string
+ |
+
+ + + claim 是要使用的 JWT 声明。 + claim 或 expression 必须设置一个。 + 与 expression 互斥。 + + |
+
expression+ string
+ |
+
+
+ expression 表示将由 CEL 求值的表达式。 +CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量: +
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ +与 claim 互斥。 + |
+
ClaimValidationRule 为单个声明验证规则提供配置信息。
+ + +| 字段 | 描述 |
|---|---|
claim+ string
+ |
+
+ + + claim 是所需要的声明的名称。 + 与 --oidc-required-claim 标志相同。 + 仅支持用字符串声明键。 + 与 expression 和 message 互斥。 + + |
+
requiredValue+ string
+ |
+
+ + + requiredValue 是声明中必须包含的值。 + 与 --oidc-required-claim 标志相同。 + 仅支持用字符串声明值。 + 如果设置了 claim 而未设置 requiredValue,则 claim 必须存在且值必须设置为空字符串。 + 与 expression 和 message 互斥。 + + |
+
expression+ string
+ |
+
+
+ expression 表示将由 CEL 求值的表达式。 + 必须生成一个布尔值。 +CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量: +
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ +与 claim 和 requiredValue 互斥。 + |
+
message+ string
+ |
+
+ + + message 自定义当 expression 返回 false 时的错误消息。 + message 是一个字符串文字。 + 与 claim 和 requiredValue 互斥。 + + |
+
ExtraMapping 为单个 extra 映射提供配置信息。
+ + +| 字段 | 描述 |
|---|---|
key [必需]+ string
+ |
+
+ + + key 是用作 extra 属性键的字符串。 + key 必须是域前缀路径(例如 example.org/foo)。第一个 "/" 之前的所有字符必须是符合 + RFC 1123 定义的有效子域名。第一个 "/" 之后的所有字符必须是符合 RFC 3986 + 定义的有效 HTTP 路径字符。 + key 必须是小写。 + 必须是唯一的。 + + |
+
valueExpression [必需]+ string
+ |
+
+
+ valueExpression 是一个 CEL 表达式,用于提取 extra 中的属性值。 + valueExpression 必须生成一个字符串或字符串数组值。 + ""、[] 和 null 值被视为不存在 extra 映射。 + 字符串数组中包含的空字符串值将被过滤掉。 +CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量: +
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ + |
+
Issuer 为外部提供者的特定设置提供配置。
+ + +| 字段 | 描述 |
|---|---|
url [必需]+ string
+ |
+
+ + + url 指向颁发者 URL,格式为 https://url 或 https://url/path。 + 此 URL 必须与所提供的 JWT 中的 "iss" 声明以及从发现中返回的颁发者匹配。 + 与 --oidc-issuer-url 标志的值相同。 + 除非被 discoveryURL 覆盖,否则发现信息将从 "{url}/.well-known/openid-configuration" 获取。 + 在所有 JWT 身份验证器中必须唯一。 + 请注意,此网络连接不使用出站流量选择配置。 + + |
+
discoveryURL+ string
+ |
+
+ + + discoveryURL(如果指定)会覆盖用于获取发现信息的 URL,而不是使用 + "{url}/.well-known/openid-configuration"。 + 使用指定的确切值,因此如果需要,必须在 discoveryURL 中包含 + "/.well-known/openid-configuration"。 + ++ +所获取的发现信息中的 "issuer" 字段必须与 AuthenticationConfiguration +中的 "issuer.url" 字段匹配,并将用于检验所提供的 JWT 中的 "iss" 声明。 +这适用于 well-known 和 jwks 端点托管在与颁发者不同的位置(例如在集群中本地托管)的场景。 + ++ +示例: +发现 URL 是通过 Kubernetes 在命名空间 'oidc-namespace' 中的服务 'oidc' 公布的, +而访问 '/.well-known/openid-configuration' 可以获得发现信息。 +discoveryURL: "https://oidc.oidc-namespace/.well-known/openid-configuration" +certificateAuthority 用于验证 TLS 连接,叶证书上的主机名必须设置为 'oidc.oidc-namespace'。 + + ++
+
+discoveryURL 必须与 url 不同。 +在所有 JWT 身份验证器中必须唯一。 +请注意,此网络连接不使用出站流量选择配置。 + |
+
certificateAuthority+ string
+ |
+
+ + + certificateAuthority 包含 PEM 编码的证书颁发机构证书, + 用于在获取发现信息时验证连接。 + 如果未设置,则使用系统验证器。 + 与 --oidc-ca-file 标志引用的文件内容相同。 + + |
+
audiences [必需]+ []string
+ |
+
+ + + audiences 是 JWT 必须签发给的可接受受众集。 + 所提供的 JWT 中的 "aud" 声明必须至少与其中一个条目匹配。 + 与 --oidc-client-id 标志的值相同(尽管此字段支持数组)。 + 必须为非空。 + + |
+
audienceMatchPolicy+ AudienceMatchPolicyType
+ |
+
+ + + audienceMatchPolicy 定义了如何使用 "audiences" 字段来匹配所提供的 JWT 中的 "aud" 声明。 + 允许的值有: + +
对于更精细的受众验证,请使用 claimValidationRules。 +示例:claimValidationRule[].expression: 'sets.equivalent(claims.aud, ["bar", "foo", "baz"])' +以要求精确匹配。 + |
+
JWTAuthenticator 为单个 JWT 身份验证器提供配置信息。
+ + +| 字段 | 描述 |
|---|---|
issuer [必需]+ Issuer
+ |
+
+ + + issuer 包含基本的 OIDC 提供者连接选项。 + + |
+
claimValidationRules+ []ClaimValidationRule
+ |
+
+ + + claimValidationRules 是用于验证令牌声明以认证用户的规则。 + |
+
claimMappings [必需]+ ClaimMappings
+ |
+
+ + + claimMappings 指向要视为用户属性的令牌声明。 + + |
+
userValidationRules+ []UserValidationRule
+ |
+
+
+
+ userValidationRules 是在完成身份验证之前应用于最终用户的规则。
+ 这些规则允许将不变量应用于传入的身份,例如禁止使用 Kubernetes 组件常用的 |
+
PrefixedClaimOrExpression 为单个带前缀的声明或表达式提供配置。
+ + +| 字段 | 描述 |
|---|---|
claim+ string
+ |
+
+ + + claim 是要使用的 JWT 声明。 + 与 expression 互斥。 + + |
+
prefix+ string
+ |
+
+ + + prefix 是添加到声明值前面的前缀,以防止与现有名称冲突。 + 如果设置了 claim,则需要设置 prefix,并且可以是空字符串。 + 与 expression 互斥。 + |
+
expression+ string
+ |
+
+
+ expression 表示将由 CEL 评估的表达式。 +CEL 表达式可以访问令牌声明的内容,这些内容被组织成 CEL 变量: +
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ +与 claim 和 prefix 互斥。 + |
+
+ +UserValidationRule 为单个用户信息验证规则提供配置信息。 +
+ + +| 字段 | 描述 |
|---|---|
expression [必需]+ string
+ |
+
+ + + expression 表示将由 CEL 求值的表达式。 + 验证通过时必须返回 true。 + + +CEL 表达式可以访问 UserInfo 的内容,这些内容被组织成 CEL 变量: +
关于 CEL 的文档:https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ + |
+
message+ string
+ |
+
+ + + message 自定义当规则返回 false 时的错误消息。 + message 是一个字符串文字。 + + |
+
| 字段 | 描述 |
|---|---|
authorizedTTL [必需]+ meta/v1.Duration
+ |
+
+
+ 对来自 Webhook 鉴权组件的 “authorized” 响应的缓存时长。
+ 与设置 |
+
unauthorizedTTL [Required]+ meta/v1.Duration
+ |
+
+
+ 对来自 Webhook 鉴权组件的 “unauthorized” 响应的缓存时长。
+与设置 |
+
timeout [必需]+ meta/v1.Duration
+ |
+
+ + + Webhook 请求超时时间。 + 允许的最大时间为 30 秒。 + 必填,没有默认值。 + + |
+
subjectAccessReviewVersion [必需]+ string
+ |
+
+
+ 要发送到 Webhook 并期望从 Webhook 获得的 authorization.k8s.io SubjectAccessReview 的 API 版本。
+与设置 |
+
matchConditionSubjectAccessReviewVersion [必需]+ string
+ |
+
+ + + matchConditionSubjectAccessReviewVersion 指定对 CEL 表达式求值时使用的 SubjectAccessReview 版本。 + 有效值:v1。 + 必填,无默认值。 + + |
+
failurePolicy [必需]+ string
+ |
+
+ + + 控制当 Webhook 请求无法完成或返回格式错误的响应或计算 matchConditions 出现错误时的鉴权决定。 + 有效值: + +
|
+
connectionInfo [必需]+ WebhookConnectionInfo
+ |
+
+ + + ConnectionInfo 定义 Webhook 如何与服务器通信。 + + |
+
matchConditions [必需]+ []WebhookMatchCondition
+ |
+
+
+ matchConditions 是将请求发送到此 Webhook 必须满足的条件列表。matchConditions 为空列表表示匹配所有请求。 + 最多允许 64 个匹配条件。 +精确匹配逻辑如下(按顺序): +
|
+
| 字段 | 描述 |
|---|---|
type [必需]+ string
+ |
+
+
+ 控制 Webhook 如何与服务器通信。 +有效值: +
|
+
kubeConfigFile [必需]+ string
+ |
+
+ + + 包含连接信息的 KubeConfig 文件的路径。 + 如果 connectionInfo.type 是 KubeConfig,则为必需项。 + + |
+
| 字段 | 描述 |
|---|---|
expression [必需]+ string
+ |
+
+
+ 表达式表示将由 CEL 求值的表达式。求值结果必须为布尔值。 +CEL 表达式可以访问 v1 版本中的 SubjectAccessReview 的内容。 +如果请求变量中 subjectAccessReviewVersion 指定的版本是 v1beta1, +在计算 CEL 表达式之前,内容将被转换为 v1 版本。 +关于 CEL 文档: https://kubernetes.io/zh-cn/docs/reference/using-api/cel/ + |
+