ページ

2011年4月15日金曜日

◆SQLServerのユーザー認証

SQLServerのユーザー認証方法について覚書として簡単にまとめておく。

認証にはサーバー認証とDB認証の2段階の認証が存在している。

サーバー認証とはインスタンスにログインすること。
この段階ではDB認証を受けていないのでまだDBには個々のアクセス出来ない。
しかし、サーバーの管理作業などはこの状態で可能。
どのような管理作業ができるかはそのユーザーが所属するサーバーロールによる。(サーバーロールとはWindowsドメインで言うところのドメインユーザーグループみたいな物)
sysadminが最上位特権のサーバーロールで、ここに所属しているとすべての作業が可能だ。インストールしたときのユーザーがここに所属しているのが普通かな。
image

DBにアクセスするためにはサーバー認証を通った上でDBにログインする必要がある。
上記画面でサーバーログインユーザーを作り、固定サーバーロールを割り当てた後、ユーザーマッピング欄からDBログインにも追加できるようになっているのでアクセスしたいDBを指定し、適切なデータベースロールを指定すれば良い。image

また、サーバーロールの最上位特権であるsysadminロールは若干特別なロールで、ここに所属するユーザーは全てのDBのdboユーザーにマッピングされる。(dboユーザーは全てのDBに自動的に存在する)
dboユーザーはdb_ownerデータベースロール(データベースロールの最上位特権)に含まれているので結果的にsysadminサーバーロールにユーザーを追加すると、サーバーに対しても全DBに対しても最上位の特権を持つことになる。

そこで、DBを作るときはsysadminサーバーロールに所属するユーザーで作っておけばdboがオーナー(スキーマ?)になるので、テーブル名の指定だけでアクセスできて便利である。

逆にスキーマ分けしたいのであれば、それぞれのDBユーザーに所属するサーバーログインでログインしてからDBを作成すれば良いことになる。

管理者以外の一般ユーザーにはdb_datareaderとdb_datawriterロールを割り当てておけば良いだろう。

0 件のコメント:

コメントを投稿

私が最近チェックした記事