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를 사용하여 로그인하는 새 옵션이 제공됩니다. 몇 분 정도 기다려야 할 수 있습니다.