google.cloud.gcp_compute_firewall – Создаёт брандмауэр GCP
Примечание
Этот плагин входит в сборку google.cloud (версия 1.0.2).
Для его установки используйте: ansible-galaxy collection install google.cloud
Для использования в книге задач укажите: google.cloud.gcp_compute_firewall
Обзор
- Каждый сетевой интерфейс имеет собственный брандмауэр, контролирующий доступ к виртуальным машинам.
- Весь трафик к виртуальным машинам, даже от других виртуальных машин, блокируется брандмауэром, если не созданы правила брандмауэра, разрешающие его.
- В сети по умолчанию автоматически созданы правила брандмауэра, которые отображаются в правилах брандмауэра по умолчанию. В ручном режиме созданные сети не имеют автоматически созданных правил брандмауэра, за исключением правила «разрешить» исходящий трафик и правила «заблокировать» входящий трафик. Для всех сетей, кроме сети по умолчанию, необходимо создать любые необходимые правила брандмауэра.
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- python >= 2.6
- requests >= 2.18.4
- google-auth >= 1.3.0
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| allowed список / элементы=словарь | Список правил ALLOW, заданных этим брандмауэром. Каждое правило определяет кортеж из протокола и диапазона портов, описывающий разрешённое соединение. | ||
| ip_protocol строка / обязательно | IP-протокол, к которому относится это правило. Тип протокола требуется при создании правила брандмауэра. Это значение может быть одной из следующих известных строк протоколов (tcp, udp, icmp, esp, ah, sctp, ipip, all), или номером IP-протокола. | ||
| ports список / элементы=строка | Необязательный список портов, к которым относится это правило. Это поле применимо только для протоколов UDP или TCP. Каждый элемент должен быть целым числом или диапазоном. Если не указано, это правило применяется к соединениям через любой порт. Примеры ввода: ["22"], ["80","443"] и ["12345-12349"]. | ||
| auth_kind строка / обязательно |
| Тип используемых учетных данных. | |
| denied список / элементы=словарь | Список правил DENY, заданных этим брандмауэром. Каждое правило определяет кортеж из протокола и диапазона портов, описывающий запрещённое соединение. | ||
| ip_protocol строка / обязательно | IP-протокол, к которому относится это правило. Тип протокола требуется при создании правила брандмауэра. Это значение может быть одной из следующих известных строк протоколов (tcp, udp, icmp, esp, ah, sctp, ipip, all), или номером IP-протокола. | ||
| ports список / элементы=строка | Необязательный список портов, к которым относится это правило. Это поле применимо только для протоколов UDP или TCP. Каждый элемент должен быть целым числом или диапазоном. Если не указано, это правило применяется к соединениям через любой порт. Примеры ввода: ["22"], ["80","443"] и ["12345-12349"]. | ||
| description строка | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. | ||
| destination_ranges список / элементы=строка | Если указаны диапазоны назначения, брандмауэр будет применяться только к трафику, у которого IP-адрес назначения находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Поддерживается только IPv4. | ||
| direction строка | Направление трафика, к которому применяется этот брандмауэр; значение по умолчанию — INGRESS. Примечание: для INGRESS-трафика не поддерживается указание destinationRanges; для EGRESS-трафика не поддерживается указание sourceRanges или sourceTags. Некоторые допустимые значения: "INGRESS", "EGRESS" | ||
| disabled булево |
| Указывает, отключено ли правило брандмауэра, т.е. не применяется ли оно к сети, с которой оно связано. Если значение true, правило брандмауэра не применяется, и сеть ведет себя так, как если бы оно не существовало. Если не указано, правило брандмауэра будет включено. | |
| env_type строка | Указывает, в какой среде Ansible вы выполняете этот модуль. Это значение не следует устанавливать, если вы не знаете, что делаете. Это влияет только на строку User Agent для всех запросов к API. | ||
| log_config словарь | Это поле обозначает параметры ведения журнала для конкретного правила брандмауэра. Если ведение журнала включено, журналы будут экспортированы в Cloud Logging. | ||
| enable булево |
| Это поле указывает, нужно ли включить ведение журнала для данного правила брандмауэра. Если ведение журнала включено, журналы будут экспортированы в Stackdriver. | |
| metadata строка | Это поле указывает, включать или исключать метаданные для журналов брандмауэра. Некоторые допустимые значения: "EXCLUDE_ALL_METADATA", "INCLUDE_ALL_METADATA" | ||
| 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 . Это поле представляет собой ссылку на ресурс сети GCP. Его можно указать двумя способами. Во-первых, вы можете поместить словарь с ключом 'selfLink' и значением selfLink вашего ресурса. Во-вторых, вы можете добавить `register: name-of-resource` к задаче gcp_compute_network, а затем установить это поле network в "{{ name-of-resource }}" | |
| priority целое число | По умолчанию: "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 список / элементы=строка | Если указаны учетные записи служб источника, брандмауэр будет применяться только к трафику, исходящему от виртуальной машины с учетной записью службы в этом списке. Учетные записи служб источника нельзя использовать для управления трафиком к внешнему 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 список / элементы=строка | Список учетных записей служб, указывающий на наборы виртуальных машин, расположенных в сети, которые могут устанавливать сетевые подключения, как указано в allowed[]. targetServiceAccounts нельзя использовать одновременно с targetTags или sourceTags. Если не указаны ни targetServiceAccounts, ни targetTags, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | ||
| target_tags list / elements=string | Список тегов экземпляров, указывающих на наборы экземпляров, расположенных в сети, которые могут осуществлять сетевые подключения, как указано в allowed[]. Если targetTags не указаны, правило брандмауэра применяется ко всем экземплярам в указанной сети. | ||
Примечания
Примечание
- Справочник API: https://cloud.google.com/compute/docs/reference/v1/firewalls
- Официальная документация: https://cloud.google.com/vpc/docs/firewalls
- для аутентификации можно установить service_account_file, используя переменную среды
gcp_service_account_file. - для аутентификации можно установить service_account_contents, используя переменную среды
GCP_SERVICE_ACCOUNT_CONTENTS. - Для аутентификации можно установить service_account_email, используя переменную среды
GCP_SERVICE_ACCOUNT_EMAIL. - Для аутентификации можно установить auth_kind, используя переменную среды
GCP_AUTH_KIND. - Для аутентификации можно установить scopes, используя переменную среды
GCP_SCOPES. - Значения переменных среды будут использованы только в том случае, если значения в playbook не заданы.
- Параметры service_account_email и service_account_file взаимоисключающие.
Примеры
- name: create a firewall
google.cloud.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, ipip, all), или номером IP-протокола. | |
| ports list / elements=string | 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, ipip, all), или номером IP-протокола. | |
| ports list / elements=string | success | Необязательный список портов, к которым относится это правило. Это поле применимо только для UDP или TCP протоколов. Каждый элемент должен быть либо целым числом, либо диапазоном. Если не указано, это правило применяется к соединениям через любой порт. Примеры включают: ["22"], ["80","443"] и ["12345-12349"]. | |
| description string | success | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. | |
| destinationRanges list / elements=string | success | Если указаны диапазоны назначения, брандмауэр будет применяться только к трафику, у которого IP-адрес назначения находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Поддерживается только IPv4. | |
| direction string | success | Направление трафика, к которому применяется этот брандмауэр; значение по умолчанию - ВХОДЯЩИЙ. Примечание: для входного трафика не поддерживается указание destinationRanges; для исходящего трафика не поддерживается указание sourceRanges или sourceTags. | |
| disabled boolean | success | Указывает, отключено ли правило брандмауэра, т.е. не применяется ли оно к сети, с которой оно связано. При значении true правило брандмауэра не применяется, и сеть ведет себя так, как будто его не существует. Если не указано, правило брандмауэра будет включено. | |
| id integer | success | Уникальный идентификатор ресурса. | |
| logConfig complex | success | Это поле обозначает параметры ведения журнала для определённого правила брандмауэра. Если ведение журнала включено, журналы будут экспортированы в Cloud Logging. | |
| enable boolean | success | Это поле обозначает, включено ли ведение журнала для определённого правила брандмауэра. Если ведение журнала включено, журналы будут экспортированы в Stackdriver. | |
| metadata string | success | Это поле обозначает, следует ли включать или исключать метаданные для журналов брандмауэра. | |
| name string | success | Имя ресурса. Предоставляется клиентом при создании ресурса. Имя должно иметь длину от 1 до 63 символов и соответствовать RFC1035. То есть, имя должно иметь длину от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`, что означает, что первый символ должен быть строчной буквой, а все последующие символы должны быть тире, строчной буквой или цифрой, за исключением последнего символа, который не может быть тире. | |
| network dictionary | success | URL ресурса сети для этого правила брандмауэра. Если при создании правила брандмауэра не указано, используется сеть по умолчанию: global/networks/default. Если вы решите указать это свойство, вы можете указать сеть как полную, так и частичную ссылку. Например, следующие ссылки являются допустимыми: 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 / elements=string | success | Если указаны диапазоны источников, брандмауэр будет применяться только к трафику, у которого IP-адрес источника находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Можно указать либо sourceRanges, либо sourceTags, либо оба. Если оба свойства указаны, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра не требуется соответствие обоим свойствам. Поддерживается только IPv4. | |
| sourceServiceAccounts list / elements=string | success | Список учётных записей сервисов, указывающих на наборы виртуальных машин, расположенных в сети, которые могут устанавливать сетевые подключения, как указано в allowed[]. sourceServiceAccounts нельзя использовать одновременно с sourceTags или targetTags. Если не указаны ни sourceServiceAccounts, ни targetTags, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | |
| sourceTags list / elements=string | success | Если указаны теги источников, брандмауэр будет применяться только к трафику с IP-адресом источника, принадлежащим тегу, указанному в тегах источника. Теги источников нельзя использовать для управления трафиком в внешний IP-адрес виртуальной машины. Поскольку теги связаны с виртуальной машиной, а не с IP-адресом. Можно указать либо sourceRanges, либо sourceTags, либо оба. Если оба свойства указаны, брандмауэр будет применяться к трафику, у которого IP-адрес источника находится в sourceRanges ИЛИ IP-адрес источника принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра не требуется соответствие обоим свойствам. | |
| targetServiceAccounts list / elements=string | success | Список учётных записей сервисов, указывающих на наборы виртуальных машин, расположенных в сети, которые могут устанавливать сетевые подключения, как указано в allowed[]. targetServiceAccounts нельзя использовать одновременно с targetTags или sourceTags. Если не указаны ни targetServiceAccounts, ни targetTags, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | |
| targetTags list / elements=string | success | Список тегов виртуальных машин, указывающих на наборы виртуальных машин, расположенных в сети, которые могут устанавливать сетевые подключения, как указано в allowed[]. Если не указаны targetTags, правило брандмауэра применяется ко всем виртуальным машинам в указанной сети. | |
Авторы
- Google Inc. (@googlecloudplatform)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/google/cloud/gcp_compute_firewall_module.html