6장. ValidatingAdmissionPolicyBinding [admissionregistration.k8s.io/v1]


설명

ValidatingAdmissionPolicyBinding은 ValidatingAdmissionPolicy를 paramerized 리소스와 바인딩합니다. ValidatingAdmissionPolicyBinding 및 매개변수 CRD는 클러스터 관리자가 클러스터 정책을 구성하는 방법을 정의합니다.

지정된 승인 요청의 경우 각 바인딩으로 인해 정책이 N 번 평가됩니다. 여기서 N은 params를 사용하지 않는 정책/바인딩의 경우 1입니다. 그렇지 않으면 N은 바인딩에서 선택한 매개변수의 수입니다.

정책의 CEL 표현식에는 최대 CEL 예산보다 계산 된 CEL 비용이 있어야합니다. 정책의 각 평가에는 독립적인 CEL 비용 예산이 부여됩니다. 정책, 바인딩 또는 매개 변수 추가/제거는 지정된 (정책, 바인딩, 매개 변수) 조합이 자체 CEL 예산 내에 있는지 여부에 영향을 미치지 않습니다.

유형
object

6.1. 사양

속성유형설명

apiVersion

string

APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

string

kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

메타데이터

ObjectMeta

표준 오브젝트 메타데이터; 자세한 정보: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.

spec

object

ValidatingAdmissionPolicyBindingSpec은 ValidatingAdmissionPolicyBinding의 사양입니다.

6.1.1. .spec

설명
ValidatingAdmissionPolicyBindingSpec은 ValidatingAdmissionPolicyBinding의 사양입니다.
유형
object
속성유형설명

matchResources

object

MatchResources는 일치 기준을 충족하는지 여부에 따라 오브젝트에 대한 허용 제어 정책을 실행할지 여부를 결정합니다. exclude 규칙은 include 규칙보다 우선합니다(리소스가 둘 다 일치하는 경우 제외됨)

paramRef

object

ParamRef는 정책 바인딩에서 적용되는 규칙의 표현식에 대한 입력으로 사용할 매개변수를 찾는 방법을 설명합니다.

policyName

string

PolicyName은 ValidatingAdmissionPolicyBinding이 바인딩되는 ValidatingAdmissionPolicy 이름을 참조합니다. 참조된 리소스가 없는 경우 이 바인딩은 유효하지 않은 것으로 간주되며 필수 사항은 무시됩니다.

validationActions

배열(문자열)

validationActions는 참조된 ValidatingAdmissionPolicy의 유효성 검사를 선언합니다. 유효성 검사가 false로 평가되면 항상 이러한 조치에 따라 적용됩니다.

ValidatingAdmissionPolicy에서 정의한 오류는 FailurePolicy가 Fail로 설정된 경우에만 이러한 작업에 따라 적용됩니다. 여기에는 컴파일 오류, 런타임 오류 및 정책 구성이 포함됩니다.

validationActions는 작업 값 세트로 선언됩니다. 순서는 중요하지 않습니다. validationActions에는 동일한 작업의 중복이 포함되어 있지 않을 수 있습니다.

지원되는 작업 값은 다음과 같습니다.

"deny"는 유효성 검사 실패로 인해 요청이 거부됨을 지정합니다.

"warn"은 경고 코드가 299인 HTTP 경고 헤더의 요청 클라이언트에 유효성 검사 오류가 보고되도록 지정합니다. 허용 또는 거부 승인 응답에 대해 경고를 보낼 수 있습니다.

"audit"는 요청에 대해 게시된 감사 이벤트에 유효성 검사 오류가 포함되도록 지정합니다. 감사 이벤트에는 검증 실패에 대한 세부 정보가 포함된 값이 있는 validation.policy.admission.k8s.io/validation_failure audit 주석이 포함되며, 각각 다음 필드가 있는 JSON 오브젝트 목록으로 포맷됩니다. - message: 검증 실패 메시지 문자열 - policy: ValidatingAdmissionPolicy - 바인딩의 리소스 이름입니다. ValidatingAdmissionPolicyBinding - expressionIndex의 리소스 이름입니다. ValidatingAdmissionPolicy - validationActions에서 실패한 검증 인덱스입니다. 검증 실패 예 audit 주석에 대해 적용된 시행 작업입니다. "validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]]]

클라이언트는 인식할 수 없는 값을 무시하여 추가 값을 처리해야 합니다.

이 조합은 API 응답 본문과 HTTP 경고 헤더에서 검증 실패를 불필요하게 복제해야 하므로 "deny" 및 "Warn"을 함께 사용할 수 없습니다.

필수 항목입니다.

6.1.2. .spec.matchResources

설명
MatchResources는 일치 기준을 충족하는지 여부에 따라 오브젝트에 대한 허용 제어 정책을 실행할지 여부를 결정합니다. exclude 규칙은 include 규칙보다 우선합니다(리소스가 둘 다 일치하는 경우 제외됨)
유형
object
속성유형설명

excludeResourceRules

array

ExcludeResourceRules는 ValidatingAdmissionPolicy가 중요하지 않아야 하는 resources/subresource에 대한 작업을 설명합니다. exclude 규칙은 include 규칙보다 우선합니다(리소스가 둘 다 일치하는 경우 제외됨)

excludeResourceRules[]

object

NamedRuleWithOperations는 ResourceNames가 있는 Operations 및 Resources의 튜플입니다.

matchPolicy

string

matchPolicy는 "MatchResources" 목록이 들어오는 요청과 일치하도록 사용되는 방법을 정의합니다. 허용되는 값은 "Exact" 또는 "Equivalent"입니다.

- exact: 지정된 규칙과 정확히 일치하는 경우에만 요청과 일치합니다. 예를 들어 apps/v1, apps/v1beta1 및 extensions/v1beta1을 통해 배포를 수정할 수 있지만 extensions/v1beta1이 포함되지만 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"] ) 에서는 apps/v1beta1 또는 extensions/v1beta1에 전송되지 않습니다.

- equivalent: 다른 API 그룹 또는 버전을 통해도 규칙에 나열된 리소스를 수정하는 경우 요청과 일치합니다. 예를 들어, apps/v1beta1을 통해 배포를 수정할 수 있고 extensions/v1beta1, extensions/v1beta1 및 "rules"가 포함된 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"] ) , apps/v1beta1 또는 extensions/v1beta1에 대한 요청이 apps/v1로 변환되고 ValidA1로 전송됩니다.

기본값은 "Equivalent"입니다.

가능한 enum 값: - "동일한" 은 다른 API 그룹 또는 버전을 통해 규칙에 나열된 리소스를 수정하는 경우 요청이 Webhook로 전송되어야 함을 의미합니다. - "Exact" 은 지정된 규칙과 정확히 일치하는 경우에만 요청이 웹 후크로 전송되어야 함을 의미합니다.

namespaceSelector

LabelSelector

namespaceSelector는 해당 오브젝트의 네임스페이스가 선택기와 일치하는지 여부에 따라 오브젝트에서 승인 제어 정책을 실행할지 여부를 결정합니다. 오브젝트 자체가 네임스페이스인 경우 object.metadata.labels에서 일치가 수행됩니다. 오브젝트가 다른 클러스터 범위 리소스인 경우 정책을 건너뛰지 않습니다.

예를 들어, 네임스페이스가 "0" 또는 "1"의 "runlevel" 또는 "1"과 연결되어 있지 않은 모든 오브젝트에 Webhook를 실행하려면 다음과 같이 선택기를 설정합니다. "namespaceSelector": { "matchExpressions": [ { "key": "runlevel", "operator": "NotIn", "NotIn", "values": [ "0", "1" ] }}

대신 네임스페이스가 "prod" 또는 "staging"의 "environment" 또는 "staging"과 연결된 모든 오브젝트에 대해서만 정책을 실행하려면 다음과 같이 선택기를 설정합니다. "namespaceSelector": { "matchExpressions": [ { "key": "environment", "operator": "In", "values": [ "prod", "staging" ] }}

라벨 선택기에 대한 자세한 내용은 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ 을 참조하십시오.

기본값은 모든 것과 일치하는 빈 LabelSelector입니다.

objectSelector

LabelSelector

ObjectSelector는 오브젝트에 일치하는 라벨이 있는지 여부에 따라 검증을 실행할지 여부를 결정합니다. objectSelector는 cel 검증으로 전송되는 oldObject 및 newObject 둘 다에 대해 평가되며 오브젝트 중 하나가 선택기와 일치하는 경우 일치하는 것으로 간주됩니다. null 오브젝트(삭제의 경우oldObject 또는 newObject) 또는 라벨이 있을 수 없는 오브젝트(예: DeploymentRollback 또는 PodProxyOptions 오브젝트)는 일치하는 것으로 간주되지 않습니다. 최종 사용자는 레이블을 설정하여 승인 Webhook를 건너뛸 수 있으므로 Webhook가 옵트인인 경우에만 오브젝트 선택기를 사용합니다. 기본값은 모든 것과 일치하는 빈 LabelSelector입니다.

resourceRules

array

ResourceRules는 ValidatingAdmissionPolicy와 일치하는 resources/subresource에 대한 작업을 설명합니다. 정책과 모든 규칙과 일치하는 경우 작업이 중요합니다.

resourceRules[]

object

NamedRuleWithOperations는 ResourceNames가 있는 Operations 및 Resources의 튜플입니다.

6.1.3. .spec.matchResources.excludeResourceRules

설명
ExcludeResourceRules는 ValidatingAdmissionPolicy가 중요하지 않아야 하는 resources/subresource에 대한 작업을 설명합니다. exclude 규칙은 include 규칙보다 우선합니다(리소스가 둘 다 일치하는 경우 제외됨)
유형
array

6.1.4. .spec.matchResources.excludeResourceRules[]

설명
NamedRuleWithOperations는 ResourceNames가 있는 Operations 및 Resources의 튜플입니다.
유형
object
속성유형설명

apiGroups

배열(문자열)

APIGroups는 리소스가 속한 API 그룹입니다. ''는 모든 그룹입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다.

apiVersions

배열(문자열)

APIVersions는 리소스가 속한 API 버전입니다. ''는 모든 버전입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다.

작업

배열(문자열)

작업은 승인 후크가 모든 작업 및 추가된 향후 승인 작업에 대해 - CREATE, UPDATE, DELETE, CONNECT 또는 *에 대한 관심 있는 작업입니다. '*'가 있는 경우 슬라이스의 길이는 하나여야 합니다. 필수 항목입니다.

resourceNames

배열(문자열)

resourceNames는 규칙이 적용되는 선택적 이름 목록입니다. 빈 세트는 모든 것이 허용됨을 의미합니다.

resources

배열(문자열)

리소스는 이 규칙이 적용되는 리소스 목록입니다.

예를 들어 'pods'는 Pod를 의미합니다. 'pods/log'는 Pod의 로그 하위 리소스를의미합니다. 'pods/'는 모든 리소스를 의미하지만 하위 리소스는 아닙니다. 'pods/'는 Pod의 모든 하위 리소스를의미합니다. '/*'는 모든 스케일 하위 리소스를 의미합니다./*는 모든 리소스 및 해당 하위 리소스를 의미합니다.

와일드카드가 있는 경우 검증 규칙은 리소스가 서로 겹치지 않도록 합니다.

enclosing 오브젝트에 따라 하위 리소스가 허용되지 않을 수 있습니다. 필수 항목입니다.

scope

string

scope는 이 규칙의 범위를 지정합니다. 유효한 값은 "Cluster", "Namespaced", "" "Cluster"는 클러스터 범위 리소스만 이 규칙과 일치함을 의미합니다. 네임스페이스 API 오브젝트는 클러스터 범위입니다. "네임스페이스됨"은 네임스페이스가 지정된 리소스만 이 규칙과 일치함을 의미합니다. ""은 범위 제한이 없음을 의미합니다. 하위 리소스는 상위 리소스의 범위와 일치합니다. 기본값은 "*"입니다.

6.1.5. .spec.matchResources.resourceRules

설명
ResourceRules는 ValidatingAdmissionPolicy와 일치하는 resources/subresource에 대한 작업을 설명합니다. 정책과 모든 규칙과 일치하는 경우 작업이 중요합니다.
유형
array

6.1.6. .spec.matchResources.resourceRules[]

설명
NamedRuleWithOperations는 ResourceNames가 있는 Operations 및 Resources의 튜플입니다.
유형
object
속성유형설명

apiGroups

배열(문자열)

APIGroups는 리소스가 속한 API 그룹입니다. ''는 모든 그룹입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다.

apiVersions

배열(문자열)

APIVersions는 리소스가 속한 API 버전입니다. ''는 모든 버전입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다.

작업

배열(문자열)

작업은 승인 후크가 모든 작업 및 추가된 향후 승인 작업에 대해 - CREATE, UPDATE, DELETE, CONNECT 또는 *에 대한 관심 있는 작업입니다. '*'가 있는 경우 슬라이스의 길이는 하나여야 합니다. 필수 항목입니다.

resourceNames

배열(문자열)

resourceNames는 규칙이 적용되는 선택적 이름 목록입니다. 빈 세트는 모든 것이 허용됨을 의미합니다.

resources

배열(문자열)

리소스는 이 규칙이 적용되는 리소스 목록입니다.

예를 들어 'pods'는 Pod를 의미합니다. 'pods/log'는 Pod의 로그 하위 리소스를의미합니다. 'pods/'는 모든 리소스를 의미하지만 하위 리소스는 아닙니다. 'pods/'는 Pod의 모든 하위 리소스를의미합니다. '/*'는 모든 스케일 하위 리소스를 의미합니다./*는 모든 리소스 및 해당 하위 리소스를 의미합니다.

와일드카드가 있는 경우 검증 규칙은 리소스가 서로 겹치지 않도록 합니다.

enclosing 오브젝트에 따라 하위 리소스가 허용되지 않을 수 있습니다. 필수 항목입니다.

scope

string

scope는 이 규칙의 범위를 지정합니다. 유효한 값은 "Cluster", "Namespaced", "" "Cluster"는 클러스터 범위 리소스만 이 규칙과 일치함을 의미합니다. 네임스페이스 API 오브젝트는 클러스터 범위입니다. "네임스페이스됨"은 네임스페이스가 지정된 리소스만 이 규칙과 일치함을 의미합니다. ""은 범위 제한이 없음을 의미합니다. 하위 리소스는 상위 리소스의 범위와 일치합니다. 기본값은 "*"입니다.

6.1.7. .spec.paramRef

설명
ParamRef는 정책 바인딩에서 적용되는 규칙의 표현식에 대한 입력으로 사용할 매개변수를 찾는 방법을 설명합니다.
유형
object
속성유형설명

name

string

name은 참조되는 리소스의 이름입니다.

이름 또는 선택기 중 하나를 설정해야 하지만 nameselector 는 함께 사용할 수 없는 속성입니다. 하나를 설정하는 경우 다른 하나는 설정되지 않아야 합니다.

모든 승인 요청에 사용되는 단일 매개변수는 name 필드를 설정하고, 선택기 를 비워 두고, paramKind 가 namespace-scoped인 경우 네임스페이스를 설정하여 구성할 수 있습니다.

네임스페이스

string

네임스페이스는 참조된 리소스의 네임스페이스입니다. params 검색을 특정 네임스페이스로 제한할 수 있습니다. nameselector 필드에 모두 적용됩니다.

네임스페이스별 매개변수는 정책에 네임스페이스 범위 paramKind 를 지정하고 이 필드를 비워 두면 사용할 수 있습니다.

- paramKind 가 클러스터 범위인 경우 이 필드는 설정되지 않아야 합니다. 이 필드를 설정하면 구성 오류가 발생합니다.

- paramKind 가 네임스페이스 범위인 경우 이 필드가 설정되지 않은 경우 승인에 대해 평가 중인 오브젝트의 네임스페이스가 사용됩니다. 이 값이 비어 있으면 바인딩이 클러스터 범위 리소스와 일치하지 않아야 하므로 오류가 발생합니다.

parameterNotFoundAction

string

parameterNotFoundAction 은 리소스가 존재하고 이름 또는 선택기가 유효한 경우 바인딩 동작을 제어하지만 바인딩과 일치하는 매개변수는 없습니다. 값을 Allow 로 설정하면 일치하는 매개변수가 바인딩에 의해 성공적으로 검증되는 것으로 취급되지 않습니다. Deny 로 설정하면 일치하는 매개변수가 정책의 failurePolicy 가 적용되지 않습니다.

허용되는 값은 허용 또는 거부입니다.

필수 항목

선택기

LabelSelector

선택기를 사용하여 라벨에 따라 여러 param 오브젝트와 일치시킬 수 있습니다. 제공 선택기: {}은 ParamKind의 모든 리소스와 일치합니다.

여러 매개변수가 발견되면 모두 정책 표현식으로 평가되고 결과는 ANDed입니다.

이름 또는 선택기 중 하나를 설정해야 하지만 nameselector 는 함께 사용할 수 없는 속성입니다. 하나를 설정하는 경우 다른 하나는 설정되지 않아야 합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.