2012年2月11日土曜日

Google App Engine のアップロードを2段階認証プロセスに対応させる

今回は少ネタです。Googleアカウント で導入された 2段階認証プロセス について少し書いてみます。

Google 2段階認証プロセス

2段階認証プロセスは従来のアカウントID及びパスワードだけでなく、電話を使って Googleアカウントのセキュリティを高めるための仕組みだ。

一部のアプリケーションでは2段階プロセスは利用できない。その場合Googleアカウントでアプリケーション用のパスワードを生成して、適用すれば良い。 アプリケーション固有のパスワードを設定する対象としては、iPhoneなどの携帯端末、Chromeブラウザ、そして Google App Engine(GAE)のSDKなどがある。

遅ればせながら、私も導入してみた。ほぼ問題無く導入できたのだが、GAE関連でちょっと操作が面倒になってしまった。

GAE SDK でのパスワードの設定

まず Googleアカウントのアプリケーション固有のパスワードを生成する。次のページにアクセスしてパスワードを生成する。

Google アカウント

このパスワードをGAEへのアップロード時に入力すればOKだ。GAEへはコマンドプロンプトから、次のコマンドでアップロードを行う。

python appcfg.py update [プロジェクトフォルダ]

この時、GoogleアカウントIDとパスワードを要求されるので入力する必要がある。一度認証が成功すると、24時間認証が保持される。それでは24時間過ぎた場合はどうなるだろうか?。再度、IDとパスワードを入力する必要がある。 認証方法は、以前の認証プロセスと変わりは無い。しかし問題はアプリケーション固有のパスワードが格段に難しくなって、覚えることが不可能なことである。

対策としては付箋などに記録しておく、その都度再度パスワードを生成するなどがあるが、あまりスマートではない。

GAEアップロード用のバッチファイルを作成

アップロード時にIDや難しいパスワードを入力するのを省くため、次のような内容のバッチファイルを作ってみたらどうだろうか(サンプルは Windows環境です)。

echo [パスワード] | python appcfg.py --email=[ID] --passin update %1

[パスワード] のところにアプリケーション固有パスワードを、[ID] にアカウントIDをセットする。これによってパイプを使用し、パスワードをコマンドに渡し実行する。

このバッチファイルでは実行時に、パラメータとしてプロジェクトフォルダ名(app.yamlがあるフォルダ)を指定する。

また、appcfg.py のパスを指定していないが、もし絶対パスで指定すれば、GAE SDK のインストールしたフォルダ以外にもバッチファイルを設置することが可能だ。

いちいちプロジェクトフォルダを指定して実行するのが面倒な時は、次のような内容の別のバッチファイルをプロジェクト毎に作成すればよい。

cmd /k [アップロード用バッチファイル名] [プロジェクトフォルダ名]

[アップロード用バッチファイル] に先のバッチファイルを指定、[プロジェクトフォルダ名] にフォルダのパスを指定する。このプロジェクト毎のバッチファイルは、ダブルクリックするだけでアップロードを実行する。


ということで今回は小技の紹介でした。しかし2段階認証プロセスを使うようになると、とても便利な設定になります。

参考: How to Save My User Account and Password in Google App Engine Launcher?