モバイルセキュリティ
ServiceNow モバイル プラットフォームのセキュリティ機能について説明します。
ServiceNow モバイル アーキテクチャ
ServiceNow モバイル アプリは、ServiceNow サーバーインスタンスと、iOS と Android 用のネイティブアプリで構成さ れています。このアプリは、すべてネイティブコードを使用しており、ハイブリッドアプローチではありません。モバイルアプリは、無線ネットワークを介してサーバーとデータを送受信します。
ServiceNow モバイル プラットフォームセキュリティの主な機能の概要
- モバイルアプリは、セキュリティで保護された ServiceNow プラットフォームとその API を使用して、ユーザーにシームレスなモバイルエクスペリエンスを提供しています。
- アプリ/サーバー間の通信は、OAuth 認証フレームワークによって保護されています。
- ServiceNow アプリのユーザーインターフェイスのほとんどは、ServiceNow プラットフォームのメタデータによって動作します。
- ServiceNow モバイルアプリは ServiceNow プラットフォームからすべてのデータをフェッチし、アプリクライアントレイヤーのローカルキャッシュに保存します。
- ServiceNowインスタンスとの間で転送されるデータとローカルに保存されるデータは暗号化されます。
- iOS アプリの場合、ServiceNow は、デバイスレベルの PIN または生体認証セキュリティを強制することで、コアデータに OS レベルの FIPS 140-2 検証済みディスク暗号化を使用します。iOS は、オペレーティングシステムの更新により、FIPS 準拠の暗号スイートを最新の状態に保ちます。
- Android アプリの場合は、ServiceNow は SQLCipher SDK を使用します。この SDK は、Room DB に格納されているすべてのアプリデータに対して FIPS 140-2 検証済み暗号モジュールを使用した暗号化を行います。Android アプリのクライアント バージョン 20.1.0 では、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 暗号スイートが追加され、以下の CBC 暗号のサポートは中止されました。
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
暗号の不一致が原因で SSL ハンドシェイクの問題が発生した場合は、インスタンスでサポートされている暗号を確認し、サポートされている暗号をもう 1 つ追加します。
以下は、 Androidでサポートされている暗号のリストです。- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
アプリフローの概要
サインインが成功すると、ServiceNow モバイル アプリは最初のユーザーエクスペリエンスの取得を開始します。モバイルアプリはメタデータをフェッチして、インスタンスからランディングホーム画面を表示します。アプリはこのメタデータを使用してホーム画面を表示します。
データ検索
- データの読み取り
- ユーザーがモバイルアプリで情報の表示を要求すると、次の手順が実行されます。
- モバイルアプリがインスタンスのデータにアクセスするよう要求を送信します。この要求には、要求に必要なトークンと関連データフィールドが含まれます。
- インスタンスが要求を受信し、トークンが有効かどうか確認します。
- トークンが有効な場合は、インスタンスにより要求が関連 API に送信され、情報がフェッチされます。
- インスタンスにより情報がモバイルアプリに返されます。
- ドキュメントのダウンロード
- ユーザーがアプリにドキュメントのダウンロードを要求すると、次の手順が実行されます。
- モバイルアプリがドキュメントにアクセスするよう要求を送信します。この要求には、トークンが含まれます。
- インスタンスは要求を受信すると、トークンが有効かどうかを確認します。
- インスタンスは、アクセス制御リスト (ACL) ルールをチェックします。
- 有効であれば、ドキュメントを表示することができます。
- フィールドを更新するためのライトバック
- ユーザーがモバイルアプリのフィールドを更新すると、次のステップが発生します。
- モバイルアプリがインスタンスにトークンとアクションのメタデータを送信します。たとえば、ID または更新するフィールドなどです。
- インスタンスが関連 API に基づいてアクションを送信します。
- インスタンスがアクションを完了し、モバイルアプリに応答を送信します。
- モバイルアプリは応答に基づいて、フィールドの変更と UI のアクションの利用可否を反映させます。
- ファイルを添付するためのライトバック
- ファイルを添付すると、次の手順が実行されます。
- モバイルアプリがユーザーにファイル (画像など) の添付を要求します。
- モバイルアプリがファイルとトークンをインスタンスに送信します。
- インスタンスが関連 API に基づいてファイルを配置します。
- インスタンスがモバイルアプリに応答を返信します。
モバイル認証
ServiceNow モバイル アプリは、OAuth 2.0 を使用したプラットフォーム認証をサポートしています。認証メカニズムには、マルチプロバイダー SSO、MFA、LDAP、ローカル DB、Digest などがあります。ServiceNow モバイル アプリは AppAuth と呼ばれる認証方法を使用しています。AppAuth は、外部モバイルブラウザーを使用してユーザーのログインを行います。
- 認証フロー
モバイルデバイスでアプリにサインインする場合、アプリは資格情報を使用して、インスタンスのある OAuth トークンのネゴシエーションを実行します。iOS キーチェーンには iOS デバイスのトークンが保存されます。Android デバイスはキーストアを使用します。キーチェーンの暗号化は、Galois/Counter Mode (GCM) の AES 256 です。
最初のログイン時に、インスタンスはユーザーに、アクセストークンとリフレッシュトークンを付与します。これらのトークンはインスタンスで設定可能な時間の間有効です。ユーザーがモバイルアプリを開くと、クライアントはアクセストークンが有効かどうかを確認します。有効であれば、ユーザーはセッションを続行できます。有効でない場合、クライアントは、リフレッシュトークンが有効かどうかを確認します。有効な場合、ユーザーの新しい有効なアクセストークンを読み込むためにリフレッシュトークンが使用され、セッションを続行できます。リフレッシュトークンが有効でない場合、ユーザーは再認証する必要があります。
- トークンへのアクセスとリフレッシュ
- モバイルアプリにはユーザーのパスワードは保存されません。
- モバイルアプリは、認証フローの一部として、OAuth トークンを取得するために必要なクライアント ID を保存します。
- ユーザーの終了
- 管理者がユーザーをインスタンスから削除すると、アクセストークンが有効でなくなり、いかなる操作をしてもユーザーはログアウトされます。
- マルチプロバイダー SSO
- マルチプロバイダー SSO プラグイン [com.snc.integration.sso.multi.installer] は、SAML 認証をサポートします。このログインプロセス (AppAuth) では、SAML を使用するときに、このプラグインを使用してユーザーを IDP (SAML プロバイダ) ログインページにリダイレクトします。
- マルチファクター認証
- ユーザーは、MFA プラグイン [com.snc.integration.multifactor.authentication] を使用して、Multifactor Authentication 経由でインスタンスにアクセスできます。モバイルアプリでインスタンスを選択すると、ユーザーに対してログインページが表示されます。
- LDAP
- LDAP 認証を使用するには、LDAP 資格情報を使用してアクセスします。ローカルログイン (DB ベース) と同じログインページがユーザーに表示されますが、LDAP サーバーへのバックエンドでは認証が削除されます。
データセキュリティ
ServiceNow モバイル アプリはデータセキュリティに SSL/TLS 無線 (OTA) 通信暗号化を使用します。OAuth 認証のエンドポイントは、HTTPS です。
- 保存データ
たとえばお気に入り、ホーム画面、モバイルナビゲータアイテムなどのアプリケーション初期設定データは、デバイスにローカルに格納およびキャッシュされます。このモバイルアプリでは、組織がフィールドサービスのオフライン同期を特に有効化していない限り、インシデントや問題などのレコードデータをデバイスに保存しません。オフラインモード中に保存されたレコードデータは FIPS 140-2 検証済みモジュールで暗号化されます。(iOS 暗号化モジュールと、その暗号化モジュールを使用する Android の SQL 暗号)。
- 移動中データ
- 移動中のデータは、安全な SSL/TLS チャネルを介して、FIPS 140-2 検証済みモジュールで暗号化されます。
- データ損失防止
- ServiceNow には、デバイスとアプリケーションをエンタープライズモビリティ管理 (EMM) スイートによって管理する必要のないデータ損失防止機能があります。これらの機能には、コピー/貼り付けの制限、PIN の適用、添付ファイルのブロック、ぼかし機能などがあります。
- コピー/貼り付けを制限
- コピー/貼り付けの制限は、システムプロパティテーブルのプロパティで定義されます。
- アプリ PIN を要求する
- モバイルデバイスからサインインするか、アプリケーションが 5 分以上非アクティブになるたびに、ユーザーは 6 桁の PIN を入力する必要があります。アプリ PIN の要求はシステムプロパティテーブルのプロパティによって制御されます。
- モバイルデバイスで添付ファイルを無効にする
- 特にモバイルデバイスの添付ファイルをブロックするように ACL ルールを設定できます。
isMobileメソッドを使用して、要求がモバイルデバイスからのものであるかどうかを確認します。たとえば、スクリプト化された読み込みおよび書き込み ACL に次のチェックが含まれる添付ファイル [sys_attachment] テーブルに ACL を追加できます。 - [アプリをぼかす] オプションの有効化
- システムプロパティテーブルの次のシステムプロパティを使用して、モバイルデバイスでフォーカスされていないモバイルアプリをぼかします。
- ペネトレーションテスト
ServiceNowは、モバイルアプリのペネトレーションテストを実行するために、サードパーティを利用します。 これは通常、毎年行われますが、より頻繁に行われる場合もあります。これらのテストの結果は顧客に提供されます。セキュリティテストの詳細については、「KB0538598: Customer Instance Security Testing | Policy and Procedure (顧客インスタンスセキュリティテスト | ポリシーおよび手順)」を参照してください。
- セキュリティパッチ適用
- セキュリティパッチが必要な場合、モバイル開発チームは、パッチを適用するために標準的な SDLC プロパティに合わせます。
- ユーザーデータ収集
モバイルアプリでは、ユーザーデータを特に収集しません。
アプリケーション内のユーザートランザクションや使用法は、Web 上と同様にServiceNowインスタンス上で追跡されます。ユーザーの資格情報については、ユーザーがログインすると、モバイルアプリが Apple キーチェーンまたは Android キーストアに格納されている OAuth トークンについてネゴシエートします。ユーザーの資格情報は保存されません。ユーザーがオプトインすると、次の情報が収集されます。
- ロケーション
- カメラへのアクセス
- Notification