Help us understand the problem. What is going on with this article?

Authentication with Google Cloud Platform in CircleCI

More than 3 years have passed since last update.

https://circleci.com/docs/google-authの翻訳。Testing with Google Cloud Test Labで説明されていた内容のうち、CircleCIからCloud Test Labでのテストを実行する上で必要になる認証について。

概要

gcloudコマンドラインツール使いアプリをGoogle Cloud Platformにデプロイする前に、gcloudコマンドラインツールに適切な権限を与えるための認証が必要になります。したがって、JSON Service Accountを作成する必要があります。このService Accountは、base64でエンコードしCircleCIの環境変数へ追加します。追加した環境変数はあなたのビルドスクリプトでJSONファイルにデコードし、それをgcloudツールの認証に使用します。認証後、gcloudツールをあなたのGCPプロジェクトの操作に利用できます。

JSON Service Accountの作成とダウンロード

Service Accountをダウンロードするには、このリンクをクリックします。もしくはhttps://console.developers.google.com/へアクセスし、左側のメニューから'API Managaer'を選択し、'認証情報'から'認証情報を作成'、そして'サービスアカウントキー'を選択します。

gcp_circle_ci1.png

サービスアカウントを選択できるので、既存のものを選択するか、名前とサービスアカウントIDを入力して新規作成します。そしてキーのタイプに'JSON'を選択し'作成'をクリックするとJSONファイルがダウンロードされます。

gcp_circle_ci2.png

Service Accountは認証情報であり、あなたの代わりにプロジェクトを操作できるということを心に留めておき、その扱いには十分注意してください。

CircleCIへのサービスアカウントの追加

Service Accountを作成後、その次のステップは、それをあなたのCircleCIのビルド環境の環境変数へ登録することです。まず最初にService Accountをbase64でエンコードします。LinuxやOS Xであれば以下のように入力してください。

base64 <your-service-account.json>

そして、コマンドの実行結果をコピーしてください。Windowsユーザーは恐らくcertutilを使う必要があります。

JSON Service Accountをエンコードした値をコピーし、CircleCIのプロジェクトから右上にある'Project Settings'をクリックし、それから左側の'Environment variables'をクリックしてください。NameにCLIENT_SECRET、valueにコピーしたエンコード済みのJSON Service Accountの値をペーストし、'Save variables'をクリックします。これでCircleCIのビルドからService Accountへアクセスできるようになりました。

gcloudツールの認証へのサービスアカウントの使用

エンコードしたサービスアカウントを環境変数に追加したと思いますが、次のステップではそれをデコードし、ビルドスクリプトから使用できるようにします。そして、gcloudツールの認証に使用します。以下はその例です。

echo $CLIENT_SECRET | base64 --decode > ${HOME}/client-secret.json

このデコードされたsecretは、client-secret.jsonに保存されます。次に、gcloudのコマンドでアカウントを認証します。最初にgcloudツールをアップデートするのは良い方法ですが、あなたのプロジェクトをsetするのを忘れないでください。

gcloud --quiet components update
gcloud auth activate-service-account --key-file ${HOME}/client-secret.json
gcloud config set project $GCLOUD_PROJECT

セキュリティについての考慮

サービスアカウントをCircleCIの環境変数に追加した瞬間からそのビルド環境は認証情報を含み、もしそれが盗まれたのならあなたのプロジェクトを危険にさらす可能性があります。例として、誰かがあなたのプロジェクトのに対して認証情報のprint、もしくはgcloudツールを使った悪意のある行為を行うための変更のPRを作成するかもしれません。幸いなことにCircleCIはPull Requestsで環境変数を設定するようなUIを提供していません。このトピックについてはこちらをご覧ください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away