先々週の話。1月23日に次の記事が出ていた。
この記事の趣旨は、「Googleスプレッドシート」の共有設定の画面の説明文「Let people edit without signing in」が誤解を招くために、誤って、誰にでも閲覧や編集を許す設定にしてしまいかねないという話である。この画面は、日本語表示では図1の表記となっている。
WIRED VISIONの記事の言い分では、「people」が上の招待メール送信先の人々のことを指すように読めて、下の「プライバシー」設定も変更しないといけないように誤解してしまうという。
そもそも、この機能の意図されている動作はどういうものか。私も試しているうちに一時混乱してわけがわからなくなったが、改めて実験して確認してみると、次の理解(最初に感じた直感どおり)でよいようだ。
「ログインしていないユーザ」という表現が、「ログインしていないのにユーザとは?」という疑問を感じさせなくもないので、「ログインしていない全ての人に」くらいに改善した方がよいかもしれない。また、そもそもこの機能を指して「プライバシー」と表現するは適切なのか?という疑問もある。
さて、先々週の土曜のこと。WIRED VISIONの記事を見た私は、日本でも間違えて設定している人がいるかもしれないと思い、11月23日の日記「Googleカレンダーでやってはいけないこと」のときと同様の方法で、「Pathtraq」で検索して調べてみた。
スプレッドシートのURLは、図1のように「http://spreadsheets.google.com/ccc?key=」で始まっているので、Pathtraqにそれを入力して検索してみた。すると、図2のように、たくさんのスプレッドシートがヒットした。
これらが本当に公開を意図したものかを確認するために、ヒットしたURLをクリックして、スプレッドシートを閲覧してみた。
すると、Webサイト開発の行程管理表や、イベントの作業割当表、広告効果の集計表など、非公開と思われる業務文書ばかりだった。
これはまずいと思い、まず、Pathtraqを運営するサイボウズ・ラボに通報した。その結果、検索でヒットしないよう対策がとられた。
ここまでなら、「Googleカレンダーでやってはいけないこと」のときと同じパターンだが、この件はそうではなかった。これらは、利用者が設定を誤った(WIRED VISIONの記事のように)ためにこうなったのかと思いきや、そうではないのだった。
Pathtraqでリンクをクリックしていくつかを閲覧した後、自分の「Googleドキュメント」のホームページに戻ってみたところ、図3のように、とんでもないことになっていた。
つまり、Pathtraqでクリックしたファイルについて、自分が共有者として登録されてしまったのだった。墨塗りした部分には、他社の業務文書のタイトルと、その文書の作成者や共有者である、他社の関係者の名前が表示されていた。左側の「共有者別」のところには知らない人がずらっと出ていた。
この共有者別のところに現れたユーザをクリックしたところ、図4のように、その人のメールアドレスが表示されたので、それぞれのメールアドレスに事実関係をお知らせして、対処をお願いした。
これはいったい何が起きたのか。ようするに、Pathtraqでクリックしたリンクは、Googleスプレッドシートの「招待」メールに記載されたURLだったのだ。よく見ると、クリックしたリンクのほとんどは次のようになっていた。「inv=」の部分に招待された人のメールアドレスが書かれていた。
http://spreadsheets.google.com/ccc?key=XXXXXXXXXXXXXXXXXXXXXX&inv=XXXX.XXXX@XXXX.co.jp&t=6389XXXXXXXXXXXXXXXX&guest
おそらく、このメールアドレスの人がPathtraqのツールバーを導入していて、Googleスプレッドシートの招待メールに書かれたこのURLをクリックしたときに、Pathtraqに登録されてしまったのだろう。
Googleスプレッドシートの「招待」機能を試してみると、招待メールは以下の文面になっている。
「共有招待テストのスプレッドシート」というドキュメントを共有したのでお知らせします:
http://spreadsheets.google.com/ccc?key=pxtiWyFxXXXXXXXXzteocaA&inv=test1@takagi-hiromitsu.jp&t=302490XXXXXX67684&guest
これは添付ファイルではなく、Google ドキュメントでウェブ上に保存されています。このドキュメントは上のリンクをクリックすると開きます。
Pathtraqのツールバーは、アクセスしたすべてのページ*1のURLを送信するものであるから、この種のメールでクリックしたURLも送信され、公開される。
ここで問題点は2つある。
Googleアカウントは基本的にメールアドレスがユーザ名であるから、図1の画面で共有者を招待するときに入力するメールアドレスは、Googleアカウントを指していると(直感的には)思えたが、実際にはそうではなかった。
実験してみたところ、「招待」で入力するメールアドレスは何でもよく、Googleアカウントに無関係なメールアドレスでもよい。とにかく、そのメールを手に入れた人であれば、誰でも共有者となれるのである。
図1の画面をよく見てみれば、うっすらとした色で「どのメールアドレスでも使用できます」と書かれている。これがその仕様を表しているのだろう。これは予想できなかった。
(注:これは、図1の「プライバシー」の設定とは関係なくそのようになる。つまり、「常にログインが必要」の設定であっても、招待メール(のURL)を入手したら誰でも(ログインすれば)共有者になれてしまう。)
最初はバグじゃないかと思った(じつは、そういうバグがあるというタレコミを11月に頂いていた)が、これは仕様なのだろう。たとえば、何十人も招待する必要があるときは、メイリングリストに流してしまえば気楽に招待できる。ちょうど、今年の正月にグーグル社が「Google からのビデオ年賀状 2009」で実演していたような、おもしろ作業をするには適している。
しかし、ビジネスで使うにはあまりに危険ではないか。招待メールの有効期限も不明である。
少なくとも、私がPathtraqで検索してクリックした招待用URLは、何か月も前に送信されたものだったのだろう。図3を見ると、2007年10月に作成されたものについて、招待URLが有効だったことがわかる。
Pathtraqのサービスが開始されたのが2007年8月なので、もしかすると、Googleスプレッドシートの招待URLは無期限に有効なのかもしれない。
こんなサービスは見たことがない。URLに認証キーを載せてメールで送る方式は、パスワードリマインダなどでも用いられているが、有効期限を数分程度に短く設定することで、どうにかセキュリティを確保しようとするものであるし、一回アクセスされたら無効化するものだ。
Googleの招待メールは、その性格上、有効期限は1日くらいは確保する必要があるだろうし、複数回のクリックも認めざるを得ないのは理解できるが、せめて、有効期限や有効回数を招待メール送信時に指定できるようになっているべきではないか。
このままでは、招待メールやそこに記載されたURLが、何らかの原因で第三者の手に渡った場合に、閲覧されたり改竄されてしまう危険がある。
「Googleドキュメントの共有はメールの添付ファイルより安全だ」などと言われているのを耳にしたこともあるが、これでは台無しだ。
この危険は、Google Apps版のGoogleドキュメントでなら防ぐことはできるようだ。
Google Appsでは、管理者の設定で、当該ドメインの一般ユーザの利用形態を制限できるようになっており、「ドキュメントの設定」の「共有オプション」で、「このドメイン外ではユーザーはドキュメントを共有できない」に設定することができる(図6)。
この設定でなら、招待メールを入手した第三者がアクセスしても、共有者として登録されてしまうことはないようだ。
その代わり、社外の人との共有はできなくなる。もし、図6の設定で「共有できるが、毎回警告メッセージを表示する」にしたとしても、招待メールの送信時に警告が出るだけであり、招待メール(やそこに記されたURL)がひとたび第三者の手に渡ってしまったら、共有者として登録されてしまうことは防げない。
今回はPathtraq側で対策されたが、他にも同様にURLが公開されてしまうサービスは存在し得る。
また、招待メールが何らかの原因でどこかで残存していて、いずれどこかで公開状態になってしまう可能性もあり得ると想定する場合もあるだろう。
そのような場合は、これから招待メールを使わないようにするというだけでなく、過去に招待メールを送ってしまったファイルは削除してしまった方がよいように思う。
ここまでは、Googleドキュメントのうち「スプレッドシート」についてだけ調べたが、Googleドキュメントには他に、「文書」、「プレゼンテーション」などがある。
これらは、共有設定に関する機能がバラバラで統一されていない(少なくともユーザインターフェイスを見る限りバラバラ)ので、同様の問題が起きるのかどうか、よくわからない。
「文書」でも、「招待する」という機能があり、メールで誘うようになっているが、「どのメールアドレスでも使用できます」とは書かれていない。しかし、試してみたところ、誰でも共有者になれてしまうようだ。
ただし、有効期限が短く設定されている可能性もあるので、同様の事故が起きるのかどうかは不明である。
少しわかり難かったので本文を2か所修正した。冒頭の設定ミスの話と後半の招待メールの話は別で、設定がどれであっても、招待メール(のURL)が手に入れば誰でも(ログインすれば)共有者になれてしまうことを強調。
念のため再現手順と実験記録の画像を示しておく。
ちなみに、ドキュメントホームの画面で「共有者別」として表示される人々は、Googleのアカウントを表したものと直感的には思えるが、下の図のように、Googleアカウントが存在しない「Test3」が表示されており、これはそういうものではないことがわかる。Googleドキュメントで人はメールアドレスで管理されているということのようだ。
それから、共有しているファイルについて、自分を共有から解除するには、そのファイルをゴミ箱に入れればよいようだが、それでうまくいく場合もあれば、うまくいかずに以下のエラーが出ることもある。
どういうときにこうなるのかわからない。エラーメッセージの「技術上の問題により、現在、すべての文書を表示することはできません」も意味不明だ。
ヘタに共有すると解除できなくなるので注意が必要と思われる。もしかして、グーグル社の人たちも、社内文書の作成や共有でGoogleドキュメントを使ってはいないのではなかろうか。
*1 https:// のページは除外されるらしい。