GPO を使用してドメインユーザーとコンピュータにプリンタを展開する方法

ドメイン内のユーザーに対して共有プリンターを自動的に接続する方法を見つけるのは、少々難しい場合があります。特に、特定のグループや部門を対象とし、そのグループや部門に必要なプリンターだけを利用できるようにしたい場合はなおさらです。さらに、Windowsは最近、特にドライバーのインストールに関するセキュリティの変更(CVE-2021-34527、またはPrintNightmareなど)により、この設定を複雑化させています。ここでの目標は、ユーザーがログインすると、管理者権限や毎回の手動設定を必要とせずに、プリンターが自動的に表示されるようにすることです。このガイドでは、グループポリシーを介してプリンターをスムーズに展開する方法と、管理者以外のユーザーがセキュリティ警告やエラーを表示せずに必要なドライバーをインストールできるようにする方法の2つの主要な点について説明します。

グループポリシーを使用して自動プリンタ展開を修正または改善する方法

GPO経由でドメインユーザーに共有プリンタを展開する

この部分はいわば基本作業です。ADで各部門ごとにSharedPrinter_SalesSharedPrinter_ITなどのセキュリティグループを設定します。そして、ユーザーをこれらのグループに追加します。これはActive Directoryユーザーとコンピューター( )で手動で行うことdsa.mscも、PowerShellを使って自動的に作成することもできます。

New-ADGroup "SharedPrinter_Sales" -path 'OU=Groups, OU=Paris, DC=woshub, DC=com' -GroupScope Global –PassThru

グループの準備ができたら、グループポリシー管理コンソールGPMC.msc)を開き、「print_AutoConnect 」という新しいポリシーを作成します。このポリシーを、ユーザーが所属する対象のOUにリンクします。ドメインがそれほど大きくない場合は、すべてのプリンターに対して1つのGPOで問題ありませんが、複数のサイトやOUが存在する複雑なドメインの場合は、個別のポリシーを作成することをお勧めします。

GPO内で、「ユーザーの構成」>「基本設定」>「コントロールパネルの設定」>「プリンター」に移動します。ここで、 「新規」>「共有プリンター」を選択して、新しい共有プリンターを追加します。IP接続の場合は、「TCP/IPプリンター」を選択します。

プロパティでアクションに「更新」を選択し、 「共有パス」にのようなUNCパスを入力します\\srv-par-print\hpsales。事前にクライアントにプリンタードライバーがインストールされていることを確認するか、ポリシーでプッシュ配信されるドライバーパッケージを作成してください。そうしないと、プリンターはインストールされません(Windowsは現在、ドライバーの署名について細心の注意を払っています)。

「共通」タブで、「ログオンユーザーのセキュリティコンテキストで実行」にチェックを入れます。特定のグループ(SharedPrinter_Salesなど)のみをターゲットにしたい場合は、 「アイテムレベルのターゲット設定」に移動し、「ターゲット設定」をクリックして、グループ名で新しい「セキュリティグループ」項目を追加します。このようにすれば、プリンターを簡単に制限できます。ただし、この設定ではユーザーが手動でプリンターに接続できないようにするわけではないので注意してください。手動で接続するには、プリントサーバー自体でプリンターのセキュリティ権限を調整する必要があります。

すべてを設定したら、ログを確認してください。このGPOが起動すると、プリンターへの接続を試みます。クライアントにドライバーが存在しない場合は、イベントログ(アプリケーション)にイベントID 4096が記録されます。特に新しいバージョンのWindowsでは、ポイントアンドプリントの制限を設定しても、管理者以外のユーザーによるドライバーのインストールがWindowsによってブロックされることがあります。もちろん、何らかの回避策を講じない限り、Windowsはドライバーのインストールに管理者権限を必要とします。

管理者以外のユーザーがプリンタ ドライバをインストールできるようにする (Windows ではインストールが困難になるため)

2021年以降、WindowsはCVE-2021-34527(別名PrintNightmare)に基づき、ドライバーのインストールを密かに強化しました。これにより、一般ユーザーは(管理者権限を持つユーザーを除き)プリントサーバーからドライバーを取得してインストールすることができなくなりました。もちろん、特定のポリシーを上書きすれば可能です。管理者以外のユーザーがドライバーをインストールできるようにする方法は以下の通りです。ただし、注意を怠ると、プリンターサーバーがエクスプロイト攻撃の標的になる*可能性があります*。

  1. [コンピューターの構成] > [Windows の設定] > [セキュリティの設定] > [ローカル ポリシー] > [セキュリティ オプション]に進み、[デバイス: ユーザーがプリンター ドライバーをインストールできないようにする]を無効にします。
  2. 「コンピューターの構成」>「ポリシー」>「管理用テンプレート」>「システム」>「ドライバーのインストール」に移動します。プリンターデバイスクラスのGUIDを「管理者以外のユーザーがこれらのデバイスセットアップクラスのドライバーをインストールできるようにする」に追加します。
    {4658ee7e-f050-11d1-b6bd-00c04fa372a7}

    そして

    {4d36e979-e325-11ce-bfc1-08002be10318}

    この方法により、ユーザーは *プリンタ* ドライバを具体的にインストールできます。

  3. 管理テンプレート > プリンターで、ポイントアンドプリントの制限を有効にします。信頼できるプリントサーバー(プリントサーバーのURLなど)を指定し、警告や昇格時のプロンプトを表示しない を選択して、警告や昇格時のプロンプトを無効にします。
  4. 「パッケージ ポイント アンド プリント – 承認済みサーバー」の下にプリント サーバーを追加します。
  5. この最後の部分は重要です。レジストリ キーRestrictDriverInstallationToAdministrators を0 に変更して、管理者権限なしでドライバーをインストールできるようにする必要があります。スタンドアロンの場合は、次を実行します。

    reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 0 /f

    または、グループ ポリシーの基本設定を使用して、関連するすべてのマシンでこのレジストリ キーをリモートで設定し、手動でのレジストリ編集を回避するのがさらに良い方法です。

この変更により、管理者以外のユーザーが信頼できるサーバーから共有プリンターとドライバーをインストールできるようになり、Windows は毎回昇格権限を要求する必要がなくなります。ただし、注意が必要です。これはセキュリティを弱体化させるため、信頼できるプリントサーバーを慎重に選ばないと、エクスプロイトの危険にさらされる可能性があります。

面白いのは、このレジストリ設定を後で1に戻さないと、システムがPrintNightmareに対して脆弱になってしまうことです。そのため、プリンターの展開が完了したら、レジストリ設定を元に戻す作業を自動化するのが理想的です。

総じて、GPP を使用するとスクリプトよりもはるかに簡単に作業できます。特に複数のプリンターやグループを扱う場合はなおさらです。ただし、ドライバーの署名、セキュリティポリシー、ログには十分注意してください。そうしないと、Windows がエラーを返したり、プリンターの接続を拒否したりする可能性があります。バランスを取るのは大変ですが、正しく設定すれば、ドメイン環境におけるリモートプリンターや共有プリンターの操作は極めてスムーズになります。