ポリシー式での演算子と演算子の使用
演算子は、1 つまたは複数のオブジェクト (オペランドを操作する演算、ブール演算、リレーショナルなど) を識別する記号です。このトピックの最初のセクションでは、使用できる演算子を定義し、定義を示します。2 番目のセクションでは、メソッド、URL、クエリなどの特定の修飾子で使用できる演算子を示します。
演算子と定義
このセクションでは、ポリシー式を作成するときに使用できる演算子を定義し、その演算子について説明します。
- ==,! =, 等式, 次数
これらの演算子は、完全一致をテストします。大文字と小文字が区別されます(’‘cmd.exe’’ は ‘‘cMd.exe’’ ‘と等しくありません)。これらの演算子は、正確な構文を満たす特定の文字列を許可するが、他の文字列を除外する権限を作成する場合に便利です。
- GT
この演算子は、数値比較に使用されます。これは、URLとクエリ文字列の長さに使用されます。
- CONTAINS, NOTCONTAINS
これらの演算子は、指定された修飾子に対してチェックを実行し、指定された文字列が修飾子に含まれているかどうかを判断します。これらの演算子では、大文字と小文字は区別されません。
- EXISTS, NOTEXISTS
これらの演算子は、特定の修飾子の存在をチェックします。たとえば、これらの演算子を HTTP ヘッダーに適用して、特定の HTTP ヘッダーが存在するか、または URL クエリが存在するかを判断できます。
- CONTENTS
この演算子は、修飾子が存在し、内容があるかどうか(つまり、値に関係なく、ヘッダーが存在し、それに関連付けられた値があるかどうか)をチェックします。
修飾子、演算子、オペランド、アクションおよび例
このセクションでは、演算子とオペランドに使用できるパラメータを示します。各項目は修飾子で始まり、関連する演算子とオペランドがリストされ、式が実行するアクションが記述され、例が示されます。
- 方法
演算子:EQ、NEQ オペランド:必須: - 標準HTTPメソッド - サポートされているメソッド - GET, HEAD, POST, PUT, DELETE OPTIONS, TRACE, CONNECT アクション:設定されたメソッドへの着信要求メソッドを検証します。 例:メソッド EQ GET
URL
演算子:EQ, NEQ オペランド:必須:URL (形式:/[プレフィックス] [*] [.サフィックス]) アクション:設定された URL で着信 URL を確認します。 例: URL EQ/Foo*.asp URL EQ /foo* URL EQ /*.asp URL EQ /foo.asp
演算子:CONTAINS、NOTCONTAINS オペランド:必須:任意の文字列 (引用符で囲む) アクション:構成されたパターンの有無について、着信 URL を検証します。(URL および URL クエリを含む)。 例:URL は ‘ZZZ’ を含み
- URL LEN
演算子:GT オペランド:必須:長さ (整数値) 処理:着信 URL の長さと設定された長さを比較します。(URL および URL クエリを含む)。 例:URLLEN GT 60
- URL QUERY
演算子:CONTAINS、NOTCONTAINS オペランド:必須:任意の文字列 (引用符で囲む)。 オプション:長さおよびオフセット 処理:着信URLクエリーで、構成されたパターンが存在するかどうかを 検証します。 CONTENTSと同様に使用されます。 オプションが指定されていない場合は、パターンの後のURLクエリ全体が使用されます。 オプションが存在する場合、パターンの後のクエリの長さのみが使用されます。 オフセットは、パターンの検索を開始する位置を示すために使用されます。 例:URLQUERY CONTAINS ‘ZZZ’
- URL QUERY LEN
演算子:GT オペランド:必須:長さ (整数値) 処理:着信 URL クエリの長さと設定された長さを比較します。 例:URLQUERYLN GT 60
- URL TOKENS
演算子:EQ, NEQ オペランド:必須:URL トークン (サポートされている URL トークン =, +,%,! 、&、?)。 アクション:着信 URL を比較して、設定されたトークンの存在を確認します。疑問符の前にバックスラッシュ(\)を入力する必要があります。 例:URLTOKENS EQ ‘% , +, &, \?’
- VERSION
演算子:EQ, NEQ オペランド:必須:標準 HTTP バージョン。有効な HTTP バージョン文字列 HTTP/1.0、HTTP/1.1 アクション:着信リクエストの HTTP バージョンと、設定された HTTP バージョンを比較します。 例:VERSION EQ HTTP/1.1
Header
演算子:EXISTS、NOTEXISTS オペランド:なし 処理:受信要求でHTTPヘッダーの存在を検査します。 例:Header Cookie EXISTS
演算子:CONTAINS、NOTCONTAINS オペランド:必須:任意の文字列 (引用符で囲む)。 オプション:長さおよびオフセット 処理:着信要求で、特定のヘッダーに構成されたパターンが存在するかどうかを検証します。CONTENTSと同様に使用されます。オプションが指定されていない場合は、パターンの後の HTTP ヘッダー値全体が使用されます。オプションが存在する場合、パターンの後のヘッダーの長さのみが使用されます。オフセットは、パターンの検索を開始する位置を示すために使用されます。 例:Header Cookie CONTAINS “&sid”
演算子:CONTENTS オペランド:オプション:長さおよびオフセット 処理:HTTPヘッダーの内容を使用します。オプションを指定しない場合は、HTTP ヘッダー値全体が使用されます。オプションが存在する場合、オフセットから始まるヘッダーの長さのみが使用されます。 例:Header User-Agent CONTENTS
- SOURCEIP
オペレータ:EQ, NEQ オペランド:必須:IP アドレス オプション:サブネットマスク アクション:着信要求の送信元 IP アドレスを、設定された IP アドレスと照合して検証します。オプションのサブネットマスクが指定されている場合、着信要求は、設定された IP アドレスおよびサブネットマスクに対して検証されます。 例:Sourceip EQ 192.168.100.0 -netmask 255.255.255.0
- DESTIP
オペレータ:EQ, NEQ オペランド:必須:IP アドレス オプション:サブネットマスク アクション:着信要求の宛先 IP アドレスを、設定された IP アドレスと照合して検証します。オプションのサブネットマスクが指定されている場合、着信要求は、設定された IP アドレスおよびサブネットマスクに対して検証されます。 例:Sourceip EQ 192.168.100.0 -netmask 255.255.255.0
- SOURCEPORT
オペレータ:EQ, NEQ オペランド:必須:ポート番号 オプション:ポート範囲 アクション:着信要求の送信元ポート番号を、設定されたポート番号と照合して検証します。 例:SOURCEPORT EQ 10-20
- DESTPORT
オペレータ:EQ、NEQ オペランド:必須:ポート番号 オプション:ポート範囲 アクション:着信要求の宛先ポート番号を、設定されたポート番号と照合して検証します。 例:DESTPORT NEQ 80
- CLIENT.SSL.VERSION
演算子:EQ, NEQ オペランド:必須:SSL バージョン アクション:セキュアな接続で使用されている SSL または TLS バージョンのバージョンを確認します。 例:CLIENT.SSL.VERSION EQ SSLV3
- CLIENT.CIPHER.TYPE
演算子:EQ, NEQ オペランド:必須:クライアント暗号タイプ アクション:使用されている暗号の種類 (エクスポートまたは非エクスポート) をチェックします。 例:CLIENT.CIPHER.TYPE EQ EXPORT
- CLIENT.CIPHER.BITS
演算子:EQ、NEQ、GE、LE、GT、LT オペランド:必須:クライアント暗号ビット アクション:使用されている暗号の鍵強度をチェックします。 例:CLIENT.CIPHER.BITS GE 40
- CLIENT.CERT
演算子:EXISTS、NOTEXISTS オペランド:none アクション:クライアントがSSLハンドシェイク中に有効な証明書を送信したかどうかを確認します。 例:CLIENT.CERT EXISTS
- CLIENT.CERT.VERSION
オペレータ:EQ, NEQ, GE, LE, GT, LT オペランド:クライアント証明書バージョン アクション:クライアント証明書のバージョンを確認します。 例:CLIENT.CERT.VERSION EQ 2
- CLIENT.CERT.SERIALNUMBER
オペレータ:EQ, NEQ オペランド:必須:クライアント証明書のシリアル番号 アクション:クライアント証明書のシリアル番号を確認します。シリアル番号は文字列として扱われます。 例:CLIENT.CERT.SER IALNUMBER EQ 2343323
- CLIENT.CERT.SIGALGO
演算子:EQ, NEQ オペランド:必須:クライアント証明書の署名アルゴリズム。 アクション:クライアント証明書で使用されている署名アルゴリズムをチェックします。 例:CLIENT.CERT.SIGALGO EQ md5WithRSAEncryption
- CLIENT.CERT.SUBJECT
演算子:CONTAINS、NOTCONTAINS オペランド:必須:クライアント証明書のサブジェクト オプション:長さ、オフセット アクション:クライアント証明書のサブジェクトフィールドをチェックします。 例:CLIENT.CERT.SUBJECT CONTAINS CN= Access_Gateway
- CLIENT.CERT.ISSUER
演算子:CONTAINS、NOTCONTAINS オペランド:必須:クライアント証明書発行者 オプション:長さ、オフセット アクション:クライアント証明書の発行者フィールドをチェックします。 例:CLIENT.CERT.ISSUER CONTAINS O=VeriSign
- CLIENT.CERT.VALIDFROM
演算子:EQ, NEQ, GE, LE, GT, LT オペランド:必須:日付 処理:クライアント証明書が有効である日付を確認します。 有効な日付フォーマットは、1994年11月5日( 火)08:12:31(グリニッジ標準時 )火曜日、11月9日~94日午前8時12分31秒(グリニッジ標準時)火曜日、11月14日午前8時12分31秒(火)です。
- CLIENT.CERT.VALIDTO
演算子:EQ, NEQ, GE, LE, GT, LT オペランド:必須:日付 処理:クライアント証明書が有効になるまでの日付をチェックします。 有効な日付フォーマットは、次のとおりです。 Tue, 05 Nov 1994 08:12:31 GMT Tuesday, 05-Nov-94 08:12:31 GMT Tue Nov 14 08:12:31 1994 Example: CLIENT.CERT.VALIDTO GE ‘Tue Nov 14 08:12:31 1994’