Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

ちょうど十分な管理(JEA )機能はPowerShellバージョン5.0以降で利用可能であり、PowerShellで管理できるすべてのものに管理者権限を委任できます。 PowerShell JEAの主な目的は、特権を制限することです。 JEAを使用すると、管理者以外のユーザーに、サーバーまたはサービスの管理者権限(AD、Exchange、SharePointなど)を付与せずに、特定の管理タスクを実行する権限を付与できます。 JEAを使用すると、管理者権限で特定のコマンドレット、関数、またはPowerShellスクリプトを実行し、すべてのアクションをログに記録できるユーザーを設定できます(PowerShellコマンド履歴と同様)。

PowerShellを十分な管理で実装するにはどうすればよいですか?

管理者は、ユーザーが実行できるコマンドを含むPowerShellセッション構成ファイルをサーバー上に作成します。ファイルに基づいて、ユーザーが使用可能な任意のコマンドまたはプログラムに接続して実行できるJEAエンドポイントが作成されます。

ここでは、管理者以外のユーザーにドメインコントローラーを再起動し、DNSおよびADDSサービスを再起動する権限を付与する方法の例を示します。

この場合、リンクをたどるガイドに従って、ユーザーにドメインコントローラーへのRDPアクセスを許可したり、ADでの管理者権限を委任したり、Windowsサービスで権限を割り当てたり、サーバーを再起動したりすることはできません。必要なすべての制限は、JustEnoughAdministrationの構成で設定されます。

まず、PowerShellセッションの構成ファイル(*。pssc)を作成します )。これを行うには、ドメインコントローラーで次のコマンドを実行します。

New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

メモ帳を使用してPSSCファイルを開きます。

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

PSSCファイルは、このJEAエンドポイントに接続できるユーザーと、JEAセッションのコマンドを実行するアカウントを設定します。

次の値を変更します。

  • SessionType デフォルトからRestrictedRemoteServer 。このモードでは、次のPowerShellコマンドレットを使用できます:Clear-Host、Exit-PSSession、Get-Command、Get-FormatData、Get-Help、Measure-Object、Out-Default、またはSelect-Objectl
  • TranscriptDirectory でフォルダを指定(作成)します パラメータ。ここでは、すべてのJEAユーザーアクションをログに記録します:TranscriptDirectory = C:\PS\JEA_logs
  • RunAsVirtualAccount オプションを使用すると、仮想管理者アカウント(ローカル管理者またはドメイン管理者グループのメンバー)でコマンドを実行できます。RunAsVirtualAccount = $true
グループマネージドサービスアカウント(gMSA)を使用して、ネットワークリソースにアクセスできます。GroupManagedServiceAccount = 'woshub\gMSAJEAUser'

RoleDefinitionsディレクティブで、PowerShellセッションへの接続を許可するADセキュリティグループとJEAロールの名前を指定します(後で作成するPSRCファイル名と一致する必要があります)。

例:

RoleDefinitions = @{‘woshub.com\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

セッション構成ファイルを保存します。

先に進む前に、構成ファイルにエラーがないことを確認してください。

Test-PSSessionConfigurationFile -Path  'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

JEA構成ファイルを保持するための新しいディレクトリを作成します。例:

New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory

PSRC ファイルは常にRoleCapabilitiesに配置する必要があります 対応するモジュールのサブフォルダー。

次に、役割の説明を含む構成PSRCファイルを作成します(上記のPSSC構成のファイル名を使用します)。

New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'

PSRCファイルは、現在のJEAセッションで実行できることを指定します。 VisibleCmdlets内 ディレクティブでは、特定のユーザーグループに使用できるコマンドレット(およびそれらの有効なパラメーター)を指定できます。

VisibleExternalCommands オプションで、実行を許可する外部コマンドとEXEファイルを指定できます。

たとえば、次の構成ではヘルプデスクが許可されます ユーザーがshutdownコマンドまたはRestart-Computerを使用してドメインコントローラーを再起動する コマンドレット、およびRestart-Serviceを使用してDNSServerとActiveDirectoryドメインサービスを再起動します コマンドレット。

VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }}
VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'

PSRCファイルを保存します。

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

次に、PSSCファイルの新しいPSSession構成を登録します。

Register-PSSessionConfiguration –Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

WinRMを再起動します:

Restart-Service WinRM

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

利用可能なJEAエンドポイントを一覧表示できます:

Get-PSSessionConfiguration|ft name

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

新しいJust-Enough-Administration(JEA)構成がどのように機能するかを見てみましょう。構成ファイルで指定されたセキュリティグループのユーザーアカウントで、作成されたJEAエンドポイントに接続できます。 PowerShell Remotingを使用してドメインコントローラーに接続します(JEAエンドポイント名を指定する必要があります):

Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk

PowerShellセッションで使用可能なコマンドレットのリストを表示します:

Get-Command

ご覧のとおり、Restart-ServiceやRestart-Computerなど、いくつかのコマンドを使用できます。ユーザーは自分に許可されていることしかできません。

DNSサービスを再起動してみてください:

Restart-Computer dns

サービスは正常に再起動されました(コマンドは、ドメイン管理者権限を持つ特権ユーザーとして実行されます)。

JEA構成ファイルに記載されていない他のサービスを再起動しようとすると、次のエラーメッセージが表示されます。

Cannot validate argument on parameter 'Name'. The argument "spooler" does not belong to the set "DNS,NTDS" specifiedby the ValidateSet attribute. Supply an argument that is in the set and then try the command again. + CategoryInfo : InvalidData: (:) [Restart-Service], ParameterBindingValidationException

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

JEA PowerShellセッションでのすべてのユーザーアクションの履歴は、C:\ PS\JEA_logsのファイルに記録されます。

PowerShell Just Enough Administration(JEA)を使用して、管理者以外のユーザーに特権を委任する

そのため、JEAを使用すると、特定のPowerShellコマンドレット、スクリプト、またはプログラムを管理者として実行するためのアクセス権をユーザーにきめ細かく許可できます。


  1. PowerShellを使用したBIOS設定の表示と変更

    PowerShellを使用して、Windowsを実行しているコンピューターのBIOS設定を表示または変更できます。 HP、Lenovo、Dellなどの一般的なベンダーのコンピューターでWMIクラス(Windows Management Instrumentation)を使用してPowerShellでBIOS設定を取得または変更するために使用できるいくつかの例を考えてみましょう。 Win32_BIOS のGet-WmiObjectコマンドレットを使用して、コンピューターの基本的なBIOSパラメーターを表示できます。 クラス: Get-WmiObject -Class Win32_

  2. WindowsPowerShellを使用してローカルユーザーとグループを管理する方法

    Windows PowerShellは、ローカルユーザーとグループの管理にも使用できます。 。これは、Windows10がマルチユーザーオペレーティングシステムであるという原則を裏付けています。ローカルユーザーとグループを管理するための他のGUIベースのユーティリティがあります。ただし、一部のシステム管理者は、コマンドラインユーティリティを使用してこれらのユーザーとグループを管理したい場合があります。これについては、このガイドで詳しく説明します。 WindowsPowerShellを使用してローカルユーザーとグループを管理する このガイドについては、2つのパートで説明します。それらは次