検索
連載

ASP.NETの利点を引き出すODP.NET活用法ODP.NETファーストステップ(2)(3/4 ページ)

Windowsプラットフォームにおけるアプリケーション開発は、.NETが主流となりつつある。本連載はVisual Basicから.NETへの移行を考えているOracleアプリケーション開発者に向けて、「Oracle Data Provider for .NET」を使うメリットや独自機能、新しいプログラミング・スタイルなどを解説する。(編集局)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

プロキシ認証で柔軟なアクセス制御を実現する

 ASP.NETもしくはXML Webサービスを利用した3層アプリケーションでは、通常中間層から共通のユーザーでデータベースに接続しますが、これでは個々のユーザーごとにデータベースへのアクセス制御や監査は行えません。プロキシ認証を利用すると、接続のためのユーザーは共有しますが、データベースのアクセス権限などは、個々のユーザーごとに実施することが可能になります。

図4 3層アプリケーションでのコネクションの共有
図4 3層アプリケーションでのコネクションの共有

ASP.NETでプロキシ認証の設定

 Visual Studio .NETでプログラミングする前に、データベース上でプロキシ認証を利用するための設定が必要になります。データベースの設定に関しては、下記のスクリプトをダウンロードし、SQL*Plusなどのツールから実行してください。

 ・プロキシ認証を利用するためのスクリプト

 スクリプトを実行すると、以下のユーザーが作成されます。

ユーザー名 説明
custuser テーブルなどオブジェクトを所有しているユーザー
custproxy データベースに接続するためのプロキシユーザー
staff custuserが所有しているオブジェクトに対して参照権限のみ付与されたユーザー
manager custuserが所有しているオブジェクトに対して参照/更新権限が付与されたユーザー
表4 スクリプトによって作成されるユーザー

プロキシ認証を利用した接続

 ASP.NETからプロキシ認証を利用して接続するには、以下のような接続文字列を使用します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 それでは、staffユーザーで更新を行ってみます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 staffユーザーはcustomerテーブルに対してSELECT権限しかないので、以下のようなエラーが出力されます。

図5 権限がないために発生したエラー画面(クリックすると拡大します)
図5 権限がないために発生したエラー画面(クリックすると拡大します)

 次にmanagerユーザーに変更し、customerテーブルに対して更新処理を行ってみます。リスト11/リスト12のConnnectionStringを以下のように修正して実行します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 managerユーザーでは正常に更新されるのが確認できると思います。このようにプロキシ認証を行うと、データベースの権限をアプリケーションで享受可能になります。データベースで認証された利用者でなければデータへのアクセス権限がないので、より安全な接続環境を実現できます。

 また、データベース・ユーザーごとに監査を行うことが可能になります。Oracleのセキュリティに関する情報は、OTN(Oracle Technology Network)の「Documentation Library」で詳細な手順を説明していますので、そちらを参照してください。

 今回のサンプルではstaffユーザーでアクセスする際に、OracleのエラーがそのままWebフォーム上に表示されていますが、実際のアプリケーションではエラー情報を取得して適切に対処する必要があります。その場合は、OracleExceptionクラスを利用します。OracleExceptionで提供される、メンバー/メソッド/プロパティの一覧は、OTNの「Oracle Data Provider for .NET開発者ガイド」にて詳細に説明してありますので、そちらを参照してください。(次ページへ続く)

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る