2011年4月14日

KeePass + SugarSync + KeePassDroidで安全なパスワード管理を

永らくパスワード管理は自分の記憶力に頼る派だったのだが、最近さすがにそれにも限界を感じ始めていた。

そこでぼちぼち何かツールを使ってみようかと、評判の良いパスワード管理ツールを探してみた。
最強のパスワード管理ツール5選! : ライフハッカー[日本版]

ちょっと見た所、KeePassというのが良さそうだ。Windows、Mac、Linux、iOS、Androidで動く。

それにソースコードが公開されているというのも安心感を与えてくれる。
KeePass Password Safe

Android版はこちら
KeePassDroid

インストール方法や大体の使い方はこの辺りで
KeePassでパスワードをより厳重に管理する方法 | nanapi [ナナピ]

『KeePassDroid』~複数のID・パスワードを簡単管理!PCとも連携できる~ | andronavi (アンドロナビ)

Windows版を使って見た感想

Windows版は2.X系と1.X系の2つがあり、両方がアクティブに開発され続けているらしい。その違いはこちらに書かれている。セキュリティ的にはほとんど変わらなさそうだが、2.X系の方が少し機能が多い。今回はVersion 2.15をインストールして見た。


正直、もっと早くから使っていれば良かったと思う。今までしょっちゅう「パスワード忘れました」ボタンをクリックするはめになっていたのが、KeePassさえあればこれからは大丈夫だ。強力なパスワードの自動生成機能やブラウザへの自動入力機能も使い出すと本当に便利で手放せなくなる。

Android版を使って見た感想

Android版(KeePassDroid)の2011年4月13日時点での最新バージョンの1.9.2では残念ながらKeePass 2.X系のデータベースは編集出来ず表示のみ可能との事。

ただ表示オンリーと割りきって使えば決して使い勝手は悪くない。アプリを起動して、エントリの詳細画面を開いた時点でステータス通知領域に「Copy username」と「Copy password」というメニューが表示されるので、これを使えばユーザー名やパスワードを打ち間違える事も無くなる。

SugarSyncでの同期

複数のPC間でKeePassデータベースを同期して使うには、SugarSyncの「同期フォルダの管理」画面からKeePassデータベースの保存されているフォルダを同期対象に指定するだけでOKだ。各PC毎に同期する/しないが設定出来るし、もちろん同期先のフォルダも個別に指定可能だ。

簡単過ぎて拍子抜けしてしまう。素晴らしい!


Androidとの同期もSugarSyncを使えば可能だ。ただ自動で同期する様にはなっていないので、定期的に同期元のPCを指定してデータベースファイルを「ダウンロード」している。



Linux版も試して見た

Linux版はここからダウンロード出来る。
KeePassX – Downloads

Ubuntu 10.10を使っているので、10.04対応バージョンの設定をリポジトリに追加して、後は「システム管理」メニューの「Synapticパッケージマネージャ」でKeePassXを選んでインストールすればOKだった。

ただ現在のバージョンのKeePassXはKeePass 2.Xのデータベースは読み込めない。そこで、Windows PC側で前もってデータベースをKeePass 1.X形式でエクスポートしておく必要がある。エクスポートしたファイルをLinux側へコピーして開けば問題なく読み込む事が出来る。

読み込んだ内容をLinux側で編集する事も出来るが、それをしてしまうと今度はWindows側のデータベース(KeePass2.X)と整合性が取れなくなってしまう。仕方が無いので今はLinux側で編集する事は諦めている。

もちろん、Windows側でもKeePass 1.X系を使うのであれば、上手く同期する事さえ出来ればどちらで編集しても問題なく使う事が出来るだろう。

WindowsとLinuxでデータベースファイルを同期するために、Linux側ではWineを使ってSugarSyncのWindows版クライアントを動かす事にした。
人気急上昇中のファイル同期サービス SugarSyncをLinuxで利用する方法

結果、意外とすんなりと動いたので驚いている。これについては詳しくは別のエントリに書くことにしたい。


今日の結論

パスワード管理は厳重に。KeePassいいね!




2011年8月/23日 追記:

Version 2と1を併用するのであれば下の方法を使うとさらに便利。
KeePass で kdbx と kdb を同時に保存する方法 | ru_426


2011年11月24日 追記:

LinuxでもVersion 2が使えるとの事。今度試そう。
KeePassをバージョンアップ | 電子虚数空間






2011年3月29日

Microsoft SQL Serverに関する些細な4つのTips

===========================================================
マザー・テレサの名言から考える「今、自分にできること。」 : earth in us.
===========================================================


自分の旧ブログからの転載です。


1. MS SQL Serverの@@IDENTITYで正しい値が取得出来ない時は。。。

SQLサーバーで@@IDENTITYを使うと、Insert直後にトリガーが走ってさらにその中で別のInsert文が実行される場合に意図した値が取得出来ないという問題に遭遇しました。
そこで調べて見た所、SCOPE_IDENTITY() という関数があるのを遅ればせながら今日知りました。^^;
これだとトリガーに関係なく自分の直前のInsert文の結果としての最新のIdentity値が取得出来るそうです。

SCOPE_IDENTITY (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms190315.aspx


Alternatives to @@IDENTITY in SQL Server 2000
http://www.sqlteam.com/article/alternatives-to-identity-in-sql-server-2000


Identity Crisis
http://msdn.microsoft.com/en-us/library/aa224821%28SQL.80%29.aspx


Getting the Wrong Identity in Microsoft SQL Server identity Columns?
http://www.databasejournal.com/features/mssql/article.php/10894_3307541_2/Getting-the-Wrong-Identity-in-Microsoft-SQL-Server-identity-Columns.htm


結論:

これからは@@IDENTITYではなく SCOPE_IDENTITY() を使おう!


注)もちろん場合によっては @@IDENTITYの方が望ましい場合もあるかも知れませんので、何でもかんでもという訳ではありません。。。



2. SQLServerのDB内の全テーブルのデータ容量を表示する

下の2つのサイトの情報を参考にして、全テーブルのデータ容量を表示するSQLを作ってみました。
レコード件数だけでなく、データ領域とインデックス領域の使用量も確認出来るので便利かなと。

[SQL]SQLServerのDB内に存際する全テーブルの件数取得(T-SQL)
http://genz0.blogspot.com/2009/04/sqlsqlserverdbt-sql.html


【SQL Server】テーブルの使用量を確認する
http://blog.livedoor.jp/akf0/archives/51427351.html



上記2つの作者様、情報ありがとうござました!

以下、SQLです。

SET NOCOUNT ON

--テーブル変数(結果格納用)
DECLARE @TEMP_TABLE table(
row_id int IDENTITY(1,1) NOT NULL
,T_NAME varchar(128) NULL
,T_CNT bigint
,T_DATA bigint -- KBytes
,T_INDEX bigint -- KBytes
PRIMARY KEY (row_id)
)

DECLARE @NAME nvarchar(128), @SQL nvarchar(256)
DECLARE @CNT bigint, @DATA bigint, @INDEX bigint
declare @row_id int


--カーソルの宣言
DECLARE cs CURSOR FOR
SELECT NAME FROM sysobjects where type='U' ORDER BY NAME

--カーソルのオープン
OPEN cs
FETCH NEXT FROM cs
INTO @NAME
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = N'EXEC sp_MStablespace [' + @NAME + ']'

INSERT INTO @TEMP_TABLE (T_CNT, T_DATA, T_INDEX)
EXECUTE sp_executesql @SQL

SET @row_id = @@IDENTITY
update @TEMP_TABLE SET T_NAME = @NAME WHERE row_id = @row_id

FETCH NEXT FROM cs
INTO @NAME
END

CLOSE cs
DEALLOCATE cs

--実行結果を表示する
SELECT T_NAME, T_CNT, T_DATA, T_INDEX, (T_DATA+T_INDEX) / 1024 AS TOTAL_MB
FROM @TEMP_TABLE ORDER BY (T_DATA+T_INDEX) / 1024 DESC
SET NOCOUNT OFF



3. MS SQL Serverからメールを送信する

EXEC master.dbo.xp_sendmail
@recipients = @mailto,
@query = @sql,
@subject = @sub,
@message = @msg,
@attach_results = 'True',
@width = 2000

注)使用するにはSQLサーバー側でメールサーバーの設定が必要。



4. ストアド内のSQLのエラー

他社が開発したあるシステムで、データ取り込み処理の途中でSQLエラーが発生してしまいました。「文字列が長すぎるからフィールドに入らないよー」っていうワーニングでした。

諸般の事情で仕方なく無視して続行させたいのですが、デバッグしようにもものすごく長いストアドなので、なかなか厄介なんです。

結局、ストアドの最初に「SET ANSI_WARNINGS OFF」っていう1行を入れて逃げました。^^;
もちろん本当は良くないのですが、最悪の場合こう言う逃げ方もあると言う事で。




===========================================================
マザー・テレサの名言から考える「今、自分にできること。」 : earth in us.
===========================================================







.

2011年3月23日

Google App Engineで開発を始めるならチェックしたい本3冊

===========================================================
マザー・テレサの名言から考える「今、自分にできること。」 : earth in us.
===========================================================


はじめてのGoogle App Engine for Java―巨大サーバを利用したWebアプリ開発の基本! (I/O BOOKS)
image

まずは手早く概要を把握したいという人向きの入門書。
JDKのインストールやJavaとサーブレットの基本から説明されているので、今までJavaでの開発をした事が無い人には役に立ちそうだ。

逆にApp Engineの概要やJavaとサーブレットについては既に知っているという人には、全5章のうち始めの3章は必要ないかも知れない。

第4章はデータストアの説明。Low Level APIを使った追加・更新・削除と検索の例が載っている。エンティティグループとトランザクションについても触れられているので、一通りの知識は身に付けられる。

第5章はその他のサービスとして、ユーザー認証、URLフェッチと画像操作APIなどの説明。メールの送受信やタスクキューなどについても触れられているが、ざっと紹介している程度なのであまり深い内容ではない。タイトルにも「はじめての」とある通りGoogle App Engineに初めて触れる人には良いと思う。


すっきりわかるGoogle App Engine for Javaクラウドプログラミング
image

Google App Engineの隅から隅までを丁寧に解説してあるので、「こんな機能あったかな?」と思った時や、「これはどうするんだっけ?」という時にリファレンス的に活用出来る。

ただデータベースアクセスに「スピンアップが遅くなる」と言われているJDO(Java Data Objects)を使っているのがちょっと残念。

個人的には、以下の内容が今後役に立ちそうで有難かった。

第7章 7.6 「OAuthによる第3者からのアクセス」
第9章 9.6 「メールによる画像のアップロード」
第10章 10.4 「XMPPからTwitterへリダイレクトするサンプルプログラム」
第12章 12.4 「Twitterボットのサンプルプログラム」(タスクキュー使用)

第16章は、「本格的なアプリケーションの作成」という事でブログシステムを一から実装する例となっている。


オープンソース徹底活用 Slim3 on Google App Engine for Java
image

Google App Engineでデータストアを使うアプリケーションを開発するのであれば*必読*の1冊。

Slim3に限らず、BigTableやデータストアそのものの仕組みから解説されているので、「なぜこういう検索が出来ないのか」や「RDBで簡単に出来るあの機能はどうやって実現すればいいのか」という疑問に答えてくれる。

Capter 3~5はSlim3を使う使わないに関わらず、データストアを使うならば読んでおくべき。

今回の3冊の中では、最もお買い得感が高い一冊だった。





===========================================================
マザー・テレサの名言から考える「今、自分にできること。」 : earth in us.
===========================================================



.