メインコンテンツまでスキップ
Sumo Logic Japanese

ロールの検索フィルタの作成

このページでは、ロールの検索フィルタの定義方法を説明します。これらの指示は「新規ロールの作成」で詳述されている手順の 6 番目のステップに適用されます。

検索フィルタの理解

ロールの検索フィルタは、そのロールを持つユーザがアクセスできるログ データを定義します。キーワード、ワイルドカード、メタデータ フィールドおよび logical operator を使用して検索フィルタを定義できます。以下に簡単なロール フィルタを示します。

_sourceCategory=labs*

このフィルタは、_sourceCategory が「labs」という文字列で始まるログへのアクセス権を付与するものです。(_sourceCategory が「labs」という文字列で始まらないログにはアクセスできません。)

このフィルタを持つユーザが次のようなクエリを入力するとします。

_sourcecategory=labs/apache | parse "* --" as src_ip
| count by src_ip | sort _count

Sumo は自動的にクエリの先頭に AND を使用してこのロール フィルタを追加します (ユーザには表示されません)。

_sourceCategory=labs* AND (_sourcecategory=labs/apache
| parse "* --" as src_ip | count by src_ip | sort _count)

上記の例では、ログ データへのアクセス権を付与しています。逆に感嘆符 (!) を使用して明示的にデータへのアクセスを拒否することもできます。例:

!_sourceCategory=JobX*

このフィルタは、_sourceCategory が「JobX」という文字列で始まるログ データへのアクセスを拒否するものです。(他の Source Category 値を持つログ データへのアクセスは制限されません)

上記の例は、いずれも 1 つのロールのみが関与しているため、1 つのロール フィルタが使用される単純なものです。 

ただし、通常 Sumo ユーザには複数のロールが与えられます。ユーザが複数のロールを持つ場合、「複数のロール フィルタとフィルタの優先順位」で説明しているとおり、Sumo はいくつかのロール フィルタを OR で結合し、その表現をユーザのクエリの先頭に AND を用いて付加します。   

検索フィルタの基本

以下のセクションでは、検索フィルタの制限を示して、フィルタでどのようにキーワード、ワイルドカード、メタデータ、logical operator を使用できるかを説明しています。 

それぞれの例のフィルタの挙動の説明は、他に適用されているロール フィルタがないことを前提としています。実際には、ユーザに複数のロールを割り当てる可能性が高いでしょう。ロール フィルタの仕組みの基本を理解したら、「複数のロール フィルタとフィルタの優先順位」を参照してください。

検索フィルタの制限

  • ロール フィルタに縦棒 (|) を含めることはできません。
  • フィールド名と値のタイプの競合が起きるおそれがあるため、Scheduled View とパーティションは、ロール フィルタではサポートされていません。 
  • ロール フィルタは、メトリクス検索ではなくログ検索に適用されます。
  • 1 つ以上の FER が、ロールの検索フィルタで使用している組み込みのメタデータ タグをオーバーライドする場合も、LiveTail では検索フィルタが意図する範囲の外のデータにアクセスできてしまいます。FER で、組み込みのメタデータ タグをオーバーライドしないようにするか、検索フィルタで、オーバーライドされたタグを除外する必要があります。

検索フィルタにおけるメタデータの使用

ロール検索フィルタには、メタデータ フィールドを使用できます。次の検索フィルタは、Collector からの「HR_Tools」という名前のログ データのみへアクセス権を付与するものです。

_collector=HR_Tools

このロール フィルタを持つユーザがクエリを実行すると、Sumo は次のように実行します。

_collector=HR_Tools AND <user-query>

検索フィルタにおける AND と OR の使用

検索フィルタには、AND と OR を使用できます。たとえば、次のロール フィルタは、2 つの Source Category からのログ データへのアクセス権を付与するために OR を使用しています。

_sourceCategory=stock OR _sourceCategory=insurance

このロール フィルタを持つユーザがクエリを実行すると、Sumo は次のように実行します。

(_sourceCategory=stock OR _sourceCategory=insurance) AND <user-query> 

次のロール フィルタは、「HR_Tools」という名前の Collector からの「insurance」という Source Category を持つログ データへのアクセス権を付与するために AND を使用しています。

_collector=HR_Tools AND _sourceCategory=insurance

このロール フィルタを持つユーザがクエリを実行すると、Sumo は次のように実行します。

(_collector=HR_Tools AND _sourceCategory=insurance) AND <user-query>

検索フィルタにおけるキーワードの使用 

ロール検索フィルタには、検索する文字列を含めることができます。次のロール フィルタは、「HR_Tools」という名前の Collector からのログのうち、「enrollment」という文字列を含むものへのアクセス権を付与するものです。 

_collector=HR_Tools AND enrollment

このロール フィルタを持つユーザがクエリを実行すると、Sumo は次のように実行します。

(_collector=HR_Tools AND enrollment) AND <user-query>

検索フィルタにおけるワイルドカードの使用 

ロール検索フィルタには、ワイルドカードとしてアスタリスク (*) を使用できます。次のロール フィルタは、名前が「HR」で始まるすべての Collector からのログへのアクセス権を付与するものです。

_collector=HR* 

このロール フィルタを持つユーザがクエリを実行すると、Sumo は次のように実行します。

_collector=HR* AND <user-query>

次のロール フィルタは、名前が「HR」で始まるすべての Collector からのログのうち、「violation」という文字列が含まれるものへのアクセス権を付与するものです。

_collector=HR* AND violation

このロール フィルタを持つユーザがクエリを実行すると、Sumo は次のように実行します。

(_collector=HR* AND violation) AND <user-query>

検索フィルタにおける NOT としての ! の使用

ロール検索フィルタには、アクセスを許可するのではなく制限するために感嘆符 (!) を使用できます。次のフィルタの例を見てみましょう。

!_sourceHost=humanresources* AND !_sourceName=*finance* AND !_sourceCategory=*secret*

この場合、次の条件に該当するログ データへのアクセスを拒否します。  

_sourceHost が「humanresources」で始まる 
_sourceName に「finance」が含まれる
_sourceCategory に「secret」が含まれる

このロール フィルタを持つユーザがクエリを実行すると、Sumo は次のように実行します。

(!_sourceHost=humanresources* AND !_sourceName=*finance* AND !_sourceCategory=*secret*) AND <your-query> 

複数のロール フィルタとフィルタの優先順位

1 人のユーザに複数の Sumo ロールが割り当てられている場合、Sumo は各ロールのロール フィルタを OR で結合し、結合ロール フィルタを作成します。 

複数のロール フィルタが 1 つのクエリに適用される場合、最も制約の少ないフィルタが優先されます。 

例 1

次のロール フィルタがあるとします。

ロール Filter
ロール A _source="GCP Audit" AND _collector="GCP"
ロール B _sourceCategory="Vx*"

ロール A は、_source タグが「GCP Audit」かつ _collector タグが「GCP」であるログ データへのアクセス権を付与するものです。 

ロール B は、_sourceCategory タグが「Vx」で始まるログ データへのアクセス権を付与するものです。  

ロール A とロール B を持つユーザがクエリを実行すると、Sumo は以下のように、フィルタに OR で適用してクエリの先頭に AND で付与します。

((_source="GCP Audit" AND _collector="GCP") OR _sourceCategory="Vx*") 
AND <your-query> 

結合フィルタは _source タグが「GCP Audit」かつ _collector タグが「GCP」であるログ データと、_sourceCategory タグが「Vx」で始まるすべてのログ データへのアクセス権を付与します。

例 2

次のロール フィルタがあるとします。

ロール Filter
ロール A _collector=fee*
ロール B !_collector=fi*

ロール A は、_collector タグが「fee*」に一致するログ データのみへのアクセス権を付与し、_collector タグが他の値であるデータにはアクセスを許可しません。

ロール B は、_collector タグが「fi」に一致しない任意のログ データへのアクセス権を付与するものです。  

ロール A とロール B を持つユーザがクエリを実行すると、Sumo は以下のように、2 つのフィルタを OR で結合して、クエリの先頭に AND で付与します。

(_collector=fee  OR !_collector=fi) AND <your-query> 

最も制約の少ないロール フィルタが優先されます。したがって、ロール A が結果を _collector=fee* に一致するログ データに効果的に制限しているにも関わらず、ロール B は _collector=fi* に一致するものを除くすべての Collector へのアクセス権を付与しています。つまり、ロール B が優先され、ロール A は効力を発揮しません。

例 3 

次のロール フィルタがあるとします。

ロール Filter
ロール A _sourceCategory=analytics-lab*
ロール B _sourceCategory=analytics*


ロール A は、_sourceCategory が「analytics-lab」のログ データのみへのアクセス権を付与するものです。

ロール B は、_sourceCategory が「analytics」で始まるログ データへのアクセス権を付与するものです。

ロール A とロール B を持つユーザがクエリを実行すると、Sumo は以下のように、2 つのフィルタを OR で結合します。

(_sourceCategory=analytics-lab OR _sourceCategory=analytics*) AND <your-query> 

最も制約の少ないロール フィルタが優先されます。ロール A は単独で、「analytics-lab」という 1 つの Source Category からのログ データへのアクセス権を付与するものです。  ロール B は、「analytics」で始まるすべての Source Category からのログ データへのアクセス権を付与するものです。最も制約の少ないロール フィルタが優先されるため、_sourceCategory=analytics-lab というタグのついたデータに加えて、_sourceCategory=analyticsLong というタグのついたデータも返されます。

例 4

次のロール フィルタがあるとします。

ロール Filter
ロール A _collector=prod*
ロール B !_sourceCategory=*shoguns*

ロール A は、_collector タグが「prod*」に一致するログ データへのアクセス権を付与し、_collector タグが一致しないデータにはアクセスを許可しません。

ロール B は、_sourceCategory タグに「shoguns」を含むログ データへのアクセスを拒否します。 _sourceCategory タグに「shoguns」を含まないデータであればすべて利用可能です。 

ロール A とロール B を持つユーザがクエリを実行すると、Sumo は以下のように、2 つのフィルタを OR で結合して、クエリの先頭に AND で付与します。

(_collector=prod* OR !_sourceCategory=*shoguns*) AND <your-query> 

制約が最も少ないのはロール B です。結合ロール フィルタを持つユーザは、_sourceCategory に「shoguns」という文字列を含まないログ データであれば、_collector タグの値に関係なくすべて閲覧できます。

 

  • この記事は役に立ちましたか?