🔐

BitwardenのCLIを使って、動的にCredential情報を引っ張ってくる

2023/11/20に公開

GCPのサービスアカウントをローカルマシンで管理するのが面倒なので、credentials.jsonの内容をbitwardenのCLIから引っ張ってくる方法を試したのでメモ。

BitwardenのCLIを使えるようにしておく

  1. bw login
  2. BW_SESSIONを~/.zshrcに書く(もしくはIDEの環境変数を設定する場所に書く)
    bw loginを実行するとBW_SESSIONの中身を教えてくれるので、それを書く。
    (他の人に共有しちゃダメ)
export BW_SESSION="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="

※bw lock/unlockを使った場合はunlock時にBW_SESSIONの中身を教えてくれるので上記と同様に書く

jsonの中身をBitwardenのSecure Noteに登録する

こんなサービスアカウントキーがあるとする。

{
  "type": "service_account",
  "project_id": "project-001",
  "private_key_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "private_key": "-----BEGIN PRIVATE KEY-----\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n-----END PRIVATE KEY-----\n",
  "client_email": "hoge@project-001.iam.gserviceaccount.com",
  "client_id": "000000000000000000000",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%40hoge.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}

スクリーンショット
このように、BitwardenのGUIアプリからSecure Noteとして登録。
今回保存したSecure Noteのタイトルは credentials.json とした。

BitwardeのGUIからSecure Noteを登録したら、bw sync コマンドを打つこと。
このコマンドを打って初めて、手元のマシンに同期されるため。
コマンドが正常に終了すると、下記のコマンドでSecure Noteの中身を取ってくることができる。
bw get --session $BW_SESSION notes credentials.json

開発プロジェクトの設定

  1. 実行前にcredentials.jsonが生成されるようにしておく
  "scripts": {
    "generate-credentials.json": "bw get --session $BW_SESSION notes credentials.json > credentials.json",
    "dev": "npm run generate-credentials.json && next dev",
  1. .envに生成されたファイルのパスを書いておく
GOOGLE_APPLICATION_CREDENTIALS=credentials.json
  1. .gitignoreにcredentials.jsonを追加しておく
credentials.json

開発開始

npm run dev

レスキューナウテックブログ

Discussion