Teller

TellerとのKeeperシークレットマネージャーを統合して動的なシークレット取得

特徴

  • Teller環境内でKeeperボルトからシークレットを取得する

  • Teller内でシークレット資格情報を環境変数として設定する

Keeperシークレットマネージャーの機能について、詳しくは概要ページをご覧ください。

要件

本ページでは、シークレットマネージャーとTellerの統合について取り扱います。この統合を利用するには、以下が必要となります。

セットアップ

シークレットマネージャーの構成を取得

Keeperコマンダーを使用して、アプリケーションに新しいクライアントを追加し、構成をBase64文字列に初期化します。この文字列は、「Initialized Config:」ラベルの後に表示される長いテキストハッシュとなります。

My Vault> sm client add --app MyApp --config-init b64

Successfully generated Client Device
====================================

Initialized Config: eyJob3N0bmFtZSI6ICJr....OUk1ZTV1V2toRucXRsaWxqUT0ifQ==
IP Lock: Enabled
Token Expires On: 2021-10-19 15:31:31
App Access Expires on: Never

その値を、 KSM_CONFIGという名前の環境変数に割り当てる必要があります。

Teller構成の作成

TellerがKeeperボルトから変数を取得し、現在の作業セッションに入力することで、安全かつ生産的に作業できるようになります。

Tellerにはtellerfileと呼ばれる構成ファイルが必要となります。これは、リポジトリ内にある.teller.ymlファイル、またはteller -c your-conf.ymlを使用する場合のファイルです。 新たに作成する場合はteller newを実行してウィザードに従い、希望するプロバイダを選択すると.teller.ymlが生成されます。

あるいは、以下の最小限のテンプレートを使用することもできます。

project: project_name
opts:
  stage: development

providers:
  # 必要となる構成: KSM_CONFIG=base64_config
  # またはファイルパス: KSM_CONFIG_FILE=ksm_config.json
  keeper_secretsmanager:
    # 1件の記録から複数のKey-valueの対を取得
    # 空白でないフィールドは全てそのラベルにマッピング
    # 空白の場合はフィールドタイプにマッピングされ、重複するものには数字 (1,2,...N) の接尾辞がつきます。
    env_sync:
      path: [recordUID]

    # Keeper表記法を使用して個別のフィールド値を選択
    # https://docs.keeper.io/secrets-manager/secrets-manage
    env:
      USER:
        path: [recordUID]/field/login
      PSWD:
        path: [recordUID]/field/password

コマンドラインから実行

現在のディレクトリ内の.teller.ymlファイル、またはteller -c your-conf.ymlを使用する際のファイルを使用し、以下のコマンドでプロセスを実行できます。

$ teller run node src/server.js
Service is up.
Loaded configuration: Mailgun, SMTP
Port: 5050

GitHubアクションの使用

Tellerの手順を追加します。

# set up teller step
- name: Setup Teller
  uses: spectralops/setup-teller@v2
- name: Run a Teller task (show, scan, run, etc.)
  run: teller run [args]

以下の例では、デフォルトの構成ファイルの.teller.ymlを使用していますが、このファイルは、runコマンドにおいてteller -c your-conf.ymlで指定するカスタムファイルに置き換えることができます。

name: run with teller
on:
  push:
    branches:
      - master
      - main
  pull_request:

jobs:
  build:
    name: Build your code
    runs-on: ubuntu-latest

    steps:
      - name: Clone repo
        uses: actions/checkout@master


      # Tellerをセットアップ
      - name: Setup Teller
        uses: spectralops/setup-teller@v2

      - name: Run a Teller task (show, scan, run, etc.)
        run: teller run npm run build

最終更新