:original_name: vpc_sg01_0001.html
.. _vpc_sg01_0001:
Creating a Security Group
=========================
Function
--------
This API is used to create a security group.
URI
---
POST /v1/{project_id}/security-groups
:ref:`Table 1 ` describes the parameters.
.. _vpc_sg01_0001__table483113939489:
.. table:: **Table 1** Parameter description
========== ========= =========================
Name Mandatory Description
========== ========= =========================
project_id Yes Specifies the project ID.
========== ========= =========================
Request Message
---------------
- Request parameter
.. table:: **Table 2** Request parameter
+----------------+-----------+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
| Name | Mandatory | Type | Description |
+================+===========+=================================================================+===========================================================================================================+
| security_group | Yes | :ref:`security_group ` object | Specifies the security group objects. For details, see :ref:`Table 3 `. |
+----------------+-----------+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
.. _vpc_sg01_0001__table495783939489:
.. table:: **Table 3** Description of **security_group** fields
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Name | Mandatory | Type | Description |
+=======================+=================+=================+===================================================================================================================================================================+
| name | Yes | String | - Specifies the security group name. |
| | | | - The value can contain 1 to 64 characters, including letters, digits, underscores (_), hyphens (-), and periods (.). |
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| vpc_id | No | String | Specifies the resource ID of the VPC to which the security group belongs. |
| | | | |
| | | | .. note:: |
| | | | |
| | | | This parameter has been discarded, it is not recommended to use it. |
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| enterprise_project_id | No | String | - Specifies the enterprise project ID. When creating a security group, associate the enterprise project ID with the security group. |
| | | | - The value is **0** or a string that contains a maximum of 36 characters in UUID format with hyphens (-). Value **0** indicates the default enterprise project. |
| | | | |
| | | | .. note:: |
| | | | |
| | | | This parameter is unsupported. Do not use it. |
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- Example request
.. code-block:: text
POST https://{Endpoint}/v1/{project_id}/security-groups
{
"security_group": {
"name": "qq",
"vpc_id": "3ec3b33f-ac1c-4630-ad1c-7dba1ed79d85"
"enterprise_project_id": "0aad99bc-f5f6-4f78-8404-c598d76b0ed2"
}
}
Response Message
----------------
- Response parameter
.. table:: **Table 4** Response parameter
+----------------+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
| Name | Type | Description |
+================+=================================================================+===========================================================================================================+
| security_group | :ref:`security_group ` object | Specifies the security group objects. For details, see :ref:`Table 5 `. |
+----------------+-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
.. _vpc_sg01_0001__table661472489489:
.. table:: **Table 5** Description of **security_group** fields
+-----------------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Name | Type | Description |
+=======================+================================================================================+===================================================================================================================================================================+
| name | String | Specifies the security group name. |
+-----------------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| description | String | Provides supplementary information about the security group. |
+-----------------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | String | Specifies the security group ID, which uniquely identifies the security group. |
+-----------------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| vpc_id | String | Specifies the resource ID of the VPC to which the security group belongs. |
| | | |
| | | .. note:: |
| | | |
| | | This parameter has been discarded, it is not recommended to use it. |
+-----------------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| security_group_rules | Array of :ref:`security_group_rule ` objects | Specifies the default security group rules, which ensure that resources in the security group can communicate with one another. |
+-----------------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| enterprise_project_id | String | - Specifies the enterprise project ID. When creating a security group, associate the enterprise project ID with the security group. |
| | | - The value is **0** or a string that contains a maximum of 36 characters in UUID format with hyphens (-). Value **0** indicates the default enterprise project. |
| | | |
| | | .. note:: |
| | | |
| | | This parameter is unsupported. Do not use it. |
+-----------------------+--------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _vpc_sg01_0001__table210704979489:
.. table:: **Table 6** **security_group_rule** objects
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Name | Type | Description |
+=========================+=======================+===========================================================================================================================================================================================================================================================+
| id | String | Specifies the security group rule ID, which uniquely identifies the security group rule. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| description | String | - Provides supplementary information about the security group rule. |
| | | - The value can contain no more than 255 characters, including letters and digits. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| security_group_id | String | Specifies the security group rule ID, which uniquely identifies the security group rule. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| direction | String | - Specifies the direction of access control. |
| | | - Possible values are as follows: |
| | | |
| | | - **egress** |
| | | - **ingress** |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ethertype | String | - Specifies the IP protocol version. |
| | | - The value can be **IPv4** or **IPv6**. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| protocol | String | - Specifies the protocol type. |
| | | - The value can be **icmp**, **tcp**, or **udp**. |
| | | - If the parameter is left blank, all protocols are supported. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| port_range_min | Integer | - Specifies the start port number. |
| | | - The value ranges from 1 to 65535. |
| | | - The value cannot be greater than the **port_range_max** value. An empty value indicates all ports. If the protocol is **icmp**, the value range is shown in :ref:`ICMP-Port Range Relationship Table `. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| port_range_max | Integer | - Specifies the end port number. |
| | | - The value ranges from 1 to 65535. |
| | | - If the protocol is not **icmp**, the value cannot be smaller than the **port_range_min** value. An empty value indicates all ports. If the protocol is **icmp**, the value range is shown in :ref:`ICMP-Port Range Relationship Table `. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| remote_ip_prefix | String | - Specifies the remote IP address. If the access control direction is set to **egress**, the parameter specifies the source IP address. If the access control direction is set to **ingress**, the parameter specifies the destination IP address. |
| | | - The value can be in the CIDR format or IP addresses. |
| | | - The parameter is exclusive with parameter **remote_group_id**. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| remote_group_id | String | - Specifies the ID of the peer security group. |
| | | - The value is exclusive with parameter **remote_ip_prefix**. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| remote_address_group_id | String | - Specifies the remote IP address group ID. |
| | | - The value is exclusive with parameters **remote_ip_prefix** and **remote_group_id**. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tenant_id | String | - Specifies the ID of the project to which the security group rule belongs. |
+-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- Example response
.. code-block::
{
"security_group": {
"id": "16b6e77a-08fa-42c7-aa8b-106c048884e6",
"name": "qq",
"description": "",
"vpc_id": "3ec3b33f-ac1c-4630-ad1c-7dba1ed79d85",
"enterprise_project_id": "0aad99bc-f5f6-4f78-8404-c598d76b0ed2",
"security_group_rules": [
{
"direction": "egress",
"ethertype": "IPv4",
"id": "369e6499-b2cb-4126-972a-97e589692c62",
"description": "",
"security_group_id": "16b6e77a-08fa-42c7-aa8b-106c048884e6"
},
{
"direction": "ingress",
"ethertype": "IPv4",
"id": "0222556c-6556-40ad-8aac-9fd5d3c06171",
"description": "",
"remote_group_id": "16b6e77a-08fa-42c7-aa8b-106c048884e6",
"security_group_id": "16b6e77a-08fa-42c7-aa8b-106c048884e6",
"remote_address_group_id": null
}
]
}
}
Status Code
-----------
See :ref:`Status Codes `.
Error Code
----------
See :ref:`Error Codes `.