人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

"rails console", "rails s" コマンドにパスワード認証を付けるには?

Ruby On Rails のアプリでは、プロジェクトディレクトリで "rails console" と入力することで、rails コンソールに切り替わります。
一部のユーザだけが rails コンソール を使えるようにしたいのですが、この部分に認証をかけることは可能でしょうか。

●質問者: mori_dev
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TransFreeBSD
●100ポイント

rubyもrailsもいまいちなので、もっとスマートな方法あるかもしれませんが。
consoleは

serverは

あたりが呼ばれるので、ここでパスワード認証かければ良いかと思います。
パスワード認証は簡単なところだと

あたり参考に、例えばパスワード固定ですけど

 def start
 require "highline"
 require 'digest/sha1'
 pass = HighLine.new.ask('Password: ') {|q| q.echo = '*' }
 pass = Digest::SHA1.hexdigest pass
 if pass != "9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684" # pass
 puts "Unauthorized"
 exit(1)
 end

とか。
通常の様なユーザー管理とかが必要なら、それ相応のライブラリとか必要になるでしょう。

ただ、それなりに構造を把握してれば、回避も可能だと思うので、そういった意図的なものも防ごうと思うなら、 rails/commands/console.rb とかの読み込みを禁止するとか、プロジェクトのファイルの読み書きも最小限に管理するとか、OSの認証機構で行う必要があるとは思います。


mori_devさんのコメント
完全な対応は難しいですよね。頂いたアドバイス、参考になりました。 それから、ソースコードへのリンクまで作成して頂き、ありがとうございました。

2 ● a-kuma3
●100ポイント ベストアンサー

unix 系の OS でしか通用しませんが、rails コマンドを alias で別のスクリプトにとばして、そこで実行の可否を実装する、という手があります。

ログインシェルが、csh であれば、~/.cshrc で rails を別のスクリプトに置き換えます。

alias rails rails_wrapper

別のスクリプト (仮に、rails_wrapper としてます) は、こんな感じ。

#! /usr/bin/sh

RAILS="/usr/bin/rails"# 本当の rails コマンドがあるパス

PASSWORD_DIGEST="9bca44b92764dfe762d858fbcb028bf2e3f376a3"


if [ "$1" == "console" -o "$1" == "s" ]
then
 stty -echo > /dev/null 2>&1
 printf "Password: "
 read pass
 stty echo > /dev/null 2>&1
 if [ "`echo $pass | openssl dgst -sha1`" == "$PASSWORD_DIGEST" ]
 then
 $RAILS $*
 else
 echo "You cannot use this command."
 fi
else
 $RAILS $*
fi

簡単なスクリプトですが、作り方でパスワードの入力を求めるのではなく、特定のユーザID だけが実行できるようにもできます。
unix 系の OS を知ってる人であれば、突破するのはさして難しいガードではありませんが、ある程度の抑止力にはなると思います。

さらにきつくするなら、rails コマンドを、特定のユーザだけが実行できるようにした、ラッパーになるスクリプトで実行時ユーザID を設定しておけば、root 権限を持つ人以外には実行できなくすることも可能です。


mori_devさんのコメント
> unix 系の OS を知ってる人であれば、突破するのはさして難しいガードではありませんが そうなんですよね。「いい案思いついた! ..と思ったけどだめだ」となっておりました。 アドバイスと具体的なスクリプトをありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ