Skip to Content

IT nieuczesane.

user@tenant.onmicrosoft.com w hybrydzie

każdy obiekt użytkownika w o365 w hybrydzie ma standardowo zakładane dwa adresy email:

  • user@tenant.mail.onmicrosoft.com – który służy jako email routingowy. EXO jest de facto oddzielnym środowiskiem, oddzielną organizacją Exchange, a więc jeśli jest email user@w-files.pl, musi istnieć sposób na przesłanie maila do konkretnego serwera – wtedy wykorzystywany jest ten adres.
  • user@tenant.onmicrosoft.com – który jest tworzony na podstawie standardowej polityki adresowej EXO. czy użytkownik jest synchronizowany, czy założony bezpośrednio – jest nadal mailboxem i podlega polityce.

istnieją różne scenariusze, w których chcielibyśmy zmienić istniejący adres – np. chcemy go zwolnić tak, aby mógł być wykorzystany dla innego obiektu. ale….

w środowisq hybrydowym wszystkie zmiany muszą być zrobione w on-prem. próba dokonania adresu bezpośrednio w EXO skończy się Acc Denied. ale…

jeśli wykonamy polecenie

to zobaczymy adres routingowy user@tenant.mail.onmicrosoft.com ale nie będzie na liście adresu EXO /:

jak zatem go zmienić?

da się, ale wymaga nieco gimnastyki. skoro nie da się zmienić dla konta synchronizowanego to trzeba je uczynić na chwilę kontem lokalnym o365. a więc kroki są następujące:

  • przesunąć obiekt w on-prem AD do OU, które nie jest synchronizowane
  • wymusić/poczekać na synchronizację
  • konto w AAD zostanie usunięte wraz z mailboxem
  • odzyskać konto w AAD [np. restore-msolUser]
  • zmienić adres w EXO
  • przywrócić pierwotną lokalizację obiektu w AD
  • poczekać na synchronizację

jeśli konto zniknie przy pierwszym cyklu, może to wynikać z niepełnym sync w domenie on-prem. najlepiej wykonywać operacje na AD, z którego jest robiony sync do AAD.

eN.

ITechDay 2o18

konferencja ITD zyskała już swoje miejsce na mapie ciekawych wydarzeń edukacyjnych. wkrótce, wtorek 2o.o2.2o18, tegoroczna odsłona. tematyka jak zwykle będzie oscylować w okół produktów Microsoft, nie tylko na produktach BackOffice ale zgodnie z trendem – również chmurze:

•    Windows Server 2016,
•    Windows 10,
•    Office 365,
•    Microsoft Azure,
•    PowerShell,
•    bezpieczeństwo i ochrona danych w środowiskach Microsoft.

szczegółowa agenda oraz lista prelegentów wkrótce.

stay tuned!

eN.

współdzielenie OneDrive – ciekawostki

OneDrive Sharing

na początek oczywiste oczywistości:

  • OneDrive to de facto SharePoint. główne ustawienia współdzielenia [Sharing] dziedziczy z globalnych ustawień SP
  • od jakiegoś czasu dostępny jest OneDrive Admin Center z poziomu Office365. z jego poziomu można pozornie ustawić zabezpieczenie współdzielenia na poziomie niższym, niż jest zdefiniowany w SharePoint. ale nie można [co zresztą jest opisane małym druczkiem na dole].

  • od niedawna rozbudowany został klient OneDrive – w końcu można nadawać uprawnienia ‚bezpośrednio’ z Exploratora. co mnie pozytywnie zaskoczyło – okienko uprawnień jest renderowane przez OneDrive.exe a nie, tak jak się spodziewałem, iexplore.exe/edge .

Jak powstaje ACE dla osoby z zewnątrz

i tu się zaczyna robić ciekawie. standardowo, do czego przyzwyczaiły nas systemy operacyjne, flow jest taki:

  • użytkownik wybiera plik i nadaje uprawnienia
  • tworzony jest ACE – Access Control Entry – który staje się nieodłączną częścią pliq… w dużym uogólnieniu.
  • osoba próbuje się dostać
    • uwierzytelnia się
    • token uwierzytelniony porównywany jest z ACL [Access Control List] w poszukiwaniu ACE dla danego usera – rodzaj filtra
  • osoba dostaje dostęp lub nie.

wydaje się tak oczywiste… a jednak dla pliq współdzielonego z osobą z zewnątrz w OneDrive, jest inaczej. czy zastanawiałeś się po co jest poniższa opcja? skoro można uzyskać dostęp przez osobę inną niż zaproszona, to znaczy, że ACE nie może istnieć w momencie dostępu. zakładając, że wyłączone są linki anonimowe, w dużym uogólnieniu wygląda to tak:

  • użytkownik wybiera plik, uprawnienia edit/view i adres osoby z zewnątrz.
  • tworzony jest *link*, URL, zawierający token dostępu. ten link wysyłany jest mailem.
  • osoba, która otrzymała link otwiera go. zakładając, że wymuszone jest uwierzytelnienie, zostanie przekierowana na stronę logowania.
  • po pozytywnym uwierzytelnieniu, na podstawie linka generowane jest ACE, które dopiero teraz dopisywane jest do pliq
  • tworzone jest również konto [jeśli nie było wcześniej] „username_server.name#EXT#@company.onmicrosoft.com” w AAD

czemu tak i jakie to ma konsekwencje

opisywane zachowanie będzie zależne od kilq ustawień bezpieczeństwa na SP – czy włączone są linki anonimowe, oraz czy mogą być otwierane przez osoby inne, niż te, do których się je oryginalnie wysłało. współdzielenie linkiem jest znane od lat, i dość oczywiste, dla osób korzystających z usług chmurowych. po prostu w rozproszonym świecie chmury, gdzie nie ma centralnej bazy użytkowników, token jest przekazywany wraz z linkiem – w dużym skrócie posiadanie linka oznacza posiadanie dostępu. stąd powstały mechanizmy rozszerzające to rozwiązanie – np. o wymaganie uwierzytelnienia. czemu zatem link wysłany przez jedną osobę, standardowo może być otworzony przez inną? ta opcja została stworzona głównie z tego powodu, że ludzie korzystają z masy adresów, i mogą mieć konto MS Account założone z innym adresem niż my znamy – np. wysyłamy do kogoś na x@gmail.com a ktoś ma konto MS Account jako x@outlook.com. dzięki temu osoba nie jest zmuszona zakładać kolejnego konta, co było istotne zwłaszcza jakiś czas temu, kiedy nie istniał uproszony proces zakładania konta, i było to bardzo upierdliwe. ale ze względu na bezpieczeństwo, nie włączenie tej opcji, jest dość niepokojącym scenariuszem i sugerowałbym jednak, aby wymuszać weryfikację odbiorcy. w takim wypadq, nawet jeśli przekaże się linka innej osobie [lub zostanie wykradziony!], nie zostanie on obsłużony. można się przyczepić, że komunikat błędu pokazuje zdekodowany adres email osoby, która oryginalnie była w tokenie, ale nie jest to już tak wielki problem.  załóżmy, że opcja jest na ‚default’, czyli może być otwarty przez inną osobę. co się stanie, jeśli roześlę link do stu osób? czy wszystkie będą miały dostęp? NIE. link zawiera ‚token jednorazowego dostępu’. pierwsza osoba się dostanie i dla niej utworzony zostanie ACE, pozostałe osoby dostaną acc denied.

ciekawostki (bugs?)

nie może obyć się bez zagadek w-files. trafiłem na dwie. w porywach do trzech q:

  1. jeśli jakiś user ma wpisany alternate email z jakimś adresem zewnętrznym – np. x@gmail.com, i chcemy udostępnić plik tej osoby na tenże adres zewnętrzny… to się nie uda. AAD rozpoznaje użytkownika jako wewnętrznego i co prawda wysyła linka [zależnie od tego z jakiego interfejsu skorzystamy zachowanie może być różne], ale nie ma szansy zalogować się na kontem x@gmail.com .
  2. jak sądzicie, czy usunięcie konta #EXT# z AAD spowoduje, że osoba straci dostęp do pliq? scenariusz:
  • administrator doszedł do wniosq, że posprząta trochę, i *dla bezpieczeństwa* usunie konta #EXT# żeby zabrać dostępy.

no to się zdziwi, ponieważ usunięcie konta, nie powoduje usunięcia ACE – te systemy są rozdzielne, i nie ma ‚centralnego repozytorium dostępów’. a ponieważ centrum uwierzytelnienia jest również rozłączne z naszym systemem, user zostanie poprawnie uwierzytelniony [przez Microsoft Account a nie przez nasz tenant AAD], ACE istnieje – ergo dostęp będzie. nie wierzycie – spróbujcie, podzielcie się wrażeniami. właśnie ta część pracy – odpowiedź na pytanie ‚kto ma gdzie dostęp’ – jest nadal niełatwym zadaniem. 3. PS. czy zwróciliście uwagę, że w OneDrive for Business jest ‚shared with me‚ a w OneDrive personal jest ‚Shared by me‚? i żadne ze środowisk nie udostępnia mechanizmu dla pełnego rozeznania się co komu i dla nas….  

OneDrive for Business OneDrive personal

eN.

pomagamy!

jak co roq, w ramach WGUiSW, staramy się podzielić radością świąteczną. do tej pory braliśmy udział w Szlachetnej Paczce, w tym roq pomagamy bezpośrednio, Domowi Matek z dziećmi w Brwinowie. nie potrzeba wiele – może również się przyłączysz? jeśli chcesz pomóc, sprawdź na liście jakie ‚prezenty’ ma przynieść mikołaj, wpisz w komentarzu na FB, i przynieś na najbliższe spotkanie WGUiSW o5.12.

eN.

darmowe szkolenia

Microsoft Virtual Academy chyba znają już wszyscy. ale pojawił się jeszcze jeden site warty odwiedzenia: edX

eN.

94 WGUiSW standup session

gwoli przypomnienia – dziś 94 spotkanie WGUiSW. na ostatnim, poziom humoru mocno wyśrubował Damian (:  dziś również Damian i Łukasz na scenie, więc liczę, że będzie równie ciekawie!

ze względu na politykę bezpieczeństwa – nie zapomnijcie się kliknąć na liście, bo może być problem z wejściem.

eN.

to się nie powinno zdarzyć… [combo]

takiego przypadq w-files nie miałem od dawna. od początq do końca – same zagwozdki. a zaczęło się tak…

objawy i pierwsza diagnoza

użytkownik zgłasza, że niektóre maile kierowane do niego, wysyłane są … na prywatną skrzynkę innej osoby. środowisko w hybrydzie exchange a cała sprawa zadziwia, bo zgłoszenie jest od użytkownika onprem.

po krótkim debugowaniu udaje się ustalić, że w AAD użytkownik ma wypełniony atrybut ‚otherMails’. czemu innego użytkownika to da się wytłumaczyć ale czemu Exchange wysyła maile korzystając z tego atrybutu?? czy to oznacza kompromitacją routingu Exchange? mocno niepokojące zachowanie..

schodzimy głębiej

po dalszym dochodzeniu udaje się ustalić kilka innych faktów. większość pominę, bo pomimo, że dały dużo pikanterii do sprawy, i mocno utrudniły całe dochodzenie wprowadzając w ślepe zaułki, sqpię się na najważniejszym. udało się ustalić, że to konto jest widziane jako ‚GuestMailUser’ przez Exchange lub ‚Guest’ w AAD. to już lepiej, ponieważ parę rzeczy da się wyjaśnić: Exchange używa właśnie atrybutu otherMails [który wbrew nazwie jest typu ‚string’ a nie tablicą] do wysyłki, a to oznacza, że pomimo iż sytuacja jest co najmniej dziwna, to nie jest kompromitacja całego tenanta. udało zawęzić się grupę zagrożonych użytkowników do kilqnastu osób.

no to impas: w onprem AD nie ma nigdzie informacji z adresem zewnętrznym, a w o365 nie da się go usunąć, ponieważ obiekt jest synchronizowany, więc zmiany autorytatywnie mogą pochodzić tylko z AD.

dla niektórych użytkowników udaje się skonwertować obiekt na ‚member’ poprzez „set-msoluser -userprincipalname <UPN> -userType member

ale po wyświetleniu pełnego obiektu AAD „get-AzureADUser -searchstring <UPN>|fl” okazuje się, że w atrybucie proxyaddresses cały czas siedzi adres #EXT#. czyli konwersja obiektu jest obejściem problemu, ale niedostatecznym rozwiązaniem.

jak do tego doszło?

no dobra. sytuacja opanowana, maile nie wyciekają. ale jak to się w ogóle mogło zdarzyć?

jak zwykle w takich przypadkach, nie da się tego na 1oo% potwierdzić, ale scenariusz był najprawdopodobniej taki:

  • był sobie tenant, który nie był w pełni zsynchronizowany
  • projekt rozpoczął się od testu SharePoint, gdzie jacyś użytkownicy bawili się, testowali, licho-wie-co jeszcze.
  • ponieważ tenant nie był w pełni zsynchronizowany, ba! zmieniane były UPNy użytkowników, ktoś wysłał zaproszenie do zasobu na SP. użytkownik przyjął to zaproszenie, ale zamiast się zalogować jako user tenanta, zalogował się jako zewnętrzny użytkownik, podając firmowy email. został więc utworzony obiekt Guest, z mailem odpowiadającym mailowi firmowemu
  • po uporządkowaniu UPNów i wymuszeniu synchronizacji część obiektów się nie zsynchronizowała. ktoś popoprawiał obiekty z błędem tak, żeby zadziałał soft-match. teoretycznie podczas takiej operacji, obiekt synchronizowany z onprem, powinien ‚nadpisać’ obiekt Guest i stać się Member. ale tak się nie stało…

co na to Microsoft i czy to się powtórzy?

sprawę oczywiście potwierdzałem ze wsparciem MS żeby mieć jakieś autorytatywne odpowiedzi. potwierdzili scenariusz jak do tego doszło, z zastrzeżeniem, że nie mają pełnych danych z tamtego okresu. sprawdzili jednak, że ktoś manipulował przy obiekcie zmuszając do spasowania z onpremowym.

kolejne zapewnienie jakie otrzymałem, to iż już jakiś czas temu wdrożony został patch, który chroni przed takimi sytuacjami – czyli w trakcie synchronizacji nie może w efekcie dojść do pozostawienia obiektu jako Guest. sytuacja jest tak trudna i ulotna, że nie podejmuję się weryfikacji.

mówiąc w skrócie: to się nie ma prawa powtórzyć.

grande finale

jedynym sensownym rozwiązaniem problemu jest usunięcie użytkowników z synchronizacji, wywalenie ze śmietnika i powtórna synchronizacja. drugim rozwiązaniem byłaby dalsza eskalacja we wsparciu tak, aby użytkownicy nie potracili dostępów [bo przecież ich konta zostaną usunięte i utworzone totalnie nowe obiekty], ale od razu zastrzegli, że to może nawet nie zostać zaakceptowane a na pewno długo potrwa.

no więc usunąłem z synchronizacji… ale na koniec czekała mnie jeszcze jedna niespodzianka. otóż nie byłem w stanie usunąć niektórych kont ze śmietnika. co ciekawe get-msolUser -ReturnDeletedUsers pokazywał, że są tam te obiekty.. ale przy próbie usunięcia wywalało błąd, że obiekt nie istnieje.

a więc na koniec ostatni w-files: po wyświetleniu atrybutów obiektu poza UserPrincipalName znalazłem SignInName. dla użytkowników, których nie udało się usunąć, różnił się on tym, że był zawiera lokalny prefix domenowy – czyli np. zamiast username@logincunion.com było username@logicunion.com.pl . tak wyglądały te obiekty przed wspomnianą wcześniej zmianą UPN, i jak widać gdzieś ta informacja utknęła. i pomimo, że remove-msolUser -RemoveFromRecycleBin ma parametr ‚-UserPrincipalName’ to de facto używa właśnie SignInName …

eN.

przekazywanie wartości – c.d.

jakiś czas temu pisałem o tym, jak powinno się/można przekazywać wartości via pipeline. krótki komentarz…

clue jest takie, że:

  • trzeba włączyć funkcje zaawansowane cmdletbinding()
  • użyć bloku ‚process {}’ dzięki czemu każdy element będzie automatycznie procesowany przez ten blok kodu za każdym razem po ‚wpadnięciu’ do potoku.
  • dzięki temu można usunąć ‚foreach’ bo blok ‚process’ i tak wykona się dla każdego elementu.

warto się sqpić nad konsekwencją tego faktu. tablice przekazywać na [co najmniej] dwa podstawowe sposoby – jako potok oraz jako parametr:

… ale po usunięciu ‚foreach’ ze skryptu, przestanie działać prawidłowo przekazanie przez zmienną wyliczaną…

aby przekonać się o tym, można uruchomić poniższy skrypt, na oba sposoby, różniący się od poprzedniego wpisu tylko weryfikacją czy element jest tablicą:

reasumując

dla zachowania możliwości wykonania zarówno poprzez potok jak i przez zmienną, lepiej zostawić pętlę foreach – nic złego nie robi.

eN.

93.WGUiSW

szybkie przypomnienie dla tych, którzy wybierają się dziś na spotkanie WGUiSW, żeby się zapisać na meetupie. jeśli ktoś używa nicka, wyślijcie imię i nazwisko Pawłowi. osoby nie będące na liście nie zostaną wpuszczone przez ochronę /:

eN.

‚Gorący ziemniak’ – Skype for Business

Disjoint Communications

usługi komunikacyjne dostarczane przez MS zawsze były w dużym dysonansie – z jednej strony całe linie hardware, integracja z komputerem – pełny VoIP i Video Conferencing… na ulotkach. z drugiej… masakra – kto konfigurował OCS czy Lync wie o co chodzi. masakryczny end-user experience z brakiem historii wiadomości w ramach klienta, kłopotami z synchronizacją książki adresowej czy kalendarza, ciężka konfiguracja sieciowa i integracja – zarówno z Exchange jak i centralkami VoIP. Unified Communication było świetną ideą, i nawet w kilq firmach widziałem to dobrze wdrożone i nieźle działające. ale praca przy projektach UC – huh. kamieniołomy. powoli, wraz z pojawieniem się Skype for Business, zaczynało to w miarę sensownie działać a SfB Online wszystko uprościł. ale oczywiście usługi SaaS nie są dla każdego…

Unified Intelligent Communication

aż tu nagle pojawia się Teams. niby narzędzie zupełnie nie związane, ale z jakiegoś powodu decydują się inkorporować SfB w Teams… przepisując kod. raczej korzysta się z gotowców i aplikacje wykorzystują wzajemnie swoje możliwości – te same biblioteki, czy DCOM, żeby nie pisać dwa razy tego samego. to było dość dziwne. efekt dość qriozalny – niby w Teams jest SfB ale wiadomości są zupełnie rozdzielne – wysłane w ramach Teams są tylko w Teams, wysłane via SfB są tylko w .. skrzynce Exchange. od jakiegoś czasu chodziła plotka, że Teams przejmie tą funkcjonalność, ale trochę nie chciało mi się wierzyć… aż tu takie newsy:

wygląda to na niezłą rewolucję w grupach projektowych…

jest kilka takich produktów, które przeszły ciężką drogę w ramach MS, niektóre jej nie przeżyły – jak rodzina ‚forefront’, do której zaadoptowany został MIIS stając się na chwilę FIMem, żeby przetrwać jako jeden z nielicznych jako MIM. to chyba na razie rekordzista w ilości nazw produktowych [MMS -> MIIS -> ILM -> FIM -> MIM]. usługi VoIP/Video zdają się doganiać [LCS -> OCS -> Lync -> SfB -?Teams?].

ciekaw jestem jak to będzie wyglądało? jeśli nie będzie ‚cienkiego klienta’ – cienkiego w porównaniu do Teams, które przecież mają dużo szersze zastosowanie – to usługi takie jak ‚presence’ czy IM będą mało wygodne. w sumie ‚presence’ jest w dowolnym miejscu – czy to outlook, czy SharePoint. a IM? zostanie przerzucone do Teams czy do Outlook? huh. decyzja biznesowo wyjaśnialna, ale dla firm i dla użytkownika końcowego, to będzie gruby bałagan. przestawienie się z ‚klienta IM i konferencji Video’ na ‚aplikację do pracy grupowej’ nie będzie proste…

…ale przecież nie tak dawno pisałem, że wyobrażam sobie, żeby w projektach MS Teams stało się jedynym wykorzystywanym narzędziem. a zatem czekam na łzy grupy projektowej Exchange (;

gorący ziemniak

w sumie to mam więcej pozytywnych emocji o tej decyzji, bo mam wrażenie, że SfB, podobnie jak MIM, to takie gorące ziemniaki, które niby potrzebne, ale nikt ich nie chce i nie do końca wiadomo co z nimi zrobić, więc podrzuca się je do następnego w kolejce. sam produkt dostarcza bardzo fajną funkcjonalność, ale to za mało na samodzielność. więc są adoptowane tam, gdzie podąża w danym momencie trend – a teraz jest hype na Agile i Grupową Komunikację [znowu].

boję się tylko tego, że o ile MS Teams jest świetnym produktem do małych projektów i można go już semi-produkcyjnie używać, to jest masakrycznie niedojrzały. mam nadzieję, że transformacja potrwa wystarczająco długo i spokojnie, żeby zdążył stać się w pełni przemyślanym narzędziem, bo inaczej wyjdzie z tego olbrzymi ‚szwajcarski scyzoryk’ – niby super, z tysiącem gadżetów, ale kto chce nosić takie bydle w kieszeni?

eN.

eN.