Openshift - SCC

рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рдореВрд▓ рд▓реЗрдЦрдХ рд╣реИрдВ Guillaume

рдкрд░рд┐рднрд╛рд╖рд╛

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

SCCs рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдзрд┐рдирд┐рдпрдорди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреЙрдб рдЙрдЪрд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рдВрдЧрдардирд╛рддреНрдордХ рд╕реБрд░рдХреНрд╖рд╛ рдорд╛рдирдХреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпреЗ рдкреНрд░рддрд┐рдмрдВрдз рд╡рд┐рднрд┐рдиреНрди рдкрд╣рд▓реБрдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

  1. рд▓рд┐рдирдХреНрд╕ рдХреНрд╖рдорддрд╛рдПрдБ: рдХрдВрдЯреЗрдирд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛, рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

  2. SELinux рд╕рдВрджрд░реНрдн: рдХрдВрдЯреЗрдирд░реНрд╕ рдХреЗ рд▓рд┐рдП SELinux рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкреНрд░рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рддреА рд╣реИрдВред

  3. рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд░реВрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо: рдХрдВрдЯреЗрдирд░реНрд╕ рдХреЛ рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ред

  4. рдЕрдиреБрдордд рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдФрд░ рд╡реЙрд▓реНрдпреВрдо: рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдХрд┐ рдХреМрди рд╕реЗ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдФрд░ рд╡реЙрд▓реНрдпреВрдореНрд╕ рдПрдХ рдкреЙрдб рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

  5. UID/GID рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдПрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╕рдореВрд╣ рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд▓рддреА рд╣реИред

  6. рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпрд╛рдБ: рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛, рдЬреИрд╕реЗ рдирд┐рд╖реЗрдз рдпрд╛рддрд╛рдпрд╛рддред

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

рдореВрд▓ рд░реВрдк рд╕реЗ, рд╣рд░ рдмрд╛рд░ рдЬрдм рдПрдХ рдкреЙрдб рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд:

рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рд╕реНрддрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд┐рдд рдкреЙрдбреНрд╕ рдХреА рд╕реГрд╖реНрдЯрд┐, рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдорд╛рдЙрдВрдЯрд┐рдВрдЧ, рдпрд╛ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдирд┐рд╖реЗрдз рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

Pod Escape Privileges

рд╕реВрдЪреА SCC

Openshift Client рдХреЗ рд╕рд╛рде рд╕рднреА SCC рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП:

$ oc get scc #List all the SCCs

$ oc auth can-i --list | grep securitycontextconstraints #Which scc user can use

$ oc describe scc $SCC #Check SCC definitions

рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ SCC "restricted" рдФрд░ "restricted-v2" рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рд╕рдЦреНрдд SCCs рд╣реИрдВред

SCC рдХрд╛ рдЙрдкрдпреЛрдЧ

Pod рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ SCC рдХреЛ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged

рдЬрдм рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдХрдИ SCCs рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдЙрд╕ SCC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрджрд░реНрдн рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ рдПрдХ рдирд┐рд╖рд┐рджреНрдз рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред

$ oc apply -f evilpod.yaml #Deploy a privileged pod
Error from server (Forbidden): error when creating "evilpod.yaml": pods "evilpod" is forbidden: unable to validate against any security context constrain

SCC рдмрд╛рдпрдкрд╛рд╕

OpenShift - SCC bypass

рд╕рдВрджрд░реНрдн

Last updated