Office 365の障害時にどうすべきか

年度明け最初の週末に向けた2018/4/6(金)の夕方、比較的広い範囲のOffice 365の一部テナントでログインに関連する障害が発生しました。

幸か不幸か、私の個人用のテナントや会社で使っているテナントは影響を受けていなかったのですが、色々と気づくことも有ったのでメモ代わりに記しておきたいと思います。

Continue reading

Exchange Onlineへのシステムメール送信

プリンターやシステムのアラートメールなど、社内ネットワークからExchange Online上にあるユーザーのメールボックスにメールを送信するにはいくつか方法があります。

その中で一番設定が簡単で利用されるシーンも多いのが、MXレコードの向け先と同じ contoso-com.mail.protection.outlook.com などのアドレスにSMTP(TCP/25)で直接送信をする方式となります。

Office 365 を使って、多機能デバイスやアプリケーションがメールを送信するように設定する方法

このケースにおいて、稀にメールが受信できないという事象が発生することがあり、調査してみるとSMTPで送信をしようとした際に4xx番台のエラーが出て失敗したという物です。

Continue reading

Office365のTLS1.2の強制が延期されました

メッセージセンターに通知が来たのでお気づきの方も多いかも知れませんが、Office 365によるTLS1.2暗号化の強制が2018/10/31に延期されました。

比較的急なアナウンスだったので、Office 365管理者の中には大急ぎで対応要否について調査されている方も多かったのでは無いかと思いますが、これで少し期間的な猶予ができましたね。

Exchange Online のアプリケーション偽装権限

Exchange Online と連携したアプリケーションを利用する際、アプリケーション偽装(ApplicationImpersonation)という特権(管理者権限)を利用するケースが多いです。

これを利用する事により、アプリケーションは自身の権限設定を利用して対象のユーザーになりすましてメールを取得したり、予定表を更新したりできます。

例えば、以下の様なことができます。

  1. モバイルアプリケーションがExchange Serverのメールを取得する
  2. 会議室有効利用のサービスが会議室の利用情報を取得、更新する
  3. メールの移行ツールが各ユーザーのメールボックスの中身を取得する

最近特にExchange Onlineと連携するアプリケーションやサービスが沢山出てきて、その中で利用されています。

Continue reading

クライアントアクセスルールによるIP制限

今までと同じポリシーで利用したいということで、Exchange Online で IP アドレス制限を掛けたいという話は良く聞きます。これまでは、AD FSを利用したクレームルールを構成するか、Azure AD Premiumの条件付きアクセスの機能を利用する、あるいはサードパーティのツールを利用するなどして制御するしかありませんでした。

いずれも新規でサーバを立てるなり、追加でライセンスを購入するということでコストの掛かるソリューションでしたが、Exchange Onlineに実装された(現在、まだ全てのテナントで利用可能ではありませんが)クライアントアクセスルールを利用する事により、標準機能としてこれを実装できるようになりました。

Exchange Online のクライアント アクセス規則

また、この機能は現在 AD FS などを利用してIPアドレス制限を掛けている環境においても、その不足する部分を補完する存在になり得ますので、是非この機能は注目して頂ければと思います。

Continue reading

ドメインとAzureADテナントの紐づけを調べる

今回はちょっとトリッキーなTipsです。

色々なテナントをテストで利用していて、ふと「あれ、この独自ドメイン紐づけていたのどのテナントだっけ」となったり、「あの会社確かOffice 365使っていると言っていたけどテナント(xxx.onmicrosoft.com)どこだろう」…と調べたくなることがあると思います。

こういったときには、Exchangeの管理シェルからGet-FederationInformationコマンドで調べられます。Exchange Onlineに接続し、以下のコマンドを実行してみます。

[PS] C:\>(Get-FederationInformation -DomainName mirogo-shoji.com -BypassAdditionalDomainValidation).DomainNames

Domain
------
mirogo.onmicrosoft.com
mirogo-shoji.com

この例では、mirogo-shoji.com のドメインが紐づけられているテナントは mirogo.onmicrosoft.com だということが分かります。逆の場合(特定の xxx.onmicrosoft.com に紐づけられているのはどんな独自ドメインか)も同様のコマンドで調べられます。

なお、この例では Autodiscover のDNSをきちんとOffice 365用に設定していないと調べられません。

その場合は、ちょっと面倒ですが、Exchange Server(バージョンはいくつでも良いです)を1台立てて、そのサーバ上のHostsファイルに autodiscover.[調べたいドメイン名] を autodiscover.outlook.com のどれかのIP(例えば40.100.154.56)に向けるように設定して、コマンドを実行すれば大丈夫です。

Office 365プロダクトのサービス一覧を調べる

この投稿はOffice 365 Advent Calendar 2017に参加しています。

Office 365ですが、どんどん日々進化しておりE3やE5のSuiteに含まれるサービスも増えていっています。また、今年はMicrosoft 365など、更なるバンドルライセンスも増えてきました。

6年以上前にblogのエントリーを書いた際と比較すると、例えばOffice 365 E3に含まれるパッケージは以下の様にサービス数でいうと3倍以上になりました。

今回は、現時点(2017.12.03)での各ライセンスとそれに含まれるサービスを調査してみました。

調査方法は、ライセンスプラン(SKUとも呼ばれます)と、それに含まれるライセンスプランをGet-MsolAccountコマンドレットを使って調査しました。また、対応する名前は管理者ポータルから確認しています。

結果、以下のリストの通りの出力となりました。

プラン一覧(50個/CSV)Download 2017/12/03更新
サービス一覧(85個/CSV)Download 2017/12/03更新

詳細は以下の通りです。

Continue reading

第18回 Office365勉強会が開催されます

3/11(土) 13:00より、飯田橋のIIJセミナールームをお借りして第18回のOffice 365勉強会が開催されます。

今回のテーマは ”Identity&Security” Office 365から広がるクラウドの世界とそのセキュリティ対策 ということで、私も話を是非聴きたいと思っていた著名なスピーカーの方々をお招きしてOffice 365とそれを取り巻くセキュリティ関連の最新情報をお話しして頂く予定となっております。

既に満席になっている可能性はありますが、毎回一定数のキャンセルは発生しますので、是非キャンセル待ちに登録を頂ければと思います。

詳細は こちら をご参照下さい。

 

AAD ConnectでExchange属性が同期されない(その2)

先日の記事を投稿したところ、友人より「GUIだと手順が面倒だし、美しくない」と優しいコメントを頂きましたので、PowerShellで書き直してみました。

これだと既存のコネクタが一時的にDisableになったりしませんし、後から自分で追加したカスタムルールということが明示できるので今後のソフトウェアのアップデートなどの際に分かりやすいかもしれません。

※こちらのスクリプトはExchangeスキーマを拡張していない環境では実施しないで下さい(参照先のルールが存在しませんので)。また、マルチドメイン環境には対応していません。

# Get Connector ID
$conID = (Get-ADSyncConnector | ? {$_.Type -eq "AD"} | select -first 1).Identifier.Guid

New-ADSyncRule `
  -Name 'Custom rule from AD(Exchange)' `
  -Description 'User object with Exchange schema in Active Directory. (without mailNickname)' `
  -Direction 'Inbound' `
  -Precedence 200 `
  -SourceObjectType 'user' `
  -TargetObjectType 'person' `
  -Connector $conID `
  -LinkType 'Join' `
  -SoftDeleteExpiryInterval 0 `
  -ImmutableTag 'Custom rule from AD(Exchange)' `
  -OutVariable syncRule

# Get attribute flow mapping from existing rule "In from AD - User Exchange"
$AttributeFlowMappings = (Get-ADSyncRule | ? {$_.Name -eq "In from AD - User Exchange"}).AttributeFlowMappings
foreach ($mapping in $AttributeFlowMappings){
  Add-ADSyncAttributeFlowMapping -SynchronizationRule $syncRule[0] $mapping
}

New-Object `
  -TypeName 'Microsoft.IdentityManagement.PowerShell.ObjectModel.ScopeCondition' `
  -ArgumentList 'mailNickname','','ISNULL' `
  -OutVariable condition

Add-ADSyncScopeConditionGroup `
  -SynchronizationRule $syncRule[0] `
  -ScopeConditions @($condition[0]) `
  -OutVariable syncRule

Add-ADSyncRule -SynchronizationRule $syncRule[0]

 

DirSyncのAADConnectへのアップグレードが失敗する(その2)

前回の投稿では、古いバージョンのディレクトリ同期ツールからAAD Connectへのアップグレードの際にエラーが出ないようにする手順について紹介させて頂きました。

しかしながら、気づかずにこちらを実施せずアップグレードをしてしまうと、結構悲惨な状態になります。[問題が発生したため、統合を完了できません – Syncronization Serviceをインストールできません。詳細については、イベントログを参照して下さい。]と表示され、アップグレードが失敗します。

ログを確認すると、

[21:38:17.249] [ 12] [ERROR] PerformConfigurationPageViewModel: Caught exception while installing synchronization service.
Exception Data (Raw): System.Exception: Synchronization Service をインストールできません。詳細については、イベント ログを参照してください。 ---> System.DirectoryServices.AccountManagement.NoMatchingPrincipalException: Group 'FIMSyncAdmins' was not found.
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Framework.AccountManagementAdapter.GetGroupBySamAccountName(String groupSamAccountName)
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Setup.SynchronizationServiceSetupTask.<>c__DisplayClass9.<ValidateOrCreateSyncServiceGroups>b__8()
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Framework.ActionExecutor.Execute(Action action, String description)
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Setup.SynchronizationServiceSetupTask.InstallCore(String logFilePath, String logFileSuffix)
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Framework.ActionExecutor.ExecuteWithSetupResultsStatus(SetupAction action, String description, String logFileName, String logFileSuffix)
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Setup.SetupBase.Install()
   --- 内部例外スタック トレースの終わり ---
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Setup.SetupBase.ThrowSetupTaskFailureException(String exceptionFormatString, String taskName, Exception innerException)
   場所 Microsoft.Azure.ActiveDirectory.Synchronization.Setup.SetupBase.Install()
   場所 Microsoft.Online.Deployment.OneADWizard.Providers.EngineSetupProvider.SetupSyncEngine(String setupFilesPath, String installationPath, String sqlServerName, String sqlInstanceName, String serviceAccountName, String serviceAccountDomain, String serviceAccountPassword, String groupAdmins, String groupBrowse, String groupOperators, String groupPasswordSet, Int32 numberOfServiceInstances, ProgressChangedEventHandler progressChanged, NetworkCredential& serviceAccountCredential, SecurityIdentifier& serviceAccountSid)
   場所 Microsoft.Online.Deployment.OneADWizard.Runtime.Stages.InstallSyncEngineStage.ExecuteInstallCore(ISyncEngineInstallContext syncEngineInstallContext, ProgressChangedEventHandler progressChangesEventHandler)
   場所 Microsoft.Online.Deployment.OneADWizard.Runtime.Stages.InstallSyncEngineStage.ExecuteInstall(ISyncEngineInstallContext syncEngineInstallContext, ProgressChangedEventHandler progressChangesEventHandler)
   場所 Microsoft.Online.Deployment.OneADWizard.UI.WizardPages.PerformConfigurationPageViewModel.ExecuteSyncEngineInstallCore(AADConnectResult& result)

と表示されており、FIMSyncAdminsグループが存在しない為に発生したエラーだということが推測されます。

しかしながら、FIMSyncAdminsグループを作成後に[再試行]をクリックしても、[指定されたファイルが見つかりません。]というエラーが表示されて、続行できません。参照されたログファイルを見ても、続きを実施する方法は分かりません。

しかも都合の悪いことに、前のバージョンのディレクトリ同期は既にアンインストールされており、切り戻しもできません。再度インストーラーを走らせると新規インストールになってしまいます。

全てデフォルト設定で利用していた場合はそれで良いかもしれませんが、同期フィルタなどを設定していた場合はどんな設定をしただろう…?って途方に暮れてしまうこともあるかと思います。

根気強くログファイルを見ていくと、見つけました!

[21:27:25.520] [ 10] [INFO ] AnalyzeDirSyncInstallation: Backing up DirSync upgrade settings to C:\Users\syncadm\AppData\Local\AADConnect\DirSyncSettings20161214-212725.xml.

どうやら、Appdata\Local\AADConnect配下に作業ファイルとして古い設定データがxmlで保存されているようです。(syncadmはAAD Connectのインストールを実行したユーザー名ですので、皆さんの環境に合わせて読み替えて下さい)

※OUの除外設定などもきちんと残っています。

これさえ分かれば、後は並列デプロイと同じ方式で移行を継続できます。

PS C:\> cd "C:\Program Files\Microsoft Azure Active Directory Connect\"
PS C:\Program Files\Microsoft Azure Active Directory Connect> .\AzureADConnect.exe /migrate

設定ファイルをインポートする画面が出ますので、先ほどのフォルダ配下の.xmlファイルを指定します。また、[既存のサービスアカウントを使用する]のチェックボックスを外して[次へ]を選択します。
 

ここから先は通常のアップグレードと同じです。Azure ADの管理者アカウントの情報を入力し、次にオンプレミスのActive DirectoryのEnterprise Adminsのアカウント情報を入力し、最後に[インストール]を実施します。

これでインストールは完了です。インストール後の状態は、ステージングモードというエクスポートのみ行わない状態になっています。

MIISClientなどで既存のフィルタがきちんと移行されているかを確認(新しいMIISClientのパスはC:\Program Files\Microsoft Azure AD Sync\UIShell\miisclient.exeです。実行には一度ログオフが必要です)した後に、ステージングモードを解除します。

Azure AD Connectを起動し、[構成][ステージングモードの構成][次へ]を選択。Azure ADの管理者情報を入力、[ステージングモードを有効にする]のチェックボックスを外して[次へ]をクリックし、最後に[構成]をクリックします。
 

これで、無事AAD Connectの環境に移行できました。

良いAADライフを!