STSは「期限付きの合鍵」を発行する窓口
STSは Security Token Service の略で、日本語にすると「セキュリティトークン発行サービス」です。ざっくり言うと、使い捨てに近い、期限付きの認証情報(トークン)を発行してくれる仕組みのことを指します。
イメージしやすいのはホテルのカードキーです。ホテルにチェックインすると、フロントで部屋のカードキーを渡されますよね。あのカードキーは、チェックアウトの日時が来ると使えなくなりますし、自分の部屋以外のドアは開きません。仮に落としてしまっても、被害は「その部屋に、その期間だけ」に限定されます。STSがやっているのも、これとほぼ同じ発想です。
逆に、期限のない「マスターキー」を持ち歩くのは怖い。これがいわゆる、ずっと使える永続的なパスワードやアクセスキーにあたります。漏れたらいつまでも悪用されますし、誰がいつ使ったのかも追いづらい。だから「必要なときに、必要な分だけ、時間を区切って鍵を借りる」という運用に寄せていこう、というのがSTS的な考え方です。
どんな流れで使われるのか
細かい仕様はサービスによって違いますが、大まかな流れはだいたい共通しています。
ポイントは、最後の「期限が切れたら失効」です。永続的な鍵と違って、放置されたトークンが何年も生き続けるということが起きにくい。ここが安全性の肝になります。
なぜわざわざ面倒なことをするのか
正直なところ、最初にこの仕組みを見たときは「毎回トークンを取りに行くの、面倒では?」と思う人が多いと思います。実際、直接パスワードを書いてしまったほうが手っ取り早い場面はあります。
それでも一時トークンが好まれるのは、事故が起きたときのダメージが段違いだからです。設定ファイルやソースコードに永続的な鍵を書いてしまい、それがうっかり公開リポジトリに上がってしまった、という事故は実際によくあります。永続キーだと、気づいて無効化するまでずっと悪用され続けます。一時トークンなら、そもそも数十分から数時間で勝手に切れる。
永続的な認証情報
一度作ればずっと使える。設定は楽だが、漏れたときの影響が大きく、定期的な差し替え(ローテーション)を人間が管理しなければならない。
STSが発行する一時トークン
有効期限つきで自動的に失効する。取得の一手間はあるが、漏洩時の影響範囲が時間で区切られる。権限も用途に絞りやすい。
「権限を絞る」という発想もセット
STSの話をするとき、期限と並んでよく出てくるのが「どの権限を持たせるか」です。ホテルのカードキーの例で言えば、有効期間だけでなく「開けられるドアはどれか」も決まっているわけです。
一時トークンも同じで、発行時に「この操作だけ許可する」という形で範囲を絞れるのが一般的です。読み取りしかしないプログラムなら読み取り専用のトークンを渡す。これができると、仮にそのプログラムに何か問題があっても、できることが限られているので被害が広がりません。
この「必要最小限の権限だけ与える」という考え方は最小権限の原則と呼ばれていて、セキュリティ設計の基本中の基本です。STSはそれを実際に運用しやすくするための道具、と捉えるとしっくりきます。
覚えておきたいポイント
- STS = 期限付きの認証トークンを発行する仕組み・サービスの総称
- ホテルのカードキーのように、時間と範囲が限定されている
- 漏れたときの被害を「時間」と「権限」の両方で小さくできる
- 期限が切れたら再取得が必要なので、その処理を組み込んでおく
最初は面倒に感じる仕組みですが、一度「トークンを取ってから使う」という流れに慣れてしまえば、むしろ永続キーを設定ファイルに書くほうが落ち着かなくなります。セキュリティ周りの用語は堅苦しく見えますが、やっていることは「合鍵に期限をつける」という、わりと素朴な工夫です。
このページは役に立ちましたか?