LoginSignup
6

More than 5 years have passed since last update.

Authentication with Google Cloud Platform in CircleCI

Posted at

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を提供していません。このトピックについてはこちらをご覧ください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6