離散数学

情報システムにおけるユーザーアクセス権限の集合論的分析

情報システムにおけるユーザーグループとアクセス権限の管理は、セキュリティと運用の要です。この問題では、ユーザー、ロール、権限の関係性を集合論の概念を用いてモデル化し、特定のアクセス権を持つユーザーの集合や、可能な権限の組合せを分析します。

集合論

情報システムにおけるユーザーグループとアクセス権限の管理は、セキュリティと運用の要です。この問題では、ユーザー、ロール、権限の関係性を集合論の概念を用いてモデル化し、特定のアクセス権を持つユーザーの集合や、可能な権限の組合せを分析します。

情報システムにおけるユーザーアクセス権限の集合論的分析

ある情報システムにおいて、ユーザー、ロール、そして個々の権限が以下のように定義されています。

ユーザーの集合 $U$: $U = {User_A, User_B, User_C, User_D, User_E}$

システムが持つ権限の集合 $P$: $P = {Read, Write, Execute, Admin, Audit}$

定義されたロールと、それに含まれる権限: 各ロールは権限の集合として定義されます。

  • $Role_1 = {Read, Write}$
  • $Role_2 = {Write, Execute}$
  • $Role_3 = {Read, Admin}$
  • $Role_4 = {Audit}$

ユーザーとロールの割り当て: 各ユーザーは1つ以上のロールに割り当てられます。

  • $User_A$ は $Role_1$ に割り当てられている。
  • $User_B$ は $Role_1$ と $Role_2$ に割り当てられている。
  • $User_C$ は $Role_3$ に割り当てられている。
  • $User_D$ は $Role_2$ と $Role_4$ に割り当てられている。
  • $User_E$ は $Role_1$ と $Role_3$ に割り当てられている。

以下の問いに答えなさい。

  1. 各ユーザーが実際に持つ権限の集合を求め、列挙しなさい。(例: $P(User_X) = {\dots}$) ここで、$P(User_X)$ は $User_X$ が割り当てられているすべてのロールに含まれる権限の和集合とします。

  2. 以下の条件を満たすユーザーの集合をそれぞれ求めなさい。 a. “Admin”権限を持つユーザーの集合。 b. “Read”権限と”Write”権限の両方を持つユーザーの集合。 c. “Execute”権限は持つが、“Admin”権限は持たないユーザーの集合。

  3. 既存のロール定義に関わらず、「“Read”権限と”Audit”権限の両方」を必ず含む、システムが定義可能な権限の集合(ロール)は全部でいくつ存在しますか?

  4. ユーザー集合 $U$ と権限集合 $P$ から形成される直積集合 $U \times P$ の要素数を求めなさい。 この直積集合は、どのユーザーがどの権限を持ちうるかの「可能性のペア」を表します。

解答を見る

解答と解説

1. 各ユーザーが実際に持つ権限の集合

各ユーザーが持つ権限は、そのユーザーに割り当てられたロールに含まれる権限の和集合です。

  • $P(User_A)$: $User_A$ は $Role_1$ に割り当てられています。 $P(User_A) = Role_1 = {Read, Write}$

  • $P(User_B)$: $User_B$ は $Role_1$ と $Role_2$ に割り当てられています。 $P(User_B) = Role_1 \cup Role_2 = {Read, Write} \cup {Write, Execute} = {Read, Write, Execute}$

  • $P(User_C)$: $User_C$ は $Role_3$ に割り当てられています。 $P(User_C) = Role_3 = {Read, Admin}$

  • $P(User_D)$: $User_D$ は $Role_2$ と $Role_4$ に割り当てられています。 $P(User_D) = Role_2 \cup Role_4 = {Write, Execute} \cup {Audit} = {Write, Execute, Audit}$

  • $P(User_E)$: $User_E$ は $Role_1$ と $Role_3$ に割り当てられています。 $P(User_E) = Role_1 \cup Role_3 = {Read, Write} \cup {Read, Admin} = {Read, Write, Admin}$

2. 以下の条件を満たすユーザーの集合

各ユーザーが持つ権限の集合 $P(User_X)$ を基に、条件に合うユーザーを特定します。

a. “Admin”権限を持つユーザーの集合: $P(User_A) = {Read, Write}$ (Admin なし) $P(User_B) = {Read, Write, Execute}$ (Admin なし) $P(User_C) = {Read, Admin}$ (Admin あり) $P(User_D) = {Write, Execute, Audit}$ (Admin なし) $P(User_E) = {Read, Write, Admin}$ (Admin あり) よって、“Admin”権限を持つユーザーの集合は ${User_C, User_E}$ です。

b. “Read”権限と”Write”権限の両方を持つユーザーの集合: $P(User_A) = {Read, Write}$ (Read, Write 両方あり) $P(User_B) = {Read, Write, Execute}$ (Read, Write 両方あり) $P(User_C) = {Read, Admin}$ (Write なし) $P(User_D) = {Write, Execute, Audit}$ (Read なし) $P(User_E) = {Read, Write, Admin}$ (Read, Write 両方あり) よって、“Read”権限と”Write”権限の両方を持つユーザーの集合は ${User_A, User_B, User_E}$ です。

c. “Execute”権限は持つが、“Admin”権限は持たないユーザーの集合: $P(User_A) = {Read, Write}$ (Execute なし) $P(User_B) = {Read, Write, Execute}$ (Execute あり, Admin なし) $\rightarrow$ 該当 $P(User_C) = {Read, Admin}$ (Execute なし) $P(User_D) = {Write, Execute, Audit}$ (Execute あり, Admin なし) $\rightarrow$ 該当 $P(User_E) = {Read, Write, Admin}$ (Execute なし) よって、“Execute”権限は持つが”Admin”権限は持たないユーザーの集合は ${User_B, User_D}$ です。

3. 「“Read”権限と”Audit”権限の両方」を必ず含む、システムが定義可能な権限の集合(ロール)の数

システムが持つ全権限の集合は $P = {Read, Write, Execute, Admin, Audit}$ です。 「“Read”権限と”Audit”権限の両方」を必ず含むロールとは、集合 $R$ が $R \subseteq P$ であり、$ {Read, Audit} \subseteq R$ を満たすものです。

これは、$P$ の部分集合のうち、$Read$ と $Audit$ を固定的に含み、残りの要素 ${Write, Execute, Admin}$ から自由に要素を選ぶことができる集合の数を意味します。 残りの要素の集合を $P’ = P \setminus {Read, Audit} = {Write, Execute, Admin}$ とします。 $|P’| = 3$ なので、$P’$ の部分集合の数は $2^{|P’|} = 2^3 = 8$ 通りです。

これらの部分集合それぞれに ${Read, Audit}$ を加えることで、条件を満たすロールが生成されます。 例えば、$\emptyset \subseteq P’$ を選んだ場合、ロールは ${Read, Audit}$ となります。 ${Write} \subseteq P’$ を選んだ場合、ロールは ${Read, Audit, Write}$ となります。 このようにして、8つの異なるロールが定義可能です。 よって、8個存在します。

4. 直積集合 $U \times P$ の要素数

直積集合 $U \times P$ の要素数は、集合 $U$ の要素数 $|U|$ と集合 $P$ の要素数 $|P|$ の積で求められます。

$|U| = 5$ (ユーザーが5人) $|P| = 5$ (権限が5種類)

$|U \times P| = |U| \times |P| = 5 \times 5 = 25$

よって、直積集合 $U \times P$ の要素数は 25 です。