web-dev-qa-db-ja.com

GPO Windows7以降には適用されません

2つのドメインコントローラーがあります。プライマリはWindowsServer 2008 R2で動作し、セカンダリはWindows Server2012で動作します。

プライマリコントローラーでGPOを作成すると、すべてのファイルとスクリプトとともに、すぐにセカンダリドメインコントローラーにコピーされます。

[ユーザーの構成]セクションのGPO)で、システム環境変数を設定し、デスクトップにフォルダーとそのショートカットを作成します。

GPOスコープのセキュリティフィルタリングには、ドメインコントローラーのUsersフォルダーにあるユーザーのグループが含まれます。そこに入るメンバーは、異なる組織単位に配置されています。

http://i.stack.imgur.com/MBZez.png

http://i.stack.imgur.com/QTIIP.png

Windows XP SP3を実行しているコンピューターにログオンした場合、ポリシーはgpupdate /forceの実行直後または実行後に実行されます。オペレーティングシステムのバージョンがWindows7以降(Windows 8.1、Windows 10)のコンピューターの場合-ポリシーは機能せず、ユーザーには適用されません。

gpresult /scope user /z > c:\gpo_dump.logで、ユーザーは必要なグループのメンバーですが、適用されたGPOセクションと受け入れられていないGPOセクションでGPOが見つかりません。なぜですか?gpupdate /forceといくつかを実行します。再起動しても役に立ちません。

2
Vladimir Z.

あなたの質問の日付に基づいて、私はあなたの問題に対する答えを知っていると信じています。

2016年6月14日にリリースされたMSセキュリティ更新プログラムがあり、ユーザー設定でGPOの動作が変更されました。たくさん

これまで、ユーザー設定のあるすべてのGPOは、ユーザーセキュリティコンテキストで適用されていました。したがって、ユーザーがセキュリティフィルタリングにリストされている限り、ポリシーが適用されます(ユーザーがそれを持っている場合)。

ただし、MSの更新後の動作では、コンピューターのコンテキストで適用されます。したがって、セキュリティフィルタリングにユーザーまたはグループが含まれている場合、ポリシーのユーザー設定を適用するだけでは不十分です。また、ユーザーがGPOにアクセスするコンピューターの読み取りアクセス許可が必要です。セキュリティフィルタリングにリストする必要はありませんが、コンピューターまたはこのコンピューターがメンバーになっているグループに、少なくともREADアクセス許可(GPO委任タブ)を追加する必要があります。

したがって、基本的に、userAがcomputerBから接続している場合、userAはセキュリティフィルタリングにリストされ、computerBはGPOに対するREAD権限(ポリシーの適用権限ではない)を持っている必要があります。このリンクを参照してください Deploy MS16-072 すべてを説明し、影響を受けるGPOを修復するためのスクリプトも提供します。 MSは、認証されたユーザーのREADアクセス許可をすべてのGPOに追加することを提案しています(スクリプトが提供する目的です)が、ドメインコンピューターの方が少し安全だと思います。

これは何週間も私を悩ませてきました。一部のGPOが突然機能しなくなった理由がわかりませんでした。これがすべてです。制限のないGPOが適用されていたため、完全に安全でない環境を非常に長い間実行していたため、このような大規模な変更がより多くの人に知られるようになれば幸いです。私はすべきだと知っていますが、私が適用しているすべてのMSアップデートについて実際には読んでいません。これがあなたのケースに役立つことを願っています。

これは、認証されたユーザーの読み取りアクセス許可を、認証されたユーザーのアクセス許可を持たないすべてのGPOに追加するためのスクリプトです。

    # Copyright (C) Microsoft Corporation. All rights reserved.

$osver = [System.Environment]::OSVersion.Version
$win7 = New-Object System.Version 6, 1, 7601, 0

if($osver -lt $win7)
{
    Write-Error "OS Version is not compatible for this script. Please run on Windows 7 or above"
    return
}

Try
{
    Import-Module GroupPolicy
}
Catch
{
    Write-Error "GP Management tools may not be installed on this machine. Script cannot run"
    return
}

$arrgpo = New-Object System.Collections.ArrayList

foreach ($loopGPO in Get-GPO -All)
{
    if ($loopGPO.User.Enabled)
    {
        $AuthPermissionsExists = Get-GPPermissions -Guid $loopGPO.Id -All | Select-Object -ExpandProperty Trustee | ? {$_.Name -eq "Authenticated Users"}
        If (!$AuthPermissionsExists)
        {
            $arrgpo.Add($loopGPO) | Out-Null
        }
    }
}

if($arrgpo.Count -eq 0)
{
    echo "All Group Policy Objects grant access to 'Authenticated Users'"
    return
}
else
{
    Write-Warning  "The following Group Policy Objects do not grant any permissions to the 'Authenticated Users' group:"
    foreach ($loopGPO in $arrgpo)
    {
        write-Host "'$($loopgpo.DisplayName)'"
    }
}

$title = "Adjust GPO Permissions"
$message = "The Group Policy Objects (GPOs) listed above do not have the Authenticated Users group added with any permissions. Group policies may fail to apply if the computer attempting to list the GPOs required to download does not have Read Permissions. Would you like to adjust the GPO permissions by adding Authenticated Users group Read permissions?"

$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", `
    "Adds Authenticated Users group to all user GPOs which don't have 'Read' permissions"
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", `
    "No Action will be taken. Some Group Policies may fail to apply"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $Host.ui.PromptForChoice($title, $message, $options, 0)  
$appliedgroup = $null
switch ($result)
{
    0 {$appliedgroup = "Authenticated Users"}
    1 {$appliedgroup = $null}
}
If($appliedgroup)
{
    foreach($loopgpo in $arrgpo)
    {
        write-Host "Adding 'Read' permissions for '$appliedgroup' to the GPO '$($loopgpo.DisplayName)'."
        Set-GPPermissions -Guid $loopgpo.Id -TargetName $appliedgroup -TargetType group -PermissionLevel GpoRead | Out-Null
    }
}

Authではなくドメインコンピューターの読み取り権限を設定することをお勧めする場合。ユーザーは、この0 {$appliedgroup = "Authenticated Users"}をその0 {$appliedgroup = "Domain Computers"}に変更するだけです。

明確化のための追加:

GPO設定を適用するコンピューター、ユーザー、またはグループをセキュリティフィルタリングにリストする必要があります。コンピュータユーザーまたはグループをセキュリティフィルタリングにリストするということは、事実上、コンピュータ、ユーザー、またはグループにGPOに対する2つのアクセス許可を与えることを意味します。1つのアクセス許可はREADで、もう1つはAPPLY THE GROUPPOLICYです。 [委任]タブには、GPOにアクセス許可をより詳細に割り当てるオプションがありますが、セキュリティフィルタリングタブにコンピューター、ユーザー、またはグループを追加すると、これら2つのアクセス許可で[委任]タブに表示されることを確認できます。読んで適用します。

コンピューター、ユーザー、またはグループを委任タブに追加し、読み取りアクセス許可を与えることにより、GPOを適用していません。あなたはそれがGPOを読むことを許可しているだけです。

要約しましょう-

  • GPOコンピューターの設定を適用するには、コンピューター(またはコンピューターが含まれるグループ)をセキュリティフィルターにリストする必要があります。
  • GPOユーザー設定を適用するには、セキュリティフィルタリングにユーザー(またはそのグループ)をリストする必要があります。また、ユーザーの元となるコンピューター(またはそのグループ)を指定する必要があります。 GPOにGPOのREAD権限にアクセスします。

これがあなたのためにそれを明らかにすることを願っています。

3
Vita