この記事でわかること
YouTubeに動画をアップロードしようとしたとき、突然Googleのページがブラウザに開いた。
「なぜこのページが立ち上がるんですか?どういう仕組みで?」
そこから話が広がって、OAuth 2.0という仕組みの話になった。調べてみると、これはLinuxが長年体現してきた「最小権限の思想」と根っこでつながっていた。
何が起きていたのか
YouTubeへのアップロードを自動化するPythonスクリプトを使っていたのだが、しばらく使っていなかったためトークンの有効期限が切れていた。
スクリプトを走らせると、ブラウザが開いてGoogleの認証ページが表示された。「このアプリにYouTubeへのアップロードを許可しますか?」という画面だ。
これがOAuth 2.0の動作そのものだった。
OAuth 2.0とは
一言で言うと、「パスワードを渡さずに、アプリに特定の操作だけ許可する仕組み」だ。
昔のやり方を想像してみると、危うさがわかる。
アプリ「YouTubeにアップしたいので
Googleのパスワードを教えてください」
ユーザー「password123です」
アプリ「ありがとう(保存しておきます)」
パスワードをアプリに渡してしまうと、そのアプリが信頼できなかった場合、Googleアカウント全体が危険にさらされる。メール、カレンダー、ドライブ、すべてだ。
OAuth 2.0はこの問題を解決するために生まれた。
仕組みの流れ
1. アプリ起動
「YouTubeのアップロードだけ許可してほしい」
↓
2. Googleへ許可申請
「この操作範囲でユーザーに確認してきます」
↓
3. ブラウザでGoogleのページが開く
「このアプリにYouTubeへの
アップロードを許可しますか?」
↓
4. ユーザーが「許可する」をクリック
↓
5. Googleがトークン(鍵)を発行
ローカルに保存される
↓
6. 以降はそのトークンで自動操作
ブラウザは開かなくなる
ポイントは3つある。パスワードは一切渡さないこと。「アップロードだけ」というように権限を絞れること。そしてトークンには有効期限があること。
身近なサービスはほぼ全部これ
「Googleでログイン」「GitHubでログイン」「Appleでログイン」──これらのボタンは全部OAuth 2.0の仕組みで動いている。
| サービス | 許可している操作 |
|---|---|
| Figmaプラグイン | ファイルの読み書き |
| Zapier | GmailやSlackの操作 |
| GitHub Actions | リポジトリへのプッシュ |
| 今回のスクリプト | YouTubeへのアップロード |
スマホで「このアプリに連絡先へのアクセスを許可しますか?」と聞かれるあの画面も、発想は同じだ。
Linuxとの意外なつながり
「これってLinuxの思想に基づいているんですか?」という話になった。
直接の派生ではないのだが、根っこの考え方は共通している。
Linuxには1970年代から、ファイルに対して「誰が・何を・どこまで操作できるか」を細かく設定する権限システムがある。
-rw-r--r-- casio index.html
↑オーナーだけ書ける
↑グループは読むだけ
↑他の人も読むだけ
「必要な人に、必要な操作だけ許可する」──これを最小権限の原則と呼ぶ。
OAuth 2.0はこれをWeb・インターネットの世界に持ち込んだものとも言える。ファイルの権限管理がAPIの権限管理になっただけで、思想は同じだ。
コンピュータのセキュリティの考え方は、Linuxが土台になっていることが多い。以前「AIが進化してもLinuxが土壌である理由」という記事を書いたが、こういうところにもLinuxの影響は出てくる。
まとめ
- OAuth 2.0は「パスワードを渡さず、必要な操作だけ許可する」仕組み
- 「Googleでログイン」など身近なサービスは全部これ
- 根底にある「最小権限の原則」はLinux/Unixが長年体現してきた思想
- 一度認証すれば次からはトークンで自動化できる
ブラウザが突然開いて「なんだこれ」と思った瞬間が、こういう話の入口になるのはおもしろいと思う。
