ファイアーウォールポリシー作成

複数のファイアーウォールルールを束ねるファイアーウォールポリシーを作成し、確認するまでの手順を解説します。



リスト内のルールの順番によってルールに優先順位がつけられており、上から順に順次検証され、通信の可否を制御します。

ヒント: ポリシー内で自動的に「DENY ALL」のルールが最後尾に追加されます。これにより、許可ルールの定義されないトラフィックはデフォルトで遮断されます。(ホワイトリスト方式)ただし、この自動的に追加される「DENY ALL」ルールは暗黙ルールとなっており、ポリシーに表示されません。

ファイアーウォールサービスの設定は以下の要素から構成され、番号順にフィルタリング情報を構成していきます。ファイアーウォールを仮想ルータに関連付けることで、設定したフィルタリングが行われるようにします。

  1. ファイアーウォールルールの作成
  2. ファイアーウォールポリシーを作成し、ルール群を登録
  3. ポリシーを指定してファイアーウォールを作成し、仮想ルータに関連付け
  1. ファイアーウォールルールの一覧を取得するため、以下のAPIを実行します。
    $ curl -Ss $NETWORK/v2.0/fw/firewall_rules -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | \
     jq '.firewall_rules[] | .name, .id'

    以下のようなフォーマットでファイアーウォールルールのリストが表示されます。ここからポリシーに必要なルールを選択します。

    ...
    
    "<ファイアーウォールルール名>"
    "<ファイアーウォールルールID>"
    
    ...
    
    
  2. 以下の設定をします。
    $ NAME=<ファイアーウォールポリシー名(任意)>
    $ FWR1=<ファイアーウォールルールID(1)>
    $ FWR2=<ファイアーウォールルールID(2)>
    $ FWR3=<ファイアーウォールルールID(3)>
    ※ファイアーウォールポリシーに設定する分のファイアーウォールルールIDを記載します。
    $ AVAILABILITY_ZONE=<ファイアーウォールルールで設定されているものと同じアベイラビリティゾーン>
  3. 次のAPIを実行します。
    $ curl -X POST -Ss $NETWORK/v2.0/fw/firewall_policies \
    -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" \
    -d '{"firewall_policy":{"firewall_rules": [ "'$FWR1'", "'$FWR2'", "'$FWR3'",
     "'<ファイアーウォールポリシーに設定する数分の領域を追加します>'"],
     "name": "'$NAME'", "availability_zone": "'$AVAILABILITY_ZONE'"}}' | jq .

    以下のレスポンスが返ってきます。ファイアーウォールルールIDの表示される順番がそのまま優先順位となります。

    {
      "firewall_policy": {
        "name": "<新規ファイアーウォールポリシー名>",
        "firewall_rules": [
          "<設定したファイアーウォールルールID(1)>",
          "<設定したファイアーウォールルールID(2)>",
          ...
          "<設定したファイアーウォールルールID(n)>"
        ],
        "tenant_id": "<プロジェクトID>",
        "audited": false,
        "shared": false,
        "id": "<新規ファイアーウォールポリシーID>",
        "description": "",
        "availability_zone": "<設定したアベイラビリティゾーン>"
      }
    }

    アベイラビリティゾーンは、AZ1がjp-east-1a、AZ2がjp-east-1bで表現されます。

  4. 作成したファイアーウォールポリシーを確認するため、以下のAPIを実行します。
    $ curl -Ss $NETWORK/v2.0/fw/firewall_policies -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" \
    | jq .

    以下のように、設定したファイアーウォールポリシー名を含んだリストが出力された場合、作成は完了です。

    {
      "firewall_policies": [
      
          ...
      
        {
        "name": "<新規ファイアーウォールポリシー名>",
        "firewall_rules": [
          "<設定したファイアーウォールルールID(1)>",
          "<設定したファイアーウォールルールID(2)>",
          ...
          "<設定したファイアーウォールルールID(n)>"
        ],
        "tenant_id": "<プロジェクトID>",
        "audited": false,
        "shared": false,
        "id": "<新規ファイアーウォールポリシーID>",
        "description": "",
        "availability_zone": "<設定したアベイラビリティゾーン>"
        },
        
        ...
        
      ]
    }

ファイアーウォールポリシーの作成が完了すると、それを仮想ルータに紐づけるファイアーウォールの作成に進みます。