Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ユーザ、ロール、特権

Caché SQL は、ユーザと、ユーザに付与されている特権を通じてセキュリティを提供します。Caché SQL は、ODBC、JDBC、ダイナミック SQL、および SQL シェル・インタフェースの特権チェックを実行します。埋め込み SQL 文は、特権チェックを実行しません。これは、埋め込み SQL 文を使用する前に、その埋め込み SQL を使用するアプリケーションで特権をチェックしていることが前提となっているからです。

以下の項目について説明します。

ユーザ

Caché SQL ユーザは、Caché セキュリティで定義されているユーザと同じです。SQL コマンドまたは管理ポータルを使用してユーザを定義できます。

  • SQL でユーザを作成するには、CREATE USER 文を使用します。これによって、ユーザ名とユーザ・パスワードのみが作成されます。ユーザに特権とロールを割り当てるには、GRANT 文を使用する必要があります。既存のユーザ定義を変更するには、ALTER USER 文と DROP USER 文を使用します。

  • 管理ポータルの [システム管理][セキュリティ] を選択し、[ユーザ] を選択します (システム, セキュリティ管理, ユーザ)。ページ上部の [新規ユーザ作成] ボタンをクリックします。システム, セキュリティ管理, ユーザ, ユーザ編集 ページの [一般] タブが表示されます。ここで、ユーザ名、ユーザ・パスワード、およびその他のパラメータを指定できます。ユーザを作成すると、その他のタブが使用可能になります。これらのタブでは、ユーザのロール、ユーザの一般的な SQL 特権、ユーザのテーブルレベルの特権、使用可能なビュー、および実行可能なストアド・プロシージャを指定できます。

ユーザに SQL テーブルの特権または一般的な SQL 特権がある場合、ユーザの [ロール] タブで付与または削除されるロールは、ODBC などの SQL ベースのサービスを使用したテーブルへのユーザ・アクセスには影響しません。SQL ベースのサービスでは、テーブルベースの特権がリソースベースの特権よりも優先されるためです。

ロール

システム, セキュリティ管理, ロール ページには、Caché インスタンスのロール定義のリストが含まれています。特定のロールの詳細を表示または変更するには、そのロールの [編集] リンクを選択します。表示された システム, セキュリティ管理, ロール, ロール編集 ページには、ロール特権と、その特権を持つユーザまたはロールに関する情報が含まれています

[一般] タブには、Caché セキュリティ・リソースに対するロールの特権が示されます。ロールに SQL 特権のみが含まれている場合、[一般] タブのリソース・テーブルには、ロールの特権として “定義なし” が示されます。

[SQL権限] タブには、Caché SQL リソースに対するロールの特権が示されます。ここでネームスペースのドロップダウン・リストを使用すると、各ネームスペースのリソースを表示できます。特権はネームスペース別に示されているため、特定のネームスペースで特権を持たないロールのリストは “なし” と表示されます。

Note:

特権の定義にはロールを使用し、それらのロールに特定のユーザを指定してください。これには、以下のような利点があります。

  1. SQL エンジンにとって、各ユーザのエントリを確認するより、比較的小規模なロール・データベースを確認することにより特権のレベルを決定する方が、非常に効率的です。

  2. 多数の個人ユーザ設定を持つシステムに比べ、小規模なロールの集合を使用したシステムの方が、管理が容易です。

例えば、あるアクセス特権を持つ “ACCOUNTING” というロールを定義するとします。Accounting Department (経理部) の人員が増加するにつれ、新しいユーザを定義し、ACCOUNTING ロールに追加します。ACCOUNTING へのアクセス権を変更する必要がある場合、1 回変更を加えれば、その変更が経理部のすべてのメンバに対し自動的に適用されます。

ロールには、他のロールを含めることができます。例えば、ACCOUNTING ロールには BILLINGCLERK ロールを含めることができます。ACCOUNTING ロールを付与されたユーザは、ACCOUNTING ロールと BILLINGCLERK ロールの両方の特権を持つことになります。

CREATE USERCREATE ROLEALTER USERGRANTDROP USER、および DROP ROLE の各 SQL コマンドを使用してユーザおよびロールを定義することもできます。

特権

ユーザまたはロールには特権が割り当てられます。Caché SQL は、管理とオブジェクトという 2 つのタイプの特権をサポートしています。

管理特権は、テーブルの作成許可などの、オブジェクトのタイプの作成、変更、および削除を管理します。また、INSERTUPDATEINSERT OR UPDATE、または DELETE の実行時にユーザが %NOCHECK、%NOINDEX、%NOLOCK、または %NOTRIGGER 制限を適用できるかどうかを決定します。TRUNCATE TABLE を実行するユーザには、%NOTRIGGER 管理特権を割り当てる必要があります。

オブジェクト特権は、(テーブル、ビュー、列、またはストアド・プロシージャという SQL 用語での) 特定の名前付きオブジェクトに対するアクセスを管理します。テーブルレベルのオブジェクト特権では、テーブルまたはビューのすべての列のデータにアクセス (%ALTER、DELETE、SELECT、INSERT、UPDATE、EXECUTE、REFERENCES) できます。現在存在している列と今後追加される列の両方が対象です。列レベルのオブジェクト特権では、テーブルまたはビューの指定した列のデータのみにアクセスできます。RowID や Identity (ID) などのシステム定義の値を使用して列に列レベルの特権を割り当てる必要はありません。ストアド・プロシージャ・オブジェクト特権では、プロシージャの EXECUTE 特権の割り当てが指定のユーザまたはロールに対して許可されます。詳細は、"GRANT コマンド" を参照してください。

以下のようにして、特権を与えます。

  • 管理ポータルを使用してインタラクティブに与える。[システム管理] から [セキュリティ] を選択し、[ユーザ] (システム, セキュリティ管理, ユーザ) または[ロール] (システム, セキュリティ管理, ロール) を選択します。目的のユーザまたはロールを選択し、[SQL 権限] タブを選択します。

  • SQL から、GRANT コマンドを使用します。

  • ObjectScript の場合は、%SYSTEM.SQL.GrantObjPriv()Opens in a new tab メソッドを使用してテーブルまたはビューに対するオブジェクト特権を付与できます。

特権はネームスペース固有のものです。

FeedbackOpens in a new tab