本稿は『DB Magazine 2007年05月号』特集1-PART1 p.56~p.67からの転載記事です。
データベースに限った話ではありませんが、特にコンピュータ関連ではたくさんのキーワード(用語)が出てきます。はじめてデータベースの勉強をしようとすると、キーワードの数と難しさ、他分野との意味の違い等にとまどってしまうと思います。そこで本稿では、出現頻度が高く、最低限は押さえておきたいキーワードを12個に絞り、前編に引き続き、残りの6個を紹介します。keyword 1~6については、前編を参照してください。
keyword 7 アカウント
皆さんは、個人情報保護法や内部統制といった言葉を聞いたことがあるでしょうか。
個人情報保護法とは、個人情報の取得や保存/利用に関する義務、違反時の罰則などを定めている法律です。個人情報には氏名や住所、電話番号、生年月日などの基本的な情報や、顔写真やメールアドレスなど、ほかの情報と組み合わせれば個人を識別/特定できてしまう情報やデータが含まれています。また、内部統制とは一般に企業などの内部において、違法行為や不正、ミスやエラーなどが行なわれることなく、組織が健全かつ有効/効率的に運営されるよう各業務で所定の基準や手続きを定め、それに基づいて管理/監視/保証を行なうことを指します。
つまりデータベースに格納されるデータを、誰もが検索したり修正できたりしてしまうと、個人情報保護法に違反したり、内部統制ができていない状態になる危険性を秘めていることとなります。
例えば社員表というものがあり、この表は社員番号、氏名、部署コード、内線番号、社員住所という列で構成されているとします。この中の氏名や部署、内線番号といった列の値は、社員であればほかの社員に会社で連絡をとりたい場合、調べられると都合が良いでしょう。ところが完全な個人データである、その社員がどこに住んでいるといった住所の情報が、社員なら誰でも調べられてしまうのは問題になる可能性があります。
こういったことを抑止する仕組みが「アカウント」になります。アカウントとは、一般的にはコンピュータやネットワークの資源を利用できる権利を指します。アカウントにはコンピュータを操作する際(ログオン時)、最初にそのユーザーがそのコンピュータを操作して良いのかを認証チェックするためのOSアカウントがあります。同様に、ユーザーがそのデータベースの値の検索や修正をして良いものなのかを認証チェックするためのものとして、DBアカウントと呼ばれるものがあります。
アカウントはセキュリティ上重要な機能となります。基本的には、ログオン時に使用されるユーザー名、パスワード、そしてデータベースの機能や格納されている表などを検索して良いかなどのチェックに使用されるそのユーザーに付与された権限からなります。DBアカウントの場合、このデータはデータベースの中でメタデータとして管理されます(図16)。
Oracleの場合、権限はOracleの機能を使用しても良いか(例えば、表を作成して良いかなど)の権限であるシステム権限と、表に関する操作をして良いか(SELECTして良いかなど)のオブジェクト権限に分かれています。またデータベースの作成などが行なえる管理権限があります。
権限には表3に示すとおり数多くの種類があり、また数多くのユーザーにきちんと付与する必要があります。この権限管理を容易化するものとして、「ロール」があります。OSアカウントの場合、グループを作成しグループ単位に権限を与えることにより、権限管理の容易化を図ることになりますが、Oracleの場合には原則的にはこの考え方はありません。なお、ほかのDBMSではこのグループの考え方を取り入れているものもあります。
権限 | 一覧 |
---|---|
システム権限 | CREATE SESSION、CREATE TABLE、CREATE VIEW、CREATE USER など100以上の種類がある |
オブジェクト権限 | 各オブジェクトごとにALTER、DELETE、INDEX、INSERT、REFERENCES、SELECT、UPDATE |
管理権限 | SYSOPER、SYSDBA |
ロールは、各種の権限をセットにしたもので、権限を個々のユーザーに付与するのではなくロールの形で付与することもできます。ロールを用いることで個々に権限を付与しなくてもロールに権限を付与することによって、ロールが付与されているユーザーに間接的に権限を付与できるようになります(図17)。
また、OSにログオンした後、続けてデータベースを操作するときにデータベースのユーザーの情報(ユーザー名/パスワード)を入力しなくても良いようにする機能を持つ、つまりOSアカウントとDBアカウントの共通化を図る機能もあります。