рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ

рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ
рдЕрд╣реЛ рд╣рд╛рдмреНрд░!

рдЖрдзреБрдирд┐рдХ рд╡рд╛рд╕реНрддрд╡рд╛рдд, рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рдХрдВрдЯреЗрдирд░рд╛рдпрдЭреЗрд╢рдирдЪреНрдпрд╛ рд╡рд╛рдврддреНрдпрд╛ рднреВрдорд┐рдХреЗрдореБрд│реЗ, рдХрдВрдЯреЗрдирд░рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╡рд┐рдз рдЯрдкреНрдкреЗ рдЖрдгрд┐ рдШрдЯрдХрд╛рдВрдЪреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдореБрджреНрджрд╛ рдХрдореА рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдирд╛рд╣реА. рдореЕрдиреНрдпреБрдЕрд▓ рддрдкрд╛рд╕рдгреА рдХрд░рдгреЗ рд╡реЗрд│рдЦрд╛рдК рдЖрд╣реЗ, рдореНрд╣рдгреВрди рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рджрд┐рд╢реЗрдиреЗ рдХрд┐рдорд╛рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рд╡рд▓реЗ рдЙрдЪрд▓рдгреЗ рдЪрд╛рдВрдЧрд▓реА рдХрд▓реНрдкрдирд╛ рдЕрд╕реЗрд▓.

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА рдЕрдиреЗрдХ рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдпреБрдХреНрддрддрд╛ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдгрд┐ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЫреЛрдЯрд╛ рдбреЗрдореЛ рд╕реНрдЯрдБрдб рдХрд╕рд╛ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪрд╛ рдпрд╛рд╡рд░реАрд▓ рд╕реВрдЪрдирд╛ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░реЗрди. рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдкреНрд░рддрд┐рдорд╛ рдЖрдгрд┐ рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╢реА рдЖрдпреЛрдЬрд┐рдд рдХрд░рд╛рдпрдЪреА рдпрд╛рдЪрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╕рд╛рдордЧреНрд░реА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ рдХреА рд╡рд┐рдХрд╛рд╕ рдЖрдгрд┐ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рднрд┐рдиреНрди рдЖрд╣реЗрдд, рдореНрд╣рдгреВрди рдореА рдЦрд╛рд▓реА рдЕрдиреЗрдХ рд╕рдВрднрд╛рд╡реНрдп рдкрд░реНрдпрд╛рдп рджреЗрдИрди.

рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдЙрдкрдпреБрдХреНрддрддрд╛

рдбреЙрдХрд░ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдкреИрд▓реВрдВрдЪреА рддрдкрд╛рд╕рдгреА рдХрд░рдгрд╛рд░реЗ рд╡рд┐рд╡рд┐рдз рд╕рд╣рд╛рдпреНрдпрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рдЖрд╣реЗрдд. рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реАрдВрдЪреЗ рд╡рд░реНрдгрди рдорд╛рдЧреАрд▓ рд▓реЗрдЦрд╛рдд рдХреЗрд▓реЗ рдЖрд╣реЗ (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security), рдЖрдгрд┐ рдпрд╛ рд▓реЗрдЦрд╛рдд рдореА рддреНрдпрд╛рдкреИрдХреА рддреАрдирд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ, рдЬреЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпреЗрджрд░рдореНрдпрд╛рди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛рдВрд╕рд╛рдареА рд╕реБрд░рдХреНрд╖рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрдЪрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рддрд╛рдд. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдореА рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпрд╛ рддреАрди рдЙрдкрдпреБрдХреНрддрддрд╛ рдПрдХрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рдХрд╢рд╛ рдПрдХрддреНрд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдпрд╛рдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреАрд▓ рджрд░реНрд╢рд╡реЗрд▓.

рд╣реЕрдбреЛрд▓рд┐рдВрдЯ
https://github.com/hadolint/hadolint

рдПрдХ рдЕрдЧрджреА рд╕реЛрдкреА рдХрдиреНрд╕реЛрд▓ рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЬреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рдЕрдЪреВрдХрддреЗрдЪреЗ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреЗ рдкреНрд░рдердо рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдлрдХреНрдд рдкрд░рд╡рд╛рдирдЧреА рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЗрдореЗрдЬ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА рд╡рд╛рдкрд░рдгреЗ рдХрд┐рдВрд╡рд╛ sudo рд╡рд╛рдкрд░рдгреЗ).

рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ

рдбреЙрдХрд▓
https://github.com/goodwithtech/dockle

рдХрдиреНрд╕реЛрд▓ рдЙрдкрдпреБрдХреНрддрддрд╛ рдЬреА рдкреНрд░рддрд┐рдореЗрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ (рдХрд┐рдВрд╡рд╛ рдкреНрд░рддрд┐рдореЗрдЪреНрдпрд╛ рдЬрддрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЯрд╛рд░ рд╕рдВрдЧреНрд░рд╣рдгрд╛рд╕рд╣), рдЬреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдореЗрдЪреА рд╢реБрджреНрдзрддрд╛ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рддрдкрд╛рд╕рддреЗ, рддреНрдпрд╛рдЪреЗ рд╕реНрддрд░ рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ - рдХреЛрдгрддреЗ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдХреЛрдгрддреНрдпрд╛ рд╕реВрдЪрдирд╛ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдХреЛрдгрддреНрдпрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗрдд, рд░рд┐рдХрд╛рдореНрдпрд╛ рдкрд╛рд╕рд╡рд░реНрдбрдЪреА рдЙрдкрд╕реНрдерд┐рддреА рдЗ. рдЙрджрд╛. рдзрдирд╛рджреЗрд╢рд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдлрд╛рд░ рдореЛрдареА рдирд╕рддрд╛рдирд╛ рдЖрдгрд┐ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЕрдиреЗрдХ рддрдкрд╛рд╕рдгреНрдпрд╛ рдЖрдгрд┐ рд╢рд┐рдлрд╛рд░рд╕реАрдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЕрд╕рддреЗ. CIS (рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗрдВрджреНрд░) рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдбреЙрдХрд░рд╕рд╛рдареА.
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ

рддреНрд░рд┐рд╡реЗрдгреА
https://github.com/aquasecurity/trivy

рд╣реА рдЙрдкрдпреБрдХреНрддрддрд╛ рджреЛрди рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рднреЗрджреНрдпрддрд╛ рд╢реЛрдзрдгреНрдпрд╛рдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдиреЗ рдЖрд╣реЗ - OS рдмрд┐рд▓реНрдб рд╕рдорд╕реНрдпрд╛ (рдЕрд▓реНрдкрд╛рдЗрди, рд░реЗрдбрд╣реЕрдЯ (рдИрдПрд▓), рд╕реЗрдВрдЯреЛрд╕, рдбреЗрдмрд┐рдпрди рдЬреАрдПрдирдпреВ, рдЙрдмрдВрдЯреВ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд) рдЖрдгрд┐ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕рдорд╕реНрдпрд╛ (Gemfile.lock, Pipfile.lock, composer.lock, рдкреЕрдХреЗрдЬ-рд▓реЙрдХ) .json , yarn.lock, Cargo.lock). рдЯреНрд░рд┐рд╡реНрд╣реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреАрд▓ рдкреНрд░рддрд┐рдорд╛ рдЖрдгрд┐ рд╕реНрдерд╛рдирд┐рдХ рдкреНрд░рддрд┐рдорд╛ рджреЛрдиреНрд╣реА рд╕реНрдХреЕрди рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдореЗрд╕рд╣ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ .tar рдлрд╛рдЗрд▓рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕реНрдХреЕрди рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддреЗ.

рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ

рдЙрдкрдпреБрдХреНрддрддрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдкрд░реНрдпрд╛рдп

рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡реЗрдЧрд│реНрдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рд╡рд╛рдкрд░реВрди рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рд╕рд░реНрд╡ рдЙрдкрдпреБрдХреНрддрддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрди.

рд╡рд┐рдХрд╛рд╕рд╛рджрд░рдореНрдпрд╛рди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЙрдХрд░рдлрд╛рдИрд▓реНрд╕ рдЖрдгрд┐ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛рдВрд╕рд╛рдареА рдЖрдкрдг рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕рд╛рдордЧреНрд░реА рддрдкрд╛рд╕рдгреА рдХрд╢реА рд▓рд╛рдЧреВ рдХрд░реВ рд╢рдХрддрд╛ рд╣реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреЗ рд╣реА рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ.

рдЪреЗрдХрдордзреНрдпреЗ рд╕реНрд╡рддрдГрдЪ рдЦрд╛рд▓реАрд▓ рдЪрд░рдг рдЕрд╕рддрд╛рдд:

  1. рд▓рд┐рдВрдЯрд░ рдпреБрдЯрд┐рд▓рд┐рдЯреАрд╕рд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реВрдЪрдирд╛рдВрдЪреА рд╢реБрджреНрдзрддрд╛ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рддрдкрд╛рд╕рдд рдЖрд╣реЗ рд╣реЕрдбреЛрд▓рд┐рдВрдЯ
  2. рдЙрдкрдпреБрдХреНрддрддрд╛ рд╡рд╛рдкрд░реВрди рдЕрдВрддрд┐рдо рдЖрдгрд┐ рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдорд╛рдВрдЪреА рд╢реБрджреНрдзрддрд╛ рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рддрдкрд╛рд╕рдд рдЖрд╣реЗ рдбреЙрдХрд▓
  3. рдмреЗрд╕ рдЗрдореЗрдЬрдордзреНрдпреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХрд░рд┐рддреНрдпрд╛ рдЬреНрдЮрд╛рдд рдЕрд╕реБрд░рдХреНрд╖рд╛ (CVE) рдЖрдгрд┐ рдЕрдиреЗрдХ рдЕрд╡рд▓рдВрдмрдирд╛рдВрдЪреА рдЙрдкрд╕реНрдерд┐рддреА рддрдкрд╛рд╕рдд рдЖрд╣реЗ - рдЙрдкрдпреБрдХреНрддрддрд╛ рд╡рд╛рдкрд░реВрди рддреНрд░рд┐рд╡реЗрдгреА

рд▓реЗрдЦрд╛рдд рдирдВрддрд░ рдореА рдпрд╛ рдЪрд░рдгрд╛рдВрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рддреАрди рдкрд░реНрдпрд╛рдп рджреЗрдИрди:
рдкрд╣рд┐рд▓реЗ рдореНрд╣рдгрдЬреЗ GitLab рдЪреЗ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд░реВрди CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВрди (рдЪрд╛рдЪрдгреА рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдврд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рд╕рд╣).
рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд░рдгреЗ.
рддрд┐рд╕рд░реЗ рдореНрд╣рдгрдЬреЗ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рд╕реНрдХреЕрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ.
рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдЕрд╕рд▓реЗрд▓рд╛ рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбреВ рд╢рдХрддрд╛, рддреЗ рддреБрдордЪреНрдпрд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдЧрд░рдЬреЗрдиреБрд╕рд╛рд░ рддреЗ рд╕реНрд╡реАрдХрд╛рд░реВ рд╢рдХрддрд╛.

рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдпрд▓реА рдЖрдгрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реВрдЪрдирд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд: https://github.com/Swordfish-Security/docker_cicd

GitLab CI/CD рдПрдХрддреНрд░реАрдХрд░рдг

рдкрд╣рд┐рд▓реНрдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рдордзреНрдпреЗ, рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди GitLab рд░рд┐рдкреЙрдЭрд┐рдЯрд░реА рд╕рд┐рд╕реНрдЯреАрдо рд╡рд╛рдкрд░реВрди рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреНрдпрд╛ рдХрд╢рд╛ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд рддреЗ рдЖрдореНрд╣реА рдкрд╛рд╣реВ. рдпреЗрдереЗ рдЖрдореНрд╣реА рдкрд╛рдпрд▒реНрдпрд╛рдВрдордзреВрди рдЬрд╛рдК рдЖрдгрд┐ GitLab рд╕рд╣ рдЪрд╛рдЪрдгреА рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреЗ рддреЗ рдкрд╛рд╣реВ, рд╕реНрдХреЕрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╢реА рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреА рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЖрдгрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░рддрд┐рдорд╛ - рдЬреНрдпреВрд╕рд╢реЙрдк рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдпреБрдЯрд┐рд▓рд┐рдЯрд┐рдЬ рдХрд╕реЗ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рддреЗ рдкрд╛рд╣реВ.

GitLab рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ
1. рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛:

sudo apt-get update && sudo apt-get install docker.io

2. рд╡рд░реНрддрдорд╛рди рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдбреЙрдХрд░ рдЧреНрд░реБрдкрдордзреНрдпреЗ рдЬреЛрдбрд╛ рдЬреЗрдгреЗрдХрд░реВрди рддреБрдореНрд╣реА sudo рди рд╡рд╛рдкрд░рддрд╛ рдбреЙрдХрд░рд╕реЛрдмрдд рдХрд╛рдо рдХрд░реВ рд╢рдХрддрд╛:

sudo addgroup <username> docker

3. рддреБрдордЪрд╛ IP рд╢реЛрдзрд╛:

ip addr

4. рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ GitLab рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рдЪрд╛рд▓рд╡рд╛, рд╣реЛрд╕реНрдЯрдирд╛рд╡рд╛рдордзреАрд▓ IP рдкрддреНрддрд╛ рддреБрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдирд╛рд╡рд╛рдиреЗ рдмрджрд▓реВрди:

docker run --detach 
--hostname 192.168.1.112 
--publish 443:443 --publish 80:80 
--name gitlab 
--restart always 
--volume /srv/gitlab/config:/etc/gitlab 
--volume /srv/gitlab/logs:/var/log/gitlab 
--volume /srv/gitlab/data:/var/opt/gitlab 
gitlab/gitlab-ce:latest

GitLab рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдЗрдиреНрд╕реНрдЯреЙрд▓реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реНрдг рдХрд░реЗрдкрд░реНрдпрдВрдд рдЖрдореНрд╣реА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЛ (рдЖрдкрдг рд▓реЙрдЧ рдлрд╛рдЗрд▓ рдЖрдЙрдЯрдкреБрдЯрджреНрд╡рд╛рд░реЗ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реВ рд╢рдХрддрд╛: docker logs -f gitlab).

5. рдмреНрд░рд╛рдЙрдЭрд░рдордзреНрдпреЗ рддреБрдордЪрд╛ рд╕реНрдерд╛рдирд┐рдХ IP рдЙрдШрдбрд╛ рдЖрдгрд┐ рд░реВрдЯ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдгреНрдпрд╛рдЪреА рдСрдлрд░ рджреЗрдгрд╛рд░реЗ рдкреГрд╖реНрда рдкрд╣рд╛:
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ
рдирд╡реАрди рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рд╛ рдЖрдгрд┐ GitLab рд╡рд░ рдЬрд╛.

6. рдПрдХ рдирд╡реАрди рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде cicd-рдЪрд╛рдЪрдгреА рдЖрдгрд┐ рд╕реНрдЯрд╛рд░реНрдЯ рдлрд╛рдЗрд▓рд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рд╛ README.md:
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ
7. рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ GitLab Runner рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ: рдПрдХ рдПрдЬрдВрдЯ рдЬреЛ рд╡рд┐рдирдВрддреАрдиреБрд╕рд╛рд░ рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдСрдкрд░реЗрд╢рдиреНрд╕ рдЪрд╛рд▓рд╡реЗрд▓.
рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ (рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд▓рд┐рдирдХреНрд╕ 64-рдмрд┐рдЯ рдЕрдВрддрд░реНрдЧрдд):

sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

8. рддреЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдмрдирд╡рд╛:

sudo chmod +x /usr/local/bin/gitlab-runner

9. рд░рдирд░рд╕рд╛рдареА OS рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЬреЛрдбрд╛ рдЖрдгрд┐ рд╕реЗрд╡рд╛ рд╕реБрд░реВ рдХрд░рд╛:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

рд╣реЗ рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рджрд┐рд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ:

local@osboxes:~$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
Runtime platform arch=amd64 os=linux pid=8438 revision=0e5417a3 version=12.0.1
local@osboxes:~$ sudo gitlab-runner start
Runtime platform arch=amd64 os=linux pid=8518 revision=0e5417a3 version=12.0.1

10. рдЖрддрд╛ рдЖрдореНрд╣реА рд░рдирд░рдЪреА рдиреЛрдВрджрдгреА рдХрд░рддреЛ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдЖрдордЪреНрдпрд╛ GitLab рдЙрджрд╛рд╣рд░рдгрд╛рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзреВ рд╢рдХреЗрд▓.
рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, Settings-CI/CD рдкреГрд╖реНрда рдЙрдШрдбрд╛ (http://OUR_ IP_ADDRESS/root/cicd-test/-/settings/ci_cd) рдЖрдгрд┐ рд░рдирд░реНрд╕ рдЯреЕрдмрд╡рд░ URL рдЖрдгрд┐ рдиреЛрдВрджрдгреА рдЯреЛрдХрди рд╢реЛрдзрд╛:
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ
11. URL рдЖрдгрд┐ рдиреЛрдВрджрдгреА рдЯреЛрдХрди рдмрджрд▓реВрди рд░рдирд░рдЪреА рдиреЛрдВрджрдгреА рдХрд░рд╛:

sudo gitlab-runner register 
--non-interactive 
--url "http://<URL>/" 
--registration-token "<Registration Token>" 
--executor "docker" 
--docker-privileged 
--docker-image alpine:latest 
--description "docker-runner" 
--tag-list "docker,privileged" 
--run-untagged="true" 
--locked="false" 
--access-level="not_protected"

рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд░реЗрдбреАрдореЗрдб рдХрд╛рд░реНрдпрд░рдд GitLab рдорд┐рд│рддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдЙрдкрдпреБрдХреНрддрддрд╛ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдпрд╛ рдбреЗрдореЛрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреЗ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдпрд▒реНрдпрд╛ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рддреЗ рд╕реНрдХреЕрдирд┐рдВрдЧ рдЪрд░рдгрд╛рдВрдЪреНрдпрд╛ рдЖрдзреА рдЕрд╕рддреАрд▓ рдЖрдгрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рдкреНрд░рддрд┐рдорд╛ рдЖрдгрд┐ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рддреАрд▓.

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди

1. рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдлрд╛рдЗрд▓реНрд╕ рдЬреЛрдбрд╛ mydockerfile.df (рд╣реА рдПрдХ рдЪрд╛рдЪрдгреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЖрд╣реЗ рдЬреНрдпрд╛рдЪреА рдЖрдореНрд╣реА рдЪрд╛рдЪрдгреА рдХрд░реВ) рдЖрдгрд┐ GitLab CI/CD рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ .gitlab-cicd.yml, рдЬреЗ рд╕реНрдХреЕрдирд░рд╕рд╛рдареА рд╕реВрдЪрдирд╛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ (рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рдирд╛рд╡рд╛рддреАрд▓ рдмрд┐рдВрджреВ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛).

.yaml рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓рдордзреНрдпреЗ рддреАрди рдпреБрдЯрд┐рд▓рд┐рдЯрд┐рдЬ (рд╣реЕрдбреЛрд▓рд┐рдВрдЯ, рдбреЙрдХрд▓ рдЖрдгрд┐ рдЯреНрд░рд┐рд╡реНрд╣реА) рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реВрдЪрдирд╛ рдЖрд╣реЗрдд рдЬреНрдпрд╛ рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓рдЪреЗ рдЖрдгрд┐ рдбреЙрдХрд░рдлрд╛рдпрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрд▓. рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реНрд╕ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдШреЗрддрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд: https://github.com/Swordfish-Security/docker_cicd/

рдкрд╛рд╕реВрди рдЕрд░реНрдХ mydockerfile.df (рдЙрдкрдпреБрдХреНрддрддрд╛ рдХрд╢реА рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рджрд╛рдЦрд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╣реА рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЪрд╛рд╕рд╣ рдПрдХ рдЕрдореВрд░реНрдд рдлрд╛рдЗрд▓ рдЖрд╣реЗ). рдлрд╛рдИрд▓рдЪрд╛ рдереЗрдЯ рджреБрд╡рд╛: mydockerfile.df

mydockerfile.df рдЪреА рд╕рд╛рдордЧреНрд░реА

FROM amd64/node:10.16.0-alpine@sha256:f59303fb3248e5d992586c76cc83e1d3700f641cbcd7c0067bc7ad5bb2e5b489 AS tsbuild
COPY package.json .
COPY yarn.lock .
RUN yarn install
COPY lib lib
COPY tsconfig.json tsconfig.json
COPY tsconfig.app.json tsconfig.app.json
RUN yarn build
FROM amd64/ubuntu:18.04@sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395
LABEL maintainer="Rhys Arkins <[email protected]>"
LABEL name="renovate"
...
COPY php.ini /usr/local/etc/php/php.ini
RUN cp -a /tmp/piik/* /var/www/html/
RUN rm -rf /tmp/piwik
RUN chown -R www-data /var/www/html
ADD piwik-cli-setup /piwik-cli-setup
ADD reset.php /var/www/html/
## ENTRYPOINT ##
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
USER root

YAML рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЕрд╕реЗ рджрд┐рд╕рддреЗ (рдлрд╛рдЗрд▓ рд╕реНрд╡рддрдГ рдпреЗрдереЗ рдереЗрдЯ рджреБрд╡реНрдпрд╛рд╡рд░реВрди рдШреЗрддрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ: .gitlab-ci.yml):

.gitlab-ci.yml рдЪреА рд╕рд╛рдордЧреНрд░реА

variables:
    DOCKER_HOST: "tcp://docker:2375/"
    DOCKERFILE: "mydockerfile.df" # name of the Dockerfile to analyse   
    DOCKERIMAGE: "bkimminich/juice-shop" # name of the Docker image to analyse
    # DOCKERIMAGE: "knqyf263/cve-2018-11235" # test Docker image with several CRITICAL CVE
    SHOWSTOPPER_PRIORITY: "CRITICAL" # what level of criticality will fail Trivy job
    TRIVYCACHE: "$CI_PROJECT_DIR/.cache" # where to cache Trivy database of vulnerabilities for faster reuse
    ARTIFACT_FOLDER: "$CI_PROJECT_DIR"
 
services:
    - docker:dind # to be able to build docker images inside the Runner
 
stages:
    - scan
    - report
    - publish
 
HadoLint:
    # Basic lint analysis of Dockerfile instructions
    stage: scan
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/hadolint_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/hadolint/hadolint/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/hadolint/hadolint/releases/download/v${VERSION}/hadolint-Linux-x86_64 && chmod +x hadolint-Linux-x86_64
     
    # NB: hadolint will always exit with 0 exit code
    - ./hadolint-Linux-x86_64 -f json $DOCKERFILE > $ARTIFACT_FOLDER/hadolint_results.json || exit 0
 
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/hadolint_results.json
 
Dockle:
    # Analysing best practices about docker image (users permissions, instructions followed when image was built, etc.)
    stage: scan   
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/dockle_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/goodwithtech/dockle/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.tar.gz && tar zxf dockle_${VERSION}_Linux-64bit.tar.gz
    - ./dockle --exit-code 1 -f json --output $ARTIFACT_FOLDER/dockle_results.json $DOCKERIMAGE   
     
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/dockle_results.json
 
Trivy:
    # Analysing docker image and package dependencies against several CVE bases
    stage: scan   
    image: docker:git
 
    script:
    # getting the latest Trivy
    - apk add rpm
    - export VERSION=$(wget -q -O - https://api.github.com/repos/knqyf263/trivy/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/knqyf263/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.tar.gz && tar zxf trivy_${VERSION}_Linux-64bit.tar.gz
     
    # displaying all vulnerabilities w/o failing the build
    - ./trivy -d --cache-dir $TRIVYCACHE -f json -o $ARTIFACT_FOLDER/trivy_results.json --exit-code 0 $DOCKERIMAGE    
    
    # write vulnerabilities info to stdout in human readable format (reading pure json is not fun, eh?). You can remove this if you don't need this.
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 0 $DOCKERIMAGE    
 
    # failing the build if the SHOWSTOPPER priority is found
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 1 --severity $SHOWSTOPPER_PRIORITY --quiet $DOCKERIMAGE
         
    artifacts:
        when: always # return artifacts even after job failure
        paths:
        - $ARTIFACT_FOLDER/trivy_results.json
 
    cache:
        paths:
        - .cache
 
Report:
    # combining tools outputs into one HTML
    stage: report
    when: always
    image: python:3.5
     
    script:
    - mkdir json
    - cp $ARTIFACT_FOLDER/*.json ./json/
    - pip install json2html
    - wget https://raw.githubusercontent.com/shad0wrunner/docker_cicd/master/convert_json_results.py
    - python ./convert_json_results.py
     
    artifacts:
        paths:
        - results.html

рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА .tar рд╕рдВрдЧреНрд░рд╣рдг рдореНрд╣рдгреВрди рдЬрддрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдорд╛ рджреЗрдЦреАрд▓ рд╕реНрдХреЕрди рдХрд░реВ рд╢рдХрддрд╛ (рддрдерд╛рдкрд┐, рддреБрдореНрд╣рд╛рд▓рд╛ YAML рдлрд╛рдЗрд▓рдордзреАрд▓ рдЙрдкрдпреБрдХреНрддрддреЗрд╕рд╛рдареА рдЗрдирдкреБрдЯ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдмрджрд▓рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓)

NB: Trivy рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ Rpm ╨╕ рдЬрд╛. рдЕрдиреНрдпрдерд╛, RedHat-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдорд╛ рд╕реНрдХреЕрди рдХрд░рддрд╛рдирд╛ рдЖрдгрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдЕрджреНрдпрддрдиреЗ рдорд┐рд│рд╡рддрд╛рдирд╛ рддреЗ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрд▓.

2. рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдлрд╛рдЗрд▓реНрд╕ рдЬреЛрдбрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдордЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓рдордзреАрд▓ рд╕реВрдЪрдирд╛рдВрдиреБрд╕рд╛рд░, GitLab рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдмрд┐рд▓реНрдб рдЖрдгрд┐ рд╕реНрдХреЕрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реВ рдХрд░реЗрд▓. CI/CD тЖТ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЯреЕрдмрд╡рд░, рддреБрдореНрд╣реА рд╕реВрдЪрдирд╛рдВрдЪреА рдкреНрд░рдЧрддреА рдкрд╛рд╣реВ рд╢рдХрддрд╛.

рдкрд░рд┐рдгрд╛рдореА, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЪрд╛рд░ рдХрд╛рд░реНрдпреЗ рдЖрд╣реЗрдд. рддреНрдпрд╛рдкреИрдХреА рддреАрди рд╕реНрдХреЕрдирд┐рдВрдЧрд╢реА рдереЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛рдд рдЖрдгрд┐ рд╢реЗрд╡рдЯрдЪрд╛ (рдЕрд╣рд╡рд╛рд▓) рд╕реНрдХреЕрдирд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдорд╛рдВрд╕рд╣ рд╡рд┐рдЦреБрд░рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдпрд▓реАрдВрдордзреВрди рдПрдХ рд╕рд╛рдзрд╛ рдЕрд╣рд╡рд╛рд▓ рдЧреЛрд│рд╛ рдХрд░рддреЛ.
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ
рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдкреНрд░рддрд┐рдорд╛ рдХрд┐рдВрд╡рд╛ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдВрдордзреНрдпреЗ рдЧрдВрднреАрд░ рдЕрд╕реБрд░рдХреНрд╖рд╛ рдЖрдврд│рд▓реНрдпрд╛рд╕ рдЯреНрд░рд┐рд╡реНрд╣реА рддреНрдпрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдерд╛рдВрдмрд╡рддреЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рд╣реЕрдбреЛрд▓рд┐рдВрдЯ рдиреЗрд╣рдореА рдПрдХреНрдЭрд┐рдХреНрдпреБрд╢рди рдХреЛрдбрдордзреНрдпреЗ рдпрд╢ рдкрд░рдд рдХрд░рддреЛ, рдХрд╛рд░рдг рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдиреЗрд╣рдореА рдЯрд┐рдкреНрдкрдгреА рдЕрд╕рддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдмрд┐рд▓реНрдб рдерд╛рдВрдмрддреЗ.

рддреБрдордЪреНтАНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНтАНрдЯ рдЖрд╡рд╢реНтАНрдпрдХрддреЗрдиреБрд╕рд╛рд░, рддреБрдореНрд╣реА рдПрдХреНрдЭрд┐рдЯ рдХреЛрдб рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ рд╢рдХрддрд╛ рдЬреЗрдгреЗрдХрд░реБрди рдпрд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦреАрд▓ рдерд╛рдВрдмрд╡рддрд╛рдд рдЬреЗрд╡реНрд╣рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрдВрднреАрд░рддреЗрдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЖрдврд│рддрд╛рдд. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдмрд┐рд▓реНрдб рдлрдХреНрдд рддреЗрд╡реНрд╣рд╛рдЪ рдерд╛рдВрдмреЗрд▓ рдЬреЗрд╡реНрд╣рд╛ Trivy рд▓рд╛ рдЖрдореНрд╣реА SHOWSTOPPER рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рддреАрд╡реНрд░рддреЗрд╕рд╣ рднреЗрджреНрдпрддрд╛ рдЖрдврд│рд▓реА. .gitlab-ci.yml.
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ

рдкреНрд░рддреНрдпреЗрдХ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреЕрдирд┐рдВрдЧ рдЯрд╛рд╕реНрдХрдЪреНрдпрд╛ рд▓реЙрдЧрдордзреНрдпреЗ, рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯреНрд╕ рд╡рд┐рднрд╛рдЧрд╛рдд рдереЗрдЯ json рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рд╕рд╛рдзреНрдпрд╛ HTML рд░рд┐рдкреЛрд░реНрдЯрдордзреНрдпреЗ (рдЦрд╛рд▓реАрд▓ рддреНрдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ) рдкрд╛рд╣рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ:
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ

3. рдпреБрдЯрд┐рд▓рд┐рдЯреА рд░рд┐рдкреЛрд░реНрдЯреНрд╕ рдереЛрдбреНрдпрд╛ рдЕрдзрд┐рдХ рдорд╛рдирд╡реА рд╡рд╛рдЪрдиреАрдп рд╕реНрд╡рд░реВрдкрд╛рдд рд╕рд╛рджрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рджреЛрд╖рд╛рдВрдЪреНрдпрд╛ рд╕рд╛рд░рдгреАрд╕рд╣ рддреАрди json рдлрд╛рдпрд▓реА рдПрдХрд╛ HTML рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд▓рд╣рд╛рди рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ.
рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЯрд╛рд╕реНрдХрджреНрд╡рд╛рд░реЗ рд▓рд╛рдБрдЪ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдЕрдВрддрд┐рдо рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯ рд╣реА рд░рд┐рдкреЛрд░реНрдЯ рдЕрд╕рд▓реЗрд▓реА HTML рдлрд╛рдЗрд▓ рдЖрд╣реЗ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрддреНрд░реЛрдд рджреЗрдЦреАрд▓ рднрд╛рдВрдбрд╛рд░рд╛рдд рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдЖрдкрд▓реНрдпрд╛ рдЧрд░рдЬрд╛, рд░рдВрдЧ рдЗ.
рдбреЙрдХрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдкрд╛рд╕рдгреА рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЙрджрд╛рд╣рд░рдгреЗ

рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рджреБрд╕рд░рд╛ рдкрд░реНрдпрд╛рдп рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдВрд╕рд╛рдареА рдпреЛрдЧреНрдп рдЖрд╣реЗ рдЬреЗрдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ CI / CD рдкреНрд░рдгрд╛рд▓реАрдордзреНрдпреЗ рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╕рд░реНрд╡ рд╕реВрдЪрдирд╛ рдЕрд╢рд╛ рдлреЙрд░реНрдордордзреНрдпреЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреНрдпрд╛ рдереЗрдЯ рд╣реЛрд╕реНрдЯрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рд╣рд╛ рдкрд░реНрдпрд╛рдп рддрдпрд╛рд░-рддрдпрд╛рд░ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗ рдЬреЛ рд╕реНрд╡рдЪреНрдЫ рдЖрднрд╛рд╕реА (рдХрд┐рдВрд╡рд╛ рдЕрдЧрджреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ) рдорд╢реАрдирд╡рд░ рдЪрд╛рд▓рд╡рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реАрд▓ gitlab-runner рдкреНрд░рдорд╛рдгреЗрдЪ рд╕реВрдЪрдирд╛рдВрдЪреЗ рдкрд╛рд▓рди рдХрд░рддреЗ.

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╢рд╕реНрд╡реАрд░реАрддреНрдпрд╛ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдбреЙрдХрд░ рдЧрдЯрд╛рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рддрдГ рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддреЗ: docker_sec_check.sh

рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реБрд░реВрд╡рд╛рддреАрд╕, рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛рдд рдХреА рдХреЛрдгрддреА рдкреНрд░рддрд┐рдорд╛ рд╕реНрдХреЕрди рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛ рджреЛрд╖рд╛рдВрдЪреА рддреАрд╡реНрд░рддрд╛ рдЯреНрд░рд┐рд╡реНрд╣реА рдпреБрдЯрд┐рд▓рд┐рдЯреАрд▓рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреНрд░реБрдЯреА рдХреЛрдбрд╕рд╣ рдмрд╛рд╣реЗрд░ рдкрдбреЗрд▓.

рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрджрд░рдореНрдпрд╛рди, рд╕рд░реНрд╡ рдЙрдкрдпреБрдХреНрддрддрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓ рдбреЙрдХрд░_рдЯреВрд▓реНрд╕, рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо - рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд docker_tools/json, рдЖрдгрд┐ рдЕрд╣рд╡рд╛рд▓рд╛рд╕рд╣ HTML рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЕрд╕реЗрд▓ results.html.

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯрдЪреЗ рдЙрджрд╛рд╣рд░рдг

~/docker_cicd$ ./docker_sec_check.sh

[+] Setting environment variables
[+] Installing required packages
[+] Preparing necessary directories
[+] Fetching sample Dockerfile
2020-10-20 10:40:00 (45.3 MB/s) - тАШDockerfileтАЩ saved [8071/8071]
[+] Pulling image to scan
latest: Pulling from bkimminich/juice-shop
[+] Running Hadolint
...
Dockerfile:205 DL3015 Avoid additional packages by specifying `--no-install-recommends`
Dockerfile:248 DL3002 Last USER should not be root
...
[+] Running Dockle
...
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
...
[+] Running Trivy
juice-shop/frontend/package-lock.json
=====================================
Total: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 2, CRITICAL: 0)

+---------------------+------------------+----------+---------+-------------------------+
|       LIBRARY       | VULNERABILITY ID | SEVERITY | VERSION |             TITLE       |
+---------------------+------------------+----------+---------+-------------------------+
| object-path         | CVE-2020-15256   | HIGH     | 0.11.4  | Prototype pollution in  |
|                     |                  |          |         | object-path             |
+---------------------+------------------+          +---------+-------------------------+
| tree-kill           | CVE-2019-15599   |          | 1.2.2   | Code Injection          |
+---------------------+------------------+----------+---------+-------------------------+
| webpack-subresource | CVE-2020-15262   | LOW      | 1.4.1   | Unprotected dynamically |
|                     |                  |          |         | loaded chunks           |
+---------------------+------------------+----------+---------+-------------------------+

juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)

...

juice-shop/package-lock.json
============================
Total: 5 (CRITICAL: 5)

...
[+] Removing left-overs
[+] Making the output look pretty
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

рд╕рд░реНрд╡ рдЙрдкрдпреБрдХреНрддрддрд╛рдВрд╕рд╣ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛

рддрд┐рд╕рд░рд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгреВрди, рдореА рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдпреБрдХреНрддрддреЗрд╕рд╣ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рд╕рд╛рдзреНрдпрд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓реНрд╕ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдПрдХ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдЗрдореЗрдЬ рд╕реНрдХреЕрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЗрдЯ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░реЗрд▓, рджреБрд╕рд░рд╛ (рдбреЙрдХрд░рдлрд╛рдЗрд▓_рдЯрд╛рд░) рдЗрдореЗрдЬрд╕рд╣ рдЯрд╛рд░ рдлрд╛рдЗрд▓ рд╕реНрдХреЕрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕реЗрдЯ рддрдпрд╛рд░ рдХрд░реЗрд▓.

1. рдЖрдореНрд╣реА рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдпреЛрдЧреНрдп рдбреЙрдХрд░ рдлрд╛рдЗрд▓ рдЖрдгрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдШреЗрддреЛ https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. рдЕрд╕реЗрдВрдмреНрд▓реАрд╕рд╛рдареА рдЪрд╛рд▓рд╡рд╛:

docker build -t dscan:image -f docker_security.df .

3. рдмрд┐рд▓реНрдб рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рдЗрдореЗрдЬрдордзреВрди рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рд╛. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╕рд╣ рдЖрдореНрд╣реА DOCKERIMAGE рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдкрд╛рд╕ рдХрд░рддреЛ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдорд╢реАрдирд╡рд░реВрди рдлрд╛рдЗрд▓рд╡рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдорд╛рдЙрдВрдЯ рдХрд░рддреЛ. /рдбреЙрдХрд░рдлрд╛рдЗрд▓ (рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рдпрд╛ рдлрд╛рдИрд▓рд╕рд╛рдареА рдПрдХ рдкрд░рд┐рдкреВрд░реНрдг рдорд╛рд░реНрдЧ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ):

docker run --rm -v $(pwd)/results:/results -v $(pwd)/docker_security.df:/Dockerfile -e DOCKERIMAGE="bkimminich/juice-shop" dscan:image


[+] Setting environment variables
[+] Running Hadolint
/Dockerfile:3 DL3006 Always tag the version of an image explicitly
[+] Running Dockle
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
INFO    - CIS-DI-0006: Add HEALTHCHECK instruction to the container image
        * not found HEALTHCHECK statement
INFO    - DKL-LI-0003: Only put necessary files
        * unnecessary file : juice-shop/node_modules/sqlite3/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm/Dockerfile
[+] Running Trivy
...
juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
[+] Making the output look pretty
[+] Starting the main module ============================================================
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

рдирд┐рдХрд╛рд▓

рдЖрдореНрд╣реА рдбреЙрдХрд░ рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯ рд╕реНрдХреЕрдирд┐рдВрдЧ рдпреБрдЯрд┐рд▓рд┐рдЯрд┐рдЬрдЪрд╛ рдлрдХреНрдд рдПрдХ рдореВрд▓рднреВрдд рд╕рдВрдЪ рдХрд╡реНрд╣рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдкреНрд░рддрд┐рдорд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрдЪрд╛ рдпреЛрдЧреНрдп рдкреНрд░рдорд╛рдгрд╛рдд рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрддреЛ. рдЗрддрд░ рдЕрдиреЗрдХ рд╕рд╢реБрд▓реНрдХ рдЖрдгрд┐ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд рдЬреА рд╕рдорд╛рди рддрдкрд╛рд╕рдгреА рдХрд░реВ рд╢рдХрддрд╛рдд, рд╕реБрдВрджрд░ рдЕрд╣рд╡рд╛рд▓ рдХрд╛рдвреВ рд╢рдХрддрд╛рдд рдХрд┐рдВрд╡рд╛ рдХрдиреНрд╕реЛрд▓ рдореЛрдбрдордзреНрдпреЗ рдкреВрд░реНрдгрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддрд╛рдд, рдХрдВрдЯреЗрдирд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рдгрд╛рд▓реА рдЗ.

рд▓реЗрдЦрд╛рдд рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЪрд╛рдЪреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдмрд╛рдЬреВ рдЕрд╢реА рдЖрд╣реЗ рдХреА рддреЗ рд╕рд░реНрд╡ рдУрдкрди рд╕реЛрд░реНрд╕рд╡рд░ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдЧрд░рдЬрд╛ рдЖрдгрд┐ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдирд╛ рдиреЗрдордХреЗ рдХрд╛рдп рдЕрдиреБрдХреВрд▓ рдЖрд╣реЗ рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╣ рдЖрдгрд┐ рдЗрддрд░ рддрддреНрд╕рдо рд╕рд╛рдзрдирд╛рдВрд╕рд╣ рдкреНрд░рдпреЛрдЧ рдХрд░реВ рд╢рдХрддрд╛. рдЕрд░реНрдерд╛рдд, рдЖрдврд│рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рднреЗрджреНрдпрддрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рд▓рд╛рдЧреВ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдЕрднреНрдпрд╛рд╕рд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд, рдкрд░рдВрддреБ рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдореЛрдареНрдпрд╛ рд▓реЗрдЦрд╛рд╕рд╛рдареА рд╣рд╛ рд╡рд┐рд╖рдп рдЖрд╣реЗ.

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдгрд┐ рдЙрдкрдпреБрдХреНрддрддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░рддреАрд▓ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░рд╛рдпрдЭреЗрд╢рдирдЪреНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдд рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреВ рдмрдирддреАрд▓.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛