ресурс aws_ecr_image
Используйте aws_ecr_image ресурс проверки InSpec, чтобы проверить свойства отдельного образа в репозитории AWS Elastic Container Registry (ECR). Этот ресурс доступен в пакете ресурсов InSpec AWS версии 1.11.0 и далее.
Синтаксис
Блок aws_ecr_image ресурса объявляет тесты для одного образа в репозитории AWS ECR по имени репозитория и идентификатору образа.
describe aws_ecr_image(repository_name: 'my-repo', image_tag: 'latest') do
it { should exist }
end
Параметры
Необходимо указать имя репозитория и идентификатор образа (либо image_tag или image_digest). Идентификатор реестра является необязательным.
repository_name (обязательно)
Имя репозитория ECR должно удовлетворять следующим ограничениям:
- Шаблон регулярного выражения
(?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*. - Длина от 2 до 256 символов.
image_tag (обязательно, если image_digest не предоставлен)
Тэг, используемый для образа. Его длина не должна превышать 300 символов.
image_digest (обязательно, если image_tag не предоставлен)
Хеш-значение sha256 образа манифеста. Он должен соответствовать шаблону регулярного выражения: [a-zA-Z0-9-_+.]+:[a-fA-F0-9]+.
registry_id (необязательно)
12-значный идентификатор AWS Elastic Container Registry. Если не указан, используется по умолчанию реестр.
Свойства
| Свойство | Описание |
|---|---|
| repository_name | Имя репозитория. |
| registry_id | Идентификатор учетной записи AWS, связанной с реестром, содержащим репозиторий. |
| tags | Список тегов, связанных с этим образом. |
| vulnerability_severity_counts | Количество уязвимостей образа, отсортированные по степени опасности, например: {:high=>1}. |
| vulnerabilities | Список хешей, где каждая пара ключ-значение соответствует результатам сканирования образа. Например: {:name=>"CVE-2019-14697", :uri=>"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697", :severity=>"HIGH", :package_version=>"1.1.18-r3", :package_name=>"musl", :CVSS2_VECTOR=>"AV:N/AC:L/Au:N/C:P/I:P/A:P", :CVSS2_SCORE=>"7.5"}
|
| cve_ids | Список CVE ID уязвимостей в образе. |
| highest_vulnerability_severity | Оценка CVSS v2 самой серьезной уязвимости в образе. |
Доступны и другие свойства. Для получения полного списка см. документацию API
Примеры
Проверка статуса сканирования образа
describe aws_ecr_image(repository_name: 'my-repo', image_tag: 'latest') do
its('image_scan_status.status') { should eq 'COMPLETE' }
end
Проверка, что у образа есть определенный тег
describe aws_ecr_image(repository_name: 'my-repo', image_digest: 'sha256:687fba9b76554c8dea4c40fed4144011f29b8e1d5db5f2fc976c64ed31894967') do
its('tags') { should include('latest') }
end
Проверка, что образ не содержит уязвимость Heartbleed
describe aws_ecr_image(repository_name: 'my-repo', image_tag: 'latest') do
its('cve_ids') { should_not include('CVE-2014-0160') }
end
Проверка, что образ не содержит уязвимость с серьезностью более CVSS v2 8
describe aws_ecr_image(repository_name: 'my-repo', image_tag: 'latest') do
its('highest_vulnerability_severity') { should be <= 8 }
end
Сопоставители
В этом ресурсе InSpec проверки есть следующие специальные сопоставители. Полный список доступных сопоставителей можно найти на нашей странице сопоставителей.
exist
describe aws_ecr_image(repository_name: 'my-repo', image_tag: 'latest') do
it { should exist }
end
Разрешения AWS
Вашему Принципалу потребуются разрешения ecr:DescribeImages и ecr:DescribeImageScanFindings.
Более подробная документация доступна по ссылкам: Действия, Ресурсы и Условия ключей для Amazon ECR, и Действия, Ресурсы и Условия ключей для Identity And Access Management.
© 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_ecr_image/