10.2. 토큰 기반 인증 활성화
Microsoft Azure OpenShift Container Platform 클러스터를 설치한 후 Microsoft Entra Workload ID를 활성화하여 단기 인증 정보를 사용할 수 있습니다.
10.2.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.2.2. 기존 클러스터에서 Microsoft Entra Workload ID 활성화 링크 복사링크가 클립보드에 복사되었습니다!
설치 중에 Microsoft Entra Workload ID를 사용하도록 Microsoft Azure OpenShift Container Platform 클러스터를 구성하지 않은 경우 기존 클러스터에서 이 인증 방법을 활성화할 수 있습니다.
기존 클러스터에서 Workload ID를 활성화하는 프로세스는 중단되어 상당한 시간이 걸립니다. 진행하기 전에 다음 고려 사항을 고려하십시오.
- 다음 단계를 읽고 시간 요구 사항을 이해하고 수락하는지 확인하십시오. 정확한 시간 요구 사항은 개별 클러스터에 따라 다르지만 최소 1시간이 걸릴 수 있습니다.
- 이 프로세스 중에 모든 서비스 계정을 새로 고치고 클러스터의 모든 Pod를 다시 시작해야 합니다. 이러한 작업은 워크로드에 영향을 미칩니다. 이 영향을 완화하기 위해 이러한 서비스를 일시적으로 중단한 다음 클러스터가 준비되면 다시 배포할 수 있습니다.
- 이 프로세스를 시작한 후 완료될 때까지 클러스터 업데이트를 시도하지 마십시오. 업데이트가 트리거되면 기존 클러스터에서 Workload ID를 활성화하는 프로세스가 실패합니다.
사전 요구 사항
- Microsoft Azure에 OpenShift Container Platform 클러스터를 설치했습니다.
-
cluster-admin
권한이 있는 계정을 사용하여 클러스터에 액세스할 수 있습니다. -
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 Webhook의 구성 파일이 생성되었는지 확인합니다.
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_ISSUER_URL
변수를 OIDC 발급자 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 다음 명령을 실행하여 클러스터의 모든 Pod를 다시 시작합니다.
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 Webhook 구성을 적용합니다.
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 이 과정에 몇 분이 걸릴 수 있습니다.
다음 명령을 실행하여 클러스터의 모든 Pod를 다시 시작합니다.
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.2.3. 클러스터가 단기 인증 정보를 사용하는지 확인 링크 복사링크가 클립보드에 복사되었습니다!
CCO(Cloud Credential Operator) 구성 및 클러스터의 기타 값을 확인하여 클러스터가 개별 구성 요소에 대해 단기 보안 인증 정보를 사용하는지 확인할 수 있습니다.
사전 요구 사항
-
단기 인증 정보를 구현하기 위해 Cloud Credential Operator 유틸리티(
ccoctl
)를 사용하여 OpenShift Container Platform 클러스터를 배포했습니다. -
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
다음 명령을 실행하여 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 다음 명령을 실행하여 클러스터에
root
인증 정보가 없는지 확인합니다.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
가 포함된 출력은 구성 요소가 Azure 클라이언트 ID를 가정하고 있음을 확인합니다.Azure 클러스터: 다음 명령을 실행하여 Pod ID Webhook가 실행 중인지 확인합니다.
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