서버에서 gcloud와 함께 GOOGLE_APPLICATION_CREDENTIALS를 사용하는 방법은 무엇입니까?


11

gcloudGCE 외부의 서비스 계정에서 비 대화식으로 명령 줄 을 사용하는 가장 간단한 방법은 무엇입니까 ? 신임 정보 파일로 파일 시스템을 낭비하지 않는 것이 바람직 gcloud auth activate-service-account --key-file=...합니다.

gcloud서비스 계정으로 사용하기위한 많은 사용 사례가 있습니다. 예를 들어 서버에서 GOOGLE_APPLICATION_CREDENTIALS응용 프로그램을 실행하기 전에이 서버 가 올바르게 설정되어 있고 필요한 권한이 있는지 테스트하고 싶습니다 . 또는 gcloud명령 줄을 사용하여 검사를 수행하는 일부 설정 스크립트 또는 cron 스크립트를 실행하고 싶습니다 .

Google Cloud 라이브러리 (예 : python , java )는 자동으로 환경 변수 GOOGLE_APPLICATION_CREDENTIALS를 사용하여 Google Cloud에 인증합니다. 그러나 불행히도이 명령 행은에 영향을 미치지 않는 것 같습니다 gcloud. gcloud파일 시스템을 그대로 유지하면서 사용하는 깔끔한 방법은 무엇입니까 ?

$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:

  $ gcloud auth login

to obtain new credentials, or if you have already logged in with a
different account:

  $ gcloud config set account ACCOUNT

to select an already authenticated account to use.


1
3
yonran

답변:


20

gcloud일반적으로 GOOGLE_APPLICATION_CREDENTIALS환경 변수를 사용하지 않습니다 . 에 이러한 응용 프로그램 기본 자격 증명을 쉽게 설정할 수있는 몇 가지 명령 만 있습니다 gcloud auth application-default [login|revoke|print-access-token...].

기본적 gcloud으로 $ {HOME} /. config / gcloud에 구성이 저장됩니다. CLOUDSDK_CONFIG환경 변수 를 설정하여 해당 위치를 대체 할 수 있습니다 .

또한 대부분의 설정을 무시하여 gcloud config set ...및 / 또는를 통해 사전 구성 할 필요가 없도록 대부분의 설정을 무시할 수도 있습니다 gcloud auth activate-service-account. 각 설정마다 환경 변수를 지정할 수 있습니다.

예를 들어 서비스 계정 키 파일을 사용하려고 시도한 해당 명령은 다음과 같습니다.

$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \
    gcloud alpha pubsub topics publish testtopic hello

이것은 CLOUDSDK_CONFIG액세스 토큰을 캐시해야하기 때문에 자격 증명을 계속 캐시 하므로 호출 할 때마다 자격 증명 을 새로 고칠 필요가 없습니다.

귀하의 유스 케이스에 가장 적합한 옵션은 다음과 같습니다.

  1. CLOUDSDK_CONFIG임시 디렉토리로 설정
  2. gcloud auth activate-service-account --key-file=...
  3. ... 일을하기 gcloud위해 사용 하십시오 ...
  4. 임시 CLOUDSDK_CONFIG디렉토리를 제거하십시오 .

1

--account옵션을 보셨습니까 ? 처럼

$gcloud --account="foo" ...

( 참조 )

"신임 정보 파일로 파일 시스템을 낭비하지 않는 것이 좋습니다"에 관해서는 달성 가능한지 확실하지 않습니다.


OP는 다른 곳에서 자격 증명을 캐시하는 서비스 계정 자격 증명을 활성화하지 않고도 인증 방법을 묻고 있다고 생각합니다. --account=자격 증명이 활성화 된 후에 만 사용할 수 있다고 생각합니다 .
David Xia

1

1) GCP IAM에서 ServiceAccount를 만듭니다. "새 개인 키 제공"확인란을 선택하고 파일 유형으로 JSON을 선택하십시오.

2) JSON 파일을 서버로 다운로드하고 다음을 입력하십시오. gcloud auth activate-service-account --key-file serviceaccount.json

3)을 실행하여 자격 증명이 적용되었는지 확인합니다 gcloud auth list.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.