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?

特権および許可

許可によって、データの読み取りや書き込み、ツールの使用など、何らかのアクションを実行できます。許可はリソースと関連付けられて、特権を形成します。このモデルを使用することで、特定のリソースと関連して、特定のアクションを実行できます。

特権の機能

特権によって、リソースが許可に関連付けられます。この関連付けにより、特権を保持しているロールは、データベースに対する読み取りや書き込み、アプリケーションの使用などの特定のアクションを実行できます。使用できる許可は以下のとおりです。

  • Read — データベースなどのリソースのコンテンツを閲覧できますが、それを変更することはできません。

  • Write — データベースなどのリソースのコンテンツを閲覧および変更できます。

  • Use — アプリケーションや Caché サービスなどの実行可能プログラムやツールを実行、またはその他の方法で使用します。

それぞれの許可の意味は、それと組み合わせるリソースによって異なります。許可の名前は、そのフル・ネームまたは先頭の文字で表すことができます。この名前では、大文字と小文字が区別されません。

パブリック許可

リソースごとに、許可をパブリックとして指定できます。これは、リソースに対してこの許可を保持しているすべてのユーザが実質的に同等の扱いになるということです。例えば、%Service_CacheDirect:Use 特権がパブリックであれば、Caché Direct テクノロジを使用してすべてのユーザが Caché に接続できます。同様に、%DB_SALES:Read 特権がパブリックであれば、どのユーザでも %DB_SALES リソースで保護されているデータベースをすべて読み取ることができます。ただし、この例では %DB_SALES:Write 特権がパブリックではないので、これらのデータベースにすべてのユーザが書き込めるわけではありません。

以下のデータベースは既定でパブリックになっています。

既定のパブリック特権
リソース 許可
%DB_CACHE Read
%DB_CACHELIB Read
%DB_CACHETEMP Read, Write
%DB_DOCBOOK Read

特権の確認

Caché には、$SYSTEM.Security.Check という、現在のプロセスで保持されている特権を確認するためのメソッドが用意されています。1 つの引数で構成した形式でこの関数を使用すると、プロセスが特定のリソースに対して保持している特権が示されます。2 つの引数で構成した形式では、特定のリソースに対してプロセスが特権を保持しているかどうかが返されます。

1 つの引数で構成した形式では、リソースに対してプロセスが保持している許可が、コンマ区切りリストで返されます。以下はその例です。

$SYSTEM.Security.Check("%DB_Samples")

プロセスが %DB_Samples に対して Read 許可および Write 許可を保持している場合は、READ,WRITE が返されます。許可名は、必ずすべて大文字のフルネームで返されます。プロセスがリソースに対して許可を保持していない場合、この関数では空文字列が返されます。

2 つの引数で構成した形式では、プロセスが特定の特権を保持しているかどうかを示す True または False の値 (1 または 0) が返されます。以下はその例です。

$SYSTEM.Security.Check("%DB_Samples", "WRITE")

プロセスが %DB_Samples リソースに対して Write 許可を保持している場合は 1 が返されます。

以下のように、許可のリストを指定してこの関数を呼び出すこともできます。

$SYSTEM.Security.Check("%DB_Samples", "WRITE,READ")

ここで要求されたすべての許可をプロセスが保持している場合は 1、それ以外の場合は 0 が返されます。以下のように、確認する特権の最初の文字のみを使用することもできます。

$SYSTEM.Security.Check("%DB_Samples", "W,R")

このメソッドの一般的な動作は以下のとおりです。

  • パブリックなリソース特権に対しては、プロセスがその特権を明示的に保持しているかどうかに関係なく、必ず 1 が返されます。

  • 許可名では、大文字と小文字が区別されません。

  • 許可名は、上の例のようにフルネームで記述できるほか、先頭の文字のみに省略して記述することもできます。また、許可名では大文字と小文字が区別されません。したがって、“WRITE,READ”、“W,R”、および “R,Write” はすべて同じ許可を指定していることになります。

特権の変更が有効になるタイミング

Caché は、セキュリティ設定が格納されたデータベースを永続的に保持しています。Caché が起動されると、その情報が抽出され共有メモリのセグメントに配置されるため、統合化された設定への迅速なアクセスが可能になります。プロセスが実行されている間、そのプロセスに付与されている特権のキャッシュが独自に保持されます。これは、新しい特権が必要になり認可されると更新されます。

ロールや特権などを編集すると、その情報の永続コピーに変更が反映されます。この変更は、ユーザまたはアプリケーションの次回の認証時に認識されます。

FeedbackOpens in a new tab