SQL APIのアクセス制御リスト (ACL) の作成

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:3分
  • egress_sqlおよび読み取り操作を使用してテーブルレベルのアクセス制御を構成し、 SQL APIを介してサービスアカウントに特定のテーブルへのクエリアクセス権を付与します。

    始める前に

    次の前提条件を満たしていることを確認します。

    • サービスアカウントを作成し、sn_odbc_rest_accessまたはsn_jdbc_rest_accessロールをアサインしました。
    • SQL APIを介してアクセスする必要があるServiceNowテーブルを特定しました。

    必要なロール:security_admin

    このタスクについて

    SQL API を介したテーブルへのアクセスはグローバルに許可されません。サービスアカウントがクエリする必要があるテーブルごとに、2 つのアクセス制御リスト (ACL) を作成する必要があります。egress_sql操作用に 1 つ ( SQL API データエクスポートを制御する) と読み取り操作用に 1 つ (レコードレベルのアクセスを制御する) を作成します。サービスアカウントは、両方の ACL が明示的に設定されているテーブルに対してのみクエリを実行できます。

    デフォルトでは、 SQL API はすべてのクエリのテーブル、行、およびフィールドレベルでアクセスをチェックします。これは、 ServiceNow のデフォルトで安全なアプローチに従います。SQL APIは、インスタンス内のすべての ACL をレコードごとに検証します。これにより、応答時間が長くなる可能性があります。これは想定されたことです。

    ユースケースで行レベルおよびフィールドレベルのチェックが必要ない場合は、サービスアカウントに sn_sql_api_privileged_mode ロールを割り当てることでチェックをオフにすることができます。たとえば、ビジネスインテリジェンス統合などです。テーブルレベルの ACL チェックは引き続き有効であり、オフにすることはできません。

    SQL APIアクセス権が必要なテーブルとロールの組み合わせごとに、この手順を繰り返します。異なるロールを持つ複数のサービスアカウントがある場合は、ロールとテーブルの組み合わせごとに個別の ACL を作成します。

    手順

    1. 移動先 すべて > システムセキュリティ > アクセス制御 (ACL).
    2. [新規] を選択します。
    3. [アクセス制御] フォームで、egress_sql操作の最初の ACL を構成します。
      フィールド
      運用 ドロップダウンリストから egress_sql を選択します。この操作は、 SQL APIを介してデータをエクスポートできるかどうかを制御します。
      意思決定タイプ 次の場合に許可
      名前 アクセス権を付与するテーブルを選択します。たとえば、 インシデント [incident]cmdb_ci などです。
      ロールが必要 サービスアカウントにアサインされたロール ( sn_odbc_rest_accesssn_jdbc_rest_access など) を入力します。

      サービスアカウントレベルで行レベルおよびフィールドレベルのチェックをオフにするロール sn_sql_api_privileged_mode を追加します。

      必要なロールを使用したアクセス制御定義の構成を示す UI 画面の例。
    4. フォームヘッダーを選択して長押し (または右クリック) し、[保存] を選択します。
    5. [ 新規] を選択して、同じテーブルの 2 番目の ACL を作成します。
    6. [アクセス制御] フォームで、 読み取り 操作の 2 番目の ACL を設定します。
      フィールド 説明
      運用 ドロップダウンリストから [ 読み取り ] を選択します。この操作は、テーブルへのレコードレベルのアクセスを制御します。
      意思決定タイプ 次の場合に許可
      名前 egress_sql ACL で指定したものと同じテーブルを選択します。
      ロールが必要 egress_sql ACL で指定したものと同じロールを入力します。
    7. フォームヘッダーを選択して長押し (または右クリック) し、[保存] を選択します。
    8. SQL APIアクセス権が必要な追加のテーブルごとに、ステップ 2 〜 7 を繰り返します。
      各テーブルに必要な ACL (egress_sqlと読み取り) の両方を作成しました。

    タスクの結果

    SQL APIのテーブルレベルのアクセス制御が正常に構成されました。サービスアカウントは、指定したロール要件に従って、egress_sql ACL と読み取り ACL の両方が作成されたテーブルをクエリできます。

    アクセスはテーブルごとに付与されることに注意してください。追加のテーブルへのアクセスを許可する場合、または異なるロールを持つ追加のサービスアカウントを作成する場合は、この手順を繰り返して適切な ACL を作成します。