3.3. Ingress 컨트롤러 구성 매개변수
IngressController
CR(사용자 정의 리소스)에는 조직의 특정 요구 사항을 충족하도록 구성할 수 있는 선택적 구성 매개변수가 포함되어 있습니다.
매개변수 | 설명 |
---|---|
|
비어 있는 경우 기본값은 |
|
|
|
클라우드 환경의 경우
다음
설정되지 않은 경우, 기본값은
대부분의 플랫폼의 경우
클러스터가 배포된 후
|
|
보안에는 키와 데이터, 즉 *
설정하지 않으면 와일드카드 인증서가 자동으로 생성되어 사용됩니다. 인증서는 Ingress 컨트롤러 생성된 인증서 또는 사용자 지정 인증서는 OpenShift Dedicated 기본 제공 OAuth 서버와 자동으로 통합됩니다. |
|
|
|
|
|
설정하지 않으면 기본값이 사용됩니다. 참고
nodePlacement: nodeSelector: matchLabels: kubernetes.io/os: linux tolerations: - effect: NoSchedule operator: Exists |
|
설정되지 않으면, 기본값은
Ingress 컨트롤러의 최소 TLS 버전은 참고
구성된 보안 프로파일의 암호 및 최소 TLS 버전은 중요
Ingress Operator는 |
|
|
|
|
|
|
|
기본적으로 정책은
이러한 조정은 HTTP/1을 사용하는 경우에만 일반 텍스트, 에지 종료 및 재암호화 경로에 적용됩니다.
요청 헤더의 경우 이러한 조정은
|
|
|
|
|
|
캡처하려는 모든 쿠키의 경우 다음 매개변수가
예를 들면 다음과 같습니다. httpCaptureCookies: - matchType: Exact maxLength: 128 name: MYCOOKIE |
|
httpCaptureHeaders: request: - maxLength: 256 name: Connection - maxLength: 128 name: User-Agent response: - maxLength: 256 name: Content-Type - maxLength: 256 name: Content-Length |
|
|
|
|
|
이러한 연결은 로드 밸런서 상태 프로브 또는 웹 브라우저 추측 연결(preconnect)에서 제공되며 무시해도 됩니다. 그러나 이러한 요청은 네트워크 오류로 인해 발생할 수 있으므로 이 필드를 |
3.3.1. Ingress 컨트롤러 TLS 보안 프로필
TLS 보안 프로필은 서버가 서버에 연결할 때 연결 클라이언트가 사용할 수 있는 암호를 규제하는 방법을 제공합니다.
3.3.1.1. TLS 보안 프로필 이해
TLS(Transport Layer Security) 보안 프로필을 사용하여 다양한 OpenShift Dedicated 구성 요소에 필요한 TLS 암호를 정의할 수 있습니다. OpenShift Dedicated TLS 보안 프로필은 Mozilla 권장 구성 을 기반으로 합니다.
각 구성 요소에 대해 다음 TLS 보안 프로필 중 하나를 지정할 수 있습니다.
Profile | 설명 |
---|---|
| 이 프로필은 레거시 클라이언트 또는 라이브러리와 함께 사용하기 위한 것입니다. 프로필은 이전 버전과의 호환성 권장 구성을 기반으로 합니다.
참고 Ingress 컨트롤러의 경우 최소 TLS 버전이 1.0에서 1.1로 변환됩니다. |
| 이 프로필은 대부분의 클라이언트에서 권장되는 구성입니다. Ingress 컨트롤러, kubelet 및 컨트롤 플레인의 기본 TLS 보안 프로필입니다. 프로필은 중간 호환성 권장 구성을 기반으로 합니다.
|
| 이 프로필은 이전 버전과의 호환성이 필요하지 않은 최신 클라이언트와 사용하기 위한 것입니다. 이 프로필은 최신 호환성 권장 구성을 기반으로 합니다.
|
| 이 프로필을 사용하면 사용할 TLS 버전과 암호를 정의할 수 있습니다. 주의
|
미리 정의된 프로파일 유형 중 하나를 사용하는 경우 유효한 프로파일 구성은 릴리스마다 변경될 수 있습니다. 예를 들어 릴리스 X.Y.Z에 배포된 중간 프로필을 사용하는 사양이 있는 경우 릴리스 X.Y.Z+1로 업그레이드하면 새 프로필 구성이 적용되어 롤아웃이 발생할 수 있습니다.
3.3.1.2. Ingress 컨트롤러의 TLS 보안 프로필 구성
Ingress 컨트롤러에 대한 TLS 보안 프로필을 구성하려면 IngressController
CR(사용자 정의 리소스)을 편집하여 사전 정의된 또는 사용자 지정 TLS 보안 프로필을 지정합니다. TLS 보안 프로필이 구성되지 않은 경우 기본값은 API 서버에 설정된 TLS 보안 프로필을 기반으로 합니다.
Old
TLS 보안 프로파일을 구성하는 샘플 IngressController
CR
apiVersion: operator.openshift.io/v1 kind: IngressController ... spec: tlsSecurityProfile: old: {} type: Old ...
TLS 보안 프로필은 Ingress 컨트롤러의 TLS 연결에 대한 최소 TLS 버전과 TLS 암호를 정의합니다.
Status.Tls Profile
아래의 IngressController
CR(사용자 정의 리소스) 및 Spec.Tls Security Profile
아래 구성된 TLS 보안 프로필에서 구성된 TLS 보안 프로필의 암호 및 최소 TLS 버전을 확인할 수 있습니다. Custom
TLS 보안 프로필의 경우 특정 암호 및 최소 TLS 버전이 두 매개변수 아래에 나열됩니다.
HAProxy Ingress 컨트롤러 이미지는 TLS 1.3
및 Modern
프로필을 지원합니다.
Ingress Operator는 Old
또는 Custom
프로파일의 TLS 1.0
을 1.1
로 변환합니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
절차
openshift-ingress-operator
프로젝트에서IngressController
CR을 편집하여 TLS 보안 프로필을 구성합니다.$ oc edit IngressController default -n openshift-ingress-operator
spec.tlsSecurityProfile
필드를 추가합니다.Custom
프로필에 대한IngressController
CR 샘플apiVersion: operator.openshift.io/v1 kind: IngressController ... spec: tlsSecurityProfile: type: Custom 1 custom: 2 ciphers: 3 - ECDHE-ECDSA-CHACHA20-POLY1305 - ECDHE-RSA-CHACHA20-POLY1305 - ECDHE-RSA-AES128-GCM-SHA256 - ECDHE-ECDSA-AES128-GCM-SHA256 minTLSVersion: VersionTLS11 ...
- 파일을 저장하여 변경 사항을 적용합니다.
검증
IngressController
CR에 프로파일이 설정되어 있는지 확인합니다.$ oc describe IngressController default -n openshift-ingress-operator
출력 예
Name: default Namespace: openshift-ingress-operator Labels: <none> Annotations: <none> API Version: operator.openshift.io/v1 Kind: IngressController ... Spec: ... Tls Security Profile: Custom: Ciphers: ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-RSA-CHACHA20-POLY1305 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-GCM-SHA256 Min TLS Version: VersionTLS11 Type: Custom ...
3.3.1.3. 상호 TLS 인증 구성
spec.clientTLS
값을 설정하여 mTLS(mTLS) 인증을 사용하도록 Ingress 컨트롤러를 구성할 수 있습니다. clientTLS
값은 클라이언트 인증서를 확인하도록 Ingress 컨트롤러를 구성합니다. 이 구성에는 구성 맵에 대한 참조인 clientCA
값 설정이 포함됩니다. 구성 맵에는 클라이언트의 인증서를 확인하는 데 사용되는 PEM 인코딩 CA 인증서 번들이 포함되어 있습니다. 필요한 경우 인증서 제목 필터 목록을 구성할 수도 있습니다.
clientCA
값이 X509v3 인증서 취소 목록(CRL) 배포 지점을 지정하는 경우 Ingress Operator는 각 인증서에 지정된 HTTP URI X509v3 CRL Distribution Point
를 기반으로 CRL 구성 맵을 다운로드하고 관리합니다. Ingress 컨트롤러는 mTLS/TLS 협상 중에 이 구성 맵을 사용합니다. 유효한 인증서를 제공하지 않는 요청은 거부됩니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - PEM 인코딩 CA 인증서 번들이 있습니다.
CA 번들이 CRL 배포 지점을 참조하는 경우 클라이언트 CA 번들에 엔드센티 또는 리프 인증서도 포함해야 합니다. RFC 5280에 설명된 대로 이 인증서에는
CRL 배포 지점
아래에 HTTP URI가 포함되어 있어야 합니다. 예를 들면 다음과 같습니다.Issuer: C=US, O=Example Inc, CN=Example Global G2 TLS RSA SHA256 2020 CA1 Subject: SOME SIGNED CERT X509v3 CRL Distribution Points: Full Name: URI:http://crl.example.com/example.crl
절차
openshift-config
네임스페이스에서 CA 번들에서 구성 맵을 생성합니다.$ oc create configmap \ router-ca-certs-default \ --from-file=ca-bundle.pem=client-ca.crt \1 -n openshift-config
- 1
- 구성 맵 데이터 키는
ca-bundle.pem
이어야 하며 데이터 값은 PEM 형식의 CA 인증서여야 합니다.
openshift-ingress-operator
프로젝트에서IngressController
리소스를 편집합니다.$ oc edit IngressController default -n openshift-ingress-operator
spec.clientTLS
필드 및 하위 필드를 추가하여 상호 TLS를 구성합니다.패턴 필터링을 지정하는
clientTLS
프로필에 대한IngressController
CR 샘플apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: default namespace: openshift-ingress-operator spec: clientTLS: clientCertificatePolicy: Required clientCA: name: router-ca-certs-default allowedSubjectPatterns: - "^/CN=example.com/ST=NC/C=US/O=Security/OU=OpenShift$"
-
선택 사항, 다음 명령을 입력하여
allowedSubjectPatterns
에 대한 Distinguished Name (DN)을 가져옵니다.
$ openssl x509 -in custom-cert.pem -noout -subject subject= /CN=example.com/ST=NC/C=US/O=Security/OU=OpenShift