23 maja 2020

Konfiguracja własnej domeny w Office 365 dla Edukacji

Do zdalnego nauczania nie jest potrzebny własny system pocztowy. To prawda. Cześć szkół będąc w sytuacji konieczności rozpoczęcia zdalnego nauczania poszła szybką ścieżką, wybierając rozwiązania specjalizowane do video (Zoom, Webex), cześć wdrożyła w mniejszym lub większym zakresie systemy bardziej rozbudowane jak G Suite dla szkół  lub Office 365 dla edukacji. Jakiś czas temu napisałem nawet artykuł "Czy zakładając Office 365 dla zdalnego nauczania trzeba przełączyć pocztę", który próbował odpowiedzieć na część wątpliwości związanych z pytaniami w tym temacie. Minęło kilka tygodni i choć już za chwilę szkoły mają wznowić pracę (przynajmniej w ograniczonym zakresie), to nadal pojawiają się pytania w tym zakresie i myślę że warto nieco dokładniej ten temat poruszyć.
Część szkół nie ma własnych domen pocztowych, używa do publikacji informacji dla rodziców i uczniów portali takich jak szkolnastrona.pl czy edupage.org. Oczywiście nie ma w tym nic złego - jednak jedną z zalet wdrożenia Office 365 w bezpłatnym planie A1 jest zintegrowany z innymi komponentami Office 365 system pocztowy Microsoft Exchange oraz system jego ochrony, dostępne dla wszystkich nauczycieli i uczniów. Wydaje mi się, że warto zatem rozważyć wykorzystanie tego systemu w połączeniu z domeną, która nazwa będzie kojarzona z naszą szkołą.
Oczywiście pytanie podstawowe brzmi - jak zacząć? Odpowiedź jest bardzo prosta - uzgodnić nazwę domeny z dyrekcją szkoły i zarejestrować taką domenę. Oczywiście wszyscy spytają o koszt - w Polsce jest kilkudziesięciu rejestratorów domen, można również skorzystać z serwisów zagranicznych, ale tutaj pojawia się konieczność w większości przypadków realizacji płatności kartą, co może być nieco utrudnione. Jednak można znaleźć co najmniej kilka serwisów, gdzie rejestracja domeny może być przeprowadzona bezpłatnie, dopiero po roku poniesiemy kilkadziesiąt złotych opłaty za odnowienie rejestracji. Myślę, że jest to kwota, którą budżet szkoły lub rady rodziców jest w stanie zaakceptować. Kolejnym krokiem jest dodanie domeny do listy domen obsługiwanych w naszej organizacji Office 365 (w tym samym miejscu można kupić w szybki sposób domenę, jednak system jeszcze nie obsługuje domen .pl).












































Teraz zaczyna się trudniejsza część - musimy potwierdzić, że mamy do takiej domeny prawo - w tym celu należy dodać do domeny rekord TXT, o wartości wygenerowanej przez kreator w portalu administracyjnym Office 365.




















Sposób w jaki dodajemy rekord tekstowy (czyli TXT) do naszej domeny DNS może się nieco różnić w zależności od tego jaki panel administracyjny do konfiguracji usługi DNS ma nasz dostawca (przeważnie jest to firma, która rejestrowała naszą domenę, możemy jednaj wskazać rejestratorowi innego dostawcę tej usługi). Microsoft przygotował instrukcję dla kilku najpopularniejszych dostawców tej usługi, możemy również skorzystać z pomocy technicznej naszego dostawcy usługi DNS. Następnie po aktualizacji tego rekordu (należy pamiętać, że nie jest to operacja natychmiastowa - opublikowanie nowego rekordu może trwać nawet kilkadziesiąt minut) i  kliknięciu przycisku "Weryfikuj", powinno nam się pokazać okno z kolejnym krokiem do wykonania, lub komunikat, że rekord nie został znaleziony. Oznacza to, że jeszcze informacja nie została przez usługę opublikowana, bądź niestety, że wpisaliśmy rekord niepoprawnie. Alternatywnie zamiast rekordu typu TXT możemy zmodyfikować rekord MX, jednak w przypadku, gdy domena jest już wykorzystywana z innym systemem pocztowym, na tym etapie konfiguracji nie jest to sposób optymalny.
Jak sprawdzić, czy podany przez nas rekord TXT został już opublikowany? Jest kilka narzędzi webowych do weryfikacji rekordów DNS, najprościej jednak użyć komendy systemu operacyjnego nslookup, która też nam taki rekord pokaże. W tym celu musimy użyć dodatkowej komendy
 set type=all, a następnie podać nazwę naszej domeny
















Zazwyczaj komenda pokazuje również inne rekordy dotyczące domeny (serwery nazw, tzw. rekord SOA). Ja do celów artykułu tworzę poddomenę swojej własnej domeny (więc nie muszę jej oddzielnie rejestrować), więc ilość danych jest nieco mniejsza.


















Teraz pozostaje nam dodać, analogicznie jak przed chwilą dodawaliśmy rekord TXT, trzy rekordy niezbędne, żeby system Exchange w naszej organizacji Office 365 mógł przyjmować maile z zewnątrz, a nasze maile nie były odrzucane przez zabezpieczenia antyspamowe. Tak naprawdę, dobrze byłoby zadbać o bardziej rozbudowane zabezpieczenia, dodając dodatkowe rekordy, o czym pisałem w artykule "Office 365 - problemy ze spamem". Ale wróćmy teraz do niezbędnego minimum.
W kolejnym kroku kreator pokaże nam jak takie rekordy powinny wyglądać, ich listę możemy wyeksportować w formacie csv lub gotowego pliku strefy, możemy również odpowiednie wartości skopiować bezpośrednio ze strony.

















Rekord MX mówi światu, jaki system odbiera pocztę w imieniu naszej domeny, rekord typu CNAME autodiscover pozwala automatycznie konfigurować aplikację Outlook na komputerze lub urządzeniu mobilnym na podstawie naszego adresu mailowego, a rekord tekstowy SPF, pokazuje listę serwerów, które mogą wysyłać w imieniu naszej domeny pocztę na zewnątrz.
Jeżeli dobrze dodaliśmy te rekordy (znowu możemy sprawdzić w ten sam sposób narzędziem nslookup), to poczta elektroniczna będzie bez problemu dostarczana i wysyłana z użyciem adresu naszej nowej domeny. Jeżeli dodaliśmy do Office 365 domenę, którą już używaliśmy do obsługi poczty, to oczywiście zanim dodamy te 3 rekordy, powinniśmy zaplanować migrację poczty do Office 365, ale to już inna historia.
Procedura konfiguracji domeny działa dokładnie tak samo również dla dowolnych innych organizacji w usłudze Office 365.

22 maja 2020

Majowa aktualizacja do Skype for Business 2015

Microsoft kazał nam dosyć długo czekać na kolejną paczkę aktualizacji do Skype for Business 2015 (od sierpnia 2019). Rewolucyjnych zmian nie wprowadza (rozbudowa webowego panelu administracyjnego w ostatniej aktualizacji  CU3 do SfB 2019 rozbudziła nadzieje), ale pakiet CU11 do SfB 2015 rozwiązuje całkiem sporo problemów:
Zaktualizowana lista poprawek dla dociekliwych w tym artykule.

13 kwietnia 2020

Zmiana nazwy zespołu w Teams

Jednym z ciekawszych pytań, jakie ostatnio dostałem, była kwestia zmiany zespołu w Microsoft Teams. Rozwiązanie wydaje się trywialne i co więcej, może być potrzebne każdemu administratorowi prędzej, czy później. Na pozór stosunkowo proste  - wejść we właściwości zespołu, wybrać opcję edycji zespołu i zmienić (zarówno w kliencie desktopowym jak i webowym), jak widać na kolejnych rysunkach:





















Pozornie problem mamy rozwiązany. Jednak jeżeli wejdziemy w listę plików danego zespołu, a zwłaszcza gdy będziemy chcieli otworzyć taką listę w aplikacji Sharepoint, bądź też zerkniemy w konsoli administracyjnej na adres mailowy zespołu, to zauważymy, że zarówno url witryny sharepointowej naszego zespołu jak i email pozostały bez zmian. Co powinniśmy zrobić, żeby mieć spójną konfigurację? Na szczęście od kilku miesięcy możliwa jest zmiana adresu witryny Sharepoint.
W tym celu możemy użyć konsoli administracyjnej Sharepoint i zmienić zarówno nazwę jak i adres URL witryny zespołu (kolejny rysunek).
















Oczywiście operacja taka trwa dość długo (w tym czasie witryna jest dostępna w trybie tylko do odczytu). Niestety mogą się również pojawić inne problemy, o czym Microsoft pisze w dokumentacji, więc jeżeli mamy jakieś dokumenty, to warto je sobie zabezpieczyć. Operację zmiany adresu witryny możemy wykonać również z powershella, używając modułu Sharepoint Online, a dokładniej komendy Start-SPOSiteRename, jednak nie będę wchodził w szczegóły, zainteresowanych odsyłam do artykułu Tony'ego Redmonda.
Kolejną operacją jest modyfikacja adresu mailowego, co najlepiej jest wykonać z powershella. Żeby było trudniej, musimy do tego użyć innego modułu - Exchange Online, ponieważ zmieniamy atrybut grupy Office 365 (w module MicrosoftTeams nadal nie ma nawet możliwości podejrzenia adresu pocztowego). Komendą get-unifiedgroup możemy zweryfikować wartości atrybutów zespołu, a poprzez set-unifiedgroup ustawiamy odpowiednią wartość. W ten sposób mamy ujednolicone wartości nazwy zespołu po zmianie dla wszystkich elementów konfiguracji.



















Pozostaje jeszcze jeden drobiazg - notes zespołu, bądź też w przypadku zespołów klasowych, kwestia dotyczy notesu klasowego. On też ma nazwę powiązaną w momencie tworzenia z nazwą zespołu, więc żeby spójność była pełna to również i tą nazwę powinniśmy zmienić. W tym przypadku kwestia nie była taka oczywista, jednak udało mi się zweryfikować, że jest to możliwe. Podobnie jak w przypadku zmiany adresu url, w tym wypadku także użyjemy portalu administracyjnego Sharepoint, a właściwie właściwości witryny Sharepoint naszego zespołu.
Otwieramy w przeglądarce witrynę naszego zespołu, wchodzimy w zawartość witryny, następnie otwieramy Zawartość Witryny-Elementy zawartości Witryny i następnie edytujemy Nazwę i Tytuł notesu: 

























I to wszystko co potrzebujemy. 
Jak widać zmiana nazwy zespołu jest dosyć pracochłonna, więc warto dobrze przemyśleć nazewnictwo, żeby nie zmieniać nazw zbyt często.

28 marca 2020

Office 365 - problemy ze spamem

Wysyłając pocztę ze skrzynek na Office 365 czasem ze zdziwieniem orientujemy się, że trafia ona do spamu. Niestety, pomagając administratorowi opublikować niezbędne dla Exchange Online rekordy, Microsoft nadal podaje tylko 3 rekordy - MX, SPF i autodiscover. Już jakiś czas temu publikowałem kilka postów o dodatkowych metodach zabezpieczania poczty - DKIM oraz DMARC. Od tego czasu zdecydowana większość firm używa już tych mechanizmów. Warto poświęcić kilka minut, żeby skonfigurować je dla swojej organizacji Office 365. O ile konfiguracja DMARC to tylko dodanie rekordu do DNS (przynajmniej na początku), to konfiguracja DKIM wymaga jeszcze włączenia na poziomie Exchange Online. W artykule https://pepugmaster.blogspot.com/2016/03/walka-ze-spamem-spf-dkim-dmarc.html opisałem konfigurację w Office 365, jednak ostatnio zaważyłem, że dla własnych domen, obsługiwanych w Office 365 możliwość włączenia w webowym panelu administracyjnym, zarówno Exchange Admin Center, jak i https://protection.office.com/dkim.
Jednak funkcjonalność nie jest zablokowana, ale jak wiele zaawansowanych funkcji dostępna tylko w powershell. Wystarczy z poziomu modułu administracyjnego Exchange Online wykonać komendę:
new-DkimSigningConfig -Identity -KeySize 2048 -Enabled $true
Jeżeli w DNS dla naszej domeny nie dodaliśmy niezbędnych rekordów, funkcjonalność zostanie skonfigurowana, ale nie będzie włączona, o czym zostaniemy poinformowani odpowiednim komunikatem:




Jeżeli uzupełnimy/poprawimy rekordy, możemy włączyć zabezpieczenie domeny komendą:
set-DkimSigningConfig -Identity lab.pepug.org -Enabled $true.
I nasza poczta będzie bardziej wiarygodna.

25 marca 2020

Podstawy automatyzacji w Office 365 dla EDU

Kontynuując omawianie tematów poruszanych na grupach dyskusyjnych dotyczących pytań i problemów związanych z wdrażaniem Office 365 w Edukacji, chciałem tym razem poruszyć temat automatyzacji niektórych zadań przy pomocy Powershella. Temat przygotowania swojego komputera do zarządzania środowiskiem Office 365 poruszałem na tym blogu już kilkakrotnie, więc żeby się nie powtarzać zachęcam do lektury tych artykułów:
Oczywiście moduły się zmieniają, pojawiają się nowe (np. dla Exchange Online czy Microsoft Graph), inne wychodzą z użycia. Warto więc co jakiś czas sprawdzać nowości w tym zakresie czy chociażby co jakiś czas uruchomić komendę update-module.
Kilka typowych wyzwań, przed którym staje administrator szkolnej instancji Office 365 to:
  1. Zakładanie użytkowników i przypisywanie im licencji
  2. Resetowanie haseł użytkownikom.
  3. Tworzenie zespołów Teams.
  4.  Przypisywanie użytkownikom polis.
Jak na razie przedstawię kilka przykładów, z użyciem klasycznych technik (nad użyciem biblioteki dla Graph dopiero pracuję). Tak więc po kolei:

1. Jak założyć wielu użytkowników, np wszystkich nauczycieli lub wszystkich uczniów? Najlepiej byłoby (ze względu na stan epidemii i konieczność wdrożenia w jak najkrótszym czasie) utworzyć dla nich konta skryptem i dodatkowo wysłać im loginy i hasła początkowe na już znany adres. Po pierwsze potrzebujemy plik csv, z listą użytkowników. Warto pamiętać, że powershell domyślnie akceptuje "," jako znak przystankowy, a dla polskich ustawień regionalnych excell najczęściej tworzy taki plik z polami rozdzielonymi ";" - jest to zaznaczone w przykładowym skrypcie. Żeby konto miało od razu przypisaną licencję, dobrze jest to również załatwić w naszym skrypcie. W pierwszej kolejności potrzebujemy się zalogować do naszej instancji Office 365 (tzw. tenanta) i sprawdzić identyfikatory licencji (niestety w każdej instancji jest dodatkowo doklejany id tenanta, czy mamy taką zbitkę - konsagedu:STANDARDWOFFPACK_STUDENT. W tym wypadku konsagedu jest identyfkatorem mojej testowej organizacji Office 365 (jak widać na obrazku).






Jaką wartość wpisać do skryptu sprawdzamy komendą Get-MsolAccountSku. Standardowo powinniśmy mieć przypisaną do naszej organizacji licencję A1 dla nauczycieli i A1 dla uczniów (chyba że aktywowaliśmy inne licencje np. do testów). Oczywiście licencje możemy przypisać później, po utworzeniu grup dla poszczególnych klas i nauczycieli. Przypisanie licencji do grup jest realizowane bardzo prosto w portalu administracyjnym Azure AD w zakładce licencje.
Następnie listę nauczycieli/uczniów wyeksportowaną z zewnętrznego źródła importujemy z pliku csv. Plik powinniśmy uzupełnić o kolumnę UserPrincipalName (nie może być w niej polskich znaków), czyli nazwę logowania użytkownika do naszej organizacji Office. Ze względu na RODO dla uczniów nie powinno to być ImieNazwisko, ponieważ w połączeniu ze szkolną domeną stanowi już dane osobowe. Może to być np. identyfikator z dziennika elektronicznego. Jeżeli chcemy wysłać informacje mailem to musimy również wypełnić kolumnę email, która będzie przypisywana do pola Alternatywny Email w Azure AD. Warto również pamiętać, że jeżeli chcemy wysyłać maile ze skryptu, to musimy się uwierzytelnić i użyć portu 587. Skrypt będzie wyglądał np. tak:

# Podajemy poświadczenia administracyjne i łączymy się z chmurą
$cred = get-credential
Connect-MsolService -Credential $cred

# podajemy nazwę licencji dla ucznia
$StudentsLicense = 'konsagedu:STANDARDWOFFPACK_STUDENT'

# importujemy listę uczniów z pliku csv w postaci
# UserPrincipalName;DisplayName;Imie;Nazwisko;email;telefon
# Musimy wskazać znak rozdzielający, jeżeli plik csv ma kolumny rozdzielone
# innym znakiem niż ,

$AllOffice365Students = Import-CSV D:\Scripts\naglowek.csv -Delimiter ";"

# dla każdego wiersza z pliku csv wykonujemy akcję
foreach ($Student in $AllOffice365Students) {
    # tworzymy nowe konto w usłudze Office 365
    $O365student = New-MsolUser -UserPrincipalName $Student.UserPrincipalName `
         -AlternateEmailAddresses $Student.email -DisplayName $Student.DisplayName `
         -FirstName $Student.Imie -LastName $Student.Nazwisko -mobilePhone $Student.telefon `
         -UsageLocation PL -PreferredLanguage PL-pl -PasswordNeverExpires $true `
         -StrongPasswordRequired $true
    # przypisujemy licencję
    Set-MsolUserLicense -UserPrincipalName $Student.UserPrincipalName `
         -AddLicenses $Studentslicense

    # pobieramy dane po utworzeniu konta
    $mail = $Student.email
    $pwd = $O365student.Password
    $stu = $Student.UserPrincipalName
    $body = "Utworzono konto w systemie Office 365 o nazwie $stu Haslo tymczasowe: $Pwd"
    # wysyłamy maila z hasłem na alternatywny adres uzytkownika
    Send-MailMessage  -SmtpServer smtp.office365.com -usessl -Credential $cred `
          -Port 587 -To "$mail" -From "admin@konsagedu.onmicrosoft.com" `
          -Subject "Office 365 - nowe konto" -Body $body -Encoding UTF8 -BodyAsHtml
}

Id licencji i konto administratora  oczywiście w skrypcie jest powiązanie z moją organizacją testową. Uwaga. Jeżeli dla administratora włączyliśmy uwierzytelnianie wieloskładnikowe (MFA), to do wysłania maila musimy użyć hasła aplikacyjnego, a nie tego, którym się normalnie logujemy. UWAGA: od początku marca domyślnie organizacje Office 365 mają włączone tzw. domyślne ustawienia zabezpieczeń, które wymuszają MFA. Jeżeli uznamy, że jest to dla uczniów i nauczycieli zbyt uciążliwe możemy to wyłączyć w portalu administracyjnym Azure AD.

2. W przypadku sytuacji, gdy musimy zresetować hasło grupie użytkowników, możemy postąpić bardzo podobnie - zaimportować listę użytkowników z pliku csv, tym razem wystarczy nam nazwa użytkownika czyli UserPrincipalName i alternatywny adres mailowy. Czyli postępujemy podobnie:

# Podajemy poświadczenia administracyjne i łączymy się z chmurą
$cred = get-credential
Connect-MsolService -Credential $cred

$Pwd = 123zxcASD
# importujemy listę uczniów z pliku csv w postaci
# UPN,email

$AllOffice365Students = Import-CSV D:\Scripts\naglowek.csv

# dla każdego wiersza z pliku csv wykonujemy akcję
foreach ($Student in $AllOffice365Students) {
    Set-MsolUserPassword -UserPrincipalName $Student.UPN -NewPassword $Pwd `
      -ForceChangePassword $True

    # pobieramy dane po utworzeniu konta
    $mail = $Student.email
    $stu = $Student.UPN
    $body = "Zresetowano haslo w systemie Office 365. Haslo tymczasowe: $Pwd"

    # wysyłamy maila z hasłem na alternatywny adres uzytkownika
    Send-MailMessage  -SmtpServer smtp.office365.com -usessl -Credential $cred `
-Port 587 -To "$mail" -From "admin@konsagedu.onmicrosoft.com" `
-Subject "Office 365 - zmiana hasla" -Body $body -BodyAsHtml
}

3. Jeżeli chodzi o zakładanie zespołów w Teams. to już niedługo będzie to można zrobić z użyciem modułu MicrosoftTeams, jednak jak na razie cmdlet New-Team nie obsługuje atrybutu Template, który pozwala nam wybrać szablon klasy lub personelu. Teraz możemy to zrobić z użyciem Graph API. Przykładowy skrypt udostępnili koledzy na githubie grupy Microsoft 365  User Group Poland - https://github.com/Microsoft-365-User-Group-Poland/Skrypty

4. Przypisywanie użytkownikom polis to temat na osobny artykuł - w zależności od obszaru jak na razie powinniśmy do tego użyć innego modułu - polisy związane z hasłami - moduł AzureAD. Polisy związane ze skrzynką pocztową - moduł Exchange (lub nowy moduł ExchangeOnlineManagement). Polisy dotyczące Teams - moduł MicrosoftTeams (chociaż niektóre polisy są konfigurowane w module Skype for Business Online), etc. Myślę, że ciekawym przypadkiem przypisywania polis może być ograniczanie uprawnień uczniom w Teams, poprzez tzw. Policy Packages. W tym celu musimy odfiltrować uczniów, czyli konta z przypisaną licencją ucznia. W tym celu dla odmiany użyję modułu AzureAD. Wyświetlę licencje dostępne w moim tenancie EDU i odfiltruję użytkowników z przypisaną taką licencją. Id licencji sprawdzę komendą get-AzureAdSubscribedSku:





Mając ID mogę użyć filtra przygotowanego z jego pomocą
$students = Get-AzureADUser -All $true | Where-Object {($_.assignedLicenses).SkuId `
  -contains "314c4481-f395-4525-be8b-2ec4bb1e9d91"}.
Teraz jeszcze tylko sprawdzę, jakie pakiety polis są dostępne w moim tenancie












I można już puścić w pętli przypisanie odpowiedniej paczki (np. dla licealistów będzie to Education_SecondaryStudent).
foreach ($student in $students) {Grant-CsUserPolicyPackage -Identity $student.UserPrincipalName `
   -PackageName Education_SecondaryStudent }

Taką samą pętlą możemy sprawdzić, czy polisy package został przypisany poprawnie:
foreach ($student in $students) {Get-CsUserPolicyPackage -Identity $student.UserPrincipalName }
Oczywiście ustawienia polis w ramach pakietów możemy modyfikować bądź też tworzyć własne.

22 marca 2020

Czy zakładając Office 365 dla zdalnego nauczania trzeba przełączyć pocztę?

Kolejne pytanie, jakie pojawia się na grupach dyskusyjnych w kontekście zdalnego nauczania, to kwestia poczty elektronicznej. Uruchamiając usługę Office 365, automatycznie mamy prawo do korzystania z usługi Exchange Online, która integruje się z innymi usługami Office 365. Domyślnie, jeżeli nie wskażemy własnej domeny pocztowej, skrzynki są zakładane w domenie takiej, jak nazwa naszego tenanta, np. szkola.onmicrosoft.com.
Czy te skrzynki są nam potrzebne? Organizując spotkania w Teams możemy użyć aplikacji Outlook do zapraszania na spotkania/lekcje (po zainstalowaniu klienta Teams na komputerze, w Outlooku pojawia się specjalny dodatek). Warto również pamiętać o RODO. Tworząc skrzynki dla nauczycieli i uczniów ograniczamy przesyłanie materiałów do obrębu tej samej usługi, możemy również oznaczać dokumenty zawierające treści wrażliwe, a nawet weryfikować dostęp do tych dokumentów. Sam o tym mówiłem jakiś czas temu na prezentacji, dostępnej na Youtube. Warto pamiętać, że zakładając skrzynki pocztowe dla uczniów, żeby być w zgodzie z RODO adres pocztowy ucznia nie powinien być zbudowany z jego imienia i nazwiska, ale lepiej użyć jest identyfikatora z dziennika elektronicznego (jest on unikalny w danej szkole).
Kolejną kwestią jest fakt, że nie wszystkie placówki oświatowe mają spójnie systemy poczty elektronicznej dla wszystkich pracowników, cześć używa do komunikacji systemy elektronicznego dziennika jak np. Librus czy Vulcan. Mając usługę Office 365 można tą sytuację zmienić, zwłaszcza, że skrzynki tworzone są z limitem 50GB (a w płatnych planach A3 i A5 może być nawet więcej).
Zupełnie innym tematem jest migracja z obecnego systemu pocztowego. Chociaż kreatory są coraz lepsze i bardziej przyjazne dla użytkownika, to w zależności od typu używanego systemu migracja może być zadaniem czasami nawet bardzo skomplikowanym. Jest on dobrze udokumentowany na stronach Microsoft, np. tutaj - https://docs.microsoft.com/en-us/exchange/mailbox-migration/mailbox-migration. Realizując migracje Exchange przez ostatnie 20 lat również często wspominałem o tych zagadnieniach na tym blogu, spotkaniach PEPUG czy też konferencjach. Warto pytać na forach dyskusyjnych, w związku z obecną sytuacją wiele osób bezpłatnie pomaga szkołom przy takich zadaniach.

20 marca 2020

Jak zablokować możliwość wyłączania mikrofonu organizatorowi spotkania w Teams?

Żeby nie przekształcić jednego posta w książkę postanowiłem rozbić kolejne zagadnienia na oddzielne posty. Jednym z pytań, na które ostatnio się często natykam jest kwestia blokowania mikrofonu przez uczestników spotkania, co oczywiście nie powinno mieć miejsca, ale w nauczaniu na odległość może się zdarzyć.
Jak temu zapobiegać? Odpowiedź jest bardzo prosta, chociaż realizacja nie tak oczywista. Po prostu organizator musi zdefiniować opcje danego spotkania, wskazując, że tylko organizator jest prezenterem (ewentualnie konkretne wskazane osoby). W trakcie spotkania organizator może zawsze zmienić dla konkretnego uczestnika rolę na prezentera. Jak ustawić opcje spotkania? Tworząc nowe spotkanie Teams odpowiedź nie jest wcale taka oczywista. W przypadku dodatku do Outlooka, kiedy tworzymy nowe spotkanie, przycisk Opcje spotkania jest dostępny, jednak kiedy tworzymy spotkanie w kalendarzu klienta desktopowego Teams lub klienta webowego nadal takiej opcji nie ma. Dopiero kiedy utworzymy spotkanie i klikniemy w jego właściwości, zobaczymy na prawo od strefy czasowej pozycję "Opcje spotkania", jak widać na poniższym rysunku. Po wybraniu tej opcji otworzy nam się w przeglądarce (również dla klienta desktopowego) strona, na której możemy ustawić/zmienić dwie opcje spotkania - "Kto może ominąć poczekalnię" oraz "Kto może prezentować". Domyślnie wszyscy uczestnicy spotkania mogą prezentować, mogą równocześnie wyłączać mikrofon innym uczestnikom spotkania. Osoby o statusie uczestnika mogą wyłączać mikrofon tylko sobie.



























18 marca 2020

Marcowe poprawki dla Exchange

Kolejny kwartał mija i pojawiła się planowo następna partia aktualizacji dla Exchange, ogłoszona na blogu zespołu produktowego. Jak zwykle tylko dwie ostatnie wersje Exchange zostały uwzględnione w cyklicznych poprawkach:
Aktualizacja dla Exchange 2019 rozwiązuje problem z wyszukiwaniem online na podstawie fragmentów słów, poprawia skrypt do włączenia MCDB oraz optymalizuje kalkulator planowania Exchange 2019. Jeżeli aktualizujemy Exchange z wersji co najmniej CU2, to nie musimy aktualizować lasu AD. W przeciwnym przypadku jest taka konieczność, wykonujemy więc komendę setup /preparead. Dodatkowo należy pamiętać o odpowiedniej wersji .Net Framework (4.8) i Visual C++ Runtime 2012.
W przypadku CU16 dla Exchange 2016 zmian jest mniej, ale warunki instalacji są podobne. Jeżeli aktualizujemy z wersji wcześniejszej niż CU13, to również powinniśmy wykonać setup /preparead. Również wymagany jest .Net Framework 4.8 i Visual C++ Runtime 2013.
Dodam jeszcze, że oba pakiety Cumulative Updates zawierają krytyczne poprawki bezpieczeństwa, o których pisałem kilka tygodni temu.

15 marca 2020

Praca zdalna w czasie kryzysu

Co najmniej od kilku dni cała Polska a nawet świat w dużym stopniu przeszedł na pracę zdalną. Ja też kolejne kilka (albo i więcej) dni spędzę w domowym biurze. Przy okazji śledzę i uczestniczę w wielu dyskusjach na temat możliwości pracy zdalnej, a zwłaszcza nauczania na odległość. Dla mnie odpowiedź jest oczywista - od wielu lat wdrażam i używam Skype for Business i Microsoft Teams, ale wiele osób ma wątpliwości, jakie rozwiązanie wybrać i czy będzie ono spełniać wszystkie wymogi funkcjonalne. Wiele pytań dotyczących Office 365 i Microsoft Teams powtarzanych jest na wielu forach i grupach dyskusyjnych, więc stwierdziłem, że może warto podsumować te pytania i rozwiąć przy okazji kilka mitów.
Pytanie 1. Jakie bezpłatne narzędzie zapewni efektywne nauczanie na odległość?
Jak dla mnie najlepszym wyborem jest Microsoft Teams. Microsoft przypomina o bezpłatnym pakiecie Office 365 dla Edukacji, podając jednocześnie instrukcję jak szybko uruchomić subskrypcję edukacyjną - http://aka.ms/zdalnanauka. Plan edukacyjny A1 co prawda nie zawiera pełnego pakietu narzędzi biurowych, ale jest w nim OneNote w wersji przystosowanej do współpracy w ramach klas i oczywiście Microsoft Teams.
Pytanie 2. Ile trwa uruchomienie Office 365 dla Edukacji i jakie warunki trzeba spełniać?
Wystarczy zarejestrować się w witrynie Office 365 dla Edukacji http://aka.ms/Office365edupl, zgodnie z instrukcją opublikowaną w odpowiedzi na pytanie 1, wypełnić profil organizacji, a następnie wysłać z portalu administracyjnego usługi wniosek do pomocy technicznej, wpisując w treści informację - weryfikacja szkoły oraz link do strony internetowej. Weryfikacja powinna zostać wykonana w 48 godzin.
















Po zweryfikowaniu można dodać pełną wersję licencji dla nauczycieli i dla uczniów, jednak od razu po zarejestrowaniu usługi automatycznie przypisywane są licencje A1 w wersji ewaluacyjnej na 6 miesięcy. Tak że możemy konfigurować usługi nie czekając na zakończenie weryfikacji.
















Kto może skorzystać z tej oferty? Szkoły i uczelnie wyższe, zarówno państwowe i prywatne, biblioteki i muzea publiczne, biura administracyjne instytucji edukacyjnych. Więcej informacji można znaleźć na stronie licencji grupowych Microsoft.
Pytanie 3. Jak skonfigurować i używać Microsoft Teams?
Dobrym początkiem jest na pewno portal Zdalna Nauka, wymieniony w odpowiedzi 1. Ponadto dobry poradnik konfiguracyjny przygotowali koledzy z polskiego biura Microsoft - Uruchomienie Teams.
Pytanie 4. Dla nauczycieli Teams działa, a dla uczniów nie, kedy zacznie?
Problem wynika z małej zaszłości historycznej - dla nauczycieli jest włączony domyślnie (w planach komercyjnych domyślnie dla wszystkich pracowników), a dla uczniów nie. Żeby to poprawić, należy w starej wersji portalu administracyjnego wejść w ustawienia i dla typu licencji/użytkownika "Education - Student" włączyć usługę (obraz poniżej). Łatwo to przeoczyć, bo domyślnie konsola pokazuje ustawienia dla nauczyciela - "Education - Faculty and Staff"





















Pytanie 5. Kto może wziąć udział w spotkaniu Microsoft Teams?
W zasadzie każdy, kto dostanie zaproszenie, jeżeli zabezpieczenia naszej organizacji tego nie zablokują. Administrator organizacji może nawet pozwalać na prezentowanie treści anonimowym uczestnikom spotkania. Mając zaproszenie na spotkanie (a w zasadzie link do spotkania), wystarczy nam przeglądarka - najlepiej Chrome lub nowy Edge, wykorzystujący silnik Chromium, co pozwoli nam wykorzystać optymalnie dostępne opcje, np. integrację audio/video. Przy dołączeniu pierwszy raz do spotkania Teams, przeglądarka spyta nas o prawo do użycia mikrofonu i kamery, a potem będziemy mogli uczestniczyć w spotkaniu. Używając innych przeglądarek, możemy mieć problemy z niektórymi funkcjami.

Odpowiedzi na kolejne pytania będę uzupełniał na bieżąco. Jeżeli odpowiedź będzie dłuższa, pojawi się jako oddzielny post.
Jak zablokować możliwość wyłączania mikrofonu organizatorowi spotkania w Teams?

02 marca 2020

Poprawki bezpieczeństwa dla Exchange Server

Chociaż od dnia publikacji najnowszych poprawek bezpieczeństwa dla Exchange Server minęło już kilkanaście dni, zorientowałem się właśnie, że nie opublikowałem informacji o nich na blogu, dlatego też nadrabiam zaległości. Poprawki adresują podatności, opisane w biuletynach bezpieczeństwa:
  • CVE-2020-0692: Microsoft Exchange Server Elevation of Privilege Vulnerability
  • CVE-2020-0688: Microsoft Exchange Memory Corruption Vulnerability
  • KB4540267 MSExchangeDelivery.exe or EdgeTransport.exe crashes in Exchange Server 2013 and Exchange Server 2010

O ile pierwsze z zagrożeń dotyczy wersji systemu począwszy od Exchange 2013, to dwa kolejne mogą umożliwiać również przejęcie kontroli nad systemami w wersji Exchange 2010. W ten sposób powstał RU30 dla Exchange 2010 SP3. Warto przeczytać powyższe artykuły, żeby przekonać się, że na czym polegają poszczególne zagrożenia. Poniżej lista aktualizacji:
Wersja Exchange

Build
Artykuł KB
Lokalizacja poprawki
Exchange 2019 CU4
15.2.529.8
Exchange 2019 CU3
15.2.464.11
Exchange 2016 CU15
15.1.1913.7
Exchange 2016 CU14
15.1.1847.7
Exchange 2013 CU23
15.0.1497.6
Exchange 2010 SP3 RU30
14.3.452.0

Warto pamiętać, że aktualizacje obejmują tylko dwie ostatnie wersje CU, zarówno dla Exchange 2016 jak i 2019 (dla Exchange 2013 tylko ostatnią). Należy więc dobrze sprawdzić, jaką wersję poprawki powinniśmy pobrać.

01 marca 2020

Ułatwienia w migracji skrzynek - DCS

Każdy administrator Exchange, zarówno on-premises, jak i online, od czasu do czasu spotyka się z zadaniem migracyjnym - przeniesienie skrzynki do innej bazy czy też z lokalnego serwera do chmury jest stosunkowo prostym zadaniem, jednak żeby nie zakończyło się niepowodzeniem, należało w zadaniu migracyjnym ustawić wartość 'Bad Item Limit' na odpowiednio wysoką wartość (ja przeważnie używam 50). Działanie to miało umożliwić poprawne wykonanie migracji pomimo natrafienia na pewną ilość (nie większą niż wskazany limit) uszkodzonych elementów w skrzynce użytkownika. Po zakończeniu migracji mogliśmy zweryfikować log dla takiej skrzynki i sprawdzić, jakiego rodzaju elementy nie zostały zmigrowane. Jednak przy każdym zadaniu migracyjnym należało o tym pamiętać (pojawienie się nawet jednego elementu powodowało "wywalenie się" migracji), co bywało nieco uciążliwe, zwłaszcza dla osób z mniejszym doświadczeniem. Pod koniec zeszłego roku Microsoft wprowadził alternatywny mechanizm w Exchange Online o nazwie Data Consistency Score (DCS). Na podstawie znalezionych w trakcie migracji uszkodzonych elementów, raport pomigracyjny określa wynik migracji jako Perfect, Good, Investigate lub Poor. Migracja oznaczona jako Investigate wymaga dodatkowej akceptacji przez administratora (przez portal lub Powershell), oczywiście po weryfikacji, jakie problemy pojawiły się w trakcie. Migracja oznaczona jako Poor, nie może być zakończona bez eskalacji do supportu usługi. DCS zastępuje również użycie opcji -LargeItemLimit, co czasami bywa niezbędne przy użytkownikach z niestandardowymi wymaganiami.
Oczywiście, jeżeli użyjemy parametr -BadItemLimit definiując moverequest dla chmury, to nasz wybór będzie miał preferencję nad DCS, ale domyślny tryb migracyjny korzysta z nowego mechanizmu scoringu. Docelowo zarówno -BadItemLimit jak i -LargeItemLimit zostaną całkowicie zastąpione mechanizmem DCS. Więc informacji o Data Consistency Score można znaleźć w dokumentacji producenta.

28 lutego 2020

Zmiany w zabezpieczeniach Exchange Server

Część firm wykorzystujących Exchange Online z niepokojem czeka na jesień, kiedy to 13 października, zgodnie z zapowiedziami zespołu produktowego Exchange, w celu zwiększenia bezpieczeństwa zostanie wyłączone uwierzytelnienie podstawowe dla wielu usług - EWS, POP, IMAP, a także ActiveSync i Remote Powershell (uszczegółowienie listy usług, dla których zostanie wyłączone uwierzytelnianie podstawowe opublikowano we wrześniu ubiegłego roku). Dla wielu administratorów to niezłe trzęsienie ziemi, bo przecież jesteśmy przyzwyczajeni, że usługi te towarzyszą nam od dekad. Zespół produktowy wskazuje jednak, jak możemy zapobiec problemom, używając aplikacji, które wykorzystują nowocześniejsze mechanizmy uwierzytelnienia - w szczególności bazujące na OAuth i Modern Authentication. Zresztą tendencja do wyłączania słabszych mechanizmów zabezpieczeń nie dotyczy tylko Exchange ale również np. Google i współpracujących z nim klientów (Thunderbird od wersji 38 może wykorzystywać OAuth2 do uwierzytelniania np. POP w serwisie Google). Teraz na liście nadchodzących aktualizacji w Office 365 znalazło się wprowadzenie mechanizmów Oauth dla protokołów POP i IMAP (chociaż np. w usłudze konsumenckiej Outlook.com IMAP korzysta z OAuth już od pewnego czasu). Zespół produktowy Exchange własnie opublikował kolejny artykuł na swoim blogu, opisujący wprowadzane zmiany oraz jak zabezpieczyć się przed ewentualnymi problemami.
Po pierwsze możemy sprawdzać w portalu administracyjnym Azure AD, czy w naszym tenancie zachodzi uwierzytelnianie starszymi metodami - informacje te możemy znaleźć w oknie Sign-In Events, dodatkowo wymuszając prezentację aplikacji używanych przez użytkowników, jak widać na poniższym rysunku (niektóre domyślne kolumny schowałem dla czytelności widoku).









Eksportując wyniki w formacie JSON, możemy w Excelu zweryfikować informacje o użytkownikach/systemach, którzy wykorzystują uwierzytelnianie Basic (już niebawem raporty w pormacie csv również będą zawierały niezbędne informacje). Pamiętajmy jednak o tym, że Modern Auth jest dostępne w Outlookach od wersji 2013, podobnie w klientach mobilnych od dłuższego czasu. Aktualizując aplikacje pocztowe oraz mechanizmy dostępu administracyjnego (np. modułów powershell, używanych do zarządzania usługami) unikniemy problemów po wyłączeniu słabych mechanizmów zabezpieczeń.

26 stycznia 2020

Response Groups Service - agenci widma

Jedną z ciekawszych funkcjonalności dla połączeń głosowych, istniejących w Skype for Business (która zresztą była dostępna już w OCS) jest Response Group Service. W RGS definiowane są kolejki, do których przypisujemy grupy agentów, do których kierowane są rozmowy. Niestety, wyłączenie użytkownika w SfB nie usuwa agenta z grupy (jest w niej zapisywany adres SIP URI agenta), co oczywiście może powodować problemy, przy próbie zestawienia rozmowy z takim kontem. Podobnie można wyłączyć użytkownikowi Enterprise Voice, jednak to również nie usuwa agenta z grupy, co również będzie powodowało nieoczekiwane problemy w działaniu usługi.
Jak możemy zweryfikować, czy w naszych grupach agentów znajdują się niepoprawne obiekty? Ciekawy artykuł i skrypt do wykrywania takich agentów zombie udostępnił na swoim blogu Greig Sheridan. Pomysł oparł na zweryfikowaniu istnienia zdarzeń typu Warning o numerach 31137 lub 31137 w Event Logu.  Zdarzenia te ostrzegają właśnie o znalezieniu agenta z wyłączonym EV lub nieistniejącego w AD. W zależności od użytego przełącznika możemy wykonać raport lub od razu usunąć niepoprawnych agentów.
Jednak przy dużej ilości serwerów Front End w organizacji, weryfikacja logów na wszystkich serwerach może nie być specjalnie efektywna. Alternatywnie można wykorzystać inną metodę weryfikacji agentów. Jedną z metod jest odpytanie serwera backend SQL, gdzie w bazie rgsconfig jest tabela z listą agentów, w której możemy sprawdzić status EV agenta, poniższą komendą:
SELECT *
  FROM [rgsconfig].[dbo].[Agents]
  Where EnterpriseVoiceEnabled = 0
Możemy również użyć skryptu, który będzie sprawdzał właściwości poszczególnych agentów, poprzez sprawdzenie w pętli członków grup agentów (cmdlet Get-CsRgsAgentGroup). Ja napisałem sobie do tego funkcję:
function checkRGSpool {
    param (
        [string]$poolname
    $agentgroups = Get-CsRgsAgentGroup | Where-Object OwnerPool -eq $poolname
    ForEach ($agentgr in $agentgroups) {
        $groupname = $agentgr.Name
        write-host "Processing $groupname"
        if ($agentgr.AgentsByUri.count -gt 0) {
            $agents = $agentgr.AgentsByUri
            foreach ($agent in $agents) {
                $agent = $Agent.tostring()
                # write-host "Agent $agent"
                Try {
                    $currentagent = get-csuser $agent -ErrorAction Stop
                }
                Catch [Exception] {
                    write-host "Ghost agent found: $agent" -ForegroundColor Yellow
                }
                $agentlist += $agent
            }
        }
        else {
            write-host "$groupname has no Agents" -ForegroundColor Yellow
        }
    }
}

Możemy oczywiście funkcję rozbudować również o weryfikację statusu EV, ale to w kolejnej iteracji.

31 grudnia 2019

Kończy się dekada

Za chwilę zacznie się rok 2020 - można dyskutować, czy to ostatni rok tej dekady, czy pierwszy kolejnej.  W IT liczenie zaczyna się od 0, a po szaleństwie roku 2000 (kto to jeszcze pamięta?), jakoś trudno mi liczyć inaczej. Zwłaszcza, że i mi za parę dni przekręci się licznik. Ale teraz pora na małe podsumowanie roku. W ostatnim roku mniej mnie było widać na konferencjach i spotkaniach meetupowych, ale starałem się nie wypaść z obiegu. Więcej czasu poświęciłem na aktualizację certyfikatów Microsoftowych (tylko cztery, ale i tak więcej niż w dwu poprzednich latach razem licząc), chociaż oczywiście nie wszyscy uważają, że potwierdzanie wiedzy certyfikatami jest istotne. Jednak chcąc pozostać aktywnym trenerem MCT, muszę mieć aktualne certyfikacje z technologii, które znam i lubię. O zmianach w ścieżkach certyfikacyjnych pisałem niedawno, warto śledzić nowości w tym obszarze i dostosować się do nowych możliwości.
Udało mi się również przeczytać trochę książek - jak zwykle dużo kryminałów i fantasy, jednak staram się czerpać inspirację od kolegów z branży - kilka lat temu Tomek Onyszko swoim postem na blogu zachęcił mnie do bliższego kontaktu z serwisem Goodreads. Oprócz zapisywania informacji o książkach, które się przeczytało, a których tytuły czasami mogą umknąć (pamięć mam dobrą ale coraz krótszą), można tam inspirować się tym co czytają znajomi i ich recenzjami - dzięki Gutek. Jest podobny serwis w Polsce - lubimyczytac.pl, jednak niestety nie można na nim znaleźć części tytułów, dostępnych np. w serwisie Audible. Można jednak w tym serwisie porównać ceny danego tytułu w polskich księgarniach, a różnice czasami są spore. Więc osoba czytająca polskie tytuły powinna również śledzić ten serwis. Pełną listę książek, które przeczytałem w 2019 roku można znaleźć na moim profilu Goodreads - które z nich były najciekawsze? Trudny wybór. Na pewno ciekawe były książki Olgi Tokarczuk, które przeczytałem w ostatnich tygodniach. Wstrząsnęła mną książka "Ganbare! Warsztaty umierania" Katarzyny Boni - reportaże z Japonii, z obszarów zniszczonych przez Tsunami i katastrofę elektrowni w Fukushimie. Bardzo ciekawa była również książka "Dlaczego śpimy. Odkrywanie potęgi snu i marzeń sennych" Matthiew Walkera. Trochę mniej przeczytałem i przesłuchałem niż w zeszłym roku, ale z drugiej strony cieszę się, że zamiast tracić 2 godziny dziennie (albo i więcej) na dojazdy do biura teraz jest to tylko 40-50 minut.
Co przyniesie Nowy Rok? Co uda się zrealizować? Czas pokaże. Mam kilka pomysłów, o których będę donosił, gdy tylko ich realizacja się skrystalizuje.
Teraz wszystkim życzę spełnienia planów i dużo radości w roku 2020.


20 grudnia 2019

Grudniowe poprawki do Exchange

Kolejny kwartał się kończy, więc zespół produktowy Exchange publikuje kolejne paczki Cumulative Updates.
Co nowego możemy znaleźć w powyższych aktualizacjach? Pełna lista usuniętych błedów dostępna jest w powyższych artykułach, natomiast warto wspomnieć o modyfikacji Address Book Policies, która rozwiązuje problem, opisany w KB4532747, który dotyczy niepoprawnego działania ABP, w przypadku otwarcia w Outlooku skrzynki innego konta, przez użytkownika, kótry sam skrzynki nie posiada.
Warto również wspomnieć o aktualizacji kalkulatora do projektowania Exchange 2019 (wersja 10.3). oraz konieczności wdrożenia .Net Frameworka 4.8 jako wymagania wstępnego. Oczywiście jeżeli nie aktualizowaliśmy Exchange dłużej niż pół roku, to warto sprawdzić, z jaką wersją Frameworka nasz Exchange jest zgodny. Jeżeli wykonujemy aktualizację w środowisku wielodomenowym z wersji starszej niż CU 13 (w przypadku Exchange 2016) lub CU2 w przypadku Exchange 2019, to dodatkowo musimy również wymusić przygotowanie AD i domeny, ponieważ w przeciwnym wypadku instalacja zakończy się błędem.
W przypadku środowisk hybrydowych dodatkowo należy pamiętać o ewentualnych problemach ze wsparciem technicznym, jeżeli takiej aktualizacji nie zrobimy. Microsoft wspiera tylko N-1 wersję Exchange (odpowiednio 2016 CU14 i CU15 oraz Exchange 2019 CU3 i CU4).