Oracle Serverのロールは、「権限のグループ」です(図1)。一方、SQL Serverのロールは、「ユーザーのグループ」です(図2)。SQL Serverでロールに権限を付与すると、そのロールに属しているユーザーは権限を使用できるようになり、反対に権限を取り消すとロールに属するユーザー全員が権限を使用できなくなります。
Oracle ServerでもSQL Serverでも、結果としてやっていることは同じと言えるでしょう。セキュリティ管理を容易にするためにロールを使うのです。
SQL Serverのロールには、次の4種類があります。
また、1と2には次のロールがあります。「固定〜」という名前のとおり、私たちユーザーが変更できないロールですが、publicのみ例外で変更が可能です。publicはOracle ServerでいうGRANTステートメントのPUBLICと同じで、データベースユーザー全員が属します。
SQL Serverでは、権限の「許可(GRANT)」と「取り消し(REVOKE)」以外に、「拒否(DENY)」があります。ユーザーが操作を許可されるのは、次の2つの条件を満たしたときです。
この条件を利用すると、たとえば【図3】のケースでUSER1のみTABLE Aにはアクセスさせたくない場合は、ロールにはTABLE A、B、Cを許可し、USER1をTABLE Aに対しては拒否することで実現できます。
なお、同じことをOracle Serverで実現するには、USER1からロールを取り消し、別途、USER1に対してTABLE BとTABLE Cの権限を許可する必要があり、処理が複雑になってしまいます。SQL Serverのロールの特性をよく理解して、このような便利な使い方を覚えれば、セキュリティ管理の負荷をぐっと軽減できるはずです。ぜひ、活用してください。