SQLServerのユーザー認証方法について覚書として簡単にまとめておく。
認証にはサーバー認証とDB認証の2段階の認証が存在している。
サーバー認証とはインスタンスにログインすること。
この段階ではDB認証を受けていないのでまだDBには個々のアクセス出来ない。
しかし、サーバーの管理作業などはこの状態で可能。
どのような管理作業ができるかはそのユーザーが所属するサーバーロールによる。(サーバーロールとはWindowsドメインで言うところのドメインユーザーグループみたいな物)
sysadminが最上位特権のサーバーロールで、ここに所属しているとすべての作業が可能だ。インストールしたときのユーザーがここに所属しているのが普通かな。
DBにアクセスするためにはサーバー認証を通った上でDBにログインする必要がある。
上記画面でサーバーログインユーザーを作り、固定サーバーロールを割り当てた後、ユーザーマッピング欄からDBログインにも追加できるようになっているのでアクセスしたいDBを指定し、適切なデータベースロールを指定すれば良い。
また、サーバーロールの最上位特権であるsysadminロールは若干特別なロールで、ここに所属するユーザーは全てのDBのdboユーザーにマッピングされる。(dboユーザーは全てのDBに自動的に存在する)
dboユーザーはdb_ownerデータベースロール(データベースロールの最上位特権)に含まれているので結果的にsysadminサーバーロールにユーザーを追加すると、サーバーに対しても全DBに対しても最上位の特権を持つことになる。
そこで、DBを作るときはsysadminサーバーロールに所属するユーザーで作っておけばdboがオーナー(スキーマ?)になるので、テーブル名の指定だけでアクセスできて便利である。
逆にスキーマ分けしたいのであれば、それぞれのDBユーザーに所属するサーバーログインでログインしてからDBを作成すれば良いことになる。
管理者以外の一般ユーザーにはdb_datareaderとdb_datawriterロールを割り当てておけば良いだろう。
0 件のコメント:
コメントを投稿