ALIYUN::ECS::SecurityGroup

ALIYUN::ECS::SecurityGroup类型用于创建安全组。

语法

{
  "Type": "ALIYUN::ECS::SecurityGroup",
  "Properties": {
    "VpcId": String,
    "Description": String,
    "SecurityGroupName": String,
    "Tags": List,
    "SecurityGroupEgress": List,
    "SecurityGroupIngress": List,
    "ResourceGroupId": String,
    "SecurityGroupType": String
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

ResourceGroupId

String

安全组所在的资源组ID。

VpcId

String

专有网络ID。

Description

String

安全组描述信息。

长度为2~256个字符。

Tags

List

安全组的标签。

最多支持20个标签。

更多信息,请参见Tags属性

SecurityGroupName

String

安全组名称。

不填则为空,默认值为空。

  • 长度为2~128个字符。

  • 必须以英文字母或汉字开头,不能以http://https://开头。

  • 可包含英文字母、汉字、数字、半角句号(.)、下划线(_)和短划线(-)。

SecurityGroupEgress

List

安全组出方向的访问规则。

更多信息,请参见SecurityGroupEgress属性

SecurityGroupIngress

List

安全组入方向的访问规则。

更多信息,请参见SecurityGroupIngress属性

SecurityGroupType

String

安全组的类型。

取值:

  • normal:基本安全组。

  • enterprise:高级安全组。

Tags语法

"Tags": [
  {
    "Value" : String,
    "Key" : String
  }
]

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

长度为1~128个字符,不能以aliyunacs:开头,不能包含http://https://

Value

String

标签值。

长度为0~128个字符,不能以aliyunacs:开头,不能包含http://https://

SecurityGroupEgress语法

"SecurityGroupEgress": [
  {
    "Description": String,
    "PortRange": String,
    "NicType": String,
    "Priority": Integer,
    "DestGroupId": String,
    "DestCidrIp": String,
    "Policy": String,
    "IpProtocol": String,
    "DestGroupOwnerId": String,
    "Ipv6DestCidrIp": String,
    "DestPrefixListId": String,
    "SourcePortRange": String,
    "Ipv6SourceCidrIp": String,
    "SourceCidrIp": String,
    "DestGroupOwnerAccount": String
  }
]

SecurityGroupEgress属性

属性名称

类型

必须

允许更新

描述

约束

Description

String

安全组规则的描述信息。

长度为1~512个字符。

DestGroupOwnerId

String

跨账号设置安全组规则时,目的端安全组所属的阿里云账号ID。

如果未设置DestGroupOwnerId,则认为您设置了其它安全组的访问权限。如果您已经设置参数DestCidrIp,则参数DestGroupOwnerId无效。

IpProtocol

String

IP协议。

取值:

  • tcp

  • udp

  • icmp

  • gre

  • all:同时支持四种协议。

PortRange

String

IP协议相关的端口号范围。

目的端安全组开放的传输层协议相关的端口范围。取值:

  • TCP/UDP协议:1~65,535。使用正斜线(/)分隔起始端口和终止端口。

    • 正确示例:1/200。

    • 错误示例:200/1。

  • ICMP协议:-1/-1。

  • GRE协议:-1/-1。

  • all:-1/-1。

NicType

String

网络类型。

取值:

  • internet(默认值)

  • intranet

DestPrefixListId

String

需要设置出方向访问权限的目的端前缀列表ID。

您可以调用云服务ECS的DescribePrefixLists接口查询可以使用的前缀列表ID。

安全组的网络类型为经典网络时,不支持设置前缀列表。

当您指定了DestCidrIp、Ipv6DestCidrIp或DestGroupId参数中的任意一个时,将忽略该参数。

Priority

Integer

授权策略优先级。

取值范围:1~100。

默认值:1。

DestGroupId

String

同一地域内的目标安全组ID。

DestGroupId或DestCidrIp参数必须指定一项。

  • 如果两项都指定,则默认对DestCidrIp进行授权。

  • 如果指定了该参数,且没有指定DestCidrIp,则NicType只能选择intranet。

DestCidrIp

String

目标IP地址范围。

必须采用CIDR格式来指定IP地址范围。

默认值: 0.0.0.0/0(表示不受限制)。

其它支持的格式,例如 10.159.XX.XX/12。

最多10个IP地址或地址段,用半角逗号(,)隔开。

说明

仅支持IPv4。

Policy

String

授权策略。

取值:

  • accept(默认值):接受访问。

  • drop:拒绝访问。

Ipv6DestCidrIp

String

目标地址IPv6 CIDR地址段。

支持在CIDR格式和IPv6格式的IP地址范围。仅支持专有网络类型的IP地址。

SourcePortRange

String

安全组开放的传输层协议相关的源端端口范围。

取值:

  • TCP/UDP协议:取值范围为 1~65535。使用正斜线(/)隔开起始端口和终止端口。例如:1/200。

  • ICMP协议:-1/-1。

  • GRE协议:-1/-1。

  • ALL:-1/-1。

用于支持五元组规则,请参见安全组五元组规则

Ipv6SourceCidrIp

String

源端 IPv6 CIDR 地址段。

支持CIDR格式和IPv6格式的IP地址范围。

用于支持五元组规则,请参见安全组五元组规则

说明

仅在支持IPv6的VPC类型ECS实例上有效,且该参数与DestCidrIp参数不可同时设置。

SourceCidrIp

String

源端 IPv4 CIDR 地址段。

支持CIDR格式和IPv4格式的IP地址范围。

用于支持五元组规则,请参见安全组五元组规则

DestGroupOwnerAccount

String

目的端安全组所属的阿里云账户。

  • 如果DestGroupOwnerAccountDestGroupOwnerId均未设置,则认为是撤销您其他安全组的访问权限。

  • 如果已经设置参数DestCidrIp,则参数DestGroupOwnerAccount无效。

SecurityGroupIngress语法

"SecurityGroupIngress": [
  {
    "SourceGroupOwnerId": String,
    "Description": String,
    "PortRange": String,
    "NicType": String,
    "Ipv6SourceCidrIp": String,
    "Priority": Integer,
    "SourceGroupId": String,
    "Policy": String,
    "IpProtocol": String,
    "SourcePortRange": String,
    "SourceCidrIp": String,
    "SourcePrefixListId": String,
    "Ipv6DestCidrIp": String,
    "SourceGroupOwnerAccount": String,
    "DestCidrIp": String
  }
]

SecurityGroupIngress属性

属性名称

类型

必须

允许更新

描述

约束

SourceGroupOwnerId

String

源安全组所属的阿里云账号ID。

Description

String

安全组规则的描述信息。

长度为1~512个字符。

SourcePrefixListId

String

需要设置入方向访问权限的源端前缀列表ID。

您可以调用云服务ECS的DescribePrefixLists查询可以使用的前缀列表ID。

安全组的网络类型为经典网络时,不支持设置前缀列表。

当您指定了SourceCidrIp、Ipv6DestCidrIp或DestGroupId参数中的任意一个时,将忽略该参数。

IpProtocol

String

IP协议。

取值:

  • tcp

  • udp

  • icmp

  • gre

  • all:同时支持四种协议。

PortRange

String

IP协议相关的端口范围。

目的端安全组开放的传输层协议相关的端口范围。取值:

  • TCP/UDP协议:1~65535。使用正斜线(/)间隔起始端口和终止端口。

    • 正确示例:1/200。

    • 错误示例:200/1。

  • ICMP协议:-1/-1。

  • GRE协议:-1/-1。

  • all:-1/-1。

SourceGroupId

String

同一地域内的源安全组ID。

SourceGroupId或者SourceCidrIp参数必须指定一项。

如果两项都指定,则默认对SourceCidrIp授权。

如果指定了该参数,且没有指定SourceCidrIp,则NicType只能选择intranet。

NicType

String

网络类型。

取值:

  • internet(默认值)

  • intranet

Priority

Integer

授权策略优先级。

取值范围:1~100。

默认值:1。

SourceCidrIp

String

源IP地址范围。

必须采用CIDR格式来指定IP地址范围。

默认值:0.0.0.0/0(表示不受限制)。

其它支持的格式,例如10.159.XX.XX/12。

最多10个IP地址或地址段,用半角逗号(,)隔开。

说明

仅支持IPV4。

Policy

String

授权策略。

取值:

  • accept(默认值):接受访问。

  • drop:拒绝访问。

SourcePortRange

String

源端安全组开放的传输层协议相关的端口范围。

取值:

  • TCP/UDP协议:取值为1~65535。使用正斜线(/)间隔起始端口和终止端口。

    • 正确示例:1/200。

    • 错误示例:200/1。

  • ICMP协议:-1/-1。

  • GRE协议:-1/-1。

  • IpProtocol取值为all:-1/-1。

Ipv6SourceCidrIp

String

源IPv6 CIDR地址段。

仅支持专有网络类型的IP地址。支持在CIDR格式和IPv6格式的IP地址范围。

Ipv6DestCidrIp

String

目的端IPv6 CIDR地址块。

支持CIDR格式和IPv6格式的IP地址范围。

说明

仅在支持IPv6的VPC类型ECS实例上有效,且该参数与DestCidrIp参数不可同时设置。

SourceGroupOwnerAccount

String

源端安全组所属的阿里云账户。

  • 如果SourceGroupOwnerAccountSourceGroupOwnerId均未设置,则认为是设置您其他安全组的访问权限。

  • 如果已经设置参数SourceCidrIp,则参数SourceGroupOwnerAccount无效。

DestCidrIp

String

目的端IPv4 CIDR地址段。

支持CIDR格式和IPv4格式的IP地址范围。

用于支持五元组规则,请参见安全组五元组规则

返回值

Fn::GetAtt

  • SecurityGroupId:安全组ID。

  • SecurityGroupName:安全组名称。

示例

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  SecurityGroup:
    Type: 'ALIYUN::ECS::SecurityGroup'
    Properties:
      SecurityGroupIngress:
        - PortRange: 22/22
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
        - PortRange: 80/80
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
      SecurityGroupType: normal
      VpcId:
        Ref: VpcId
      SecurityGroupEgress:
        - PortRange: 443/443
          DestCidrIp: 0.0.0.0/0
          IpProtocol: tcp
      SecurityGroupName: TestSecurityGroupName
Parameters:
  VpcId:
    AssociationProperty: 'ALIYUN::ECS::VPC::VPCId'
    Type: String
    Label:
      zh-cn: 现有VPC的实例ID
      en: Existing VPC Instance ID
Outputs:
  SecurityGroupId:
    Description: generated security group id for security group.
    Value:
      'Fn::GetAtt':
        - SecurityGroup
        - SecurityGroupId
  SecurityGroupName:
    Description: The name of security group.
    Value:
      'Fn::GetAtt':
        - SecurityGroup
        - SecurityGroupName

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "SecurityGroupIngress": [
          {
            "PortRange": "22/22",
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          },
          {
            "PortRange": "80/80",
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          }
        ],
        "SecurityGroupType": "normal",
        "VpcId": {
          "Ref": "VpcId"
        },
        "SecurityGroupEgress": [
          {
            "PortRange": "443/443",
            "DestCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          }
        ],
        "SecurityGroupName": "TestSecurityGroupName"
      }
    }
  },
  "Parameters": {
    "VpcId": {
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
      "Type": "String",
      "Label": {
        "zh-cn": "现有VPC的实例ID",
        "en": "Existing VPC Instance ID"
      }
    }
  },
  "Outputs": {
    "SecurityGroupId": {
      "Description": "generated security group id for security group.",
      "Value": {
        "Fn::GetAtt": [
          "SecurityGroup",
          "SecurityGroupId"
        ]
      }
    },
    "SecurityGroupName": {
      "Description": "The name of security group.",
      "Value": {
        "Fn::GetAtt": [
          "SecurityGroup",
          "SecurityGroupName"
        ]
      }
    }
  }
}