このドキュメントでは、次のトピックについて説明します。
NaturalX の設定方法については、「Windows 上での DCOM コンフィグレーション」を参照してください。
分散環境では、セキュリティは特に重要なトピックです。 サーバーでは、サーバーが提供するサービスを未認可クライアントに使用されないことを確実にする必要があります。 クライアントでは、想定のサーバーに接続され、そのサーバーがクライアントの権限を誤用しないことを確実にする必要があります。
DCOM のコンテキストでは、セキュリティは 2 つのレベルに区別できます。
アクティベーションセキュリティは、クラスを提供するサーバープロセスの開始とアクセスを許可されるユーザーを制御します。
コールセキュリティは、クラスが提供する各メソッドの使用の許可されるユーザーを制御します。
多くの場合は、権限の定義にはアクティベーションセキュリティで十分です。 このセキュリティレベルは、Windows セキュリティを基準に DCOM 自体によってサポートされます。 必要な権限はシステムレジストリで管理されます。 詳細については、「アクティベーションセキュリティ」を参照してください。
その他の場合は、各メソッドのレベルで権限をより詳細に制御する必要があります。 このセキュリティレベルは、レジストリ定義では管理できません。 これは、Natural Security の支援で NaturalX によって提供されます。 詳細については、「コールセキュリティ」を参照してください。
このセクションでは、次のトピックについて説明します。
アクティベーションセキュリティは、サーバープロセスの開始とアクセスを許可されるユーザーを制御します。
これは、基本的に、各クラスに対して権限を定義することによって行われます。
ただし、実用的な理由と、管理の労力を削減するために、権限は通常はアプリケーションレベルで管理されます。 システムレジストリでは、各アプリケーションは
AppID によって定義されます。 AppID は、アプリケーションの権限が管理されるキーです。 これらの権限を管理するために、各 DCOM
対応プラットフォームでは DCOMCNFG
ツールを使用できます。 このツールは、他の DCOM
アプリケーションと同様に、NaturalX アプリケーションでも使用できます。
NaturalX での AppID の意味を理解するために、NaturalX
がクラスをどのようにアプリケーションに編成するかを思い出してください(「サーバー ID の編成」を参照)。
Natura パラメータ COMSERVERID
を使用して、特定の NaturalX
サーバーに名前を付けることができます。 COMSERVERID
で指定した値で Natural
が起動された場合は、この Natural セッション中に登録されるすべての Natural クラスはこのサーバー ID で登録されます。
同時に、それらはすべてシステムレジストリで同じ AppID キーで登録されます。
これは、server-ID の複数の値がそれぞれ、システムレジストリで異なる AppID
キーに対応していることを意味します。
例えば、Natural がサーバー ID "Employees"
で実行されているとします。 この Natural
セッション中に登録されたすべてのクラスは、"Employees" アプリケーションを形成します。
REGISTER
コマンドは、それらのクラスをすべて 1 つの AppID
キー("Employees" アプリケーションに対応)で登録します。
アクティベーションセキュリティの設定には、レジストリキー LaunchPermissions、AccessPermissions、DefaultLaunchPermissions、および DefaultAccessPermissions が関連します。 キー DefaultLaunchPermissions および DefaultAccessPermissions は、レジストリにそれぞれ 1 つだけ存在し、個々の権限が定義されていないすべてのアプリケーションの権限を定義します。 キー LaunchPermissions および AccessPermissions は、各アプリケーション(各 AppID)に対して存在し、各アプリケーションの権限を定義します。
このセクションでは、次のトピックについて説明します。
コールセキュリティは、クラスが提供する各メソッドの使用の許可されるユーザーを制御します。 このレベルの権限は、レジストリ定義では管理できません。 コールセキュリティは、Natural Security の支援で NaturalX によって提供されます。
コールセキュリティがどのように Natural Security で達成されるかを理解するには、NaturalX のクラスがどのように実装されるかを考えてください。各クラスはクラスタイプの Natural モジュールであり、各メソッドはサブプログラムタイプの Natural モジュールです。 すべての Natural モジュールについて、Natural Security で定義された権限で実行を制御できます。 これを行う方法については、『Natural Security』ドキュメントを参照してください。
クラスモジュールを使用してオブジェクトが作成されるとき、およびメソッドサブプログラムがメソッド呼び出しに応答して実行されるときは、クラスモジュールとメソッドサブプログラムに対して定義された権限が評価されます。 次の規則が適用されます。クラスモジュールの実行を許可されているユーザーが、そのクラスのオブジェクトの作成を許可されます。メソッドサブプログラムの実行を許可されているユーザーが、対応するメソッドの使用を許可されます。
必要な権限チェックを実行するために、NaturalX サーバーはクライアントのユーザー ID を認識している必要があります。 ユーザー ID を確実に信頼できる必要もあります。 したがって、コールセキュリティを使用するには、以下の要件を満たしている必要があります。
クライアントは、ローカルマシンまたは Windows ドメインサーバーのログオンでクライアント自体を識別する必要があります。
Authentication level は、最低でも "Connect" に設定する必要があります(クライアントまたはサーバーマシン上)。
Impersonation level は、最低でも "Identify" に設定する必要があります(クライアントまたはサーバーマシン上)。
上記の要件が満たされている場合は、要求を処理する NaturalX サーバーがクライアントのユーザー ID を取得し、それを Natural
システム変数 *USER
に挿入します。 その後、要求は、必要なすべての Natural
Security 権限チェックを含めて、このユーザー ID で実行されます。 要求が処理されると、Natural システム変数
*USER
は NaturalX サーバーの起動時の値に戻ります。
要件のいずれかが満たされていない場合は、*USER
は要求の実行中には変更されません。 その後、要求は、NaturalX サーバーを起動したユーザー ID で実行されます。
*USER
に加えて、システム変数 *NET-USER
も要求の実行中に取得されます。 Windows ドメインに属しているクライアントのドメイン名で修飾されたユーザー ID
が含まれており、追加のアプリケーション固有セキュリティチェックに使用できます。
Natural Security で NaturalX を使用するときは、以下の点を考慮してください。
Natural Security 環境では、NaturalX サーバーは Natural パラメータ
AUTO=ON
で起動する必要があります。 これは、クライアント側ですでに認証が行われているからです。
設定は、Natural パラメータファイルに入力する必要があります。
Natural Security 環境では、NaturalX サーバーを常に特定のユーザー ID で起動することをお勧めします。 このユーザー ID は、認証されていないユーザーのすべての要求に対して自動的に使用されます。このユーザー ID の最小権限は、Natural Security 管理者が定義します。
Natural と Natural Security では、8 文字を超えるユーザー ID や空白を含むユーザー ID は処理できません。