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

あの“津崎さん”も保有する難関資格「データベーススペシャリスト」。本企画では、データベーススペシャリスト試験 午前/午後試験対策のための「基礎知識」を抜粋してお届けします。今回は、「SQLでのロール作成と付与の基礎」を解説します。

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

連載目次

ポケットスタディ データベーススペシャリスト [第2版]

書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍ポケットスタディ データベーススペシャリスト [第2版](2015年12月22日発行)』からの抜粋です。

ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。


※編集部注:前回記事「SQLで「権限の付与」を行う」はこちら

SQLによるロール作成と付与

出題頻度 午前II:--- 午後I:●-- 午後II:●--


 ●--:過去14年間での過去問出題数が1〜9回
 ●●-:過去14年間での過去問出題数が10〜19回
 ●●●:過去14年間での過去問出題数が20回以上


Key Word

ロールの概念、ロール利用の流れ、ロールの削除、午後演習


ロールの概念

 ロール(ROLE)とは、権限をとりまとめたものです。以下のように、ロールを活用すれば効率的に権限を運用できます。

ロールによる、役割毎の権限管理イメージ

ロールの作成と削除

 ロールの作成にはCREATE ROLE文を利用します。

構文 CREATE ROLE ロール名
ロール名 作成するロールの名称

 作成したロールに権限を設定した後、ユーザにロールを与えます。

ロールの削除

 ロールの削除はDROP ROLE文で行います。

構文 DROP ROLE ロール名
ロール名 削除するロールの名称

 尚、ロールに設定した権限を取り消すときはREVOKE文を使います。

ロール作成から付与までの流れ

 以下に、ロールを作成してから利用者に付与するまでの流れを示します。

(1)ロールの作成

 最初にロールを作成します。以下の構文で、上記の図における「一般社員用ロール」を作成します。

CREATE ROLE 一般社員用ロール

(2)ロールへの権限設定

 次に、ロールに権限を設定します。構文は、ユーザに権限を与えるときと同じ構文を使います。

GRANT SELECT, UPDATE ON社員 TO 一般社員用ロール
GRANT SELECT ON 社員評価 TO 一般社員用ロール

(3)ユーザへのロール付与

 最後に、ロールをユーザに付与します。

GRANT 一般社員用ロール TO 新入社員

階層的なロール管理

 下図左側の図のような階層的な権限管理を行う場合、右側のようにロールに対してロールを付与すると、運用が効率的になります。この例では、課長が持つ権限を変更する場合、課長用のロールを修正すれば、その修正内容が部長用のロールにも自動的に反映されます。

階層的なロール管理イメージ

午後演習

 平成19年度午後I問3ではロールの概念が出題されました。それ以前はほとんど出題されていませんでしたが、本問からは、今後の出題傾向として「監査証跡・セキュリティなど含め、理解してほしい」という意図が感じられます。今後の出題に備え、以下の問題で練習しておきましょう(決して難しい問題ではありません)。先に設問から目を通し、その後に本文を読むのが、手早く解くコツです。

データベースセキュリティに関する次の記述を読んで、設問1〜3に答えよ。

 B社では、関係データベース管理システム(RDBMS)を用いて人事管理データベースを構築した。この人事管理データベースは、従業員のアクセス権限によって、アクセスできる従業員データの範囲(以下、アクセス範囲という)を制御している。

〔人事管理データベースの概要〕

 人事管理データベースでは、従業員データを次のように管理している。

(1) 従業員には、一意な従業員コードを付与し、社内電話番号やEメールアドレスなどの基本データのほかに、個人データ、人事データ及び給与データを管理している。

(2) 従業員には、従業員データにアクセスするために、RDBMSのユーザIDが与えられている。このユーザIDには、従業員コードを使用している。

(3) ユーザIDごとのアクセス範囲を制御できるようにするため、RDBMSのアクセス制御機構を使用している。また、データ漏えい及びデータ改ざんを追跡するために、RDBMSの監査機構も使用している。

 人事管理データベースの主要なテーブル構造を、図1に示す。

図1 人事管理データベースの主要なテーブル構造 図1 人事管理データベースの主要なテーブル構造

〔RDBMSの仕様と人事管理データベースの設定内容〕

 B社が採用したRDBMSがもつアクセス制御機構、監査機構の仕様及び人事管理データベースでの設定内容は次のとおりである。

1.アクセス制御機構

 ユーザID、ロールに対して、オブジェクト(テーブルやビューなど)へのアクセス権限を付与する。また、ユーザIDに対してロールを与えることもできる。人事管理データベースでは、ユーザIDごとに“従業員基本”テーブル、“従業員個人”テーブル、“従業員人事”テーブル、“給与”テーブルへのアクセス権限を付与している。

2.監査機構

 (1) オブジェクト、オブジェクトに対する操作の内容(DDL文及びDML文)、オブジェクトを操作するユーザIDを監査対象とする。人事管理データベースでは、監査対象をそれぞれ次のように設定している。

  • 対象となるオブジェクト: “従業員基本”テーブル、“従業員個人”テーブル、“従業員人事”テーブル、“給与”テーブル
  • 対象となる操作:すべて
  • 対象となるユーザID:すべて

 (2) 人事管理データベースでは、次の監査証跡を半年間保存している。

  • アクセス日時
  • ユーザID
  • アクセス端末名(コンピュータ名)
  • 操作名(“INSERT”、“SELECT”、“UPDATE”、“DELETE”、“CREATE TABLE”、“DROP TABLE”など)とオブジェクト名
  • 操作の実行結果(SQLSTATE)

〔アクセス範囲要件とB社の組織〕

 図1のテーブルに対するアクセス範囲要件は、次のとおりである。図2には、B社の組織と従業員の関係の一部を示す。

  1. 従業員は、社内電話番号やEメールアドレスなどを調べるために、“従業員基本”テーブルのすべてのデータを参照することができる。
  2. 従業員は、すべてのテーブルに対して自分のデータを参照することができる。また、“従業員基本”テーブルと“従業員個人”テーブルの自分のデータを更新することができる。
  3. 人事部の部門担当者は、担当部門に所属する従業員に関する“従業員人事”テーブルと“給与”テーブルのデータを更新することができる(例として、N氏は営業部の従業員の人事データ及び給与データを更新することができる)。また、担当部門に所属する従業員に関する“従業員個人”テーブル、“従業員人事”テーブル、“給与”テーブルのデータを参照することができる。
  4. 部門長(社長、部長、課長)は、担当部門(下位の部門を含む)に所属する従業員に関する“従業員人事”テーブルのデータを参照又は更新することができる(例として、L氏は営業1課と営業2課の従業員の人事データを参照することができる)。
図2 B社の組織と従業員の関係の一部 図2 B社の組織と従業員の関係の一部

 表1に、アクセス権限ごとの各テーブルのアクセス範囲を示す。

表1 アクセス権限ごとのテーブルのアクセス範囲

〔アクセス制御と監査の問題点〕

 人事管理データベースのアクセス制御と監査について、次の問題点<1>〜<3>を指摘された。

<1> テーブルに対するアクセス権限の付与では、表1のアクセス範囲を制御できない。

<2> ユーザIDごとにアクセス権限の設定を行っているので、新たなテーブルの追加や組織変更などが発生したときに、アクセス制御の見直しが煩雑になり、設定漏れが発生するリスクが高い。

<3> 内部犯行による(アクセス権限のある従業員による)データ漏えい及びデータ改ざんに対して、犯人を追跡できない場合がある。


設問1

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

 (1) 従業員が“従業員個人”テーブルの自分のデータだけをアクセス可能にするために、ビューを使用することにした。その場合のアクセス権限はどのように付与すればよいか。35字以内で具体的に述べよ。

 (2) (1)のビューにUSER関数を使用すると効率が良い。その理由を、30字以内で具体的に述べよ。

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


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

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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