PR

 認証基盤を構築するためのAWSのサービスは大きく三つある。AWS上にActive Directory(AD)の新しいドメインを構築したり、オンプレミス(自社所有)環境のADをAWS上のリソースから参照したりする「AWS Directory Service」。AWS Directory ServiceによってAWS上に用意されたドメインの認証情報を基に、クラウドサービスへのシングルサインオンを実現する「AWS Single Sign-On(SSO)」。Webアプリケーションやモバイルアプリケーション向けユーザー認証・管理基盤の構築を容易にする「Amazon Cognito」だ。

 これらのサービスを使うことで、AWS上に新しい認証基盤を構築したり、オンプレミスのADと連携する統合認証基盤を構築したりできる。

 本稿では、上記三つのサービスについて順に解説したうえで、多くの企業が使用しているオンプレミスのADをAWS Directory Serviceを用いてAWS上に拡張・移行するアーキテクチャーパターンを紹介する。

 さらに検証として、AWS SSOを用いてオンプレミスのADと連携する統合認証基盤を構築し、外部クラウドへのシングルサインオンを試す。

 まずは、AWS Directory Service、AWS SSO、Cognitoという三つのサービスについて解説する。

AD互換のDirectory Service

 AWS Directory Serviceは四つの認証基盤サービスで構成される。ドメインを作成するためのサービス「Simple AD(Active Directory)」「AWS Directory Service for Microsoft AD」「Cloud Directory」と、AWS上のリソースから既存のドメインを参照するためのプロキシー的な役割を果たす「AD Connector」だ。

 このうちSimple ADとDirectory Service for Microsoft ADはどちらもAD互換のマネージドサービス。VPC内にADの新規ドメインを作成する際に用いる。VPC内のサブネットを二つ指定すると自動的に冗長構成になるのは共通。Simple ADは廉価版、Microsoft ADのほうが料金は高いが多機能という位置づけだ。

 Simple ADのバックエンドではSamba 4(Windows Serverのドメインコントローラーなどの互換機能を備えるオープンソースソフト)が、Directory Service for Microsoft ADのバックエンドではWindows Server 2012 R2が用いられている。

 Simple ADとDirectory Service for Microsoft ADはどちらも、ディレクトリーの管理画面がマネジメントコンソール上では提供されないので、ユーザー追加などの設定を行うには別途Windows端末が必要だ。

 Cloud Directoryは、1億を超える巨大な階層データを管理するためのディレクトリーサービスである。一般的な企業では利用しないので、説明を割愛する。

 AD Connectorは、既存のADのドメインとAWSのリソースとの間でプロキシーのような役割を果たし、ログオンしたユーザーがアクセス可能な範囲を拡張する「信頼関係」を結ぶ。スモールとラージというサイズがあり、前者は最大500ユーザー、後者は5000ユーザーまで対応する。

 AD Connectorを利用するには、既存のドメイン上にユーザーと、グループの読み取りなどの権限を持ったアカウントを作っておき、AD Connectorの作成時にこのアカウントのIDとパスワードを入力する。

 AD ConnectorをAWSのVPC内に作成すると、仮想デスクトップ環境を提供するAWS Workspacesや、EC2のWindows ServerなどからAD Connectorの参照先に指定したドメインへのシームレスな参加が可能になる。ドメイン上に存在するアカウントのIDとパスワードを利用してAWSのマネジメントコンソールへログインし、操作権限を付与することも可能である。

SAMLに対応したAWS SSO

 AWS SSOはADのドメインの認証情報を参照し、SAML(Security Assertion Markup Language)対応のアプリケーションへのシングルサインオンを可能にする。Office 365、Salesforce、Slackなど代表的なクラウドサービスごとにウイザードが用意されており、簡単に設定できる。

 ログイン可能なサービスをドメイン上のユーザーやグループ単位で設定する権限割り当て機能に加え、各ユーザーがログインできるサービスを一覧表示するポータル画面なども提供する。

モバイル向けのCognito

 Cognitoは二つのサービスで構成される。

 一つは「Cognito User Pools」。ユーザー情報を管理する認証基盤「IDプロバイダー」として用いられ、新規ユーザーの登録、グループの作成、ID・パスワードの管理、サインアップ/サインイン、多要素認証(MFA)などの機能を提供する。WebアプリケーションやモバイルアプリでUser PoolsのAPIを利用することで、これらの機能を簡単に組み込める。

 もう一つのサービス「Cognito Federated Identity」は、User Poolsに加えて、Amazon.com、Google、Facebookなど外部のIDプロバイダーと連携。IDプロバイダーで認証されたユーザーに、AWSのリソースを使う一時的な認可情報を与える。