Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの設定 » ユーザ ID、権限、パーミッションの管理 » 高度なセキュリティを実現するためのビューとプロシージャの使い方

 

セキュリティを調整するためにビューを使用する

「ビュー」は、ベース・テーブルから選択したローとカラムを含む、計算されたテーブルです。ビューは、ユーザにテーブルの一部分だけに対するアクセス権を与える場合に便利です。その部分はローまたはカラムで定義します。たとえば、ユーザに employee テーブルの Salary カラムが見えないようにしたり、ユーザが自分で作成したローだけを見られるようにしたりできます。

例 1

Sales Manager は、自分の部署の営業部員に関するデータベースの情報にアクセスする必要があります他部署の従業員の情報にアクセスしなければならない理由はありません。

例として、Sales Manager のユーザ ID を作成してから必要な情報を得るためのビューを作成し、Sales Manager のユーザ ID に適切なパーミッションを与える手順を次に示します。

  1. GRANT 文を使用して、新しいユーザ ID を作成します。DBA 権限のあるユーザとしてログインして、次の文を実行します。

    CONNECT DBA
    IDENTIFIED by sql;
    
    CREATE USER SalesManager
    IDENTIFIED BY sales;
  2. 営業部の従業員だけを見るビューを次のように定義します。

    CREATE VIEW EmployeeSales AS
      SELECT EmployeeID, GivenName, Surname
      FROM Employees
      WHERE DepartmentID = 200;

    テーブル参照を所有者で修飾することによって、同じ名前のテーブルの参照と混同されるおそれがなくなります。

  3. SalesManager にビューを見るパーミッションを与えます。

    GRANT SELECT
    ON EmployeeSales
    TO SalesManager;

    まったく同じコマンドを使用して、ビューおよびテーブルに対するパーミッションを与えます。

例 2

次の例では、Sales Manager が注文のまとめを確認できるようにするビューを作成します。このビューは、複数のテーブルからの情報を必要とします。

  1. ビューを作成します。

    CREATE VIEW OrderSummary AS
      SELECT OrderDate, Region, SalesRepresentative, CompanyName
      FROM SalesOrders
        KEY JOIN Customers;
  2. Sales Manager にこのビューを見るパーミッションを与えます。

    GRANT SELECT
    ON OrderSummary
    TO SalesManager;
  3. プロセスが正常に動作したことをチェックするには、ユーザ ID SalesManager に接続し、作成したビューを見ます。

    CONNECT SalesManager
    IDENTIFIED BY sales;
    SELECT *
    FROM DBA.EmployeeSales;
    SELECT *
    FROM DBA.OrderSummary;

Sales Manager には基本となるテーブルを見るパーミッションは与えられていません。次のコマンドはパーミッション・エラーを起こします。

SELECT * FROM GROUPO.Employees;
SELECT * FROM GROUPO.SalesOrders;
ビューに対するその他のパーミッション

前述の例では、SELECT パーミッションを調整するためのビューの使用法を説明しました。同じ方法で、INSERT、DELETE、UPDATE の各パーミッションをビューに付与できます。