2017年3月8日 星期三

2017資訊新視野,建構雲端資安堡壘-台灣碩軟SoftwareONE


    
    隨著科技的進步,數位轉型的風潮因應而來,在企業數位轉型的浪潮下,生活中越來越多服務走向科技化, 像是透過機器人就能進行財富管理、點選手機App就能使用金融服務、IoT物聯網技術的成熟、用來分享生活點點滴滴的社群軟體,不只能讓彼此輕鬆的交流,也是企業與消費者溝通的最密切的管道。




    然而科技使生活變得更便利,也為企業帶來更大的風險,除了使用者,尤其是高階管理者,一個看似平常的動作就有可能引來駭客入門而不自知,舉例來說:用手機瀏覽E-mail並下載附件檔,病毒也夾帶在其中進駐到手機裡,再透過手機入侵辦公室電腦裡,除此之外,點選Facebook上朋友分享的網址,埋伏在網頁裡的惡意程式就自動執行,默默竊取機密資料。




    很多企業都以為,資安事件的發生是因為攻擊技術不斷演進,讓企業防不勝防,但其實大多數資安事件的發生原因主要還是在於「人」,員工缺乏危機意識,常常做出資安風險高的行為,像是點開釣魚郵件的附件檔,造成惡意程式或是病毒入侵,因此資安是企業穩定成長與軟體投資最大化的重要關鍵。




    除了上述的人為因素外,企業本身的完整資安防範架構也很重要,擁有完整的資安防範架構,才能避免未知的資安事件發生,台灣碩軟即將在4/7舉辦了一場關於資安的活動,此次活動將會匯集在各領域的專家們,分享他們如何協助企業打造全方位新型態的防護攻略,引領企業相關決策者擁有更縝密的思維成為跨時代資訊的領航家外,也藉由他們多年的實務經驗向大家分享在許多企業內部的所遭遇到的實務經驗。您還在為了企業中的資安風險而煩惱嗎?或者是您對資安還有許多疑惑嗎?那你絕對不能錯過此次的活動,心動不如馬上行動。



詳細活動內容網址:http://sophielai.wixsite.com/softwareone20170407



千載難逢的機會,萬萬不要錯過 !

2016年12月21日 星期三

Windows Server 2016 新功能-漸進式Hyper-V叢集升級



    繼上篇介紹了Windows Server 2016 Hyper-V-Nested Virtualization功能後,此篇來介紹Windows Server 2016另一個新功能,那就是漸進式Hyper-V叢集升級,在開始之前,先來說明一下容錯移轉叢集,什麼是容錯移轉叢集呢?容錯移轉叢集是多部伺服器組成一組獨立的伺服器,這些叢集伺服器(稱為節點, Node)均執行相同的作業系統,共同運作以提升服務與應用程式的可用性。當叢集內一部伺服器發生故障時,資源會被重新導向,工作量也會重新分配給叢集內的其他成員。使用容錯移轉叢集,可確保使用者可以幾乎不間斷的存取重要的伺服器資源。


    現在,管理者可以將Windows Server 2016主機,加入至現有Windows Server 2012 R2的Hyper-V叢集當中,然後逐台將Windows Server 2012 R2主機上的虛擬主機,陸續遷移到Windows Server 2016的主機上。依序升級Windows Server 2012 R2主機為Windows Server 2016的版本之後,最後可透過Powershell指令「Update-ClusterFunctionLevel」來升級整個Hyper-V容錯移轉叢集的功能版本。但是有一點要特別注意的是,一旦升級為Windows Server 2016的Hyper-V容錯移轉叢集功能版本之後,就無法降級回原本的Windows Server 2012 R2 叢集功能版本。下圖為漸進式升級Hyper-V叢集版本的架構圖。





     當Hyper-V叢集處於「Mixed OS Mode」的運作模式時(同時存在Windows Server 2016與Windows Server 2012 R2),會有以下限制: 
  • 只能由Windows Server 2016來管理Hyper-V叢集、Hyper-V節點主機、虛擬主機。 
  • Windows Server 2016的Hyper-V功能特色還無法使用,須等到所有Hyper-V從集結點都升級為Windows Server 2016版本以及Hyper-V叢集功能等級升級之後才能使用。 
  •  在Windows Server 2012 R2主機上的虛擬機器版本,也必須等到叢集節點升級為Windows Server 2016及Hyper-V叢集功能等級升級之後,才能升級虛擬主機版本。 

※管理人員隨時可以使用 PowerShell 指令「Get-VM | select name, version」,來查詢 VM 虛擬主機版本(如下圖所示)。




接下來來為大家介紹容錯叢集漸進式升級整個流程:

一、必須在Windows Server 2012 R2 叢集中進行
  • 所有叢集節點OS版本都為Windows Server 2012 R2 
  • 此時的運作架構支援容錯移轉叢集漸進式升級條件

















二、遷移叢集節點的工作負載至其他伺服器 
  •  此叢集節點進入暫停模式














三、該叢集節點退出容錯移轉叢集















四、重新建立叢集節點
  • 安裝Windows Server 2016 
  • 安裝及設定容錯移轉叢集組態配置














五、新節點重新加入Windows Server 2012 R2 容錯移轉叢集
  • 使用容錯移轉叢集管理員或透過PowerShell加入Windows Server 2016叢集節點 
  • 此時叢集功能等級仍為Windows Server 2012 R2















六、遷移回原有的工作負載至新節點
  • 將工作負載遷移至新加入的Windows Server 2016叢集節點
  • 驗證相關功能是否正常














七、重新執行叢集節點OS版本升級程序
  • 進入維護模式並退出叢集 
  • 安裝Windows Server 2016、設定容錯移轉叢集組態配置 
  • 加入叢集,將工作負載遷回Windows Server 2016叢集節點
















八、所有叢集節點順利升級為新版本Windows Server 2016
  •  叢集功能等級仍為Windows Server 2012 R2 
  • 功能特色仍為Windows Server 2012 R2 
  • 若有Windows Serve 2012 R2主機,仍可以加入容錯移轉叢集中














九、升級叢集功能等級至Windows Server 2016 
  • 執行PowerShell指令「Update-ClusterFunctionLevel」 
  • 支援Windows Server 2016 新增功能特色 
  • Windows Server 2012 R2主機無法加此叢集















2016年12月20日 星期二

Windows Server 2016 Hyper-V 強大新功能-巢狀虛擬化)


    在Hyper-V虛擬化平台舊版本中,要實作出Nested Virtaulization的環境非常困難。但是從Windows Server 2016 TP4(10565)版本之後,Hyper-V開始支援「Nested Virtualization」機制,往後要建置Lab環境將更容易了。接下來用圖來說明舊版與新版的差別。



圖片參考來源:MSDN-Nested Virtualization


    在以前舊版的Hyper-V虛擬化平台,僅支援Level 0、Level 1的運作架構。現在,新版的Hyper-V Hypervisor(Level 1)中,再產生出一層Hyper-V Hypervisor(Level 2),並且可運作Guest OS。(如下圖所示)
圖片參考來源:MSDN-Nested Virtualization




但是,Hyper-V必須在以下的環境需求才可作Nested Virtualization:

  • 實體主機CPU必須搭載Intel VT-xEPT技術的處理器。 
  • 作業系統必須為Windows Server 2016(Standard , Datacenter)Windows 10周年更新版(Enterprise, Professional, Education) 
  • Nested VM 至少要指派4GB虛擬記憶體空間。
  • VM虛擬主機必須啟用vCPU Virtualization Extensions功能。 
  • VM 虛擬主機必須啟用MAC Address Spoofing 功能。 
  •  Level 1的Hyper-V Hypervisor 及 Level 2的Hyper-V Hypervisor,應該採用相同版本。 

Level 2上運作的VM(Nested VM)的限制: 
  • 上層的Device Guard機制無法套用 
  • 上層的VBS(Virtualization Based Security)機制無法套用 
  • 必須停用VM動態記憶體功能 
  • Runtime Memory Resize機制會失敗 
  • Checkpoint會失敗 
  • Live Migration會失敗 
  • Save/Restore會失敗

現在,讓我們來實作Hyper-V Nested Virtualization吧

一開始,在Level 1Hyper-V Host中,所建立的WINSER-2016虛擬主機採用Coreinfo檢查後發現,目前此虛擬主機尚未知道母體的虛擬化功能。此時,在此虛擬主機上安裝Hyper-V 伺服器角色時,將會失敗(如下圖所示)。


 
要解決此問題,需在Level 1 Hyper-V Host 中,執行下列指令將Hyper-V Host的硬體輔助虛擬化技術傳送給WINSER-2016此虛擬機器。前提是Hyper-V Host 支援Intel VT-x /EPT。但在執行這些指令時,必須先將WINSER-2016此虛擬機器關機。否則在執行vCPU Virtualization Extensions的動作時,會執行失敗(如下圖所示)。

Step1:開啟Powershell輸入以下指令執行vCPU Virtualization Extensions

Set-VMProcessor –VMName <VMName> -ExposeVirtualizationExtensions $true (此LAB中的VM名稱為WINSER-2016)
※因為未將虛擬機器關機而執行此指令,所以出現執行失敗的錯誤訊息


Step2:將此VM 關機,再次執行此指令,成功將WINSER-2016此虛擬主機開啟「vCPU Virtualization Extensions」的功能。 (如下圖所示)。




Step3:執行「Get-VMProcessor –VMName WINSER-2016 |fl」確認WINSER-2016虛擬主機的ExposeVirtualizationExtensions已開啟(如下圖所示)。



Step4:此時,再透過Cortinfo檢查後發現,目前虛擬主機已經知道母體的虛擬化功能。接著再次在WINSER-2016虛擬主機上安裝Hyper-V 伺服器角色時,就可順利安裝了(如下圖所示)。





Step5:執行此指令「Set-VMMemory –VMName WINSER-2016 –DynamicMemoryEnable $false」將WINSER-2016虛擬機器的動態記憶體關閉(如下圖所示)。



Step6:執行此指令「Get-VMNetworkAdapter –VMName WINSER-2016 |Set-VMNetworkAdapter –MacAddressSpoofing On」來啟用MAC Address Spoofing功能,避免建立的Guest OS 會發生網路連線不通的情況(如下圖所示)。



完成以上步驟的設定,接下來在WINSER-2016虛擬主機開啟Hyper-V Manager,來建立一台虛擬機WINSER-2016-2,看看是否會成功(如下圖所示)

WINSER-2016-2已建立成功,並可安裝Guest OS。


安裝完畢後,可看到此結果,在SWOTW-LAB(實體主機)上有一台WINSER-2016的虛擬主機,在WINSER-2016(虛擬主機)上還有一台WINSER-2016-2的虛擬主機,表示Hyper-V Nested Virtualization成功。透過同樣的組態設定方式,還可以在Level 3 (WINSER-2016-2)的虛擬主機啟用Guest Hypervisor功能,建立出Level 4的虛擬主機,大家如果有興趣,不妨可以實作看看。







Container v.s Virtual Machine

    先前提到了什麼是Container,看完之後可能會對Container與虛擬機器之間的差別有些困惑,現在來說明一下他們之間的差異


    以技術層面來說,Container與虛擬機器雖然都是屬於虛擬化的技術,兩者的目標都是為了將一套應用程式所需的執行環境打包起來,建立一個獨立的環境,方便在不同的硬體中移動,但兩者的運作思維截然不同,簡單來說,常見的傳統虛擬化技術像是vSphere或Hyper-V是以作業系統為中心,而Container技術則是一種以應用程式為中心的虛擬化技術。







     一般常見的虛擬機器和Container之間最明顯的差異就是,虛擬機器需要安裝作業系統(Guest OS)才能執行應用程式,而Container內不需要安裝作業系統就能執行應用程式。Container技術不是在OS外建立虛擬環境,而是在OS內的核心系統層來打造虛擬執行環境,透過共用Host OS的作法,取代一個一個Guest OS的功用,所以建立Container不需要等待作業系統開機時間,因此被稱為輕量級虛擬化技術。而傳統的虛擬機器需要數分鐘至數十分鐘的時間才能開啟。




Windows Container

Container是什麼?

    Container技術近年在雲端虛擬化應用的蓬勃發展之際,以及Docker、Google等國際系統廠商所引領的風潮下迅速發展,將Container技術系統化建構及運用模式推向另一個層次,促使全球資訊產業重新思考新型態的應用服務架構。看到這邊,或許有些人對Container這個詞還是有些陌生,接下來來介紹一下什麼是Container吧,首先透過以下的圖,讓大家能更清楚Container的架構






   
     Container(容器)技術是一種以應用程式為中心的虛擬化技術,不需要安裝Guest OS,更方便地將應用程式所需的執行環境封裝起來,簡化複雜的IT架構方便管理、移動或部署各種應用程式,而不需要開發人員自行管理「執行這個應用程式所需的眾多目錄與大量檔案」。


    傳統虛擬化技術從作業系統層著手,目標是建立一個可以用來執行整套作業系統的沙箱獨立執行環境,習慣以虛擬機器(Virtual Machine)來稱呼。虛擬機器以軟體模擬出vCPU、vRAM等實體伺服器的功能,讓作業系統看起來是處於實體機器中,所以可以在這個虛擬機器中安裝各種作業系統,接著安裝應用程式所需的執行環境,例如:資料庫程式、Web伺服器、中介軟體等。傳統的虛擬化技術能將軟體和硬體的相依關係切開,讓軟體盡可能地不用綁定於特定廠牌或規格的硬體。
    

    傳統虛擬機器的優點是安全性高,對作業系統而言,看起來就像在一台正常的實體機器中,就算多個虛擬機器在同一台實體伺服器中執行,虛擬機器間也不會知道彼此的存在。因此出現了Host OSGuest OS的架構,Host OS負責執行虛擬化的平台,Guest OS則在虛擬化平台內建立虛擬機器。


    但是將作業系統打包進虛擬機器的後果是,任何虛擬機器都必須先安裝好一套作業系統後才可以開始執行應用程式,不僅導致虛擬機器的建立速度,受限於作業系統的開機速度,必須等上數十秒到數分鐘才能新增一個虛擬機器。虛擬機器的映像檔所需容量也不小,即使要執行的程式碼只有10 KB,也必須安裝一整套上百MB的作業系統軟體才行。執行作業系統本身也得消耗不少的運算資源,假設一台實體伺服器內要執行100個虛擬機器,就等同於要執行一百套Guest OS,即使虛擬化技術有許多改良來解決運算資源的利用率,但Guest OS仍然瓜分了不少應用程式能用的實際運算資源。


    另外一種虛擬技術Container,不是在OS外來建立虛擬環境,而是在OS內的核心系統層來建置虛擬機器,透過共用Host OS的作法,取代多個Guest OS的功用。Container也因此被稱為OS層的虛擬化技術。


    Container直接將一個應用程式所需的相關程式碼、函數庫、環境配置檔都打包起來,並建立了嚴格的資源控管機制來分配Host OS上的系統資源,避免因這個Container占用資源或當機時,而影響了Host OS或其他Container的執行。


    因為Container是利用系統核心控管機制來分配Host OS資源,也就不需要另外安裝Guest OS個別管理。換句話說,當一台實體伺服器內建立了100個Container時,這100個Container共用一個Host OS的核心,再利用OS內建機制來分配每一個Container可用的資源。因為Container不需要執行OS,因此一台實體伺服器可以執行的Container數量,遠遠超過傳統虛擬化技術的虛擬機器,甚至可以有數倍的差異。一台有能力執行100個測試環境VM的實體伺服器,通常能執行2、3百個用Container提供的測試環境。這批Container的映像檔案所需儲存空間,也因為不用安裝整套OS而比用VM映像檔來得少。不論處理器資源或儲存空間的利用上,Container技術都遠優於伺服器虛擬化技術。




2016年12月19日 星期一

Operation Management Suite-Experience


    
    繼上次介紹過OMS之後,這次要更深入的探討OMS,OMS這陣子有些微的改變,OMS目前分為四大區塊:Insight and Analytics(洞察力與分析)、Security and Compliance(安全性與法規遵循)、Automation and Control(自動化與控制)、Protection and Recovery(保護與復原)。現在透過下面這張圖來介紹這四大區塊的主要功能:



    以往要使用OMS必須要有Azure訂閱、以及申請一個OMS的帳號,對許多使用者來說可能覺得很麻煩,但是現在Microsoft提供使用者去體驗OMS,讓使用者更加了解OMS,不過要提醒使用者體驗Microsoft所提供的OMS只有Read-Only的權限。接下來來跟大家分享如何去體驗OMS 
輸入個人資訊並選擇scenario,Experience OMS的scenario一次只能四擇一
註: Atomation and Control(自動化與控制)與Protection and Recovery(保護與復原)的Experience是透過影片讓使用者去了解


  • Step2:輸入完個人資訊及選好scenario之後,勾選 “ I accept the terms and conditions”,選擇Get Started,按下Get Started之後,會跳出一個Download PDF的視窗,這個PDF檔會有Step-By-Step教學,教使用者如何使用,Download PDF之後就會進入到Experience的頁面。


Experience OMS (Insight and Analytics)介紹:

註: 若要體驗Security and Compliance(安全性與法規遵循)也是一樣的Step


    由上圖可看到,右上角有OMS的警示提醒、語言變更、對OMS新增項目的建議、文件、所使用的方案類型及工作區名稱等資訊,由於是體驗版本,所以工作區名稱為OMS-Experience-Center-2016,訂閱版本可自行新增多個工作區來做管理。接下來一一介紹各個體驗功能:


1.概觀(Overview):
    在紅色框線內的是OMS所提供的方案庫,可以看到AD的一些相關資訊、Container、Update Management、Application Insight、Security and Audit、Agent Health 、SQL Assessment …等,OMS比較特別的,方案庫除了監視Microsoft以外,也可看到VMware上的VM狀態。因為是體驗版本,所以使用者不可修改此頁面的內容,訂閱版則可自訂方案庫。


2.記錄搜尋(Log Search)







3.儀表板(My Dashboard)
    Experience不可自訂儀表板,訂閱版可以自訂想要檢視的項目,並且可針對項目做編輯,並且調整磚的視覺效果(以下圖為Experience與訂閱的不同)



4.使用方式(Usage)


    看完以上的介紹, 相信大家對於OMS應該更了解,OMS比起以往有許多的改變,大家不妨可以親自來體驗看看

Microsoft Azure IaaS 核心服務與虛擬機器

    繼上次談過雲端運算及Microsoft Azure之後,今天來介紹一下Azure的IaaS核心服務與虛擬機器類型,IaaS(基礎結構即服務)是透過網際網路部署及管理的立即基礎結構。視需求快速地相應增加及減少,並只需支付所使用項目的費用。無須購買及管理自己的實體伺服器及其他資料中心基礎結構,避免其所產生的費用及複雜性。舉例來說:像是售票系統,當有大型演唱會或是表演活動舉辦時,購票人數突然大增,業者無須為了此場活動而另外去架設系統,只需透過租用方式,當活動購票結束時,則可停止租用。每個資源都作為獨立服務元件提供,而使用者只需租用所需要的項目。當使用者購買、安裝、設定及管理自己的軟體時,雲端服務提供者會管理基礎結構。

    企業通常會利用IaaS進行「測試與開發」、「虛擬主機」、「儲存體、備份與復原」、「Web應用程式」、「高效能運算」、「巨量資料分析」,透過IaaS,可減少成本、改善續性與災害復原、極速創新、更快速地因應變動的狀況、聚焦於核心業務、提升穩定性及可靠性與支援、更加的安全性、讓新的應用程式更快到使用者手中。接下來開始來介紹Azure IaaS服務:


    由上面的圖可以看到,Azure IaaS提供了Compute、Storage、Networking,使用者可以依照自己的需求去建置環境,這些服務的基礎架構則由Azure去管理,使用者無需自行去管理,減少使用者的負擔。此外需要注意,Azure的IaaS有兩種管理Portal,一種是服務管理(Azure Service Management , ASM),另一種則是資源管理員(Azure Resource Manager , ARM)。ARM所建立的虛擬機器無法在ASM Portal上做管理,但是ARM可同時管理ASM與ARM。下圖為ASM與ARM的差別:



    看完了ASM與ARM的差別,接著向大家介紹Microsoft Azure 所提供的Virtual Machine有哪幾種類型,客戶可根據需求選擇適合的虛擬機器類型。而Azure上的Windows Virtual Machine主要有分為以下這幾種類型:

參閱網址: https://docs.microsoft.com/zh-tw/azure/virtual-machines/virtual-machines-windows-sizes?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json

  • D 系列 VM 是為了執行要求更高計算能力和暫存磁碟效能的應用程式所設計。 D 系列 VM 提供更快的處理器、較高的記憶體與核心比率,以及適用於暫存磁碟的固態硬碟 (SSD) 
  • Dv2 系列是原始 D 系列的延續,擁有更強大的 CPU。 Dv2 系列 CPU 比 D 系列 CPU 快約 35%。 它以最新一代的 2.4 GHz Intel Xeon® E5-2673 v3 (Haswell) 處理器為基礎,搭配 Intel Turbo Boost Technology 2.0,最高可達 3.1 GHz。 Dv2 系列的記憶體和磁碟組態和 D 系列一樣。 
  • F 系列是以 2.4 GHz Intel Xeon® E5-2673 v3 (Haswell) 處理器為基礎,在 Intel Turbo Boost Technology 2.0 的搭配下,時脈速度最高可達 3.1 GHz。 這是與 Dv2 系列 VM 同等級的 CPU 效能。 F 系列的每小時訂價較低,在 Azure 產品組合中,就每一核心的「Azure 計算單位」(ACU) 而言,具有最佳的價格/性能比表現。 
        F 系列也導入了新的 Azure VM 大小命名標準。 針對此系列及未來發行的 VM 大小,系列名稱字母後的數值將會對應 CPU 核心數目。 額外功能 (例如針對進階儲存體最佳化) 將會以 CPU 核心計數後的字母指定。 此命名格式將用於未來發行的 VM 大小,但不會回溯變更任何現有已發行之 VM 大小的名稱。 
  • G 系列 VM 提供最大的記憶體,並且是在具有 Intel Xeon E5 V3 系列處理器的主機上執行。 
  • DS 系列、DSv2 系列、Fs 系列及 GS 系列 VM 可以使用「進階儲存體」,此儲存體可為需要大量 I/O 的工作負載,提供高效能、低延遲的儲存體。 這些 VM 會使用固態硬碟 (SSD) 來裝載虛擬機器的磁碟,還可提供本機 SSD 磁碟快取。 僅特定地區可用進階儲存體。 
  • A 系列 VM 可以部署在各種不同的硬體類型和處理器上。 根據硬體節流大小,為執行中的執行個體提供一致的處理器效能,不論硬體部署的位置 。
  • A0 大小是在實體硬體上過度訂閱。 僅針對這個特定大小,其他客戶部署可能會影響您正在執行的工作負載的效能。 以下概述的相對效能為預期的基準,受限於近似變化性的 15%。 
     虛擬機器的大小會影響定價。 大小也會影響虛擬機器的處理、記憶體和儲存體容量。 儲存體成本會分別根據儲存體帳戶中使用的頁面來計算。

    下列考量可協助用戶決定大小:
  • A8-A11 和 H 系列大小也稱為 計算密集型執行個體。 執行這些大小的硬體是針對計算密集型和網路密集型應用程式 (包括高效能運算 (HPC) 叢集應用程式)、模型化及模擬而設計及最佳化的。 A8-A11 系列使用 Intel Xeon E5-2670 @ 2.6 GHZ,而 H 系列使用 Intel Xeon E5-2667 v3 @ 3.2 GHz(註:A8及A9支援RDMA,A10及A11沒有支援RDMA) 。
  • Dv2 系列、D系列、G 系列以及對應的 DS/GS 是要求更快速的 CPU、更好的本機磁碟效能,或有更高記憶體需求之應用程式的最佳選擇。 它們為許多企業級應用程式提供了強大的組合。 
  • 對於需要較快的 CPU 但每一 CPU 核心不需要太多記憶體或本機 SSD 的工作負載來說,F 系列 VM 是一個絕佳選擇。 分析、遊戲伺服器、Web 伺服器及批次處理之類的工作負載都將因 F 系列的實用性而受益。

下列圖表為將上面的虛擬機器類型統整為一個表格:




效能考量:

    「Azure 運算單位」(ACU) 概念來提供一種比較各個 Azure SKU 之運算 (CPU) 效能的方法。 這將可協助您輕鬆識別哪個 SKU 最可能符合您的效能需求。 ACU 目前是以「小型 (Standard_A1)」VM 為標準 (數值為 100),而所有其他 SKU 則大致上代表該 SKU 在執行標準基準測試上可以快多少。

    如果需要知道各類型虛擬機器的詳細規格,可至此網址參閱: https://docs.microsoft.com/zh-tw/azure/virtual-machines/virtual-machines-windows-sizes?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json