рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдПрдмреАрд╕реА: рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рд▓реЗрдЦрд╛ рдкрд░реАрдХреНрд╖рд╛

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдПрдмреАрд╕реА: рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рд▓реЗрдЦрд╛ рдкрд░реАрдХреНрд╖рд╛

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

рдкреНрд░рдорд╛рдгреАрдХрд░рдг

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ:

  • рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ - рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдЦрд╛рддреЗ;
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рдмрд╛рд╣рд░реА, рд╕реНрд╡рддрдВрддреНрд░ рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд "рд╕рд╛рдорд╛рдиреНрдп" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред

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

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

рдкреНрд░рддреНрдпреЗрдХ рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдпрд╛ рддреЛ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рдЧреБрдордирд╛рдо рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреЗрдЯрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо тАФ рдЙрдкрдпреЛрдХреНрддрд╛рдирд╛рдо (рдХреЗрд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓!);
  • рдпреВрдЖрдИрдбреА - рдПрдХ рдорд╢реАрди-рдкрдардиреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп" рд╣реИ;
  • рд╕рдореВрд╣ - рдЙрди рд╕рдореВрд╣реЛрдВ рдХреА рд╕реВрдЪреА рдЬрд┐рдирд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ;
  • рдЕрддрд┐рд░рд┐рдХреНрдд - рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрдВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: X509 рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдмрд┐рдпрд░рд░ рдЯреЛрдХрди, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░реЙрдХреНрд╕реА, HTTP рдмреЗрд╕рд┐рдХ рдСрдеред рдЗрди рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╛рд╕рд╡рд░реНрдб рд╡рд╛рд▓реА рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЗрдХрд░ OpenID OAuth2 рддрдХред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреНрд▓рд╕реНрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

  • рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдЯреЛрдХрди - рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП;
  • X509 - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП.

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

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ (X.509)

рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рддрд░реАрдХреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдкреНрд░рдореБрдЦ рдкреАрдврд╝реА:
    mkdir -p ~/mynewuser/.certs/
    openssl genrsa -out ~/.certs/mynewuser.key 2048
  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛:
    openssl req -new -key ~/.certs/mynewuser.key -out ~/.certs/mynewuser.csr -subj "/CN=mynewuser/O=company"
  • рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╕реАрдП рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рд╕реАрдП рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рд╣реИ) /etc/kubernetes/pki/ca.key):
    openssl x509 -req -in ~/.certs/mynewuser.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out ~/.certs/mynewuser.crt -days 500
  • рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛:
    • рдХреНрд▓рд╕реНрдЯрд░ рд╡рд┐рд╡рд░рдг (рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рдФрд░ рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ):
      kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server=https://192.168.100.200:6443
    • рдпрд╛ рдХреИрд╕реЗ рдирд╣реАрдВрдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд┐рдХрд▓реНрдк - рдЖрдкрдХреЛ рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рддрдм рдХреБрдмреЗрдХреНрдЯрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛):
      kubectl config set-cluster kubernetes  --insecure-skip-tls-verify=true --server=https://192.168.100.200:6443
    • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝рдирд╛:
      kubectl config set-credentials mynewuser --client-certificate=.certs/mynewuser.crt  --client-key=.certs/mynewuser.key
    • рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рдирд╛:
      kubectl config set-context mynewuser-context --cluster=kubernetes --namespace=target-namespace --user=mynewuser
    • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ:
      kubectl config use-context mynewuser-context

рдЙрдкрд░реЛрдХреНрдд рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ .kube/config рдЗрд╕ рддрд░рд╣ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /etc/kubernetes/pki/ca.crt
    server: https://192.168.100.200:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    namespace: target-namespace
    user: mynewuser
  name: mynewuser-context
current-context: mynewuser-context
kind: Config
preferences: {}
users:
- name: mynewuser
  user:
    client-certificate: /home/mynewuser/.certs/mynewuser.crt
    client-key: /home/mynewuser/.certs/mynewuser.key

рдЦрд╛рддреЛрдВ рдФрд░ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ:

  • certificate-authority
  • client-certificate
  • client-key

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдмреЗрд╕64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдВрдЬреА рдХреЗ рдирд╛рдо рдореЗрдВ рдкреНрд░рддреНрдпрдп рдЬреЛрдбрд╝рдХрд░ рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред -data, рдЕрд░реНрдерд╛рддред рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ certificate-authority-data рдЖрджрд┐

Kubeadm рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдг рдкрддреНрд░

рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ 1.15 рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдмрджреМрд▓рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ kubeadm рдЙрдкрдпреЛрдЧрд┐рддрд╛. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

kubeadm alpha kubeconfig user --client-name=mynewuser --apiserver-advertise-address 192.168.100.200

NB: рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкрддрд╛ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рд╣реИ /etc/kubernetes/manifests/kube-apiserver.yaml.

рдкрд░рд┐рдгрд╛рдореА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди stdout рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ ~/.kube/config рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ KUBECONFIG.

рдЧрд╣рд░реА рдЦреБрджрд╛рдИ

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд░реНрдгрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЧрд╣рдирддрд╛ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

рдкреНрд░рд╛рдзрд┐рдХрд░рдг

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

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

рдХреНрд▓рд╕реНрдЯрд░ рддрдХ рдкрд╣реБрдВрдЪ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрддрдорд╛рди (рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛) рддрд░реАрдХрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ RBAC (рднреВрдорд┐рдХрд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг). рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ 1.8. рдЖрд░рдмреАрдПрд╕реА рдПрдХ рдЕрдзрд┐рдХрд╛рд░ рдореЙрдбрд▓ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рдирд┐рд╖рд┐рджреНрдз рд╣реИ рдЬрд┐рд╕рдХреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред
рдЖрд░рдмреАрдПрд╕реА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ --authorization-mode=RBAC. рдкреИрд░рд╛рдореАрдЯрд░ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрде рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд рд╣реИ /etc/kubernetes/manifests/kube-apiserver.yaml, рдЕрдиреБрднрд╛рдЧ рдореЗрдВ command. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрд░рдмреАрдПрд╕реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: рдЖрдк рдЗрд╕реЗ рдореВрд▓реНрдп рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ authorization-mode (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдореЗрдВ kube-apiserver.yaml). рд╡реИрд╕реЗ, рдЗрд╕рдХреЗ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (node, webhook, always allow), рд▓реЗрдХрд┐рди рд╣рдо рдЙрдирдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред

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

рдЖрд░рдмреАрдПрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдкреАрдЖрдИ рдЗрдХрд╛рдЗрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • Role ╨╕ ClusterRole - рднреВрдорд┐рдХрд╛рдПрдБ рдЬреЛ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ:
  • Role рдЖрдкрдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ;
  • ClusterRole - рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░, рдХреНрд▓рд╕реНрдЯрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреИрд╕реЗ рдиреЛрдбреНрд╕, рдЧреИрд░-рд╕рдВрд╕рд╛рдзрди рдпреВрдЖрд░рдПрд▓ (рдпрд╛рдиреА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, /version, /logs, /api*);
  • RoleBinding ╨╕ ClusterRoleBinding - рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ Role ╨╕ ClusterRole рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдпрд╛ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдПред

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

рднреВрдорд┐рдХрд╛рдПрдБ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВ:

  • рдПрдкреАрдЖрдИ рд╕рдореВрд╣ - рджреЗрдЦреЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдПрдкреАрдЖрдИрдЧреНрд░реБрдкреНрд╕ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рджреНрд╡рд╛рд░рд╛ kubectl api-resources;
  • рд╕рдВрд╕рд╛рдзрди (рд╕рдВрд╕рд╛рдзрди: pod, namespace, deployment рдФрд░ рдЗрд╕реА рддрд░рд╣ред);
  • рдХреНрд░рд┐рдпрд╛ (verbs рдХреЗ: set, update рдЖрджрд┐).
  • рд╕рдВрд╕рд╛рдзрди рдирд╛рдо (resourceNames) - рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХред

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

рдЖрд░рдмреАрдПрд╕реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг

рд╕рд░рд▓ Role, рдЬреЛ рдЖрдкрдХреЛ рдкреЙрдбреНрд╕ рдХреА рд╕реВрдЪреА рдФрд░ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЙрдирдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ target-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: target-namespace
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

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

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  # ╤Б╨╡╨║╤Ж╨╕╨╕ "namespace" ╨╜╨╡╤В, ╤В╨░╨║ ╨║╨░╨║ ClusterRole ╨╖╨░╨┤╨╡╨╣╤Б╤В╨▓╤Г╨╡╤В ╨▓╨╡╤Б╤М ╨║╨╗╨░╤Б╤В╨╡╤А
  name: secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "watch", "list"]

рдЙрджрд╛рд╣рд░рдг RoleBinding, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ mynewuser рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдкреЙрдбреНрд╕ рдХреЛ "рдкрдврд╝реЗрдВ"ред my-namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: target-namespace
subjects:
- kind: User
  name: mynewuser # ╨╕╨╝╤П ╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╤В╨╡╨╗╤П ╨╖╨░╨▓╨╕╤Б╨╕╨╝╨╛ ╨╛╤В ╤А╨╡╨│╨╕╤Б╤В╤А╨░!
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role # ╨╖╨┤╨╡╤Б╤М ╨┤╨╛╨╗╨╢╨╜╨╛ ╨▒╤Л╤В╤М тАЬRoleтАЭ ╨╕╨╗╨╕ тАЬClusterRoleтАЭ
  name: pod-reader # ╨╕╨╝╤П Role, ╤З╤В╨╛ ╨╜╨░╤Е╨╛╨┤╨╕╤В╤Б╤П ╨▓ ╤В╨╛╨╝ ╨╢╨╡ namespace,
                   # ╨╕╨╗╨╕ ╨╕╨╝╤П ClusterRole, ╨╕╤Б╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╨╜╨╕╨╡ ╨║╨╛╤В╨╛╤А╨╛╨╣
                   # ╤Е╨╛╤В╨╕╨╝ ╤А╨░╨╖╤А╨╡╤И╨╕╤В╤М ╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╤В╨╡╨╗╤О
  apiGroup: rbac.authorization.k8s.io

рдЗрд╡реЗрдВрдЯ рдСрдбрд┐рдЯ

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

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдПрдмреАрд╕реА: рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рд▓реЗрдЦрд╛ рдкрд░реАрдХреНрд╖рд╛

рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдШрдЯрдХ рдкреНрд░рдореБрдЦ рд╣реИ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░. рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рд╕рднреА рдСрдкрд░реЗрд╢рди рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдЖрдк рдЗрди рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ "рдЬрдм рдЖрдк рдХреБрдмреЗрдХреНрдЯрд▓ рд░рди рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?'.

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдСрдбрд┐рдЯрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддреАрди рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рдирдХрд╛ рдиреАрдЪреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  • --audit-policy-file=/etc/kubernetes/policies/audit-policy.yaml
  • --audit-log-path=/var/log/kube-audit/audit.log
  • --audit-log-format=json

рдЗрди рддреАрди рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдбрд┐рдЯрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ: рд▓реЙрдЧ рд░реЛрдЯреЗрд╢рди рд╕реЗ рд▓реЗрдХрд░ рд╡реЗрдмрд╣реБрдХ рд╡рд┐рд╡рд░рдг рддрдХред рд▓реЙрдЧ рд░реЛрдЯреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

  • --audit-log-maxbackup=10
  • --audit-log-maxsize=100
  • --audit-log-maxage=7

рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ - рдЖрдк рд╕рднреА рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреВрдм-рдПрдкрд┐рд╕рд░реНрд╡рд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг.

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ /etc/kubernetes/manifests/kube-apiserver.yaml), рдЕрдиреБрднрд╛рдЧ рдореЗрдВ command. рдЖрдЗрдП 3 рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ рдФрд░ рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:

  1. audit-policy-file - рдСрдбрд┐рдЯ рдиреАрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА YAML рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрдеред рд╣рдо рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдмрд╛рдж рдореЗрдВ рд▓реМрдЯреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрднреА рдореИрдВ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
      volumeMounts:
        - mountPath: /etc/kubernetes/policies
          name: policies
          readOnly: true
      volumes:
      - hostPath:
          path: /etc/kubernetes/policies
          type: DirectoryOrCreate
        name: policies
  2. audit-log-path - рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде. рдкрде рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рднреА рд╕реБрд▓рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рдорд╛рдЙрдВрдЯрд┐рдВрдЧ рдХрд╛ рд╡рд░реНрдгрди рдЙрд╕реА рддрд░рд╣ рдХрд░рддреЗ рд╣реИрдВ:
      volumeMounts:
        - mountPath: /var/log/kube-audit
          name: logs
          readOnly: false
      volumes:
      - hostPath:
          path: /var/log/kube-audit
          type: DirectoryOrCreate
        name: logs
  3. audit-log-format - рдСрдбрд┐рдЯ рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдкред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ json, рд▓реЗрдХрд┐рди рд▓реАрдЧреЗрд╕реА рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╛рд░реВрдк рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ (legacy).

рд▓реЗрдЦрд╛рдкрд░реАрдХреНрд╖рд╛ рдиреАрддрд┐

рдЕрдм рд▓реЙрдЧрд┐рдВрдЧ рдиреАрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рд▓реЗрдЦрд╛рдкрд░реАрдХреНрд╖рд╛ рдиреАрддрд┐ рдХреА рдкрд╣рд▓реА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ level, рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░. рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • None - рд▓реЙрдЧ рди рдХрд░реЗрдВ;
  • Metadata - рд▓реЙрдЧ рдЕрдиреБрд░реЛрдз рдореЗрдЯрд╛рдбреЗрдЯрд╛: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЕрдиреБрд░реЛрдз рд╕рдордп, рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрди (рдкреЙрдб, рдиреЗрдорд╕реНрдкреЗрд╕, рдЖрджрд┐), рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░ (рдХреНрд░рд┐рдпрд╛), рдЖрджрд┐;
  • Request - рд▓реЙрдЧ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп;
  • RequestResponse - рд▓реЙрдЧ рдореЗрдЯрд╛рдбреЗрдЯрд╛, рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдпред

рдЕрдВрддрд┐рдо рджреЛ рд╕реНрддрд░ (Request ╨╕ RequestResponse) рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд▓реЙрдЧ рди рдХрд░реЗрдВ рдЬрд┐рдирдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рддрдерд╛рдХрдерд┐рдд рдЧреИрд░-рд╕рдВрд╕рд╛рдзрди рдпреВрдЖрд░рдПрд▓ рддрдХ рдкрд╣реБрдВрдЪ) рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред

рд╕рд╛рде рд╣реА рд╕рднреА рдЕрдиреБрд░реЛрдз рдкреВрд░реЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХрдИ рдЪрд░рдг:

  • RequestReceived - рд╡рд╣ рдЪрд░рдг рдЬрдм рдЕрдиреБрд░реЛрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрднреА рддрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  • ResponseStarted - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, watch);
  • ResponseComplete - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдИ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рднреЗрдЬреА рдЬрд╛рдПрдЧреА;
  • Panic - рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рдиреЗ рдкрд░ рдШрдЯрдирд╛рдПрдБ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред

рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ omitStages.

рдПрдХ рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреЙрд▓рд┐рд╕реА рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рдорд┐рд▓рд╛рди рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрдпреВрдмрд▓реЗрдЯ рдбреЗрдореЙрди рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рдХреЛрдИ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рд╣реИ: рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛. рдкреЙрд▓рд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЪреВрдВрдХрд┐ рдПрдкреАрдЖрдИ-рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╕реНрдереИрддрд┐рдХ рдлрд▓реА, рдЯреАрдо kubectl delete рдЗрд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдиреЗрдЧрд╛. рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ docker stop рдХреНрдпреВрдм-рдорд╛рд╕реНрдЯрд░реНрд╕ рдкрд░, рдЬрд╣рд╛рдВ рдСрдбрд┐рдЯ рдиреАрддрд┐ рдмрджрд▓ рджреА рдЧрдИ рд╣реИ:

docker stop $(docker ps | grep k8s_kube-apiserver | awk '{print $1}')

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

рдиреАрддрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг

рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЗрдЦреЗрдВред

рдпрд╣рд╛рдБ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рд╣реИ policyрд╕реНрддрд░ рдкрд░ рд╕рдм рдХреБрдЫ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Metadata:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata

рдиреАрддрд┐ рдореЗрдВ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (Users ╨╕ ServiceAccounts) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕реНрддрд░ рдкрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рд▓реЙрдЧ рдХрд░реЗрдВрдЧреЗ Request:

apiVersion: audit.k8s.io/v1
kind: Policy
rules:
  - level: None
    userGroups:
      - "system:serviceaccounts"
      - "system:nodes"
    users:
      - "system:anonymous"
      - "system:apiserver"
      - "system:kube-controller-manager"
      - "system:kube-scheduler"
  - level: Request

рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:

  • рдирд╛рдорд╕реНрдерд╛рди (namespaces);
  • рдХреНрд░рд┐рдпрд╛ (verbs рдХреЗ: get, update, delete рдФрд░ рджреВрд╕рд░реЗ);
  • рд╕рдВрд╕рд╛рдзрди (рд╕рдВрд╕рд╛рдзрдирдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: pod, configmaps рдЖрджрд┐) рдФрд░ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ (apiGroups).

рдзреНрдпрд╛рди! рд╕рдВрд╕рд╛рдзрди рдФрд░ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣ (рдПрдкреАрдЖрдИ рд╕рдореВрд╣, рдпрд╛рдиреА рдПрдкреАрдЧреНрд░реБрдк), рд╕рд╛рде рд╣реА рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдЙрдирдХреЗ рд╕рдВрд╕реНрдХрд░рдг, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

kubectl api-resources
kubectl api-versions

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдбрд┐рдЯ рдиреАрддрд┐ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╣реИ рдЕрд▓реАрдмрд╛рдмрд╛ рдХреНрд▓рд╛рдЙрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг:

apiVersion: audit.k8s.io/v1beta1
kind: Policy
# ╨Э╨╡ ╨╗╨╛╨│╨╕╤А╨╛╨▓╨░╤В╤М ╤Б╤В╨░╨┤╨╕╤О RequestReceived
omitStages:
  - "RequestReceived"
rules:
  # ╨Э╨╡ ╨╗╨╛╨│╨╕╤А╨╛╨▓╨░╤В╤М ╤Б╨╛╨▒╤Л╤В╨╕╤П, ╤Б╤З╨╕╤В╨░╤О╤Й╨╕╨╡╤Б╤П ╨╝╨░╨╗╨╛╨╖╨╜╨░╤З╨╕╤В╨╡╨╗╤М╨╜╤Л╨╝╨╕ ╨╕ ╨╜╨╡ ╨╛╨┐╨░╤Б╨╜╤Л╨╝╨╕:
  - level: None
    users: ["system:kube-proxy"]
    verbs: ["watch"]
    resources:
      - group: "" # ╤Н╤В╨╛ api group ╤Б ╨┐╤Г╤Б╤В╤Л╨╝ ╨╕╨╝╨╡╨╜╨╡╨╝, ╨║ ╨║╨╛╤В╨╛╤А╨╛╨╝╤Г ╨╛╤В╨╜╨╛╤Б╤П╤В╤Б╤П
                  # ╨▒╨░╨╖╨╛╨▓╤Л╨╡ ╤А╨╡╤Б╤Г╤А╤Б╤Л Kubernetes, ╨╜╨░╨╖╤Л╨▓╨░╨╡╨╝╤Л╨╡ тАЬcoreтАЭ
        resources: ["endpoints", "services"]
  - level: None
    users: ["system:unsecured"]
    namespaces: ["kube-system"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["configmaps"]
  - level: None
    users: ["kubelet"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    userGroups: ["system:nodes"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["nodes"]
  - level: None
    users:
      - system:kube-controller-manager
      - system:kube-scheduler
      - system:serviceaccount:kube-system:endpoint-controller
    verbs: ["get", "update"]
    namespaces: ["kube-system"]
    resources:
      - group: "" # core
        resources: ["endpoints"]
  - level: None
    users: ["system:apiserver"]
    verbs: ["get"]
    resources:
      - group: "" # core
        resources: ["namespaces"]
  # ╨Э╨╡ ╨╗╨╛╨│╨╕╤А╨╛╨▓╨░╤В╤М ╨╛╨▒╤А╨░╤Й╨╡╨╜╨╕╤П ╨║ read-only URLs:
  - level: None
    nonResourceURLs:
      - /healthz*
      - /version
      - /swagger*
  # ╨Э╨╡ ╨╗╨╛╨│╨╕╤А╨╛╨▓╨░╤В╤М ╤Б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╤П, ╨╛╤В╨╜╨╛╤Б╤П╤Й╨╕╨╡╤Б╤П ╨║ ╤В╨╕╨┐╤Г ╤А╨╡╤Б╤Г╤А╤Б╨╛╨▓ тАЬ╤Б╨╛╨▒╤Л╤В╨╕╤ПтАЭ:
  - level: None
    resources:
      - group: "" # core
        resources: ["events"]
  # ╨а╨╡╤Б╤Г╤А╤Б╤Л ╤В╨╕╨┐╨░ Secret, ConfigMap ╨╕ TokenReview ╨╝╨╛╨│╤Г╤В ╤Б╨╛╨┤╨╡╤А╨╢╨░╤В╤М  ╤Б╨╡╨║╤А╨╡╤В╨╜╤Л╨╡ ╨┤╨░╨╜╨╜╤Л╨╡,
  # ╨┐╨╛╤Н╤В╨╛╨╝╤Г ╨╗╨╛╨│╨╕╤А╤Г╨╡╨╝ ╤В╨╛╨╗╤М╨║╨╛ ╨╝╨╡╤В╨░╨┤╨░╨╜╨╜╤Л╨╡ ╤Б╨▓╤П╨╖╨░╨╜╨╜╤Л╤Е ╤Б ╨╜╨╕╨╝╨╕ ╨╖╨░╨┐╤А╨╛╤Б╨╛╨▓
  - level: Metadata
    resources:
      - group: "" # core
        resources: ["secrets", "configmaps"]
      - group: authentication.k8s.io
        resources: ["tokenreviews"]
  # ╨Ф╨╡╨╣╤Б╤В╨▓╨╕╤П ╤В╨╕╨┐╨░ get, list ╨╕ watch ╨╝╨╛╨│╤Г╤В ╨▒╤Л╤В╤М ╤А╨╡╤Б╤Г╤А╤Б╨╛╤С╨╝╨║╨╕╨╝╨╕; ╨╜╨╡ ╨╗╨╛╨│╨╕╤А╤Г╨╡╨╝ ╨╕╤Е
  - level: Request
    verbs: ["get", "list", "watch"]
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # ╨г╤А╨╛╨▓╨╡╨╜╤М ╨╗╨╛╨│╨╕╤А╨╛╨▓╨░╨╜╨╕╤П ╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О ╨┤╨╗╤П ╤Б╤В╨░╨╜╨┤╨░╤А╤В╨╜╤Л╤Е ╤А╨╡╤Б╤Г╤А╤Б╨╛╨▓ API
  - level: RequestResponse
    resources:
      - group: "" # core
      - group: "admissionregistration.k8s.io"
      - group: "apps"
      - group: "authentication.k8s.io"
      - group: "authorization.k8s.io"
      - group: "autoscaling"
      - group: "batch"
      - group: "certificates.k8s.io"
      - group: "extensions"
      - group: "networking.k8s.io"
      - group: "policy"
      - group: "rbac.authorization.k8s.io"
      - group: "settings.k8s.io"
      - group: "storage.k8s.io"
  # ╨г╤А╨╛╨▓╨╡╨╜╤М ╨╗╨╛╨│╨╕╤А╨╛╨▓╨░╨╜╨╕╤П ╨┐╨╛ ╤Г╨╝╨╛╨╗╤З╨░╨╜╨╕╤О ╨┤╨╗╤П ╨▓╤Б╨╡╤Е ╨╛╤Б╤В╨░╨╗╤М╨╜╤Л╤Е ╨╖╨░╨┐╤А╨╛╤Б╨╛╨▓
  - level: Metadata

рдСрдбрд┐рдЯ рдиреАрддрд┐ рдХрд╛ рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреАрд╕реАрдИ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓.

рдСрдбрд┐рдЯ рдШрдЯрдирд╛рдУрдВ рдкрд░ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рд╕рдВрднрд╡ рд╣реИ рд╡реЗрдмрд╣реБрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ. рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ, рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо

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

рдкреБрдирд╢реНрдЪ

рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ