ソース 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 アドレスへのトラフィックは許可されません。
コンソールでのセキュリティー・グループのルールの作成
セキュリティー・グループのプロビジョニング中またはプロビジョニング後に、インバウンド・ルールとアウトバウンド・ルールを作成できます。
-
ブラウザーから、 IBM Cloud コンソールを開きます。
-
Navigation Menu
を選択し、Infrastructure(インフラストラクチャー) > Network(ネットワーク) > Security groups(セキュリティグループ)の順にクリックします。
-
「VPC のセキュリティー・グループ」テーブルから、以下のいずれかを選択します。
- 新規セキュリティー・グループのプロビジョニング時にルールを作成するには、 「作成」 をクリックしてから、 リソースのセキュリティー・グループのセットアップ の指示に従います。
- 既存のセキュリティー・グループのルールを作成するには、セキュリティー・グループの名前をクリックしてその「詳細」ページを表示してから、ステップ 4 に進みます。
-
ルールを作成および管理するには、「ルール」タブを選択します。
-
以下の中から1つ選んでください:
-
インバウンド・ルールを作成するには、「インバウンド・ルール」テーブルで 「作成」 を選択し、以下のフィールドに入力します。 次に**「作成」**をクリックします。
- プロトコル-強制するプロトコルを指定します (TCP、 UDP、 ICMP、または ALL)。
- ポート-ルールを適用するポートを指定します。 「任意」 を選択するか、 ポート範囲 (最小ポート値と最大ポート値) を指定します。 TCP および UDP のポート値は、1 から 65535 までの数値でなければなりません。 ICMP の有効なポート値は 0 から 254 です。
- ソース タイプ] - このルールがトラフィックを許可するネットワーク インターフェイスのセットを選択します。 インバウンドの許可トラフィックには、 「任意」、 「IP アドレス」、または CIDR ブロック を選択できます。 あるいは、同じ VPC 内のセキュリティー・グループを指定して、その選択されたセキュリティー・グループに接続するすべてのインスタンスとの間のトラフィックを許可することができます。
- 宛先タイプ- 「任意」、 「IP アドレス」、または CIDR ブロックを選択します。
-
アウトバウンド・ルールを作成するには、「アウトバウンド・ルール」テーブルで 「作成」 を選択し、以下のフィールドに入力します。 次に**「作成」**をクリックします。
- プロトコル-強制するプロトコルを指定します (TCP、 UDP、 ICMP、または 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
- ルールが適用されるプロトコル。
tcp
、udp
、icmp
、またはall
のいずれか。 --vpc
- VPC の ID または名前。 このオプションは、このVPC内で一意のリソースを名前で指定する場合にのみ必要です。
--local
- このルールがインバウンドトラフィックを許可するローカルIPアドレスまたはローカルIPアドレスの範囲(またはアウトバウンドトラフィックの場合はその範囲)。 IP アドレスまたは CIDR ブロックとして指定できます。 の一つ:
LOCAL_ADDRESS
CIDR_BLOCK
。0.0.0.0/0
のCIDRブロックは、すべてのローカルIPアドレスへのトラフィックを許可する(アウトバウンドルールの場合は、すべてのローカルIPアドレスからのトラフィック)。 --remote
- このルールが許可するトラフィックの発信元である一連のネットワーク・インターフェース。
REMOTE_ADDRESS
、CIDR_BLOCK
、SECURITY_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 を使用してセキュリティー・グループ・ルールを作成できます。
-
正しい変数を使用して API 環境をセットアップします。
-
API コマンドで使用する変数にセキュリティー・グループ ID を保管します。
export security_group_id=<security_group_id>
-
リモート・アドレス範囲
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
}
}