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)가 설치되어 있습니다.

프로세스

  1. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지의 변수를 설정합니다.

    $ RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CCO 컨테이너 이미지를 가져옵니다.

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
    Copy to Clipboard Toggle word wrap
    참고

    $RELEASE_IMAGE 의 아키텍처가 ccoctl 툴을 사용할 환경의 아키텍처와 일치하는지 확인합니다.

  3. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지 내에서 ccoctl 바이너리를 추출합니다.

    $ oc image extract $CCO_IMAGE \
      --file="/usr/bin/ccoctl.<rhel_version>" \
    1
    
      -a ~/.pull-secret
    Copy to Clipboard Toggle word wrap
    1
    & lt;rhel_version > 의 경우 호스트가 사용하는 RHEL(Red Hat Enterprise Linux) 버전에 해당하는 값을 지정합니다. 값을 지정하지 않으면 기본적으로 ccoctl.rhel8 이 사용됩니다. 다음 값이 유효합니다.
    • rhel8: RHEL 8을 사용하는 호스트에 대해 이 값을 지정합니다.
    • rhel9: RHEL 9를 사용하는 호스트에 대해 이 값을 지정합니다.
  4. 다음 명령을 실행하여 ccoctl 을 실행할 수 있도록 권한을 변경합니다.

    $ chmod 775 ccoctl.<rhel_version>
    Copy to Clipboard Toggle word wrap

검증

  • ccoctl 을 사용할 준비가 되었는지 확인하려면 도움말 파일을 표시합니다. 명령을 실행할 때 상대 파일 이름을 사용합니다. 예를 들면 다음과 같습니다.

    $ ./ccoctl.rhel9
    Copy to Clipboard Toggle word wrap

    출력 예

    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      aws          Manage credentials objects for AWS cloud
      azure        Manage credentials objects for Azure
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for {ibm-cloud-title}
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.
    Copy to Clipboard Toggle word wrap

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 계정에 액세스할 수 있습니다.

프로세스

  1. ccoctl 유틸리티가 생성하는 매니페스트에 대한 출력 디렉토리를 만듭니다. 이 절차에서는 ./output_dir을 예로 사용합니다.
  2. 다음 명령을 실행하여 클러스터의 서비스 계정 공개 서명 키를 출력 디렉터리로 추출합니다.

    $ 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 Toggle word wrap
    1
    이 절차에서는 serviceaccount-signer.public 이라는 파일을 예로 들어 설명합니다.
  3. 다음 명령을 실행하여 추출된 서비스 계정 공개 서명 키를 사용하여 OIDC 구성 파일이 포함된 OpenID Connect(OIDC) 발급자와 Azure Blob 저장소 컨테이너를 만듭니다.

    $ ./ccoctl azure create-oidc-issuer \
      --name <azure_infra_name> \
    1
    
      --output-dir ./output_dir \
      --region <azure_region> \
    2
    
      --subscription-id <azure_subscription_id> \
    3
    
      --tenant-id <azure_tenant_id> \
      --public-key-file ./output_dir/serviceaccount-signer.public 
    4
    Copy to Clipboard Toggle word wrap
    1
    name 매개 변수의 값은 Azure 리소스 그룹을 만드는 데 사용됩니다. 새 Azure 리소스 그룹을 만드는 대신 기존 Azure 리소스 그룹을 사용하려면 기존 그룹 이름을 값으로 사용하여 --oidc-resource-group-name 인수를 지정합니다.
    2
    기존 클러스터의 지역을 지정합니다.
    3
    기존 클러스터의 구독 ID를 지정합니다.
    4
    클러스터에 대한 서비스 계정 공개 서명 키가 포함된 파일을 지정합니다.
  4. 다음 명령을 실행하여 Azure Pod ID 웹훅에 대한 구성 파일이 생성되었는지 확인하세요.

    $ ll ./output_dir/manifests
    Copy to Clipboard Toggle word wrap

    출력 예

    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 Toggle word wrap

    1
    azure-ad-pod-identity-webhook-config.yaml 파일에는 Azure Pod ID 웹훅 구성이 포함되어 있습니다.
  5. 다음 명령을 실행하여 생성된 매니페스트에서 OIDC 발급자 URL을 사용하여 OIDC_ISSUER_URL 변수를 출력 디렉토리에 설정합니다.

    $ OIDC_ISSUER_URL=`awk '/serviceAccountIssuer/ { print $2 }' ./output_dir/manifests/cluster-authentication-02-config.yaml`
    Copy to Clipboard Toggle word wrap
  6. 다음 명령을 실행하여 클러스터 인증 구성의 spec.serviceAccountIssuer 매개변수를 업데이트합니다.

    $ oc patch authentication cluster \
      --type=merge \
      -p "{\"spec\":{\"serviceAccountIssuer\":\"${OIDC_ISSUER_URL}\"}}"
    Copy to Clipboard Toggle word wrap
  7. 다음 명령을 실행하여 구성 업데이트 진행 상황을 모니터링합니다.

    $ oc adm wait-for-stable-cluster
    Copy to Clipboard Toggle word wrap

    이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.

    All clusteroperators are stable
    Copy to Clipboard Toggle word wrap
  8. 다음 명령을 실행하여 클러스터의 모든 포드를 다시 시작합니다.

    $ oc adm reboot-machine-config-pool mcp/worker mcp/master
    Copy to Clipboard Toggle word wrap

    Pod를 다시 시작하면 serviceAccountIssuer 필드가 업데이트되고 서비스 계정 공개 서명 키가 새로 고쳐집니다.

  9. 다음 명령을 실행하여 재시작 및 업데이트 프로세스를 모니터링합니다.

    $ oc adm wait-for-node-reboot nodes --all
    Copy to Clipboard Toggle word wrap

    이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.

    All nodes rebooted
    Copy to Clipboard Toggle word wrap
  10. 다음 명령을 실행하여 Cloud Credential Operator spec.credentialsMode 매개변수를 Manual 로 업데이트합니다.

    $ oc patch cloudcredential cluster \
      --type=merge \
      --patch '{"spec":{"credentialsMode":"Manual"}}'
    Copy to Clipboard Toggle word wrap
  11. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest 오브젝트 목록을 추출합니다.

    $ oc adm release extract \
      --credentials-requests \
      --included \
      --to <path_to_directory_for_credentials_requests> \
      --registry-config ~/.pull-secret
    Copy to Clipboard Toggle word wrap
    참고

    이 명령을 실행하는 데 몇 분 정도 걸릴 수 있습니다.

  12. 다음 명령을 실행하여 Azure 리소스 그룹 이름으로 AZURE_INSTALL_RG 변수를 설정합니다.

    $ AZURE_INSTALL_RG=`oc get infrastructure cluster -o jsonpath --template '{ .status.platformStatus.azure.resourceGroupName }'`
    Copy to Clipboard Toggle word wrap
  13. 다음 명령을 실행하여 ccoctl 유틸리티를 사용하여 모든 CredentialsRequest 개체에 대한 관리 ID를 만듭니다.

    참고

    다음 명령은 사용 가능한 모든 옵션을 표시하지 않습니다. 특정 사용 사례에 필요할 수 있는 옵션을 포함한 전체 옵션 목록을 보려면 $ ccoctl azure create-managed-identities --help 를 실행하세요.

    $ ccoctl azure create-managed-identities \
      --name <azure_infra_name> \
      --output-dir ./output_dir \
      --region <azure_region> \
      --subscription-id <azure_subscription_id> \
      --credentials-requests-dir <path_to_directory_for_credentials_requests> \
      --issuer-url "${OIDC_ISSUER_URL}" \
      --dnszone-resource-group-name <azure_dns_zone_resourcegroup_name> \
    1
    
      --installation-resource-group-name "${AZURE_INSTALL_RG}" \
      --network-resource-group-name <azure_resource_group> 
    2
    Copy to Clipboard Toggle word wrap
    1
    DNS 영역이 포함된 리소스 그룹의 이름을 지정합니다.
    2
    선택 사항: 클러스터 리소스 그룹과 다른 경우 가상 네트워크 리소스 그룹을 지정합니다.
  14. 다음 명령을 실행하여 워크로드 ID에 대한 Azure Pod ID 웹훅 구성을 적용합니다.

    $ oc apply -f ./output_dir/manifests/azure-ad-pod-identity-webhook-config.yaml
    Copy to Clipboard Toggle word wrap
  15. 다음 명령을 실행하여 ccoctl 유틸리티에서 생성된 비밀을 적용합니다.

    $ find ./output_dir/manifests -iname "openshift*yaml" -print0 | xargs -I {} -0 -t oc replace -f {}
    Copy to Clipboard Toggle word wrap

    이 과정에 몇 분이 걸릴 수 있습니다.

  16. 다음 명령을 실행하여 클러스터의 모든 포드를 다시 시작합니다.

    $ oc adm reboot-machine-config-pool mcp/worker mcp/master
    Copy to Clipboard Toggle word wrap

    Pod를 다시 시작하면 serviceAccountIssuer 필드가 업데이트되고 서비스 계정 공개 서명 키가 새로 고쳐집니다.

  17. 다음 명령을 실행하여 재시작 및 업데이트 프로세스를 모니터링합니다.

    $ oc adm wait-for-node-reboot nodes --all
    Copy to Clipboard Toggle word wrap

    이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.

    All nodes rebooted
    Copy to Clipboard Toggle word wrap
  18. 다음 명령을 실행하여 구성 업데이트 진행 상황을 모니터링합니다.

    $ oc adm wait-for-stable-cluster
    Copy to Clipboard Toggle word wrap

    이 과정은 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.

    All clusteroperators are stable
    Copy to Clipboard Toggle word wrap
  19. 선택 사항: 다음 명령을 실행하여 Azure 루트 자격 증명 비밀번호를 제거합니다.

    $ oc delete secret -n kube-system azure-credentials
    Copy to Clipboard Toggle word wrap

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}
    Copy to Clipboard Toggle word wrap

    다음 출력은 CCO가 수동 모드로 작동하고 있음을 확인합니다.

    출력 예

    Manual
    Copy to Clipboard Toggle word wrap

  • 다음 명령을 실행하여 클러스터에 루트 자격 증명이 없는지 확인하세요.

    $ oc get secrets \
      -n kube-system <secret_name>
    Copy to Clipboard Toggle word wrap

    여기서 <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
    Copy to Clipboard Toggle word wrap

  • 다음 명령을 실행하여 구성 요소가 개별 구성 요소에 대해 단기 보안 자격 증명을 사용하고 있는지 확인하세요.

    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'
    Copy to Clipboard Toggle word wrap

    이 명령은 클러스터 Authentication 오브젝트에서 .spec.serviceAccountIssuer 매개변수 값을 표시합니다. 클라우드 공급자와 연결된 URL의 출력은 클러스터가 클러스터 외부에서 생성 및 관리되는 단기 자격 증명을 사용하는 수동 모드를 사용하고 있음을 나타냅니다.

  • Azure 클러스터: 다음 명령을 실행하여 구성 요소가 비밀 매니페스트에 지정된 Azure 클라이언트 ID를 가정하는지 확인합니다.

    $ oc get secrets \
      -n openshift-image-registry installer-cloud-credentials \
      -o jsonpath='{.data}'
    Copy to Clipboard Toggle word wrap

    azure_client_idazure_federated_token_file felids가 포함된 출력은 구성 요소가 Azure 클라이언트 ID를 사용한다는 것을 확인합니다.

  • Azure 클러스터: 다음 명령을 실행하여 Pod ID 웹훅이 실행 중인지 확인합니다.

    $ oc get pods \
      -n openshift-cloud-credential-operator
    Copy to Clipboard Toggle word wrap

    출력 예

    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 Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat