ITパスポート 2009年 春期 問62
問題文
所属するグループ及び個人の属性情報によって、人事ファイルへのアクセスをコントロールするシステムがある。人事部グループの属性情報と、そこに所属する4人の個人の属性情報が次の条件の場合、人事ファイルを参照又は更新可能な人数の組合せはどれか。
〔条件〕
(1) 属性情報は3ビットで表される。
(2) 各ビットは、左から順に参照、更新、追加・削除に対応し、1が許可、0が禁止を意味する。
(3) グループの属性情報は、個人の属性情報が登録されていない場合にだけ適用される。
(4) グループと個人の属性情報は次のとおりとする。
人事部グループ:110
Aさん:100 Bさん:110 Cさん:001 Dさん:未登録

選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
属性情報による人事ファイルのアクセス制御【ITパスポート 解説】
正解の理由
属性情報は3ビットで、左から順に「参照(読む)」「更新(内容を書き換える)」「追加・削除(レコードの追加や削除)」を表します。ビットは 1 が許可、0 が禁止です。条件(3)より、個人の属性情報が登録されている場合はその個人の属性が優先し、未登録の人にはグループの属性が適用されます。
個人ごとの権限を確認すると、
- Aさん:100 → 参照のみ許可(参照=1、更新=0)
- Bさん:110 → 参照・更新とも許可(参照=1、更新=1)
- Cさん:001 → 追加・削除のみ許可(参照=0、更新=0)
- Dさん:未登録 → グループ(人事部)110 が適用 → 参照・更新とも許可
これより「参照可能な人数」は A,B,D の3人、「更新可能な人数」は B,D の2人です。したがって表の中では エ(参照3、更新2)が正しい組合せです。
解法ステップ
- 「3ビット」の意味を確認する。左から順に参照・更新・追加・削除で、1=許可、0=禁止。
- 各人の属性ビットを個別に読み取る。個人が登録されていればその人の属性を使う。未登録ならグループ属性を使う(条件(3))。
- 「参照ビット(左端)」が1の人を数える。これが参照可能な人数。
- 「更新ビット(中央)」が1の人を数える。これが更新可能な人数。
- 出た数と選択肢を照合する。
実際に数えると参照=3、更新=2 になり、選択肢は エ。
簡単なプログラムで確認する場合(参考):
people = {'A':'100','B':'110','C':'001','D':None}
group = '110'
read = update = 0
for v in people.values():
bits = v if v else group
if bits[0]=='1': read += 1
if bits[1]=='1': update += 1
print(read, update) # 出力: 3 2
選択肢別の誤答解説
-
ア(参照2、更新1):
参照を2としているのは、Dさんにグループ属性を適用していないか、Cさんを誤って参照可能と見なした誤りです。実際は A,B,D が参照可能で3人になります。 -
イ(参照2、更新2):
参照が2とされている点が誤りです。参照は A,B,D の3人です。更新だけは B,D の2人で一致しますが、参照人数が合いません。 -
ウ(参照3、更新1):
参照は正しく3ですが、更新を1としているのは Dさんのグループ属性(更新許可)を見落としているか、Bさんだけを更新可能と誤認している場合です。Dは未登録なのでグループの110が適用され、更新も許可されます。 -
エ(参照3、更新2):
上の理由の通り、正しい組合せです。
よくある誤解
-
ビットの順序を逆に読むミス
「左が参照、中央が更新、右が追加・削除」の順序を取り違えると全ての判定が逆になります。問題文で順序を必ず確認してください。 -
個人登録とグループ属性の優先関係を誤る
「グループ属性が常に適用される」と考える人がいますが、条件(3)は「個人が未登録の場合にだけグループが適用」と明確にしています。個人が登録されていれば個人側を使います。 -
追加・削除(右端のビット)を「更新」と混同する
追加・削除はレコードの新規作成や削除を指します。更新(既存内容の変更)とは別の権限です。001 を見て「更新できる」と勘違いすることがあります。
補足コラム
この問題は「ビットによる権限表現(ビットマスク)」の基本を問う問題です。実務でもファイルやデータベースの権限をビットやフラグで管理することがあります。ポイントは「どのビットが何を意味するか」と「優先順位(個人とグループなど)」です。
参考として、UNIX系のファイル権限表現(rwx=読み取り・書き込み・実行)も似た考え方です。違いは表現方法や権限の詳細ですが、考え方は共通しています。
FAQ
Q. グループと個人の両方に属性がある場合はどちらを使う?
A. 個人の属性が優先されます。今回の問題でも個人登録がある人は個人属性を使います。
A. 個人の属性が優先されます。今回の問題でも個人登録がある人は個人属性を使います。
Q. 追加・削除の権限があれば更新もできる?
A. 問題文の定義では別々のビットで管理されています。追加・削除(右端)は「新規作成や削除」であり、更新(中央)が別に必要です。実装によっては別扱いになります。
A. 問題文の定義では別々のビットで管理されています。追加・削除(右端)は「新規作成や削除」であり、更新(中央)が別に必要です。実装によっては別扱いになります。
Q. 未登録とは具体的に?
A. 個人に属性情報が「登録されていない」ことを示します。そういう場合に限り、グループの属性情報が適用されます。
A. 個人に属性情報が「登録されていない」ことを示します。そういう場合に限り、グループの属性情報が適用されます。
関連キーワード: 属性ビット、アクセス制御、権限管理、ビットマスク、参照権限、更新権限

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

