IBM Cloud Docs
ソース IP アドレスおよび宛先 IP アドレスへのセキュリティー・グループ・ルールの適用

ソース IP アドレスおよび宛先 IP アドレスへのセキュリティー・グループ・ルールの適用

セキュリティー・グループ・ルールでローカル IP アドレスがサポートされるようになりました。 これは、すべてのローカル IP アドレスを許可するのではなく、特定のローカル IP アドレスをルールで許可できることを意味します。 セキュリティー・グループ・ルールは、入口ルールと出口ルールの両方のローカル IP アドレスをサポートします。

セキュリティー・グループ規則を使用して特定のローカル IP アドレスまたはアドレス範囲を許可すると、以下の場合に役立ちます。

  • 単一の仮想ネットワーク・インターフェースに関連付けられた 2 次プライベート IP アドレスがある
  • IP スプーフィングが許可されたインターフェースにパケットを転送するカスタム経路がある

特定のローカル宛先 IP アドレスのみを許可するインバウンド・セキュリティー・グループ規則を適用できます。 特定のローカル・ソース IP アドレスのみを許可するアウトバウンド・セキュリティー・グループ規則を適用することもできます。

コンソール、CLI、API、Terraformを使用して、セキュリティグループルール(インバウンドとアウトバウンド)を適用できます。

ヒント:

  • 追加される順序にかかわらず、すべてのルールが評価されます。
  • ルールはステートフルです。つまり、許可されたトラフィックに応答して返されるトラフィックは自動的に許可されます。 例えば、ポート 80 でインバウンド TCP トラフィックを許可するルールを作成したとします。 このルールは、発信元ホストに返信するためのポート 80 のアウトバウンド TCP トラフィックも許可するので、ルールをもう 1 つ作成する必要はありません。
  • Windows イメージの場合、インスタンスに関連付けられているセキュリティグループが、インバウンドおよびアウトバウンドのリモートデスクトッププロトコルトラフィック(TCP ポート 3389 )を許可していることを確認してください。

ユース・ケース

セキュリティー・グループ・ルールを作成するときに、特定のローカル IP アドレスまたは CIDR を許可することを選択できます。 リモート・プロパティーと同様に、以下のいずれかのローカル・プロパティーがあります。

  • IP アドレス-このルールは、特定の宛先 IP アドレス (インバウンド・ルールの場合) またはソース IP アドレス (アウトバウンド・ルールの場合) に適用されます。
  • CIDR-ルールは、特定の宛先 CIDR (インバウンド・ルールの場合) またはソース CIDR (アウトバウンド・ルールの場合) に適用されます。

図 1 は、 local IP アドレスを持つセキュリティー・グループのアウトバウンド規則を示しています。 ローカル IP アドレス 10.243.0.1 から 10.243.200.0/24 の範囲内の任意のリモート・アドレスへのトラフィックが許可されます。 緑色のデータ・パス線は許可されているトラフィックを示し、赤色の線は許可されていないトラフィックを示します。

を処理するセキュリティ・グループ・ルールの図※アウトバウンド・トラフィックを処理するセキュリティ・グループ・ルール
アウトバウンド・トラフィックを処理するセキュリティ・グループ・ルールの図

図 2 は、 local IP アドレスを持つセキュリティー・グループのインバウンド・ルールを示しています。 10.243.200.0/24 の範囲内の任意のリモート・アドレスからローカル IP アドレス 10.243.0.1 へのトラフィックが許可されます。 他のローカル IP アドレスへのトラフィックは許可されません。

を処理するセキュリティ・グループ・ルールを示す図※
を処理するセキュリティ・グループ・ルール※インバウンド・トラフィックを処理するセキュリティ・グループ・ルールを示す図

コンソールでのセキュリティー・グループのルールの作成

セキュリティー・グループのプロビジョニング中またはプロビジョニング後に、インバウンド・ルールとアウトバウンド・ルールを作成できます。

  1. ブラウザーから、 IBM Cloud コンソールを開きます。

  2. Navigation Menu メニューアイコン を選択し、Infrastructure(インフラストラクチャー) > Network(ネットワーク) > Security groups(セキュリティグループ)の順にクリックします。

  3. 「VPC のセキュリティー・グループ」テーブルから、以下のいずれかを選択します。

    • 新規セキュリティー・グループのプロビジョニング時にルールを作成するには、 「作成」 をクリックしてから、 リソースのセキュリティー・グループのセットアップ の指示に従います。
    • 既存のセキュリティー・グループのルールを作成するには、セキュリティー・グループの名前をクリックしてその「詳細」ページを表示してから、ステップ 4 に進みます。
  4. ルールを作成および管理するには、「ルール」タブを選択します。

  5. 以下の中から1つ選んでください:

    • インバウンド・ルールを作成するには、「インバウンド・ルール」テーブルで 「作成」 を選択し、以下のフィールドに入力します。 次に**「作成」**をクリックします。

      • プロトコル-強制するプロトコルを指定します (TCPUDPICMP、または ALL)。
      • ポート-ルールを適用するポートを指定します。 「任意」 を選択するか、 ポート範囲 (最小ポート値と最大ポート値) を指定します。 TCP および UDP のポート値は、1 から 65535 までの数値でなければなりません。 ICMP の有効なポート値は 0 から 254 です。
      • ソース タイプ] - このルールがトラフィックを許可するネットワーク インターフェイスのセットを選択します。 インバウンドの許可トラフィックには、 「任意」「IP アドレス」、または CIDR ブロック を選択できます。 あるいは、同じ VPC 内のセキュリティー・グループを指定して、その選択されたセキュリティー・グループに接続するすべてのインスタンスとの間のトラフィックを許可することができます。
      • 宛先タイプ- 「任意」「IP アドレス」、または CIDR ブロックを選択します。
    • アウトバウンド・ルールを作成するには、「アウトバウンド・ルール」テーブルで 「作成」 を選択し、以下のフィールドに入力します。 次に**「作成」**をクリックします。

      • プロトコル-強制するプロトコルを指定します (TCPUDPICMP、または ALL)。
      • ポート-ルールを適用するポートを指定します。 「任意」 を選択するか、 ポート範囲 (最小ポート値と最大ポート値) を指定します。 TCP および UDP のポート値は、1 から 65535 までの数値でなければなりません。 ICMP の有効なポート値は 0 から 254 です。
      • 宛先タイプ- 「任意」「IP アドレス」CIDR ブロック、または 「セキュリティー・グループ」 を選択します。
      • ソース・タイプ- 「任意」「IP アドレス」、または 「CIDR ブロック」 を選択します。

CLI でのセキュリティー・グループのルールの作成

CLI を使用してセキュリティー・グループ・ルール (インバウンドおよびアウトバウンド) を作成するには、次のコマンドを入力します。

ibmcloud is security-group-rule-add GROUP DIRECTION PROTOCOL [--vpc VPC] [--local LOCAL_ADDRESS | CIDR_BLOCK] [--remote REMOTE_ADDRESS | CIDR_BLOCK | SECURITY_GROUP] [--icmp-type ICMP_TYPE [--icmp-code ICMP_CODE]] [--port-min PORT_MIN] [--port-max PORT_MAX] [--output JSON] [-q, --quiet]

ここで、

GROUP
セキュリティー・グループの ID または名前。
DIRECTION
強制するトラフィック方向。 の一つ: inbound outbound.
PROTOCOL
ルールが適用されるプロトコル。 tcpudpicmp、または all のいずれか。
--vpc
VPC の ID または名前。 このオプションは、このVPC内で一意のリソースを名前で指定する場合にのみ必要です。
--local
このルールがインバウンドトラフィックを許可するローカルIPアドレスまたはローカルIPアドレスの範囲(またはアウトバウンドトラフィックの場合はその範囲)。 IP アドレスまたは CIDR ブロックとして指定できます。 の一つ: LOCAL_ADDRESS CIDR_BLOCK0.0.0.0/0 のCIDRブロックは、すべてのローカルIPアドレスへのトラフィックを許可する(アウトバウンドルールの場合は、すべてのローカルIPアドレスからのトラフィック)。
--remote
このルールが許可するトラフィックの発信元である一連のネットワーク・インターフェース。 REMOTE_ADDRESSCIDR_BLOCKSECURITY_GROUP のいずれかで指定できる。 指定されない場合は、任意のソースからのトラフィック (またはアウトバウンド・ルールの場合は任意のソースへのトラフィック) が許可されます。
--icmp-type
許容される ICMP トラフィック・タイプ。 有効な値は 0 から 254 まで。 このオプションは、プロトコルが icmp に設定されている場合にのみ指定される。 指定されない場合は、すべてのタイプが許可されます。
--icmp-code
許容される ICMP トラフィック・コード。 有効な値は 0 から 255 まで。 このオプションは、プロトコルが icmp に設定されている場合にのみ指定されます。 指定されない場合は、すべてのコードが許可されます。
-port-min
最小ポート番号。 有効な値は 1 から 65535 まで。 このオプションは、プロトコルが tcp または udp に設定されている場合にのみ指定される。 未指定の場合、すべてのポートが許可される(デフォルト: 1 )。
--port-max
最大ポート番号。 有効な値は 1 から 65535 まで。 このオプションは、プロトコルが tcp または udp に設定されている場合にのみ指定される。 未指定の場合、すべてのポートが許可される(デフォルト: 65535 )。
--output
出力フォーマット。 JSON のひとつ。
--q, --quiet
詳細出力を抑制します。

CLI の例

  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound all
  • ibmcloud is security-group-rule-add my-sg inbound all
  • ibmcloud is security-group-rule-add my-sg inbound all --vpc my-vpc
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound icmp --icmp-type 8 --icmp-code 0
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound all --remote 12.3.2.4
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound all --remote 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3
  • ibmcloud is security-group-rule-add my-sg inbound all --remote my-sg
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5beaa7c1dcb3 inbound tcp --port-min 4 --port-max 22 --output JSON
  • ibmcloud is security-group-rule-add --sg 72b27b5c-f4b0-48bb-b954-5beaa7c1dcb3 --direction inbound --protocol all --local 192.176.3.0

API を使用したセキュリティー・グループ・ルールの作成

セキュリティー・グループ・ルール POST 要求は、 local という名前のオプション・プロパティーを受け入れます。このプロパティーには、以下の 2 つのプロパティーがあります。

address
この規則がインバウンド・トラフィックを許可する先の IP アドレス (またはアウトバウンド規則の場合は、インバウンド・トラフィックを許可する元の IP アドレス)。
cidr_block
この規則がインバウンド・トラフィックを許可する (またはアウトバウンド規則の場合はインバウンド・トラフィックを許可する) IP アドレス範囲。

local プロパティーが指定されていない場合、デフォルト値は cidr_block: 0.0.0.0/0 です。

以下のように、API を使用してセキュリティー・グループ・ルールを作成できます。

  1. 正しい変数を使用して API 環境をセットアップします。

  2. API コマンドで使用する変数にセキュリティー・グループ ID を保管します。

    export security_group_id=<security_group_id>
    
  3. リモート・アドレス範囲 10.1.2.0/24 からローカル IP アドレス 192.168.1.100 へのインバウンド TCP トラフィックを許可するセキュリティー・グループ規則を作成するには、次のコマンドを実行します。

       curl -sX POST "$vpc_api_endpoint/v1/security_groups/$security_group_id/rules?version=$version&generation=2" \
         -H "Authorization: Bearer ${iam_token}" \
         -d '{
               "direction": "inbound",
               "local": {
                 "address": "192.168.1.100"
               }
               "protocol": "tcp",
               "remote": {
                 "cidr_block": "10.1.2.0/24"
               }
             }'
    

    出力例:

    {
      "direction": "inbound",
      "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-568b4cc2-b6d1-4ee4-898a-841be283a4cd/rules/r006-8d123cf9-9a4e-48d9-ad5e-dabf1e5b5773",
      "id": "r006-8d123cf9-9a4e-48d9-ad5e-dabf1e5b5773",
      "ip_version": "ipv4",
      "local": {
        "address": "192.168.1.100"
      }
      "protocol": "tcp",
      "remote": {
        "cidr_block": "10.1.2.0/24"
      }
    }
    

Terraform を使用したセキュリティー・グループ・ルールの作成

Terraform を使用するには、Terraform CLI をダウンロードして、 IBM Cloud プロバイダー・プラグインを構成します。 詳しくは、 Terraform の概要を参照してください。

以下の Terraform の例は、インバウンド・セキュリティー・グループ・ルールを作成する方法を示しています。 リソース内の local パラメーターは、IP アドレスまたは CIDR ブロックを受け入れ、データ・ソース ibm_is_security_group_rules および ibm_is_security_group_rule の応答状態にもなります。

resource "ibm_is_security_group_rule" "example2" {
  group     = ibm_is_security_group.example.id
  direction = "inbound"
  remote    = "127.0.0.1"
  local = "192.168.3.0/24"
  udp {
    port_min = 805
    port_max = 807
  }
}