7.9. OpenID Connect ID 공급자 구성

인증 코드 Flow 를 사용하여 OpenID Connect ID 공급자와 통합하도록 oidc ID 공급자를 구성합니다.

7.9.1. OpenShift Container Platform의 ID 공급자 정보

기본적으로는 kubeadmin 사용자만 클러스터에 있습니다. ID 공급자를 지정하려면 해당 ID 공급자를 설명하는 CR(사용자 정의 리소스)을 생성하여 클러스터에 추가해야 합니다.

참고

/, :, %를 포함하는 OpenShift Container Platform 사용자 이름은 지원되지 않습니다.

7.9.2. OpenID Connect 인증 정보

OpenShift Container Platform의 인증 운영자에서는 구성된 OpenID Connect ID 공급자가 OpenID Connect 검색 사양을 구현해야 합니다.

참고

ID 토큰UserInfo 암호 해독은 지원되지 않습니다.

기본적으로 openid 범위가 요청됩니다. 필요한 경우 extraScopes 필드에 추가 범위를 지정할 수 있습니다.

클레임은 OpenID ID 공급자에서 반환하는 JWT id_token 및 지정된 경우 UserInfo URL에서 반환하는 JSON에서 읽습니다.

사용자 ID로 사용할 하나 이상의 클레임을 구성해야 합니다. 표준 ID 클레임은 sub입니다.

또한 사용자의 기본 사용자 이름, 표시 이름, 이메일 주소로 사용할 클레임을 나타낼 수도 있습니다. 여러 클레임이 지정되는 경우 비어 있지 않은 값이 있는 첫 번째 클레임이 사용됩니다. 다음 표에는 표준 클레임이 나열되어 있습니다.

클레임설명

sub

"Subject identifier(주체 식별자)"의 줄임말입니다. 발행자에서 사용자의 원격 ID입니다.

preferred_username

사용자를 프로비저닝할 때 사용하는 기본 사용자 이름입니다. 사용자가 사용하고자 하는 약칭입니다(예: janedoe). 일반적으로 인증 시스템의 사용자 로그인 또는 사용자 이름에 해당하는 값입니다(예: 사용자 이름 또는 이메일).

email

이메일 주소입니다.

name

표시 이름입니다.

자세한 내용은 OpenID 클레임 설명서를 참조하십시오.

참고

OpenID Connect ID 공급자가 ROPC(Resource owner password credentials) 부여 flow를 지원하지 않는 한 사용자는 명령행 툴에 사용할 < namespace_route>/oauth/token/request 에서 토큰을 가져와야 합니다.

7.9.3. 지원되는 OIDC 공급자

다음 OpenID Connect (OIDC) 공급자는 OpenShift Container Platform에서 테스트 및 지원됩니다.

  • Windows Server용 Active Directory Federation Services

    참고

    현재 사용자 정의 클레임을 사용할 때 OpenShift Container Platform과 함께 Windows Server용 Active Directory Federation Services를 사용할 수 없습니다.

  • GitLab
  • Google
  • Keycloak
  • Microsoft ID 플랫폼(Azure Active Directory v2.0)

    참고

    현재는 그룹 이름을 동기화해야 하는 경우 Microsoft ID 플랫폼을 사용하는 것은 지원되지 않습니다.

  • Okta
  • ping ID
  • Red Hat Single Sign-On

7.9.4. 시크릿 생성

ID 공급자는 openshift-config 네임스페이스에서 OpenShift Container Platform Secret 오브젝트를 사용하여 클라이언트 시크릿, 클라이언트 인증서 및 키를 포함합니다.

절차

  • 다음 명령을 사용하여 문자열이 포함된 Secret 오브젝트를 생성합니다.

    $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config
    작은 정보

    다음 YAML을 적용하여 시크릿을 생성할 수도 있습니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
      namespace: openshift-config
    type: Opaque
    data:
      clientSecret: <base64_encoded_client_secret>
  • 다음 명령을 사용하여 인증서 파일과 같은 파일 내용이 포함된 Secret 오브젝트를 정의할 수 있습니다.

    $ oc create secret generic <secret_name> --from-file=<path_to_file> -n openshift-config

7.9.5. 구성 맵 생성

ID 공급자는 openshift-config 네임스페이스에서 OpenShift Container Platform ConfigMap 오브젝트를 사용하여 인증 기관 번들을 포함합니다. 이들은 주로 ID 공급자에 필요한 인증서 번들을 포함하는 데 사용됩니다.

참고

이 절차는 GitHub Enterprise에만 필요합니다.

절차

  • 다음 명령을 사용하여 인증 기관을 포함하는 OpenShift Container Platform ConfigMap 오브젝트를 정의합니다. 인증 기관은ConfigMap 오브젝트의 ca.crt 키에 저장해야 합니다.

    $ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
    작은 정보

    다음 YAML을 적용하여 구성 맵을 만들 수 있습니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ca-config-map
      namespace: openshift-config
    data:
      ca.crt: |
        <CA_certificate_PEM>

7.9.6. OpenID Connect CR 샘플

다음 CR(사용자 정의 리소스)에는 OpenID Connect ID 공급자에 대한 매개변수 및 허용 가능한 값이 표시되어 있습니다.

사용자 정의 인증서 번들, 추가 범위, 추가 권한 부여 요청 매개변수 또는 userInfo URL을 지정해야 하는 경우 전체 OpenID Connect CR을 사용하십시오.

표준 OpenID Connect CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: oidcidp 1
    mappingMethod: claim 2
    type: OpenID
    openID:
      clientID: ... 3
      clientSecret: 4
        name: idp-secret
      claims: 5
        preferredUsername:
        - preferred_username
        name:
        - name
        email:
        - email
        groups:
        - groups
      issuer: https://www.idp-issuer.com 6

1
이 공급자 이름은 ID 클레임 값 앞에 접두어로 지정되어 ID 이름을 형성합니다. 리디렉션 URL을 빌드하는 데에도 사용됩니다.
2
이 공급자의 ID와 User 오브젝트 간 매핑 설정 방법을 제어합니다.
3
OpenID 공급자에 등록된 클라이언트의 클라이언트 ID. 클라이언트를 https://oauth-openshift.apps.<cluster_name>.<cluster_domain>/oauth2callback/<idp_provider_name>으로 리디렉션할 수 있어야 합니다.
4
클라이언트 보안이 포함된 OpenShift Container Platform Secret 오브젝트에 대한 참조입니다.
5
ID로 사용할 클레임 목록입니다. 비어 있지 않은 첫 번째 클레임이 사용됩니다.
6
OpenID 사양에 설명된 문제 식별자입니다. 쿼리 또는 조각 구성 요소 없이 https를 사용해야 합니다.

전체 OpenID Connect CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: oidcidp
    mappingMethod: claim
    type: OpenID
    openID:
      clientID: ...
      clientSecret:
        name: idp-secret
      ca: 1
        name: ca-config-map
      extraScopes: 2
      - email
      - profile
      extraAuthorizeParameters: 3
        include_granted_scopes: "true"
      claims:
        preferredUsername: 4
        - preferred_username
        - email
        name: 5
        - nickname
        - given_name
        - name
        email: 6
        - custom_email_claim
        - email
        groups: 7
        - groups
      issuer: https://www.idp-issuer.com

1
선택 사항: OpenShift Container Platform ConfigMap에 대한 참조로, 구성된 URL에 대한 서버 인증서의 유효성 확인에 사용할 PEM 인코딩 인증 기관 번들이 포함됩니다.
2
선택 사항: 권한 부여 토큰 요청 중 openid 범위 외에 요청할 범위 목록입니다.
3
선택 사항: 권한 부여 토큰 요청에 추가할 추가 매개변수 맵입니다.
4
이 ID에 대해 사용자를 프로비저닝할 때 기본 사용자 이름으로 사용할 클레임 목록입니다. 비어 있지 않은 첫 번째 클레임이 사용됩니다.
5
표시 이름으로 사용할 클레임 목록입니다. 비어 있지 않은 첫 번째 클레임이 사용됩니다.
6
이메일 주소로 사용할 클레임 목록입니다. 비어 있지 않은 첫 번째 클레임이 사용됩니다.
7
사용자 로그인 시 OpenID Connect 공급자의 그룹을 OpenShift Container Platform에 동기화하는 데 사용할 클레임 목록입니다. 비어 있지 않은 첫 번째 클레임이 사용됩니다.

추가 리소스

7.9.7. 클러스터에 ID 공급자 추가

클러스터를 설치한 후에는 사용자가 인증할 수 있도록 ID 공급자를 추가하십시오.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 생성합니다.
  • ID 공급자의 CR(사용자 정의 리소스)을 만듭니다.
  • 관리자로 로그인해야 합니다.

절차

  1. 정의된 CR을 적용합니다.

    $ oc apply -f </path/to/CR>
    참고

    CR이 존재하지 않는 경우 oc apply를 통해 새 CR을 생성하고 다음 경고를 트리거할 수 있습니다. Warning: oc apply should be used on resources created by either oc create --save-config or oc apply. 이 경우 이 경고를 무시해도 됩니다.

  2. OAuth 서버에서 토큰을 가져옵니다.

    kubeadmin 사용자가 제거된 경우 oc login 명령을 실행하면 토큰을 검색할 수 있는 웹 페이지에 액세스하는 방법에 대한 지침이 제공됩니다.

    웹 콘솔에서 (?) HelpCommand Line ToolsCopy Login Command로 이동하여 이 페이지에 액세스할 수도 있습니다.

  3. 클러스터에 로그인하여 인증을 위해 토큰을 전달합니다.

    $ oc login --token=<token>
    참고

    OpenID Connect 아이덴티티 공급자가 ROPC(Resource Owner Password Credentials) 허가 흐름을 지원하는 경우 사용자 이름과 암호로 로그인할 수 있습니다. 아이덴티티 공급자에 대한 ROPC 허가 흐름을 사용하도록 활성화하는 단계를 수행해야 할 수 있습니다.

    OIDC 아이덴티티 공급자가 OpenShift Container Platform에 구성된 후 다음 명령을 사용하여 로그인할 수 있습니다. 이 경우 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.

    $ oc login -u <identity_provider_username> --server=<api_server_url_and_port>
  4. 사용자가 로그인했는지 확인하고 사용자 이름을 표시합니다.

    $ oc whoami

7.9.8. 웹 콘솔을 사용하여 ID 공급자 구성

CLI 대신 웹 콘솔을 통해 ID 공급자(IDP)를 구성합니다.

사전 요구 사항

  • 웹 콘솔에 클러스터 관리자로 로그인해야 합니다.

절차

  1. AdministrationCluster Settings으로 이동합니다.
  2. 구성 탭에서 OAuth 를 클릭합니다.
  3. ID 공급자 섹션의 추가 드롭다운 메뉴에서 ID 공급자를 선택합니다.
참고

기존 IDP를 덮어쓰지 않고 웹 콘솔을 통해 여러 IDP를 지정할 수 있습니다.