필드 셀렉터 속성

필드 셀렉터 속성 (FieldSelectorAttributes)

이 페이지는 필드 셀렉터(field selector) 기반의 접근 제한을 나타내는 FieldSelectorAttributes 객체를 설명해요. 웹훅과 kube-apiserver 간의 필드 셀렉터 처리 방식을 정의하는 구조체랍니다.

출처: Kubernetes API Reference

본문

FieldSelectorAttributes는 필드 기반의 접근 제한을 나타냅니다. 웹훅 작성자는 다음을 권장합니다.

  • rawSelector와 requirements가 동시에 설정되지 않도록 합니다.
  • requirements 필드가 설정된 경우 이를 고려합니다.
  • rawSelector 필드가 설정된 경우 이를 파싱하거나 고려하지 않도록 합니다.

이는 또 다른 CVE-2022-2880을 방지하기 위한 것입니다(즉, 서로 다른 시스템이 쿼리를 정확히 어떻게 파싱할지에 대해 동의하도록 만드는 것은 우리가 원하는 것이 아닙니다). 자세한 내용은 https://www.oxeye.io/resources/golang-parameter-smuggling-attack를 참조하세요. kube-apiserver의 *SubjectAccessReview 엔드포인트의 경우:

  • rawSelector가 비어 있고 requirements가 비어 있으면 요청은 제한되지 않습니다.
  • rawSelector가 있고 requirements가 비어 있으면 rawSelector가 파싱되고 파싱이 성공하면 제한됩니다.
  • rawSelector가 비어 있고 requirements가 있으면 requirements가 존중되어야 합니다.
  • rawSelector와 requirements가 모두 있으면 요청은 유효하지 않습니다.

apiVersion: authorization.k8s.io/v1

import "k8s.io/api/authorization/v1"

FieldSelectorAttributes

FieldSelectorAttributes는 필드 기반의 접근 제한을 나타냅니다. 웹훅 작성자는 다음을 권장합니다.

  • rawSelector와 requirements가 동시에 설정되지 않도록 합니다.
  • requirements 필드가 설정된 경우 이를 고려합니다.
  • rawSelector 필드가 설정된 경우 이를 파싱하거나 고려하지 않도록 합니다.

이는 또 다른 CVE-2022-2880을 방지하기 위한 것입니다(즉, 서로 다른 시스템이 쿼리를 정확히 어떻게 파싱할지에 대해 동의하도록 만드는 것은 우리가 원하는 것이 아닙니다). 자세한 내용은 https://www.oxeye.io/resources/golang-parameter-smuggling-attack를 참조하세요. kube-apiserver의 *SubjectAccessReview 엔드포인트의 경우:

  • rawSelector가 비어 있고 requirements가 비어 있으면 요청은 제한되지 않습니다.
  • rawSelector가 있고 requirements가 비어 있으면 rawSelector가 파싱되고 파싱이 성공하면 제한됩니다.
  • rawSelector가 비어 있고 requirements가 있으면 requirements가 존중되어야 합니다.
  • rawSelector와 requirements가 모두 있으면 요청은 유효하지 않습니다.

Field Description
rawSelector
string rawSelector는 쿼리 매개변수에 포함될 필드 셀렉터를 직렬화한 것입니다. 웹훅 구현체는 rawSelector를 무시하도록 권장됩니다. kube-apiserver의 *SubjectAccessReview는 requirements가 없으면 rawSelector를 파싱합니다.
requirements
FieldSelectorRequirement array requirements는 필드 셀렉터를 파싱한 해석입니다. 리소스 인스턴스가 셀렉터와 일치하려면 모든 requirements가 충족되어야 합니다. 웹훅 구현체는 requirements를 처리해야 하지만, 처리 방법은 웹훅의 몫입니다. requirements는 요청을 제한할 수만 있으므로, requirements를 이해하지 못하는 경우 무제한 요청으로 인가해도 안전합니다.

더 알아보기 (Learn more)