SQL APIのアクセス制御リスト (ACL) の作成
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 を作成します。
手順
タスクの結果
SQL APIのテーブルレベルのアクセス制御が正常に構成されました。サービスアカウントは、指定したロール要件に従って、egress_sql ACL と読み取り ACL の両方が作成されたテーブルをクエリできます。
アクセスはテーブルごとに付与されることに注意してください。追加のテーブルへのアクセスを許可する場合、または異なるロールを持つ追加のサービスアカウントを作成する場合は、この手順を繰り返して適切な ACL を作成します。