annotate chapter3.tex @ 22:7a279b87d112

slide
author tatsuki
date Wed, 18 Feb 2015 19:24:22 +0900
parents c197b5dc6e34
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
tatsuki
parents: 4
diff changeset
1 \chapter{組織中の許認可管理\\アプリケーションmaTrix}
2
tatsuki
parents: 1
diff changeset
2
22
tatsuki
parents: 20
diff changeset
3 maTrixとは株式会社Symphonyが開発しているアカウント管理、許諾判定システムのことである。
20
tatsuki
parents: 18
diff changeset
4 人、組織、役割等の情報などを木構造として持っており、それらの情報を関連付けることで組織の構造を表現しアクセスルールが書かれたポリシーファイルを用いて許認可管理を行う。
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
5 本章ではmaTrixの説明と、Jungle上におけるmaTrixの実装方法の説明を行う。
6
tatsuki
parents: 4
diff changeset
6
0
8bb94503a263 create table of contents and MindMap
tatsuki
parents:
diff changeset
7 \label{chap:concept}
1
tatsuki
parents: 0
diff changeset
8
3
tatsuki
parents: 2
diff changeset
9 \section{maTrixの保持するデータ構造}
6
tatsuki
parents: 4
diff changeset
10 matrixは人、役職、役割、役割記述要素といったデータ(表\ref{list:maTrixData})を用いた組織構造と、許認可の判断に用いるポリシーファイルの2つのデータを持っている。
tatsuki
parents: 4
diff changeset
11
tatsuki
parents: 4
diff changeset
12 \begin{table}[h]
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
13 \caption{maTrixの保持する木構造データの例}
6
tatsuki
parents: 4
diff changeset
14 \label{list:maTrixData}
tatsuki
parents: 4
diff changeset
15 \begin{center}
tatsuki
parents: 4
diff changeset
16 \begin{tabular}{|l|l|} \hline
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
17 人物 & 人のデータが入っている。personIdを持つ \\ \hline
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
18 組織 & 組織のデータが入っている。orgIdを持つ ~\\ \hline
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
19 役割 & 人や組織の役割データが入っている。roleIdを持つ ~ \\ \hline
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
20 役割記述要素 & 役割が持っている要素が記述されている。rdeIdを持つ ~\\ \hline
6
tatsuki
parents: 4
diff changeset
21 \end{tabular}
tatsuki
parents: 4
diff changeset
22 \end{center}
tatsuki
parents: 4
diff changeset
23 \end{table}
tatsuki
parents: 4
diff changeset
24
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
25 これらのデータはIdを用いて他の木の参照を行い、組織構造を構築している。
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
26 組織構造の例として、人物と組織の組み合わせで組織運用モデルを表現しており、役割は自身のみで役割モデルを表現している。
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
27 このように様々な木構造が参照しあうことで多数のデータモデルを表現している。
6
tatsuki
parents: 4
diff changeset
28 以下にmaTrixの組織情報モデルを記す(図\ref{fig:sosikiTree})。
tatsuki
parents: 4
diff changeset
29
tatsuki
parents: 4
diff changeset
30 \begin{figure}[h]
tatsuki
parents: 4
diff changeset
31 \begin{center}
tatsuki
parents: 4
diff changeset
32 \includegraphics[height = 10cm ,bb=0 0 563 325]{fig/sosikiTree.pdf}
tatsuki
parents: 4
diff changeset
33 \caption{組織モデル表現例}
tatsuki
parents: 4
diff changeset
34 \label{fig:sosikiTree}
tatsuki
parents: 4
diff changeset
35 \end{center}
tatsuki
parents: 4
diff changeset
36 \end{figure}
tatsuki
parents: 4
diff changeset
37
tatsuki
parents: 4
diff changeset
38 \newpage
tatsuki
parents: 4
diff changeset
39 maTrixのデータ構造は、保持している組織情報をxmlやjson形式で出力することができる。
tatsuki
parents: 4
diff changeset
40 以下に人物Treeをxml形式で出力したデータの一部として、1人分のデータを記述する
tatsuki
parents: 4
diff changeset
41
tatsuki
parents: 4
diff changeset
42 \begin{itembox}[l]{}
tatsuki
parents: 4
diff changeset
43 \begin{verbatim}
tatsuki
parents: 4
diff changeset
44 <Persons>
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
45 <Person id="p:1" type="Person">
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
46 <accountId>a:26</accountId>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
47 <lastName>東</lastName>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
48 <name>東俊一</name>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
49 <nameReading>あずましゅんいちくん</nameReading>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
50 <roleRefIds>r:10 r:34</roleRefIds>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
51 <parentOrganizations type="OrganizationMappedByRole">
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
52 <OrganizationMappedByRole type="OrganizationMappedByRole">
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
53 <organizationRefId>o:2</organizationRefId>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
54 <roleRefId>r:10</roleRefId>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
55 </OrganizationMappedByRole>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
56 <OrganizationMappedByRole type="OrganizationMappedByRole">
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
57 <organizationRefId>o:11</organizationRefId>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
58 <roleRefId>r:34</roleRefId>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
59 </OrganizationMappedByRole>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
60 </parentOrganizations>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
61 <priorities type="PriorityMappedByRole">
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
62 <PriorityMappedByRole type="PriorityMappedByRole">
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
63 <priority>0</priority>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
64 <roleRefId>r:10</roleRefId>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
65 </PriorityMappedByRole>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
66 <PriorityMappedByRole type="PriorityMappedByRole">
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
67 <priority>1</priority>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
68 <roleRefId>r:34</roleRefId>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
69 </PriorityMappedByRole>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
70 </priorities>
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
71 </Person>
6
tatsuki
parents: 4
diff changeset
72 </Persons>
tatsuki
parents: 4
diff changeset
73 \end{verbatim}
tatsuki
parents: 4
diff changeset
74 \end{itembox}
tatsuki
parents: 4
diff changeset
75
tatsuki
parents: 4
diff changeset
76 \newpage
tatsuki
parents: 4
diff changeset
77
tatsuki
parents: 4
diff changeset
78 \begin{table}[h]
tatsuki
parents: 4
diff changeset
79 \caption{Person.xmlの要素}
tatsuki
parents: 4
diff changeset
80 \label{list:TreeNode}
tatsuki
parents: 4
diff changeset
81 \begin{center}
tatsuki
parents: 4
diff changeset
82 \begin{tabular}{|l|l|} \hline
tatsuki
parents: 4
diff changeset
83 Persons & この要素以下にPersonの情報があることを意味する~ \\ \hline
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
84 Person & 人の情報が以下にあることを示す。PersonIdが割り振られている ~\\ \hline
6
tatsuki
parents: 4
diff changeset
85 accontId & そのPersonのアカウントId。Tree同士の参照に用いる。 ~ \\ \hline
tatsuki
parents: 4
diff changeset
86 lastName & 苗字 ~ \\ \hline
tatsuki
parents: 4
diff changeset
87 name & フルネーム ~\\ \hline
tatsuki
parents: 4
diff changeset
88 nameReading & 名前のふりがな ~\\ \hline
tatsuki
parents: 4
diff changeset
89 roleRefIds & 役割のIdを記述する  ~\\ \hline
tatsuki
parents: 4
diff changeset
90 parentOrganizations & この要素以下にその人が所属している組織のIdを記述する  ~\\ \hline
tatsuki
parents: 4
diff changeset
91 OrganizationMappedByRole & この要素以下に組織と、その組織の役割を記述する ~\\ \hline
tatsuki
parents: 4
diff changeset
92 organizationRefId & 所属している組織のId ~\\ \hline
tatsuki
parents: 4
diff changeset
93 priorities & 人物に割り振られている役割の優先順位を以下に記述する ~\\ \hline
tatsuki
parents: 4
diff changeset
94 PriorityMappedByRole & この要素以下に役割と優先順位をペアで記述する ~\\ \hline
tatsuki
parents: 4
diff changeset
95 priority & 役割の優先順位を記述する \\ \hline
tatsuki
parents: 4
diff changeset
96 \end{tabular}
tatsuki
parents: 4
diff changeset
97 \end{center}
tatsuki
parents: 4
diff changeset
98 \end{table}
tatsuki
parents: 4
diff changeset
99
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
100 Person.xmlを例で上げたが、役職や役割も同じような構造でデータを保持しており、maTrixには組織情報からデータを取得するFunctionが15種類実装されている。
6
tatsuki
parents: 4
diff changeset
101
tatsuki
parents: 4
diff changeset
102
tatsuki
parents: 4
diff changeset
103 \section{Jungle上でのmaTrixのデータ構造の表現}
tatsuki
parents: 4
diff changeset
104
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
105 maTrixが保持している、人物や役職は、木構造のデータであるため直接Jungleに格納できる。
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
106 実際に人物のデータを格納したJungleの構造を(図\ref{fig:PersonTree}、図\ref{fig:PersonTree})に示した。
6
tatsuki
parents: 4
diff changeset
107
tatsuki
parents: 4
diff changeset
108 \newpage
tatsuki
parents: 4
diff changeset
109
tatsuki
parents: 4
diff changeset
110 \begin{figure}[h]
tatsuki
parents: 4
diff changeset
111 \begin{center}
tatsuki
parents: 4
diff changeset
112 \includegraphics[height = 8cm , bb=0 0 398 367]{fig/TreePersonJungle.pdf}
tatsuki
parents: 4
diff changeset
113 \caption{Jungle上での人物Treeの表現例(1)}
tatsuki
parents: 4
diff changeset
114 \label{fig:PersonTree}
tatsuki
parents: 4
diff changeset
115 \end{center}
tatsuki
parents: 4
diff changeset
116 \end{figure}
tatsuki
parents: 4
diff changeset
117
tatsuki
parents: 4
diff changeset
118 \begin{table}[h]
tatsuki
parents: 4
diff changeset
119 \caption{図\ref{fig:PersonTree}に対応したXML}
tatsuki
parents: 4
diff changeset
120 \label{list:PersonTree}
tatsuki
parents: 4
diff changeset
121 \begin{center}
tatsuki
parents: 4
diff changeset
122 \begin{tabular}{|l|} \hline
tatsuki
parents: 4
diff changeset
123 \verb|<|Persons\verb|>| \\
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
124 \ \verb|<|Person id="p:1" type="Person"\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
125 \ \ \verb|<|PersonData\verb|>| \verb|<|/PersonData\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
126 \ \verb|<|/Person\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
127 \ \verb|<|Person id="p:2" type="Person"\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
128 \ \ \verb|<|PersonData\verb|>| \verb|<|/PersonData\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
129 \ \verb|<|/Person\verb|>| \\
6
tatsuki
parents: 4
diff changeset
130 \verb|<|/Persons\verb|>|\\ \hline
tatsuki
parents: 4
diff changeset
131 \end{tabular}
tatsuki
parents: 4
diff changeset
132 \end{center}
tatsuki
parents: 4
diff changeset
133 \end{table}
tatsuki
parents: 4
diff changeset
134
tatsuki
parents: 4
diff changeset
135
tatsuki
parents: 4
diff changeset
136
tatsuki
parents: 4
diff changeset
137 図\ref{fig:PersonTree}は、表\ref{list:PersonTree}をJungleに格納したものである。
tatsuki
parents: 4
diff changeset
138 Jungleは、TreeNodeに\verb|<|Key String, Value Attribtue\verb|>|の組み合わせでデータを保持する。
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
139 そのため、XMLのデータをTreeNodeに格納する際、要素の格納は\verb|<| Key "element", Value "要素名"\verb|>|、属性の格納は\verb|<|Key "要素名-属性名", Value "属性値"\verb|>|で格納する。
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
140 属性格納時のKeyを、"要素名-属性名"にした理由は、Indexで検索を行う際にKeyの重複を避けるためである。
6
tatsuki
parents: 4
diff changeset
141
tatsuki
parents: 4
diff changeset
142 \clearpage
tatsuki
parents: 4
diff changeset
143
tatsuki
parents: 4
diff changeset
144 \begin{figure}[h]
tatsuki
parents: 4
diff changeset
145 \begin{center}
tatsuki
parents: 4
diff changeset
146 \includegraphics[height = 12cm , bb=100 0 823 502]{fig/TreePersonJungle2.pdf}
tatsuki
parents: 4
diff changeset
147 \caption{Jungle上での人物Treeの表現例(2)}
tatsuki
parents: 4
diff changeset
148 \label{fig:PersonTree2}
tatsuki
parents: 4
diff changeset
149 \end{center}
tatsuki
parents: 4
diff changeset
150 \end{figure}
tatsuki
parents: 4
diff changeset
151
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
152 \clearpage
6
tatsuki
parents: 4
diff changeset
153
tatsuki
parents: 4
diff changeset
154 \begin{table}[h]
tatsuki
parents: 4
diff changeset
155 \caption{図\ref{fig:PersonTree2}に対応したXML}
tatsuki
parents: 4
diff changeset
156 \label{list:PersonTree2}
tatsuki
parents: 4
diff changeset
157 \begin{center}
tatsuki
parents: 4
diff changeset
158 \begin{tabular}{|l|} \hline
tatsuki
parents: 4
diff changeset
159 \verb|<|Person id="p:1" type="Person"\verb|>| \\
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
160 \ \verb|<|accountId\verb|>|a:26\verb|<|/accountId\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
161 \ \verb|<|lastName\verb|>|東\verb|<|/lastName\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
162 \ \verb|<|name\verb|>|東俊一\verb|<|/name\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
163 \ \verb|<|nameReading\verb|>|あずましゅんいちくん\verb|<|/nameReading\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
164 \ \verb|<|roleRefIds\verb|>|r:10 r:34\verb|<|/roleRefIds\verb|>| \\
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
165 \ \verb|<|その他の値\verb|>| \verb|<|/その他の値\verb|>| \\
6
tatsuki
parents: 4
diff changeset
166 \verb|<|/Person\verb|>| \\
tatsuki
parents: 4
diff changeset
167 \hline
tatsuki
parents: 4
diff changeset
168 \end{tabular}
tatsuki
parents: 4
diff changeset
169 \end{center}
tatsuki
parents: 4
diff changeset
170 \end{table}
tatsuki
parents: 4
diff changeset
171
tatsuki
parents: 4
diff changeset
172 図\ref{fig:PersonTree2}と表\ref{list:PersonTree2}も同じくPersonTreeの一部をJungleに格納した時の図である。
tatsuki
parents: 4
diff changeset
173 基本的な構造は図\ref{fig:PersonTree}と変わらないが、1箇所XMLの構造を変えてJungleに格納した箇所があるのでそこの解説を行う。
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
174 Jungleはノードにデータを格納する際に、List構造を持つことが出来ないため、keyに対応するvalueは1つしか格納できない。
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
175 よって、表\ref{list:PersonTree2}の\verb|<|roleRefIds\verb|>|r:10 r:34\verb|<|/roleRefId\verb|>| の様に、2つの値をテキスト部分が保持している場合どちらか片方しか格納することが出来ない。
6
tatsuki
parents: 4
diff changeset
176 そこで、読み込む際にデータ構造を、表\ref{list:maTrixDataChild}の様に書き換えてJungleに格納する。
tatsuki
parents: 4
diff changeset
177
tatsuki
parents: 4
diff changeset
178 \begin{table}[h]
tatsuki
parents: 4
diff changeset
179 \caption{Jungleに対応したXML文例}
tatsuki
parents: 4
diff changeset
180 \label{list:maTrixDataChild}
tatsuki
parents: 4
diff changeset
181 \begin{center}
tatsuki
parents: 4
diff changeset
182 \begin{tabular}{|l|} \hline
tatsuki
parents: 4
diff changeset
183 \verb|<|roleRefIds\verb|>| \\
20
tatsuki
parents: 18
diff changeset
184 \ \verb|<|roleRefId\verb|>|r:10\verb|<|/roleRefId\verb|>| \\
tatsuki
parents: 18
diff changeset
185 \ \verb|<|roleRefId\verb|>|r:34\verb|<|/roleRefId\verb|>| \\
6
tatsuki
parents: 4
diff changeset
186 \verb|<|/roleRefIds\verb|>| \\
tatsuki
parents: 4
diff changeset
187 \hline
tatsuki
parents: 4
diff changeset
188
tatsuki
parents: 4
diff changeset
189 \end{tabular}
tatsuki
parents: 4
diff changeset
190 \end{center}
tatsuki
parents: 4
diff changeset
191 \end{table}
tatsuki
parents: 4
diff changeset
192
tatsuki
parents: 4
diff changeset
193 この様にmaTrixのデータ構造をJungleにマッピングしていく。
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
194 また木構造同士の参照を用いて行う組織構造の表現は、JungleではTreeに対する検索で表現する。
6
tatsuki
parents: 4
diff changeset
195 \clearpage
tatsuki
parents: 4
diff changeset
196
tatsuki
parents: 4
diff changeset
197
tatsuki
parents: 4
diff changeset
198
tatsuki
parents: 4
diff changeset
199 \section{maTrixのデータの版管理}
tatsuki
parents: 4
diff changeset
200
tatsuki
parents: 4
diff changeset
201 maTrixは、組織構造を構成情報モデルとして表現し、版管理している。
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
202 構成情報モデルはversion毎に存在し、各versionに対応した組織構造を構成する木構造の集合を保持している。
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
203
1
tatsuki
parents: 0
diff changeset
204 \begin{figure}[h]
tatsuki
parents: 0
diff changeset
205 \begin{center}
tatsuki
parents: 0
diff changeset
206 \includegraphics[height = 6cm , bb=0 0 463 271]{fig/maTrixVersion1.pdf}
tatsuki
parents: 0
diff changeset
207 \caption{maTrixの構成情報例1}
tatsuki
parents: 0
diff changeset
208 \label{fig:maTrixVersion1}
tatsuki
parents: 0
diff changeset
209 \end{center}
tatsuki
parents: 0
diff changeset
210 \end{figure}
tatsuki
parents: 0
diff changeset
211
tatsuki
parents: 0
diff changeset
212 人物と役職のTreeのversionが共に1の時、構成情報モデルのversionも1とする。
tatsuki
parents: 0
diff changeset
213
tatsuki
parents: 0
diff changeset
214 \begin{figure}[h]
tatsuki
parents: 0
diff changeset
215 \begin{center}
tatsuki
parents: 0
diff changeset
216 \includegraphics[height = 6cm , bb=0 0 463 271]{fig/maTrixVersion2.pdf}
tatsuki
parents: 0
diff changeset
217 \caption{maTrixの構成情報例1}
tatsuki
parents: 0
diff changeset
218 \label{fig:maTrixVersion2}
tatsuki
parents: 0
diff changeset
219 \end{center}
tatsuki
parents: 0
diff changeset
220 \end{figure}
3
tatsuki
parents: 2
diff changeset
221 構成情報モデルのversion:1の人物Treeを更新した場合、version:2の構成情報が構築され、maTrixはversion:1の構成情報とversion:2の構成情報の両方を保持し、両方の構成情報にアクセスすることが可能である。
1
tatsuki
parents: 0
diff changeset
222
6
tatsuki
parents: 4
diff changeset
223 \clearpage
tatsuki
parents: 4
diff changeset
224
tatsuki
parents: 4
diff changeset
225 \section{JungleでのmaTrixの版管理の表現}
1
tatsuki
parents: 0
diff changeset
226
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
227 JungleのTreeは、全てのversionのTreeで単一なIdを保持しているため、Idを指定すれば、過去のTreeにアクセスすることが可能である。
6
tatsuki
parents: 4
diff changeset
228 それを利用し、Jungle上での過去の変更履歴を保持する構成情報モデルの表現は、構成情報モデルのversionと、各Treeのversionを保持し、関連付ける構成情報モデルTreeを作成し表現した。(図\ref{fig:configTree})。
tatsuki
parents: 4
diff changeset
229 \begin{figure}[h]
tatsuki
parents: 4
diff changeset
230 \begin{center}
tatsuki
parents: 4
diff changeset
231 \includegraphics[height = 8cm ,bb=0 0 563 325]{fig/configTree.pdf}
tatsuki
parents: 4
diff changeset
232 \caption{構成情報モデルTree表現例}
tatsuki
parents: 4
diff changeset
233 \label{fig:configTree}
tatsuki
parents: 4
diff changeset
234 \end{center}
tatsuki
parents: 4
diff changeset
235 \end{figure}
4
tatsuki
parents: 3
diff changeset
236
1
tatsuki
parents: 0
diff changeset
237
tatsuki
parents: 0
diff changeset
238
4
tatsuki
parents: 3
diff changeset
239 \begin{table}[h]
6
tatsuki
parents: 4
diff changeset
240 \caption{構成情報TreeのTreeNodeが保持しているAttribute}
tatsuki
parents: 4
diff changeset
241 \label{list:configTree}
1
tatsuki
parents: 0
diff changeset
242 \begin{center}
tatsuki
parents: 0
diff changeset
243 \begin{tabular}{|l|l|} \hline
6
tatsuki
parents: 4
diff changeset
244 version & 構成情報モデルのversion ~ \\ \hline
tatsuki
parents: 4
diff changeset
245 person & 構成情報モデルのversionに対応する人物Treeのversion ~\\ \hline
tatsuki
parents: 4
diff changeset
246 organization & 構成情報モデルのversionに対応する組織Treeのversion ~ \\ \hline
tatsuki
parents: 4
diff changeset
247 role & 構成情報モデルのversionに対応する役割Treeのversion ~ \\ \hline
tatsuki
parents: 4
diff changeset
248 rde & 構成情報モデルのversionに対応する役割記述要素Treeのversion ~\\ \hline
1
tatsuki
parents: 0
diff changeset
249 \end{tabular}
tatsuki
parents: 0
diff changeset
250 \end{center}
tatsuki
parents: 0
diff changeset
251 \end{table}
tatsuki
parents: 0
diff changeset
252
6
tatsuki
parents: 4
diff changeset
253
1
tatsuki
parents: 0
diff changeset
254
tatsuki
parents: 0
diff changeset
255
6
tatsuki
parents: 4
diff changeset
256 実際にどのようにJungle上で過去の構成情報モデルにアクセスするか、例題を用いて説明する。
tatsuki
parents: 4
diff changeset
257 構成情報モデルversion:3に対応する人物Treeにアクセスする手順を以下に示す。
1
tatsuki
parents: 0
diff changeset
258
6
tatsuki
parents: 4
diff changeset
259 \begin{enumerate}
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
260 \item 構成情報Treeからアクセスしたいversion情報を保持しているNodeを取得する(今回の例題ではversion3)
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
261 \item 取得したTreeNodeには、構成情報:version:3に対応した人物Treeなどのversionが記述されているため、人物Treeのverson(v:5)を取得する
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
262 \item 2で取得したversionの人物Treeにアクセスする。
6
tatsuki
parents: 4
diff changeset
263 \end{enumerate}
tatsuki
parents: 4
diff changeset
264 といった手順でJungleではmaTrixの構成情報モデルを表現する。
2
tatsuki
parents: 1
diff changeset
265
tatsuki
parents: 1
diff changeset
266
tatsuki
parents: 1
diff changeset
267 \section{申請の許認可}
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
268 maTrixを用いた許認可は、組織構造だけで判断されるわけではない。
22
tatsuki
parents: 20
diff changeset
269 アクセス可能な時間や、貸出の場合は同時貸出数の上限などのアクセスルールは組織構造だけでは表現できない。
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
270 そのため、maTrixはアクセス管理のルールを表現方法を定義するXACMLという言語で記述された、ポリシーファイルを用いて許認可判断を行う。。
2
tatsuki
parents: 1
diff changeset
271 ポリシーファイルは、リポジトリで管理されており、アクセス要求にあったポリシーファイルが利用される。
tatsuki
parents: 1
diff changeset
272 以下にmaTrixでの申請の許認可の流れを記述する。
1
tatsuki
parents: 0
diff changeset
273
tatsuki
parents: 0
diff changeset
274 \begin{enumerate}
6
tatsuki
parents: 4
diff changeset
275 \item Aさんが、学科のノートPCの借りるために、maTrixに貸出許可を求める。
tatsuki
parents: 4
diff changeset
276 \item maTrixはリポジトリから、貸出許可を与えるかを判断するためのポリシーを取得する。
22
tatsuki
parents: 20
diff changeset
277 \item ポリシーファイルを元に、データにアクセスを行い許可を与えるかどうかを判断する。
1
tatsuki
parents: 0
diff changeset
278 \end{enumerate}
2
tatsuki
parents: 1
diff changeset
279 といった流れになる。
1
tatsuki
parents: 0
diff changeset
280
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
281 maTrixの許認可を使用するメリットとして、許認可のログをとっておくことで、いつ、誰が、どのポリシーを元に、どんなことをしたか、の情報がいつでも取得可能であるため、データの不正改竄等の問題発生時の解決等役立つ。
4
tatsuki
parents: 3
diff changeset
282 といったメリットもある。
1
tatsuki
parents: 0
diff changeset
283
tatsuki
parents: 0
diff changeset
284 \clearpage
2
tatsuki
parents: 1
diff changeset
285 \section{XACML}
tatsuki
parents: 1
diff changeset
286 本節ではmaTrixのポリシーファイルの記述に用いられているXACMLについての説明を行う。
3
tatsuki
parents: 2
diff changeset
287 XACMLは、データに関するアクセス要求について、その要求元の情報と要求の内容、アクセス対象の組み合わせから、その
2
tatsuki
parents: 1
diff changeset
288 アクセス要求が許可されるか否認されるかを判断するためのルールを記述できる。
tatsuki
parents: 1
diff changeset
289 実際に使用する際は、XACML自体がアクセス制御を行うのではなく、アクセス管理アプリケーションがXACMLを参照しアクセス制御を行う。XACMLは以下の様なデータ構造を持つ(図\ref{fig:xacml})
1
tatsuki
parents: 0
diff changeset
290
tatsuki
parents: 0
diff changeset
291 %\begin{figure}[h]
tatsuki
parents: 0
diff changeset
292 %\begin{center}
tatsuki
parents: 0
diff changeset
293 %\includegraphics[height=10cm,bb=0 0 439 610]{fig/XACMLDataflow.pdf}
tatsuki
parents: 0
diff changeset
294 %\caption{アクセス制御のデータフロー}
tatsuki
parents: 0
diff changeset
295 %\label{fig:xacmlDataflow}
tatsuki
parents: 0
diff changeset
296 %\end{center}
tatsuki
parents: 0
diff changeset
297 %\end{figure}
tatsuki
parents: 0
diff changeset
298
tatsuki
parents: 0
diff changeset
299 \begin{figure}[h]
tatsuki
parents: 0
diff changeset
300 \begin{center}
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
301 \includegraphics[height=10cm,bb=0 0 526 308]{fig/XACML.pdf}
1
tatsuki
parents: 0
diff changeset
302 \caption{XACMLのデータ構造}
tatsuki
parents: 0
diff changeset
303 \label{fig:xacml}
tatsuki
parents: 0
diff changeset
304 \end{center}
tatsuki
parents: 0
diff changeset
305 \end{figure}
tatsuki
parents: 0
diff changeset
306
tatsuki
parents: 0
diff changeset
307
3
tatsuki
parents: 2
diff changeset
308 Targetは、誰に対して(Subject)、どのような資源を(Resource)、どのように扱うか(Action)の3つの要素を持ち、それぞれの要素で、評価関数を用いて評価を行う。評価の結果は、Match、No-Match、Indeterminate(評価不能)の3つである
1
tatsuki
parents: 0
diff changeset
309
tatsuki
parents: 0
diff changeset
310
tatsuki
parents: 0
diff changeset
311
3
tatsuki
parents: 2
diff changeset
312 Ruleは、Targetに対する規則を定めるもので、ルールの方針にそってアクセス要求がこのルールに適合した場合に決定する値(Permit、Deny)を、Effectとして設定しておく。
tatsuki
parents: 2
diff changeset
313 また、Targetとは別にオプションとして条件(Conditions)を付けることも可能である(条件の例としては、アクセスを許可する時間の指定などがある)。
tatsuki
parents: 2
diff changeset
314 ルールの評価は、Targetの評価関数の結果とConditionの、ルール結合アルゴリズム(表\ref{list:rule})にそって結合する。
1
tatsuki
parents: 0
diff changeset
315
tatsuki
parents: 0
diff changeset
316 \begin{table}[h]
2
tatsuki
parents: 1
diff changeset
317 \caption{Ruleの評価}
1
tatsuki
parents: 0
diff changeset
318 \label{list:rule}
tatsuki
parents: 0
diff changeset
319 \begin{center}
tatsuki
parents: 0
diff changeset
320 \begin{tabular}{|l|l|l|} \hline
tatsuki
parents: 0
diff changeset
321 Target & Condition & 評価 ~ \\ \hline
tatsuki
parents: 0
diff changeset
322 Match & true & Efferct(Permit or Deny) ~\\ \hline
tatsuki
parents: 0
diff changeset
323 Match& false & NotApplicable ~ \\ \hline
tatsuki
parents: 0
diff changeset
324 Match& Indeteminate & Indeteminate ~ \\ \hline
tatsuki
parents: 0
diff changeset
325 No-Macth & - & NotApplicate ~ \\ \hline
tatsuki
parents: 0
diff changeset
326 Indeterminate & - & Indeteminate \\ \hline
tatsuki
parents: 0
diff changeset
327 \end{tabular}
tatsuki
parents: 0
diff changeset
328 \end{center}
tatsuki
parents: 0
diff changeset
329 \end{table}
tatsuki
parents: 0
diff changeset
330 \newpage
2
tatsuki
parents: 1
diff changeset
331
1
tatsuki
parents: 0
diff changeset
332 Policy
tatsuki
parents: 0
diff changeset
333
tatsuki
parents: 0
diff changeset
334 複数のRuleをまとめたものをPolicyという。
tatsuki
parents: 0
diff changeset
335 Policyの子要素には、Target、Rule、Obligations(責務)がある。
tatsuki
parents: 0
diff changeset
336 もしも、PolicyにObligationsが規定された場合は、たとえ、ルール結合後の結果がpermitであったとしても、Obiligationsに記述されていることを同時に実施することが出来なかった場合、承認を拒否する必要がある。
tatsuki
parents: 0
diff changeset
337 またPolicyが複数のRuleを評価するときは、ルール結合アルゴリズム(表\ref{list:policy})を用いる。
tatsuki
parents: 0
diff changeset
338
tatsuki
parents: 0
diff changeset
339 \begin{table}[h]
tatsuki
parents: 0
diff changeset
340 \caption{XACMLのルール結合アルゴリズム}
tatsuki
parents: 0
diff changeset
341 \label{list:policy}
tatsuki
parents: 0
diff changeset
342 \begin{center}
tatsuki
parents: 0
diff changeset
343 \begin{tabular}{|l|l|} \hline
tatsuki
parents: 0
diff changeset
344 Deny-overrides & どれか1つのルールのEffectがDenyであれば結果はDenyとする ~ \\ \hline
tatsuki
parents: 0
diff changeset
345 Permit-overrides & どれか1つのルールのEffectががPermitであれば結果はPermitとする ~\\ \hline
tatsuki
parents: 0
diff changeset
346 First-applicable & ポリシー内のすべてのルールについて順番に評価して、対象がマッチした場合、\\
tatsuki
parents: 0
diff changeset
347 & 対象の評価結果をMatchとし、次にConditionを評価し、これがTrueなら\\
tatsuki
parents: 0
diff changeset
348 &結果はEffectで指定されたPermitまたはDenyとする。 ~ \\ \hline
tatsuki
parents: 0
diff changeset
349 \end{tabular}
tatsuki
parents: 0
diff changeset
350 \end{center}
tatsuki
parents: 0
diff changeset
351 \end{table}
tatsuki
parents: 0
diff changeset
352
4
tatsuki
parents: 3
diff changeset
353 XACMLの評価が終わり、最終的にPermitだった場合その申請は許可される。
6
tatsuki
parents: 4
diff changeset
354
tatsuki
parents: 4
diff changeset
355 \section{Jungle上の許認可}
tatsuki
parents: 4
diff changeset
356 Jungle上でmaTrixの許認可を行う際は、ポリシーファイルを読み込み、各Treeに対して検索関数を用いて、その結果から許
tatsuki
parents: 4
diff changeset
357 認可を行う。
tatsuki
parents: 4
diff changeset
358
tatsuki
parents: 4
diff changeset
359 maTrixと同じ例題で、Aさんが、学科のノートPCの借りるために貸出申請を行った際の許認可の流れを以下に記す。
tatsuki
parents: 4
diff changeset
360
tatsuki
parents: 4
diff changeset
361 \begin{enumerate}
tatsuki
parents: 4
diff changeset
362 \item 人物Treeから、Aさんのデータを取得し、Aさんに割り振られている役割のIDを取得する。
tatsuki
parents: 4
diff changeset
363 \item 役割Treeから、1で取得した役割IDのデータを取得し、その役割IDに割り振られている役割記述要素IDを取得する
tatsuki
parents: 4
diff changeset
364 \item 役割記述要素Treeから、2で取得した役割記述要素IDのデータを取得し、役割記述要素名を取得する
tatsuki
parents: 4
diff changeset
365 \item 3で取得した役割記述要素名が、琉球大学工学部学生かどうかを調べ、一致した場合は貸出を許可し、一致しなかった場合は貸出を許可しない。
tatsuki
parents: 4
diff changeset
366 \end{enumerate}
tatsuki
parents: 4
diff changeset
367
tatsuki
parents: 4
diff changeset
368 といった流れになる。
18
96fc201c4e8c add bibi
tatsuki
parents: 6
diff changeset
369 Jungleが提供しているのはあくまで組織構造であるため、アクセス可能な時間等の条件に関してJungleは一切関与しない。