AWSとフェデレーション

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

社内で、認証認可おじさんと呼ばれることもある、技術一課の鎌田(裕)です。

最近、様々なWebサイトで、「Facebookのアカウントで登録」「Twitterのアカウントで登録」というパターンが増えてきました。
パスワードを沢山覚えなくて済むのはいいのですが裏はどんな仕組みなんだろうかと、気になったことはないでしょうか。

AWSでも、Facebookのアカウントを使ってアクセスキーを取り出すような実装が可能になっています。
このブログでは何回かに分けて、AWSとフェデレーションに関わるサービス、仕組み、連携について解説したいと思います。

まず今回は、そもそもフェデレーションとは、というところから説明しましょう。
フェデレーション!?ということで、目次はこちら。

  1. 「フェデレーション」とは
  2. AWSのIDフェデレーションのパターン
  3. 使いどころ
  4. まとめ

「フェデレーション」とは

フェデレーションという用語は、インターネットの各サービスのユーザー認証の連携のことを指します。
IDフェデレーションといった用語が使われることが多く、既に認証が済んだユーザーIDを使って、別のシステムにアクセス出来るようにする仕組みそのものを指しています。
冒頭で書いたFacebookのパターンでは、認証はFacebookのみで実施し、インターネットの各サービスでは認証は行わず、アクセスに来たユーザーにアクセスを許可するか、
というところだけを実施します。この部分は、「認可」という用語で呼ばれています。
以下のような流れでIDフェデレーションが行われています。

このフェデレーションで最も広く使われているプロトコルがSAML 2.0という方式です。
(SAMLの仕組みについては、認証認可という用語と併せて、解説記事を書いていますので、併せてお読みください。)

AWSではこの他に、Cognitoと組み合わせて、IDフェデレーションを提供出来るパターンがあります。
次の項で詳しく見て行きましょう。

AWSのIDフェデレーションのパターン

AWSのIDフェデレーションのパターンはいくつかあります。それぞれ見てみましょう。

SAML 2.0によるIDフェデレーション

AWSもSAML 2.0に対応していますので、SAML 2.0を使った方式も広く使われています。主に、Active DirectoryやLDAPのIDで認証した情報を使って、AWSにアクセスする方式です。



マネジメントコンソールで見ると、「IDフェデレーション」と表示され、IAMユーザーでのアクセスではないと、人目で分かるようになっています。

FacebookやTwitterなど、パブリックサービスを利用したIDフェデレーション

FacebookやTwitterなどのIDで認証した情報を使って、AWSにアクセスする方式です。
この時は、Amazon CognitoのIdentity Providerの機能を使って、連携させます。
※Cognitoは次回解説します!

以下のような流れで、AWSの一時アクセスキーが発行される流れになっています。
冒頭と同じ図ですが、改めて見直していただくと、より理解が深まるかと思います。

AWS Cognitoを利用したIDフェデレーション

自作のスマートフォンアプリ開発や、Webサイト開発をしている方で、ID管理が必要だけれど、仕組みを作るのが面倒、という方も多いのではないでしょうか。
この時に使えるのが、Amazon CognitoのUser Poolです。
このUser PoolのIDもAWSのIDフェデレーションに使うことができます。

使いどころ

どのフェデレーションを使うかは、その目的によって決まります。

IAMユーザーを使わずに、マネジメントコンソールにアクセスする場合

この場合は、SAML 2.0を利用するパターンを採用します。

自前でAWS上でアプリやWebサイト開発をしていて、ID連携させたい場合

この場合は、CognitoのIdentity Providerを使ったフェデレーションを採用します。

まとめ

  1. フェデレーションとは、インターネットの各サービスのユーザー認証の連携のことを指す
  2. AWSでは、いくつかのIDフェデレーションパターンに対応している
  3. 目的にあった、IDフェデレーションパターンを選択する

フェデレーションや、その仕組みは分かりづらい部分も多いですが、システム管理者の視点でも、アプリケーション開発者の視点でも、ID管理を考える上では重要なポイントです。
目的に合ったパターンを使いこなしていきたいですね。

次回は、Cognitoを使って、実際に一時アクセスキーを取得するまでを見てみたいと思います。

AWS運用自動化サービス「Cloud Automator」