Classic Administrator – porządki i źle wyświetlane przypisanie

intro

kolejny brzegowy przypadek. tym razem mógł mnie kosztować usunięcie istniejących subskrypcji – a więc 'niuans, który może zabić’.

scenariusz to clean up subskrypcji. jest ich kilkaset, więc trzeba podejść do tematu systemowo. najpierw zajmę się omówieniem scenariusza i moim podejściem do sprzątania, a jak kogoś interesuje sam bug w Azure – to będzie na końcu.

clean up process

w pierwszej kolejności trzeba wyizolować osierocone i puste subskrypcje. o tym jak znaleźć te puste szybko, czyli KQLem – za niedługo, wraz z małym qrsem KQL. dziś o tych 'osieroconych’.

duża część subskrypcji zakładana jest na chwilę, głównie przez developerów, którzy przychodzą i odchodzą…. a subskrypcje zostają. warto więc znaleźć te, których właściciele już nie istnieją w AAD.

nie żeby i tu nie było problemów, bo okazuje się, że zadanie pod tytułem 'jaki to typ subskrypcji’ również okazało się zadaniem nietrywialnym. przez typ, mam na myśli offering. to, co widać w portalu jest trudno wyciągnąć z commandline – potrzeba do tego gimnastyki z REST API do API billingowego… ale to również na inny dzień. krótko mówiąc – tradycyjnie, PowerShellowo, nie da się tego wyłuskać. a jeśli ktoś chciałby mi przedstawić atrybut 'SubscriptionId’ to powiem, że nie tędy droga… ale to również leży w backlogu do opisania.

zadanie wygląda więc tak – zrobić listing wszystkich subskrypcji wraz z osobami które są Ownerami w ARM IAM oraz Classic Administrators – czyli role Service Administrator oraz Co-Administrator.  posłużą zarówno jako lista kontaktowa, oraz pozwolą na kolejne odpytania, żeby wyłuskać te konta, które już nie istnieją. subskrypcje bez właścicieli to najlepsze kandydatki do podróży do śmietnika. posłuży do tego taki prosty skrypcik, napisany na kolanie:

$csvOwnerFile = "c:\temp\subsAndOwners.csv"
Get-AzSubscription |
    ? {$_.state -ne 'disabled'} |
    %{
    $subname= $_.Name
    $subID = $_.SubscriptionId
    Set-AzContext -Subscription $_|Out-Null
    write-host "processing $subname..."
    Get-AzRoleAssignment -IncludeClassicAdministrators |
        ? {
            ($_.RoleDefinitionName -eq 'owner' -or $_.RoleDefinitionName -match 'administrator') -and ([string]::IsNullOrEmpty($_.RoleAssignmentId) -or $_.RoleAssignmentId -match 'subscriptions')
        } | select  @{L='SubscriptionName';E={$subname}},@{L='subscriptionID';E={$subID}},RoleDefinitionName,DisplayName,SignInName,roleassignmentid
} | export-csv -nti -Encoding utf8 -Path $csvOwnerFile

&(convert-CSV2XLS $csvOwnerFile)
większość commandletów jest z pakietu modułów Az, a ostatni – convert-CSV2XLS z mojego modułu eNlib [WOA! przekroczył 1k downloadów! jak miło q:]. zakładam, że całość jest prosta, ale to lepiej wyjaśnić:
([string]::IsNullOrEmpty($_.RoleAssignmentId) -or $_.RoleAssignmentId -match 'subscriptions')
ten fragment filtra wyrzuca uprawnienia dziedziczone z Management Groups, żeby było trochę przejrzyściej.
można się również zastanowić nad optymalniejszą metodą… ale to znów REST API a nie mam na to opanowanych bibliotek jeszcze /: kolejny z masy wpisów na backlogu…
dobra. jest CSV i excel dla czytelności, teraz trzeba sprawdzić czy konta istnieją. w excelu czyszczę, co niepotrzebne, co wiem, co mnie interesuje, export do CSVki z tymi wpisami, które uznałem za ważne, i jedziemy:
$users = load-CSV c:\temp\subsAndOwners.csv
connect-azuread
$users.SignInName | 
    select -unique | %{
      $u=Get-AzureADUser -SearchString $_;
      if([string]::IsNullOrEmpty($u)) {write-host "$_" -ForegroundColor Red}
    }

load-CSV to kolejna funkcja z eNlib – jedna z najczęściej przeze mnie używanych. ładuje CSV z automatyczną detekcją znaq oddzielającego, co jest mega istotne jak się pracuje w różnych regionalsach. ma też kilka innych bajerów… ale nie o tym tu. dalej już z górki – wyłusqję SignInNames unikalne i odpytuję AAD o użytkownika. ponieważ brak użytkownika nie jest błędem, a nullem, więc nie można użyć try/catch a trzeba wykorzystać IFa.

i wydawałoby się że mam już to, co potrzeba – wrzucam wynik do excela, robię XLOOKUP i pięknie widać które subskrypcje należą do kont, których już wśród nas nie ma… zabrzmiało złowieszczo khekhe…

Błąd w Azure

…chyba, żeby nie. całe szczęście natchnęło mnie, żeby jednak kilka posprawdzać ręcznie. i nagle okazało się, że konta których nie ma… czasem jednak są. a wszystko rozbija się o 'Classic Administrators’, który musi wewnętrznie źle komunikować się z ARMem. wiele staje się jaśniejsze, jeśli przyjrzeć się jak takie obiekty są listowane przy 'get-AzRoleAssigment -includeClassic’:

RoleAssignmentName :
RoleAssignmentId :
Scope : /subscriptions/732d1eea-xxxx-xxxx-xxxx-6154fb40f73f
DisplayName : uname@w-files.pl
SignInName : uname@w-files.pl
RoleDefinitionName : ServiceAdministrator
RoleDefinitionId :
ObjectId :
ObjectType : Microsoft.Authorization/classicAdministrators
CanDelegate : False
Description :
ConditionVersion :
Condition :

na pierwszy rzut okiem może wydawać się, że jest ok… ale gdzie jest 'ObjectId’? to jednak tylko pierwsza część problemu. porządki mają to do siebie, że robi się je rzadko. a to oznacza bagaż historii. a w tym bagażu np. projekt standaryzacji nazw użytkowników i zmiana UPNów z gsurname@domain.name na givenname.surname@domain.name. okazuje się, że ten staruszek nie ma mechanizmu odświeżania i pomimo zmiany UPN, czyli de facto SignInName, tutaj pokazuje starą nazwę. a więc przy odpytaniu AAD – nie znajduje usera, pomimo, że ten istnieje.

co ciekawe, jeśli wejdzie się do uprawnień IAM w portalu Azure, każdy user jest aktywnym linkiem, pozwalającym na kliknięcie i przeniesienie do AAD, na szczegóły konta. tak z ciekawości spróbujcie to zrobić dla Classic Administrators…

całe szczęście projekt był zrobiony z głową i stare UPNy zostały jako aliasy mailowe, a więc doprecyzowałem zapytanie:

$users.SignInName |
    select -unique |%{ 
        $u=Get-AzureADUser -Filter "UserPrincipalName eq '$_' or proxyAddresses/any(p:startswith(p,'smtp:$_'))";
        if([string]::IsNullOrEmpty($u)) {write-host "$_" -ForegroundColor Red}
    }

ale co mnie to czasu i nerwów kosztowało…

możliwości filtra AzureADUser też podnoszą ciśnienie… już nie wspominając o tym, że commandlety AzureAD nie wspierają PowerShell 7, a commandlety Az nie wspierają nie działają dobrze w PowerShell 5. mam od razu w głowie 'niezły burdel tam macie, w tym swoim Archosofcie!’

eN.

 

bolesne i śmieszne

albo ilość albo jakość. Microsoft niemal zawsze wybiera to pierwsze. a im większy jest Azure/o365 – tym gorzej ze stabilnością i jakością. błędów jak ten, który zaraz opiszę, jest masa, ale ten mnie po pierwsze rozśmieszył, po drugie to śmiech przez łzy – bo straciłem półtora tygodnia… może komuś oszczędzę tej przyjemności?

kontekst: konfiguracja polityk Conditional Access dla Windows 365 Cloud PC. jeśli chcemy utworzyć dostęp warunkowy, działający 'wewnątrz’ w365CPC, ale równocześnie pozwalająca na logowanie się do niej samej to polityka musi mieć zrobiony wyjątek na aplikacje w365CPC, bo sama jest częścią 'All Cloud Apps’.  artyqł opisujący jak to zrobić można łatwo wyszukać, a kluczowy okazał się wyjątek na aplikację 'Azure Virtual Desktop’…

#1 dodajemy wyjątek na aplikację windows 365 – tu bez problemu, wyszuqję apkę i działa:

pięknie wyszuqje. więc teraz #2 – dodaję 'Azure Virtual Desktop’…

…średnio widać, ale nie ma liście tego, czego szukam. próbuję bardziej restrykcyjne słowa kluczowe – 'virtual’ a potem 'desktop’…

…apki nie ma. naszukałem się, ticket założony… a jakość wsparcia idzie w parze z samym produktem. słychać, że braqje ludzi na rynq. poziom 'dialogu’ ze wsparciem jest gorszy niż z Cyfrowym Asystentem w wersji beta – te dużo więcej rozumiały już lata temu, i odzywają się językiem, który bardziej przypomina angielski. każda rozmowa to wielo-minutowe 'przepraszam, proszę powtórzyć’ – bo albo ktoś gurgla do słuchawki, albo dzwoni z jakiegoś bazaru w słuchawkach za 5PLN, to makabra jakaś jest. i przy każdej rozmowie trzeba powtarzać wszystko co było w mailach – więc zaczynam podejrzewać, że nie umieją czytać. ale to tak na boq…

do rozwiązania doszedłem w końcu sam, przypadkiem, ponieważ słowem kluczowym do wyszukania 'Azure Virtual Desktop’ jest… 'Windows’:

jak widać, jest więcej aplikacji, których nazwy nie zawierają tego ciągu znaqw, a mimo to pojawiają się podczas wyszukiwania. pech – pewnie 99% innych osób od razu wpisuje 'windows’ i od razu widzi obie apki na ekranie… a mi się zachciało całość wpisać, razem z '365′ /:

bałagan jaki jest w tych nowych produktach jest kosmiczny. nie ma dnia, żebym nie znalazł jakiegoś glitcha – czy to w GUI czy w samych commandletach PS. zaczynamy coraz więcej płacić za tempo rozwoju i intuicja mi podpowiada, że to dopiero początek – już niedługo złożoność i wielkość systemów zje ich twórców, bo to nie jest tak, że Microsoft jakoś odstaje od innych firm. mam wrażenie że Internet jest bardzo à la mode – bo 9o-te są na fali. jak mi się czasem przypadkiem zdarzy uruchomić przeglądarkę bez ad-blockera, to nie wiem co się na ekranie dzieje. osoby z padaczką mogą dostać ataq. na początq lat 2k, jak wychodziło web2.o, były już świetne strony, które były lekkie i dynamiczne – ładowały się tylko w elementach, które się zmieniały i zawierały to, co było potrzebne. i co się z tym stało? większość Internetu to niechlujnie napisane aplikacje, przeładowane niepotrzebnymi dystraktorami, nawalone reklam albo innych elementów, a każde kliknięcie to przeładowanie… a miało być tak pięknie…

eN.

Passwordless dla Microsoft Account

niedawno Microsoft ogłosił funkcję 'passwordless’ dla kont 'Microsoft Account’ – czyli tych nie-firmowych/nie-szkolnych. wszystkie arty dot. braq haseł rozpływają się w zaletach tego rozwiązania i ah, oh [fapfap] … więc daruję sobie powtarzanie zalet braq hasła. funkcję włączyłem i … obniżyłem sobie bezpieczeństwo dostępu.

trzeba jasno odgrodzić passwordless dla firm i funkcje Windows Hello for Business, który zakłada MultiFactor Auth – z naciskiem na ’Mutli’, od passwordless dla kont MS. zastanawiałem się jak to będzie praktycznie zrealizowane, włączyłem –  i osobiście mnie to trochę przeraża – ponieważ z MFA wracamy do Single Factor Auth, którym jest nasz smartfon. nie spodziewam się, aby wiele osób miało na kontach dane warte ucięcia komuś kciuka [i przechowywania w odpowiednich warunkach], ale mimo wszystko logowanie, w którym JEDYNYM czynnikiem jest kliknięcie na ekranie telefonu, budzi u mnie alarm. jakiś czas temu, o ile pamiętam, była opcja dodatkowego zabezpieczenia apki Microsoft Authenticator PINem. dziś znajduję w opcjach jedynie 'require biometric or PIN’ ale bez możliwości wyboru – wygląda na to, że ustawienie pobierane jest z systemu (sprawdzałem na Android) – a więc czy będzie to odcisk, czy PIN – będzie to TEN SAM odcisk/PIN, co do reszty. ciekawy jestem czy ta formuła faktycznie zadziała – dowodem będzie, że przez najbliższe kilka lat będzie funkcjonować w tej postaci, będzie używana, a w prasie nie zaczną się pojawiać arty o tym jak to wypłynęła porcja danych/zdjęć/doqmentów bo ktoś zgubił smartfona. imho bardzo szybko pojawi się nowa wersja apki lub ustawienie, które doda jakiś drugi czynnik – może PIN, może kod SMS, czy choćby wybór obrazka. co ciekawe w ustawieniach konta nadal widzę 'Two-step auth ON’ – pomimo, że loguję się teraz tylko przykładając palec do ekranu.

niezależnie od mojej subiektywnej opinii, każdy powinien zrewidować swoje ustawienia haseł i upewnić się:

  • czy na pewno mamy skonfigurowane dodatkowe metody uwierzytelnienia?
  • czy je pamiętamy? [np. czy znamy odpowiedzi do pytań weryfikacyjnych]
  • czy ustawienia tych metod nie zapętlają się?

jeśli naszą drugą metodą jest adres email, który ma włączone MFA oparte o tą samą apkę – to tracąc telefon nie zalogujemy się nigdzie. powinniśmy mieć realną alternatywę inaczej czeka nas długie przebijanie się przez support. jeśli coś takiego wydarzy się gdy nie mamy czasu, będziemy w kropce. każdy powinien poświęcić czas chociaż raz, i 'na niby’ zgubić telefon. wyłączyć go i sprawdzić gdzie jest w stanie się zalogować, czego braqje, ile to trwa czasu. w firmach na podobne scenariusze powinny istnieć procedury, ale sprawę ułatwia, że zazwyczaj jest kilq administratorów, więc w większości scenariuszy są sobie w stanie pomóc na wzajem. prywatnie, nas czeka przebijanie się przez linie wsparcia – warto przynajmniej spróbować, żeby oszacować ile to może trwać czasu i jak w ogóle taka procedura wygląda.

z jednej strony firmy dwoją się i troją, żeby było bezpieczniej a zarazem łatwiej… wygoda na pewno się zwiększa – ale w momencie kiedy coś się sypnie, zaczynają się schody. i wcale nie jest łatwo wymyśleć i skonfigurować swoje konta tak, aby faktycznie odzyskać awaryjnie dostęp szybko i bezpiecznie.

ciekaw jestem opinii – bo na razie nie trafiłem na te negatywne czy krytyczne. moja jest dość mieszana – niby wygodnie, ale [w przypadku kont prywatnych] na pewno nie bezpieczniej!

eN.

 

search nie działa

hmmm… nie wiedziałem, że to problem globalny – forbes z pewnymi przymyśleniami – ale piszę bo rozwiązanie jest trywialne, zajmuje 3 min i zadziałało na razie na każdym kompie:

w kluczu HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search trzeba założyć wartość 'BingSearchEnable’ = 0

i przelogować się.

za to z searchem ogólnie coś się ostatnio dziwnego dzieje i od razu wpływa to na pracę – zarówno zmieinone wyszukiwanie w Outlook działa fatalnie, nie jestem w stanie wyszukać tego, co potrzebuję, jak i OneNote – nie podświetla wyniqw, wyszukuje niepełne frazy… czy to ma związek? czy Bing search jest wykorzystywany pod spodem, w lokalnym wyszukiwaniu? wszystkie arty i krzyki mówią o systemowym, a ja mam takie wrażenie, że z każdym jedynym nie jest dobrze…

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.

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.

disconnect-msolService

qmgdzie jest disconnect-msolService?

nie jest to sesja – tak jak dla exchange online.

zajrzeć jak to działa się nie da, bo to dll’ki.

…na grzebanie po bebechach i reverse nie mam czasu /:

eN.

google – bałagan, jakich mało

messnie takie proste jak go malują

ostatnio ojciec zadał mi pytanie, w jaki sposób korzystać z albumu zdjęć. że dostał jakieś linki mailem, i że chciałby to mieć jakoś w albumie, a nie szukać po starych mailach, i że ode mnie też ma jakieś stare linki, i że znajomy przesłał mu zdjęcia z imprezy i że nie może znaleźć….

z pewnością siebie usiadłem, żeby mu to wszystko szybciutko pokazać, bo to wszystko takie proste… i ugrzęzłem. *NIE MA TAKICH MOŻLIWOŚCI*.  w każdym razie nie dla przeciętnego użytkownika i nie bez interwencji ze strony publikującego. największym problemem jest przeszłość … i ubogie możliwości teraźniejszości.

kompatybilność wsteczna

przeszłość to kilka różnych systemów publikacji zdjęć – picasaWeb i google plus photos oraz google photos. ten trzeci jest obecnie podstawowym, pierwszy (picasa) nadal istnieje, a plus photos przeszły transformację to photos bez plusa. każdy z tych systemów jest jeszcze w jakiejś postaci dostępny i ma zupełnie inny model bezpieczeństwa i współdzielenia, inaczej wygląda, inaczej się nim zarządza i ma inne możliwości.

każdy z tych systemów działa inaczej i o ile zdjęcia i albumy zostały automatycznie zmigrowane do nowego systemu [tfu, nie tyle zmigrowane, co są po prostu widoczne], o tyle jest sporo zamieszania z dostępem do nich. zamiast zrobić translacje na nowe linki, odnoszą się do starych systemów, a zmieniony model bezpieczeństwa […lepszym określeniem byłoby chyba 'usunięty model bezpieczeństwa’] wprowadza sporo zamieszania.

wspólny album

przejdźmy do podstawowego zgłoszenia – jak zarządzać albumem? to dość logiczne, że skoro dostajemy linka, to chcielibyśmy mieć możliwość 'przypięcia’ go do swojego albumu, a nie szukać go potem po mailach [i pamiętać kto, jakieś dwa lata temu link wysłał i że w ogóle to zrobił!]. takiej możliwości nie ma – pozostają zakładki w przeglądarce /: jeśli to jest 'nowy link’ z google photos, to pokaże się na liście, ale do albumów publicznych i ze starszych systemów, już takiej możliwości nie ma.

kolejny request, jaki wydaje się logiczny – możliwość dodawania do albumu 'cudzych’ zdjęć. przykładowy scenariusz – byliśmy ze znajomymi na wspólnych wakacjach, każdy korzysta z google photos. chciałbym zrobić kolekcję [tak to się tu nazywa], zawierającą nie tylko moje zdjęcia, ale również wybrane fotki znajomych. takiej możliwości również nie ma.

ujmując w skrócie – w epoce 'social world’, który w dużej mierze został stworzy przez google, system zdjęć jest tragicznie ubogi. bardziej odpowiednim słowem będzie: żenujący. ogólnie 'kolaboracja’ w zakresie współdzielenie zdjęć niemal nie istnieje.

jednym sensownym rozwiązaniem, jakie byłem w stanie zaproponować, to ściągnięcie zdjęć na dysk lokalny, po czym wrzucenie ich z powrotem tyle, że do swojego albumu. ten sposób aż boli – nie po internety wymyślali, żeby nie móc współdzielić wspomnień – jest to wręcz zaprzeczenie całej idei. nie wspominając już o tym, że opublikowanie takiego albumu jest niezgodne z prawem. sweet.

bezpieczeństwo

i wisienka na torcie – bezpieczeństwo. kiedyś można było ustawiać konkretne uprawnienia dla konkretnych osób. o ile pamiętam, to nawet dla osób bez konta na g+. obecnie opcja 'share’ dla google photos jest mocnym nadużyciem. powinno być raczej 'publish’, ponieważ cały model bezpieczeństwa opiera się na wygenerowanym linq. opcja 'share’ służy wyłącznie do publikacji dla wybranej grupy osób, na wybranym portalu społecznościowym. a linki, jak to linki, można wysłać, wstawić na stronie WWW, czy udostępnić je na tysiąc innych sposobów. jedynym zabezpieczeniem jest informacja, że ktoś dołączył do kolekcji.

po migracji ze starych albumów zostały poprzednio ustawione uprawnienia. moje dawne albumy mają informację 'shared’ ale nie mam możliwości sprawdzenia dla kogo, nie wspominając o jakiejkolwiek ich edycji, ponieważ wszystkie opcje granularnych uprawnień zostały wycięte. co więcej – nie da się tego nawet wyłączyć, więc nie wiem komu i na jakich zasadach te kolekcje są opublikowane [SIC!] /:

podsumowanie

brak mi słów i ręce opadają. google plus nigdy nie był w stanie nawet trochę zagrozić facebookowi i po kolejnych transformacjach coraz mniej rozumiem o co w nim chodzi i jaka mu przyświeca idea. natomiast bałagan, jaki został zrobiony, ilość potencjalnych dziur i niejasności, w połączeniu z super ubogimi możliwościami jakie daje google photos, raczej nie prędko zagrozi jakiemukolwiek produktowi na rynq, pozostając głupim systemem chmurowego backupu fotek z telefonu.

słaaaabo.

eN.

jabłko bez reklam to koniec świata?

rotten-appleniektóre rzeczy wydają mi się paradoxalne – taki iphone na ten przykład. potrafię zrozumieć że ludzie lubią iOSa [choć sam go nie znoszę]. ale trzeba było czekać kilka lat, do wersji 9, żeby klawiatura wiedziała, że oprócz dużych liter są jeszcze małe. żeby pojawiły się wszystkie polskie znaczki – najwyraźniej 'ą’ uznano wcześniej za niepotrzebne. i teraz ta debata na temat blokowania reklam [np. business insider, czy tu ]. patrzę na kalendarz… nie no wszystko się zgadza – 2o15. próbuję sobie przypomnieć kiedy pojawił się adblock i nie potrafię – to było zbyt dawno. blokowanie reklam na andq również jest od dawana – choć trzeba przyznać, że google trochę z tym walczył i łatwiej było na zrootowanych urządzeniach. a tu wielka debata i artykuły w duchu 'OMG!, co to będzie!.

bawią mnie statystyki podawane przez zatrwożonych fanów apple, głoszących zamach na światową gospodarkę opartą na reklamach:

„Its Safari browser has a 25% share of all mobile web browsing, by some estimates.”

że safari ma niby 25% rynq? ciekawe, że statystyki IDC udziału urządzeń mobilnych mówią o ledwie 14% udziale iOS na rynq. to by musiało znaczyć, że safari jest takie popularne na androidzie. a sumaryczny udział światowy, nie tylko na urządzenia mobilne, będzie jeszcze mniejszy. są zresztą blockery na safari OSX. co by oznaczało, że potencjalnie ~9o% użytkowników może korzystać z blokerów reklam i świat jakoś się kręci nadal. firmy nadal publiqją, działają, zmieniają formę owej reklamy na mniej inwazyjne. w3school pokazuje, że safari ma 4.5%. oczywiście – statsy są brane z konkretnej grupy stron. jakby sprawdzić jaki udział przeglądarek na podstawie wejść na update.windows.com to pewnie będą się lekko różnić od tych z www.apple.com (;

czytanie newsów z aj-świata jest za prawdę zabawne. można dowiedzieć się jakież to rewelacyjne nowości się pojawiają [typu apka do newsów], jak to cały świat jest zależny od reklam na najpopularniejszej przeglądarce świata, czy jaki to google jest potworny, bo ludzie nie odróżniają linków sponsorowanych od wyniqw wyszukiwania. normalnie jakbym się cofnął dekadę i poczytał o nadchodzącym 'roq linuxa’ q:

eN.

na nudę – nauka (:

TVkłamsTVo

od dawana już nie oglądam TV – bełkot przemieszany z reklamami, bardzo ograniczony wybór, prymitywne wyszukiwanie, czekanie na program… archaizm. fashion TV może trochę braqje – najlepsza stacja muzyczna (;

alternatywa jest oczywista – Internet. metod/aplikacji jest wiele, ale najbardziej popularną i dostępną jest zwykły youtube. dla dzieciaków youtube kids [w PL nie ma ale jest na APK] – wolę jak mała sama szuka treści, przy okazji dowiaduję się co lubi. a ja najbardziej lubię doqmenty i naukę. i tak, postanowiłem zrobić zrzutkę dla zainteresowanych, kilq fajnych kanałów, które warto zasubskrybować. zachęcam, do wrzucania propozycji w komentarzach – zwłaszcza polskich produkcji. uważam, że to jest rewelacyjne, że powstają niezależne kanały, na tak wysokim poziomie. szacun!

polskie

  • uwaga, naukowy bełkot! tematyka: chemia i biologia. głównie. prowadzi Dawid Myśliwiec. bardzo rzetelnie przygotowane, konkretnie, do profesjonalizmu niewiele braqje.
  • polimaty tematyka: różna. historia, społczeństwo, nauka… po prostu ciekawe tematy. świetny kanał prowadzony przez Radka Kotarskiego porównywanego, ze względu na dykcję i sposób opowiadania, z Wołoszańskim. rewelacyjny styl, charaktrystyczny, z (dość specyficznym) humorem..
  • scifun tematyka: głównie podstawowa fizyka i astronomia. prowadzi Darek Hoffmann. program bardzo 'wyluzowany’ – czasem aż za bardzo. braqje trochę profesjonalnego szlifu, ustalenia formuły – na razie jest dość chaotyczny. niemniej bardzo fajny sposób na uzupełnienie lub przypomnienie sobie wiedzy, przeważnie okraszone doświadczeniami, które można powtórzyć w domowych warunkach, co ułatwia przyswajanie fizyki. bo fizyka to nie wzory, ale rzeczywistość, która nas otacza (:
  • historia bez cenzury tematyka: historia. prowadzi Wojtek Drewniak. historii zupełnie nie lubiłem. obecnie staram się trochę nadrobić zaległości, a jest to możliwe dzięki świetnej literaturze (np. Komudy) oraz osobom pokroju Wojtka.
  • surgepolonia tematyka: patriotyzm/historia. prowadzi Jędrek. opowieści różnej treści (;
  • adbuster tematyka: czy reklamy pokazują prawdę? i nie tylko. prowadzi Marek Hoffmann – brat Darka. z oceną się nie wyrywam, bo niewiele na razie obejrzałem q:
  • kartofliska tematyka: grandhopping. prowadzi: Radosław Rzeźnikiewicz, sniper zespołu Abstynenci. doqmenty z boisk 4.. a nawet 8 ligowych. dla fanów prawdziwej, męskiej, piłki nożnej ^^
  • FDtv2 tematyka: doqment. filmy doqmentalne z różnych kanałów TV.
  • leszko2o12 tematyka: matematyka i fizyka. kanał niestety nieaktywny od 2 lat, ale pozostaje zbiorem ciekawych doqmentów z polskimi napisami.
  • na gałęzi tematyka: film. prowadzi Marcin Łukański. operator kamery i montażysta, dokonuje analizy filmów. ciekawe spojrzenie od strony technicznej.
  • neti aneti. tematyka: medycyna, zdrowie i psychologia. prowadzi małżeństwo – Aneta i Patryk. niektóre jak dla mnie trochę zbyt naukowe, ale jest sporo materiału i dla przeciętnego wyjadacza.

anglojęzyczne

  • vsauce. tematyka: o wszystkim. czasem o strasznych głupotach ale mimo to mega ciekawie. to obecnie mój ulubiony kanał ze względu na sposób prowadzenia. pełna profeska, rewelacyjna dykcja, trochę infografik, nietuzinkowe tematy. mogę słuchać na okrągło. a kolo zaczynał od comicconów i realacji z gier… jest jeszcze pod jego egidą vsause2 i vasuce3 ale już mnie tak nie porywają.
  • smarter every day tematyka: ogólnie  o wszystkim, co może uczynić nas mądrzejszymi. przypomina mi trochę scifuna w sposobie prowadzenia.
  • H+ digital series – kanał H+ Magazine. fabularyzowana seria o epoce przed i po upadku ludzkości takiej, jaką znamy. do czego może doprowadzić technologia HUDów instalowanych bezpośrednio w głowie?
  • minuteEarth tematyka: ogólno-naukowe. krótkie infografiki. rewelacyjne dla wzrokowców.
  • minutePhysics tematyka: fizyka. jak wyżej (:
  • eli the computer guy tematyka: informatyka. materiały na dość podstawowym poziomie. fajne dla początqjących ITCrowd.
  • Zoochosis .. no. po prostu zoochosis (:
  • Veritasium – teatyka: ogólno-naukowy. świetne wykonanie, przeróżne tematy.

na koniec

szkoda, że jest tak mało polskich kanałów – zwłaszcza tych związanych z naukami ścisłymi. darowałem sobie kanały językowe, bo są totalnie poza moim zakresem zainteresowań.

zachęcam do wrzucania propozycji (: w końcu nie ma nic lepszego na nudę niż nauka ^^

eN.