定义需要以下字段之一或不需要字段的 Kubernetes 自定义资源
Define Kubernetes Custom Resource requiring one of the following fields or no fields
我尝试定义一个新的自定义资源,要求它具有 (1) 字段 A、(2) 字段 B 或 (3) 空主体之一。
例如:{A:1}、{B:1}、{}可以,但{A:1、B:2}不行。
这是我的自定义资源以 OpenApi 模式的形式定义:
foo:
type: object
properties:
a:
type: int
b:
type: int
oneOf:
- required: ["a"]
- required: ["b"]
# no sure how to include the empty body
我应该如何在 oneOf 约束中包含空主体?
OpenAPI 3.1
您可以使用 'null'
(带引号)。
oneOf:
- type: 'null'
或具有 属性 类型 null 的对象。
oneOf:
- NullObjectExample:
type: object
properties:
prop1:
type: 'null'
OpenAPI 3.0
没有 null
类型,但您可以使用 nullable
字符串。您可能想要添加一个 description
说明这在任何时候都应为空。
oneOf:
- type: string
nullable: true
或者,具有可为空字符串的对象 属性。
oneOf:
- NullObjectExample:
type: object
properties:
prop1:
type: string
nullable: true
为什么没有空对象
除了意图不明确之外,这还可能存在安全漏洞。有关解释,请参阅 this page。简而言之:
If you do not clearly define the schema and you leave properties of a JSON payload empty, you effectively allow attackers to pass in any data. This means that you are opening your backend to various attacks, such as SQL injection.
我尝试定义一个新的自定义资源,要求它具有 (1) 字段 A、(2) 字段 B 或 (3) 空主体之一。
例如:{A:1}、{B:1}、{}可以,但{A:1、B:2}不行。
这是我的自定义资源以 OpenApi 模式的形式定义:
foo:
type: object
properties:
a:
type: int
b:
type: int
oneOf:
- required: ["a"]
- required: ["b"]
# no sure how to include the empty body
我应该如何在 oneOf 约束中包含空主体?
OpenAPI 3.1
您可以使用 'null'
(带引号)。
oneOf:
- type: 'null'
或具有 属性 类型 null 的对象。
oneOf:
- NullObjectExample:
type: object
properties:
prop1:
type: 'null'
OpenAPI 3.0
没有 null
类型,但您可以使用 nullable
字符串。您可能想要添加一个 description
说明这在任何时候都应为空。
oneOf:
- type: string
nullable: true
或者,具有可为空字符串的对象 属性。
oneOf:
- NullObjectExample:
type: object
properties:
prop1:
type: string
nullable: true
为什么没有空对象
除了意图不明确之外,这还可能存在安全漏洞。有关解释,请参阅 this page。简而言之:
If you do not clearly define the schema and you leave properties of a JSON payload empty, you effectively allow attackers to pass in any data. This means that you are opening your backend to various attacks, such as SQL injection.