Ako vypnúť telemetriu v SSAS Tabulare

SSAS Tabular, aj SSAS Multidimensional, od verzie 2016 automaticky posielajú telemetrické údaje do Microsoftu, podobne ako väčšina moderného softvéru. Od verzie 2019 vraj bola telemetria značne zredukovaná, ale verzie 2016 a 2017 môžu posielať až príliš mnoho informácií, ako názvy všetkých databáz, tabuliek a merítok v nich. A keďže nie vždy to chcete, resp. niekedy to ani nemôžete posielať ďalej, tak sa pozrieme na to, čo všetko sa pravdepodobne posiela. A najmä ako vypnúť telemetriu.

Na začiatok upozornenie – vzhľadom na to, že oficiálne nie je zdokumentované, čo všetko sa posiela a najmä ako sa to používa, tak to berte len ako informačný článok. Založený na sledovaní toho, čo robí telemetrický účet s vašim serverom SSAS. Pretože dáta, ktoré budú uvedené nižšie, sa môžu posielať aj anonymizované, aj neanonymizované. Aj keď vo väčšine prípadov nižšie by anonymizované dáta boli absolútne nepoužiteľné. Sú však okolo toho iba tajnosti a všetko sa prenáša silno zašifrované, takže na rozdiel od Windows 10 – kde je to už ako-tak aspoň čiastočne zverejnené – je pri SSAS všetko ešte stále utajené.

Preto budeme predpokladať najhorší scenár, že všetko sa prenáša neanonymizované – čiže tak ako to došlo zo servera. Ak by ste niekto náhodou narazili na oficiálny zdroj, kde je to všetko oficiálne zdokumentované, tak ho napíšte do komentárov nižšie, a informácie doplním do článku. Všetky tieto informácie sú založené na článku od Shabnama Watsona, ktorý si s tým dal námahu, odsledoval to a zdokumentoval. A ktorému patrí veľká vďaka za jeho čas a námahu.

Čo sa zisťuje a ako často

Všetky informácie sa zisťujú cez pohľady DMV (Dynamic Management Views).

Každú hodinu sa spúšťa tento dotaz:

select 1 as [ConnectionCount] from [$SYSTEM].[DISCOVER_CONNECTIONS]

Tento dotaz vráti 1 riadok s jednotkou pre každé pripojenie k serveru. Tu až tak nič citlivého nie je.

Každý deň sa však spúšťa tento dotaz:

SELECT [Compatibility_Level], [Type], 1 as [CountDBCompatibilityType]
FROM [$system].[DBSCHEMA_CATALOGS]
Order by [Compatibility_Level]

Tento dotaz zistí úroveň kompatibility a typ databázy pre každú databázu na serveri SSAS. Opäť nič citlivého.

Verzie SSAS 2016 a 2017 však navyše spúšťajú nasledujúce dotazy raz denne, a tam už môžu byť citlivé informácie:

Najprv zoznam všetkých názvov databáz na serveri:

--Returns a list of databases on the server.
 SELECT [CATALOG_NAME] as [ForEachDBID], 1 as [CountDB]
 FROM $System.DBSchema_Catalogs

A potom pre každú databázu sa spúšťajú tieto dotazy:

Zoznam kociek a dátových modelov v databáze:

--Returns a list of cubes/model names in the database. 
SELECT [CATALOG_NAME], 1 AS [DBCubeCount]
FROM [$System].[MDSCHEMA_CUBES] WHERE [CUBE_SOURCE] = 1

Zoznam všetkých dimenzií (v OLAP kockách) a tabuliek (v SSAS Tabulare) v databáze

--Returns a list of dimensions/tables in a database.
SELECT [CATALOG_NAME], [CUBE_NAME], 1 as [DimensionCount]
from [$SYSTEM].[MDSCHEMA_DIMENSIONS] ORDER BY [CUBE_NAME]

Zoznam všetkých skupín merítok (v OLAP kockách) a tabuliek (v SSAS Tabulare) v databáze

--Returs a list of measure groups/tables in a database.
SELECT [CATALOG_NAME], [CUBE_NAME], 1 as [MeasureGroupCount]
FROM [$SYSTEM].[MDSCHEMA_MEASUREGROUPS] ORDER BY [CUBE_NAME]

Zoznam všetkých merítok (bez ich mena) spolu s informáciou, do ktorej tabuľky/skupiny merítok patria, a v ktorom zobrazovacom priečinku sú.

--Returns a list of measures (without name) along with their measure group (table) they belong to.
 SELECT [CATALOG_NAME], [CUBE_NAME], [MEASUREGROUP_NAME], [MEASURE_DISPLAY_FOLDER],
        1 as [MDDisplayFoldersMeasureCount]
 FROM [$SYSTEM].[MDSCHEMA_MEASURES]

A práve tieto posledné 4 dotazy vyvolávajú obavy. Neprenášajú sa síce názvy konkrétnych merítok, ale aj z názvov databáz, tabuliek a zobrazovacích priečinkov sa dá vyčítať dosť veľa o biznis logike. A to nie sú vždy zrovna informácie, ktoré chcete zdieľať. Pomôžu síce Microsoftu pri orientácii, akým spôsobom sa využívajú vaše inštancie SSAS, keď bude napr. do budúcna zvažovať novú funkcionalitu. Ale to neznamená, že by ste to chceli zdieľať. Preto sa teraz pozrieme na oficiálnu metódu, ako to vypnúť.

Ako vypnúť telemetriu v SSAS

Keď sa väčšina adminov dozvie o tejto funkcionalite, tak logicky vypne a zakáže telemetrickú službu SSAS, ktorá sa nainštaluje automaticky od verzie 2016 pre každú inštanciu SSAS, a má rovnaký názov ako služba SSAS, so skratkou „CEIP“ na konci (CEIP = Customer Experience Improvement Program):

…a ktorá pridá svoj účet ako administrátora inštancie SSAS:

Toto však nie je oficiálny spôsob, a najmä NEROBTE TO TAKTO. Zastavením telemetrickej služby síce nebudú zberané a odosielané žiadne údaje, ale zo skúsenosti viem, že sa samotná inštancia SSAS začne správať zvláštne. Najviac viditeľným prejavom bude to, že vám bude server SSAS v nepravidelných intervaloch mrznúť na pol minúty až niekoľko minút. Za čo vás asi užívatelia nepochvália. Preto to treba spraviť oficiálnou metódou.

Oficiálna metóda nerobí žiadne problémy, a spoľahlivo zafunguje bez vedľajších efektov. Na vypnutie telemetrie v SSAS si treba spustiť Editor registrov, a v ňom zmeniť jednu konkrétnu magickú hodnotu. V závislosti od verzie SSAS sa nachádza v tomto kľúči:

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\VASA_INSTANCIA_SSAS\CPE

Tam je potrebné nastaviť hodnotu s názvom CustomerFeedback na hodnotu 0. A potom reštartovať inštanciu SSAS. A ideálne ešte predtým odstrániť účet telemetrie z administrátorov SSAS, ak si to chcete poistiť na 100%.

Napr. v prípade default inštalácie SSAS 2016 je cesta nasledovná:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSAS13.MSSQLSERVER\CPE

A konkrétne nastavenie vyzerá takto:

Na záver

Takto teda viete vypnúť telemetriu pre SQL Server Analysis Services, či už ide o SSAS Tabular, alebo SSAS Multidimensional. Pretože najmä v spojitosti s GDPR či rôznymi NDA, ktoré možno musíte dodržiavať, si nemôžete vždy dovoliť ponechať ju zapnutú. SQL Server 2019 vraj už odosiela oveľa menej dát, ale momentálne je ešte len vo verzii preview, a je teda predčasné hovoriť, ako to v ňom bude vo finále. Každopádne, každá snaha o zníženie množstva dát prenášaného telemetriou je vítaná. A ak si ju teda nemôžete dovoliť vôbec, tak ste si práve prečítali, ako ju spoľahlivo vypnúť 🙂