модуль google.cloud.gcp_compute_firewall — создание брандмауэра GCP
Примечание
Этот модуль входит в коллекцию google.cloud (версия 1.13.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install google.cloud. Для работы с этим модулем требуются дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: google.cloud.gcp_compute_firewall.
Обзор
- Каждая сеть имеет собственный брандмауэр, контролирующий доступ к экземплярам и от них.
- Весь трафик к экземплярам, в том числе от других экземпляров, блокируется брандмауэром, если не созданы правила, разрешающие его.
- Для сети по умолчанию автоматически создаются правила брандмауэра, перечисленные в разделе правил брандмауэра по умолчанию. Для сетей, созданных вручную, правила брандмауэра автоматически не создаются, за исключением правила по умолчанию «разрешить» для исходящего трафика и правила по умолчанию «запретить» для входящего трафика. Для всех сетей, кроме сети по умолчанию, необходимо создать все нужные правила брандмауэра.
Требования
Следующие требования должны быть выполнены на узле, на котором запускается этот модуль.
- python >= 2.6
- requests >= 2.18.4
- google-auth >= 1.3.0
Параметры
Параметр | Комментарии |
|---|---|
access_token string | Токен доступа OAuth2, если тип учетных данных — accesstoken. |
allowed list / elements=dictionary | Список правил ALLOW, заданных этим брандмауэром. Каждое правило задает кортеж протокола и диапазона портов, описывающий разрешенное соединение. |
|
ip_protocol string / required |
IP-протокол, к которому применяется это правило. При создании правила брандмауэра тип протокола является обязательным. В качестве значения можно указать одну из следующих общепринятых строковых записей протокола (tcp, udp, icmp, esp, ah, sctp, ipip, all) или номер IP-протокола. |
|
ports list / elements=string |
Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP и TCP. Каждая запись должна быть целым числом или диапазоном. Если значение не указано, правило применяется к соединениям через любой порт. Примеры допустимых значений: [“22”], [“80”,”443”] и [“12345-12349”]. |
auth_kind string / required | Тип используемых учетных данных. Варианты:
|
denied list / elements=dictionary | Список правил DENY, заданных этим брандмауэром. Каждое правило задает кортеж протокола и диапазона портов, описывающий запрещенное соединение. |
|
ip_protocol string / required |
IP-протокол, к которому применяется это правило. При создании правила брандмауэра тип протокола является обязательным. В качестве значения можно указать одну из следующих общепринятых строковых записей протокола (tcp, udp, icmp, esp, ah, sctp, ipip, all) или номер IP-протокола. |
|
ports list / elements=string |
Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP и TCP. Каждая запись должна быть целым числом или диапазоном. Если значение не указано, правило применяется к соединениям через любой порт. Примеры допустимых значений: [“22”], [“80”,”443”] и [“12345-12349”]. |
description string | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. |
destination_ranges list / elements=string | Если указаны диапазоны адресов назначения, брандмауэр применяется только к трафику, IP-адрес назначения которого входит в эти диапазоны. Диапазоны должны быть указаны в формате CIDR. Поддерживается только IPv4. |
direction string | Направление трафика, к которому применяется этот брандмауэр; по умолчанию — INGRESS. Примечание: для трафика INGRESS указывать destinationRanges НЕ поддерживается; для трафика EGRESS указывать sourceRanges ИЛИ sourceTags НЕ поддерживается. Допустимые варианты: “INGRESS”, “EGRESS” |
disabled boolean | Указывает, отключено ли правило брандмауэра, то есть применяется ли оно к связанной с ним сети. Если установлено значение true, правило брандмауэра не применяется, и сеть ведет себя так, как если бы этого правила не существовало. Если значение не указано, правило брандмауэра будет включено. Варианты:
|
env_type string | Указывает среду Ansible, в которой выполняется этот модуль. Не задавайте это значение, если не знаете, что делаете. Параметр изменяет только строку User Agent для запросов API. |
log_config dictionary | Это поле задает параметры ведения журнала для конкретного правила брандмауэра. Если ведение журнала включено, журналы будут экспортироваться в Cloud Logging. |
|
enable boolean |
Это поле указывает, следует ли включить ведение журнала для конкретного правила брандмауэра. Если ведение журнала включено, журналы будут экспортироваться в Stackdriver. Варианты:
|
|
metadata string |
Это поле указывает, следует ли включать или исключать метаданные из журналов брандмауэра. Допустимые варианты: “EXCLUDE_ALL_METADATA”, “INCLUDE_ALL_METADATA” |
name string / required | Имя ресурса. Задается клиентом при создании ресурса. Имя должно содержать от 1 до 63 символов и соответствовать RFC1035. В частности, имя должно содержать от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`: первый символ должен быть строчной буквой, а все последующие символы — дефисом, строчной буквой или цифрой, за исключением последнего символа, которым не может быть дефис. |
network dictionary | 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: name-of-resource` в задачу gcp_compute_network, а затем присвоить полю network значение “{{ name-of-resource }}”. По умолчанию: |
priority integer | Приоритет этого правила. Это целое число от 0 до 65535 включительно. Если значение не указано, используется 1000. Относительные приоритеты определяют порядок применения конфликтующих правил. Чем меньше значение приоритета, тем выше приоритет (например, правило с приоритетом 0 имеет более высокий приоритет, чем правило с приоритетом 1). Правила DENY имеют приоритет над правилами ALLOW с таким же значением приоритета. По умолчанию: |
project string | Проект Google Cloud Platform, который следует использовать. |
scopes list / elements=string | Массив используемых областей действия |
service_account_contents jsonarg | Содержимое JSON-файла учетной записи службы — в виде словаря или JSON-строки, представляющей его. |
service_account_email string | Необязательный адрес электронной почты учетной записи службы, если выбран machineaccount и пользователь не хочет использовать адрес по умолчанию. |
service_account_file path | Путь к JSON-файлу учетной записи службы, если в качестве типа выбрано serviceaccount. |
source_ranges list / elements=string | Если указаны диапазоны адресов источника, брандмауэр применяется только к трафику, IP-адрес источника которого входит в эти диапазоны. Диапазоны должны быть указаны в формате CIDR. Можно задать sourceRanges, sourceTags или оба свойства. Если заданы оба свойства, брандмауэр применяется к трафику, IP-адрес источника которого входит в sourceRanges ИЛИ принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра соединение не обязано соответствовать обоим свойствам. Поддерживается только IPv4. |
source_service_accounts list / elements=string | Если указаны учетные записи службы источника, брандмауэр применяется только к трафику, поступающему от экземпляра, которому назначена учетная запись службы из этого списка. Учетные записи службы источника нельзя использовать для управления трафиком к внешнему IP-адресу экземпляра, поскольку учетные записи службы связаны с экземпляром, а не с IP-адресом. Одновременно с sourceServiceAccounts можно задать sourceRanges. Если заданы оба свойства, брандмауэр применяется к трафику, IP-адрес источника которого входит в sourceRanges ИЛИ принадлежит экземпляру с учетной записью службы, указанной в sourceServiceAccount. Для применения брандмауэра соединение не обязано соответствовать обоим свойствам. sourceServiceAccounts нельзя использовать одновременно с sourceTags или targetTags. |
source_tags list / elements=string | Если указаны теги источника, брандмауэр применяется только к трафику, IP-адрес источника которого связан с тегом из списка source tags. Теги источника нельзя использовать для управления трафиком к внешнему IP-адресу экземпляра, поскольку теги связаны с экземпляром, а не с IP-адресом. Можно задать sourceRanges, sourceTags или оба свойства. Если заданы оба свойства, брандмауэр применяется к трафику, IP-адрес источника которого входит в sourceRanges ИЛИ принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра соединение не обязано соответствовать обоим свойствам. |
state string | Должен ли указанный объект существовать в GCP Варианты:
|
target_service_accounts list / elements=string | Список учетных записей службы, указывающий наборы экземпляров в сети, которым разрешено устанавливать сетевые соединения, указанные в 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. - Для аутентификации можно задать access_token с помощью переменной окружения
GCP_ACCESS_TOKEN. - Для аутентификации можно задать auth_kind с помощью переменной окружения
GCP_AUTH_KIND. - Для аутентификации можно задать scopes с помощью переменной окружения
GCP_SCOPES. - Значения переменных окружения используются только в том случае, если значения в плейбуке не заданы.
- Параметры 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 | Список правил ALLOW, заданных этим брандмауэром. Каждое правило задаёт протокол и диапазон портов, определяющие разрешённое подключение. Возвращается: при успехе |
|
ip_protocol string |
IP-протокол, к которому применяется это правило. При создании правила брандмауэра необходимо указать тип протокола. Это значение может быть одной из следующих общепринятых строковых записей протоколов (tcp, udp, icmp, esp, ah, sctp, ipip, all) или номером IP-протокола. Возвращается: при успехе |
|
ports list / elements=string |
Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP и TCP. Каждый элемент должен быть целым числом или диапазоном. Если значение не указано, правило применяется к подключениям через любой порт. Примеры значений: [“22”], [“80”,”443”] и [“12345-12349”]. Возвращается: при успехе |
creationTimestamp string | Метка времени создания в текстовом формате RFC3339. Возвращается: при успехе |
denied complex | Список правил DENY, заданных этим брандмауэром. Каждое правило задаёт протокол и диапазон портов, определяющие запрещённое подключение. Возвращается: при успехе |
|
ip_protocol string |
IP-протокол, к которому применяется это правило. При создании правила брандмауэра необходимо указать тип протокола. Это значение может быть одной из следующих общепринятых строковых записей протоколов (tcp, udp, icmp, esp, ah, sctp, ipip, all) или номером IP-протокола. Возвращается: при успехе |
|
ports list / elements=string |
Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP и TCP. Каждый элемент должен быть целым числом или диапазоном. Если значение не указано, правило применяется к подключениям через любой порт. Примеры значений: [“22”], [“80”,”443”] и [“12345-12349”]. Возвращается: при успехе |
description string | Необязательное описание этого ресурса. Укажите это свойство при создании ресурса. Возвращается: при успехе |
destinationRanges list / elements=string | Если указаны диапазоны адресов назначения, брандмауэр применяется только к трафику, IP-адрес назначения которого входит в эти диапазоны. Диапазоны должны быть указаны в формате CIDR. Поддерживается только IPv4. Возвращается: при успехе |
direction string | Направление трафика, к которому применяется этот брандмауэр; по умолчанию используется INGRESS. Примечание: для входящего трафика (INGRESS) указывать destinationRanges нельзя; для исходящего трафика (EGRESS) указывать sourceRanges ИЛИ sourceTags нельзя. Возвращается: при успехе |
disabled boolean | Указывает, отключено ли правило брандмауэра, то есть применяется ли оно к связанной с ним сети. Если установлено значение true, правило брандмауэра не действует, и сеть ведёт себя так, как будто такого правила не существует. Если значение не указано, правило брандмауэра будет включено. Возвращается: при успехе |
id integer | Уникальный идентификатор ресурса. Возвращается: при успехе |
logConfig complex | Это поле содержит параметры ведения журнала для конкретного правила брандмауэра. Если ведение журнала включено, журналы будут экспортироваться в Cloud Logging. Возвращается: при успехе |
|
enable boolean |
Это поле указывает, следует ли включить ведение журнала для конкретного правила брандмауэра. Если ведение журнала включено, журналы будут экспортироваться в Stackdriver. Возвращается: при успехе |
|
metadata string |
Это поле указывает, следует ли включать или исключать метаданные из журналов брандмауэра. Возвращается: при успехе |
name string | Имя ресурса. Задаётся клиентом при создании ресурса. Имя должно содержать от 1 до 63 символов и соответствовать RFC1035. В частности, имя должно содержать от 1 до 63 символов и соответствовать регулярному выражению `[a-z]([-a-z0-9]*[a-z0-9])?`: первый символ должен быть строчной буквой, а все последующие символы — дефисом, строчной буквой или цифрой, за исключением последнего символа, которым не может быть дефис. Возвращается: при успехе |
network dictionary | 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 | Приоритет этого правила. Это целое число от 0 до 65535 включительно. Если значение не указано, предполагается значение 1000. Относительные приоритеты определяют порядок применения конфликтующих правил. Чем меньше значение приоритета, тем выше приоритет (например, правило с приоритетом 0 имеет более высокий приоритет, чем правило с приоритетом 1). Правила DENY имеют преимущество перед правилами ALLOW с таким же приоритетом. Возвращается: при успехе |
sourceRanges list / elements=string | Если указаны диапазоны адресов источника, брандмауэр применяется только к трафику, IP-адрес источника которого входит в эти диапазоны. Диапазоны должны быть указаны в формате CIDR. Можно задать sourceRanges, sourceTags или оба свойства. Если заданы оба свойства, брандмауэр применяется к трафику, IP-адрес источника которого входит в sourceRanges ИЛИ принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра подключению не обязательно соответствовать обоим свойствам. Поддерживается только IPv4. Возвращается: при успехе |
sourceServiceAccounts list / elements=string | Если указаны исходные сервисные аккаунты, брандмауэр применяется только к трафику, исходящему от экземпляра с сервисным аккаунтом из этого списка. Исходные сервисные аккаунты нельзя использовать для управления трафиком к внешнему IP-адресу экземпляра, поскольку сервисные аккаунты связаны с экземпляром, а не с IP-адресом. sourceRanges можно задать одновременно с sourceServiceAccounts. Если заданы оба свойства, брандмауэр применяется к трафику, IP-адрес источника которого входит в sourceRanges ИЛИ принадлежит экземпляру с сервисным аккаунтом, указанным в sourceServiceAccount. Для применения брандмауэра подключению не обязательно соответствовать обоим свойствам. sourceServiceAccounts нельзя использовать одновременно с sourceTags или targetTags. Возвращается: при успехе |
sourceTags list / elements=string | Если указаны исходные теги, брандмауэр применяется только к трафику, IP-адрес источника которого принадлежит тегу из списка исходных тегов. Исходные теги нельзя использовать для управления трафиком к внешнему IP-адресу экземпляра, поскольку теги связаны с экземпляром, а не с IP-адресом. Можно задать sourceRanges, sourceTags или оба свойства. Если заданы оба свойства, брандмауэр применяется к трафику, IP-адрес источника которого входит в sourceRanges ИЛИ принадлежит тегу, указанному в свойстве sourceTags. Для применения брандмауэра подключению не обязательно соответствовать обоим свойствам. Возвращается: при успехе |
targetServiceAccounts list / elements=string | Список сервисных аккаунтов, определяющих группы экземпляров в сети, которым разрешено устанавливать сетевые подключения согласно allowed[]. targetServiceAccounts нельзя использовать одновременно с targetTags или sourceTags. Если не указаны ни targetServiceAccounts, ни targetTags, правило брандмауэра применяется ко всем экземплярам в указанной сети. Возвращается: при успехе |
targetTags list / elements=string | Список тегов экземпляров, определяющих группы экземпляров в сети, которым разрешено устанавливать сетевые подключения согласно allowed[]. Если targetTags не указаны, правило брандмауэра применяется ко всем экземплярам в указанной сети. Возвращается: при успехе |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/google/cloud/gcp_compute_firewall_module.html