이 문서에서는 mTLS를 통해 다른 워크로드에 워크로드 인증과 관련된 일반적인 오류 문제를 해결하는 방법을 설명합니다.
시작하기 전에
- 
  
  아직 인증을 설정하지 않았다면 설정합니다.
  인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인합니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.
  
   
   
     
   
  
   
   
     
   
  
   
   
     
   
  
 
 
 
   
   
  
   
  
  
     
        
  
 
 
  - 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다. gcloud init외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다. 
- Set a default region and zone.
 
- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      
생성된 사용자 인증 정보 디렉터리가 존재하지 않음
/var/run/secrets/workload-spiffe-credentials 디렉터리가 존재하지 않는다는 오류가 발생하면 다음을 수행합니다.
- VM 내에서 다음 명령어를 실행하여 VM이 워크로드 간 인증을 지원하는지 확인합니다. - curl "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google" - 응답으로 다음 오류 메시지가 있는 - HTTP 404오류 코드가 반환되면 VM이 해당 기능을 지원하지 않는 것입니다.- The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.- 이 문제를 해결하려면 다음 방법 중 하나를 사용하여 워크로드 간 인증을 지원하는 새 VM을 만듭니다. 
- 응답으로 - workload certificate feature not enabled오류 메시지가 있는- HTTP 404오류 코드가 반환되면 VM이 관리형 워크로드 아이덴티티를 지원하지만 기능이 사용 설정되지 않은 것입니다. VM에서 이 기능을 사용 설정하려면 기존 VM에서 관리형 워크로드 아이덴티티 사용 설정을 참조하세요.
 
- VM이 Compute Engine 게스트 에이전트 버전 20231103.01 이상으로 게스트 OS를 실행하는지 확인합니다. gcloud CLI를 사용하여 직렬 포트 출력을 표시하여 현재 Compute Engine 게스트 에이전트 버전을 확인합니다. - gcloud compute instances get-serial-port-output VM_NAME | grep "GCE Agent Started"- VM_NAME을 VM의 이름으로 바꿉니다. - Compute Engine 게스트 에이전트를 업데이트하려면 게스트 환경 업데이트를 참조하세요. 
- 서비스 로그를 확인하여 - gce-workload-cert-refresh.timer가 워크로드 사용자 인증 정보 및 트러스트 번들을 성공적으로 가져올 수 있었는지 확인합니다.- # View timer logs to see when the gce-workload-cert-refresh.timer last ran journalctl -u gce-workload-cert-refresh.timer # View service logs from gce-workload-cert-refresh.service journalctl -u gce-workload-cert-refresh.service 
생성된 사용자 인증 정보 디렉터리에 config_status 파일만 포함됨
다양한 이유로 생성된 사용자 인증 정보 디렉터리 /var/run/secrets/workload-spiffe-credentials에 config_status만 포함될 수 있습니다. 이 문제를 해결하려면 다음 단계를 수행합니다.
- config_status파일 콘텐츠를 확인하여 관리형 워크로드 아이덴티티 기능이 사용 설정되어 있는지 확인합니다. 적절한 VM 메타데이터를 사용하여 기능을 사용 설정하지 않은 경우 로그 파일에 오류 메시지- workload certificate feature not enabled가 포함됩니다.- 이 문제를 해결하려면 다음 방법 중 하나를 사용하여 워크로드 간 인증을 지원하는 새 VM을 만듭니다. 
- config_status파일의 콘텐츠를 확인하여 속성 값 누락이나 인증서 발급 또는 트러스트 구성에 대한 잘못된 구성으로 인한 오류가 없는지 확인합니다. 이러한 오류가 있으면 인증서 발급 및 신뢰 구성 업데이트 단계를 수행하여 구성 값을 업데이트합니다.
- 하위 인증 기관 풀에 액세스할 수 있도록 워크로드 아이덴티티 풀의 관리형 워크로드 아이덴티티에 올바른 권한이 부여됐는지 확인합니다. 다음 명령어를 사용하세요. - gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION - 다음을 바꿉니다. - SUBORDINATE_CA_POOL_ID: 하위 인증 기관 풀 ID
- SUBORDINATE_CA_POOL_REGION: 하위 인증 기관 풀 리전
 - 이 명령어 출력에는 다음이 포함되어야 합니다. - bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* role: roles/privateca.workloadCertificateRequester- 위 예시에 대한 설명은 다음과 같습니다. - PROJECT_NUMBER는 프로젝트의 프로젝트 번호입니다.
- POOL_ID는 워크로드 아이덴티티 풀의 ID입니다.
 - 앞의 예시와 유사한 출력이 표시되지 않으면 CA 풀에서 인증서를 요청하도록 관리형 워크로드 아이덴티티를 승인에 설명된 대로 필요한 권한을 부여합니다. 
- config_status파일에 오류 메시지가 없으면 파일 내의- iam.googleapis.com/workload-identity값을 확인합니다. 값이 다음과 일치해야 합니다.- spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID - 위 예시에 대한 설명은 다음과 같습니다. - PROJECT_NUMBER는 관리형 워크로드 아이덴티티 풀이 포함된 프로젝트의 프로젝트 번호입니다.
- POOL_ID는 워크로드 아이덴티티 풀의 ID입니다.
- NAMESPACE_ID는 워크로드 아이덴티티 풀의 네임스페이스 ID입니다.
- MANAGED_IDENTITY_ID는 관리형 워크로드 아이덴티티 ID입니다.
 - iam.googleapis.com/workload-identity값이 잘못된 경우 VM 생성 중에만 관리형 ID 값을 업데이트할 수 있으므로 올바른 값으로 새 VM을 만들어야 합니다.
- config_status파일에 오류 메시지가 없으면 트러스트 구성에 SPIFFE 트러스트 도메인- POOL_ID.global.PROJECT_NUMBER.workload.id.goog에 대한 유효한 항목이 포함되어 있는지 확인하세요. 이 항목은 VM에 할당된 관리형 ID의 SPIFFE 트러스트 도메인에 해당합니다. 자세한 내용은 트러스트 구성 정의를 참조하세요.
- config_status파일에- INTERNAL_ERROR오류 코드가 있는 오류 메시지가 포함되어 있으면 Cloud Customer Care 또는 Google Cloud 담당자에게 오류 메시지에 대해 문의하세요.
메타데이터 서버 엔드포인트를 쿼리하면 404 오류가 반환됨
workload-identities 또는 trust-anchors 엔드포인트를 쿼리할 때 404 응답이 반환되면 VM 내에서 다음 명령어를 실행하여 VM에서 관리형 워크로드 아이덴티티를 지원하는지 확인합니다.
curl  "http://metadata.google.internal/computeMetadata/v1/instance/gce-workload-certificates/config-status" -H "Metadata-Flavor: Google"
- 응답으로 다음 오류 메시지가 포함된 HTTP - 404오류 코드가 반환되는 경우:- The requested URL /computeMetadata/v1/instance/gce-workload-certificates/config-status was not found on this server. That's all we know.- VM이 관리형 워크로드 아이덴티티를 지원하지 않는 것입니다. 이 문제를 해결하려면 다음 중 한 가지를 따르세요. 
- 응답으로 - workload certificate feature not enabled오류 메시지가 있는 HTTP- 404오류 코드가 반환되면 VM이 관리형 워크로드 아이덴티티를 지원하지만 기능이 사용 설정되지 않은 것입니다. 이 기능이 사용 설정된 새 VM을 만들거나 새 인스턴스 템플릿 및 관리형 인스턴스 그룹을 만듭니다.
- 다음 명령어를 실행하여 하위 CA 풀에 액세스할 수 있도록 워크로드 아이덴티티 풀에 올바른 권한이 부여되었는지 확인합니다. - gcloud privateca pools get-iam-policy SUBORDINATE_CA_POOL_ID \ --location=SUBORDINATE_CA_POOL_REGION - 다음을 바꿉니다. - SUBORDINATE_CA_POOL_ID: 하위 인증 기관 풀 ID
- SUBORDINATE_CA_POOL_REGION: 하위 인증 기관 풀 리전
 - 이 명령어 출력에는 다음이 포함되어야 합니다. 여기서 PROJECT_NUMBER는 프로젝트의 프로젝트 번호이고 POOL_ID는 워크로드 아이덴티티 풀 ID입니다. - bindings: - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.poolReader - members: - principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/* - role: roles/privateca.workloadCertificateRequester - 출력에 이러한 값이 없으면 CA 풀에서 인증서를 요청하도록 관리형 워크로드 아이덴티티를 승인에 설명된 대로 올바른 권한을 부여합니다. 
- iam.googleapis.com/workload-identity값이 올바르고 다음과 일치하는지 확인합니다.- spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID - 값이 일치하지 않을 경우 VM을 만든 후에는 관리형 ID 값을 업데이트할 수 없으므로 새 VM을 만들어야 합니다. 
- 트러스트 구성에 SPIFFE 트러스트 도메인 - POOL_ID.global.PROJECT_NUMBER.workload.id.goog에 대한 유효한 항목이 포함되어 있는지 확인하세요. 이 항목은 VM에 할당된 관리형 ID의 SPIFFE 트러스트 도메인에 해당합니다.