SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine編集部ではイベントを随時開催しております

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

oracletechアーカイブス!

データベース・セキュリティの実装 第1回 アクセスコントロールと権限管理


データベース・セキュリティにおけるアクセスコントロールと権限管理

 正しいID/パスワードを使ってログインしたユーザーはその後何をしてもよいわけではなく、アクセスコントロールのための原則のひとつ「最小権限の原則」(Least Privilege)に基づいて管理・制限されていなければならない。これは各ユーザーに業務上必要となる最低限の権限のみを付与するというものであり、データベース管理者、プログラム開発者、運用管理者、アプリケーション(プログラムそのもの)などRDBMS上のユーザーが付与されている権限はそれぞれの職務に必要なものだけに限定されていることが必要である。

 1.オブジェクトに対するアクセスコントロール

 具体的にはデータベース内の表、ビューといったオブジェクトに対する権限(主にSELECT,INSERT,UPDATE,DELETEといったDMLを使う権限)をユーザーごとに最小化する必要がある。どのユーザーはどの表に対して、どの権限を使うことができるかをアクセスマトリクスに整理して確認し、これに基づいて厳密な権限付与を行うことが重要となる。

データベース用のアクセスマトリクスを作成した例
データベース用のアクセスマトリクスを作成した例

 この時Webアプリケーションのような三層構造のシステムでは「アプリケーションが利用しているユーザー」に対する権限付与を確実にチェックする必要があり、このことはSQLインジェクションなど外部からの攻撃に対する被害を最小化することにもつながる。また多くの権限を全て個別に管理していると運用が非常に煩雑になるためRole(ユーザー定義によるRole)を使って一定の単位でまとめて管理をしていくと良い。

 しかし一つの表の中に「アクセスさせて良いデータ」と「アクセスを禁止したいデータ」が混在していて、特定の行、列単位でアクセスコントロールを行わなければならない場合があり、オブジェクトに対する権限を管理しただけでは十分ではない。このときの代表的な構成方法がViewを使って必要な部分だけをもとの表から抽出してアクセスさせる方法である。

ビューを使ったアクセスコントロール
ビューを使ったアクセスコントロール

 しかし、このViewを使った制御は、アクセスコントロールの粒度が細かくなるとViewの数が増え、組織変更や人事異動、ポリシー変更などの際に管理・メンテナンスが複雑になり、人為的なミスや変更漏れなどが起きる可能性もある。

 こうしたときにオラクルでは仮想プライベート・データベース(Virtual Private Database:VPD)を使って、Viewを使うことなく、行・列レベルでのアクセスコントロールが可能である。VPDではあらかじめ設定したアクセス・ポリシーに従ってSQL文を強制的に書き換える(where句を付加する)動作をする「ファイングレイン・アクセスコントロール」とアクセスコントロールを実施するために必要なユーザーの属性(部署名や職責など)を格納しておく「アプリケーション・コンテキスト」の二つの要素から構成されている。

 ファイングレイン・アクセスコントロールが適用されている表に対してユーザーがアクセスを試みると、データベースはアプリケーション・コンテキストに格納された値を入手し、その値とアクセス・ポリシーに基づいて必要なwhere句をSQL文に付加する。ポリシーはあらかじめPL/SQLで作成し、アクセス制御を実施したい表・ビューなどに適用しておく。またアプリケーション・コンテキストはデフォルトで用意されたユーザ・コンテキストを使うこともできるが、あらかじめ格納したい属性値を決め、値を格納するためのパッケージを作成したうえで独自に定義することもできる。)

 実際にSQLを処理するのはこの後になるため、あたかもはじめから条件句をつけて発行したSQL文であるかのように処理が行われ、その結果の値がユーザー側には返される。従ってユーザーからみると、あたかも自分が発行した(条件句が付加される前の)SQL文に対する結果が返ってきたように見える。これが仮想プライベート・データベースと呼ばれるゆえんである。

仮想プライベートデータベース(VPD)のしくみ
仮想プライベートデータベース(VPD)のしくみ

 またVPDの場合性能に対する影響が非常に小さいことも特徴である。これは通常の処理以外に追加で行う動作はポリシーの参照とSQL文の変更(where句の追加)を1度実行するだけで良いからである。従って検索の場合、検索対象行数が増えるほど、性能に対する影響(VPDを使わなかった場合と比較した場合の比率)は相対的に小さくなっていく。

 具体的な実装方法についてはセキュリティガイドなどを参照されたい。
Oracle Database 2日でセキュリティ・ガイド 11g リリース2(11.2) > Oracle Virtual Private Databaseによるデータ・アクセスの制御

次のページ

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
oracletechアーカイブス!連載記事一覧

もっと読む

この記事の著者

oracletech.jp編集部(オラクルテックジェイピーヘンシュウブ)

oracletech.jpは、オラクル・データベースと関連製品をお使いいただいている皆様、開発に携わっているエンジニアの皆様、オラクル製品を販売いただいている皆様すべてにとって有益な情報源となることを目指しています。エンタープライズ系ITを中心に、製品情報や技術情報からテクノロジー・トレンド、キャンペーンやイベント/セミナー情報まで多岐にわたります。日本オラクルの社員だけでなく...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/3531 2012/02/10 18:08

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング