다음을 통해 공유


Azure Red Hat OpenShift 4 클러스터에 대한 Microsoft Entra 인증 구성(CLI)

CLI를 로컬로 설치하여 사용하도록 선택한 경우 이 문서에서는 Azure CLI 버전 2.30.0 이상을 실행 중인 상태가 필요합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

Microsoft Entra 애플리케이션 구성에 사용할 클러스터별 URL을 검색합니다.

리소스 그룹 및 클러스터 이름에 대한 변수를 설정합니다.

<resource_group>을 리소스 그룹의 이름으로 바꾸고 <aro_cluster>를 클러스터 이름으로 바꿉니다.

resource_group=<resource_group>
aro_cluster=<aro_cluster>

클러스터의 OAuth 콜백 URL을 생성하여 oauthCallbackURL 변수에 저장합니다.

참고 항목

OAuth 콜백 URL의 AAD 섹션은 나중에 설정할 OAuth ID 공급자 이름과 일치해야 합니다.

domain=$(az aro show -g $resource_group -n $aro_cluster --query clusterProfile.domain -o tsv)
location=$(az aro show -g $resource_group -n $aro_cluster --query location -o tsv)
apiServer=$(az aro show -g $resource_group -n $aro_cluster --query apiserverProfile.url -o tsv)
webConsole=$(az aro show -g $resource_group -n $aro_cluster --query consoleProfile.url -o tsv)

oauthCallbackURL의 형식은 사용자 지정 도메인과 약간 다릅니다.

  • 사용자 지정 도메인(예: contoso.com)을 사용하는 경우 다음 명령을 실행합니다.

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
    
  • 사용자 지정 도메인을 사용하지 않는 경우 $domain은 8자리 숫자 문자열이 되며 $location.aroapp.io로 확장됩니다.

    oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
    

참고 항목

OAuth 콜백 URL의 AAD 섹션은 나중에 설정할 OAuth ID 공급자 이름과 일치해야 합니다.

인증을 위한 Microsoft Entra 애플리케이션 만들기

<client_secret>을 애플리케이션의 보안 암호로 바꿉니다.

client_secret=<client_secret>

Microsoft Entra 애플리케이션을 만들고, 만든 애플리케이션 식별자를 검색합니다.

app_id=$(az ad app create \
  --query appId -o tsv \
  --display-name aro-auth \
  --reply-urls $oauthCallbackURL \
  --password $client_secret)

애플리케이션을 소유하는 구독의 테넌트 ID를 검색합니다.

tenant_id=$(az account show --query tenantId -o tsv)

ID 토큰에 포함할 선택적 클레임을 정의하는 매니페스트 파일 만들기

애플리케이션 개발자는 Microsoft Entra 애플리케이션에서 선택적 클레임을 사용하여 애플리케이션으로 전송된 토큰에서 원하는 클레임을 지정할 수 있습니다.

선택적 클레임을 사용하여 다음을 수행할 수 있습니다.

  • 애플리케이션에 대한 토큰에 포함할 추가 클레임을 선택합니다.
  • Microsoft Entra ID에서 토큰에 반환하는 특정 클레임의 동작을 변경합니다.
  • 애플리케이션에 대한 사용자 지정 클레임을 추가하고 액세스합니다.

Microsoft Entra가 반환한 ID 토큰의 일부로 upn을 추가하여, email 클레임을 사용하고 upn으로 변경하여 기본 설정 사용자 이름을 설정하도록 OpenShift를 구성할 것입니다.

manifest.json 파일을 만들어 Microsoft Entra 애플리케이션을 구성합니다.

cat > manifest.json<< EOF
[{
  "name": "upn",
  "source": null,
  "essential": false,
  "additionalProperties": []
},
{
"name": "email",
  "source": null,
  "essential": false,
  "additionalProperties": []
}]
EOF

매니페스트로 Microsoft Entra 애플리케이션의 optionalClaims 업데이트

az ad app update \
  --set optionalClaims.idToken=@manifest.json \
  --id $app_id

Microsoft Entra 애플리케이션 범위 권한 업데이트

Microsoft Entra ID에서 사용자 정보를 읽을 수 있도록 적절한 범위를 정의해야 합니다.

Azure Active Directory Graph.User.Read 범위에 대한 권한을 추가하여 로그인을 사용하도록 설정하고 사용자 프로필을 읽습니다.

az ad app permission add \
 --api 00000002-0000-0000-c000-000000000000 \
 --api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
 --id $app_id

참고 항목

이 Microsoft Entra ID에 대한 전역 관리자로 인증되지 않는 한, 동의 제공 메시지를 무시해도 됩니다. 표준 도메인 사용자가 본인의 Microsoft Entra 자격 증명으로 클러스터에 처음 로그인할 때 동의 제공을 요청 받게 됩니다.

클러스터에 사용자 및 그룹 할당(선택 사항)

기본적으로 Microsoft Entra 테넌트에 등록된 애플리케이션은 성공적으로 인증한 테넌트의 모든 사용자에게 제공됩니다. Microsoft Entra ID를 사용하면 테넌트 관리자 및 개발자는 앱을 테넌트의 특정 사용자 집합 또는 보안 그룹으로 제한할 수 있습니다.

Microsoft Entra 설명서의 지침에 따라 사용자 및 그룹을 앱에 할당합니다.

OpenShift OpenID 인증 구성

kubeadmin 자격 증명을 검색합니다. 다음 명령을 실행하여 kubeadmin 사용자의 암호를 찾습니다.

kubeadmin_password=$(az aro list-credentials \
  --name $aro_cluster \
  --resource-group $resource_group \
  --query kubeadminPassword --output tsv)

다음 명령을 사용하여 OpenShift 클러스터의 API 서버에 로그인합니다.

oc login $apiServer -u kubeadmin -p $kubeadmin_password

OpenShift 비밀을 만들어 Azure Active Directory Microsoft Entra 애플리케이션 비밀을 저장합니다.

oc create secret generic openid-client-secret-azuread \
  --namespace openshift-config \
  --from-literal=clientSecret=$client_secret

Microsoft Entra에 대해 OpenShift OpenID 인증을 구성하는 oidc.yaml파일을 만듭니다.

cat > oidc.yaml<< EOF
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: AAD
    mappingMethod: claim
    type: OpenID
    openID:
      clientID: $app_id
      clientSecret:
        name: openid-client-secret-azuread
      extraScopes:
      - email
      - profile
      extraAuthorizeParameters:
        include_granted_scopes: "true"
      claims:
        preferredUsername:
        - email
        - upn
        name:
        - name
        email:
        - email
      issuer: https://login.microsoftonline.com/$tenant_id
EOF

클러스터에 구성을 적용합니다.

oc apply -f oidc.yaml

다음과 유사한 응답을 받게 됩니다.

oauth.config.openshift.io/cluster configured

Microsoft Entra ID를 통해 로그인 확인

이제 OpenShift 웹 콘솔에서 로그아웃하고 다시 로그인할 때 Microsoft Entra를 사용하여 로그인하는 새 옵션이 제공됩니다. 몇 분 정도 기다려야 할 수 있습니다.

Microsoft Entra 옵션을 사용하여 로그인 화면