AWS WAFのAPI一覧 #reinvent

AWS WAF

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。突如として現れた新サービス「AWS WAF」。re:Inventのセッション内容もこれでまた変わるのではないでしょうか。 せーのからはAPIの一覧をお届けいたします。

AWS WAF API一覧

アクション

CreateByteMatchSet

ByteMatchSetを作成する。

CreateIPSet

IPSetを作成する。例えば一つまたはいくつかのIPからDOS、またはDDOS攻撃を受けた場合などにその対象IPSetを作成する。

CreateRule

ByteMatchSetやIPSet等のWAFで監視する制限をまとめたRuleを作成する。

CreateSqlInjectionMatchSet

SqlInjectionMatchSetを作成する。

CreateWebACL

RuleをPriority属性で優先順位を付け、RuleがALLOWかBLOCKかを設定したWebACLを作成する。

DeleteByteMatchSet

ByteMatchSetを削除する。 ※Ruleの中から特定のByteMatchSetを取り除きたいだけの場合はUpdateRuleを使う。

DeleteIPSet

IPSetを削除する。 ※Ruleの中から特定のIPSetを取り除きたいだけの場合はUpdateRuleを使う。

DeleteRule

Ruleを削除する。 ※WebACLの中から特定のRuleを取り除きたいだけの場合はUpdateWebACLを使う。

DeleteSqlInjectionMatchSet

SqlInjectionMatchSetを削除する。 ※Ruleの中から特定のSqlInjectionMatchSetを取り除きたいだけの場合はUpdateRuleを使う。

DeleteWebACL

WebACLを削除する。Ruleが対象となるWebACLに残っている場合は削除できない。

GetByteMatchSet

ByteMatchSetIdよりByteMatchSetを取得する。

GetChangeToken

AWS WAFのオブジェクトを作成、更新、削除する際にコンフリクトを避けるためChangeTokenというオブジェクトをつける。GetChangeTokenはそのChangeTokenを取得する。 AWS WAFのオブジェクトを作成、更新、削除するとChangeTokenのステータスがPENDINGとなる。この状態を取得するためにはGetChangeTokenStatusを使う。

GetChangeTokenStatus

ChangeTokenのステータスを取得する。PROVISIONED | PENDING | IN_SYNCの三種類。

GetIPSet

IPSetIdからIPSetを取得する。

GetRule

RuleIDからRuleを取得する。

GetSampledRequests

SampledHTTPRequestを配列の形で取得する。またタイムレンジを取得する。

GetSqlInjectionMatchSet

SqlInjectionMatchSetIdからSqlInjectionMatchSetを取得する。

GetWebACL

WebACLIdからWebACLを取得する。

ListByteMatchSets

ByteMatchSetSummaryの配列を返す。

ListIPSets

IPSetSummaryの配列を返す。

ListRules

RuleSummaryの配列を返す。

ListSqlInjectionMatchSets

SqlInjectionMatchSetの配列を返す。

ListWebACLs

WebACLSummaryの配列を返す。

UpdateByteMatchSet

ByteMatchTupleを追加、または削除することによってByteMatchSetを更新する。

UpdateIPSet

IPSetDescriptorを追加、または削除することによってIPSetを更新する。

UpdateRule

Predicateを追加、または削除することによってRuleを更新する。

UpdateSqlInjectionMatchSet

SqlInjectionMatchTupleを追加、または削除することによってSqlInjectionMatchSetを更新する。

UpdateWebACL

ActivatedRuleを追加、または削除することによってWebACLを更新する。

データ型

ActivatedRule

RuleをPriority属性で優先順位を付け、RuleがALLOW、BLOCK、COUNTを設定したオブジェクト。

ByteMatchSet

ByteMatchSetIdとName, ByteMatchTupleの配列を一組としたオブジェクト。

ByteMatchSetSummary

ByteMatchSetIdとNameを一対としたByteMatchSetをリスト化したもの。

ByteMatchSetUpdate

ByteMatchTupleとINSERT | DELETEするかのActionを一対としたオブジェクト。

ByteMatchTuple

WAFが検索する対象となるASCII文字列によって指定された文字列が含まれたオブジェクト。

FieldToMatch

URI | QUERY_STRING | HEADER | METHODのタイプとその中身を一対としたオブジェクト。

HTTPHeader

ヘッダのタイプとその中身を一対としたオブジェクト。

HTTPRequest

ClientIPや国、ヘッダタイプ、HTTPのバージョン等が一対としたオブジェクト。

IPSet

IPSetIDとIPV4のアドレス等が一対としたオブジェクト。

IPSetDescriptor

IPV4のIPアドレス群とタイプ(と言ってもIPV4しか書かれていない)

IPSetSummary

IPSetIdとNameが一対となったオブジェクト。

IPSetUpdate

IPSetDescriptorとINSERT | DELETEが一対となったオブジェクト。

Predicate

ByteMatchSet, IPSet, または SqlInjectionMatchSetとDataId, IPMatch | ByteMatch | SqlInjectionMatchの選択をしたものが一対となったオブジェクト。

Rule

ByteMatchSet, IPSet, and/or SqlInjectionMatchSetが入っているRule。

RuleSummary

RuleIdとNameが一対となったオブジェクト。

RuleUpdate

PredicateとINSERT | DELETEが一対となったオブジェクト。

SampledHTTPRequest

SampledHTTPRequestsとALLOW, BLOCK, COUNTのアクションが一対となったオブジェクト。

SqlInjectionMatchSet

SqlInjectionMatchSetIdとName, SqlInjectionMatchTuplesの配列が一組となったオブジェクト。

SqlInjectionMatchSetSummary

SqlInjectionMatchSetIdとNameが一対となったオブジェクト。

SqlInjectionMatchSetUpdate

SqlInjectionMatchTupleとINSERT | DELETEのアクションが一対となったオブジェクト。

SqlInjectionMatchTuple

WAFで監視対象となるSQLコードとFieldToMatchが一対となったオブジェクト。

TimeWindow

StartTimeとEndTimeが一対となったオブジェクト。

WafAction

BLOCK | ALLOW | COUNTのアクションを記したオブジェクト。

WebACL

WebACLIdとActivatedRuleの配列が一組となったオブジェクト。

WebACLSummary

WebACLIdとNameが一対となったオブジェクト。

WebACLUpdate

ActivatedRuleとINSERT | DELETEが一対となったオブジェクト。

共通パラメータ

共通のアルゴリズムやセキュリティトークン等、共通で使用するパラメータ

共通エラー

HTTP Status Codeが返ってきた時に共通のdescription

まとめ

いかがでしたでしょうか。こちらのAPI一覧を元にAWS WAFがどのような動きを行うのかを俯瞰で理解していただければと思います。

参考サイト

AWS Cloud Roadshow 2017 福岡