ファイル・システムの使用によるシークレット管理

Docker SwarmやDocker Secretsなど、一部のオンプレミス・デプロイメント・システムでは、シークレット値を、環境変数によって直接設定するのではなく、ファイル・システムから読み取る必要があります。例えば、ご使用の環境でPOSTGRES_PASSWORDを設定するかわりに、POSTGRES_PASSWORD_FILEで、必要なパスワードを含むテキスト・ファイルを指す必要がある場合があります。そのような場合に、Retoolでは、ファイル・システムからの特定の環境変数の読み取りがサポートされています。

📘

この機能にはRetoolバージョン2.66.10以上が必要です

🚧

シークレット以外の環境変数を設定できる必要もあります

Retoolの起動時に、構成されたシークレット・ファイルが検索され、それらがシステム全体ではなく実行中のコンテナー用の環境変数として設定されます。

この機能を使用するには、まず、環境変数RETOOL_LOAD_FILE_SECRETStrueに設定されていることを確認します。このように設定されていない場合は、Retoolでファイル・システムからシークレットがロードされません。

次に、構成する環境変数を選択します。それらのシークレットを環境に直接追加するのではなく、ファイル・システムに格納されているシークレットへのパスを追加し、環境変数名の末尾に_FILEを付加します。例えば、ENCRYPTION_KEYを設定したい場合は、ENCRYPTION_KEY_FILEを、そのファイルが存在するファイル・システム上のパスに設定します。

# .envファイル
RETOOL_LOAD_FILE_SECRETS=true
ENCRYPTION_KEY_FILE=/path/to/key

Retoolの起動時に、以下のログ行が表示されます。

RETOOL-CONFIG: RETOOL_LOAD_FILE_SECRETS is true, reading the following secrets from the filesystem
RETOOL-CONFIG: Setting ENCRYPTION_KEY via /path/to/key

上記のログ・メッセージが表示された場合は、リストされた環境変数が正常に設定されたということです。別のメッセージが表示された場合は、次のステップについて「トラブルシューティング」を参照してください。

独自のシークレットの管理

Retoolでは、RETOOL_EXPOSEDという接頭辞が付いた環境変数の使用による独自のシークレットの管理がサポートされています。ファイル・システムを使用してこれらのシークレットを管理することもできます。RETOOL_EXPOSED接頭辞を使用するかわりに、RETOOL_FILE_EXPOSEDを使用します。例えば、データベース・パスワードをリソースが使用できるようにする場合は、RETOOL_FILE_EXPOSED_DB_PASSWORDを、ファイル・システム上のそのパスに設定します。

# .envファイル
RETOOL_LOAD_FILE_SECRETS=true
RETOOL_FILE_EXPOSED_DB_PASSWORD=/path/to/db/password
RETOOL-CONFIG: RETOOL_LOAD_FILE_SECRETS is true, reading the following secrets from the filesystem
RETOOL-CONFIG: Setting RETOOL_EXPOSED_DB_PASSWORD via /path/to/db/password

トラブルシューティング

この機能の使用時に、次のエラー・メッセージが表示される場合があります。

RETOOL-CONFIG: Error setting SECRET via SECRET_FILE: /path/to/secret_file does not exist

これは、SECRET_FILE環境変数で指定されたパスが存在しないということです。ビルド時に、Retoolを実行しているコンテナーが、指定されたパスにアクセスできるかどうかを再確認する必要があります。

RETOOL-CONFIG: Error setting SECRET via SECRET_FILE: /path/to/secret_file is a directory

これは、SECRET_FILE環境変数で指定されたパスは存在するが、ファイルではないため、SECRETの設定に使用できないということです。SECRET_FILE環境変数で指定したパスがディレクトリーではなく、実際のファイルを指していることを確認してください。

付録: サポートされている環境変数のリスト

この機能は、シークレット値を含む以下の環境変数でのみ動作します。

  • CLIENT_SECRET
  • CUSTOM_API_KEY
  • CUSTOM_OAUTH2_SSO_CLIENT_SECRET
  • CUSTOM_OAUTH2_SSO_JWT_EMAIL_KEY
  • CUSTOM_OAUTH2_SSO_JWT_FIRST_NAME_KEY
  • CUSTOM_OAUTH2_SSO_JWT_LAST_NAME_KEY
  • CUSTOM_OAUTH2_SSO_JWT_ROLES_KEY
  • DATABASE_API_BEARER_TOKEN
  • DB_API_PASSWORD
  • ENCRYPTION_KEY
  • GITHUB_APP_ID
  • GITHUB_APP_INSTALLATION_ID
  • GITHUB_APP_PRIVATE_KEY
  • GITHUB_SYNC_TOKEN
  • GOOGLE_API_KEY
  • GOOGLE_CLIENT_SECRET
  • INTEGRATIONS_BASECAMP_CLIENT_SECRET
  • INTEGRATIONS_BASECAMP_NEW_DOMAIN_CLIENT_SECRET
  • INTERCOM_IDENTITY_VERIFICATION_SECRET_KEY
  • JWT_SECRET
  • LICENSE_KEY
  • MAILGUN_API_KEY
  • OKTA_CLIENT_SECRET
  • PAGERDUTY_API_TOKEN
  • POSTGRES_PASSWORD
  • REDIS_PASSWORD
  • RETOOL_SALESFORCE_CONNECTED_APP_CLIENT_SECRET
  • RT_POSTGRES_PASSWORD
  • SANDBOX_LAMBDA_API_KEY
  • SCIM_AUTH_TOKEN
  • SLACK_API_TOKEN
  • STRIPE_SECRET_KEY
  • STRIPE_WEBHOOK_SECRET