운영 에이전트 승인

이 가이드에서는 가상 머신(VM) 인스턴스에 설치하는 운영 에이전트가 원격 분석 데이터를 Google Cloud Observability로 전송하도록 승인되었는지 확인하는 방법을 설명합니다.

승인 개요

승인은 인증된 클라이언트가 특정 리소스 집합에 대해 갖는 권한을 확인하는 프로세스를 의미합니다. Google Cloud는 애플리케이션 기본 사용자 인증 정보(ADC)를 사용하여 Compute Engine VM 인스턴스에서 운영 에이전트를 승인합니다.

운영 에이전트는 VM의 연결된 서비스 계정 또는 서비스 계정 키를 인증하는 ADC를 지원합니다.

  • 연결된 서비스 계정은 VM과 같은 특정 리소스와 관련된 서비스 계정을 나타냅니다. 서비스 계정에는 고유한 사용자 인증 정보가 있습니다. ADC는 VM의 메타데이터 서버를 사용하여 서비스의 사용자 인증 정보를 가져옵니다.
  • 서비스 계정 키는 프로젝트의 서비스 계정에서 키 쌍을 승인하는 데 사용되는 비공개 키를 나타내며 이를 통해 액세스 토큰을 만들 수 있습니다. 서비스 계정 대신 Google Cloud API와 상호작용할 수 있도록 토큰을 사용하여 ID를 제공합니다.
  • 운영 에이전트는 gcloud auth를 사용한 승인을 지원하지 않습니다. 원치 않는 동작을 방지하려면 gcloud auth를 사용하여 생성된 사용자 인증 정보를 취소해야 합니다.

비공개 키에는 로컬 스토리지가 필요하며 해당 스토리지가 손상될 수 있으므로 가능한 경우 연결된 서비스 계정을 인증하도록 ADC를 구성하는 것이 좋습니다. 서비스 계정 키에 대한 자세한 내용은 서비스 계정 키 관리 권장사항을 참조하세요.

액세스 범위 확인

Compute Engine VM 인스턴스를 만들 때 액세스 범위가 할당됩니다. 새 Compute Engine VM에는 운영 에이전트에 대한 적절한 액세스 범위가 있지만 이전 VM 또는 범위가 수정된 VM에는 그렇지 않을 수 있습니다. 액세스 범위 및 서비스 계정에 대한 자세한 내용은 Compute Engine 문서의 승인을 참조하세요.

액세스 범위를 확인하려면 다음 안내를 따르세요.

  1. Compute Engine 인스턴스에서 다음 명령어를 실행하여 액세스 범위를 쿼리합니다.
    curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
  2. 명령어 결과에서 액세스 범위 https://www.googleapis.com/auth/cloud-platform이 나열된 경우 승인이 충분합니다.

    https://www.googleapis.com/auth/cloud-platform이 나열되지 않으면 다음 '로깅' 및 '모니터링' 쌍에 대해 각각 하나씩 2개의 액세스 범위가 필요합니다.

    • https://www.googleapis.com/auth/logging.write 또는
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write 또는
      https://www.googleapis.com/auth/monitoring.admin

액세스 범위를 수정하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔의 탐색 패널에서 Compute Engine을 선택한 후 VM 인스턴스를 선택합니다.

    VM 인스턴스로 이동

  2. 필요한 경우 Google Cloud 프로젝트의 드롭다운 목록을 클릭하고 프로젝트 이름을 선택합니다.
  3. 탐색 메뉴에서 VM 인스턴스를 선택하고 인스턴스 탭을 선택한 다음 VM의 이름을 선택합니다.
  4.  중지를 클릭하여 VM을 종료합니다.
  5. VM이 중지되면  수정을 클릭합니다.
  6. 페이지의 ID 및 API 액세스 섹션에서 액세스 범위를 찾은 다음 각 API에 액세스 설정을 선택합니다.
  7. Stackdriver Logging APIStackdriver Monitoring API 항목에서 쓰기 전용을 선택합니다.
  8. 저장을 클릭한 후  시작/재개를 클릭하여 VM을 다시 시작합니다.

서비스 계정 사용

인증은 클라이언트의 ID를 확인하는 프로세스입니다. 인증에는 서비스 계정을 사용하는 것이 좋습니다. 서비스 계정은 일반적으로 사용자가 아니라 애플리케이션 또는 워크로드에서 사용됩니다. 자세한 내용은 서비스 계정 개요를 참조하세요.

서비스 계정은 코드가 실행되는 위치가 Compute Engine이든 App Engine이든 또는 온프레미스이든 관계없이 인증에 사용할 수 있습니다. 자세한 내용은 Google 인증을 참조하세요.

이 섹션에서는 새 서비스 계정을 만들고 필요한 역할을 부여하는 방법과 필요한 역할이 없을 때 기존 서비스 계정을 업데이트하는 방법을 설명합니다.

서비스 계정 만들기

서비스 계정을 만들려면 다음 정보로 서비스 계정 만들기 절차를 완료하세요.

  • 서비스 계정을 만들 Google Cloud 프로젝트를 선택합니다.

    • Compute Engine 인스턴스의 경우 인스턴스를 만든 프로젝트를 선택합니다.

  • 역할 드롭다운 메뉴에서 다음 역할을 선택합니다.

    • 모니터링 > 모니터링 측정항목 작성자.

    • 로깅 > 로그 작성자.

  • 서비스 계정 키를 사용하여 인증하려면 키 유형으로 JSON을 선택하고 만들기를 클릭합니다.

    만들기를 클릭하면 서비스 계정 키가 포함된 파일이 로컬 시스템에 다운로드됩니다. 자세한 내용은 서비스 계정 키 만들기 및 삭제를 참조하세요.

그런 다음 연결된 서비스 계정 또는 서비스 계정 비공개 키를 사용하여 승인할지 여부를 기준으로 서비스 계정과 설정을 구성합니다.

기존 서비스 계정의 역할 확인 및 수정

Google Cloud 콘솔을 사용하여 기존 서비스 계정에 포함된 역할을 확인하고 누락된 필수 역할을 추가할 수 있습니다.

  1. Google Cloud 콘솔의 탐색 패널에서 IAM을 선택합니다.

    IAM으로 이동합니다.

  2. 필요한 경우 Google Cloud 프로젝트의 드롭다운 목록을 클릭하고 프로젝트 이름을 선택합니다.

  3. IAM 주 구성원(사용자 및 서비스 계정) 목록이 표시되지 않으면 권한 탭을 선택합니다.

  4. 주 구성원별로 보기 목록에서 서비스 계정 항목을 찾습니다. 역할 열에 서비스 계정에 부여된 역할이 나열됩니다.

  5. 서비스 계정에 운영 에이전트에 필요한 역할이 없으면 다음 단계에 따라 서비스 계정 만들기에 설명된 역할을 추가합니다.

    1. 서비스 계정 항목에서  수정을 클릭합니다.
    2. 다른 역할 추가를 클릭하여 누락된 역할을 추가합니다.
    3. 저장을 클릭합니다.

연결된 서비스 계정으로 승인

서비스 계정이 연결된 Compute Engine VM 인스턴스에 설치된 운영 에이전트를 승인하려면 다음을 수행합니다.

  1. VM의 액세스 범위를 확인합니다.

  2. 서비스 계정에 가능한 최소 권한의 IAM 역할을 부여합니다. 필요한 역할은 이 페이지의 서비스 계정 만들기 섹션을 참조하세요.

  3. 에이전트가 실행 중인 VM에 서비스 계정을 연결합니다.

  4. 아직 에이전트를 설치하지 않았다면 설치합니다. 에이전트를 설치하는 방법은 에이전트 설치를 참조하세요.

서비스 계정 키로 승인

서비스 계정 비공개 키를 사용하여 VM 인스턴스에 설치된 운영 에이전트를 승인하려면 다음을 수행합니다.

  1. 로컬 시스템에서 VM 인스턴스로 서비스 계정 키 파일을 전송합니다.

    1. 로컬 시스템에서 서비스 계정 키 파일을 가리키는 환경 변수를 만듭니다. 다음 예시에서는 CREDS라는 변수를 만듭니다.

      CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
      
    2. 다음 표에 표시된 단계를 완료합니다.

      Compute Engine

      1. Google Cloud 콘솔의 탐색 패널에서 Compute Engine을 선택한 후 VM 인스턴스를 선택합니다.

        VM 인스턴스로 이동

        VM의 INSTANCE_NAMEINSTANCE_ZONE을 확인합니다.

      2. 로컬 시스템에서 Google Cloud CLI 명령어를 실행하여 키 파일을 로컬 시스템에서 VM 인스턴스로 복사합니다.

        REMOTE_USER="$USER"
        INSTANCE="INSTANCE_NAME"
        ZONE="INSTANCE_ZONE"
        gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
        
      3. Compute Engine 인스턴스에서 서비스 계정 키 파일을 임시 위치에서 영구 위치로 이동합니다. Linux의 경우 root에서만 서비스 계정 키 파일을 읽을 수 있는지 확인합니다.

        또한 서비스 계정 키 파일의 위치를 가리키도록 환경 변수 GOOGLE_APPLICATION_CREDENTIALS를 설정해야 하고 변수가 에이전트 프로세스에 표시되어야 합니다. 구성 정보는 GOOGLE_APPLICATION_CREDENTIALS 설정을 참조하세요.

        예를 들어 Linux에서 서비스 계정 키 파일을 기본 위치로 이동한 후 적절한 권한을 설정하는 다음 스크립트를 실행할 수 있습니다.

        CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
        sudo mkdir -p /etc/google/auth
        sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
        sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
        sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
        

  2. 이제 VM 인스턴스에 에이전트에 필요한 서비스 계정 키 파일이 있습니다. 그런 다음 에이전트를 설치하거나 다시 시작합니다.

GOOGLE_APPLICATION_CREDENTIALS 설정

이 섹션에서는 에이전트의 프로세스에 표시되도록 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정하는 방법을 보여줍니다.

Linux

  1. 다음 구성 파일을 수정하거나 파일이 없는 경우 파일을 만듭니다.

    /etc/systemd/system.conf
    
  2. 구성 파일에 다음을 추가합니다.

    DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
    
  3. 환경 변수를 다시 로드합니다.

    sudo systemctl daemon-reload
    
  4. VM 인스턴스에서 다음 명령어를 실행하여 에이전트를 다시 시작합니다.

    sudo systemctl restart google-cloud-ops-agent
    

Windows

  1. PowerShell에서 다음 명령어를 관리자로 실행하여 운영 에이전트가 사용할 GOOGLE_APPLICATION_CREDENTIALS 시스템 환경 변수를 설정합니다.

    [Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
    
  2. VM 인스턴스에서 다음 명령어를 실행하여 에이전트를 다시 시작합니다.

    Restart-Service -Name google-cloud-ops-agent -Force