이 가이드에서는 가상 머신(VM) 인스턴스에 설치하는 운영 에이전트가 원격 분석 데이터를 Monitoring으로 전송하도록 승인되었는지 확인합니다.
승인 개요
승인은 인증된 클라이언트가 특정 리소스 집합에 대해 갖는 권한을 확인하는 프로세스를 의미합니다. 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 문서의 승인을 참조하세요.
액세스 범위를 확인하려면 다음 안내를 따르세요.
- Compute Engine 인스턴스에서 다음 명령어를 실행하여 액세스 범위를 쿼리합니다.
curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
명령어 출력에서 액세스 범위
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
액세스 범위를 수정하려면 다음 안내를 따르세요.
-
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.
- 필요한 경우 Google Cloud 프로젝트의 드롭다운 목록을 클릭하고 프로젝트 이름을 선택합니다.
- 탐색 메뉴에서 VM 인스턴스를 선택하고 인스턴스 탭을 선택한 다음 VM의 이름을 선택합니다.
- stop 중지를 클릭하여 VM을 종료합니다.
- VM이 중지되면 edit 수정을 클릭합니다.
- 페이지의 ID 및 API 액세스 섹션에서 액세스 범위를 찾은 다음 각 API에 액세스 설정을 선택합니다.
- Stackdriver Logging API 및 Stackdriver Monitoring API 항목에서 쓰기 전용을 선택합니다.
- 저장을 클릭한 후 play_arrow 시작/재개를 클릭하여 VM을 다시 시작합니다.
서비스 계정 사용
인증은 클라이언트의 ID를 확인하는 프로세스입니다. 인증에는 서비스 계정을 사용하는 것이 좋습니다. 서비스 계정은 일반적으로 사용자가 아니라 애플리케이션 또는 워크로드에서 사용되는 특수한 종류의 계정입니다. 자세한 내용은 서비스 계정 개요를 참조하세요.
서비스 계정은 코드가 실행되는 위치가 Compute Engine이든 App Engine이든 또는 온프레미스이든 관계없이 인증에 사용할 수 있습니다. 자세한 내용은 Google 인증을 참고하세요.
이 섹션에서는 새 서비스 계정을 만들고 필요한 역할을 부여하는 방법과 필요한 역할이 없을 때 기존 서비스 계정을 업데이트하는 방법을 설명합니다.
서비스 계정 만들기
서비스 계정을 만들려면 다음 정보로 서비스 계정 만들기 절차를 완료하세요.
서비스 계정을 만들 Google Cloud 프로젝트를 선택합니다.
Compute Engine 인스턴스의 경우 인스턴스를 만든 프로젝트를 선택합니다.
역할 드롭다운 메뉴에서 다음 역할을 선택합니다.
모니터링 > 모니터링 측정항목 작성자.
로깅 > 로그 작성자.
서비스 계정 키를 사용하여 인증하려면 키 유형으로 JSON을 선택하고 만들기를 클릭합니다.
만들기를 클릭하면 서비스 계정 키가 포함된 파일이 로컬 시스템에 다운로드됩니다. 자세한 내용은 서비스 계정 키 만들기 및 삭제를 참조하세요.
그런 다음 연결된 서비스 계정 또는 서비스 계정 비공개 키를 사용하여 승인할지 여부를 기준으로 서비스 계정과 설정을 구성합니다.
기존 서비스 계정의 역할 확인 및 수정
Google Cloud 콘솔을 사용하여 기존 서비스 계정에 포함된 역할을 확인하고 누락된 필수 역할을 추가할 수 있습니다.
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 IAM 및 관리자인 결과를 선택합니다.
필요한 경우 Google Cloud 프로젝트의 드롭다운 목록을 클릭하고 프로젝트 이름을 선택합니다.
IAM 주 구성원(사용자 및 서비스 계정) 목록이 표시되지 않으면 권한 탭을 선택합니다.
주 구성원별로 보기 목록에서 서비스 계정 항목을 찾습니다. 역할 열에 서비스 계정에 부여된 역할이 나열됩니다.
서비스 계정에 운영 에이전트에 필요한 역할이 없으면 다음 단계에 따라 서비스 계정 만들기에 설명된 역할을 추가합니다.
- 서비스 계정 항목에서 edit 수정을 클릭합니다.
- 다른 역할 추가를 클릭하여 누락된 역할을 추가합니다.
- 저장을 클릭합니다.
연결된 서비스 계정으로 승인
서비스 계정이 연결된 Compute Engine VM 인스턴스에 설치된 운영 에이전트를 승인하려면 다음을 수행합니다.
VM의 액세스 범위를 확인합니다.
서비스 계정에 가능한 최소 권한의 IAM 역할을 부여합니다. 필요한 역할은 이 페이지의 서비스 계정 만들기 섹션을 참조하세요.
에이전트가 실행 중인 VM에 서비스 계정을 연결합니다.
아직 에이전트를 설치하지 않았다면 설치합니다. 에이전트를 설치하는 방법은 에이전트 설치를 참조하세요.
서비스 계정 키로 승인
서비스 계정 비공개 키를 사용하여 VM 인스턴스에 설치된 운영 에이전트를 승인하려면 다음을 수행합니다.
로컬 시스템에서 VM 인스턴스로 서비스 계정 키 파일을 전송합니다.
로컬 시스템에서 서비스 계정 키 파일을 가리키는 환경 변수를 만듭니다. 다음 예시에서는
CREDS
라는 변수를 만듭니다.CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
다음 표에 표시된 단계를 완료합니다.
Compute Engine
-
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.
VM의 INSTANCE_NAME 및 INSTANCE_ZONE을 확인합니다.
로컬 시스템에서 Google Cloud CLI 명령어를 실행하여 키 파일을 로컬 시스템에서 VM 인스턴스로 복사합니다.
REMOTE_USER="$USER" INSTANCE="INSTANCE_NAME" ZONE="INSTANCE_ZONE" gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
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"
-
이제 VM 인스턴스에 에이전트에 필요한 서비스 계정 키 파일이 있습니다. 그런 다음 에이전트를 설치하거나 다시 시작합니다.
에이전트를 설치하는 방법은 에이전트 설치를 참조하세요.
에이전트를 다시 시작하는 방법은 에이전트 다시 시작을 참조하세요.
서비스 계정 키 파일을 재확인하려면 비공개 키 사용자 인증 정보 확인을 참조하세요.
GOOGLE_APPLICATION_CREDENTIALS
설정
이 섹션에서는 에이전트의 프로세스에 표시되도록 GOOGLE_APPLICATION_CREDENTIALS
환경 변수를 설정하는 방법을 보여줍니다.
Linux
다음 구성 파일을 수정하거나 파일이 없는 경우 파일을 만듭니다.
/etc/systemd/system.conf
구성 파일에 다음을 추가합니다.
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
환경 변수를 새로고침합니다.
sudo systemctl daemon-reload
VM 인스턴스에서 다음 명령어를 실행하여 에이전트를 다시 시작합니다.
sudo systemctl restart google-cloud-ops-agent
Windows
PowerShell에서 다음 명령어를 관리자로 실행하여 운영 에이전트가 사용할
GOOGLE_APPLICATION_CREDENTIALS
시스템 환경 변수를 설정합니다.[Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
VM 인스턴스에서 다음 명령어를 실행하여 에이전트를 다시 시작합니다.
Restart-Service -Name google-cloud-ops-agent -Force