將安全群組規則套用至來源及目的地 IP 位址
安全群組規則現在支援本端 IP 位址。 這表示規則可以容許特定的本端 IP 位址,而不是容許所有本端 IP 位址。 安全群組規則同時支援入口和出口規則的本端 IP 位址。
在下列情況下,容許具有安全群組規則的特定本端 IP 位址或位址範圍非常有用:
- 您具有與單一虛擬網路介面相關聯的次要專用 IP 位址
- 您具有自訂路徑,可將封包轉遞至容許 IP 盜用的介面
您可以套用只容許特定本端目的地 IP 位址的入埠安全群組規則。 您也可以套用只容許特定本端來源 IP 位址的出埠安全群組規則。
您可以使用主控台、CLI、API 和 Terraform 套用安全群組規則 (入站和出站)。
提示:
- 無論所有規則的新增次序為何,都會對它們進行評估。
- 規則是有狀態的,表示會自動允許回應所容許資料流量的傳回資料流量。 例如,您已建立在埠 80 上允許入埠 TCP 資料流量的規則。 該規則還會容許將埠 80 上的出埠 TCP 資料流量傳回給原始主機,而無需其他規則。
- 對於 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 主控台。
-
選取導覽功能表
,然後按一下基礎結構
> 網路 > 安全群組。
-
從 VPC 的安全群組表格中,選擇下列其中一項:
- 若要在佈建新的安全群組時建立規則,請按一下 建立,然後遵循 設定資源的安全群組 中的指示。
- 若要建立現有安全群組的規則,請按一下安全群組的名稱以檢視其「詳細資料」頁面,然後繼續步驟 4。
-
若要建立及管理規則,請選取規則標籤。
-
請從以下選項中選擇一項:
-
若要建立入埠規則,請在「入埠規則」表格上選取 建立,並完成下列欄位。 然後,按一下建立。
- 協定 - 指定要強制執行的協定( ICMP_TCP_UDP、ANY 或其他 IPv4 協定之一)。
- 埠-指定套用規則的埠。 選取 任何 或指定 埠範圍 (最小及最大埠值)。 TCP 和 UDP 的埠值必須是介於 1 和 65535 之間的數字。 ICMP 的有效埠值為 0 至 254。
- 來源類型 - 選擇允許此規則傳輸流量的網路介面集合。 您可以針對入埠允許的資料流量選取 任何、IP 位址或 CIDR 區塊。 或者,您可以在相同的 VPC 中指定安全群組,以容許進入或離開連接至所選取安全群組的所有實例的資料流量。
- 目的地類型-選取 任何、IP 位址或 CIDR 區塊。
-
若要建立出埠規則,請在「出埠規則」表格上選取 建立,並完成下列欄位。 然後,按一下建立。
- 協定 - 指定要執行的協定( TCP、UDP、ICMP 或 TCP-UDP-ICMP )。
- 埠-指定套用規則的埠。 選取 任何 或指定 埠範圍 (最小及最大埠值)。 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,icmp_tcp_udpgre,ip_in_ip,ah,esp,l2tp,rsvp,sctp,vrrp,或number_<N>. --vpc- VPC 的 ID 或名稱。 此選項僅需用於在該VPC內透過名稱指定唯一資源。
--local- 此規則允許傳入流量(或對於傳出流量而言,允許傳出流量)的本機 IP 位址或本機 IP 位址範圍。 可以指定為 IP 位址或 CIDR 區塊。 其中之一:
LOCAL_ADDRESS,CIDR_BLOCK。一個 的 CIDR0.0.0.0/0區塊允許流量前往所有本地 IP 位址(或對於出站規則,允許來自所有本地 IP 位址的流量)。 --remote- 此規則容許資料流量的來源網路介面集。 它可指定為、
REMOTE_ADDRESS或SECURITY_GROUP``CIDR_BLOCK。 若未指定來源,則允許來自任何來源的流量(或對於出站規則,允許流向任何來源)。 --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 anyibmcloud is security-group-rule-add my-sg inbound anyibmcloud is security-group-rule-add my-sg inbound any --vpc my-vpcibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound icmp --icmp-type 8 --icmp-code 0ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound any --remote 12.3.2.4ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound any --remote 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3ibmcloud is security-group-rule-add my-sg inbound any --remote my-sgibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5beaa7c1dcb3 inbound tcp --port-min 4 --port-max 22 --output JSONibmcloud is security-group-rule-add --sg 72b27b5c-f4b0-48bb-b954-5beaa7c1dcb3 --direction inbound --protocol any --local 192.176.3.0ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol gre --local-address 192.176.3.0ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol any --remote-address 12.3.2.4ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol icmp_tcp_udp
使用 API 建立安全群組規則
安全群組規則 POST 要求接受名為 local 的選用內容,其具有兩個內容:
address- 此規則容許入埠資料流量的目標 IP 位址 (或出埠規則的來源 IP 位址)。
cidr_block- 此規則容許入埠資料流量的 IP 位址範圍 (或出埠規則的 IP 位址範圍)。
如果未指定 local 內容,則預設值為 cidr_block: 0.0.0.0/0。
您可以使用 API 來建立安全群組規則:
-
使用正確的變數來設定 API 環境。
-
將安全群組 ID 儲存在變數中,以在 API 指令中使用:
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 並設定 Provider 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
}
}