Office 365サインオンポリシーでカスタムクライアントを許可または拒否する
userAgent属性の使用
Office 365アプリのサインオンルールで特定のクライアントをフィルタリングして、Office 365リソースへのアクセスを許可または拒否することができます。このフィルターは、対応または信頼していない特定のクライアントへのアクセスを拒否する必要がある場合に、特に便利です。また、このフィルターを使用して、信頼できるクライアントのみを許可することもできます。これにより、Office 365アプリへのアクセス権を持つクライアントをより詳細に制御できます。
カスタムクライアントをフィルタリングするためのサインオンポリシールールは、Classic EngineからOkta Identity Engineに移行されません。Office 365アプリインスタンスをOkta Identity Engineに移行する場合は、これらのルールを再作成する必要があります。「Office 365カスタムユーザーエージェント」を参照してください。
ベストプラクティス
Oktaのサインオンポリシーでは、ユーザーのブラウザーから送信されるUser-Agentリクエストヘッダーに含まれる情報が評価されます。ただし、User-Agentは悪意のあるアクターによるなりすましが可能です。これを回避するために、Oktaでは以下の実践をお勧めします。
- サインオンポリシーの作成時に、信頼できるクライアントのみを許可する。
- アプリへのアクセスを許可するクライアントタイプ、デバイスプラットフォーム、および信頼の組み合わせを指定する、1つまたは複数のルールを作成する。
- アプリにアクセスするために、Device TrustまたはMFAを要求する。「デバイス」および「多要素認証」を参照してください。
この手順を開始する
Office 365アプリで次のように操作します。
- [Sign On(サインオン)]タブに移動します。 で、[View policy details(ポリシーの詳細を表示)]をクリックします(または、 に移動して、これにアクセスできます)。
- [App Rule(アプリルール)]ウィンドウで[And The following custom expression is true(次のカスタム式をtrueとする)]の[If]セクションに移動します。
-
Okta Expression Languageを使用してカスタム式を入力し、クライアントを許可または拒否します。次にいくつかの例を示します。
- 必要に応じて他のセクションを完了し、[Save(保存)]をクリックします。「Office 365サインオンルールのオプション」を参照してください。
- 「Custom(サインオンポリシー)」セクションに戻り、このルールを適切な優先度レベルに位置付けします。Oktaで各ルールを優先度に従って評価し、最初に一致したルールを適用します。
- アクセスを許可または拒否するそれぞれのカスタムクライアントに対して、手順1〜5を繰り返します。
このルールにより、指定されたクライアントをフィルタリングして、ルールで定義された他の条件とアクションを適用し、Office 365へのアクセスを許可または拒否できるようになります。
例
カスタム式の良い例と悪い例をいくつか紹介します。
Okta式言語の文字列操作では、大文字と小文字が区別されます。大文字と小文字を区別しない条件を書き込むには、比較の前にユーザーエージェントの値を大文字または小文字に変換します。
良い例
式 | 機能 |
---|---|
request.userAgent.contains("WinWord") | WinWordが含まれるユーザーエージェントのリクエストをフィルタリングします。 |
request.userAgent.toLowerCase().contains("winword") | リクエストを小文字に変換してから、winwordが含まれるユーザーエージェントをフィルタリングします。 |
request.userAgent.toUpperCase().contains("WINWORD") | リクエストを大文字に変換してから、WINWORDが含まれるユーザーエージェントをフィルタリングします。 |
request.userAgent.contains("WinWord") OR request.userAgent.contains("Windows-AzureAD-Authentication-Provider") | WinWordまたはWindows-AzureAD-Authentication-Providerが含まれるユーザーエージェントのリクエストをフィルタリングします。 |
request.userAgent.contains("compatible;") AND request.userAgent.contains("MSIE 7") | compatibleおよびMSIE 7を含むユーザーエージェントのリクエストをフィルタリングします。 |
悪い例
式 | 機能 |
---|---|
request.userAgent.contains("") | すべてのリクエストに一致しています。 |
request.userAgent.contains() | 式が無効です。 |