要約
Deis で構築した web アプリを外向けに公開するときには、下記の設定を行いましょう。
作業
Deis v1
deisctl
コマンドを使って controller に設定を行います。
deisctl config controller set registrationMode="admin_only"
Deis Workflow (v2)
kubectl patch
コマンドを使って、controller pod に与える環境変数を追加します。
kubectl --namespace=deis patch deployments deis-controller -p '{"spec":{"template":{"spec":{"containers":[{"name":"deis-controller","env":[{"name":"REGISTRATION_MODE","value":"admin_only"}]}]}}}}
(追記: さすがに本家も危険だと思ったようで,デフォルト設定を admin_only とするプルリクが作られマージされました。次の Workflow v2.12.0 よりも新しい版では作業の必要はなくなるはずです。)
理由
これを怠ると、誰でも deis register
の実行が可能になり、つまりアプリケーションのデプロイも可能になります。悪いことがいろいろできるわけです。登録時のメールアドレスの詐称は簡単にできますし。
なお、上記設定は、自分をユーザとして登録してから行います。そうしないと自分さえも登録できなくなります。1
もっと安全に
REGISTRATION_MODE
には disabled
も指定できます。この場合、管理者権限があってもユーザの追加はできません。チームの構成が流動的ではないときは disabled
でもよいかもしれません。
-
Deis では、最初に登録したユーザに限り、管理者権限が自動的に付与されます。) ↩