Visual Studio入りEC2環境に設定されるグループポリシーを調べてみた

2022.08.31

しばたです。

Visual Studio入りAMI使ったEC2を利用するにはAWS License ManagerとAWS Managed Microsoft ADの連携が必要となります。
その際にAWS Managed Microsoft AD環境ではグループポリシー関連の設定がいくつか変更されます。

本記事ではこのグループポリシー関連の変更について調査した結果を共有します。

検証環境

以前の記事で作成した環境をそのまま使っています。

東京リージョンのVPCに用意したcorp.contoso.com Active Directoryドメイン環境となります。

AWS License Manager独自OU

AWS License ManagerとAWS Managed Microsoft ADを関連付けると、下図の様にAWS ReservedOU配下にLicenseManagerOUが作成され併せてVisual Studio利用に関連する各種リソースも生成されます。

この詳細について明記されたドキュメントは無い様で、以降の説明は一部推測を含みますのでご了承ください。

LicenseManagerOU配下にはリージョン名と対になるOU(ここではNRTOU *1)が作成されます。
Visual Studio入りAMIからEC2インスタンスを作成する都度ここにインスタンスIDと同名のOU(インスタンスID-OU)を作成して自分自身のコンピューターオブジェクトを配置し、専用のグループ(インスタンスID-user-group)を生成します。

AWS License Managerでインスタンスと利用ユーザーの関連付けを行うとこのグループに当該ユーザーが追加されます。

インスタンスIDと同名のOUにAWSが用意したグループポリシーを適用することでVisual Studio入りEC2インスタンスにRDP接続できるユーザーを制限しています。
これがVisual Studio入りEC2における制限の基本となります。

他にLicenseManagerOUには内部管理用のユーザーやグループ、コンピューターオブジェクト *2が準備されていることが見て取れます。

AWS License ManagerとAWS Managed Microsoft ADを関連付けると2つのサブネットにENIが生成されますが、そのうちの一つがこのコンピューターオブジェクトのIPとなります。 *3

謎の Visual Studio用グループ

また上図ではVISUAL_SUTUDIO_PROFESSIONAL-user-groupという名の"いかにも"という感じのグループが作成されていますが、今回私が検証した限りではこのグループは一切使われていませんでした。
何か専用の用途があるのか?将来に向けた予約なのか?ちょっと用途が見えない感じです。

(VISUAL_SUTUDIO_PROFESSIONAL-user-groupグループは常に中身が空)

Visual Studio入りEC2インスタンスに適用されるグループポリシー

次にグループポリシーの管理から実際に各インスタンスに適用されるグループポリシーを確認すると下図の様になっています。

各インスタンスのOUに

  • インスタンスID Access
  • VISUAL_STUDIO_PROFESSIONLAL インスタンスID Access

という2つのポリシーが適用されます。
適用順位はこんな感じです。

これらのポリシーの内容はほとんど同一で、

  • マシンポリシーで以下の制限を実施しており、ユーザーポリシーは一切無い
  • 主要なローカルアカウントに対して「ターミナル サービスを使ったログオンを拒否する」
  • インスタンスID-user-group(または VISUAL_SUTUDIO_PROFESSIONAL-user-group)に対して「ターミナル サービスを使ったログオンを許可」
  • Remote Desktop Usersグループの内容を インスタンスID-user-group(または VISUAL_SUTUDIO_PROFESSIONAL-user-group)のみに制限

といった制限を行っています。

(図はインスタンスID Accessの例)

加えて、

  • グループポリシーの更新間隔を 15 分ごとに変更 (デフォルトより短い間隔に変更)
  • バックグラウンドでのポリシー更新を許可

といった変更も加え、AWS側からポリシーの定期チェックおよび更新が出来る様にされています。

GPRESULTの結果

実際にインスタンスに適用される内容に関してはインスタンス内部からGPRESULTコマンドを実行することで確認できます。

Administratorsグループに所属するユーザーからgpresult /Zを実行した結果は以下の通りです。

長いのでクリックして展開
# サブスクリプションしたユーザーをAdministratorsグループに所属させたうえで実行
PS C:\> gpresult /Z

Microsoft (R) Windows (R) Operating System Group Policy Result tool v2.0
© Microsoft Corporation. All rights reserved.

Created on 8/29/2022 at 12:59:57 PM


RSOP data for corp\nobunaga on EC2AMAZ-PUO6QLN : Logging Mode
--------------------------------------------------------------

OS Configuration:            Member Server
OS Version:                  10.0.20348
Site Name:                   Default-First-Site-Name
Roaming Profile:             N/A
Local Profile:               C:\Users\nobunaga
Connected over a slow link?: No


COMPUTER SETTINGS
------------------
    CN=EC2AMAZ-PUO6QLN,OU=i-0d163b2b9bb1a8664-OU,OU=NRT,OU=LicenseManager,OU=AWS Reserved,DC=corp,DC=contoso,DC=com
    Last time Group Policy was applied: 8/29/2022 at 12:54:01 PM
    Group Policy was applied from:      WIN-L1NAOB74SFL.corp.contoso.com
    Group Policy slow link threshold:   500 kbps
    Domain Name:                        corp
    Domain Type:                        Windows 2008 or later

    Applied Group Policy Objects
    -----------------------------
        i-0d163b2b9bb1a8664 Access
        VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
        Default Domain Policy

    The following GPOs were not applied because they were filtered out
    -------------------------------------------------------------------
        Default Domain Policy
            Filtering:  Not Applied (Unknown Reason)

        Local Group Policy
            Filtering:  Not Applied (Empty)

    The computer is a part of the following security groups
    -------------------------------------------------------
        BUILTIN\Administrators
        Everyone
        Performance Log Users
        BUILTIN\Users
        NT AUTHORITY\NETWORK
        NT AUTHORITY\Authenticated Users
        This Organization
        EC2AMAZ-PUO6QLN$
        Domain Computers
        Authentication authority asserted identity
        System Mandatory Level

    Resultant Set Of Policies for Computer
    ---------------------------------------

        Software Installations
        ----------------------
            N/A

        Startup Scripts
        ---------------
            N/A

        Shutdown Scripts
        ----------------
            N/A

        Account Policies
        ----------------
            GPO: Default Domain Policy
                Policy:            MaximumPasswordAge
                Computer Setting:  42

            GPO: Default Domain Policy
                Policy:            MinimumPasswordAge
                Computer Setting:  1

            GPO: Default Domain Policy
                Policy:            LockoutBadCount
                Computer Setting:  N/A

            GPO: Default Domain Policy
                Policy:            PasswordHistorySize
                Computer Setting:  24

            GPO: Default Domain Policy
                Policy:            MinimumPasswordLength
                Computer Setting:  7

        Audit Policy
        ------------
            N/A

        User Rights
        -----------
            GPO: i-0d163b2b9bb1a8664 Access
                Policy:            DenyRemoteInteractiveLogonRight
                Computer Setting:  Local account
                                   Local account and member of Administrators group

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Policy:            DenyRemoteInteractiveLogonRight
                Computer Setting:  Local account
                                   Local account and member of Administrators group

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Policy:            RemoteInteractiveLogonRight
                Computer Setting:  corp\VISUAL_STUDIO_PROFESSIONAL-user-group

            GPO: i-0d163b2b9bb1a8664 Access
                Policy:            RemoteInteractiveLogonRight
                Computer Setting:  corp\i-0d163b2b9bb1a8664-user-group

        Security Options
        ----------------
            GPO: Default Domain Policy
                Policy:            PasswordComplexity
                Computer Setting:  Enabled

            GPO: Default Domain Policy
                Policy:            ClearTextPassword
                Computer Setting:  Not Enabled

            GPO: Default Domain Policy
                Policy:            ForceLogoffWhenHourExpire
                Computer Setting:  Not Enabled

            GPO: Default Domain Policy
                Policy:            RequireLogonToChangePassword
                Computer Setting:  Not Enabled

            GPO: Default Domain Policy
                Policy:            LSAAnonymousNameLookup
                Computer Setting:  Not Enabled

            GPO: Default Domain Policy
                Policy:            @wsecedit.dll,-59058
                ValueName:         MACHINE\System\CurrentControlSet\Control\Lsa\NoLMHash
                Computer Setting:  1

        Event Log Settings
        ------------------
            N/A

        Restricted Groups
        -----------------
            GPO: i-0d163b2b9bb1a8664 Access
                Groupname: Remote Desktop Users
                Members:   corp\i-0d163b2b9bb1a8664-user-group

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Groupname: Remote Desktop Users
                Members:   corp\VISUAL_STUDIO_PROFESSIONAL-user-group

        System Services
        ---------------
            N/A

        Registry Settings
        -----------------
            N/A

        File System Settings
        --------------------
            N/A

        Public Key Policies
        -------------------
            N/A

        Administrative Templates
        ------------------------
            GPO: i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\System\GroupPolicyRefreshTimeOffset
                Value:       5, 0, 0, 0
                State:       Enabled

            GPO: i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\Group Policy\{827D319E-6EAC-11D2-A4EA-00C04F79F83A}\NoGPOListChanges
                Value:       0, 0, 0, 0
                State:       Enabled

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\System\GroupPolicyRefreshTime
                Value:       15, 0, 0, 0
                State:       Enabled

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\Group Policy\{827D319E-6EAC-11D2-A4EA-00C04F79F83A}\NoGPOListChanges
                Value:       0, 0, 0, 0
                State:       Enabled

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableBkGndGroupPolicy
                State:       disabled

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\Group Policy\{827D319E-6EAC-11D2-A4EA-00C04F79F83A}\NoBackgroundPolicy
                Value:       0, 0, 0, 0
                State:       Enabled

            GPO: VISUAL_STUDIO_PROFESSIONAL i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\System\GroupPolicyRefreshTimeOffset
                Value:       5, 0, 0, 0
                State:       Enabled

            GPO: i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableBkGndGroupPolicy
                State:       disabled

            GPO: i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\System\GroupPolicyRefreshTime
                Value:       15, 0, 0, 0
                State:       Enabled

            GPO: i-0d163b2b9bb1a8664 Access
                Folder Id: Software\Policies\Microsoft\Windows\Group Policy\{827D319E-6EAC-11D2-A4EA-00C04F79F83A}\NoBackgroundPolicy
                Value:       0, 0, 0, 0
                State:       Enabled


USER SETTINGS
--------------
    CN=織田 信長,OU=Users,OU=corp,DC=corp,DC=contoso,DC=com
    Last time Group Policy was applied: 8/29/2022 at 12:58:38 PM
    Group Policy was applied from:      WIN-0V8R0LCDTEA.corp.contoso.com
    Group Policy slow link threshold:   500 kbps
    Domain Name:                        corp
    Domain Type:                        Windows 2008 or later

    Applied Group Policy Objects
    -----------------------------
        N/A

    The following GPOs were not applied because they were filtered out
    -------------------------------------------------------------------
        Local Group Policy
            Filtering:  Not Applied (Empty)

    The user is a part of the following security groups
    ---------------------------------------------------
        Domain Users
        Everyone
        BUILTIN\Administrators
        BUILTIN\Users
        Performance Log Users
        Remote Desktop Users
        REMOTE INTERACTIVE LOGON
        NT AUTHORITY\INTERACTIVE
        NT AUTHORITY\Authenticated Users
        This Organization
        LOCAL
        Authentication authority asserted identity
        i-0d163b2b9bb1a8664-user-group
        AWS Delegated Add Workstations To Domain Users
        High Mandatory Level

    The user has the following security privileges
    ----------------------------------------------

        Bypass traverse checking
        Manage auditing and security log
        Back up files and directories
        Restore files and directories
        Change the system time
        Shut down the system
        Force shutdown from a remote system
        Take ownership of files or other objects
        Debug programs
        Modify firmware environment values
        Profile system performance
        Profile single process
        Increase scheduling priority
        Load and unload device drivers
        Create a pagefile
        Adjust memory quotas for a process
        Remove computer from docking station
        Perform volume maintenance tasks
        Impersonate a client after authentication
        Create global objects
        Change the time zone
        Create symbolic links
        Obtain an impersonation token for another user in the same session
        Increase a process working set

    Resultant Set Of Policies for User
    -----------------------------------

        Software Installations
        ----------------------
            N/A

        Logon Scripts
        -------------
            N/A

        Logoff Scripts
        --------------
            N/A

        Public Key Policies
        -------------------
            N/A

        Administrative Templates
        ------------------------
            N/A

        Folder Redirection
        ------------------
            N/A

        Internet Explorer Browser User Interface
        ----------------------------------------
            N/A

        Internet Explorer Connection
        ----------------------------
            N/A

        Internet Explorer URLs
        ----------------------
            N/A

        Internet Explorer Security
        --------------------------
            N/A

        Internet Explorer Programs
        --------------------------
            N/A

インスタンスID Accessの方のポリシーが優先して設定されていることが分かりますね。
補足としてgpresult /Hの結果を一部抜粋しておきます。

こちらの方がぱっと見で分かりやすいかもしれません。

余談 : インスタンス削除後の挙動

インスタンスを削除したあともAWSによって自動生成されるOUやグループポリシーは削除されずに残ったままでした。
AWS ReservedOU配下にあるためユーザーが更新することは出来ず、ちょっとモヤモヤしますが放置するしかありません。

最後に

ざっくりですが以上となります。

Visual Studio入りEC2環境ではインスタンス毎にグループポリシー(マシンポリシー)が設定され接続可能ユーザーが制限されていることがわかりました。
インスタンスが所属するOUを変更することはできませんので独自のポリシーを設定したい場合はご注意ください。

脚注

  1. AWSでは内部的なリージョンの省略名として空港コードが使われることがよくある
  2. OSはWindows Server 2019でした
  3. もうひとつは予備系と推測されます。