セキュリティグループ作成

セキュリティグループを用いると、仮想サーバに接続されたポートに対してパケットフィルタリングを行うため、ルール設定をグルーピングして定義および設定することができます。ここでは、セキュリティグループを作成し、確認するまでの手順を解説します。

セキュリティグループには複数のルールを設定できます。1つのポートに設定されたセキュリティグループのうち、どれか1つでもルールにマッチしたパケットは通信が許可され、それ以外の通信は遮断されます。(ホワイトリスト方式、OR条件)

注: セキュリティグループは、仮想ルータおよびDHCPサーバが持つポートには設定できません。


ポートには自動的に通信を遮断するデフォルトセキュリティグループが設定されています。そこで、新たにセキュリティグループを作成し、必要に応じて通信を許可するルールを設定します。

  1. 以下で、必要な設定を行います。

    セキュリティグループはアベイラビリティゾーンに紐づかないため、指定は不要です。

    $ SG_NAME=<新規セキュリティグループ名(任意)>
  2. 次のAPIを実行します。
    $ curl -Ss $NETWORK/v2.0/security-groups  -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" \
     -H "Content-Type: application/json" -d '{"security_group": {"name": "'$SG_NAME'"}}' | \
     jq .

    以下のレスポンスが返ります。

    {
      "security_group": {
        "tenant_id": "<プロジェクトID>"                                                                                                                                                                                                                            ,
        "description": "",
        "name": "<新規セキュリティグループ名>",
        "security_group_rules": [
          {
            "remote_group_id": null,
            "direction": "egress",
            "remote_ip_prefix": null,
            "protocol": null,
            "ethertype": "IPv6",
            "port_range_max": null,
            "security_group_id": "<新規セキュリティグループID>",
            "port_range_min": null,
            "tenant_id": "<プロジェクトID>",
            "id": "<デフォルトのセキュリティグループルールID>"
          },
          {
            "remote_group_id": null,
            "direction": "egress",
            "remote_ip_prefix": null,
            "protocol": null,
            "ethertype": "IPv4",
            "port_range_max": null,
            "security_group_id": "<新規セキュリティグループID>",
            "port_range_min": null,
            "tenant_id": "<プロジェクトID>",
            "id": "<デフォルトのセキュリティグループルールID>"
          }
        ],
        "id": "<新規セキュリティグループID>"
      }
    }
  3. 作成したセキュリティグループを確認するため、以下のAPIを実行します。
    $ curl -Ss $NETWORK/v2.0/security-groups -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | \
     jq '.security_groups[]| .name, .description, .id'

    以下のように、設定したセキュリティグループ名を含んだリストが出力された場合、作成は完了です。

    "default"
    "default"
    "<プロジェクトのデフォルトセキュリティグループID>"
    ...
    "<新規作成したセキュリティグループ名>"
    ""
    "<新規作成したセキュリティグループID>"
    ...