目次
セキュリティについて
データベースのセキュリティの基になる考え方は、どのユーザにどの権限を付与するかというのがベースになります。今回は、この権限の付与およびアクセスコントロールについて説明します。
1.ユーザとスキーマの概念
データベースには、通常、複数の人がアクセスします。そのため、データベースシステムには、複数のユーザでデータを共有するための仕組みが必要です。ここではユーザとスキーマの概念からセキュリティ確保の仕組みを見てみます。
①.ユーザー
ユーザがデータベースにアクセスするためには最初にログインという操作が必要になります。但し、この場合のユーザとは必ずしも利用者個人を指すわけではなく、むしろ組織単位で使われることの方が多いと思います。複数の開発者で1つのID、システム管理者で1つのIDという具合です。
ここでいうユーザとは、権限毎に分けられたユーザということがいえます。それぞれの権限毎にユーザが作成されるのが一般的です。
②.スキーマ
スキーマは、テーブルやビューなどのオブジェクトの上位に位置する概念です。つまり、テーブルやビューの集合体がスキーマを形成します。また、スキーマはユーザごとに存在します。そのため、スキーマは、特定のユーザが所有するオブジェクトの集合体と考えることができます。
スキーマとユーザ名は同一です。あるスキーマの中にオブジェクトを作成するということは、そのスキーマまたはユーザがそのオブジェクトを所有することを意味します。
2.アクセス権限
権限とは、オブジェクトを利用するための権利のことをいいます。オブジェクトにアクセスするための権限なのでアクセス権限またはオブジェクト権限と呼ぶこともあります。表やビューなどのオブジェクト毎に設定することが可能です。
①.システム権限とロール
SQL-92規格で定義されているアクセス権限は、特定のオブジェクトにアクセスするための権限なのでオブジェクト権限と呼ばれます。一方、CREATE文、ALTER文、DROP文などのデータ定義文(DDL)の操作についてはSQL-92規格では次のようにごく基本的なことしか定義していません。
・自分の所有するスキーマでは、あらゆるDDL操作を実行できる。
・自分の所有するスキーマ以外では、どのようなDDL操作も実行できない。
多くのRDBMS製品では、DDL操作に対応する権限をシステム権限として実装しています。
3.GRANT文とREVOKE文
【GRANT文構文】
GRANT <権限> ON <オブジェクト名> TO {<ユーザ名> | PUBLIC} [WITH GRANT OPTION]
【REVOKE文構文】
REVOKE <権限> ON <オブジェクト名> FROM {<ユーザ名> | PUBLIC}
4.ビューとセキュリティ
前回の記事で、ビューでは、セキュリティコントロールの手段としての利用方法もあると紹介しました。ビューはもとになる表から特定の行や列だけを取り出して作成することができます。また、ビュー自体、テーブルとは別のオブジェクトなのでビューにはビューのアクセス権を設定することができます。
このような特性を利用すれば、ビューを使ってより細かいセキュリティ管理を行うことができます。
コメントを残す