AzureActiveDirectoryをサッカークラブに当てはめて考えてみた

#はじめに

Microsoft社のAzureが提供するサービスのひとつに**Azure Active Directory**があります。
クラウドベースのIDおよびアクセス管理サービスです。
このActiveDirectoryの概要をサッカークラブに当てはめて考えてみたいと思います。

# 記事にするに至った経緯
サービスに関して公式ドキュメントを読むと、ディレクトリ,コンテナ,サブスクリプションetc.といったワードが出てくるのですが
それぞれの定義とか関連性がいまいち理解できませんでした。
何か分かりやすいもので考えられないかなと思い、サッカークラブに当てはめて(例えて)みました。
逆に分かりづらくなってしまっていたらごめんなさい。

#記事を読む前に
本記事の内容としては、Microsoft Learn内のActiveDirectoryの[内容](https://docs.microsoft.com/ja-jp/learn/modules/manage-users-and-groups-in-aad/2-create-aad)をまとめただけなので
こちらを読んで十分に理解できる方はこの記事を読む必要はありません。

#全体像
ActiveDirectoryの全体像をサッカークラブに当てはめ、図にしてみました。
この図を用いて単語の定義や、関連について説明していきます。
![activedirectory.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137041/fdca8dec-b32f-5b17-1cae-a4ce8a4e5d85.jpeg)


#解説
## 全体像の説明
- **きぃたサッカークラブ**と、**きぃたL.F.C**の2つのサッカークラブが存在しています。
- **きぃたサッカークラブ**と、**きぃたL.F.C**はそれぞれ独立したサッカークラブです。
- **きぃたサッカークラブ**には**1軍**,**2軍**の2つのチームが存在しています。
- チームに所属するためには、必ず**そのチームが存在するクラブ**に所属する必要があります。
- チームそれぞれに専用グラウンドがあり、**チームに所属していない人は利用できません。**
- **複数のクラブに所属する**こともできますし、**複数のチームに所属する**こともできます。
- グラウンドの使用料などは監督が負担します。

当たり前の事を書いていますが、ActiveDirectoryの仕組みや制約もこれと同じです。

## ActiveDirectoryの用語と照らし合わせてみる
### アカウント
- **各人**(選手,監督 etc.)を指しています。

### ディレクトリ
- **各クラブ**を指しています。
    - **きぃたサッカークラブ**と、**きぃたL.F.C**2つのクラブが存在しています。
    - きぃたサッカークラブの場合、1軍・2軍問わず**クラブに所属している全員**をクラブの対象とします。
- 各ディレクトリは独立しています。
    - **きぃたサッカークラブ**と、**きぃたL.F.C**は全く別のクラブであり、独立しています。
- ひとつのアカウントを複数のディレクトリに登録することが可能です
    - 一人の人物が複数のクラブに参加することが可能です。（例：ひろみ）
- ひとつのディレクトリに複数のサブスクリプションを作成することが可能です
    - きぃたサッカークラブには1軍,2軍の二つのチームが存在しています。

### テナント
- **ディレクトリ**とほぼ同意義です。

### サブスクリプション
- **各チーム**を指しています。
    - **きぃたサッカークラブ1軍**、**きぃたサッカークラブ2軍**、**きぃたL.F.C**の3つのサブスクリプションが存在しています。
- サブスクリプションに含まれるアカウントは、必ず**関連するディレクトリに含まれている必要があります。**
    - きぃたサッカークラブ1軍に参加するためには、きぃたサッカークラブに所属する必要があります。
    - きぃたL.F.Cのクラブのみに所属している人は、きぃたサッカークラブ1軍には参加できません。
- ひとつのアカウントを複数のサブスクリプションに登録することが可能です。
    - 1軍,2軍の両チームに所属することが可能です。（例:さとし）

### リソース
- **グラウンド**を指しています。
- リソースにアクセスできるのは関連づけられた**サブスクリプションに所属しているアカウントのみ**です。
    - きぃたサッカークラブ1軍専用グラウンドは、きぃたサッカークラブ1軍の人間しか利用できません
    - 2軍のグラウンドも同じように、きぃたL.F.Cおよび、きぃたサッカークラブ1軍の人間は利用できません。
    - <さとし>は1軍,2軍両チームに所属しているので、どちらのグラウンドも利用できます。
- リソースの利用料金は**サブスクリプションの代表者**に請求されます。
    - おそらく監督が代表者となると考えられるので監督に利用料金が請求されます。
- サブスクリプションの代表者は変更可能です。
    - 代表者を監督じゃなく選手に変更することも可能です。(無いかとはおもいますが...)

## おまけ
## ActiveDirectory B2C
自分が本来利用したいサービスが**ActiveDirectory B2C**であるため、そちらの方にも少しだけ触れたいと思います。
ActiveDirectory B2Cのしっかりとした内容に関しては以下の記事が非常に参考になったのでこちらを参照ください。
[基礎から分かる Azure AD B2C](https://qiita.com/Shinya-Yamaguchi/items/03321728b373a27be009)

### 概要
ActiveDirectoryは自分たちの組織を管理するためのサービスでした。
一方ActiveDirectory B2Cはその名の通り、コンシューマ向けのサービスです。
先ほどの図にActiveDirectoryB2C要素を追加してみます。
![activedirectory.002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137041/6045c7e1-03ae-75b7-8e46-593ee4e573c6.jpeg)

**サポーター要素**が追加されました。
きぃたサッカークラブの試合を観戦するにはサポーターの一員になる必要があるとします。
サポーターはクラブ組織の一員ではないですが、クラブとしてはサポーターを管理したいと考えます。
そのため、サポーター用の**ディレクトリ**(名簿)はクラブが管理しています。
クラブが各サポーターの情報や、権限などを管理するためのサービスがActiveDirectory B2Cです。

#さいごに
ActiveDirectoryの全体のイメージと、少しだけActiveDirectoryB2Cのサービスのイメージにも触れました。
サービスの複雑な仕組みや制約も、サッカークラブに置き換えることで当たり前のものにも思えるかなと思いまとめてみました。
少しでも理解の助けになれば幸いです。

内容に誤りがある場合はご指摘お願いします。