ASP.NET フォーム認証向けデータベースの権限設定

使う場合には以下のようにするだけ。

  • 認証するだけなら、データベースユーザに対して aspnet_Membership_BasicAccess ロールを割り当てる
  • ユーザの作成やパスワード変更も必要であれば、データベースユーザに対して aspnet_Membership_FullAccess ロールを割り当てる

これを実現するために SQL Server に対して行われている設定を調べてみた。単純ではあるが権限設定のベストプラクティスとして参考になると思う。

  • ロールの作成 以下は Membership での例
    • aspnet_Membership_FullAccess を作成
    • aspnet_Membership_ReportingAccess メンバとして aspnet_Membership_FullAccess を持つ
    • aspnet_Membership_BasicAccess メンバとして aspnet_Membership_FullAccess を持つ
  • 機能を実現する各ストアドプロシージャに対して、EXECUTE 実行可能な ロール の割り当てを行う
  • レポーティングに必要な VIEW を定義し、それに対して SELECT 可能な *_ReportingAccess ロールの割り当てを行う
  • テーブルに対してはロールの割り当ては行わない

この実装においては命名規則も一貫している。

  • スキーマはすべて dbo
  • ビューの場合は一番先頭に vw_ を付与 (aspnet_ よりも前)
  • 先頭に aspnet_ を付与
  • その先は Membership, Roles といった機能グループ名、最後に機能を表す名称

一応ロールと同一名称のスキーマの定義がされているが見たところ利用はされていないようだ。aspnetdb の対象は SQL Server 2000 も含まれているために dbo 以外のスキーマを使うのが困難だったと思われる。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。