为资源设置安全组

您可以配置安全组,以定义允许该资源接收和发送的入站和出站流量。 例如,在根据公司的安全策略为子网配置 ACL 规则后,可以根据特定实例的工作负载,进一步限制这些实例的流量。

在控制台中为资源设置安全组

要使用 UI 配置安全组,请执行以下步骤:

  1. 从浏览器中,打开 IBM Cloud 控制台

  2. 选择导航菜单 导航菜单图标,然后单击基础架构 VPC 图标 > 网络 > 安全组

  3. 在安全组列表上单击 创建

  4. 在“位置”部分,请提供以下信息:

    • 地理位置-指示要在其中创建安全组的常规区域。
    • 区域-指示要在其中创建安全组的区域。
  5. 在“详细信息”部分,请提供以下信息:

    • 名称-输入安全组的唯一标识,例如 my-security-group
    • 资源组- 为安全组选择一个资源组。

    配置完成后,您将无法更改资源组。

    • 标记-添加用户标记。 用户标记在帐户范围内可见。 有关更多信息,请参阅使用标记

    用户标记在帐户范围内可见。 请避免在标记名称中包含敏感数据。

    • 可选: 访问管理标记-添加访问管理标记以帮助组织访问控制关系。 有关更多信息,请参阅 使用标记控制对资源的访问
    • 可选: 虚拟私有云 ——选择您的 VPC。
  6. 在“规则”下,单击 “创建” 以配置入站和出站规则,用于定义允许向该实例发送和从该实例接收的流量类型。 对于每个规则,请指定以下信息:

    • 选择将应用规则的协议和端口。
    • 指定用于所允许流量的 CIDR 块或 IP 地址。 或者,可以在同一 VPC 中指定安全组,以允许连接到所选安全组的所有实例的进出流量。

提示:

  • 系统将对所有规则求值,而不考虑这些规则的添加顺序。
  • 规则是有状态的,这意味着会自动允许响应所允许流量的返回流量。 例如,创建了规则以允许端口 80 上的入站 TCP 流量。 该规则还会允许将端口 80 上的出站 TCP 流量返回给发起主机,而无需额外的规则。
  • 对于 Windows 映像,请确保与该实例关联的安全组允许远程桌面协议( TCP 端口 3389)的入站和出站流量。
  1. 可选: 在其余部分中连接接口,裸机接口,负载均衡器,虚拟专用端点网关和 VPN 服务器 (如果这些目标可用于连接)。

从 CLI 设置资源的安全组

在此示例中,您将使用命令行界面 (CLI) 创建一个已启用安全组的虚拟服务器实例。 图1展示了该场景的具体情况。

图中显示了启用了安全组的虚拟服务器实例
启用了安全组的实例

请注意图1中,名为 SG4 除了其内部 VPC 地址 10.10.10.5 之外,还被分配了浮动 IP 地址 169.60.208.144 ;因此,SG4 该实例可以访问公共互联网。 分配给该实例的安全组 SG4 的安全组名为 demosg

实例 SG8 仅供 VPC 内部使用,并带有专用 IP 地址。 分配给实例 SG8 的安全组名为 my_vpc_sg。 这两个实例都位于名为 sgvpc 的VPC中,并且都在同一个子网 10.10.10.0/24 上,因此它们可以相互通信。

创建连接了安全组的资源

my_vpc_sg 的安全组规则包含SSH、PING以及出站 TCP 等基本功能。

请注意,您必须先使用 ibmcloud is sgc 命令创建安全组,然后再创建使用该安全组的资源。

必须输入 ibmcloud plugin install vpc-infrastructure 才能获取对 ibmcloud is 的访问权。 有关创建 VPC 和子网的详细信息,请参阅 使用 CLI 创建 VPC 资源

您可以复制并粘贴此示例 CLI 代码中的命令,开始创建一个已关联安全组的实例。 此样本代码中未完全显示系统响应。 您必须将命令中的 VPC、子网、镜像、密钥的资源 ID 以及安全组的 ID 号更新为正确的值。

  1. 创建一个名为“my_vpc_sg”的安全组:

    ibmcloud is security-group-create my_vpc_sg $vpc
    

    将该 ID 保存在一个变量中,以便日后使用;例如,保存在名为 sg 的变量中:

    sg=0738-2d364f0a-a870-42c3-a554-000000632953
    
  2. 添加规则以允许SSH、PING以及出站 TCP 连接:

    ibmcloud is security-group-rule-add $sg inbound tcp --port-min 22 --port-max 22
    ibmcloud is security-group-rule-add $sg inbound icmp --icmp-type 8 --icmp-code 0
    ibmcloud is security-group-rule-add $sg outbound tcp
    
  3. 最后,使用该安全组创建一个实例:

    ibmcloud is instance-create test-instance $vpc us-south-2 b-4x16 $subnet 1000 \
    --image $image --keys $key --sgs $sg
    

命令列表备忘单

要查看安全组可用 VPC CLI 命令的完整列表,请输入:

ibmcloud is help | grep sg

要查看您的安全组及其元数据(包括规则),您可以输入(以上面那个示例为例):

ibmcloud is sg $sg

要添加安全组规则,下面是向安全组添加 PING 入站规则的示例命令:

ibmcloud is security-group-rule-add $sg inbound icmp --icmp-type 8 --icmp-code 0

有关使用 CLI 设置安全组的更多信息,请参阅 设置 API 和 CLI 环境

使用 API 设置资源的安全组

以下示例演示了如何使用 IBM Cloud VPC API 来创建和管理安全组。

要使用安全组,首先必须有一个正在运行的 IBM Cloud VPC。

有关创建 VPC 和子网的指示信息,请参阅创建 VPC

步骤 1:创建安全组

在 IBM Cloud VPC 中创建名为 my-security-group 的安全组。

curl -X POST "$vpc_api_endpoint/v1/security_groups?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "name": "my-security-group",
        "vpc": { "id": "'$vpc'" }
      }'

将 ID 保存到一个变量中,以便稍后使用;例如,变量 sg

sg=0738-2d364f0a-a870-42c3-a554-000000632953

步骤 2:添加规则以允许 SSH 连接

在安全组中创建规则以允许端口 22 上的入站连接。

curl -X POST "$vpc_api_endpoint/v1/security_groups/$sg/rules?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token" \
  -d '{
        "direction": "inbound",
        "protocol": "tcp",
        "port_min": 22,
        "port_max": 22
      }'

步骤 3:删除安全组(可选)

要清除安全组,该安全组不能与任何网络接口相关联,也不能由其他安全组中的规则引用。

curl -X DELETE "$vpc_api_endpoint/v1/security_groups/$sg?version=$api_version&generation=2" \
  -H "Authorization: Bearer $iam_token"

有关使用 API 设置安全组的更多信息,请参阅 安全组