gcp_compute_firewall – Создаёт брандмауэр GCP
Новая версия с 2.6.
Описание
- У каждой сети есть свой брандмауэр, контролирующий доступ к экземплярам.
- Весь трафик к экземплярам, даже из других экземпляров, блокируется брандмауэром, если не созданы правила брандмауэра для разрешения доступа.
- В сети по умолчанию автоматически созданы правила брандмауэра, которые показаны в правилах брандмауэра по умолчанию. Никаких автоматически созданных правил брандмауэра нет для вручную созданных сетей, за исключением правила по умолчанию «разрешить» исходящий трафик и правила по умолчанию «заблокировать» входящий трафик. Для всех сетей, кроме сети по умолчанию, необходимо создавать собственные правила брандмауэра.
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- python >= 2.6
- requests >= 2.18.4
- google-auth >= 1.3.0
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| allowed список | Список правил ALLOW, указанных этим брандмауэром. Каждое правило определяет кортеж протокола и диапазона портов, описывающий разрешенное соединение. | ||
| ip_protocol строка / обязательно | IP-протокол, к которому применяется это правило. Тип протокола требуется при создании правила брандмауэра. Это значение может быть одной из следующих известных строк протоколов (tcp, udp, icmp, esp, ah, sctp) или номером IP-протокола. | ||
| ports список | Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP или TCP. Каждый элемент должен быть либо целым числом, либо диапазоном. Если не указано, это правило применяется к соединениям через любой порт. Примеры ввода: ["22"], ["80","443"], и ["12345-12349"]. | ||
| auth_kind строка / обязательно |
| Тип используемых учетных данных. | |
| denied список добавлено в 2.8 | Список правил DENY, указанных этим брандмауэром. Каждое правило определяет кортеж протокола и диапазона портов, описывающий запрещенное соединение. | ||
| ip_protocol строка / обязательно | IP-протокол, к которому применяется это правило. Тип протокола требуется при создании правила брандмауэра. Это значение может быть одной из следующих известных строк протоколов (tcp, udp, icmp, esp, ah, sctp) или номером IP-протокола. | ||
| ports список | Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP или TCP. Каждый элемент должен быть либо целым числом, либо диапазоном. Если не указано, это правило применяется к соединениям через любой порт. Примеры ввода: ["22"], ["80","443"], и ["12345-12349"]. | ||
| description строка | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. | ||
| destination_ranges список добавлено в 2.8 | Если указаны диапазоны назначения, брандмауэр будет применяться только к трафику, у которого IP-адрес назначения находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Поддерживается только IPv4. | ||
| direction строка добавлено в 2.8 | Направление трафика, к которому применяется этот брандмауэр; значение по умолчанию — INGRESS. Примечание: для INGRESS-трафика не поддерживается указание destinationRanges; для EGRESS-трафика не поддерживается указание sourceRanges или sourceTags. Некоторые допустимые значения: "INGRESS", "EGRESS" | ||
| disabled логическое значение добавлено в 2.8 |
| Указывает, отключено ли правило брандмауэра, т.е. не применяется ли оно к сети, с которой оно связано. Если установлено в значение true, правило брандмауэра не применяется, и сеть ведет себя так, как если бы оно не существовало. Если это свойство не указано, правило брандмауэра будет включено. | |
| env_type строка | Указывает, в какой среде Ansible вы выполняете этот модуль. Это не должно устанавливаться, если вы не знаете, что делаете. Это изменяет только строку User Agent для всех запросов API. | ||
| name строка / обязательно | Имя ресурса. Указывается клиентом при создании ресурса. Имя должно иметь длину от 1 до 63 символов и соответствовать RFC1035. То есть длина должна быть от 1 до 63 символов, и оно должно соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`, что означает, что первый символ должен быть строчной буквой, а все последующие символы должны быть тире, строчной буквой или цифрой, за исключением последнего символа, который не может быть тире. | ||
| network словарь | Значение по умолчанию: {"selfLink": "global/networks/default"} | URL ресурса сети для этого правила брандмауэра. Если при создании правила брандмауэра не указано, используется сеть по умолчанию: global/networks/default. Если вы хотите указать это свойство, вы можете указать сеть как полный или частичный URL. Например, следующие URL-адреса допустимы: https://www.googleapis.com/compute/v1/projects/myproject/global/ networks/my-network projects/myproject/global/networks/my-network global/networks/default . Это поле представляет ссылку на ресурс Network в GCP. Его можно указать двумя способами. Во-первых, вы можете поместить словарь с ключом 'selfLink' и значением selfLink вашего ресурса. Во-вторых, вы можете добавить `register: имя-ресурса` к задаче gcp_compute_network, а затем установить это поле network в "{{ имя-ресурса }}" | |
| priority целое число добавлено в 2.8 | Значение по умолчанию: "1000" | Приоритет для этого правила. Это целое число от 0 до 65535 включительно. Если не указано, используется значение 1000. Относительные приоритеты определяют преимущество конфликтующих правил. Более низкое значение приоритета означает более высокое преимущество (например, правило с приоритетом 0 имеет более высокое преимущество, чем правило с приоритетом 1). Правила DENY имеют приоритет над правилами ALLOW с одинаковым приоритетом. | |
| project строка | Проект Google Cloud Platform, который нужно использовать. | ||
| scopes список | Массив используемых областей. | ||
| service_account_contents jsonarg | Содержимое файла JSON учетной записи службы, либо в словаре, либо в строке JSON, которая его представляет. | ||
| service_account_email строка | Необязательный адрес электронной почты учетной записи службы, если выбран machineaccount и пользователь не хочет использовать адрес электронной почты по умолчанию. | ||
| service_account_file путь | Путь к файлу JSON учетной записи службы, если тип выбран как serviceaccount. | ||
| source_ranges список | Если указаны диапазоны источников, брандмауэр будет применяться только к трафику, у которого IP-адрес источника находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Можно установить либо sourceRanges, либо sourceTags, либо оба. Если установлены оба свойства, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра не требуется соответствие обоим свойствам. Поддерживается только IPv4. | ||
| source_service_accounts список добавлено в 2.8 | Если указаны учетные записи служб источников, брандмауэр будет применяться только к трафику, исходящему от виртуальной машины с учетной записью службы в этом списке. Учетные записи служб источников нельзя использовать для управления трафиком в адрес внешнего IP-адреса виртуальной машины, так как учетные записи служб связаны с виртуальной машиной, а не с IP-адресом. sourceRanges можно устанавливать одновременно с sourceServiceAccounts. Если оба свойства установлены, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит виртуальной машине с учетной записью службы, указанной в sourceServiceAccount. Для применения брандмауэра не требуется соответствие обоим свойствам. sourceServiceAccounts нельзя использовать одновременно с sourceTags или targetTags. | ||
| source_tags список | Если указаны теги источников, брандмауэр будет применяться только к трафику с IP-адресом источника, принадлежащим тегу в списке тегов источников. Теги источников нельзя использовать для управления трафиком в адрес внешнего IP-адреса виртуальной машины. Поскольку теги связаны с виртуальной машиной, а не с IP-адресом. Можно установить либо sourceRanges, либо sourceTags, либо оба. Если установлены оба свойства, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит тегу в списке sourceTags. Для применения брандмауэра не требуется соответствие обоим свойствам. | ||
| state строка |
| Указывает, должен ли данный объект существовать в GCP | |
| target_service_accounts список добавлено в 2.8 | Список учетных записей сервиса, указывающий на наборы виртуальных машин, находящихся в сети, которые могут осуществлять сетевые подключения, как указано в allowed[]. targetServiceAccounts нельзя использовать одновременно с targetTags или sourceTags. Если ни targetServiceAccounts, ни targetTags не указаны, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | ||
| target_tags список | Список тегов виртуальных машин, указывающий на наборы виртуальных машин, находящихся в сети, которые могут осуществлять сетевые подключения, как указано в allowed[]. Если targetTags не указаны, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | ||
Примечания
Примечание
- Ссылка на API: https://cloud.google.com/compute/docs/reference/v1/firewalls
- Официальная документация: https://cloud.google.com/vpc/docs/firewalls
- для аутентификации можно установить service_account_file с помощью переменной среды c(gcp_service_account_file).
- для аутентификации можно установить service_account_contents с помощью переменной среды c(GCP_SERVICE_ACCOUNT_CONTENTS).
- Для аутентификации можно установить service_account_email с помощью переменной среды
GCP_SERVICE_ACCOUNT_EMAIL. - Для аутентификации можно установить auth_kind с помощью переменной среды
GCP_AUTH_KIND. - Для аутентификации можно установить scopes с помощью переменной среды
GCP_SCOPES. - Значения переменных среды будут использоваться только в том случае, если значения в плейбуке не заданы.
- Параметры service_account_email и service_account_file взаимоисключающие.
Примеры
- name: create a firewall
gcp_compute_firewall:
name: test_object
allowed:
- ip_protocol: tcp
ports:
- '22'
target_tags:
- test-ssh-server
- staging-ssh-server
source_tags:
- test-ssh-clients
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
Значения возврата
Общие значения возврата документированы здесь, следующие — поля, уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание | |
|---|---|---|---|
| allowed complex | success | Список правил ALLOW, заданных этим брандмауэром. Каждое правило определяет кортеж протокола и диапазона портов, описывающий разрешенное подключение. | |
| ip_protocol string | success | Протокол IP, к которому применяется это правило. Тип протокола необходим при создании правила брандмауэра. Это значение может быть одной из следующих известных строк протокола (tcp, udp, icmp, esp, ah, sctp) или номером протокола IP. | |
| ports list | success | Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP или TCP. Каждый элемент должен быть либо целым числом, либо диапазоном. Если не указано, это правило применяется к подключениям через любой порт. Примеры входных данных: ["22"], ["80", "443"] и ["12345-12349"]. | |
| creationTimestamp string | success | Маркер времени создания в формате RFC3339. | |
| denied complex | success | Список правил DENY, заданных этим брандмауэром. Каждое правило определяет кортеж протокола и диапазона портов, описывающий запрещенное подключение. | |
| ip_protocol string | success | Протокол IP, к которому применяется это правило. Тип протокола необходим при создании правила брандмауэра. Это значение может быть одной из следующих известных строк протокола (tcp, udp, icmp, esp, ah, sctp) или номером протокола IP. | |
| ports list | success | Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP или TCP. Каждый элемент должен быть либо целым числом, либо диапазоном. Если не указано, это правило применяется к подключениям через любой порт. Примеры входных данных: ["22"], ["80","443"], и ["12345-12349"]. | |
| description string | success | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. | |
| destinationRanges list | success | Если указаны диапазоны назначения, брандмауэр будет применяться только к трафику, у которого IP-адрес назначения находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Поддерживается только IPv4. | |
| direction string | success | Направление трафика, к которому применяется этот брандмауэр; по умолчанию INGRESS. Примечание: для INGRESS-трафика НЕ поддерживается указание destinationRanges; для EGRESS-трафика НЕ поддерживается указание sourceRanges или sourceTags. | |
| disabled boolean | success | Указывает, отключено ли правило брандмауэра, т.е. не применяется к сети, с которой оно ассоциировано. Если установлено в значение true, правило брандмауэра не применяется, и сеть ведет себя так, как если бы его не существовало. Если это свойство не указано, правило брандмауэра будет включено. | |
| id integer | success | Уникальный идентификатор ресурса. | |
| name string | success | Имя ресурса. Предоставляется клиентом при создании ресурса. Имя должно быть длиной от 1 до 63 символов и соответствовать RFC1035. То есть, имя должно быть длиной от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`, что означает, что первый символ должен быть строчной буквой, а все последующие символы должны быть тире, строчной буквой или цифрой, за исключением последнего символа, который не может быть тире. | |
| network dictionary | success | URL ресурса сети для этого правила брандмауэра. Если при создании правила брандмауэра это свойство не указано, используется сеть по умолчанию: global/networks/default. Если вы хотите указать это свойство, вы можете указать сеть как полный или частичный URL. Например, следующие URL являются допустимыми: https://www.googleapis.com/compute/v1/projects/myproject/global/ networks/my-network projects/myproject/global/networks/my-network global/networks/default. | |
| priority integer | success | Приоритет этого правила. Это целое число от 0 до 65535 включительно. Если не указано, значение по умолчанию равно 1000. Относительные приоритеты определяют порядок следования при конфликтующих правилах. Меньшее значение приоритета означает более высокий приоритет (например, правило с приоритетом 0 имеет более высокий приоритет, чем правило с приоритетом 1). Правила DENY имеют приоритет над правилами ALLOW, имеющими равный приоритет. | |
| sourceRanges list | success | Если указаны диапазоны источников, брандмауэр будет применяться только к трафику, у которого IP-адрес источника находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Можно установить одно или оба свойства sourceRanges и sourceTags. Если оба свойства установлены, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра не нужно, чтобы соединение соответствовало обоим свойствам. Поддерживается только IPv4. | |
| sourceServiceAccounts list | success | Если указаны учетные записи сервисов источников, брандмауэр будет применяться только к трафику, исходящему из виртуальной машины с учетной записью сервиса в этом списке. Учетные записи сервисов источников нельзя использовать для управления трафиком к внешнему IP-адресу виртуальной машины, поскольку учетные записи сервисов связаны с виртуальной машиной, а не с IP-адресом. Можно одновременно установить sourceRanges и sourceServiceAccounts. Если оба установлены, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит виртуальной машине с учетной записью сервиса, указанной в sourceServiceAccount. Для применения брандмауэра не нужно, чтобы соединение соответствовало обоим свойствам. sourceServiceAccounts нельзя использовать одновременно с sourceTags или targetTags. | |
| sourceTags list | success | Если указаны теги источников, брандмауэр будет применяться только к трафику с IP-адресом источника, который принадлежит тегу, указанному в тегах источника. Теги источников нельзя использовать для управления трафиком к внешнему IP-адресу виртуальной машины, так как теги связаны с виртуальной машиной, а не с IP-адресом. Можно установить одно или оба свойства sourceRanges и sourceTags. Если оба свойства установлены, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра не нужно, чтобы соединение соответствовало обоим свойствам. | |
| targetServiceAccounts list | success | Список учетных записей сервисов, указывающих на наборы виртуальных машин, расположенных в сети, которые могут выполнять сетевые подключения, как указано в allowed[]. targetServiceAccounts нельзя использовать одновременно с targetTags или sourceTags. Если ни targetServiceAccounts, ни targetTags не указаны, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | |
| targetTags list | success | Список тегов виртуальных машин, указывающих на наборы виртуальных машин, расположенных в сети, которые могут выполнять сетевые подключения, как указано в allowed[]. Если не указаны targetTags, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | |
Статус
- Этот модуль не гарантирует обратную совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Google Inc. (@googlecloudplatform)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/gcp_compute_firewall_module.html