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은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 표준 오브젝트 메타데이터; 자세한 정보: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. | |
|
| ValidatingAdmissionPolicyBindingSpec은 ValidatingAdmissionPolicyBinding의 사양입니다. |
6.1.1. .spec
- 설명
- ValidatingAdmissionPolicyBindingSpec은 ValidatingAdmissionPolicyBinding의 사양입니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| MatchResources는 일치 기준을 충족하는지 여부에 따라 오브젝트에 대한 허용 제어 정책을 실행할지 여부를 결정합니다. exclude 규칙은 include 규칙보다 우선합니다(리소스가 둘 다 일치하는 경우 제외됨) |
|
| ParamRef는 정책 바인딩에서 적용되는 규칙의 표현식에 대한 입력으로 사용할 매개변수를 찾는 방법을 설명합니다. |
|
| PolicyName은 ValidatingAdmissionPolicyBinding이 바인딩되는 ValidatingAdmissionPolicy 이름을 참조합니다. 참조된 리소스가 없는 경우 이 바인딩은 유효하지 않은 것으로 간주되며 필수 사항은 무시됩니다. |
|
| validationActions는 참조된 ValidatingAdmissionPolicy의 유효성 검사를 선언합니다. 유효성 검사가 false로 평가되면 항상 이러한 조치에 따라 적용됩니다. ValidatingAdmissionPolicy에서 정의한 오류는 FailurePolicy가 Fail로 설정된 경우에만 이러한 작업에 따라 적용됩니다. 여기에는 컴파일 오류, 런타임 오류 및 정책 구성이 포함됩니다. validationActions는 작업 값 세트로 선언됩니다. 순서는 중요하지 않습니다. validationActions에는 동일한 작업의 중복이 포함되어 있지 않을 수 있습니다. 지원되는 작업 값은 다음과 같습니다. "deny"는 유효성 검사 실패로 인해 요청이 거부됨을 지정합니다. "warn"은 경고 코드가 299인 HTTP 경고 헤더의 요청 클라이언트에 유효성 검사 오류가 보고되도록 지정합니다. 허용 또는 거부 승인 응답에 대해 경고를 보낼 수 있습니다.
"audit"는 요청에 대해 게시된 감사 이벤트에 유효성 검사 오류가 포함되도록 지정합니다. 감사 이벤트에는 검증 실패에 대한 세부 정보가 포함된 값이 있는 클라이언트는 인식할 수 없는 값을 무시하여 추가 값을 처리해야 합니다. 이 조합은 API 응답 본문과 HTTP 경고 헤더에서 검증 실패를 불필요하게 복제해야 하므로 "deny" 및 "Warn"을 함께 사용할 수 없습니다. 필수 항목입니다. |
6.1.2. .spec.matchResources
- 설명
- MatchResources는 일치 기준을 충족하는지 여부에 따라 오브젝트에 대한 허용 제어 정책을 실행할지 여부를 결정합니다. exclude 규칙은 include 규칙보다 우선합니다(리소스가 둘 다 일치하는 경우 제외됨)
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| ExcludeResourceRules는 ValidatingAdmissionPolicy가 중요하지 않아야 하는 resources/subresource에 대한 작업을 설명합니다. exclude 규칙은 include 규칙보다 우선합니다(리소스가 둘 다 일치하는 경우 제외됨) |
|
| NamedRuleWithOperations는 ResourceNames가 있는 Operations 및 Resources의 튜플입니다. |
|
| matchPolicy는 "MatchResources" 목록이 들어오는 요청과 일치하도록 사용되는 방법을 정의합니다. 허용되는 값은 "Exact" 또는 "Equivalent"입니다.
- exact: 지정된 규칙과 정확히 일치하는 경우에만 요청과 일치합니다. 예를 들어 apps/v1, apps/v1beta1 및 extensions/v1beta1을 통해 배포를 수정할 수 있지만 extensions/v1beta1이 포함되지만
- equivalent: 다른 API 그룹 또는 버전을 통해도 규칙에 나열된 리소스를 수정하는 경우 요청과 일치합니다. 예를 들어, apps/v1beta1을 통해 배포를 수정할 수 있고 extensions/v1beta1, extensions/v1beta1 및 "rules"가 포함된 기본값은 "Equivalent"입니다.
가능한 enum 값: - |
| 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는 오브젝트에 일치하는 라벨이 있는지 여부에 따라 검증을 실행할지 여부를 결정합니다. objectSelector는 cel 검증으로 전송되는 oldObject 및 newObject 둘 다에 대해 평가되며 오브젝트 중 하나가 선택기와 일치하는 경우 일치하는 것으로 간주됩니다. null 오브젝트(삭제의 경우oldObject 또는 newObject) 또는 라벨이 있을 수 없는 오브젝트(예: DeploymentRollback 또는 PodProxyOptions 오브젝트)는 일치하는 것으로 간주되지 않습니다. 최종 사용자는 레이블을 설정하여 승인 Webhook를 건너뛸 수 있으므로 Webhook가 옵트인인 경우에만 오브젝트 선택기를 사용합니다. 기본값은 모든 것과 일치하는 빈 LabelSelector입니다. | |
|
| ResourceRules는 ValidatingAdmissionPolicy와 일치하는 resources/subresource에 대한 작업을 설명합니다. 정책과 모든 규칙과 일치하는 경우 작업이 중요합니다. |
|
| 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는 리소스가 속한 API 그룹입니다. ''는 모든 그룹입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다. |
|
| APIVersions는 리소스가 속한 API 버전입니다. ''는 모든 버전입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다. |
|
| 작업은 승인 후크가 모든 작업 및 추가된 향후 승인 작업에 대해 - CREATE, UPDATE, DELETE, CONNECT 또는 *에 대한 관심 있는 작업입니다. '*'가 있는 경우 슬라이스의 길이는 하나여야 합니다. 필수 항목입니다. |
|
| resourceNames는 규칙이 적용되는 선택적 이름 목록입니다. 빈 세트는 모든 것이 허용됨을 의미합니다. |
|
| 리소스는 이 규칙이 적용되는 리소스 목록입니다. 예를 들어 'pods'는 Pod를 의미합니다. 'pods/log'는 Pod의 로그 하위 리소스를의미합니다. 'pods/'는 모든 리소스를 의미하지만 하위 리소스는 아닙니다. 'pods/'는 Pod의 모든 하위 리소스를의미합니다. '/*'는 모든 스케일 하위 리소스를 의미합니다./*는 모든 리소스 및 해당 하위 리소스를 의미합니다. 와일드카드가 있는 경우 검증 규칙은 리소스가 서로 겹치지 않도록 합니다. enclosing 오브젝트에 따라 하위 리소스가 허용되지 않을 수 있습니다. 필수 항목입니다. |
|
| 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는 리소스가 속한 API 그룹입니다. ''는 모든 그룹입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다. |
|
| APIVersions는 리소스가 속한 API 버전입니다. ''는 모든 버전입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다. |
|
| 작업은 승인 후크가 모든 작업 및 추가된 향후 승인 작업에 대해 - CREATE, UPDATE, DELETE, CONNECT 또는 *에 대한 관심 있는 작업입니다. '*'가 있는 경우 슬라이스의 길이는 하나여야 합니다. 필수 항목입니다. |
|
| resourceNames는 규칙이 적용되는 선택적 이름 목록입니다. 빈 세트는 모든 것이 허용됨을 의미합니다. |
|
| 리소스는 이 규칙이 적용되는 리소스 목록입니다. 예를 들어 'pods'는 Pod를 의미합니다. 'pods/log'는 Pod의 로그 하위 리소스를의미합니다. 'pods/'는 모든 리소스를 의미하지만 하위 리소스는 아닙니다. 'pods/'는 Pod의 모든 하위 리소스를의미합니다. '/*'는 모든 스케일 하위 리소스를 의미합니다./*는 모든 리소스 및 해당 하위 리소스를 의미합니다. 와일드카드가 있는 경우 검증 규칙은 리소스가 서로 겹치지 않도록 합니다. enclosing 오브젝트에 따라 하위 리소스가 허용되지 않을 수 있습니다. 필수 항목입니다. |
|
| scope는 이 규칙의 범위를 지정합니다. 유효한 값은 "Cluster", "Namespaced", "" "Cluster"는 클러스터 범위 리소스만 이 규칙과 일치함을 의미합니다. 네임스페이스 API 오브젝트는 클러스터 범위입니다. "네임스페이스됨"은 네임스페이스가 지정된 리소스만 이 규칙과 일치함을 의미합니다. ""은 범위 제한이 없음을 의미합니다. 하위 리소스는 상위 리소스의 범위와 일치합니다. 기본값은 "*"입니다. |
6.1.7. .spec.paramRef
- 설명
- ParamRef는 정책 바인딩에서 적용되는 규칙의 표현식에 대한 입력으로 사용할 매개변수를 찾는 방법을 설명합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| name은 참조되는 리소스의 이름입니다.
모든 승인 요청에 사용되는 단일 매개변수는 |
|
|
네임스페이스는 참조된 리소스의 네임스페이스입니다. params 검색을 특정 네임스페이스로 제한할 수 있습니다.
네임스페이스별 매개변수는 정책에 네임스페이스 범위
-
- |
|
|
허용되는 값은 필수 항목 |
| 선택기를 사용하여 라벨에 따라 여러 param 오브젝트와 일치시킬 수 있습니다. 제공 선택기: {}은 ParamKind의 모든 리소스와 일치합니다. 여러 매개변수가 발견되면 모두 정책 표현식으로 평가되고 결과는 ANDed입니다.
|