連載
» 2017年08月29日 05時00分 公開

SQLで「ロール作成と付与」を行う「データベーススペシャリスト試験」戦略的学習のススメ(19)(2/4 ページ)

[具志堅融, 河科湊,著]

 設問1の解答は以下の通りとなります。(IPA解答例より)

設問1 (1) アクセス権限をテーブルには付与せずに、ビューだけ付与する。
(2) 従業員ごとにビューを作成する必要がなくなるから。

 (1) ビューを利用してセキュリティを確保するためには、一般的に次の方法を取ります。

  • ユーザが直接テーブルを操作できないよう、テーブルの権限を設定(データを更新する際は、必ずビューを経由するようにする)
  • ビューに対し、然るべき権限者のみアクセスできるよう、権限を設定

 尚、システム間の連携においても、あるシステムが他のシステムのデータを誤って更新してしまわないように、“保険”として、上記の仕組みを利用することがあります。

 (2) USER関数とは、そのSQL文を実行しているユーザIDの文字列を返す関数です。本問題で、出題者は「ビューを構成するSQL文において『WHERE 従業員コード=ユーザ関数』とすれば『アクセスしたユーザのデータしか参照できないビュー』を作ることができる。」「従業員個別のビューを作成するよりも効率的だ(ビューとはそのように使うものだ)」という答えを受験生に出させようとしています。〔人事管理データベースの概要〕(2)に、RDBMSの「ユーザIDには、従業員コードを使用している。」旨の記述がありますが、これが布石です。

 これはあらゆる出題について言えることですが、現実の開発で「自分がどのように構築したか(こう構築するものだ)」という既成概念にとらわれると、解ける問題も解けなくなってしまいます。

 過去問題を解くときは、まず「本文の構成上、不自然と思える一文」「違和感のある一文」に対して敏感になって下さい。そこには出題者の意図が隠されています。そして「きっと、こう答えさせたいのだろうな」と(仮に、自分の実務経験から、「それはおかしい」と思える内容であったとしても)出題者が答えて欲しいように答えましょう

 たまに予想が外れても諦めないで下さい。継続的に行えば必ず予測の精度は上がっていきます。このように、文中の表現に注意しながら過去問題を解いていけば「この表現はこれまで解いた問題ではあまり出てこなかった→今回独自の表現だ→設問の布石かもしれない→下線を引いておこう」といった高度な判断もできるようになります。

設問2

 アクセス制御と監査の問題点<2>について、(1)、(2)に答えよ。

(1) アクセス権限管理を容易にするために、ロールを使用することにした。部門長用のロール(営業1課長ロール、営業2課長ロール、営業部長ロール)を作成するための、次のSQL文中の[a]〜[d]に入れる適切な字句を答えよ。ただし、従業員人事営業1課ビューは、営業1課長が自分の課の従業員人事データをアクセスするためのビューを指している。

設問2

(2) 人事異動によって営業部長がL氏(従業員コード:B110)からM氏(従業員コード:B130)に変更になった場合の(1)のロールに対する変更方法を、65字以内で具体的に述べよ。

(H19春DB午後I問3設問2)


(解答と解説は次ページへ)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。