рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 10 рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрднреНрдпрд╛рд╕ред рднрд╛рдЧ 1

рд▓реЗрдЦ рдХрд╛ рдПрдХ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдирдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред




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

рддреЛ, рдЪрд▓реЛ 10 рдбреЙрдХрд░ рдЫрд╡рд┐ рд╕реБрд░рдХреНрд╖рд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреА рд╣рдорд╛рд░реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

1. рдиреНрдпреВрдирддрдо рдмреБрдирд┐рдпрд╛рджреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ


рдЕрдХреНрд╕рд░ рдЖрдк рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, FROM node рд╕рд╛рде "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ" рдХреЗ рд╕рд╛рде рдПрдХ Dockerfile рд▓рд┐рдЦрдХрд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдиреЛрдб рдЫрд╡рд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдбреЗрдмрд┐рдпрди рд╕реНрдЯреНрд░реЗрдЪ рд╡рд┐рддрд░рдг рдЖрдзрд╛рд░ рдЫрд╡рд┐ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХрд┐рд╕реА рднреА рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдУрдПрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рд╕реНрдиреЗрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рд╕реНрдЯреЗрдЯрд╕ рд░рд┐рдкреЛрд░реНрдЯ 2019 рдореЗрдВ, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдбреЙрдХрд░ рд╣рдм рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдРрд╕реА рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХрдИ рдЬреНрдЮрд╛рдд рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ docker pull node рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдУрдПрд╕ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рд╕рд┐рд╕реНрдЯрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ 580 рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВред



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

рдЕрдкрдиреЗ рдЪрд┐рддреНрд░реЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ

2. рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛


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

рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдореЗрдВ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╕рдореВрд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ; рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, Dockerfile рдореЗрдВ USER рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЫрд╡рд┐ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; Dockerfile рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ Dockerfile ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЙрдмрдВрдЯреВ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

 FROM ubuntu RUN mkdir /app RUN groupadd -r lirantal && useradd -r -s /bin/false -g lirantal lirantal WORKDIR /app COPY . /app RUN chown -R lirantal:lirantal /app USER lirantal CMD node index.js 

рдКрдкрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

  • рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (-r) рдмрдирд╛рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдФрд░ рд╢реЗрд▓ рдХреЗ рдмрд┐рдирд╛
  • рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╕рдореВрд╣ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рд╕рдореВрд╣рд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)
  • рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рддрд░реНрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рд╣рдордиреЗ рдмрдирд╛рдпрд╛ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ

Node.js рдФрд░ рдЕрд▓реНрдкрд╛рдЗрди рдЪрд┐рддреНрд░, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА node рдирд╛рдордХ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг Node.js рд╣реИ:

 FROM node:10-alpine RUN mkdir /app COPY . /app RUN chown -R node:node /app USER node CMD [тАЬnodeтАЭ, тАЬindex.jsтАЭ] 

рдпрджрд┐ рдЖрдк Node.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХрд░ рдФрд░ Node.js рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

3. MITM рд╣рдорд▓реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ


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

рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛


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

рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЪрд╛рд╣реЗ рд╡реЗ рдХрд┐рд╕реА рднреА рдиреАрддрд┐ рдХреЗ рд╣реЛрдВред рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдбреЙрдХрд░ рдХрдВрдЯреЗрдВрдЯ рдЯреНрд░рд╕реНрдЯ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:

 export DOCKER_CONTENT_TRUST=1 

рдЕрдм рдЙрд╕ рдЫрд╡рд┐ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдирд╣реАрдВ рд╣реИ - рдЕрдиреБрд░реЛрдз рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред

рд╣рд╕реНрддрд╛рдХреНрд╖рд░ Docker рдЫрд╡рд┐рдпрд╛рдБ


рдЙрди рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рднрд╛рдЧреАрджрд╛рд░реЛрдВ рд╕реЗ рдбреЙрдХрд░ рдкреНрд░рдорд╛рдгрд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдбреЙрдХрд░ рд╣рдм рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдФрд░ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЙрддреНрдкрддреНрддрд┐ рдФрд░ рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЬрдм рдбреЙрдХрд░ рдХрдВрдЯреЗрдВрдЯ рдЯреНрд░рд╕реНрдЯ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдЫрд╡рд┐ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреА рд╣реИред рдЬрдм рдЫрд╡рд┐ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рд╛рдЗрди рдЗрди рд╣реЛрддреА рд╣реИ, рддреЛ рдбреЙрдХрд░ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП ~/docker/trust рдореЗрдВ рдирд┐рдЬреА рдХреБрдВрдЬреА рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдЬреА рдХреБрдВрдЬреА рддрдм рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдЬрдм рд╡реЗ рдмрдирд╛рдИ рдЧрдИ рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред

рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХрд░ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ ред

4. рдУрдкрди рд╕реЛрд░реНрд╕ рдШрдЯрдХреЛрдВ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ, рдареАрдХ рдХрд░реЗрдВ рдФрд░ рдЯреНрд░реИрдХ рдХрд░реЗрдВ


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

рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдореВрд▓ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИред рдпрд╣ рднреЗрджреНрдпрддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдХреЗ рд╣рдорд▓реЗ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ; рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдХреЛрдИ рднреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рднрд╡рд┐рд╖реНрдп рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╕реЗ рдмрдЪрд╛рддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдзрд╛рд░ рдЫрд╡рд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдУрдкрди рд╕реЛрд░реНрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╕реЗ рдмрдЪрд╛рд╡ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдФрд░ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Snyk рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдХрд┐ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╕рднреА рдкрд░рддреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреНрдЮрд╛рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐ рд╕реНрдХреИрди рдХреА рдЬрд╛рддреА рд╣реИ:

 # fetch the image to be tested so it exists locally $ docker pull node:10 # scan the image with snyk $ snyk test --docker node:10 --file=path/to/Dockerfile 

рдбреЙрдХрд░ рдЫрд╡рд┐ рдХреЛ рдЬреНрдЮрд╛рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╕реНрдиреЗрдХ рдЫрд╡рд┐ рдореЗрдВ рдирдИ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХреЗ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

 $ snyk monitor --docker node:10 

Snyk рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕реНрдХреИрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдбреЙрдХрд░ рдЫрд╡рд┐ рд╕реНрдХреИрди рдХреЗ 44% рдЬреНрдЮрд╛рдд рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдФрд░ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдирдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдЪрд┐рддреНрд░ рдЙрдкрд▓рдмреНрдз рдереЗред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд╛рдорд░реНрд╢, рдЬрд┐рд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдиреЗрдХ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред
Snyk рдиреЗ рдпрд╣ рднреА рдкрд╛рдпрд╛ рдХрд┐ 20% рд╕рднреА Docker рдЫрд╡рд┐ рд╕реНрдХреИрди рдХреЗ рд▓рд┐рдП, рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Docker рдЫрд╡рд┐ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред Snyk рдмреНрд▓реЙрдЧ рдкрд░ рдЦреБрд▓реЗ 2019 рд╕реБрд░рдХреНрд╖рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдкрд╣рд▓реЗ рднрд╛рдЧ рдХрд╛ рдЕрдВрддред

рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдЬрд╛рд░реА рд╣реИ, рдФрд░ рдЕрдм рд╣рдо рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдореБрдлреНрдд рд╡реЗрдмрд┐рдирд╛рд░ рдореЗрдВ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: тАЬрдбреЙрдХрдЯрд░ рдХрдордЬреЛрд░рд┐рдпрд╛рдВред рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреА рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рд╕реЗ рдореЗрдЬрдмрд╛рди рддрдХ рднрд╛рдЧрдирд╛ ред тАЭ

Source: https://habr.com/ru/post/hi480970/


All Articles