ユーザ・アカウントの管理
既存のユーザ・アカウントのリストを確認するには、ポータルで [ユーザ] ページ ([システム管理]→[セキュリティ]→[ユーザ]) を表示します。このページでは、"ユーザ・アカウントのプロパティ" で詳しく説明している以下のフィールドに情報が表示されます。
-
[ユーザ] — このユーザ・アカウントの一意の識別子。
-
[フルネーム] — このアカウントの表示可能な名前。
-
[有効] — このユーザ・アカウントが現在有効化されているかどうか。
-
[ネームスペース] (既定のネームスペース) — ターミナル・タイプの接続で使用される最初のネームスペース。
-
[ルーチン] (既定のルーチン) — ターミナル・タイプの接続で実行される最初のルーチン。
-
[タイプ] — ユーザ・アカウントの種類。これは使用している認証メカニズムとロール割り当てメカニズムによって決まります。
[ユーザ] ページでは次のアクションを実行できます。
ユーザ・アカウントの新規作成
ユーザ・アカウントを新規作成するには、以下の手順に従います。
-
管理ポータルのホーム・ページで、[ユーザ] ページ ([システム管理]→[セキュリティ]→[ユーザ]) に移動します。
-
[ユーザ] ページで、[新規ユーザ作成] を選択します。[ユーザ編集] ページの [一般] タブが表示され、ここでユーザ・アカウントを作成および構成します。
-
[ユーザ編集] ページで、"ユーザ・アカウントのプロパティ" で説明したユーザ・プロパティの値を設定します。
Note:
類似の特性を持つ複数のアカウントを簡単に作成するには、[コピー元] フィールドを使用してプロセスを開始します。[コピー元] ドロップダウン・メニューから既存のユーザ・アカウントを選択して、以下のフィールドに、選択したアカウントの値を入力します。
-
[フルネーム]
-
[有効期限]
-
[デフォルト・ネームスペース]
-
[デフォルト Tag^Routine]
-
[保存] ボタンをクリックすると、新規ユーザ・アカウントが作成されます。
ユーザ・アカウントを作成した後、その特性を編集できます。
既存のユーザ・アカウントの編集
ユーザ・アカウントを作成した後、その基本プロパティを編集できます。
-
管理ポータルのホーム・ページで、[ユーザ] ページ ([システム管理]→[セキュリティ]→[ユーザ]) に移動します。
-
[ユーザ] ページには、ユーザ・アカウントのテーブルがあります。既存のアカウントを編集するには、テーブルからアカウントの名前を選択します。[ユーザ編集] ページの [一般] タブが表示され、ここでユーザ・アカウントを作成および構成します。
-
[ユーザ編集] ページで、"ユーザ・アカウントのプロパティ" で説明したプロパティの値を変更できます。
-
[保存] ボタンをクリックすると、ユーザ・アカウントの新しい値が保存されます。
このページにある他のタブでは、ユーザ・アカウントの以下の特性を変更することもできます。
Note:
ユーザ・アカウントに対する変更は、ユーザがログアウトし、改めてログインした後で初めて有効になります。
ユーザのロールの変更
[ユーザ編集] ページの [ロール] タブでは、以下の手順でユーザ・アカウントをロールに割り当てたり、ユーザ・アカウントをロールから削除したりできます。
-
ユーザ・アカウントをロールに割り当てるには、まずそのロールを [利用可能] リストから [選択済み] リストに移動します (ロールをダブルクリックするか、ロールを選択して一重の右矢印をクリックします)。次に [割り当てる] ボタンをクリックすると、そのユーザ・アカウントがロールに割り当てられます。
-
すべてのロールにユーザ・アカウントを割り当てるには、[利用可能] リストから [選択済み] リストを指している二重矢印をクリックします。次に [割り当てる] ボタンをクリックすると、このユーザ・アカウントがすべてのロールに割り当てられます。
Note:
すべてのロールにユーザ・アカウントを割り当てる場合、事前定義の %SecureBreak ロールも含まれます。これはユーザ・アカウントの機能を限定します (拡張しません)。ユーザ・アカウントを %SecureBreak ロールに割り当てると、InterSystems IRIS の保護されたデバッグ・シェルが有効になります。これは、ユーザが発行できるコマンドを制限します。これは他の領域でも予期しない結果をもたらす場合があります。
-
ロールからユーザ・アカウントを削除するには、ロール名の右側にある [削除] ボタンをクリックします。
-
すべてのロールからユーザ・アカウントを削除するには、現在割り当てられているロールが表示されたテーブルの下にある [すべて削除] をクリックします (このボタンは、ユーザ・アカウントが複数のロールに割り当てられている場合のみ表示されます)。
ユーザの SQL 関連オプションの変更
どのユーザ・アカウントに対しても、以下の SQL 関連の特性を付与または削除できます。
一般的な SQL 特権
[ユーザ編集] ページの [SQL権限] タブで、ユーザ・アカウントの SQL 特権を追加または削除できます。
-
ユーザ・アカウントに特権を追加するには、まずその特権を [利用可能] リストから [選択済み] リストに移動します (特権をダブルクリックするか、特権を選択して一重の右矢印をクリックします)。次に [割り当てる] ボタンをクリックすると、その特権がアカウントに与えられます。追加された特権を他のユーザ・アカウントに付与できる特権も追加するには、[利用可能] リストの下にある該当のボタンをクリックします。
-
ユーザ・アカウントにすべての特権を追加するには、[利用可能] リストから [選択済み] リストを指している二重矢印をクリックします。次に [割り当てる] ボタンをクリックすると、これらの特権がユーザ・アカウントに与えられます。追加された特権を他のユーザ・アカウントに付与できる特権も追加するには、[利用可能] リストの下にある該当のボタンをクリックします。
-
ユーザ・アカウントから特権を削除するには、特権の名前の右にある [削除] リンクをクリックします。
-
すべての特権をユーザ・アカウントから削除するには、現在割り当てられている特権が表示されたテーブルの下にある [すべて削除] ボタンをクリックします。
利用できる特権は、以下のとおりです。
-
%ALTER _TABLE — 指定されたネームスペースについて、ユーザは ALTER TABLE コマンドを実行できます。
-
%ALTER _VIEW — 指定されたネームスペースについて、ユーザは ALTER VIEW コマンドを実行できます。
-
%CREATE_FUNCTION — 指定されたネームスペースについて、ユーザは CREATE FUNCTION コマンドを実行できます。
-
%CREATE_METHOD — 指定されたネームスペースについて、ユーザは CREATE METHOD コマンドを実行できます。
-
%CREATE_PROCEDURE — 指定されたネームスペースについて、ユーザは CREATE PROCEDURE コマンドを実行できます。
-
%CREATE_QUERY — 指定されたネームスペースについて、ユーザは CREATE QUERY コマンドを実行できます。
-
%CREATE_TABLE — 指定されたネームスペースについて、ユーザは CREATE TABLE コマンドを実行できます。
-
%CREATE_TRIGGER — 指定されたネームスペースについて、ユーザは CREATE TRIGGER コマンドを実行できます。
-
%CREATE_VIEW — 指定されたネームスペースについて、ユーザは CREATE VIEW コマンドを実行できます。
-
%DROP_FUNCTION — 指定されたネームスペースについて、ユーザは DROP FUNCTION コマンドを実行できます。
-
%DROP_METHOD — 指定されたネームスペースについて、ユーザは DROP METHOD コマンドを実行できます。
-
%DROP_PROCEDURE — 指定されたネームスペースについて、ユーザは DROP PROCEDURE コマンドを実行できます。
-
%DROP_QUERY — 指定されたネームスペースについて、ユーザは DROP QUERY コマンドを実行できます。
-
%DROP_TABLE — 指定されたネームスペースについて、ユーザは DROP TABLE コマンドを実行できます。
-
%DROP_TRIGGER — 指定されたネームスペースについて、ユーザは DROP TRIGGER コマンドを実行できます。
-
%DROP_VIEW — 指定されたネームスペースについて、ユーザは DROP VIEW コマンドを実行できます。
テーブルの特権
[ユーザ編集] ページの [SQLテーブル] タブで、ユーザ・アカウントに対してテーブル関連 SQL 特権を追加または削除できます。
-
ページ上部近くにあるドロップダウンから、該当のネームスペースを選択します。そのネームスペースのテーブルのリストが表示されます。
-
テーブルの特権を変更するには、そのテーブルの行にある [編集] ボタンをクリックします。特権を変更するためのウィンドウが表示されます。
-
このウィンドウで、以下の項目のチェック・ボックスにチェックを付けるか、チェックを外します。
-
以上の選択の後、[適用] ボタンをクリックすると、テーブルに新しい特権が設定されます。
ビューに対する特権
[ユーザ編集] ページの [SQLビュー] タブで、ユーザ・アカウントに対してビュー関連 SQL 特権を追加または削除できます。
ビューの特権を追加する手順は、以下のとおりです。
-
ページ上部近くにあるドロップダウンから、該当のネームスペースを選択します。そのネームスペースのビューのリストが表示されます。
-
ビューの特権を変更するには、そのビューの行にある [編集] ボタンをクリックします。特権を変更するためのウィンドウが表示されます。
-
このウィンドウで、以下の項目のチェック・ボックスにチェックを付けるか、チェックを外します。
-
以上の選択の後、[適用] ボタンをクリックすると、テーブルに新しい特権が設定されます。
ストアド・プロシージャの特権
[ユーザ編集] ページの [SQLプロシージャ] タブで、ストアド・プロシージャに関連する、ユーザ・アカウントの SQL 特権を追加または削除できます。
ストアド・プロシージャの特権を追加する手順は、以下のとおりです。
-
ページ上部近くにあるドロップダウンから、該当のネームスペースを選択します。そのネームスペースのストアド・プロシージャのリストが表示されます。
-
このウィンドウの下にある [追加] ボタンをクリックすると、[プロシージャ権限を...に付与] ダイアログが表示されます。
-
このダイアログの上部にあるドロップダウンから、追加するプロシージャを含むスキーマを選択します。ページの左側部分にある [使用可能] ウィンドウに、このスキーマのプロシージャのリストが表示されます。
-
1 つ以上のプロシージャを、[選択済み] ウィンドウに移動します。[EXECUTE] チェック・ボックスにチェックが付いていることを確認します。これによって、ストアド・プロシージャを実行する特権を、このユーザ・アカウントが保持できるようになります。
-
必要に応じ、この特権を他のユーザ・アカウントに与える機能をこのユーザに与えることができます。この処理を実行するには、このページの下部近くにある [このユーザに Grant 権限を付与する場合はここをチェックします。] ボックスにチェックを付けます。
-
[適用] ボタンをクリックすると、目的の特権がユーザ・アカウントに与えられます。
ユーザ・アカウントのストアド・プロシージャの特権を削除する手順は、以下のとおりです。
-
ページ上部近くにあるドロップダウンから、該当のネームスペースを選択します。そのネームスペースのストアド・プロシージャのリストが表示されます。
-
ストアド・プロシージャの特権を変更するには、そのテーブルの行にある [編集] ボタンをクリックします。特権を変更するためのページが表示されます。
-
表示されたページで、[EXECUTE] チェック・ボックスのチェックを外し、[このユーザに Grant 権限を付与する場合はここをチェックします。] チェック・ボックスを目的に応じて設定します。
-
[適用] ボタンをクリックすると、ユーザ・アカウントの目的の特権が変更されます。
ユーザ・プロファイルの表示
ユーザ・プロファイルには、ユーザ・アカウントが割り当てられているロールやユーザが最後にログインした日時など、ユーザ・アカウントに関するセキュリティ情報が含まれます。ユーザ・プロファイルを表示する手順は以下のとおりです。
-
管理ポータルのホーム・ページで、[ユーザ] ページ ([システム管理]→[セキュリティ]→[ユーザ]) に移動します。
-
[ユーザ] ページで、そのユーザに対応する行の [プロファイル] をクリックします。ユーザ・プロファイルが表示されます。
また、ユーザ・アカウントの [ユーザ編集] ページが表示されている場合は、ページの左上にある [プロファイル] をクリックします。
ユーザ・プロファイルの一部として、以下のプロパティが表示されます。
ユーザ・プロファイルのプロパティ
プロパティ名 |
プロパティの説明 |
名前 |
一意のユーザ識別子。@ を除くあらゆる文字を使用できます。@ はドメインを識別するために使用します。これは [ユーザ編集] ページで編集できます。 |
フルネーム |
このユーザ・アカウントの表示可能な名前。これは [ユーザ編集] ページで編集できます。 |
ロール |
ユーザ・アカウントに割り当てられているロールのコンマ区切りリスト。これらは [ユーザ編集] ページの [ロール] タブで編集できます。 |
最終パスワード変更 |
ユーザ・アカウントが最後にパスワードを変更した日付と時刻。 |
最終ログイン |
前回正常にログインした日時。まだ正常にログインしていない場合は 0 です。読み取り専用。 |
最終ログイン・デバイス |
ユーザが前回ログインしたログイン元のホストの IP アドレス。 |
不正ログイン試行 |
前回の正常なログイン以降に発生した、不正なログインの試行回数。読み取り専用。 |
最終不正ログイン |
前回行われた不正なログイン試行の日時。読み取り専用。 |
最終不正ログイン・デバイス |
ユーザが前回のログインの試行に失敗したときのログイン元ホストの IP アドレス。 |
前回のログイン失敗の理由 |
前回行われた無効なログイン試行で発生したエラー。読み取り専用。 |
アカウント作成日時 |
ユーザ・アカウントが作成された日時。読み取り専用。 |
アカウント作成者のユーザ名 |
アカウントを作成したユーザに関連付けられたアカウント名。読み取り専用。 |
アカウントの最終変更日時 |
前回行われたアカウント変更の日時。読み取り専用。 |
最終アカウント変更ユーザ名 |
前回アカウントを変更したユーザに関連付けられたアカウント名。読み取り専用。 |
アカウントの最終変更情報 |
アカウントに関して前回変更したプロパティのリスト。読み取り専用。 |
ユーザ・アカウントの無効化/有効化
ユーザ・アカウントを無効化/有効化できます。例えば、アカウントを無効化して一時的に利用不可にすることができます。こうすると、後でそのアカウントを有効にする際にプロパティやロールなどを再構築する必要がありません。
ユーザ・アカウントを無効化または有効化するには、以下の手順を実行します。
-
管理ポータルのホーム・ページで、[ユーザ] ページ ([システム管理]→[セキュリティ]→[ユーザ]) に移動します。
-
[ユーザ] ページで、無効化/有効化するユーザ・アカウントの名前をクリックします。そのユーザの [ユーザ編集] ページの [一般] タブが表示されます。
-
[ユーザ編集] ページで、[ユーザ有効] フィールドをクリアします。
-
[保存] をクリックすると、新しい状態でユーザ・アカウントが保存されます。
ユーザ・アカウントの削除
ユーザ・アカウントを削除する方法は、以下のとおりです。
-
管理ポータルのホーム・ページで、[ユーザ] ページ ([システム管理]→[セキュリティ]→[ユーザ]) に移動します。
-
[ユーザ] ページで、削除するユーザ・アカウントの行にある [削除] ボタンを選択します。
-
操作を確認するダイアログが表示されます。ユーザ・アカウントを削除する場合は [OK] をクリックし、それ以外の場合は [キャンセル] をクリックします。
事前定義のユーザ・アカウント
InterSystems IRIS の各インスタンスには、自動的に以下のアカウントが作成されます。
事前定義のユーザ・アカウント
ユーザ名 |
割り当てられたロール |
目的 |
Admin |
%Manager |
既定の管理者アカウント。このアカウントは、すべてのインターシステムズ製品のすべてのインスタンスに対して存在し、インスタンスの管理をサポートします。プロダクションに移行する前にこのアカウントのパスワードを初期値から変更することをお勧めします。 |
CSPSystem |
(なし) |
通常のインスタンスおよびロック・ダウン・インスタンスのためにインスタンス認証を通じて InterSystems IRIS に接続するときの Web ゲートウェイを表す既定のアカウント。プロダクションに移行する前にこのアカウントのパスワードを初期値から変更することをお勧めします。
Note:
インスタンスでこのユーザのパスワードを変更する場合は、Web ゲートウェイでもパスワードを変更する必要があります。
|
IAM |
IAM_API |
InterSystems API Manager (IAM) のライセンスを InterSystems IRIS から取得するために必要な既定のアカウント。IAM ユーザを使用するには、IAM ユーザを有効化してパスワードを変更する必要があります。IAM ユーザの設定は、一般的に IAM の設定Opens in a new tabの一部です。 |
SuperUser |
%All |
利用できるすべての特権を持つ既定のアカウント。このアカウントは、すべてのインターシステムズ製品のすべてのインスタンスに対して存在し、製品のすべての側面に完全にアクセスすることが可能になります。プロダクションに移行する前にこのアカウントのパスワードを初期値から変更することをお勧めします。 |
UnknownUser |
%All (最小のセキュリティ)、またはなし (通常のセキュリティ、またはロック・ダウン・セキュリティ) |
非ログイン・ユーザの既定のアカウント |
_PUBLIC |
(なし) |
すべてのユーザ (ログイン・アカウント以外) に与えられる特権のセット |
_SYSTEM |
%All |
既定の SQL アカウント。このアカウントは、すべてのインターシステムズ製品のすべてのインスタンスに対して存在し、SQL アクセスを提供します。プロダクション・システムではこのアカウントを無効にすることをお勧めします。 |
_Ensemble |
%All |
相互運用性マネージャ (ログイン・アカウントではない)。InterSystems IRIS インスタンスのみ。 |
HS_Services |
%HS_ServiceRole |
このアカウントは既定で無効化されており、医療製品で内部用に使用されます。FHIR® ベースの IHE プロファイルを使用する前に、このアカウントを有効にする必要があります。InterSystems IRIS for Health™ および HealthShare® Health Connect にのみ適用されます。 |
“特権ユーザ・アカウント” というアカウントもあり、これは通常のインストールまたはロック・ダウン・インストールで作成されます。このアカウントに、ユーザ名とパスワードを指定します。
以下のアカウントは削除できません。
-
_Ensemble
-
_PUBLIC
-
_SYSTEM
-
UnknownUser
Caution:
"ユーザ・アカウントの初期パスワード" で説明しているように、InterSystems IRIS の新規インストレーションではすべての事前定義アカウントに対して同一のパスワードが使用されます。特に最小のセキュリティによるインストールでは、既定のパスワードはセキュリティ面で脆弱です。この問題を解決するには、そのアカウントを無効にするか、パスワードを変更します。普通はアカウントを無効にすることをお勧めします。
これは特に、コンテナ化されたインスタンスでは重要な問題です。問題を解決する方法を含む詳細は、"認証とパスワードOpens in a new tab" を参照してください。
また、%System というユーザ・アカウントがあります。このユーザ・アカウントは、表示されず、InterSystems IRIS で内部的に使用されます。このアカウントに対してログイン、編集、または削除を行うことはできません。このアカウントは %All ロールを持って実行されます。%ZSTART や %ZSTOP など特定のルーチンは、このユーザ・アカウントとして実行されます。このようなルーチンを別のユーザとして実行するには、$SYSTEM.Security.Login() を呼び出します。
推奨されていませんが、事前定義のユーザ・アカウントを削除することはできます。ただし、%System の他に、%All ロールを持つアカウントが少なくとも 1 つ必要です。
さまざまなアカウントに関するメモ
UnknownUser アカウント
特定のアプリケーションやアプリケーションの特定の部分では、承認されないユーザに対しても、InterSystems IRIS を使用する妥当な理由が存在することがあります。例えば、小売システムでユーザが購入手続きを開始する前に、商品の在庫を確認する場合です。このような状況を考慮して、InterSystems IRIS では UnknownUser アカウントがサポートされています。認証されていないユーザが接続すると、特別な名前である UnknownUser が $USERNAME に割り当てられ、このユーザに定義されているロールが $ROLES に割り当てられます。
認証されていないアクセスは、認証に失敗したときに使用されるものではありません。 例えば、ターミナル経由で InterSystems IRIS に接続しようとしているユーザがユーザ名とパスワードを入力したが、認証に失敗したとします。この場合は、認証されていないアクセスが許可されていても、このユーザは InterSystems IRIS に接続されません。一方、認証されていないアクセスが許可されているときに、同じユーザがユーザ名を指定せずに (例えば、ユーザ名のプロンプトで Enter キーを押します) InterSystems IRIS に接続すると、このユーザは認証されていないユーザ UnknownUser として接続されます。同様に、ODBC クライアントがユーザ名とパスワードに NULL 文字列を使用して接続しようとすると、認証されていない接続が該当のサービスに対して許可されていれば、この接続は受け入れられます。同じ ODBC クライアントが、空文字列ではないユーザ名とパスワードを指定すると認証に失敗し、その結果、認証されていないアクセスが許可されていても、このクライアントは接続されません。
_PUBLIC アカウント
事前定義のユーザ・アカウント _PUBLIC は、ログインでは使用できない特殊なアカウントです。このアカウントはロールのセットを保持するものです。これらのロールは、システムに接続するすべてのユーザに対して既定のロールとして指定されています。これにより、どのようなユーザにも最低限のロールのセットを与えることができます。例えば、%Operator ロールを _PUBLIC ユーザに関連付けると、$Roles の値には必ず %Operator が含まれます。
ユーザ・アカウントの検証
アプリケーション・コードでユーザ・アカウントを検証する必要がある場合は、$SYSTEM.Security.Login メソッドの引数を 1 つ使用する形式を使って、このユーザのログインを試行するシンプルなルーチンを作成して実行します。ログインに成功したら、このユーザ・アカウントは正当なユーザです。ログインに失敗した場合は不正です。ログインが成功するかどうかには関係なく、このルーチンが存在する場合、現在のユーザ・アカウントがこのルーチンを呼び出したユーザ・アカウントになります。
以下はこのタスクを実行するサンプル・ルーチン ValidateUser です。
ValidateUser(TestUser) {
Write "Validating ",TestUser,"...",!
New $Roles
Set sc = $SYSTEM.Security.Login(TestUser)
If sc = 1 {
Write $Username," is a valid user.",!
Write $Username," belongs to the following login roles: ",$Roles,!
} Else {
Write TestUser," is not a valid user.",!
}
Quit sc
}
このルーチンは、検証の対象となるユーザ・アカウントの名前を表す文字列を唯一の引数として取ります。その後、以下のアクションを実行します。
-
New $Roles を呼び出し、$Roles 変数と $Username 変数の両方をスタックします。$Roles の詳細は、リファレンスの "$Roles" を参照してください。
-
その後、引数を 1 つ取る形式の $SYSTEM.Security.Login メソッドを呼び出します。このメソッドはユーザのログインを試行します。ユーザのパスワードは必要ありません。ログインに成功すると、このメソッドは 1 を返します。これにより、ルーチンが表示する情報とルーチンの返り値が決まります。
-
このルーチンが存在する場合は、ログインに成功することで、ユーザが暗黙的にログアウトされます。
Important:
このルーチンは、引数を 1 つ取る形式の $SYSTEM.Security.Login メソッドを使用します。引数を 1 つ取る形式の $SYSTEM.Security.Login を正常に呼び出すには、ユーザ・アカウントに IRISSYS:Write 特権と %Service_Login:Use 特権が必要です。$SYSTEM.Security.Login の詳細は、リファレンスの "%SYSTEM.SecurityOpens in a new tab" クラスを参照してください。
以下は、ValidateUser の呼び出し方法を示すサンプル・ルーチン VUTest です。これは、ValidUser と NonexistentUser という 2 人のユーザをテストするようにハード・コード化されています。
VUTest() {
Write $Username," is the current user.",!,!
Set sc = $$^ValidateUser("ValidUser")
Write !
Write "Exited validation code. ",$Username," is the current user.",!,!
Set sc = $$^ValidateUser("NonexistentUser")
Write !
Write "Testing complete.",!
Write $Username," is the current user."
Quit 1
}
VUTest ルーチンは InterSystems IRIS インスタンスの User ネームスペースで作成され、PrivilegedUser アカウントは %All ロールのメンバであり、ValidUser のみが存在するとします。ターミナル・プロンプトで VUTest を呼び出した結果は以下のとおりです。
Username: PrivilegedUser
Password: ***********
USER>d ^VUTest
PrivilegedUser is the current user.
Validating ValidUser...
ValidUser is a valid user.
ValidUser belongs to the following login roles: %Manager
Exited validation code. PrivilegedUser is the current user.
Validating NonexistentUser...
NonexistentUser is not a valid user.
Testing complete.
PrivilegedUser is the current user.
USER>