既存のNotebookを最小権限モードに適応する
- 更新日2026-09-10
- 9分で読める
SystemLink Jupyter Notebookを最小権限モードに移行するには、権限制限、APIアクセス、およびプロファイルパスの変更に対処します。
SystemLinkは、最小権限モードの実装前に作成されたNotebookにアクセス制限をかける場合があります。
以下のタイプのユーザは、これらの制約を受ける可能性が最も高いです。
- SystemLink 2026 Q2以前からアップグレードしているユーザ。
- より広範なアクセスを必要とするNotebookを使用しているユーザ。
ローカルサービス権限に依存するNotebookは、最小権限モードで失敗する可能性があります。以下の表は、影響を受ける各機能と推奨処置を記載しています。
| 機能 | ブロックされた理由 | 移行 |
|---|---|---|
| %ProgramData%\National Instruments\Skyline\Config\の下にあるサービス構成ファイルを読み取り中 | 全アクセス拒否(&D) | SystemLink Python APIを使用します。カーネルのセッションキーは、SYSTEMLINK_API_KEY環境変数で使用できます。 |
| Skylineデータベース (NoSqlDatabase、PostgreSQLDatabase、KeyValueDatabaseなど) の読み取りまたは書き込み | 全アクセス拒否(&D) | 適切なSystemLink Python APIを使用します。 |
| RabbitMQ資格情報またはSalt資格情報を読み取る | 全アクセス拒否(&D) | — |
| %ProgramData%\National Instruments\Skyline\Data\に書き込み中 | 書き込み拒否ACE | Notebookにはこの機能は必要ありません。HTTP APIを使用してSkylineサービスと対話します。 |
| pip installでPythonパッケージをインストールする |
読み取りおよび実行権限は以下のパスにのみ存在します。 %ProgramFiles%\National
Instruments\Shared\Skyline\Python\<version>\
また、以下のパスには書き込み拒否ACEがあります。 %ProgramData%\National
Instruments\Skyline\JupyterHub\profile\AppData\Roaming\Python
|
パッケージ要件をインストールするには、管理者を使用します。詳細については、「Pythonパッケージインストーラの最小権限モードでの動作」を参照してください。 |
| 共有またはカスタムファイルシステムパスの読み取りまたは書き込み | SystemLinkNotebooksには明示的なACEがありません。アクセスは、パスがUsersグループにすでに付与している権限によって異なります。詳細については、プロビジョニングツールのドキュメントを参照してください。 | SystemLinkがアクセスを拒否する場合は、SystemLinkNotebooksへのアクセスを明示的に許可する必要があります。詳細については、「最小権限モードで権限を緩和する」を参照してください。C:\Users\の下の個人ユーザプロファイルパスにアクセスできません。 |
| Restart-ComputerまたはStop-Serviceなどの特権コマンドを実行する | 制限付きトークンは、昇格された権限を削除します。 | 権限のある操作を、正しい権限を持つアカウントで実行されるスケジュールされたタスクまたはWindowsサービスに移動します。 |
| 他のユーザーになりすます、またはSAMデータベースにアクセスする | 制限付きトークンがあります。 | — |
| nisystemlink.*クライアントライブラリを介してHTTP要求を送信する | デフォルトライブラリCAバンドルはサーバ証明書を信頼していません。 | サーバ証明書を指定します。詳細については、「NI SystemLinkクライアントの証明書エラー」を参照してください。 |
以下の手順に従って、既存のNotebookを最小権限モードに移行します。
-
最小権限モードで失敗する可能性のあるNotebookを特定します。
メモ NIでは、これらのNotebookをユーザが障害に遭遇する前に事前に特定することを推奨しています。
-
以下の構成ファイルでは、LimitJupyterPrivilegesを一時的にfalseに設定します。
%PROGRAMDATA%\National Instruments\Skyline\Config\JupyterHub.json
- SystemLinkサーバ構成アプリケーションで、SystemLinkサービスを再起動します。
- SystemLink Webインタフェースで、に移動し、JupyterHubで各Notebookを対話的に実行します。
-
結果を記録します。
セル出力はWebインタフェースに直接表示されます。Notebook実行サービスは、デフォルトではこの出力を表示しません。
- 構成ファイルで、LimitJupyterPrivilegesをtrueに戻します。
-
サービスを再起動して再度実行します。
以下のNotebookは移行の候補です。
- trueの場合のみPermissionErrorを返すセル。
- trueの場合のみAccess is deniedを返すセル。
- SystemExit例外があるセルです。
- 0以外の終了コードです。
-
以下の構成ファイルでは、LimitJupyterPrivilegesを一時的にfalseに設定します。
-
ダイレクトファイルアクセスをHTTP API呼び出しに置き換えます。
- SystemLink構成ファイルまたはデータベースファイルを直接読み取るNotebookでは、SystemLink Python APIを使用する必要があります。
- nisystemlink-clientsライブラリは、SystemLink Jupyter環境で実行中に認証を自動的に構成します。ライブラリはAPIキーを処理する必要はありません。
- 未処理HTTP要求には、以下のセッションキーを使用します。
import os api_key = os.environ.get("SYSTEMLINK_API_KEY")
メモ SystemLinkサーバが内部CA証明書を使用する場合、ライブラリが接続する前に証明書エラーを解決する必要もあります。詳細については、「NI SystemLinkクライアントの証明書エラー」を参照してください。その修正に明示的なHttpConfigurationを渡す必要がある場合は、認証パラメータも指定する必要があります。自動認証は、HttpConfigurationを指定しない場合にのみ適用されます。 -
前回の実行からのパス依存状態を確認します。
最小権限モードを有効にすると、スパウナは以下の環境変数をJupyterプロファイルディレクトリにリダイレクトします。メモ SystemLinkJupyterHubとSystemLinkNotebookExは同じプロファイルパスを共有します。
表 19. プロファイルディレクトリへの環境変数 環境変数 プロファイルディレクトリ USERPROFILE、HOME %ProgramData%\National Instruments\Skyline\JupyterHub\profile APPDATA %USERPROFILE%\AppData\Roaming LOCALAPPDATA %USERPROFILE%\AppData\Local TEMP、TMP %USERPROFILE%\AppData\Local\Temp SKYLINE_NOTEBOOKS_SCRATCH_DIR %USERPROFILE%\ScratchDir ハードコードされたパスではなく、環境変数を使用してこれらのパスを参照します。変数は常に新しいプロファイルの下の書き込み可能な場所を指します。カーネルがLOCAL SERVICEとして実行されたときにこれらのパスに以前書き込まれたファイルは、新しいパスに存在しません。LOCAL SERVICEの下にある場合、これらのパスは異なる物理的位置を参照していました。
メモ 以前の状態に依存するNotebookでは、Jupyterプロファイルディレクトリの下の対応するパスに手動でファイルをコピーします。 -
Notebook内のpip install呼び出しを、パッケージをシステムPython環境にインストールするWindows管理者に置き換えます。
詳細については、「Pythonパッケージインストーラの最小権限モードでの動作」を参照してください。
-
Jupyterプロファイルディレクトリ外のデータファイルを読み書きするNotebookのディレクトリへのアクセスをSystemLinkNotebooksグループに許可します。
詳細については、「最小権限モードで権限を緩和する」を参照してください。
-
Notebookから特権操作を移動
管理者権限が必要なコマンドは、最小権限モードを使用するカーネルでは実行できません。コマンドの例には、サービスの再起動やシステム構成の変更などがあります。これらのコマンドの最小権限モードに準拠するには、以下の操作を実装します。
- コマンドをWindowsタスクとしてスケジュールします。
- 正しい権限を持つサービスを介してコマンドをトリガします。
-
最小権限モードを再度有効にします。
- 構成ファイルで、LimitJupyterPrivilegesがtrueに設定されていることを確認します。
- サービスを再起動します。