クラウドポスチャ クエリ言語は、フィルタチェック用の高度な機能を備えたフリーテキスト構文であり、複雑なクエリを単純なフィルタよりも強力に実行できます。
CQLでは、フィールド/値のペアで検索できます。この構文では、論理演算子、括弧、および引用符を使用して、条件を考慮する関係と順序を指定できます。
論理演算子
フィールド/値検索条件の基本構文は [field]:[value]です。ここで、コロン (:) は、検索結果でチェックが返されるためには、指定されたフィールドが指定された値と等しい必要があることを示します。
論理演算子を使用すると、複数の条件を指定したり、条件間の関係を示すことができます。 CQLでは、次の明示的な論理演算子がサポートされます。
[オペレータ名]
|
[演算子]
|
説明
|
[例]
|
次に等しい
|
: |
右辺が左辺に等しい場合、つまりフィールドが値に等しい場合に一致します。
|
service : EC2 |
NOT EQUALS
|
:- |
右側が左側と等しくない場合、つまりフィールドの値が等しくない場合に一致します。
|
service :- IAM |
AND
|
AND |
チェックに両方の条件が含まれる場合に一致
|
status : SUCCESS AND riskLevel : HIGH |
OR
|
OR |
チェックに次のいずれかの条件が含まれる場合に一致
|
compliance : MAS OR compliance : HITRUST |
カッコ
|
() |
括弧は、通常の操作順序 (優先順位ルール) に対する変更を示すために使用されます。のような表現で
(compliance : MAS OR compliance : HITRUST) AND status: SUCCESS の場合、式の括弧内の部分が最初に評価され、その結果が式の残りの部分で使用されます。 |
(compliance : MAS OR compliance : HITRUST) AND status : SUCCESS |
引用符
|
" |
文字列に特殊文字やスペースが含まれる場合に文字列を囲むために使用します。
|
message : "Continuous Backups are not enabled for [ddb-users-dev]" |
ヒント検索クエリ内の用語を明確にグループ化するには、括弧を自由に使用します。 * 文字列に文字、数字、およびスペース以外の文字が含まれており、正規表現として解釈されない場合は、\
" 。たとえば、「リソース」や「メッセージ」などのフリーテキストフィールドがこれに該当します。 * 正規表現を使用する場合は、予約文字 .\. ? + * [ ] ( ) " \ でエスケープする必要があります\\ * 完全一致を検索する他のフィールドとは異なり、「メッセージ」および「ルールタイトル」フィールドは全文検索を使用します。この場合、完全一致だけでなく、\関連する\すべての結果が返されます。 Quick fox jumpsを検索する場合は、「A quick brown fox jumps over the lazy Dog」を含むドキュメントと、関連する単語
(「fast fox」や「foxes jump」など) を含むドキュメントが必要になる可能性があります。 |
リソースのワイルドカード
は
resource
フィールドはワイルドカード検索をサポートします。この構文では、次の2つの演算子がサポートされます。?
。任意の1文字に一致します。- _
*
_例:- 「sg-」で始まり、任意の数の文字で終わるすべてのリソースを検索します。
resource : sg-*
- 「sg-」で始まり、任意の1文字+「s」で終わるすべてのリソースを検索します。
resource : sg-?s
- 「sg-」で始まり、任意の数の文字で終わるすべてのリソースを検索します。
ワイルドカードクエリは大量のメモリを使用し、パフォーマンスが非常に悪いことに注意してください。
a* b* c*
リソースの正規表現
は
resource
フィールドは正規表現パターンをサポートします。スラッシュ ("/"
):resource : /arn:aws:iam::[0-9]{12}:policy\/.*Part1/
サポートされている正規表現の構文については、フィルタと検索。を参照してください。
フィールドリスト
[フィールド名]
|
[データ型]
|
説明
|
[例]
|
ルールタイトル
|
ストリング
|
値に一致する関連結果がルールのタイトルに含まれている場合に一致します。上記の全文検索の説明を参照してください。
|
ruleTitle : "Unrestricted SSH Access" |
ruleId
|
ストリング
|
ルールIDが完全に一致する場合に一致します。オートコンプリートのドロップダウンから選択します。
|
ruleId : EC2-081 OR ruleId : EC2-088 |
メッセージメッセージ
|
ストリング
|
値に一致する関連結果がメッセージに含まれている場合に一致します。上記の全文検索の説明を参照してください。
|
message : "access keys" |
リソース
|
文字列の正規表現
|
リソースIDが値と一致する場合に一致します。ワイルドカードまたは正規表現で照合することもできます。上記の説明を参照してください。
|
resource : "aws-glue-an-data" resource : /arn:aws:iam::[0-9]{12}:policy\/.*Part1/ resource : "aws-*-an-??-data" |
newerThanDays
|
数値
|
oldThanDaysおよびnewerThanDaysの範囲は、今日からさかのぼる日数を示します。入力した日数は、小切手が作成されてステータスが割り当てられた日付、またはステータスが「成功」から「失敗」、または「失敗」から「成功」に変化した日付に変換されます。このフィルタを使用するには、「olderThanDays」の前と「newerThanDays」の後に表示する日数の値を入力します。特定の期間の小切手を表示するには、2~1日以上経過する必要があります。特定の日から今日までの小切手を表示するには、「newerThanDays」で日数を渡し、「olderThanDays」は設定しないでください。
|
newerThanDays : 20 |
次の日数より古い
|
数値
|
特定の日付までのすべての小切手を表示するには、今日からさかのぼる日数を「olderThanDays」で指定し、「newerThanDays」を設定しないでください。
|
olderThanDays : 20 |
フィルタタグ
|
ストリング
|
リソースに割り当てられたメタデータタグに、この値をタグのキーまたは値とするタグが少なくとも1つある場合に一致します。キーと値の両方を一致させるには、key::valueのペアで指定します。
|
filterTag : "env::dev" filterTag : "env" filterTag : "dev" |
service
|
ストリング
|
プロバイダサービスが完全一致の場合に一致します。サービスの詳細については、クラウドポスチャ サービスエンドポイント。
|
service : IAM |
category
|
ストリング
|
カテゴリが完全一致の場合に一致します。可能な値は次のとおりです。
|
category : security |
地域
|
ストリング
|
地域が完全に一致する場合に一致します。リージョンの詳細については、クラウドポスチャ リージョンエンドポイント。
|
region : eu-west-2 |
リスクレベル
|
ストリング
|
リスクレベルが完全一致の場合に一致します。可能な値: LOW、MEDIUM、HIGH、VERY_HIGH、または EXTREME
|
riskLevel : HIGH |
リソースタイプ
|
ストリング
|
リソースタイプが完全一致の場合に一致します。サービスの詳細については、クラウドポスチャ ResourceTypesエンドポイント。
|
resourceType : ec2-securitygroup OR resourceType : ec2-instance |
provider
|
ストリング
|
クラウドプロバイダが完全に一致する場合に一致します。
|
provider : aws |
コンプライアンス
|
ストリング
|
コンプライアンス標準が完全一致の場合に一致します。コンプライアンス基準の詳細については、項目「コンプライアンス」に関するAPIドキュメント。
|
compliance : AWAF |
ステータス:
|
ストリング
|
チェックのステータスが完全一致の場合に一致します。可能な値は、SUCCESSまたはFAILUREです。
|
status : SUCCESS |
suppressed
|
ストリング
|
抑制されたすべてのチェックを含めるかどうか。初期設定値は、「v1」の場合はtrue、「v2」の場合は省略されます。設定可能な値はtrueまたはfalseです。
|
suppressed : true |
CQLを使用したチェックのフィルタ処理
手順
- [Browse all checks] をクリックし、 [CQL] フィルタ方法を選択します。
- 入力を開始して、検索するフィールドを選択します。 [等しい:] または [等しくない:-] 演算子を選択し、使用可能な値のリストから値を選択します。
- ここで終了することも、 [OR] または [および (AND)]を使用して条件の追加を続行することもできます。条件の優先順位を確認するには、括弧を使用します。
- フィールドにドロップダウンがない場合は、検索テキストを「」で囲んで入力し、入力が完了したら [フィルタを適用] ボタンをクリックします。
次に進む前に
クエリの例
service : EC2 OR category : security OR riskLevel : HIGH OR status : SUCCESS
service : EC2 AND category :- security
(service : ELB OR category : security) AND riskLevel :- MEDIUM
service : EC2 AND ( category : security OR riskLevel : HIGH) AND status : SUCCESS
((service : ELB OR service : CloudFront) AND status : FAILURE) OR (message : SSL OR ruleTitle : SSL)
(service : VPC AND status : FAILURE) OR region : ca-central-1
service : EC2 AND (( category : security OR riskLevel : HIGH) OR status :- SUCCESS)