【初心者向け】AzureActiveDirectoryとは何なのか

#前提
本記事は以下のような人を対象にしています。
・AzureActiveDirectory（AzureAD）によく知らない人
・認証やID管理についてよく知らない人

#AzureActiveDirectoryとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167126/94ad328c-9779-fba2-47d8-6ef6d6ccc415.png)

一言で言うと、SaaS型の認証基盤です。
いわゆるIDaaSというやつですね。
SSOや、認証、認可の制御、多要素認証などを設定することができます。
※細かい用語の説明は割愛します。

AzureActiveDirectory（AAD）は、Azureのサービスの一つです。
なので、Azureサインアップ（契約）をすると、自動的にAzureADも使えます（Freeエディション）

#AzureADはなぜ必要なのか
##クラウドサービスの活用が増えてきた
最近はSaaS型のサービスが増えてきています。（Office365、Salesforce、BOXなど）
これらを活用する企業も増えてきている中、ID情報を企業内で管理しきれなくなってきています。

例えば社外からSaaSサービスを使うときの認証を、そのサービス上で行なっている場合、社内の認証基盤では管理されていない状態です。
これには管理者の視点と利用者の視点で以下のデメリットがあります。
###管理者のデメリット
・社外システム（SaaS）などのアカウント状況を把握しづらい

###利用者のデメリット
ID、パスワードの使い回しなどによる漏洩のリスク

##IDとパスワードだけの認証はもはや危険
IDとパスワードの認証ってよくあるけど、パスワードは一度知られてしまったら乗っ取られ放題ですよね。
かといってパスワードを複雑なものにしたって覚えきれないので、何かにメモを残しておく。
ログイン時に毎回そのテキストを開いてパスワードをコピペするのはダルいですよね。。。
（というかメモにパスワードをベタ書きするのも危険。。。）

##使用するサービスの増加
使用するシステムが多いほど、ユーザは複数のIDとパスワードを覚える必要があります。

そうなると覚えきれないですよね。。
（私も２つが限界で、それ以上は最早覚える気すらしなくなってきます。）
そうなってくると、以下のような状況に陥る可能性が高くなります。

①「パスワードの使い回し」「簡単なパスワードの設定」をしがちになる
↓
②悪意のある人たちの餌食になる
↓
③情報漏洩発生！！
↓
④怒られる。（だけですまない場合も。。。）

#AzureADは何ができるのか
##ユーザー、アプリケーション、アクセス制御を一元管理できる
先のクラウドサービスが増えてきたという話に繋がるのですが
社内外問わず、使用するアプリケーションについてはAzureADに登録することで
ユーザアカウントやアクセス制御をAzureADでまとめて実施することができます。

また、クラウド上に認証基盤を置くことで以下のようなメリットもあります。
・社外（移動中、カフェ、自宅）からでもアクセスが可能
・一度認証を行えば、他のシステムもそのまま利用できる。（SSOの利用）

##多要素認証の設定
IDとパスワードの認証だけは危険だ、という話をしましたが
昨今では多要素認証と呼ばれるもので
<b>「パスワードの認証+もう一個別の認証」</b>をすることでセキュリティを高めることができます。

以下は多要素認証の例です。
・生体認証
　→顔、指紋、静脈など本人しか持ち得ない情報で認証を行います。

・デバイス認証
　→使用するデバイスをAzureADに登録することで、管理外の端末（スマートフォンやネットカフェのPCなど）からのアクセスを制御します。

・リスクベース認証（条件付きアクセス）
　→認証に成功しているユーザでも、条件によってはシステムのアクセスを制御できます。
　　例えば、「クラウドサービスへのログインは会社が支給した端末からのみとしたい」という場合、
　　個人所有のPCやスマートフォンからは認証は通ってもアクセスは制御させたい場合などに使います。

・オンプレADとの連携
すでにActiveDirectory（AD）を使用している場合は、AzureActiveDirectoryConnect（AADC）を使用してオンプレのディレクトリ情報を連携することができます。
ちなみにAADCは無料で使うことができます。


#ADとAzureADとの違い
「AzureADってADのクラウド版ってことなんだよね？」
これは間違いです。
正確には同じように使える部分もありますが、ほとんど別物と考えた方が良いです。
※ちなみにAzure上にWindowsServerをたてて、ADを構築しても、それは<b>Azure上に乗っているAD</b>です。AzureADとは別です。。

##同じ部分
・どちらも認証基盤としてアカウントを管理します。
・Windwos10端末を参加させることができます。
・PowerShellでリモート管理することができます。

##違う部分
###ADはオンプレ、AzureADはクラウドのユーザ/リソースを管理する。
ADは基本的にはオンプレのユーザ、リソースを管理します。
※クラウド上に構築したADもこれに含まれます。

AzureADはクラウド上（SaaS含む）のユーザ/リソースを管理します。

###プロトコルが違う
　[AD]
　　kerberosプロトコルで認証認可を行う。
　　ディレクトリアクセスにはLDAPを使用している。
　[AzureAD]
　　SAML,OpenIDConnect、OAuthで認証認可を行う。
　　ディレクトリアクセスにはRESTベースのAzure AD Graph APIを使用する。

###ドメインの考え方が違う
 [AD]
  ドメインコントローラーという役割をインストールすることで、フォレスト、ドメインという単位で管理しています。


 [AzureAD]
  クラウドサービスであり、世界中の組織が使用するため、<b>マルチテナント</b>という考え方で構成されています。
　基本的には一つの組織が一つのテナントを取得して、ディレクトリ管理を行います。

　ADフォレスト内のドメインは信頼関係が結ばれているので、お互いのリソースをを共有できたのですが、<b>AzureADの場合はテナント間でのデータの共有や同期はできません。</b>

###サーバー機能の違い
　AzureADには以下のような機能があります。
　・データ保護
　・アプリケーションへのフェデレーション
　・多要素認証
　・リバースプロキシ（AzureADアプリケーションプロキシ）

　これらの機能をオンプレで実現しようとすると、AD以外に以下サーバーが必要になります。
　・AD RMSサーバー　（データ保護）
　・AD FSサーバー　（フェデレーション、多要素認証）
　・WAP（Web Application Proxy）サーバー　（フェデレーション、リバースプロキシ）

　AzureADであればこれらの機能をサーバーを構築することなく利用することができます。

#結論
・AzureADは多様化する働き方に対応した認証基盤
・オンプレADと組み合わせるハイブリッド環境で両者のいいところを組み合わせた運用が可能