將安全群組規則套用至來源及目的地 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 位址的資料流量。

處理入站流量的安全群組規則圖
處理入站流量的安全群組規則

在主控台中建立安全群組規則

您可以在佈建安全群組期間或之後建立入埠及出埠規則。

  1. 從瀏覽器中,開啟 IBM Cloud 主控台

  2. 選取導覽功能表 導覽功能表圖示,然後按一下基礎結構 VPC 圖示 > 網路 > 安全群組

  3. 從 VPC 的安全群組表格中,選擇下列其中一項:

    • 若要在佈建新的安全群組時建立規則,請按一下 建立,然後遵循 設定資源的安全群組 中的指示。
    • 若要建立現有安全群組的規則,請按一下安全群組的名稱以檢視其「詳細資料」頁面,然後繼續步驟 4。
  4. 若要建立及管理規則,請選取規則標籤。

  5. 請從以下選項中選擇一項:

    • 若要建立入埠規則,請在「入埠規則」表格上選取 建立,並完成下列欄位。 然後,按一下建立

      • 協定 - 指定要強制執行的協定( ICMP_TCP_UDPANY 或其他 IPv4 協定之一)。
      • 埠-指定套用規則的埠。 選取 任何 或指定 埠範圍 (最小及最大埠值)。 TCPUDP 的埠值必須是介於 1 和 65535 之間的數字。 ICMP 的有效埠值為 0 至 254。
      • 來源類型 - 選擇允許此規則傳輸流量的網路介面集合。 您可以針對入埠允許的資料流量選取 任何IP 位址CIDR 區塊。 或者,您可以在相同的 VPC 中指定安全群組,以容許進入或離開連接至所選取安全群組的所有實例的資料流量。
      • 目的地類型-選取 任何IP 位址CIDR 區塊
    • 若要建立出埠規則,請在「出埠規則」表格上選取 建立,並完成下列欄位。 然後,按一下建立

      • 協定 - 指定要執行的協定( TCPUDPICMPTCP-UDP-ICMP )。
      • 埠-指定套用規則的埠。 選取 任何 或指定 埠範圍 (最小及最大埠值)。 TCPUDP 的埠值必須是介於 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
要施行的資料流量方向。 下列其中一項: inboundoutbound
PROTOCOL
套用規則的通訊協定。 以下任一項:tcp, udp, icmp, icmp_tcp_udp gre, ip_in_ip, ah, esp, l2tp, rsvp, sctp, vrrp,或 number_<N>.
--vpc
VPC 的 ID 或名稱。 此選項僅需用於在該VPC內透過名稱指定唯一資源。
--local
此規則允許傳入流量(或對於傳出流量而言,允許傳出流量)的本機 IP 位址或本機 IP 位址範圍。 可以指定為 IP 位址或 CIDR 區塊。 其中之一:LOCAL_ADDRESS, CIDR_BLOCK。一個 的 CIDR 0.0.0.0/0 區塊允許流量前往所有本地 IP 位址(或對於出站規則,允許來自所有本地 IP 位址的流量)。
--remote
此規則容許資料流量的來源網路介面集。 它可指定為、REMOTE_ADDRESSSECURITY_GROUP``CIDR_BLOCK。 若未指定來源,則允許來自任何來源的流量(或對於出站規則,允許流向任何來源)。
--icmp-type
要容許的 ICMP 資料流量類型。 有效值範圍從 0254。 只有在通訊協定設定為 icmp 時,才會指定此選項。 如果未指定,容許所有類型。
--icmp-code
要容許的 ICMP 資料流量代碼。 有效值範圍從 0255。 只有在通訊協定設定為 icmp 時,才會指定此選項。 如果未指定,容許所有程式碼。
-port-min
最小埠號。 有效值範圍為 165535。 只有在通訊協定設定為 tcpudp 時,才會指定此選項。 若未指定,則允許所有連接埠(預設值:1)。
--port-max
最大埠號。 有效值範圍為 165535。 只有在通訊協定設定為 tcpudp 時,才會指定此選項。 若未指定,則允許所有連接埠(預設值:65535)。
--output
輸出格式。 其中一個 JSON
--q, --quiet
暫停詳細輸出。

CLI 範例

  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound any
  • ibmcloud is security-group-rule-add my-sg inbound any
  • ibmcloud is security-group-rule-add my-sg inbound any --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 any --remote 12.3.2.4
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound any --remote 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3
  • ibmcloud is security-group-rule-add my-sg inbound any --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 any --local 192.176.3.0
  • ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol gre --local-address 192.176.3.0
  • ibmcloud vpc-iaas security-group-rule-add --sg-id r134-028d1f0b-9648-41d1-b862-45d9b85b12b7 --direction inbound --protocol any --remote-address 12.3.2.4
  • ibmcloud 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 來建立安全群組規則:

  1. 使用正確的變數來設定 API 環境

  2. 將安全群組 ID 儲存在變數中,以在 API 指令中使用:

    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 並設定 Provider IBM Cloud 外掛程式。 如需相關資訊,請參閱 Terraform 入門

下列 Terraform 範例顯示如何建立入埠安全群組規則。 資源中的 local 參數接受 IP 位址或 CIDR 區塊,並且也處於資料來源 ibm_is_security_group_rulesibm_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
  }
}