ServiceNowで「Web service access only」を有効化したユーザーを作成してみた

ServiceNowで「Web service access only」を有効化したユーザーを作成してみた

ServiceNowで外部システム連携用のサービスアカウントを作成する際、APIアクセスのみに制限する「Web service access only」の有効化方法を紹介します。このフィールドはIdentity typeの値に応じて自動的に決まるため、3つの有効化パターンを実際に試してみました。
2026.10.02

はじめに

ServiceNowで外部システム連携用のユーザー(サービスアカウント)を作成する際、対話的なUIログインをさせず、API経由のアクセスのみに制限したいケースがあります。

そんなときに使うのが、sys_userテーブルの「Web service access only」フィールドです。本記事では、このフィールドを有効化する方法を紹介します。

実際に触ってみると、「Web service access only」はフォーム上で直接チェックを入れられるフィールドではなく、Identity typeの値に応じて自動的に決まる項目でした。本記事では、この関係を踏まえた3通りの有効化方法を紹介します。

Web service access onlyとは

Web service access onlyはsys_userテーブルのフィールドです。有効にすると、そのユーザーは対話的なUIログインができなくなり、API経由でのアクセスに限定されます。外部システム連携用のユーザーに適した設定です。

公式ドキュメントでは、Non-Interactive Sessionsの機能として説明されています。

https://docs.servicenow.com/bundle/zurich-platform-administration/page/administer/users-and-groups/concept/c_NonInteractiveSessions.html

今回の検証環境では、このフィールドはすでにsys_userテーブルに存在していました。

Identity typeとの関係

sys_userテーブルにはIdentity typeというフィールドもあり、ユーザーが実在の人物か、それ以外の主体かを分類します。公式ドキュメントでは、以下のように説明されています。

Identity type Select the user identity type based on the user:

  • Human - Select this for a real person, such as an employee, customer, or admin.
  • Machine - Select this for a non-human system or device, such as a server, application, or service account that makes automated requests.

The Web service access only check box is automatically enabled when you select Machine in the Identity type field. The Web service access only check box is automatically disabled when you select Human or AI.

Identity typeは、ユーザーの種類に応じて選択します。Humanは従業員や顧客、管理者など実在の人物を表す場合に選択します。Machineは、サーバーやアプリケーション、自動リクエストを行うサービスアカウントなど、人以外の主体を表す場合に選択します。Identity typeでMachineを選択すると、Web service access onlyチェックボックスが自動的に有効になります。HumanまたはAIを選択すると自動的に無効になります。

https://www.servicenow.com/docs/r/platform-administration/user-administration/t_CreateAUser.html

前提条件

公式ドキュメントでは、ユーザー作成に必要なロールはuser_adminとされています。今回の検証では、PDIのデフォルト管理者ユーザー(admin)を使用しました。

https://www.servicenow.com/docs/r/platform-administration/user-administration/t_CreateAUser.html

有効化する3つの方法

今回の検証では、以下の3通りの方法でいずれもWeb service access onlyを有効化できることを確認しました。

方法1:Identity typeをMachineにして新規作成する

Filter Navigatorで「Users」と検索し、System Security > Users and Groups > Usersから開きます。表示された一覧画面でNewをクリックし、User ID・First name・Last nameを入力します。Identity typeをMachineに変更してからSubmitします。


Userの新規レコード作成画面

この状態で保存すると、Web service access onlyの値も自動的にtrueになります。

方法2:既存のHumanユーザーのIdentity typeをMachineに変更する

すでにIdentity typeがHumanで作成済みのユーザーがいる場合、レコードを開いてIdentity typeをMachineに変更しUpdateします。

cm-hirai-screenshot 2026-10-01 16.05.20
Identity typeがHumanの状態。Web service access onlyはグレーアウトしている

このとき、Web service access onlyのチェックボックス自体はグレーアウトしており、直接クリックすることはできません。試しにIdentity typeをMachineに変更したところ、チェックボックスは引き続きグレーアウトしたままでしたが、値は自動的にtrueへ切り替わりました。

つまりこのフィールドは、ユーザーが画面上で直接操作するものではなく、Identity typeの値に応じてシステム側が自動的に決定する、読み取り専用に近いフィールドだと考えられます。

方法3:Background Scriptで直接設定する

フォーム上でIdentity typeを変更するのが難しい場合や、スクリプトでまとめて処理したい場合は、Background Scriptから直接更新することもできます。Filter Navigatorで「Scripts - Background」と検索し、System Definition > Scripts - Backgroundから開きます。以下のスクリプトを実行します。sys_userテーブルのuser_name列は、画面上のUser IDに対応します。対象のUser IDの部分は、対象ユーザーのUser IDに置き換えてください。

var gr = new GlideRecord('sys_user');
if (gr.get('user_name', '対象のUser ID')) {
  gr.web_service_access_only = true;
  gr.update();
  gs.print('Updated: ' + gr.user_name + ' / web_service_access_only = ' + gr.web_service_access_only);
}

Scripts - Backgroundの入力欄に、このスクリプトをそのまま貼り付けます。

cm-hirai-screenshot 2026-10-01 15.46.49
Scripts - Backgroundにスクリプトを貼り付けた状態。この後Run scriptを実行する

実行すると、ログに「Setting Identity type to Machine as web_service_access_only is true」と出力されます。web_service_access_onlyを直接trueにしようとすると、Business Rule側が整合性を保つためにIdentity typeをMachineへ変更する、方法1・方法2とは逆方向の挙動です。

cm-hirai-screenshot 2026-10-01 14.42.32
Background Scriptの実行結果。Identity typeがMachineに変わったことがログに出力されている

一覧画面で確認する

ユーザー一覧画面を開き、列の設定で「Web service access only」列を追加すると、対象ユーザーの値がtrueになっていることを確認できました。

cm-hirai-screenshot 2026-10-01 14.43.42
ユーザー一覧でWeb service access onlyがtrueになっていることを確認している画面

パスワードとロールを設定する

必要に応じて、「Set Password」でパスワードを設定し、「Roles」関連リストからロールを付与します。

まとめ

ServiceNowでWeb service access onlyを有効化したユーザーを作成してみました。

このフィールドはフォーム上で直接クリックできる項目ではなく、Identity typeの値に応じてシステム側が自動的に決める項目でした。有効化するには、新規作成時にIdentity typeをMachineにするか、既存ユーザーのIdentity typeをHumanからMachineに変更するか、Background Scriptで直接値を設定するか、のいずれかの方法が使えます。

外部システム連携用のサービスアカウントを作成する際は、チェックボックス自体を操作しようとするのではなく、Identity typeを基準に考えるとスムーズです。

この記事をシェアする

関連記事