管理者以外のユーザーへの AD FS PowerShell コマンドレットのアクセスの委任

既定では、AD FS 管理者のみが PowerShell を使用して AD FS 管理を実行できます。 多くの大規模な組織では、ヘルプ デスク担当者などの他の人物を扱う場合、これは実行可能な運用モデルではないことがあります。

Just Enough Administration (JEA) を使用すると、お客様は特定のコマンドレットのアクセス許可をさまざまな担当者グループに委任できます。

この使用事例の良い例として、ヘルプ デスクの担当者に対し、AD FS のアカウントのロックアウト状態についてクエリを実行し、ユーザーの検査後に AD FS のアカウントのロックアウト状態をリセットすることを許可することがあります。 この場合、委任する必要があるコマンドレットは次のとおりです。

  • Get-ADFSAccountActivity
  • Set-ADFSAccountActivity
  • Reset-ADFSAccountLockout

この例は、このドキュメントの残りの部分で使用します。 ただし、これをカスタマイズして、証明書利用者のプロパティを設定し、組織内のアプリケーション所有者にこれを渡すための委任を許可することもできます。

ユーザーにアクセス許可を付与するために必要なグループを作成する

  1. グループ マネージド サービス アカウントを作成します。 gMSA アカウントは、JEA ユーザーが他のマシンまたは Web サービスとしてネットワーク リソースにアクセスするために使用されます。 これにより、ドメイン内の任意のコンピューター上のリソースに対する認証に使用できるドメイン ID が提供されます。 gMSA アカウントには、セットアップの後半で必要な管理者権限が付与されます。 この例では、アカウントを gMSAContoso と呼びます。
  2. 委任されるコマンドに対する権限を付与する必要があるユーザーを設定できる Active Directory グループを作成します。 この例では、ヘルプ デスクの担当者に、AD FS のロックアウト状態の読み取り、更新、およびリセットするアクセス許可が付与されます。 この例を通じて、このグループを JEAContoso と呼びます。

AD FS サーバーに gMSA アカウントをインストールする

AD FS サーバーに対する管理者権限を持つサービス アカウントを作成します。 これは、AD RSAT パッケージがインストールされている場合はリモートで、あるいはドメイン コントローラーで実行できます。 サービス アカウントは、AD FS サーバーと同じフォレストに作成する必要があります。

ご使用のファームの構成になるようサンプル値を変更します。

 # This command should only be run if this is the first time gMSA accounts are enabled in the forest
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10)) 

# Run this on every node that you want to have JEA configured on
$adfsServer = Get-ADComputer server01.contoso.com

# Run targeted at domain controller
$serviceaccount = New-ADServiceAccount gMSAcontoso -DNSHostName <FQDN of the domain containing the KDS key> -PrincipalsAllowedToRetrieveManagedPassword $adfsServer –passthru

# Run this on every node
Add-ADComputerServiceAccount -Identity server01.contoso.com -ServiceAccount $ServiceAccount

AD FS サーバーに gMSA アカウントをインストールします。 これは、ファーム内のすべての AD FS ノードで実行する必要があります。

Install-ADServiceAccount gMSAcontoso

gMSA アカウントに管理者権限を付与する

ファームで代理管理を使用している場合は、管理者アクセスを委任した既存のグループに追加することにより、gMSA アカウントに管理者権限を付与します。

ファームで代理管理を使用していない場合は、すべての AD FS サーバー上のローカル管理グループにすることで、gMSA アカウントに管理者権限を付与します。

JEA ロール ファイルを作成する

AD FS サーバーで、メモ帳ファイルに JEA ロールを作成します。 ロールを作成する手順については、「JEA ロールの機能」を参照してください。

この例で委任されるコマンドレットは Reset-AdfsAccountLockout, Get-ADFSAccountActivity, and Set-ADFSAccountActivity です。

'Reset-ADFSAccountLockout'、'Get-ADFSAccountActivity'、および 'Set-ADFSAccountActivity' コマンドレットのアクセスを委任する JEA ロールのサンプル:

@{
GUID = 'b35d3985-9063-4de5-81f8-241be1f56b52'
ModulesToImport = 'adfs'
VisibleCmdlets = 'Reset-AdfsAccountLockout', 'Get-ADFSAccountActivity', 'Set-ADFSAccountActivity'
}

JEA セッション構成ファイルを作成する

手順に従って、JEA セッション構成ファイルを作成します。 構成ファイルにより、JEA エンドポイントを使用できるユーザーと、アクセスできる機能が決定されます。

ロール機能は、ロール機能ファイルのフラット名 (拡張子のないファイル名) によって参照されます。 同じフラット名を持つ複数のロール機能がシステムで使用できる場合、PowerShell では暗黙的な検索順序を使用して、有効なロール機能ファイルを選択します。 同じ名前を持つすべてのロール機能ファイルへのアクセスは提供されません。

ロール機能ファイルをパスで指定するには、RoleCapabilityFiles 引数を使用します。 サブフォルダーの場合、JEA では RoleCapabilities サブフォルダーを含む有効な PowerShell モジュールが検索されます。ここでは、RoleCapabilityFiles 引数を RoleCapabilities に変更する必要があります。

セッション構成ファイルのサンプル:

@{
SchemaVersion = '2.0.0.0'
GUID = '54c8d41b-6425-46ac-a2eb-8c0184d9c6e6'
SessionType = 'RestrictedRemoteServer'
GroupManagedServiceAccount =  'CONTOSO\gMSAcontoso'
RoleDefinitions = @{ JEAcontoso = @{ RoleCapabilityFiles = 'C:\Program Files\WindowsPowershell\Modules\AccountActivityJEA\RoleCapabilities\JEAAccountActivityResetRole.psrc' } }
}

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

テキスト エディターを使用して pssc ファイルを手動で編集した場合は、構文が正しいことを確認するために、セッション構成ファイルをテストすることを推奨します。 セッション構成ファイルがこのテストに合格しない場合、システムに正常に登録されていません。

JEA セッション構成を AD FS サーバーにインストールします

JEA セッション構成を AD FS サーバーにインストールします

Register-PSSessionConfiguration -Path .\JEASessionConfig.pssc -name "AccountActivityAdministration" -force

運用手順

設定が完了したら、JEA のログ記録と監査を使用して、正しいユーザーが JEA エンドポイントにアクセスできるかどうかを判断できます。

委任されたコマンドを使用するには:

Enter-pssession -ComputerName server01.contoso.com -ConfigurationName "AccountActivityAdministration" -Credential <User Using JEA>
Get-AdfsAccountActivity <User>