Ресурс google_compute_firewall
Синтаксис
Для проверки ресурса Google Firewall используется google_compute_firewall
Ресурс Beta
Этот ресурс имеет доступные поля beta. Чтобы получить доступ к этим полям, добавьте beta: true в конструктор ресурса.
Примеры
describe google_compute_firewall(project: 'chef-gcp-inspec', name: 'inspec-gcp-firewall') do
its('direction') { should cmp 'INGRESS' }
its('log_config_enabled?') { should be true }
its('source_tags') { should include 'some-tag' }
end
Проверка, что брандмауэр GCP позволяет доступ SSH по порту 22
describe google_compute_firewall(project: 'chef-inspec-gcp', name: 'firewall-rule') do
its('allowed_ssh?') { should be true }
end
Проверка, что брандмауэр GCP не позволяет доступ HTTP по порту 80
describe google_compute_firewall(project: 'chef-inspec-gcp', name: 'firewall-rule') do
its('allowed_http?') { should be false }
end
Проверка, что брандмауэр GCP позволяет доступ HTTPS по порту 443
describe google_compute_firewall(project: 'chef-inspec-gcp', name: 'firewall-rule') do
its('allowed_https?') { should be true }
end
Проверка направления трафика брандмауэра GCP (например, "INGRESS" или "EGRESS")
describe google_compute_firewall(project: 'chef-inspec-gcp', name: 'firewall-rule') do
its('direction') { should eq "INGRESS" }
end
Проверка, что список диапазонов исходных IP-адресов брандмауэра GCP не открыт для всего мира
describe google_compute_firewall(project: 'chef-inspec-gcp', name: 'firewall-rule') do
its('source_ranges') { should_not eq ["0.0.0.0/0"] }
# or using helpers
its('direction') { should eq "INGRESS" }
it { should_not allow_ip_ranges ["0.0.0.0/0"] }
end
Проверка наличия порта/протокола для данного правила брандмауэра
describe google_compute_firewall(project: 'chef-inspec-gcp', name: 'firewall-rule') do
# similar to the http / ssh helpers above
it { should_not allow_port_protocol("22", "tcp") }
it { should allow_port_protocol("80", "tcp") }
end
Проверка, разрешает ли правило брандмауэра ingress/egress для указанных тегов
describe google_compute_firewall(project: 'chef-inspec-gcp', name: 'firewall-rule') do
its('direction') { should eq "INGRESS" }
it { should allow_source_tags ["allow-gcp-tag"] }
it { should allow_target_tags ["allow-gcp-other-tag"] }
# stricter
it { should allow_source_tags_only ["allow-gcp-tag"] }
it { should allow_target_tags_only ["allow-gcp-other-tag"] }
end
Свойства
Свойства, доступные из ресурса google_compute_firewall:
allowed- Список правил ALLOW, заданных этим брандмауэром. Каждое правило определяет тройку протокол/порт/диапазон портов, описывающую разрешённое соединение.
ip_protocol- IP-протокол, к которому применяется это правило. Тип протокола требуется при создании правила брандмауэра. Это значение может быть одним из следующих известных строк протоколов (tcp, udp, icmp, esp, ah, sctp, ipip) или номером IP-протокола.
ports- Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP или TCP. Каждое значение должно быть целым числом или диапазоном. Если не указано, правило применяется к подключениям через любой порт. Примеры включают: [“22”], [“80”,“443”] и [“12345-12349”].
creation_timestamp- Дата и время создания в формате RFC3339.
denied- Список правил DENY, заданных этим брандмауэром. Каждое правило определяет тройку протокол/порт/диапазон портов, описывающую запрещённое соединение.
ip_protocol- IP-протокол, к которому применяется это правило. Тип протокола требуется при создании правила брандмауэра. Это значение может быть одним из следующих известных строк протоколов (tcp, udp, icmp, esp, ah, sctp, ipip) или номером IP-протокола.
ports- Необязательный список портов, к которым применяется это правило. Это поле применимо только для протоколов UDP или TCP. Каждое значение должно быть целым числом или диапазоном. Если не указано, правило применяется к подключениям через любой порт. Примеры включают: [“22”], [“80”,“443”] и [“12345-12349”].
description- Необязательное описание этого ресурса. Укажите это свойство при создании ресурса.
destination_ranges- Если указаны диапазоны назначения, брандмауэр будет применяться только к трафику с адресом назначения в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Поддерживается только IPv4.
direction- Направление трафика, к которому применяется этот брандмауэр; значение по умолчанию — INGRESS. Примечание: для INGRESS-трафика не поддерживается указание destinationRanges; для EGRESS-трафика не поддерживается указание sourceRanges или sourceTags.
Возможные значения:
- INGRESS
- EGRESS
disabled- Указывает, отключено ли правило брандмауэра, т.е. не применяется ли оно к сети, с которой оно ассоциировано. Если установлено в значение true, правило брандмауэра не применяется, и сеть ведет себя так, как будто его нет. Если это свойство не указано, правило брандмауэра включено.
log_config- Это поле указывает, включено ли ведение журнала для конкретного правила брандмауэра. Если ведение журнала включено, журналы будут экспортированы в Stackdriver.
enable_logging- Это поле указывает, включено ли ведение журнала для конкретного правила брандмауэра. Если ведение журнала включено, журналы будут экспортированы в Stackdriver.
id- Уникальный идентификатор ресурса.
name- Имя ресурса. Предоставляется клиентом при создании ресурса. Имя должно быть длиной от 1 до 63 символов и соответствовать RFC1035. То есть, длина должна быть от 1 до 63 символов, и оно должно соответствовать регулярному выражению
[a-z]([-a-z0-9]*[a-z0-9])?, что означает, что первый символ должен быть строчной буквой, а все последующие символы — дефисом, строчной буквой или цифрой, за исключением последнего символа, который не может быть дефисом. network- 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- Приоритет для этого правила. Это целое число от 0 до 65535 включительно. Если не указано, используется значение 1000. Относительные приоритеты определяют приоритет конфликтующих правил. Более низкое значение приоритета означает более высокий приоритет (например, правило с приоритетом 0 имеет более высокий приоритет, чем правило с приоритетом 1). Правила DENY имеют приоритет над правилами ALLOW с одинаковым приоритетом.
source_ranges- Если указаны диапазоны исходных адресов, брандмауэр будет применяться только к трафику, у которого исходный IP-адрес находится в этих диапазонах. Эти диапазоны должны быть выражены в формате CIDR. Поддерживается только 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. Для применения брандмауэра не требуется соответствие обоим свойствам.
target_service_accounts- Список учётных записей сервисов, указывающий наборы экземпляров, расположенных в сети, которые могут устанавливать сетевые подключения, как указано в allowed. targetServiceAccounts нельзя использовать одновременно с targetTags или sourceTags. Если ни targetServiceAccounts, ни targetTags не указаны, правило брандмауэра применяется ко всем экземплярам в указанной сети.
target_tags- Список тегов экземпляров, указывающий наборы экземпляров, расположенных в сети, которые могут устанавливать сетевые подключения, как указано в allowed. Если targetTags не указаны, правило брандмауэра применяется ко всем экземплярам в указанной сети.
Разрешения GCP
Убедитесь, что API Compute Engine включен для текущего проекта.
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/google_compute_firewall/