Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

認証に関する高度なトピック

この章では、認証の高度な使用法について説明します。

システム変数および認証

認証の後は、以下の 2 つの変数に値が設定されます。

  • $USERNAME にはユーザ名が設定されます。

  • $ROLES には、このユーザが保持するロールのコンマ区切りのリストが格納されます。

$ROLES 変数を使用すると、ロールをプログラムで管理できます。

複数の認証メカニズムの使用

複数の認証メカニズムの使用が推奨される状況として、現状よりも高い厳格さを備えた認証メカニズムに移行する場合があります。例えば、認証を使用していないインスタンスで Kerberos への移行を図る場合は、以下のシナリオが考えられます。

  1. 移行期間については、認証されていないアクセスと Kerberos 認証によるアクセスの両方を使用できるように、サポート対象のすべてのサービスを構成します。これにより、ユーザはどちらのメカニズムを使用しても接続できます。

  2. 適切であれば、認証に Kerberos を使用するクライアント・ソフトウェアを新規にインストールします。

  3. InterSystems IRIS ユーザのリストと Kerberos データベースにあるユーザのリストが同じ内容になった時点で、すべてのサービスに対し、認証されていないアクセスを無効にします。

複数の認証メカニズムを使用する場合は、通常、以下のセクションで説明するカスケード認証を組み合わせます。

カスケード認証

InterSystems IRIS では、多数の認証メカニズムをサポートしていますが、Kerberos と共に他のパスワード・ベースの認証メカニズムを使用しないことをお勧めします。また、一部の特定の状況では、インスタンスでの複数の認証メカニズムの使用が推奨されます。

サービスが複数の認証メカニズムをサポートしている場合、InterSystems IRIS では カスケード認証 によってユーザ・アクセスが管理されます。カスケード認証では、指定されているメカニズムが以下の順番で適用されてユーザの認証が行われます。

  • Kerberos キャッシュ (整合性チェックや暗号化を伴う Kerberos と伴わない Kerberos のどちらも含みます)。

  • OS ベース

  • LDAP (LDAP 資格情報キャッシュを 2 番目にチェック)

  • 代行

  • インスタンス認証

  • 認証なし

Note:

Kerberos プロンプトの使用が指定されているサービスで認証が失敗すると、カスケード認証は適用されません。Kerberos プロンプトと Kerberos キャッシュの両方が指定されているサービスでは、Kerberos キャッシュのみが使用されます。

例えば、以下のメカニズムによる認証をサポートしているサービスを考えます。

  1. Kerberos キャッシュ

  2. OS ベース

  3. 認証なし

ユーザが InterSystems IRIS に接続しようとすると、そのユーザが Kerberos のチケット保証チケット (TGT) を所有するかどうかがチェックされます。このチケットがあれば、InterSystems IRIS のサービス・チケットを取得しようとする処理が実行されます。この処理が成功すると、ユーザは接続します。最初の TGT が存在しない場合、または InterSystems サービスを取得できない場合、認証が失敗し、カスケードにある次の順番のメカニズムに移ります。

InterSystems IRIS ユーザ・リストにユーザの OS ベース識別情報が含まれていれば、ユーザは接続します。ユーザの OS ベース識別情報が InterSystems IRIS ユーザ・リストにない場合は認証が失敗し、カスケードにある次の順番のメカニズムに移ります。

認証されていないアクセスが、カスケード認証にある最後の選択肢であれば、このレベルまで移ってきたユーザは全員 InterSystems IRIS にアクセスできます。

Note:

インスタンスがカスケード認証をサポートしている場合、ユーザが 2 番目またはそれ以降の認証メカニズムで認証されるということは、その認証に成功するまでにいずれかのメカニズムでログインが失敗しているということになります。%System/%Login/LoginFailure 監査イベントが有効な場合、そのようなログイン失敗の情報はインスタンスの監査ログに記録されます。

UnknownUser アカウントとの接続の確立

インスタンス認証と認証なしモードの両方が有効になっている場合、ユーザは [ユーザ名] プロンプトと [パスワード] プロンプトで Enter キーを押すだけで、認証なしモードでサービスに接続できます。この場合は、UnknownUser アカウントが使用されます。インスタンス認証のみが有効になっている場合は、[ユーザ名] プロンプトと [パスワード] プロンプトで Enter キーを押しただけでは、サービスへのアクセスが拒否されます。InterSystems IRIS では、この処理が、UnknownUser アカウントでログインしようとしたユーザが、正しくないパスワードを指定したものとして扱われるためです。

プログラムによるログイン

状況によっては、アプリケーションの実行が始まった後でユーザがログインすることが必要な場合があります。 このような状況の例として、認証されていないユーザには一部の機能のみを提供し、保護された機能を提供する場合には、ユーザにログインを要求するアプリケーションがあります。

$SYSTEM.Security クラスの Login メソッドを使用すると、アプリケーションから InterSystems IRIS ログイン機能を呼び出すことができます。これには、以下の構文を使用します。

 set success = $SYSTEM.Security.Login(username,password)

以下はその説明です。

  • success はブーリアン値で、1 は成功、0 は失敗を示します。

  • username は、ログインするアカウントの名前を保持する文字列です。

  • password は、username アカウントのパスワードを保持する文字列です。

有効なユーザ名とパスワードが指定され、該当のユーザ・アカウントが有効で期限切れになっていなければ、ユーザはログインできます。それに応じて $USERNAME$ROLES が更新され、この関数からは 1 が返されます。 それ以外の場合、$USERNAME$ROLES は変更されず、この関数からは 0 が返されます。

$SYSTEM.Security.Login. を実行した結果として、特権のチェックは行われません。その結果、プロセスがそれまで保持していた特権が失われる可能性があります。

$SYSTEM.Security.Login. には、引数が 1 つのみの以下のような形式もあります。

 set success = $SYSTEM.Security.Login(username)

この形式の動作は、パスワードがチェックされない点を除けば、引数が 2 つの形式とまったく同じになります。引数を 1 つ使用した形式の $SYSTEM.Security.Login が便利なのは、アプリケーションで独自の認証が実行されることから、InterSystems IRIS ユーザの識別方法をそれに応じて設定する必要がある場合です。 また、あるプロセスが特定のユーザのために実行されても、そのプロセスを開始するのはそのユーザではない場合にも、この形式を使用できます。

Note:

引数を 1 つ使用した形式の Login メソッドは、制限付きのシステム機能です。

JOB コマンド、および新しいユーザ識別の確立

JOB コマンドを使用してプロセスを作成すると、その基となったプロセスからセキュリティの特性 ($USERNAME の値と $ROLES の値) が継承されます。 親プロセスに保持されている、User や Added などのすべてのロールが継承されます。

しかし、新しく作成するプロセスの $USERNAME$ROLES の値を、その親とは異なる値にすることが必要な場合があります。 例えば、特定のユーザ向けに特定の時間に特定のタスクを開始する目的で、タスク・マネージャが作成されることがあります。 タスク・マネージャ自体は大きな特権を持っていることが普通ですが、該当のタスクはタスク・マネージャの特権ではなく、そのタスクの対象であるユーザの特権で実行する必要があります。

以下の擬似コードは、この処理方法を示しています。

WHILE ConditionToTest {
    IF SomeThingToStart {
        DO Start(Routine, User)
    }
}

Start(Routine, User) {
    NEW $ROLES    // Preserve $USERNAME and $ROLES

    // Try to change username and roles
    IF $SYSTEM.Security.Login(User) {
        JOB ...
        QUIT $TEST
    }
    QUIT 0       // Login call failed
}

認証と管理ポータル

管理ポータルは、複数の個別の Web アプリケーションで構成されています。ポータルのメイン・ページは /csp/sys のアプリケーションと関連付けられており、他のページはさまざまな /csp/sys/* のアプリケーションと関連付けられています (/csp/sys/sec のアプリケーションと関連付けられている、セキュリティ関連のコンテンツなど)。これらのアプリケーションすべてに使用される認証メカニズムの共通セットがないと、ユーザがあるポータル・ページから別のページに移動するときに、ログイン・プロンプトが表示されたり、突然特権レベルの移行が発生したりすることがあります。

例えば、/csp/sys のアプリケーションが排他的にインスタンス認証を使用し、関連する他のポータル・アプリケーションが排他的に認証なしのアクセスを使用している場合、ユーザがあるポータル・ページから別のページに移動すると、認証なしのアクセスから認証が必要な状態に移行します。また、/csp/sys のアプリケーションはインスタンス認証のみをサポートし、他のアプリケーションは認証なしのアクセスのみをサポートしている場合、UnknownUser に特別な特権がないと、ユーザがポータルのメイン・ページからその他のページに移動するときに、何らかのアクションを実行するのに十分な特権がないという可能性もあります。

Web アプリケーションの認証メカニズムを確認および構成するには、ポータルの [ウェブ・アプリケーション] ページ ([システム管理][セキュリティ][アプリケーション][ウェブ・アプリケーション]) からアプリケーションを選択し、表示されたアプリケーションについて、必要に応じて、[許可された認証方法] で選択します (通常は、/csp/sys/csp/sys/* で認証メカニズムの共通セットを共有するようにします)。

FeedbackOpens in a new tab