10.4. 토큰 기반 인증 활성화
Microsoft Azure OpenShift Container Platform 클러스터를 설치한 후 Microsoft Entra Workload ID를 활성화하여 단기 인증 정보를 사용할 수 있습니다.
10.4.1. Cloud Credential Operator 유틸리티 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 기존 클러스터를 구성하려면 Cloud Credential Operator 유틸리티(ccoctl
) 바이너리를 추출하고 준비합니다.
ccoctl
유틸리티는 Linux 환경에서 실행해야 하는 Linux 바이너리입니다.
사전 요구 사항
- 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지의 변수를 설정합니다.
RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})
$ RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CCO 컨테이너 이미지를 가져옵니다.
CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
$ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고$RELEASE_IMAGE
의 아키텍처가ccoctl
툴을 사용할 환경의 아키텍처와 일치하는지 확인합니다.다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지 내에서
ccoctl
바이너리를 추출합니다.oc image extract $CCO_IMAGE \ --file="/usr/bin/ccoctl.<rhel_version>" \ -a ~/.pull-secret
$ oc image extract $CCO_IMAGE \ --file="/usr/bin/ccoctl.<rhel_version>" \
1 -a ~/.pull-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;rhel_version
> 의 경우 호스트가 사용하는 RHEL(Red Hat Enterprise Linux) 버전에 해당하는 값을 지정합니다. 값을 지정하지 않으면 기본적으로ccoctl.rhel8
이 사용됩니다. 다음 값이 유효합니다.-
rhel8
: RHEL 8을 사용하는 호스트에 대해 이 값을 지정합니다. -
rhel9
: RHEL 9를 사용하는 호스트에 대해 이 값을 지정합니다.
-
다음 명령을 실행하여
ccoctl
을 실행할 수 있도록 권한을 변경합니다.chmod 775 ccoctl.<rhel_version>
$ chmod 775 ccoctl.<rhel_version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
ccoctl
을 사용할 준비가 되었는지 확인하려면 도움말 파일을 표시합니다. 명령을 실행할 때 상대 파일 이름을 사용합니다. 예를 들면 다음과 같습니다../ccoctl.rhel9
$ ./ccoctl.rhel9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.2. 기존 클러스터에서 Microsoft Entra Workload ID 활성화 링크 복사링크가 클립보드에 복사되었습니다!
설치 중에 Microsoft Entra Workload ID를 사용하도록 Microsoft Azure OpenShift Container Platform 클러스터를 구성하지 않은 경우 기존 클러스터에서 이 인증 방법을 활성화할 수 있습니다.
기존 클러스터에서 Workload ID를 활성화하는 프로세스는 중단되어 상당한 시간이 걸립니다. 진행하기 전에 다음 고려 사항을 고려하십시오.
- 다음 단계를 읽고 시간 요구 사항을 이해하고 수락하는지 확인하십시오. 정확한 시간 요구 사항은 개별 클러스터에 따라 다르지만 최소 1시간이 걸릴 수 있습니다.
- 이 프로세스 중에 모든 서비스 계정을 새로 고치고 클러스터의 모든 Pod를 다시 시작해야 합니다. 이러한 동작은 작업 부하를 방해합니다. 이러한 영향을 완화하려면 이러한 서비스를 일시적으로 중지한 다음 클러스터가 준비되면 다시 배포할 수 있습니다.
- 이 프로세스를 시작한 후에는 완료될 때까지 클러스터 업데이트를 시도하지 마세요. 업데이트가 트리거되면 기존 클러스터에서 워크로드 ID를 활성화하는 프로세스가 실패합니다.
사전 요구 사항
- Microsoft Azure에 OpenShift Container Platform 클러스터를 설치했습니다.
-
클러스터 관리자
권한이 있는 계정을 사용하여 클러스터에 액세스할 수 있습니다. -
OpenShift CLI(
oc
)가 설치되어 있습니다. -
Cloud Credential Operator 유틸리티(
ccoctl
) 바이너리를 추출하고 준비했습니다. -
Azure CLI(
az
)를 사용하여 Azure 계정에 액세스할 수 있습니다.
프로세스
-
ccoctl
유틸리티가 생성하는 매니페스트에 대한 출력 디렉토리를 만듭니다. 이 절차에서는./output_dir을
예로 사용합니다. 다음 명령을 실행하여 클러스터의 서비스 계정 공개 서명 키를 출력 디렉터리로 추출합니다.
oc get configmap \ --namespace openshift-kube-apiserver bound-sa-token-signing-certs \ --output 'go-template={{index .data "service-account-001.pub"}}' > ./output_dir/serviceaccount-signer.public
$ oc get configmap \ --namespace openshift-kube-apiserver bound-sa-token-signing-certs \ --output 'go-template={{index .data "service-account-001.pub"}}' > ./output_dir/serviceaccount-signer.public
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이 절차에서는
serviceaccount-signer.public
이라는 파일을 예로 들어 설명합니다.
다음 명령을 실행하여 추출된 서비스 계정 공개 서명 키를 사용하여 OIDC 구성 파일이 포함된 OpenID Connect(OIDC) 발급자와 Azure Blob 저장소 컨테이너를 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Azure Pod ID 웹훅에 대한 구성 파일이 생성되었는지 확인하세요.
ll ./output_dir/manifests
$ ll ./output_dir/manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
total 8 -rw-------. 1 cloud-user cloud-user 193 May 22 02:29 azure-ad-pod-identity-webhook-config.yaml -rw-------. 1 cloud-user cloud-user 165 May 22 02:29 cluster-authentication-02-config.yaml
total 8 -rw-------. 1 cloud-user cloud-user 193 May 22 02:29 azure-ad-pod-identity-webhook-config.yaml
1 -rw-------. 1 cloud-user cloud-user 165 May 22 02:29 cluster-authentication-02-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
azure-ad-pod-identity-webhook-config.yaml
파일에는 Azure Pod ID 웹훅 구성이 포함되어 있습니다.
다음 명령을 실행하여 생성된 매니페스트에서 OIDC 발급자 URL을 사용하여
OIDC_ISSUER_URL
변수를 출력 디렉토리에 설정합니다.OIDC_ISSUER_URL=`awk '/serviceAccountIssuer/ { print $2 }' ./output_dir/manifests/cluster-authentication-02-config.yaml`
$ OIDC_ISSUER_URL=`awk '/serviceAccountIssuer/ { print $2 }' ./output_dir/manifests/cluster-authentication-02-config.yaml`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터
인증
구성의spec.serviceAccountIssuer
매개변수를 업데이트합니다.oc patch authentication cluster \ --type=merge \ -p "{\"spec\":{\"serviceAccountIssuer\":\"${OIDC_ISSUER_URL}\"}}"
$ oc patch authentication cluster \ --type=merge \ -p "{\"spec\":{\"serviceAccountIssuer\":\"${OIDC_ISSUER_URL}\"}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 구성 업데이트 진행 상황을 모니터링합니다.
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터의 모든 포드를 다시 시작합니다.
oc adm reboot-machine-config-pool mcp/worker mcp/master
$ oc adm reboot-machine-config-pool mcp/worker mcp/master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod를 다시 시작하면
serviceAccountIssuer
필드가 업데이트되고 서비스 계정 공개 서명 키가 새로 고쳐집니다.다음 명령을 실행하여 재시작 및 업데이트 프로세스를 모니터링합니다.
oc adm wait-for-node-reboot nodes --all
$ oc adm wait-for-node-reboot nodes --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All nodes rebooted
All nodes rebooted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Cloud Credential Operator
spec.credentialsMode
매개변수를Manual
로 업데이트합니다.oc patch cloudcredential cluster \ --type=merge \ --patch '{"spec":{"credentialsMode":"Manual"}}'
$ oc patch cloudcredential cluster \ --type=merge \ --patch '{"spec":{"credentialsMode":"Manual"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서
CredentialsRequest
오브젝트 목록을 추출합니다.oc adm release extract \ --credentials-requests \ --included \ --to <path_to_directory_for_credentials_requests> \ --registry-config ~/.pull-secret
$ oc adm release extract \ --credentials-requests \ --included \ --to <path_to_directory_for_credentials_requests> \ --registry-config ~/.pull-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 명령을 실행하는 데 몇 분 정도 걸릴 수 있습니다.
다음 명령을 실행하여 Azure 리소스 그룹 이름으로
AZURE_INSTALL_RG
변수를 설정합니다.AZURE_INSTALL_RG=`oc get infrastructure cluster -o jsonpath --template '{ .status.platformStatus.azure.resourceGroupName }'`
$ AZURE_INSTALL_RG=`oc get infrastructure cluster -o jsonpath --template '{ .status.platformStatus.azure.resourceGroupName }'`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ccoctl
유틸리티를 사용하여 모든CredentialsRequest
개체에 대한 관리 ID를 만듭니다.참고다음 명령은 사용 가능한 모든 옵션을 표시하지 않습니다. 특정 사용 사례에 필요할 수 있는 옵션을 포함한 전체 옵션 목록을 보려면
$ ccoctl azure create-managed-identities --help 를
실행하세요.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 워크로드 ID에 대한 Azure Pod ID 웹훅 구성을 적용합니다.
oc apply -f ./output_dir/manifests/azure-ad-pod-identity-webhook-config.yaml
$ oc apply -f ./output_dir/manifests/azure-ad-pod-identity-webhook-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ccoctl
유틸리티에서 생성된 비밀을 적용합니다.find ./output_dir/manifests -iname "openshift*yaml" -print0 | xargs -I {} -0 -t oc replace -f {}
$ find ./output_dir/manifests -iname "openshift*yaml" -print0 | xargs -I {} -0 -t oc replace -f {}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 과정에 몇 분이 걸릴 수 있습니다.
다음 명령을 실행하여 클러스터의 모든 포드를 다시 시작합니다.
oc adm reboot-machine-config-pool mcp/worker mcp/master
$ oc adm reboot-machine-config-pool mcp/worker mcp/master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod를 다시 시작하면
serviceAccountIssuer
필드가 업데이트되고 서비스 계정 공개 서명 키가 새로 고쳐집니다.다음 명령을 실행하여 재시작 및 업데이트 프로세스를 모니터링합니다.
oc adm wait-for-node-reboot nodes --all
$ oc adm wait-for-node-reboot nodes --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All nodes rebooted
All nodes rebooted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 구성 업데이트 진행 상황을 모니터링합니다.
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다음 명령을 실행하여 Azure 루트 자격 증명 비밀번호를 제거합니다.
oc delete secret -n kube-system azure-credentials
$ oc delete secret -n kube-system azure-credentials
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.3. 클러스터가 단기 자격 증명을 사용하는지 확인 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에서 Cloud Credential Operator(CCO) 구성 및 기타 값을 확인하여 클러스터가 개별 구성 요소에 단기 보안 자격 증명을 사용하는지 확인할 수 있습니다.
사전 요구 사항
-
Cloud Credential Operator 유틸리티(
ccoctl
)를 사용하여 단기 자격 증명을 구현하여 OpenShift Container Platform 클러스터를 배포했습니다. -
OpenShift CLI(
oc
)를 설치합니다. -
클러스터 관리자
권한이 있는 사용자로 로그인했습니다.
프로세스
다음 명령을 실행하여 CCO가 수동 모드에서 작동하도록 구성되었는지 확인합니다.
oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}
$ oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 출력은 CCO가 수동 모드로 작동하고 있음을 확인합니다.
출력 예
Manual
Manual
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터에
루트 자격
증명이 없는지 확인하세요.oc get secrets \ -n kube-system <secret_name>
$ oc get secrets \ -n kube-system <secret_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
<secret_name>
은 클라우드 공급자의 루트 비밀 이름입니다.Expand 플랫폼 시크릿 이름 AWS(Amazon Web Services)
aws-creds
Microsoft Azure
azure-credentials
GCP(Google Cloud Platform)
gcp-credentials
오류는 루트 비밀이 클러스터에 존재하지 않는다는 것을 확인합니다.
AWS 클러스터에 대한 출력 예
Error from server (NotFound): secrets "aws-creds" not found
Error from server (NotFound): secrets "aws-creds" not found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 구성 요소가 개별 구성 요소에 대해 단기 보안 자격 증명을 사용하고 있는지 확인하세요.
oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'
$ oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 클러스터
Authentication
오브젝트에서.spec.serviceAccountIssuer
매개변수 값을 표시합니다. 클라우드 공급자와 연결된 URL의 출력은 클러스터가 클러스터 외부에서 생성 및 관리되는 단기 자격 증명을 사용하는 수동 모드를 사용하고 있음을 나타냅니다.Azure 클러스터: 다음 명령을 실행하여 구성 요소가 비밀 매니페스트에 지정된 Azure 클라이언트 ID를 가정하는지 확인합니다.
oc get secrets \ -n openshift-image-registry installer-cloud-credentials \ -o jsonpath='{.data}'
$ oc get secrets \ -n openshift-image-registry installer-cloud-credentials \ -o jsonpath='{.data}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow azure_client_id
및azure_federated_token_file
felids가 포함된 출력은 구성 요소가 Azure 클라이언트 ID를 사용한다는 것을 확인합니다.Azure 클러스터: 다음 명령을 실행하여 Pod ID 웹훅이 실행 중인지 확인합니다.
oc get pods \ -n openshift-cloud-credential-operator
$ oc get pods \ -n openshift-cloud-credential-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE cloud-credential-operator-59cf744f78-r8pbq 2/2 Running 2 71m pod-identity-webhook-548f977b4c-859lz 1/1 Running 1 70m
NAME READY STATUS RESTARTS AGE cloud-credential-operator-59cf744f78-r8pbq 2/2 Running 2 71m pod-identity-webhook-548f977b4c-859lz 1/1 Running 1 70m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow