рдЗрд╕реНрдЯрд┐рдпреЛ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдорд╛рдЗрдХреНрд░реЛрд╕реЛрд░реНрд╡рд┐рд╕ рдХреЗ рд▓рд┐рдПред рднрд╛рдЧ 3



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

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

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



рдирдИ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ, рд╣рдо рд╡реНрдпрд╛рдкрд╛рд░ рдореВрд▓реНрдп рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЕрдВрддрд┐рдо рдкрд░рддреЛрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗ: рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг - рдФрд░ рдЗрд╕реНрддрд┐рдпреЛ рдореЗрдВ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдирдВрдж рд╣реИ!

рдЗрд╕реНрддрд┐рдпреЛ рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг


рдореБрдЭреЗ рдХрднреА рднреА рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдЧрд╛ред рдЗрди рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рд░реЛрдорд╛рдВрдЪрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ рдкреНрд░реЗрд░рдгрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддрд┐рдпреЛ рдХреНрдпрд╛ рддрдХрдиреАрдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

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

рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ? рдЪрд▓реЛ рдЕрдВрджрд░ рджреЗрдЦреЛ!

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


рд╣рдо Auth0 рдХреЛ рдкрд╣рдЪрд╛рди рдФрд░ рдЕрднрд┐рдЧрдо рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдЬ рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд┐рд╕реА рднреА рдЕрдиреНрдп OpenID рдХрдиреЗрдХреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: KeyCloak, IdentityServer, рдФрд░ рдХрдИ рдЕрдиреНрдпред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде Auth0 рдкреЛрд░реНрдЯрд▓ рдкрд░ рдЬрд╛рдПрдВ , рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ (рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ - "рдХрд┐рд░рд╛рдпреЗрджрд╛рд░", рддрд╛рд░реНрдХрд┐рдХ рдЕрд▓рдЧрд╛рд╡ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдВ , рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЗрдЦреЗрдВред рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ) рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди> рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдРрдк рдкрд░ рдЬрд╛рдПрдВ , рдбреЛрдореЗрди рдХрд╛ рдЪрдпрди, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред :



рдЗрд╕ рдбреЛрдореЗрди рдХреЛ resource-manifests/istio/security/auth-policy.yaml ( рд╕реНрд░реЛрдд ) рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

 apiVersion: authentication.istio.io/v1alpha1 kind: Policy metadata: name: auth-policy spec: targets: - name: sa-web-app - name: sa-feedback origins: - jwt: issuer: "https://{YOUR_DOMAIN}/" jwksUri: "https://{YOUR_DOMAIN}/.well-known/jwks.json" principalBinding: USE_ORIGIN 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╛рдпрд▓рдЯ (рдЗрд╕реНрдЯрд┐рдпреЛ рдореЗрдВ рд▓рдЧрднрдЧ рддреАрди рдмреБрдирд┐рдпрд╛рджреА рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред) рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрддреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ: sa-web-app рдФрд░ sa-feedback ред рдЙрд╕реА рд╕рдордп, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди sa-frontend рдХреЗ Envoys рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЛ рдЕрдирдзрд┐рдХреГрдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдиреАрддрд┐ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 $ kubectl apply -f resource-manifests/istio/security/auth-policy.yaml policy.authentication.istio.io тАЬauth-policyтАЭ created 

рдкреГрд╖реНрда рдкрд░ рд▓реМрдЯреЗрдВ рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ - рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ 401 рдЕрдирдзрд┐рдХреГрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЕрдм рд╣рдо Auth0 рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ


рдЕрдВрддрд┐рдо-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ 0 рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд╕реЗрд╡рд╛рдУрдВ (рд╕рдореАрдХреНрд╖рд╛, рд╡рд┐рд╡рд░рдг рдФрд░ рд░реЗрдЯрд┐рдВрдЧ) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛ред рдПрдХ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдкреЛрд░реНрдЯрд▓> рдПрдкреАрдЖрдИ> рдПрдкреАрдЖрдИ рдмрдирд╛рдПрдВ рдФрд░ рдлреЙрд░реНрдо рднрд░реЗрдВ:



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

  • рд╢реНрд░реЛрддрд╛ : {Your_AUDIENCE}

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

рдпрд╣рд╛рдБ рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

  • рдбреЛрдореЗрди : {your_DOMAIN}
  • рдЧреНрд░рд╛рд╣рдХ рдЖрдИрдбреА : {Your_CLIENT_ID}

рдСрд▓реНрдЯреЗрдб рдХреЙрд▓рдмреИрдХ URLs рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ ( рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд URL) рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЙрд╕ URL рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣реИ:

 http://{EXTERNAL_IP}/callback 

рдФрд░ рдЕрдиреБрдорддрд┐ рд▓реЙрдЧрдЖрдЙрдЯ URL рдХреЗ рд▓рд┐рдП (рд▓реЙрдЧ рдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд URL), рдЬреЛрдбрд╝реЗрдВ:

 http://{EXTERNAL_IP}/logout 

рдЪрд▓реЛ рдЖрдЧреЗ рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВред

рд╕реАрдорд╛рдВрдд рдЕрджреНрдпрддрди


[istio-mastery] рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА auth0 рдмреНрд░рд╛рдВрдЪ рдкрд░ [istio-mastery] ред рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреЛрдб рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдореЗрдВ JWT рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ( App.js ):

 analyzeSentence() { fetch('/sentiment', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${auth.getAccessToken()}` // Access Token }, body: JSON.stringify({ sentence: this.textField.getValue() }) }) .then(response => response.json()) .then(data => this.setState(data)); } 

sa-frontend/src/services/Auth.js рдореЗрдВ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдкрдЯрд▓ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, sa-frontend/src/services/Auth.js рдФрд░ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓реЗрдВ рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рд▓рд┐рдЦреЗ рдереЗ ( Auth.js ):

 const Config = { clientID: '{YOUR_CLIENT_ID}', domain:'{YOUR_DOMAIN}', audience: '{YOUR_AUDIENCE}', ingressIP: '{EXTERNAL_IP}' //      } 

рдЖрд╡реЗрджрди рддреИрдпрд╛рд░ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдмрдирд╛рддреЗ рдФрд░ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рдЕрдкрдиреА рдбреЙрдХрд░ рдЖрдИрдбреА рдХреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ:

 $ docker build -f sa-frontend/Dockerfile \ -t $DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0 \ sa-frontend $ docker push $DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0 $ kubectl set image deployment/sa-frontend \ sa-frontend=$DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0 

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

рдЪрд▓реЛ рдЕрдЧрд▓рд╛ рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ - рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рдорд╛рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдзрд┐рдХрд░рдг реж


рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреМрди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Istio рдЗрд╕рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рдмрдирд╛рдПрдВрдЧреЗ (рдиреАрдЪреЗ рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ):

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛) - рдХреЗрд╡рд▓ SA-WebApp рдФрд░ SA-Frontend рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде;
  • рдореЙрдбрд░реЗрдЯрд░ - рддреАрдиреЛрдВ рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рдеред


рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛

рдЗрди рд╕рдореВрд╣реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Auth0 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Istio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

Auth0 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕


Auth0 рдкреЛрд░реНрдЯрд▓ рдкрд░, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рдЬрд╛рдПрдВ рдФрд░ Auth0 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рдЬрд╛рдПрдВ , рдФрд░ рд╡рд╣рд╛рдВ - рдКрдкрд░ рджрд╛рдИрдВ рдУрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдФрд░ рдЙрдЪрд┐рдд рдореЗрдиреВ рд╡рд┐рдХрд▓реНрдк (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди) рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдЬрд╛рдПрдВред рд╕рдореВрд╣ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд┐рдпрдо рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред



рд╕рдореВрд╣ рдирд┐рд░реНрдорд╛рдг


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

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

рдЯреЛрдХрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рджрд╛рд╡рд╛ рдЬреЛрдбрд╝реЗрдВ


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

рдПрдХ рдирд┐рдпрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, Auth0 рдкреЛрд░реНрдЯрд▓ рдЯреВ рд░реВрд▓реНрд╕ рдкрд░ рдЬрд╛рдПрдВ , Create Rule рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рд╕реЗ рдПрдХ рдЦрд╛рд▓реА рдирд┐рдпрдо рдЪреБрдиреЗрдВред



рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдирдП рдРрдб рдЧреНрд░реБрдк рдХреНрд▓реЗрдо рдирд┐рдпрдо ( namespacedGroup.js ) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред

 function (user, context, callback) { context.accessToken['https://sa.io/group'] = user.groups[0]; return callback(null, user, context); } 

рдиреЛрдЯ : рдпрд╣ рдХреЛрдб рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд╣рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╕реНрдЯрдо рджрд╛рд╡реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рддрд╣рдд, рдЬреИрд╕рд╛ рдХрд┐ Auth0 рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред

рдирд┐рдпрдо рдкреГрд╖реНрда рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрди рдХреНрд░рдо рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рджреЛ рдирд┐рдпрдо рд╣реИрдВ:

  • auth0-рдкреНрд░рд╛рдзрд┐рдХрд░рдг-рд╡рд┐рд╕реНрддрд╛рд░
  • рд╕рдореВрд╣ рджрд╛рд╡рд╛ рдЬреЛрдбрд╝реЗрдВ

рдпрд╣ рдЖрджреЗрд╢ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдореВрд╣ рдлрд╝реАрд▓реНрдб рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдСрд░рд▓-рдСрдереЛрд░рд╛рдЗрдЬрд╝реЗрд╢рди-рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рдпрдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реЗ рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рджрд╛рд╡реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкрд╣реБрдВрдЪ рдЯреЛрдХрди рд╣реИ:

 { "https://sa.io/group": "Moderators", "iss": "https://sentiment-analysis.eu.auth0.com/", "sub": "google-oauth2|196405271625531691872" // [  ] } 

рдЕрдм рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣реБрдВрдЪ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Envoy рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рдХреЛ рджрд┐рдП рдЧрдП рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдореЗрдВ рджрд╛рд╡реЗ ( https://sa.io/group ) рд╕реЗ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд▓реЗрдЦ рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╖рдп рд╣реИред

рдЗрд╕реНрдЯрд┐рдпреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдиреНрдпрд╛рд╕


рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Istio рдХреЗ рд▓рд┐рдП RBAC рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 apiVersion: "rbac.istio.io/v1alpha1" kind: RbacConfig metadata: name: default spec: mode: 'ON_WITH_INCLUSION' # 1 inclusion: services: # 2 - "sa-frontend.default.svc.cluster.local" - "sa-web-app.default.svc.cluster.local" - "sa-feedback.default.svc.cluster.local" 

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
  • 1 - Inclusion рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЖрд░рдмреАрдПрд╕реА рд╕рдХреНрд╖рдо рдХрд░реЗрдВ;
  • 2 - рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВред


рд╣рдо рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:

 $ kubectl apply -f resource-manifests/istio/security/enable-rbac.yaml rbacconfig.rbac.istio.io/default created 

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

рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ SA-Frontend рдФрд░ SA-WebApp рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрд╕реНрддрд┐рдпреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛:

  • ServiceRole - рдЙрди рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╣реИ;
  • ServiceRoleBinding - рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ ServiceRole рдХрд┐рд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ ( servicerole.yaml ):

 apiVersion: "rbac.istio.io/v1alpha1" kind: ServiceRole metadata: name: regular-user namespace: default spec: rules: - services: - "sa-frontend.default.svc.cluster.local" - "sa-web-app.default.svc.cluster.local" paths: ["*"] methods: ["*"] 

рдФрд░ regular-user-binding рдорд╛рдзреНрдпрдо regular-user-binding рдкреГрд╖реНрда рдкрд░ рд╕рднреА рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ ServiceRole рд▓рд╛рдЧреВ рдХрд░реЗрдВ ( рдирд┐рдпрдорд┐рдд-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реЗрд╡рд╛-рднреВрдорд┐рдХрд╛-рдмрд╛рдзреНрдпрдХрд╛рд░реА-рд╕рддреНрдпрдо ):

 apiVersion: "rbac.istio.io/v1alpha1" kind: ServiceRoleBinding metadata: name: regular-user-binding namespace: default spec: subjects: - user: "*" roleRef: kind: ServiceRole name: "regular-user" 

рдХреНрдпрд╛ "рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ" рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдЕрдирдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ SA WebApp рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ? рдирд╣реАрдВ, рдкреЙрд▓рд┐рд╕реА JWT рдЯреЛрдХрди рдХреА рд╡реИрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧреАред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ:

 $ kubectl apply -f resource-manifests/istio/security/user-role.yaml servicerole.rbac.istio.io/regular-user created servicerolebinding.rbac.istio.io/regular-user-binding created 

рдордзреНрдпрд╕реНрдереЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рд╡рд┐рдиреНрдпрд╛рд╕


рдордзреНрдпрд╕реНрдереЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ ( mod-service-role.yaml ) рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 apiVersion: "rbac.istio.io/v1alpha1" kind: ServiceRole metadata: name: mod-user namespace: default spec: rules: - services: ["*"] paths: ["*"] methods: ["*"] 

рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд╛ рдПрдХ рджрд╛рд╡рд╛ рд╣реИ https://sa.io/group рдЬрд┐рд╕рдХрд╛ рдорд╛рди рдореЙрдбрд░реЗрдЯрд░реНрд╕ ( mod- рд╕реЗрд╡рд╛-рднреВрдорд┐рдХрд╛-рдмрд╛рдЗрдВрдбрд┐рдВрдЧ .yaml ) рдХреЗ рд╕рд╛рде рд╣реИ:

 apiVersion: "rbac.istio.io/v1alpha1" kind: ServiceRoleBinding metadata: name: mod-user-binding namespace: default spec: subjects: - properties: request.auth.claims[https://sa.io/group]: "Moderators" roleRef: kind: ServiceRole name: "mod-user" 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ:

 $ kubectl apply -f resource-manifests/istio/security/mod-role.yaml servicerole.rbac.istio.io/mod-user created servicerolebinding.rbac.istio.io/mod-user-binding created 

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

рдЗрд╕ рднрд╛рдЧ рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖


рдЦреИрд░, рдЧрдВрднреАрд░рддрд╛ рд╕реЗ: рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрднреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓, рд╕рд░рд▓, рдорд╛рдкрдиреАрдп рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрдЦрд╛ рд╣реИ?

рдХреЗрд╡рд▓ рддреАрди Istio рд╕рдВрд╕рд╛рдзрди (RbacConfig, ServiceRole, рдФрд░ ServiceRoleBinding) рдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣реБрдВрдЪ рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд░ рдмреЗрд╣рддрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдереЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛:

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

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕реНрддрд┐рдпреЛ рдЯреАрдореЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╡реНрдпрд╛рдкрд╛рд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдмрд┐рдирд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝рдХрд░, рдЙрдиреНрд╣реЗрдВ рд╕реВрдХреНрд╖реНрдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдЖрд▓реЗрдЦ (рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ) рдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреНрдЮрд╛рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕реНрддрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдПред

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреА.рдПрд╕.


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

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


All Articles