8.2. 직접 인증을 위해 외부 OIDC ID 공급자 구성
외부 OIDC ID 공급자를 직접 사용하여 인증을 위한 토큰을 발행하도록 OpenShift Container Platform을 구성할 수 있습니다.
OIDC ID 공급자를 통한 직접 인증은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
-
TechPreviewNoUpgrade
기능 세트를 활성화했습니다. 외부 인증 공급자를 구성했습니다.
이 절차에서는 Keycloak을 ID 공급자로 사용하고 다음 클라이언트가 구성되어 있다고 가정합니다.
-
https://<openshift_console_route>/auth/callback
으로 설정된 유효한 리디렉션 URI가 있는console-test
라는 웹 콘솔용 비공개 클라이언트 -
http://localhost:8080
로 설정된 유효한 리디렉션 URI를 사용하여oc-cli-test
라는 OpenShift CLI (oc
)의 공용 클라이언트
-
-
클러스터의 설치 프로그램에서 생성한
kubeconfig
파일에 액세스할 수 있습니다. - 인증을 위해 내장 OAuth 서버를 사용하여 되돌리야 하는 경우 기존 인증 구성을 백업했습니다.
프로세스
-
설치 프로그램에서 생성된
kubeconfig
파일 또는 다른 장기 로그인 방법을 클러스터 관리자로 사용하고 있는지 확인합니다. 다음 명령을 실행하여 웹 콘솔로 인증할 수 있는 보안을 생성합니다.
oc create secret generic console-secret \ --from-literal=clientSecret=<secret_value> \ -n openshift-config
$ oc create secret generic console-secret \ --from-literal=clientSecret=<secret_value> \
1 -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;secret_value
>를 ID 공급자의console-test
클라이언트의 보안 값으로 바꿉니다.
선택 사항: 다음 명령을 실행하여 공급자의 인증 기관 번들이 포함된 구성 맵을 생성합니다.
oc create configmap keycloak-oidc-ca --from-file=ca-bundle.crt=my-directory/ca-bundle.crt \ -n openshift-config
$ oc create configmap keycloak-oidc-ca --from-file=ca-bundle.crt=my-directory/ca-bundle.crt \
1 -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 공급자의
ca-bundle.crt
파일의 경로를 지정합니다.
다음 명령을 실행하여 인증 구성을 편집합니다.
oc edit authentication.config/cluster
$ oc edit authentication.config/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow type
필드를OIDC
로 설정하고, 공급자의oidcProviders
필드를 구성하고,webhookTokenAuthenticator
필드를null
로 설정하여 인증 구성을 업데이트합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OIDC 공급자 구성입니다. 현재는 하나의 OIDC 공급자 구성만 허용됩니다.
- 2
- 클러스터 ID에 대한 그룹 이름을 구성하는 클레임의 이름입니다.
- 3
- 클러스터 ID의 사용자 이름을 구성하는 클레임의 이름입니다.
- 4
- 이 인증 공급자가 토큰을 발행하는 대상 목록입니다.
- 5
ca-bundle.crt
키가 포함된 구성 맵의 이름입니다. 설정되지 않은 경우 시스템 신뢰가 대신 사용됩니다.- 6
- 토큰 발행자의 URL입니다.
- 7
- 외부 OIDC 공급자의 이름입니다.
- 8
- 공급자가 OpenShift CLI(
oc
)에 사용하는 클라이언트 ID입니다. - 9
- 공급자가 OpenShift Container Platform 웹 콘솔에 사용하는 클라이언트 ID입니다.
- 10
- 콘솔 클라이언트의 시크릿 값을 저장하는 시크릿의 이름입니다.
- 11
- 외부
OIDC
ID 공급자를 사용하도록 지정하려면 OIDC로 설정해야 합니다. - 12
type
이OIDC
로 설정된 경우null
로 설정해야 합니다.
사용 가능한 모든 매개변수에 대한 자세한 내용은 "OIDC 공급자 구성 매개변수"를 참조하십시오.
- 변경 사항을 종료하고 저장하여 새 구성을 적용합니다.
클러스터가 모든 노드에 새 버전을 롤아웃할 때까지 기다립니다.
다음 명령을 실행하여 Kubernetes API 서버 Operator 상태를 확인합니다.
oc get co kube-apiserver
$ oc get co kube-apiserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE kube-apiserver 4.19.0 True True False 85m NodeInstallerProgressing: 2 node are at revision 8; 1 node is at revision 10
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE kube-apiserver 4.19.0 True True False 85m NodeInstallerProgressing: 2 node are at revision 8; 1 node is at revision 10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 위 예제의 메시지는 하나의 노드가 새 버전으로 진행되었으며 두 노드가 아직 업데이트되지 않았음을 보여줍니다. 클러스터 크기에 따라 모든 노드에 새 버전을 롤아웃하는 데 20분 이상 걸릴 수 있습니다.
-
문제를 해결하려면 Cluster Authentication Operator 및
kube-apiserver
Pod 로그에서 오류가 있는지 확인할 수도 있습니다.
검증
ID 공급자로 인증하여 OpenShift CLI(
oc
)에 로그인할 수 있는지 확인합니다.다음 명령을 실행하여 로그인합니다.
oc login --exec-plugin=oc-oidc \ --issuer-url=https://keycloak-keycloak.apps.example.com/realms/master \ --client-id=oc-cli-test \ --extra-scopes=email --callback-port=8080 \ --oidc-certificate-authority my-directory/ca-bundle.crt
$ oc login --exec-plugin=oc-oidc \
1 --issuer-url=https://keycloak-keycloak.apps.example.com/realms/master \
2 --client-id=oc-cli-test \
3 --extra-scopes=email --callback-port=8080 \ --oidc-certificate-authority my-directory/ca-bundle.crt
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Please visit the following URL in your browser: http://localhost:8080
Please visit the following URL in your browser: http://localhost:8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 브라우저에서 http://localhost:8080 를 엽니다.
ID 공급자의 인증 정보로 인증합니다.
성공적으로 인증한 후 터미널에 다음 출력과 유사한 메시지가 표시됩니다.
Logged into "https://api.my-cluster.example.com:6443" as "oidc-user-test:user1@example.com" from an external oidc issuer.
Logged into "https://api.my-cluster.example.com:6443" as "oidc-user-test:user1@example.com" from an external oidc issuer.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ID 공급자로 인증하여 OpenShift Container Platform 웹 콘솔에 로그인할 수 있는지 확인합니다.
브라우저에서 클러스터의 웹 콘솔 URL을 엽니다.
로그인할 ID 공급자로 리디렉션됩니다.
ID 공급자의 인증 정보로 인증합니다.
성공적으로 로그인하여 OpenShift Container Platform 웹 콘솔로 리디렉션되었는지 확인합니다.
8.2.1. OIDC 공급자 구성 매개변수 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 직접 인증에 사용 가능한 모든 OIDC 공급자 매개변수가 나열되어 있습니다.
매개변수 | 설명 |
---|---|
| ID 공급자가 발행한 JWT 토큰의 클레임을 클러스터 ID로 변환하는 데 Kubernetes API 서버에서 사용할 규칙을 구성합니다. |
| ID 공급자가 발행한 JWT 토큰의 클레임에서 클러스터 ID 그룹을 구성하는 방법을 구성합니다. 클레임을 참조할 때 클레임이 JWT 토큰에 있는 경우 해당 값은 쉼표로 구분된 그룹 목록이어야 합니다. |
| 이 매핑과 연결된 클러스터 ID 필드에 값이 할당된 JWT 토큰 클레임을 구성합니다. |
| JWT 클레임을 클러스터 ID 속성에 매핑하는 프로세스 중에 클러스터 ID 속성에 적용되는 접두사를 구성합니다. |
| ID 공급자가 발행한 JWT 토큰의 클레임에서 클러스터 ID의 사용자 이름을 구성하는 방법을 구성합니다. |
| 이 매핑과 연결된 클러스터 ID 필드에 값이 할당된 JWT 토큰 클레임을 구성합니다. |
|
JWT 클레임 값보다 앞에 추가해야 하는 접두사를 구성합니다. |
|
JWT 클레임을 클러스터 ID 속성에 매핑하는 프로세스 중에 클러스터 ID 사용자 이름 속성에 적용되는 접두사를 구성합니다. 빈 문자열( |
|
생략하면, 이는 의견이 없으며 플랫폼은 시간이 지남에 따라 변경될 수 있는 적용된 접두사를 선택할 수 있음을 의미합니다.
현재 플랫폼은 클레임이 |
|
Kubernetes API 서버에서 ID 공급자가 발행한 JWT 토큰의 클레임을 검증하는 데 사용할 규칙을 구성합니다. 검증 규칙은 |
| Kubernetes API 서버가 수신 JWT가 이 ID 공급자에 유효한지 확인하는 데 사용하는 필수 클레임 및 값을 구성합니다. |
|
필요한 클레임의 이름을 구성합니다. JWT 클레임에서 가져온 경우 클레임은 문자열 값이어야 합니다. 빈 문자열( |
|
들어오는 JWT |
|
검증 규칙 유형을 구성합니다. 허용되는 값은
|
| 플랫폼이 ID 공급자와 상호 작용하는 방법 및 ID 공급자에서 발행한 토큰을 Kubernetes API 서버에서 평가하는 방법을 구성하는 필수 필드입니다. |
|
ID 공급자가 발행한 JWT 토큰을 구성하는 필수 필드를 발행해야 합니다. 하나 이상의 항목은 JWT 토큰의 |
|
검색 정보를 가져올 때 Kubernetes API 서버에서 사용하는 인증 기관을 구성하여 ID 공급자에 대한 연결을 검증합니다. 지정하지 않으면 시스템 신뢰가 사용됩니다. 지정된 경우 구성 맵의 |
| 참조된 구성 맵의 이름입니다. |
|
ID 공급자가 토큰을 발행하는 데 사용되는 URL을 구성합니다. Kubernetes API 서버는 구성된 ID 공급자의 issuerURL과 JWT의 |
|
ID 공급자와 관련된 사람이 읽을 수 있는 고유 식별자를 구성하는 필수 필드입니다. 이는 여러 ID 공급자를 구분하는 데 사용되며 토큰 검증 또는 인증 메커니즘에 영향을 미치지 않습니다. 빈 문자열( |
| 플랫폼 클라이언트가 ID 공급자의 토큰을 요청해야 하는 클러스터상의 방법을 구성합니다. 항목이 20개를 초과해서는 안 되며 항목에는 네임스페이스/이름 쌍이 있어야 합니다. |
|
플랫폼 구성 요소에서 ID 공급자에 대한 인증 요청에 사용하는 ID 공급자의 클라이언트 ID를 구성합니다. ID 공급자는 플랫폼 구성 요소에 이 식별자를 수락하여 ID 공급자를 인증 모드로 사용할 수 있어야 합니다. 빈 문자열( |
| ID 공급자에 대한 인증 요청을 수행할 때 플랫폼 구성 요소에서 사용하는 클라이언트 시크릿을 구성합니다. 지정하지 않으면 ID 공급자에 인증 요청을 수행할 때 클라이언트 시크릿이 사용되지 않습니다.
지정된 경우 공용 클라이언트에는 클라이언트 시크릿이 필요하지 않지만 개인 클라이언트는 ID 공급자와 함께 작업하는 데 클라이언트 시크릿이 필요합니다. |
| 참조된 보안의 이름입니다. |
|
ID 공급자를 인증 모드로 사용하도록 구성 중인 플랫폼 구성 요소의 이름을 지정합니다. |
|
ID 공급자를 인증 모드로 사용하도록 구성 중인 플랫폼 구성 요소를 지정하는 네임스페이스를 지정합니다. |
| ID 공급자에 대한 인증 요청을 수행할 때 플랫폼 구성 요소에서 요청해야 하는 추가 범위를 구성합니다. 이 기능은 표준 OIDC 범위 이외의 특정 범위가 요청되어야 하는 클레임 매핑을 구성한 경우에 유용합니다. 생략하면 추가 범위가 요청되지 않습니다. |