Ресурс google_compute_firewall
Синтаксис
Используется google_compute_firewall, чтобы протестировать ресурс брандмауэра Google.
Ресурс бета-версии
Этот ресурс имеет доступные поля бета-версии. Чтобы получить эти поля, включите 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- Если указаны диапазоны назначения, брандмауэр будет применяться только к трафику, у которого IP-адрес назначения находится в этих диапазонах. Эти диапазоны должны быть выражены в формате 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 Compute Engine API.
© 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/