コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

混乱した代理(使節)問題をざっくりまとめる

普通に日本語情報がないし、大体AWSの話になるので噛み砕いて書く。

元ネタ

1988年の論文 The Confused Deputy: (or why capabilities might have been invented) より

考え方

登場人物は大きく3人

  • クライアント
  • 代理(Deputy/使節)サービス
  • 機能提供者

クライアントは機能提供者に直截依頼をするのではなく、代理に関して依頼を行う。

f:id:shinkufencer:20201023224922p:plain
代理の使われ方

この作りの場合、クライアントは代理サービスを介して、機能提供者の機能を利用する。機能提供者はクライアントのことは知らず、機能提供者は代理サービスしか知らない。

そのため、不正な相手が代理サービスを騙して、正当なクライアントを装って機能を使う、不正な相手であるかというのは機能提供者はわからないため使わせてしまう。

f:id:shinkufencer:20201023224956p:plain
悪意のある人が不正に使った場合

このこのように不正な相手が代理サービスを仲介して本来使うことができない機能を使えることを 「混乱した代理問題」 という。

対策方法

この問題は正当なクライアントを装うことが問題なので、それを防ぐことが肝になる。ただし一概にこうすればいいという解決策はあるわけではなく、代理とクライアントの関係性を見て考える必要がある。

AWSのAssumeRoleではこの問題に関して、クライアント側にIDを降り出して、そのIDをアクセス時に合わせて送ってもらうことで正当な利用者かどうかを判断している。

参考リンク

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

  • 作者:Sam Newman
  • 発売日: 2016/02/26
  • メディア: 単行本(ソフトカバー)