Visual Studio入りEC2環境に設定されるグループポリシーを調べてみた
しばたです。
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 Reserved
OU配下にLicenseManager
OUが作成され併せてVisual Studio利用に関連する各種リソースも生成されます。
LicenseManager
OU配下にはリージョン名と対になるOU(ここではNRT
OU[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における制限の基本となります。
他にLicenseManager
OUには内部管理用のユーザーやグループ、コンピューターオブジェクト[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 Reserved
OU配下にあるためユーザーが更新することは出来ず、ちょっとモヤモヤしますが放置するしかありません。
最後に
ざっくりですが以上となります。
Visual Studio入りEC2環境ではインスタンス毎にグループポリシー(マシンポリシー)が設定され接続可能ユーザーが制限されていることがわかりました。
インスタンスが所属するOUを変更することはできませんので独自のポリシーを設定したい場合はご注意ください。