Якорный двигатель - плагин Jenkins CI - PullRequest
0 голосов
/ 12 октября 2018

Мы пытаемся отсканировать наши образы докеров с помощью плагина Anchore Engine Jenkins.

В настоящее время мы создаем образы докеров наших приложений, помещаем их в наш собственный локальный реестр и затем внедряем в наших тестовых средах.

Теперь мы хотим настроить сканирование образа докера в нашем процессе CI / CD для проверки на наличие уязвимостей.

Мы установили Anchore Engine, используя рекомендованный метод yaml Docker-Compose, указанный в ссылке Документация:https://anchore.freshdesk.com/support/solutions/articles/36000020729-install-on-docker-swarm

После установки мы установили подключаемый модуль
Anchore Container Image Scanner в Jenkins.

Мы настроили подключаемый модуль, как указано в ссылке на документ: https://wiki.jenkins.io/display/JENKINS/Anchore+Container+Image+Scanner+Plugin

Однако сканирование не удалось.Сообщение об ошибке выглядит следующим образом:

2018-10-11T07:01:44.647 INFO   AnchoreWorker   Analysis request accepted, received image digest sha256:7d6fb7e5e7a74a4309cc436f6d11c29a96cbf27a4a8cb45a50cb0a326dc32fe8
2018-10-11T07:01:44.647 INFO   AnchoreWorker   Waiting for analysis of 10.180.25.2:5000/hello-world:latest, polling status periodically
2018-10-11T07:01:44.647 DEBUG  AnchoreWorker   anchore-engine get policy evaluation URL: http://10.180.25.2:8228/v1/images/sha256:7d6fb7e5e7a74a4309cc436f6d11c29a96cbf27a4a8cb45a50cb0a326dc32fe8/check?tag=10.180.25.2:5000/hello-world:latest&detail=true
2018-10-11T07:01:44.648 DEBUG  AnchoreWorker   Attempting anchore-engine get policy evaluation (1/300)
2018-10-11T07:01:44.675 DEBUG  AnchoreWorker   anchore-engine get policy evaluation failed. URL: http://10.180.25.2:8228/v1/images/sha256:7d6fb7e5e7a74a4309cc436f6d11c29a96cbf27a4a8cb45a50cb0a326dc32fe8/check?tag=10.180.25.2:5000/hello-world:latest&detail=true, status: HTTP/1.1 404 NOT FOUND, error: {
  "detail": {}, 
  "httpcode": 404, 
  "message": "image is not analyzed - analysis_status: not_analyzed"
}

ПРИМЕЧАНИЕ. В образе TAG 10.180.25.2:5000/hello-world:latest, 10.180.25.2:5000 - это наш локальный частный реестр, а hello-world:latest - это последний образ hello-world, доступный в док-хабе, который мы извлекли и нажалив нашем реестре, чтобы попробовать сканирование изображений с помощью Anchore-Engine.

К сожалению, мы не можем найти много ресурсов в Интернете, чтобы попытаться решить вышеупомянутую проблему.

Любой, кто мог работать надAnchore-Engine, пожалуйста, могу ли я попросить вас посмотреть и помочь нам решить эту проблему.

Кроме того, любые предложения или альтернативы для Anchore-Engine или подробные шаги на случай, если мы что-то упустили, будут очень благодарны.

Конец вывода выглядит следующим образом:

2018-10-15T00:48:43.880 WARN AnchoreWorker anchore-engine get policy evaluation failed. HTTP method: GET, URL: http://10.180.25.2:8228/v1/images/sha256:7d6fb7e5e7a74a4309cc436f6d11c29a96cbf27a4a8cb45a50cb0a326dc32fe8/check?tag=10.180.25.2:5000/hello-world:latest&detail=true, status: 404, error: {
"detail": {},
"httpcode": 404,
"message": "image is not analyzed - analysis_status: not_analyzed"
}

2018-10-15T00:48:43.880 WARN AnchoreWorker Exhausted all attempts polling anchore-engine. Analysis is incomplete for sha256:7d6fb7e5e7a74a4309cc436f6d11c29a96cbf27a4a8cb45a50cb0a326dc32fe8
2018-10-15T00:48:43.880 ERROR AnchorePlugin Failing Anchore Container Image Scanner Plugin step due to errors in plugin execution
hudson.AbortException: Timed out waiting for anchore-engine analysis to complete (increasing engineRetries might help). Check above logs for errors from anchore-engine
at com.anchore.jenkins.plugins.anchore.BuildWorker.runGatesEngine(BuildWorker.java:480)
at com.anchore.jenkins.plugins.anchore.BuildWorker.runGates(BuildWorker.java:343)
at com.anchore.jenkins.plugins.anchore.AnchoreBuilder.perform(AnchoreBuilder.java:338)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1724)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:421)

Я также проверил состояние и нашел ниже:

docker run anchore/engine-cli:latest anchore-cli --u admin --p admin123 --url http://172.18.0.1:8228/v1 system status
Service analyzer (dockerhostid-anchore-engine, http://anchore-engine:8084): up
Service catalog (dockerhostid-anchore-engine, http://anchore-engine:8082): up
Service policy_engine (dockerhostid-anchore-engine, http://anchore-engine:8087): down (unavailable)
Service simplequeue (dockerhostid-anchore-engine, http://anchore-engine:8083): up
Service apiext (dockerhostid-anchore-engine, http://anchore-engine:8228): up
Service kubernetes_webhook (dockerhostid-anchore-engine, http://anchore-engine:8338): up

Версия базы данных двигателя: 0.0.7 Версия кода двигателя: 0.2.4

Кажется, что механизм политики обслуживания не работает

Служба policy_engine (dockerhostid-anchore-engine, http://anchore-движок: 8087 ): вниз (недоступно)

Я также проверил логи докера.Я нашел ниже ошибку:

[service:policy_engine] 2018-10-15 09:37:46+0000 [-] [bootstrap] [DEBUG] service (policy_engine) starting in: 4
[service:policy_engine] 2018-10-15 09:37:46+0000 [-] [bootstrap] [INFO] Registration complete.
[service:policy_engine] 2018-10-15 09:37:46+0000 [-] [bootstrap] [INFO] Checking feeds client credentials
[service:policy_engine] 2018-10-15 09:37:46+0000 [-] [bootstrap] [DEBUG] Initializing a feeds client
[service:policy_engine] 2018-10-15 09:37:47+0000 [-] [bootstrap] [DEBUG] init values: [None, None, None, (), None, None]
[service:policy_engine] 2018-10-15 09:37:47+0000 [-] [bootstrap] [DEBUG] using values: ['https://ancho.re/v1/service/feeds', 'https://ancho.re/oauth/token', 'https://ancho.re/v1/account/users', 'anon@ancho.re', 3, 60]
[service:policy_engine] 2018-10-15 09:37:47+0000 [-] [urllib3.connectionpool] [DEBUG] Starting new HTTPS connection (1): ancho.re
[service:policy_engine] 2018-10-15 09:37:50+0000 [-] [bootstrap] [ERROR] Preflight checks failed with error: HTTPSConnectionPool(host='ancho.re', port=443): Max retries exceeded with url: /v1/account/users/anon@ancho.re (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7ffa905f0b90>: Failed to establish a new connection: [Errno 113] No route to host',)). Aborting service startup
Traceback (most recent call last):
 File "/usr/lib/python2.7/site-packages/anchore_manager/cli/service.py", line 158, in startup_service
   raise Exception("process exited: " + str(rc))
Exception: process exited: 1
[anchore-policy-engine] [anchore_manager.cli.service/startup_service()] [INFO] service process exited at (Mon Oct 15 09:37:50 2018): process exited: 1
[anchore-policy-engine] [anchore_manager.cli.service/startup_service()] [INFO] exiting service thread

Спасибо и С уважением,

Рохан Шетти

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Мы решили проблему.

Основная причина:

Нам не удалось установить успешное соединение https с URL: https://ancho.re св докерном контейнере с якорным двигателем.В результате служба: policy_engine не смогла запуститься.

https://ancho.re требуется для периодической загрузки каналов политики и синхронизации.Без этой политики механизм привязки не сможет анализировать образы докера.

Решение:

1) Мы передали HTTPS_PROXY URL-адрес в качестве переменной среды вdocker-compose.yaml из anchore-engine.

Мы использовали этот прокси-URL, чтобы обойти ограничения в нашей среде и установить соединение с https://ancho.re url.

2) ПерезапустилDocker контейнеры.

Наконец-то мы запустили все службы, включая Anchore policy-engine.

К вашему сведению: загрузка всех необходимых каналов в зависимости от скорости вашего интернета занимает некоторое время.

Наконец, спасибо сообществу Anchore за быстрые ответы и поддержку по поводу слабины.

Надеюсь, это поможет.

С уважением,

Рохан Шетти

0 голосов
/ 13 октября 2018

Когда изображения добавляются в механизм привязки, они ставятся в очередь для анализа, который перемещает их через простой конечный автомат, который начинается с «not_analyzed», переходит к «анализу» и, наконец, заканчивается либо «проанализирован», либо «analysis_failed».Только после того, как изображение достигло «проанализированного», будет возможна оценка политики.

Плагин anchore Jenkins добавит изображение, а затем запросит механизм проверки состояния изображения / оценки для настроенного количества попыток (по умолчанию 300).,Как только изображение перейдет к «проанализированному» (где возможна оценка политики), плагин получит результат оценки политики от механизма.

Плагин не выполнит сборку (по умолчанию), если максимальное число повторовбыло выполнено, и изображение не дошло до «проанализировано», если изображение доходит до «проанализировано», но оценка политики выдает результат «сбой» (то есть изображение не прошло настроенные проверки политики).Обратите внимание, что все поведение при сбое сборки можно контролировать в плагине (т. Е. Есть варианты, позволяющие плагину успешно работать даже в случае сбоя анализа или оценки изображения).

Вам нужно будет посмотреть в концевывод вашей сборки (а не только начало из вашего поста) и в сочетании с информацией выше, должно быть ясно, какой сценарий вызывает плагин для сбоя сборки.

...