ASP.NETの利点を引き出すODP.NET活用法:ODP.NETファーストステップ(2)(3/4 ページ)
Windowsプラットフォームにおけるアプリケーション開発は、.NETが主流となりつつある。本連載はVisual Basicから.NETへの移行を考えているOracleアプリケーション開発者に向けて、「Oracle Data Provider for .NET」を使うメリットや独自機能、新しいプログラミング・スタイルなどを解説する。(編集局)
プロキシ認証で柔軟なアクセス制御を実現する
ASP.NETもしくはXML Webサービスを利用した3層アプリケーションでは、通常中間層から共通のユーザーでデータベースに接続しますが、これでは個々のユーザーごとにデータベースへのアクセス制御や監査は行えません。プロキシ認証を利用すると、接続のためのユーザーは共有しますが、データベースのアクセス権限などは、個々のユーザーごとに実施することが可能になります。
ASP.NETでプロキシ認証の設定
Visual Studio .NETでプログラミングする前に、データベース上でプロキシ認証を利用するための設定が必要になります。データベースの設定に関しては、下記のスクリプトをダウンロードし、SQL*Plusなどのツールから実行してください。
スクリプトを実行すると、以下のユーザーが作成されます。
ユーザー名 | 説明 |
---|---|
custuser | テーブルなどオブジェクトを所有しているユーザー |
custproxy | データベースに接続するためのプロキシユーザー |
staff | custuserが所有しているオブジェクトに対して参照権限のみ付与されたユーザー |
manager | custuserが所有しているオブジェクトに対して参照/更新権限が付与されたユーザー |
表4 スクリプトによって作成されるユーザー |
プロキシ認証を利用した接続
ASP.NETからプロキシ認証を利用して接続するには、以下のような接続文字列を使用します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
それでは、staffユーザーで更新を行ってみます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
staffユーザーはcustomerテーブルに対してSELECT権限しかないので、以下のようなエラーが出力されます。
次に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.