Do Not Forward – czy to działa?
Problem
- W Microsoft Purview, można zdefiniować Sensitivity Label 'Do Not Forward’. Potencjalnie bardzo fajna opcja do zabezpieczenia maila
- Problem polega na tym, że jeśli w mailu jest plik, to zależnie od tego czy odbiorca ma konto pocztowe 3rd party czy M365 – osoba będzie w stanie plik otworzyć lub nie… i poszkodowana jest osoba posiadająca konto M365!
Wewnętrznie na EXO istnieją dwa workflowy:
- OTP, dla kont, które nie są RMS-aware (3rd party), klient dostaje link 'pobierz kod’, kod przychodzi na zadeklarowany email i dzięki temu osoba ma dostęp do maila oraz pliku.
- RMS-aware czyli M365. Microsoft chwali się, że usługa działa cross-tenant… ALE – musi być ALE.
Tutaj link opisujący cross-tenant: Microsoft Entra configuration for content encrypted by Microsoft Purview Information Protection | Microsoft Learn . W praktyce działa to tak (zakładając default configuration), że wiadomość 'Do Not Forward’ faktycznie można odczytać beż żadnych kodów przez posiadacza skrzynki EXO. Ale pliku nie da się otworzyć w żaden sposób… chyba, że zrobimy to tak, jak pisze MS:
”
- For external users who have a Microsoft Entra account in their own tenant, we recommend you use External Identities cross-tenant access settings to configure trust settings for MFA claims from one, many, or all external Microsoft Entra organizations.
- For external users not covered by the previous entry, for example, users who don’t have a Microsoft Entra account or you haven’t configured cross-tenant access settings for trust settings, these external users must have a guest account in your tenant.
”
…i cały wspaniały plan łatwego dostarczenia rozwiązania szyfrującego idzie w diabły. Bo kto będzie wszystkim ludziom zakładał konta gości? nie tak miała ta usługa ułatwiać życie – no i co za absurd, że użytkownicy nie-M365 mogą się dostać a M365 nie mogą.
Ale oczywiście nie pisałbym, gdyby nie dało się tego obejść…
Rozwiązanie
Okazuje się, że tym szablonem można zarządzać. Wybiera go Purview, które na ostatnim etapie mail flow, dodaje własne reguły transportowe (niewidoczne) – jeśli email ma jakieś Sensitivity Labels, to usługa dokona odpowiednich modyfikacji, sprawdza typ routingu i wybierze szablon – inny dla EXO, inny dla 3rd party. Tutaj nie da się nic zrobić, ponieważ całość jest black-box.
Ale da się:
- Stworzyć label o jakiejś nazwie – np. 'Secure Email’, który nic nie robi poza oflagowaniem maila
- ustawić dwie reguły transportowe na EXO – dla maila z i bez załącznika – dla tej etykiety
W efekcie mamy takie scenariusze dla maila z Do Not Forward (Secure Email):
- do użytkownika non-M365 z lub bez załącznika: użyj szablonu OTP
- do użytkownika M365 z załącznikiem: użyj szablonu OTP (inaczej nie ma szansy podejrzeć pliku)
- do użytkownika M365 bez załącznika: użyj cross-tenant RMS, bo wiadomość się wyświetli
te reguły to:
New-TransportRule ` -Name "Label secure external mail - Do Not Forward via OME portal" ` -FromScope "InOrganization" ` -SentToScope "NotInOrganization" ` -HeaderContainsMessageHeader "msip_labels" ` -HeaderContainsWords "MSIP_Label_<LABEL GUID>_Enabled=True" ` -ApplyRightsProtectionTemplate "Do Not Forward" ` -ApplyRightsProtectionCustomizationTemplate "OME Configuration" New-TransportRule ` -Name "Secure Email external WITHOUT business attachment - DNF native" ` -FromScope "InOrganization" ` -SentToScope "NotInOrganization" ` -HeaderContainsMessageHeader "msip_labels" ` -HeaderContainsWords "MSIP_Label_<LABEL GUID>_Enabled=True" ` -ApplyRightsProtectionTemplate "Do Not Forward"
Żeby zdobyć GUID najlepiej użyć get-label, tylko najpierw trzeba się połczyć connect-iPPSSession.
> connect-iPPSSession -UserPrincipalName nexor@w-files.pl > get-label|select name,guid [...]
A jeśli ktoś byłby chętny modyfikować szablon [OTP/native, disclaimers, images…] to jest to szablon 'OME Configuration’:
> get-oMEConfiguration|fl TemplateName : OME Configuration Image : ImageUrl : EmailText : PortalText : DisclaimerText : BackgroundColor : IntroductionText : ReadButtonText : OTPEnabled : True SocialIdSignIn : True ExternalMailExpiryInterval : 00:00:00 PrivacyStatementUrl : Identity : OME Configuration IsValid : True ObjectState : Unchanged
I ten właśnie default jest użyty w pierwszej regule, z parametrem 'OTPEnabled: True’.
Rebranding a nazwa usługi
To jedna z tych usług w stajni Microsoft, która po pierwsze od zawsze jest zaniedbana, i jak gorący kartofel – przechodzi rebranding co kilka lat. A podstawowe funkcjonalności – jak widać w tym scenariuszu – są często zaparkowane na zawsze. Po raz pierwszy wdrażałem RMS na Server 2oo8 – właśnie mniej-więcej w roku wydania serwera. Niemal dwie dekady, a usługa cały czas boryka się z tym samym problemem – fajnie działa w obiegu firmowym, zamkniętym, gorzej z zastosowaniem powszechnym, tzw. publicznym Internecie. A co najciekawsze to zasadniczo wszystko działa i wszystkie elementy układanki są dostępne… tylko MS z jakiegoś powodu wymyślił 'zakładajcie wszystkim konta gości’ zamiast pójść po rozum i zmienić workflow /:
Co do historii nazw:
| Rok | Nazwa |
|---|---|
| 2003 | Windows Rights Management Services (RMS) |
| 2008 | Active Directory Rights Management Services (AD RMS) |
| ~2013 | Azure Rights Management (Azure RMS) |
| ~2015-2019 | Azure Information Protection (AIP) |
| ~2019-2021 | Microsoft Information Protection (MIP) |
| obecnie | Microsoft Purview Information Protection (MPIP) |
I na wszystkie te nazwy można cały czas natrafić podczas korzystania z produktu – np. do otwarcia zaszyfrowanego pliku należy zainstalować RMS Client – pewnie ze względu na to, iż tak cały czas nazywa się w środowisku on-premises, na Server 2o25. W chmurze natomiast czas nie stoi – dla tego dziś mówimy o Purview i Sensitivity Labels…
A więc zasadniczo, na dzień dzisiejszy: MPIP – Microsoft Purview Information Protection, korzystający z RMS do szyfrowania plików.
AI nie pomogło
Takie problemy to dobry benchmark AI – tutaj nie pomogło. Nie znalazłem rozwiązania wyszukiwarką, a AI, jak się okazało, nie było w stanie samodzielnie 'rozumować’ – skoro nie znalazło tekstu, to 'nie wymyśliło’ rozwiązania. Udało mi się przygotować to rozwiązanie tylko dla tego, że pracując tyle z Ex/EXO po prostu wiedziałem czego szukać i po kilku próbach udało się wydziargać rozwiązanie…
eN.














