ресурс aws_elb
Используйте ресурс аудита InSpec aws_elb для проверки свойств отдельного балансировщика нагрузки AWS Elastic Load Balancing (ELB).
Синтаксис
Блок aws_elb ресурса объявляет тесты для отдельного балансировщика нагрузки AWS ELB по имени балансировщика. Имена балансировщиков AWS ELB уникальны для каждой области.
describe aws_elb('my-elb') do
it { should exist }
end
describe aws_elb(load_balancer_name: 'my-elb') do
it { should exist }
end
Параметры
load_balancer_name (обязательно)
Этот ресурс принимает один параметр — имя балансировщика ELB, которое однозначно идентифицирует балансировщик. Его можно передать либо в виде строки, либо как load_balancer_name: 'value' элемент пары «ключ-значение» в хэше.
См. также документацию AWS по Elastic Load Balancing.
Свойства
| Свойство | Описание |
|---|---|
| load_balancer_name | Имя балансировщика. |
| dns_name | DNS-имя балансировщика. |
| availability_zones | Зоны доступности для балансировщика. |
| instance_ids | Массив, содержащий все идентификаторы экземпляров, связанные с балансировщиком. |
| external_ports | Массив внешних портов, экспонированных на балансировщике. |
| internal_ports | Массив внутренних портов, экспонированных на балансировщике. |
| security_group_ids | Группы безопасности для балансировщика. Действительно только для балансировщиков в VPC. |
| vpc_id | Идентификатор VPC для балансировщика. |
| subnet_ids | Идентификаторы подсетей для балансировщика. |
| listeners | Коллекция слушателей для балансировщика. |
| ssl_policies | Коллекция SSL-политик, настроенных для балансировщика (и их атрибутов политики). |
| protocols | Список протоколов, настроенных для слушателей балансировщика. |
Примеры
Проверка правильной настройки зон доступности ELB
describe aws_elb('prod_web_app_elb') do
its('availability_zones.count') { should be > 1 }
its('availability_zones') { should include 'us-east-2a' }
its('availability_zones') { should include 'us-east-2b' }
end
Обеспечение правильного количества экземпляров EC2, связанных с ELB
describe aws_elb('prod_web_app_elb') do
its('instance_ids.count') { should cmp 3 }
end
Обеспечение правильного DNS
describe aws_elb('prod_web_app_elb') do
its('dns_name') { should cmp 'your-fqdn.com' }
end
Обеспечение экспонирования только порта 80, как для публичной, так и для внутренней сети
describe aws_elb('prod_web_app_elb') do
its('external_ports.count') { should cmp 1 }
its('external_ports') { should include 80 }
its('internal_ports.count') { should cmp 1 }
its('internal_ports') { should include 80 }
end
Обеспечение корректной привязки экземпляров EC2
describe aws_elb('prod_web_app_elb') do
its('instance_ids') { should include 'i-12345678' }
end
Сопоставители
В этом ресурсе аудита InSpec нет специальных сопоставителей. Полный список доступных сопоставителей можно найти на странице Универсальные сопоставители.
exist
Управление будет выполнено, если описание вернёт хотя бы один результат.
Используйте should_not для проверки, что сущность не должна существовать.
describe aws_elb('AnExistingELB') do
it { should exist }
end
describe aws_elb('ANonExistentELB') do
it { should_not exist }
end
Разрешения AWS
У вашего принципала должно быть разрешено действие elasticloadbalancing:DescribeLoadBalancers.
Более подробную документацию можно найти по адресу Аутентификация и контроль доступа для ваших балансировщиков
© 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/aws_elb/