JunshuO
ServiceNow Employee

 

この記事では、ServiceNow によって導入された新しいアクセス制御リスト (ACL) タイプである Query_Match と Query_Range について詳しく説明します。クエリ操作による情報漏洩に関連する重大な脆弱性に対処し、これらの ACL がデータセキュリティを強化する方法について説明します。

 

これらが何であるか、そしてさらに重要なことに、なぜ必要だったのかを見てみましょう。

 

問題 : クエリ操作による情報漏洩

 

ユーザーがユーザーテーブルにアクセスできるが、機密フィールドは表示されない状況を考えてみましょう。フィールドレベルの ACL は、「給与」や「SSN」などのフィールドを非表示にするために用意されています。ただし、悪意のあるユーザーがクエリを使用して情報を推測しようとする可能性があります。

 

「2」で始まる SSN:「2」で始まる SSN を持つすべてのユーザーを検索します。[SSN] フィールドが非表示になっている場合でも、ユーザーは他のアクセス可能な列 (名前など) と一致するレコードの数を表示できます。これにより、たとえば、「2」で始まる SSN を持つユーザーが 50 人いることがわかります。

給与が 10 万ドル以上:ユーザーは、給与が 10 万ドルを超えるすべてのユーザーを検索します。給与フィールドが非表示になっている場合でも、クエリ結果にはこの基準を満たすユーザー名のリストが表示され、給与情報が間接的に明らかになることがあります。

 

影響度 : この種の情報漏洩は、ユーザーが機密データに直接アクセスせずに機密データに関する洞察を得る可能性があるため、データのセキュリティが侵害される可能性があります。

 

ServiceNow のソリューション:クエリー ACL

 

この脆弱性に対処するために、ServiceNow はクエリ ACL を導入しました。これらの ACL は、ユーザーがアクセス権が制限されているかまったくアクセスできない列でクエリを実行する機能を制限するように設計されています。

これはどのように実装されるのでしょうか?

 

Query_Match ACL:

目的:実行するために正確かつ完全な情報を必要とするクエリを制限します。

機能:Query_Match ACL は機密データを含むフィールドに適用されます。これにより、ユーザーはデータを取得するために完全かつ正しい値を指定する必要があります。

例:「SSN」フィールドにQuery_Match ACL があるとします。ユーザーは、正確な SSN を知っている場合にのみ、特定のユーザーのレコードを取得できます。部分的な値やワイルドカードを使用することはできません。

 

AnuragTripathi_0-1748270075365.png

 

 

Query_Range ACL:

目的:範囲、ワイルドカード、または部分値を使用するクエリを制限します。

機能:Query_Range ACL は、ユーザーが特定の範囲またはパターン内の値でクエリを実行することによる、機密情報の意図しない漏洩を防ぎます。

例:Query_Range ACL が [給与] フィールドに適用されている場合、ユーザーは 100,000 ドルを超える給与、または特定の範囲内の給与をクエリすることはできません。正確な給与額がわかっている場合にのみレコードを取得できます。

 

 

AnuragTripathi_1-1748270075366.png

 

デフォルトの動作: クエリー ACL のデフォルトは *.* ACL で、特に指定しない限り読み取りアクセス権が付与されます。

 

最近の変更の確認:

ServiceNow は、このセキュリティ強化の一環として、ACL を大幅に変更しました。次の URL を使用して、インスタンスでこれらの変更を確認できます (をインスタンス URL に置き換えます)。

https://.service-now.com/sys_metadata_list.do?sysparm_query=sys_updated_bySTARTSWITH@...

 

 

クエリー ACL の利用場面

機密データ:不正アクセスからの保護が必要な機密データに対してクエリー ACL を実装します。

部分アクセス:ユーザーが行または列に部分的にアクセスでき、クエリ操作によって情報が漏洩するリスクがある場合は、クエリー ACL を使用します。

データフィルター:クエリー ACL は、データフィルターによってアクセスが適切に適用されない場合に不可欠です。

 

使用法と例

問題 1: ユーザーは、正確なメールアドレスを知っている場合にのみ、他のユーザーのメールアドレスを表示できるようにする必要があります。これをどのように構成しますか?

解決策:sys_userテーブルのメールフィールドにQuery_Match ACL を作成します。これにより、ユーザーはレコードを取得するために正確なメールアドレスを入力する必要があります。

問題 2:ユーザーが特定の範囲内の給与をクエリできないようにする必要があります。これをどのように構成しますか?

解決策:給与フィールドに Query_Range ACL を作成します。これにより、ユーザーは特定の範囲内の給与をクエリできなくなり、給与情報を推測できなくなります。

 

 

役に立つ記事とリンク


この記事は機械翻訳されております。最新は元となる記事をご覧ください: https://www.servicenow.com/community/developer-blog/query-acls/ba-p/3273676。

免責事項: 一部の日本語は、翻訳ソフトウェアを使用してお客様の便宜のために翻訳されています。正確な翻訳をご提供できるよう相当な努力を払っておりますが、いかなる自動翻訳も人間の翻訳者に代わすることはなく、そのようなことは意図されておりません。翻訳は「現状のまま」提供されています。他言語への翻訳の的確性、信頼性または正確性については、明示または黙示を問わず、いかなる保証も行われません。翻訳ソフトには限界があるため、一部のコンテンツが正確に翻訳されていない場合があります。これらの資料の公用言語は英語です。翻訳の際に生じる相違または不一致は、コンプライアンスまたは履行の目的に関しては拘束力を有さず、法的効力はないものとします。

This article was machine translated and replicated from the original source: https://www.servicenow.com/community/developer-blog/query-acls/ba-p/3273676。