OpenVMS Alpha
オペレーティング・システム
コネクティビティ開発者ガイド


前へ 次へ 目次 索引


11.3 独自のイベントの作成

デフォルト設定では,システムは COM for OpenVMS で生成された DCOM イベントをログに記録します。 COM for OpenVMS イベントを記録する他に,ユーザが作成した COM アプリケーションの COM アプリケーション・イベントをログに記録することもできます。

COM for OpenVMS キットには,Win32 API を使用してアプリケーション・イベントを生成する方法を示すサンプル・コードが含まれています。このサンプル・コードは, Windows NT システムでそのまま使用できます。また, OpenVMS で COM for OpenVMS アプリケーションを作成する指示に従って,このサンプル・コードを正しく作成することもできます (必要なヘッダ・ファイルは DCOM$LIBRARY から取得してください)。これらの手順については, 第 6 章 を参照してください。また,このサンプル・コードには,Wind/U を使用して例を作成するためのリンク手順も示されています。

11.4 OpenVMS Events の問題への対処

イベントを報告するときに発生したエラーは,追跡が困難なことがあります。これは,途中にあるいくつものソフトウェア・レイヤをイベントが通過するからです。ここでは, OpenVMS Events が Windows NT ログに記録されるまでに,他のソフトウェア・レイヤをどのように通過するかについて説明します。

  1. アプリケーションは Win32 イベント機能のいずれか ( RegisterEventSourceReportEventDeregisterEventSource) を呼び出します。

  2. Win32 API は指定された引数を使用して,適切なアイテム・リストを作成し,NTA$EVENTW ルーチンを呼び出します。

  3. NTA$EVENTW ルーチンは,指定された情報 (機能コード,アイテム・リストなど) を確認し,SYS$ACM システム・サービスに対して適切なアイテム・リストを作成します。
    NTA$EVENT がエラーを検出すると,R0 とイベント状態ブロックを使用して,そのエラーを Win32 API に返します。

  4. SYS$ACM システム・サービスは情報を確認し,その情報を NT ACME に渡します。
    SYS$ACM がエラーを検出すると,R0 と ACM 状態ブロックを使用して,そのエラーを NTA$EVENTW に返します。

  5. NT ACME は指定された情報を (IPC パイプを使用して) Advanced Server for OpenVMS のディスパッチャに渡します。
    NT ACME がエラーを検出すると,ACM 状態ブロックを使用して,そのエラーを呼び出し側プロセスに返します。

  6. Advanced Server for OpenVMS ディスパッチャは情報を確認し,要求された操作 (登録,レポート,登録の解除) を実行するために適切なルーチンを呼び出します。
    Advanced Server for OpenVMS がエラーを検出すると,そのエラーを NT ACME に報告します。NT ACME はエラーを他の呼び出しプロセスに渡します。

イベント状態ブロックの内容を確認すると,エラーがどこで発生したのかを判断するのに役立ちます。 表 11-1 は,実行しなければならないチェックを (重要な順に) 示しています。

表 11-1 OpenVMS Events エラーへの対処法
R0 状態 状態フィールド値 チェックするコンポーネント
エラー (ビット 0 がクリア) EVT$L_NT_STATUS フィールドが 0 以外の値である。 エラーは Advanced Server for OpenVMS の内部で発生している可能性が最も高い。
エラー EVT$L_VMS_STATUS フィールドが 0 以外の値で, EVT$L_NT_STATUS が 0 である。 エラーは SYS$ACM システム・サービスまたは NT ACME の内部で発生している可能性が最も高い。
エラー EVT$L_VMS_STATUS が 0 で,EVT$L_NT_STATUS が 0 である。 エラーは SYS$ACM システム・サービスの内部で発生している可能性が最も高い。

注意

Win32 API は通常,エラー状態を適切な NT エラー状態コードに変換し, GetLastError Win32 API を介して提供します (イベント API から返された状態は単に一般的なエラーを示します)。


第 4 部
認証

第 4 部では,プラットフォーム間でのユーザとアプリケーションの認証についての関連情報について説明します。


第 12 章
認証

12.1 認証とは

認証とは,システムへのアクセスを許可する前に,コンピュータ・システムがユーザの身元を確認する動作です。 ユーザの認証が成功すると,システムはユーザの認可情報を 資格情報の形式でユーザのプロセスにバインドします。システムはこれらの資格情報を使用して,システム・リソースへのアクセスを許可するのか,拒否するのかを判断します。

OpenVMS では,次に示すように,ネイティブ (SYSUAF ベース) と Windows NT 互換の認証および認可機能が提供されます。

OpenVMS がユーザの認証 (ネイティブまたは Windows NT ) に成功すると,ペルソナと呼ぶ構造を使用して,ユーザのネイティブな資格情報がプロセスに結びつけられます。 Windows NT を認証のために使用した場合は, OpenVMS はユーザの Windows NT 資格情報もプロセスに結合します (ペルソナの拡張として)。

12.2 NTA$LOGON の使用による Windows NT 資格情報の取得

NTA$LOGON は NTLM 資格情報を取得するためのユーティリティです。 OpenVMS Registry または COM for OpenVMS 機能にアクセスするために, Windows NT セキュリティを必要とするすべてのプロセスは, NTLM 資格情報を必要とします。

NTA$LOGON に対してユーザ・アカウント名,パスワード,(必要な場合は) ドメイン名を提供しなければなりません。 NTA$LOGON は ACM (Authentication and Credential Management) オーソリティを使用してドメイン・コントローラに連絡をとり, Windows NT アクセス・トークンを取得します。NTA$LOGON は Windows NT 情報とユーザの OpenVMS 資格情報をマージします。

NTA$LOGON の依存関係の詳細と,NTA$LOGON が OpenVMS インフラストラクチャの他の部分とどのように関係するかについては, 第 4.8 節第 4.9 節 (特に ACME サーバと Advanced Server for OpenVMS server) を参照してください。

NTA$LOGON ユーティリティを使用するには,次のいずれかを入力します。

表 12-1 は NTA$LOGON ユーティリティのコマンド・ライン・パラメータを示しています。

表 12-1 NTA$LOGON ユーティリティのコマンド・ライン・パラメータ
引数 必須/省略可能
P1 ユーザ・アカウント名。アカウント名は必須であるが,コマンド・ラインに指定しなかった場合は,NTA$LOGON から入力が求められる。 省略可能
P2 パスワード。パスワードは必須であるが,コマンド・ラインに指定しなかった場合は,NTA$LOGON から入力が求められる (入力したパスワードは画面に表示されない)。 省略可能

例 12-1 は,資格情報を取得するための典型的な NTA$LOGON セッションを示しています。

例 12-1 NTA$LOGON セッションの例

 
    $ NTLOGON :== $NTA$LOGON 
    $ NTLOGON joesmith 
    Password: 

注意

Windows NT ドメイン名とユーザ・アカウント名では,大文字と小文字が区別されません。NTA$LOGON はすべてのドメイン名とユーザ・アカウント名を大文字に変換します。コマンド・ラインにパスワードを指定すると,DCL はすべての文字を大文字に変換します。ただし,パスワードを引用符 ("") で囲んだ場合は,大文字に変換されません。

12.2.1 NTA$LOGON の省略可能な修飾子

NTA$LOGON では次の修飾子を使用できますが,これらの修飾子は省略可能です。

12.2.2 Windows NT 資格情報を取得するための NTA$LOGON の使用例

例 12-2 は,ユーザが NT 資格情報を初めて取得する方法を示しています。

例 12-2 Windows NT 資格情報の初めての取得

    $ NTLOGON :== $NTA$LOGON 
    $ NTLOGON/LIST 
    ERROR: NtOpenProcessToken() failure: -1073741700 0xc000007c 
    %SYSTEM-E-NOSUCHEXT, no such extension found 
 
    $ NTLOGON/LOG JOESMITH 
    [Persona #1 NT extension: Account= "JOESMITH" Domain= "NT_DOMAIN" ] 
    Password: 

例 12-3 は,ユーザが Windows NT 資格情報を置換する方法を示しています。

例 12-3 Windows NT 資格情報の置換

    $ NTLOGON/DELETE 
    $ NTLOGON/OVERRIDE_MAPPING/DOMAIN=OTHER_DOMAIN 
    Username: janebrown 
    Password: 

例 12-4 は,ユーザがパスワードをディスクのファイルに保存する方法を示しています。パスワードは 2 回入力するように求められますが,入力しても画面に表示されません。

例 12-4 ファイルへのパスワードの保存

    $ NTLOGON :== $NTA$LOGON 
    $ NTLOGON/WRITE_FILE=DEV:[DIR]NTA$LOGON.DAT COM_SERVER 
    Password: 
    Confirm: 
    $ NTLOGON/READ_FILE=DEV:[DIR]NTA$LOGON.DAT/LIST 
    File DEV:[DIR]NTA$LOGON.DAT contains the following records: 
    02-MAR-1999 16:57:23.20 COM_SERVER 

このファイルを作成した後,DCL コマンド・プロシージャに次のコマンドを追加できます。


    $ NTLOGON :== $NTA$LOGON 
    $ NTLOGON/READ_FILE=DEV:[DIR]NTA$LOGON.DAT COM_SERVER 

12.3 ACM (Authentication and Credential Management) オーソリティ

ACM (Authentication and Credential Management) オーソリティは, OpenVMS と Windows NT に対してユーザを認証し,ユーザのセキュリティ・プロファイルを判断します。ACME_SERVER プロセスはこれらの ACM サービスを提供します。ACME_SERVER プロセスは ACME エージェントと呼ぶプラグイン・モジュールを使用します。 ACME エージェントは,認証要求,問い合わせ要求,イベント要求への応答などの実際の作業を行います。

OpenVMS ACME エージェント (VMS$VMS_ACMESHR.EXE) は, OpenVMS ネイティブ・サービスを提供します。 MSV1_0 ACME エージェント (PWRK$MSV1_0_ACMESHR.EXE, Advanced Server for OpenVMS 製品のコンポーネント) は, Windows NT 接続サービスを提供します。

MSV1_0 ACME エージェントは Windows NT 接続サービス要求を NTA$LOGON および SSPI/NTLM から,クラスタ内の 1 つ以上のシステムで稼動している Advanced Server for OpenVMS プロセスに転送します。 PWRK$ACME_SERVER 論理名には,MSV1_0 ACME が要求を転送する先のクラスタ・ノード名のリストを含むことができます。各名前はカンマで区切ります。 Advanced Server for OpenVMS プロセスを 1 つ以上のクラスタ・ノードで実行し,ノード名を PWRK$ACME_SERVER 論理名に含むと,MSV1_0 ACME エージェントは,接続が中断されたときに,要求を自動的にフェールオーバできます。論理名が定義されていない場合は,デフォルトでローカル・マシン名に設定されます。

ACME_SERVER プロセスは,RPC または COM for OpenVMS を実行するどのシステムにも存在しなければなりません。しかし, Advanced Server for OpenVMS プロセスは,クラスタ内の 1 つのノードにだけ存在すれば十分です。

12.3.1 OpenVMS での Windows NT 認証

ACME_SERVER は要求された Windows NT ペルソナ拡張情報も含めて,完全な OpenVMS ペルソナを呼び出しプロセスに返すので, VMS ACME エージェントは次の規則を適用します。


前へ 次へ 目次 索引