どうも。つじけ(tsujikenzo)です。このシリーズでは 「Google ColaboratoryのGoogle認証を自動化しよう」 について全3回でお送りします。今日は第1回目で、 「Google認証を自動化する仕組み」 をお届けします。
Google ColaboratoryのGoogle認証とは
Google ColaboratoryでGoogleドライブを操作するためには、 ランタイム上にGoogleドライブをマウントする必要があります。
マウントするために、2つの方法があります。(2021年現在)
- アイコンクリックによるマウント
- コードによるマウント
アイコンクリックによるマウント
左メニューの[ファイル]をクリックし、アイコン[ドライブをマウント]をクリックします。
左メニュー内に、マイドライブがマウントできていると思います。
アイコンクリックのばあいは、認証手続きをする必要はありません。Google Colaboratoryを起動したときに、すでにアカウントにログインしているからです。
この、マウント作業ですが、プログラミングで自動化できないのでしょうか。
コードによるマウント
コードを書いて、マウントすることもできます。必要なコードは2行だけです。
from google.colab import drive
drive.mount('/content/drive')
手順は以下の通りです。
- driveモジュールをインポートする
- mountメソッドでPath[/content/drive]にマウントする
- URLをクリックして別ウィンドウでユーザー認証を行う
- (いつもやってる)ユーザー認証をするとトークンが発行される
- トークンをインラインにコピペする
- 「あなたは本人に間違いないですね。OKですマウントします。」 と、いう流れです。
インラインにトークンをコピペするところ
確かに、コードでマウントできていますが、トークン生成用のURLをクリックしたり、トークンをコピペしたり、手作業は残っています。
結論
マウントは、アイコンをクリックか認証用トークンのコピペが必要です。
Google Colaboratoryを起動する度に、この作業が必要です。正直、毎回認証をするのは面倒くさいです。
自分のみで管理している、自分用のコードなのに。。。自分だけの、自分。。。
( ゚д゚)ハッ!
Googleに、「この人は、わたしが信頼してる人なので、この人からのアクセスは認証を通してあげてください」 と、事前に話をつければいいのではないでしょうか。
天才現る
むかしむかし、あるところに、そんなことを考えた一人の天才がいました。(わたしが所属するノンプロ研のメンバーさんです)
彼が考えたのは、「代理人を用意して彼に権限を渡します。Googleさんは彼に本人確認をしてください。」 ということです。
代理人はGoogleさんに本人確認を求められたら、いつでも本人であることを証明すればいいのです。
代理人が本人証明をするロジック
代理人はどうやって本人であることを証明するのでしょうか。
それは、Googleさんに本人確認されたら 「秘密鍵」 をGoogleさんに見せるのです。
その「秘密鍵」はもちろん、わたしとGoogleさんだけしか知りえない情報です。私はその「秘密鍵」を、代理人に預けています。
代理人には、Googleさんに秘密鍵を見せる役割をお願いしてますし、さらに、代理人として私のGoogleドライブを編集する権限を与えています。
専門的なお話
ここまでの解説は、わたしが勝手に言語化しただけで、著者のブログには書いておりません。(ざっくり書いていますが)
著者のアイディアは 「OAuth2clientモジュールに認証鍵を持たせたJSONを渡すWEBアプリを公開すればいいよね」 というものでした。
もちろん、WEBアプリを公開するときは、わたしがGoogleの認証を通す必要がありますし、代理人アカウント(正式にはサービスアカウント)に対して、Googleドライブの編集権限を渡すのもわたし自信で、わたしの責任の範疇です。
くれぐれも、個人情報などの管理は、自己責任でお願いいたします。
まとめ
以上で、「Google認証を自動化する仕組み」 についてお届けしました。次回は 「Google認証を自動化する下準備」 ということで、実際に手を動かしていきましょう。