「Googleでログイン」の裏側|OAuth 2.0とLinuxに共通する「最小権限」の思想

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が長年体現してきた思想
  • 一度認証すれば次からはトークンで自動化できる

ブラウザが突然開いて「なんだこれ」と思った瞬間が、こういう話の入口になるのはおもしろいと思う。

関連記事

PAGE TOP