사용자 인증 정보 문제 해결

이 문서에서는 Compute Engine VM 인스턴스의 운영 에이전트 승인 및 사용자 인증 정보 문제를 해결하는 데 도움이 되는 정보를 제공합니다.

운영 에이전트가 액세스 또는 승인 오류를 보고하거나, 에이전트가 정상적으로 실행되는 것 같지만 데이터가 없거나, 알림 정책이 예상대로 작동하지 않는 경우 올바른 프로젝트가 지정되었는지, 그리고 VM 인스턴스의 사용자 인증 정보가 올바른지 확인해야 합니다.

  • 비공개 키가 아닌 표준 사용자 인증 정보로 Compute Engine VM 인스턴스를 사용하고 있는 경우 데이터가 잘못된 프로젝트로 갈 가능성은 없지만 사용자 인증 정보가 부족할 수 있습니다. 사용자 인증 정보에 대한 자세한 내용은 운영 에이전트 승인을 참조하세요. 사용자 인증 정보를 확인하려면 Compute Engine 사용자 인증 정보 확인을 참조하세요.

  • Compute Engine 인스턴스에 비공개 키 사용자 인증 정보를 사용하고 있는 경우 사용자 인증 정보가 유효하지 않거나 잘못된 프로젝트에서 가져온 것일 수 있습니다. 사용자 인증 정보에 대한 자세한 내용은 운영 에이전트 승인을 참조하세요. 사용자 인증 정보를 확인하려면 비공개 키 사용자 인증 정보 확인을 참조하세요.

Compute Engine 사용자 인증 정보 확인하기

Google Cloud 콘솔의 Compute Engine VM 인스턴스 페이지를 사용하여 Compute Engine VM 인스턴스가 운영 에이전트에 적절한 사용자 인증 정보를 갖고 있는지 확인합니다. 사용자 인증 정보는 대개 모든 새 Compute Engine VM 인스턴스의 기본 서비스 계정에 추가되지만 인스턴스를 만들 때 이러한 기본값을 덮어쓸 수 있습니다.

Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

VM 인스턴스로 이동

검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.

  1. 필요한 경우 현재 Google Cloud 프로젝트를 Compute Engine VM 인스턴스와 연결된 프로젝트로 변경합니다. 예를 들어 결제 사용 설정 메시지가 나타나면 현재 프로젝트에 Compute Engine VM 인스턴스가 없는 것입니다.
  2. VM 인스턴스 페이지에서 VM 인스턴스의 이름을 클릭합니다. VM 인스턴스의 세부정보 페이지가 나타납니다.
  3. VM 인스턴스 세부정보 페이지에서 Cloud API 액세스 범위 제목 아래를 봅니다.
    • '모든 Cloud APIs에 대한 전체 액세스 허용'이 표시되면 적절한 사용자 인증 정보가 있는 것입니다.
    • Cloud Monitoring API의 이전 이름인 Stackdriver Monitoring API 옆에 쓰기 전용 또는 전체 권한이 있는 것으로 표시되면 적절한 사용자 인증 정보가 있는 것입니다.
    • 그렇지 않으면 에이전트에 필요한 사용자 인증 정보가 인스턴스의 기본 서비스 계정에 없는 것입니다. 인스턴스에서 에이전트를 사용하려면 비공개 키 서비스 계정 사용자 인증 정보를 추가해야 합니다. 사용자 인증 정보 추가의 안내를 참조하세요.

올바른 기본 사용자 인증 정보가 있으면 Linux 및 Windows에 설치로 건너뜁니다.

비공개 키 사용자 인증 정보 확인

VM 인스턴스에 유효한 비공개 키 사용자 인증 정보가 설치되어 있는지 확인하려면 먼저 사용자 인증 정보 파일이 예상 위치에 있는지 확인한 다음 사용자 인증 정보 파일의 정보가 유효한지 확인합니다. Google Cloud 콘솔의 IAM 및 관리자 > 서비스 계정 섹션을 사용하여 이전의 유효 사용자 인증 정보를 취소할 수 있습니다. 유효한 사용자 인증 정보가 없는 경우 사용자 인증 정보 추가를 참조하여 기존 사용자 인증 정보를 바꾸거나 새로 추가합니다.

사용자 인증 정보가 있나요?

비공개 키 서비스 계정 사용자 인증 정보가 인스턴스에 있는지 확인하려면 인스턴스에서 다음 Linux 명령어를 실행합니다.

sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json

두 명령어 중 하나가 다음과 같은 파일을 표시하면 인스턴스에 유효한 비공개 키 사용자 인증 정보가 있는 것입니다. 두 명령어 모두 파일을 표시하면 GOOGLE_APPLICATION_CREDENTIALS가 나타내는 파일이 사용됩니다.

{
  "type": "service_account",
  "project_id": "{your-project-id}",
  "private_key_id": "{your-private-key-id}",
  "private_key": "{your-private-key}",
  "client_email": "{your-project-number}-{your-key}@developer.gserviceaccount.com",
  "client_id": "{your-client-id}",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "{x509-cert-url}",
  "client_x509_cert_url": "{client-x509-cert-url}"
}

사용자 인증 정보 파일이 없는 경우 사용자 인증 정보 추가를 참조하세요.

사용자 인증 정보가 유효한가요?

사용자 인증 정보 파일에서 project_id 필드는 Google Cloud 프로젝트이고, client_email은 프로젝트의 서비스 계정을 식별하고, private_key_id는 서비스 계정의 비공개 키를 식별합니다. 이 정보를 Google Cloud 콘솔의 IAM 및 관리자 > 서비스 계정 섹션에 표시된 정보와 비교합니다.

다음 중 하나에 해당하는 경우 사용자 인증 정보가 유효하지 않습니다.

  • Compute Engine VM 인스턴스를 확인하고 있지만 사용자 인증 정보 파일의 Google Cloud 프로젝트가 인스턴스를 포함하는 프로젝트가 아닙니다.
  • 나열된 서비스 계정이 존재하지 않습니다. 삭제되었을 수 있습니다.
  • 나열된 서비스 계정에 사용 설정된 올바른 역할이 없습니다. 서비스 계정에 최소한 측정항목 수집을 위한 roles/monitoring.metricWriter(모니터링 측정항목 작성자)와 로그 작성을 위한 roles/logging.logWriter(로그 작성자)가 있어야 합니다.
  • 비공개 키가 없습니다. 취소되었을 수 있습니다.

서비스 계정에 문제가 없지만 비공개 키가 취소된 경우 새 비공개 키를 만들어 인스턴스에 복사할 수 있습니다. 그렇지 않으면 다음에 나오는 사용자 인증 정보 추가 섹션의 설명에 따라 새 서비스 계정을 만들어야 합니다.

새 사용자 인증 정보 생성

사용자 인증 정보가 유효하지 않은 경우 다음 단계를 따르세요.

  1. 비공개 키로 승인해야 하는 인스턴스가 포함된 연결된 각 프로젝트(https://www.googleapis.com/auth/monitoring.write 액세스 범위를 포함하지 않고 생성된 Compute Engine 인스턴스)에서는 서비스 계정을 만들고 아직 비공개 키가 없는 경우에는 비공개 키를 생성합니다. 아래 단계를 따르세요.
    1. Google Cloud 콘솔에서  설정 페이지로 이동합니다.

      설정으로 이동

      검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

    2. 요약 탭을 선택합니다. 해당 Compute Engine 리소스를 포함하는 프로젝트를 식별하고 Google Cloud 콘솔로 이동합니다.
    3. Google Cloud 콘솔의 IAM 서비스 계정 페이지로 이동하여 Google Cloud 프로젝트를 선택하고 새 서비스 계정을 만든 다음 해당 서비스 계정의 비공개 키를 새로 생성합니다.

      이 단계를 수행하려면 다음 중 하나를 따릅니다.

      • IAM 서비스 계정 페이지로 이동하여 Google Cloud 프로젝트를 선택한 다음 서비스 계정 만들기의 단계를 따르세요.

        IAM 서비스 계정으로 이동

      • 다음 버튼을 클릭한 후 Google Cloud 프로젝트를 선택합니다.

        서비스 계정 만들기 및 키 다운로드

        이전 버튼은 키를 만들고 에이전트별 서비스 계정의 로컬 시스템에 다운로드하는 프로세스를 자동화합니다. 또한 필요한 경우 프로세스가 필요한 서비스 계정을 만들고 서비스 계정에 올바른 권한이 있는지 확인합니다. 에이전트 특정 서비스 계정에는 stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com과 비슷한 이름이 사용됩니다. 다음과 같은 대화상자를 통해 이 작업이 완료되었다는 알림을 받습니다.

        서비스 계정과 키가 생성되었음을 사용자에게 알리는 배너

  2. 문제의 서비스 계정에 해당하는 인스턴스에서 비공개 키를 바꿉니다.

    • Linux의 경우 /etc/google/auth/application_default_credentials.json에 있는 비공개 키를 바꿉니다.
    • Windows의 경우 C:\ProgramData\Google\Auth\application_default_credentials.json에 있는 비공개 키를 바꿉니다. 자세한 내용은 인스턴스에 비공개 키 복사를 참조하세요.
  3. 에이전트 다시 시작

    • Linux의 경우 sudo service stackdriver-agent restart를 실행합니다.
    • Windows의 경우 서비스 관리 콘솔로 이동하고 Cloud Monitoring 서비스를 다시 시작합니다.

새 비공개 키가 필요한 프로젝트가 여러 개인 경우 각 프로젝트에 대해 이 절차를 반복합니다.

비공개 키가 올바른지 확인하려면 사용자 인증 정보가 있나요?를 참조하세요. 구체적으로는 다음과 같습니다.

  • 인스턴스의 비공개 키 JSON 파일을 읽습니다. 예: sudo cat /etc/google/auth/application_default_credentials.json(Linux의 경우)
  • project_id 필드의 값이 사용자 인증 정보를 생성한 모니터링 프로젝트의 값과 일치하는지 확인합니다.