かまたま日記3

プログラミングメイン、たまに日常

embulk-executor-remoteserver 0.4.0 リリース

github.com

このバージョンより、Embulk clientとserver間でTLSでの接続ができるようになりました。

設定方法 (クライアント)

まず、use_tls オプションをtrueに設定してください。サーバ側が(クライアントにとって)既知のCA証明書でサインされた証明書を使っていれば、これだけでOKです*1

exec:
  type: remoteserver
  hosts: ...
  use_tls: true

そうでない場合は、CA証明書をca_cert_pathに追加してください

exec:
  type: remoteserver
  hosts: ...
  use_tls: true
  ca_cert_path: path/to/ca.cert.pem

クライアント認証が必要な場合、クライアント証明書と秘密鍵がセットになったPKCS12ファイルのパスとパスワードをcert_p12_fileで指定してください。

exec:
  type: remoteserver
  hosts: ...
  use_tls: true
  cert_p12_file:
    path: path/to/cert/client.p12
    password: xxxxx

設定方法 (サーバ)

EmbulkサーバをTLSの終端にする場合*2、以下の環境変数を設定してサーバを起動してください

  • USE_TLS=true: TLS接続を有効にする
  • REQUIRE_TLS_CLIENT_AUTH=true: クライアント認証を有効にする
  • CERT_P12_PATH, CERT_P12_PASSWORD: サーバ証明書秘密鍵のペアのPKCS12ファイルパスとパスワード
  • CA_CERT_PATH: CA証明書のパス。クライアント証明書が(サーバにとって)未知のCA証明書でサインされてる場合に必要

例えばdocker-composeで設定する場合以下のようになるかと思います

version: '3'
services:
  server:
    image: kamatama41/embulk-executor-remoteserver
    ports:
      - "30001:30001"
    volumes:
      - ./certs:/root/certs
    environment:
      USE_TLS: "true"
      REQUIRE_TLS_CLIENT_AUTH: "true"
      CERT_P12_PATH: /root/certs/embulk-server.local.p12
      CERT_P12_PASSWORD: xxxxx
      CA_CERT_PATH: /root/certs/ca.cert.pem

*1:たぶん、未確認

*2:前段にAWS NLBやNGINXを置いてそこを終端にするなども多分できると思います