рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ Kubernetes рдкреЙрдб: EKS IRSA рдмрдирд╛рдо AKS Workload Identity
рдПрдХ Kubernetes ServiceAccount рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ - AWS IRSA рдФрд░ Azure AKS Workload Identity рдХреЗ рдкреАрдЫреЗ OIDC рдлреЗрдбрд░реЗрд╢рди рдЯреНрд░рд╕реНрдЯ рдЪреЗрди, рдПрдХ-рд╕реЗ-рдПрдХ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЙрди рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдЖрдкрдХреА рдорд╛рдВрд╕рдкреЗрд╢реА рд╕реНрдореГрддрд┐ рдХреЛ рддреЛрдбрд╝рддреА рд╣реИрдВред
AWS рдФрд░ Azure рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рдкреЙрдб рдХреНрд▓рд╛рдЙрдб API рдХреЛ рд╕реНрд╡рдпрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдЯреЛрдХрди рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдЧреНрд░рд╣реАрдд рд░рд╣рд╕реНрдп рдХреЗ, рдЕрдкрдиреЗ Kubernetes ServiceAccount рдХреЛ рдПрдХ рдлреЗрдбрд░реЗрдЯреЗрдб рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рдореЗрдВ рдмрджрд▓рдХрд░ред AWS рдкрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ IRSA (IAM Roles for Service Accounts) рд╣реИ; Azure рдкрд░ рдпрд╣ Microsoft Entra Workload Identity (рдЕрдкреНрд░рдЪрд▓рд┐рдд aad-pod-identity рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА) рд╣реИред рдЕрдВрджрд░реВрдиреА рддреМрд░ рдкрд░ рджреЛрдиреЛрдВ рдПрдХ рд╣реА OIDC рдлреЗрдбрд░реЗрд╢рди рдЯреНрд░рд┐рдХ рд╣реИрдВ, рдФрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд░реНрдЬреЗ рд▓рдЧрднрдЧ рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрд╕реНрдХрд░рдг, рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдкрдврд╝рддреЗ рд╣реИрдВ: рдХреНрд▓рд╕реНрдЯрд░ рдПрдХ OpenID Connect рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб рдХреЗ
ServiceAccount рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддрд╛ рд╣реИ; рдХреНрд▓рд╛рдЙрдб рдХрд╛ рдкрд╣рдЪрд╛рди рдкреНрд░рджрд╛рддрд╛ рдЙрд╕ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреЛрдХрди рдХреЛ рдПрдХ
рдкрд╣рдЪрд╛рди рддрдХ рд╕реАрдорд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд▓рд╛рдЙрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд░рддрд╛ рд╣реИред AWS рдкрд╣рдЪрд╛рди рдХреЛ рдПрдХ IAM role рдХрд╣рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЯреНрд░рд╕реНрдЯ
рдкреЙрд▓рд┐рд╕реА рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ; Azure рдЗрд╕реЗ рдПрдХ user-assigned managed identity рдХрд╣рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдлреЗрдбрд░реЗрдЯреЗрдб рдкрд╣рдЪрд╛рди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓
рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред system:serviceaccount:<namespace>:<name> рд╡рд┐рд╖рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЛрдиреЛрдВ рдкрд░ рдореБрдЦреНрдп рдЖрдзрд╛рд░ рд╣реИред рддреАрди рдЪреАрдЬреЗрдВ рдЗрддрдиреА
рдЕрд▓рдЧ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░ рд╕рдХрддреА рд╣реИрдВ: Azure "OIDC рдкреНрд░рджрд╛рддрд╛" рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЙрдЧрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛрддреЗ рд╣реИрдВ, Azure рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдкреЙрдб рдкрд░ рдПрдХ рд▓реЗрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдХреЛ рдЦреАрдВрдЪрдирд╛ рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЙрдб
рдкрд░ рдЖрдкрдХреА рд╡рд░реНрдХрд▓реЛрдб рдкрд╣рдЪрд╛рди рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкрд╣рдЪрд╛рди рд╣реИред
рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХреА рдЧрдИ рд╕рдорд╕реНрдпрд╛
рдлреЗрдбрд░реЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкреЙрдб рдХреЛ рдХреНрд▓рд╛рдЙрдб рдЕрдиреБрдорддрд┐рдпрд╛рдБ рджреЗрдиреЗ рдХрд╛ рдорддрд▓рдм рдмреБрд░реЗ рд╡рд┐рдХрд▓реНрдк рдереЗ: рдПрдХ рд╕реНрдерд┐рд░ рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА рдХреЛ рдЗрдореЗрдЬ рдпрд╛ Secret рдореЗрдВ рдбрд╛рд▓рдирд╛ (рд▓реАрдХ, рд░реЛрдЯреЗрд╢рди рдХрд╛ рджрд░реНрдж), рдпрд╛ рдкреВрд░реЗ рдиреЛрдб рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рддрд╛рдХрд┐ рдЙрд╕ рдкрд░ рд╣рд░ рдкреЙрдб рдЗрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗ (рдХреЛрдИ рдЕрд▓рдЧрд╛рд╡ рдирд╣реАрдВ, рдЕрддреНрдпрдзрд┐рдХ рдУрд╡рд░-рд╕реНрдХреЛрдкреЗрдб)ред AWS-рд╕рд╛рдЗрдб рдХреЗ рд╕реНрдЯреЙрдкрдЧреИрдк kube2iam рдФрд░ kiam рдЬреИрд╕реЗ рдиреЛрдб-IMDS рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рдереЗ; Azure-рд╕рд╛рдЗрдб рд╡рд╛рд▓рд╛ aad-pod-identity рдерд╛ред рд╡реЗ рд╕рднреА рдиреЛрдб рдХреА рдкрд╣рдЪрд╛рди рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рддреЗ рдереЗ рдФрд░ рдЬрдЯрд┐рд▓ рддрдерд╛ рд░реЗрд╕-рдкреНрд░реЛрди рдереЗред
рдлреЗрдбрд░реЗрд╢рди рдЗрд╕реЗ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдЯреНрд░рд╕реНрдЯ рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред kubelet рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд, рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ OIDC рдЯреЛрдХрди рдХреЛ рдкреЙрдб рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреЙрдб рдХреЗ ServiceAccount рддрдХ рд╕реАрдорд┐рдд рд╣реЛрддрд╛ рд╣реИред рдХреНрд▓рд╛рдЙрдб IdP рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЙрд╕ рдЯреЛрдХрди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рдЯреЛрдХрди рдХрд╛ рдЬрд╛рд░реАрдХрд░реНрддрд╛, рд╡рд┐рд╖рдп рдФрд░ рджрд░реНрд╢рдХ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЯреНрд░рд╕реНрдЯ рдирд┐рдпрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдареАрдХ рдПрдХ рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдХрд╣реАрдВ рднреА рдХреЛрдИ рд░рд╣рд╕реНрдп рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ; рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди рд╕реНрд╡рддрдГ рдШреВрдорддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреАрд╡рдирдХрд╛рд▓ рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯрд╛) рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд╣рд░ рдмреЗрдХрд╛рд░ рд╣реИред
рд╕рд╛рдЭрд╛ рддрдВрддреНрд░: OIDC рдлреЗрдбрд░реЗрд╢рди
рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдХрд▓реЛрдб-рдкрд╣рдЪрд╛рди рд╕реЗрдЯрдЕрдк, рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЙрдб рдкрд░, рдПрдХ рд╣реА рдЯреНрд░рд╕реНрдЯ рддреНрд░рд┐рдХреЛрдг рд╣реИ:
- рдХреНрд▓рд╕реНрдЯрд░ рдПрдХ OIDC рдЬрд╛рд░реАрдХрд░реНрддрд╛ рд╣реИред рдпрд╣
<issuer-url>/.well-known/openid-configurationрдкрд░ рдПрдХ рдбрд┐рд╕реНрдХрд╡рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ JWKS рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдпрд╣ ServiceAccount рдЯреЛрдХрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдЬрд╛рд░реАрдХрд░реНрддрд╛ URL рдЯреНрд░рд╕реНрдЯ рдПрдВрдХрд░ рд╣реИред - рдХреНрд▓рд╛рдЙрдб IdP рдЙрд╕ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ
(subject, audience)рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдПред рд╡рд┐рд╖рдп рдпрд╣ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ ServiceAccount, рдФрд░ рджрд░реНрд╢рдХ рдпрд╣ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИред - рд╡рд░реНрдХрд▓реЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди рдХреЛ рдХреНрд▓рд╛рдЙрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд░рддрд╛ рд╣реИред SDK kubelet рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЧрдИ рдЯреЛрдХрди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреНрд▓рд╛рдЙрдб рдХреЗ рдЯреЛрдХрди рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдПрдХрд▓ рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдХреА рд╕рдм рдирд╛рдордХрд░рдг рд╣реИред рдпрд╣рд╛рдБ рдирдХреНрд╢рд╛ рд╣реИ, рдкрдВрдХреНрддрд┐ рджрд░ рдкрдВрдХреНрддрд┐ рдЪрд▓рд╛ рдЧрдпрд╛ред
рдПрдХ-рд╕реЗ-рдПрдХ рдореИрдк
- Kubernetes рдкрдХреНрд╖ред AWS рдкрд░ рдЖрдк ServiceAccount рдХреЛ
eks.amazonaws.com/role-arn: <role arn>рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред Azure рдкрд░ рдЖрдк рдЗрд╕реЗazure.workload.identity/client-id: <managed identity client id>рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреЙрдб рдХреЛazure.workload.identity/use: "true"рдХреЗ рд╕рд╛рде рд▓реЗрдмрд▓ рдХрд░рддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдкреЙрдб рдХреЛ рдПрдХ рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ; Azure рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреЙрдб рд▓реЗрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдиреАрдЪреЗ рдЗрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ)ред - "OIDC рдкреНрд░рджрд╛рддрд╛ред" AWS рдкрд░ рдпрд╣ EKS рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ OIDC рдЬрд╛рд░реАрдХрд░реНрддрд╛ рд╣реИ рдЬреЛ IAM рдореЗрдВ рдПрдХ рдмрд╛рд░ OIDC рдкрд╣рдЪрд╛рди рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ
рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред Azure рдкрд░ рдпрд╣ рджреЛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ: OIDC рдЬрд╛рд░реАрдХрд░реНрддрд╛ (
oidcIssuerProfile.enabled) рдЬреЛ рдЬрд╛рд░реАрдХрд░реНрддрд╛ URL рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрдХрд▓реЛрдб-рдкрд╣рдЪрд╛рди рдРрдб-рдСрди (securityProfile.workloadIdentity.enabled), рдПрдХ рдореНрдпреВрдЯреЗрдЯрд┐рдВрдЧ рдПрдбрдорд┐рд╢рди рд╡реЗрдмрд╣реБрдХред рджреЛрдиреЛрдВ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред - рдкрд╣рдЪрд╛рдиред AWS: рдПрдХ IAM roleред Azure: рдПрдХ user-assigned managed identity (UAMI)ред рдпрд╣ рд╡рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдкреЙрдб рдмрди рдЬрд╛рддрд╛ рд╣реИред
- рдЯреНрд░рд╕реНрдЯ рдирд┐рдпрдоред AWS: IAM role рдХреА рдЯреНрд░рд╕реНрдЯ рдкреЙрд▓рд┐рд╕реА OIDC рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдлреЗрдбрд░реЗрдЯ рдХрд░рддреА рд╣реИ рдФрд░
sub = system:serviceaccount:<ns>:<sa>рдФрд░aud = sts.amazonaws.comрдХреЛ рдкрд┐рди рдХрд░рддреА рд╣реИред Azure: UAMI рдкрд░ рдПрдХ рдлреЗрдбрд░реЗрдЯреЗрдб рдкрд╣рдЪрд╛рди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЬрд┐рд╕рдореЗрдВissuer = <cluster OIDC issuer url>,subject = system:serviceaccount:<ns>:<sa>, рдФрд░audience = api://AzureADTokenExchangeрд╣реЛрддрд╛ рд╣реИред рд╡рд╣реА рддреАрди рдлрд╝реАрд▓реНрдб, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиред - рдЕрдиреБрдорддрд┐рдпрд╛рдБред AWS: рднреВрдорд┐рдХрд╛ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ IAM policy (рдЗрд╕ S3 рдмрдХреЗрдЯ рдХреЛ рдкрдврд╝реЗрдВ, рдЗрд╕ ECR рд░реЗрдкреЛ рд╕реЗ рдЦреАрдВрдЪреЗрдВ)ред Azure: рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ RBAC role assignments (Key Vault Secrets User, Storage Blob Data Reader, AcrPull, ...)ред рдпрд╣ рдЧрд╣рд░рд╛ рджрд╛рд░реНрд╢рдирд┐рдХ рд╡рд┐рднрд╛рдЬрди рд╣реИ - AWS рдкрд╣рдЪрд╛рди рд╕реЗ рдПрдХ рдиреАрддрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ; Azure рд╕рдВрд╕рд╛рдзрди рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдПрдХ рднреВрдорд┐рдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рдПрдХреНрд╕рдЪреЗрдВрдЬред AWS: SDK рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди рдХреЗ рд╕рд╛рде
sts:AssumeRoleWithWebIdentityрдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред Azure: SDKDefaultAzureCredential/WorkloadIdentityCredentialрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ Entra рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди рдХреЛ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрд╕рд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рд╢реВрдиреНрдп рд░рд╣рд╕реНрдп рд╕рд╛рдордЧреНрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рд╢реЗрд╖ рднрд╛рдЧ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЙрдб рдХреЛ рдЕрдВрдд рддрдХ рдЪрд▓рддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрди рдЕрдВрддрд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддреЗ рд╣реИрдВред
рд╡реЙрдХ-рдереНрд░реВ: AWS EKS IRSA, рдЕрдВрдд рддрдХ
рдЯреБрдХрдбрд╝реЗ, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИ:
1. рдХреНрд▓рд╕реНрдЯрд░ OIDC рдЬрд╛рд░реАрдХрд░реНрддрд╛ред рдкреНрд░рддреНрдпреЗрдХ EKS рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ
https://oidc.eks.<region>.amazonaws.com/id/<hash> URL рдкрд░ред рдЖрдк рдЗрд╕реЗ IAM рдореЗрдВ рдПрдХ OIDC рдкрд╣рдЪрд╛рди рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрд╛рд░
рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ IAM рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЯреЛрдХрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдЧрд╛ред
2. IAM role рдФрд░ рдЗрд╕рдХреА рдЯреНрд░рд╕реНрдЯ рдкреЙрд▓рд┐рд╕реАред рдЯреНрд░рд╕реНрдЯ рдкреЙрд▓рд┐рд╕реА рд╡рд╣ рд╣реИ рдЬреЛ рднреВрдорд┐рдХрд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ ServiceAccount рджреНрд╡рд╛рд░рд╛ рдЧреНрд░рд╣рдг рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддреА рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ:
{
"Effect": "Allow",
"Principal": { "Federated": "arn:aws:iam::<account>:oidc-provider/oidc.eks.<region>.amazonaws.com/id/<hash>" },
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.eks.<region>.amazonaws.com/id/<hash>:sub": "system:serviceaccount:apps:checkout",
"oidc.eks.<region>.amazonaws.com/id/<hash>:aud": "sts.amazonaws.com"
}
}
}
рджреЛрдиреЛрдВ :sub рдФрд░ :aud рдХреЛ рдкрд┐рди рдХрд░реЗрдВред рдХреЗрд╡рд▓ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдХреЛ рдкрд┐рди рдХрд░рдиреЗ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреЛрдИ рднреА ServiceAccount рднреВрдорд┐рдХрд╛ рдЧреНрд░рд╣рдг рдХрд░ рдкрд╛рдПрдЧрд╛
- рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдУрд╡рд░-рдЯреНрд░рд╕реНрдЯ рдмрдЧред
3. IAM policyред рднреВрдорд┐рдХрд╛ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд╣рдЪрд╛рди-рдЖрдзрд╛рд░рд┐рдд рдиреАрддрд┐ рд╡рд╣ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдХреА рдРрдк рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
(s3:GetObject рдПрдХ рдмрдХреЗрдЯ рдкрд░, ecr:GetDownloadUrlForLayer, рдФрд░ рдЗрд╕реА рддрд░рд╣)ред
4. ServiceAccountред рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рджрд╛ ServiceAccount:
apiVersion: v1
kind: ServiceAccount
metadata:
name: checkout
namespace: apps
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::<account>:role/checkout
5. рдкреНрд░реЛрдЬреЗрдХреНрд╢рдиред EKS рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд Pod Identity Webhook рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдЬрдм рдПрдХ рдкреЙрдб рдПрдХ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП
ServiceAccount рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗрдмрд╣реБрдХ рдЗрд╕реЗ рдореНрдпреВрдЯреЗрдЯ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ AWS_ROLE_ARN рдФрд░ AWS_WEB_IDENTITY_TOKEN_FILE env
vars рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди рд╡реЙрд▓реНрдпреВрдо (рджрд░реНрд╢рдХ sts.amazonaws.com, рд╕реНрд╡рддрдГ-рдШреВрдордиреЗ рд╡рд╛рд▓рд╛) рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдк
рдкреЙрдб рдХреЛ рд▓реЗрдмрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; SA рдПрдиреЛрдЯреЗрд╢рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
6. рдПрдХреНрд╕рдЪреЗрдВрдЬред AWS SDK рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЪреЗрди AWS_WEB_IDENTITY_TOKEN_FILE рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рддреА рд╣реИ, рдЯреЛрдХрди рдХреЗ рд╕рд╛рде
sts:AssumeRoleWithWebIdentity рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдФрд░ рд▓реМрдЯрд╛рдП рдЧрдП рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЛ рдХреИрд╢ рдХрд░рддреА рд╣реИред рдЖрдкрдХрд╛ рдХреЛрдб рдХреЗрд╡рд▓
boto3.client("s3") рд╣реИ - рдХреЛрдИ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред
рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк: EKS Pod Identity (2023) рдкреНрд░рддрд┐-рдХреНрд▓рд╕реНрдЯрд░ IAM OIDC рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдкреНрд░рддрд┐-рднреВрдорд┐рдХрд╛ рдЯреНрд░рд╕реНрдЯ рдкреЙрд▓рд┐рд╕реА рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдСрди-рдХреНрд▓рд╕реНрдЯрд░ рдПрдЬреЗрдВрдЯ рдФрд░ рдПрдХ рдПрд╕реЛрд╕рд┐рдПрд╢рди API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЗрд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ AWS-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓рдВрдмрд┐рдВрдЧ рд╣реИ; рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ OIDC-рдлреЗрдбрд░реЗрд╢рди рдореЙрдбрд▓ рд╡рд╣ рд╣реИ рдЬреЛ Azure рд╕реЗ рд╕рд╛рдл-рд╕рд╛рдл рдореИрдк рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд░реЙрд╕-рдХреНрд▓рд╛рдЙрдб рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡реЙрдХ-рдереНрд░реВ: Azure AKS Workload Identity, рдЕрдВрдд рддрдХ
рд╡рд╣реА рдЯреНрд░рд╕реНрдЯ рдлреНрд▓реЛ, Azure рд╕рдВрдЬреНрдЮрд╛рдПрдБ:
1. рджреЛ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЙрдЧрд▓ред OIDC рдЬрд╛рд░реАрдХрд░реНрддрд╛ (oidcIssuerProfile.enabled = true) рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдЬреЛ
https://<region>.oic.prod-aks.azure.com/<tenant>/<guid>/ рдЬреИрд╕реЗ рдЬрд╛рд░реАрдХрд░реНрддрд╛ URL рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░
рд╡рд░реНрдХрд▓реЛрдб-рдкрд╣рдЪрд╛рди рдРрдб-рдСрди (securityProfile.workloadIdentity.enabled = true) рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдЬреЛ рдореНрдпреВрдЯреЗрдЯрд┐рдВрдЧ рд╡реЗрдмрд╣реБрдХ рд╕реНрдерд╛рдкрд┐рдд
рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдПрдХ рдирдП рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ oidcIssuerUrl рддрдм рддрдХ рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ
рдкрд╣рд▓рд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред рдЙрдиреНрд╣реЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдПрдХ рдЗрди-рдкреНрд▓реЗрд╕ рдЕрдкрдбреЗрдЯ рд╣реИ, рди рдХрд┐ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ред
2. рдкреНрд░рдмрдВрдзрд┐рдд рдкрд╣рдЪрд╛рдиред рдПрдХ user-assigned managed identity рдмрдирд╛рдПрдБред (рдлреЗрдбрд░реЗрдЯреЗрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗрд╡рд▓ user-assigned рдкрд╣рдЪрд╛рдиреЛрдВ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ, рди рдХрд┐ system-assigned рд╡рд╛рд▓реЛрдВ рд╕реЗред) рдЗрд╕рдХрд╛ client id рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ ServiceAccount рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред
3. рдлреЗрдбрд░реЗрдЯреЗрдб рдкрд╣рдЪрд╛рди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ред рдпрд╣ рдЯреНрд░рд╕реНрдЯ рдирд┐рдпрдо рд╣реИ, UAMI рдкрд░ рдПрдХ рдЪрд╛рдЗрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ:
issuer: https://<region>.oic.prod-aks.azure.com/<tenant>/<guid>/
subject: system:serviceaccount:apps:checkout
audience: api://AzureADTokenExchange
AWS рдХреЗ рд╕рдорд╛рди рд╡рд┐рд╖рдп рд╡реНрдпрд╛рдХрд░рдг рдФрд░ рдПрдХ рдЕрд▓рдЧ рдирд┐рд╢реНрдЪрд┐рдд рджрд░реНрд╢рдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
4. RBACред UAMI рдХреЗ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЛ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рднреВрдорд┐рдХрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ: рдПрдХ рд╡реЙрд▓реНрдЯ рдкрд░ Key Vault Secrets User,
рдПрдХ рд╕реНрдЯреЛрд░реЗрдЬ рдЕрдХрд╛рдЙрдВрдЯ рдкрд░ Storage Blob Data Reader, рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкрд░ AcrPull рдпрджрд┐ рдРрдк рд╕реНрд╡рдпрдВ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдбреЗрдЯрд╛ рдкреНрд▓реЗрди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛
рд╣реИред рдкрд╣рдЪрд╛рди рдкрд░ рдХреЛрдИ рдиреАрддрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рд╣реИ; рдПрдХреНрд╕реЗрд╕ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рднреВрдорд┐рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣реИред
5. ServiceAccount рдФрд░ рдкреЙрдб рд▓реЗрдмрд▓ред ServiceAccount рдХреНрд▓рд╛рдЗрдВрдЯ-рдЖрдИрдбреА рдПрдиреЛрдЯреЗрд╢рди рд░рдЦрддрд╛ рд╣реИ, рдФрд░ - рдпрд╣ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ AWS рдХреЗ рд▓реЛрдЧ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ - рдкреЙрдб рдХреЛ рднреА рд▓реЗрдмрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
apiVersion: v1
kind: ServiceAccount
metadata:
name: checkout
namespace: apps
annotations:
azure.workload.identity/client-id: <uami-client-id>
---
# in the Deployment's pod template:
metadata:
labels:
azure.workload.identity/use: "true" # required on the POD, not just the SA
spec:
serviceAccountName: checkout
6. рдкреНрд░реЛрдЬреЗрдХреНрд╢рдиред рдРрдб-рдСрди рдХрд╛ рд╡реЗрдмрд╣реБрдХ рдХреЗрд╡рд▓ рдЙрди рдкреЙрдб рдХреЛ рдореНрдпреВрдЯреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ azure.workload.identity/use: "true" рд▓реЗрдмрд▓ рд╣реЛрддрд╛
рд╣реИред рдЬрдм рдпрд╣ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILE, рдФрд░
AZURE_AUTHORITY_HOST рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ api://AzureADTokenExchange рджрд░реНрд╢рдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЛрдХрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред
7. рдПрдХреНрд╕рдЪреЗрдВрдЬред DefaultAzureCredential() (рдпрд╛ рд╕реНрдкрд╖реНрдЯ WorkloadIdentityCredential) рдЙрди env vars рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб
рдЯреЛрдХрди рдХреЛ Entra ID рдХреЛ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрд╕рд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд
рдХрд░рддрд╛ рд╣реИред рдПрдХ Key Vault рд░реАрдб Python рдореЗрдВ azure.identity.DefaultAzureCredential() рдкреНрд▓рд╕ SecretClient рд╣реИ, рдпрд╛ TypeScript рдореЗрдВ
new DefaultAzureCredential() рдкреНрд▓рд╕ @azure/keyvault-secrets рд╣реИ - рдФрд░ рдлрд┐рд░ рд╕реЗ, рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рднреА рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИред
рд╡рд┐рд╖рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореБрдЦреНрдп рдЖрдзрд╛рд░ рд╣реИ (рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЙрдб рдкрд░)
рдПрдХрд▓ рдорд╛рди рдЬреЛ рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рдЯреЛрдХрди рд╡рд┐рд╖рдп рд╣реИ:
system:serviceaccount:<namespace>:<serviceaccount-name>
kubelet рдкреЙрдб рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ namespace рдФрд░ ServiceAccount рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рдЯреЛрдХрди рдореЗрдВ рд╕реНрдЯреИрдВрдк рдХрд░рддрд╛ рд╣реИред рдЯреНрд░рд╕реНрдЯ рдирд┐рдпрдо (AWS рдкрд░ IAM рдЯреНрд░рд╕реНрдЯ
рдкреЙрд▓рд┐рд╕реА, Azure рдкрд░ рдлреЗрдбрд░реЗрдЯреЗрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓) рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд┐рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдРрдк apps namespace рдореЗрдВ
ServiceAccount checkout рдХреЗ рддрд╣рдд рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдЯреНрд░рд╕реНрдЯ рдирд┐рдпрдо рдХреЛ system:serviceaccount:apps:checkout рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП -
рдЕрдХреНрд╖рд░-рджрд░-рдЕрдХреНрд╖рд░ред рд╕рдмрд╕реЗ рдЖрдо "рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ" рд╡рд┐рдлрд▓рддрд╛ рдпрд╣рд╛рдБ рдПрдХ рдмреЗрдореЗрд▓ рд╣реИ: рдЪрд╛рд░реНрдЯ рдПрдХ рдЕрд▓рдЧ namespace рдореЗрдВ
рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, ServiceAccount рдХреЛ рдРрдк рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп рд░рд┐рд▓реАрдЬрд╝ рдирд╛рдо рдорд┐рд▓рд╛, рдпрд╛ рдХрд┐рд╕реА рдиреЗ default ServiceAccount рдорд╛рди рд▓рд┐рдпрд╛ред рдЬрдм
рдлреЗрдбрд░реЗрд╢рди рдЪреБрдкрдЪрд╛рдк рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╡рд┐рд╖рдп рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рджрд░реНрд╢рдХ рджреВрд╕рд░рд╛ рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдлрд╝реАрд▓реНрдб рд╣реИ, рдФрд░ рдпрд╣ рдкреНрд░рддрд┐ рдХреНрд▓рд╛рдЙрдб рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ: AWS рдкрд░ sts.amazonaws.com, Azure рдкрд░
api://AzureADTokenExchangeред рдЖрдк рдЗрд╕реЗ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯреНрд░рд╕реНрдЯ рдирд┐рдпрдо рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди рдХреЛ рдЗрд╕ рдкрд░ рд╕рд╣рдордд рд╣реЛрдирд╛
рдЪрд╛рд╣рд┐рдПред
рдЪрд╛рд░ рдЕрдВрддрд░ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░реЗрдВрдЧреЗ
1. Azure "OIDC рдкреНрд░рджрд╛рддрд╛" рдХреЛ рджреЛ рдЯреЙрдЧрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреЛрдиреЛрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛрддреЗ рд╣реИрдВред EKS рдкрд░ рдкреЙрдб-рдкрд╣рдЪрд╛рди
рд╡реЗрдмрд╣реБрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХрдорд╛рддреНрд░ рдПрдХ-рдмрд╛рд░ рдХрд╛ рдХрджрдо IAM рдореЗрдВ OIDC рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реИред AKS рдкрд░ рдЖрдкрдХреЛ OIDC
рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдФрд░ рд╡рд░реНрдХрд▓реЛрдб-рдкрд╣рдЪрд╛рди рдРрдб-рдСрди рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛; рдРрдб-рдСрди рдХреЛ рднреВрд▓ рдЬрд╛рдиреЗ рдкрд░ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдЕрднреА рднреА рдЯреЛрдХрди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдЙрдиреНрд╣реЗрдВ рдкреЙрдб рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрдк рдХреЛ рдХреЛрдИ AZURE_* env vars рдирд╣реАрдВ рджрд┐рдЦрддреЗ рд╣реИрдВ рдФрд░
DefaultAzureCredential рдЪреБрдкрдЪрд╛рдк рдЕрдЧрд▓реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕реНрд░реЛрдд рдкрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЬрд╛рд░реАрдХрд░реНрддрд╛ URL
рдореМрдЬреВрдж рд╣реЛрдиреЗ рддрдХ рдлреЗрдбрд░реЗрдЯреЗрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2. Azure рдХреЛ рдкреЙрдб рдкрд░ рдПрдХ рд▓реЗрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ ServiceAccount рдкрд░ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдХреАред AKS рд╡реЗрдмрд╣реБрдХ рдкреЙрдб рдкрд░
azure.workload.identity/use: "true" рд▓реЗрдмрд▓ рд╕реЗ рдХреБрдВрдЬреА рд▓реЗрддрд╛ рд╣реИ (рдХреЗрд╡рд▓ ServiceAccount рдПрдиреЛрдЯреЗрд╢рди рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ)ред IRSA рдХрд╛
рд╡реЗрдмрд╣реБрдХ ServiceAccount рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рдХреБрдВрдЬреА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдХрд┐рд╕реА рдкреЙрдб рд▓реЗрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ Azure-рд╕рд╛рдЗрдб рдХреА рд╕рдмрд╕реЗ рдЖрдо
рдЧрд▓рддреА рд╣реИ: ServiceAccount рд╕рд╣реА рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреЙрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЗрдмрд▓ рднреВрд▓ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдЯреЛрдХрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
3. рдЗрдореЗрдЬ рдЦреАрдВрдЪрдирд╛ рд╡рд░реНрдХрд▓реЛрдб рдкрд╣рдЪрд╛рди рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкрд╣рдЪрд╛рди рд╣реИ - рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЙрдб рдкрд░ред рдЗрдореЗрдЬ рдкреБрд▓ рдиреЛрдб/kubelet рдкрд╣рдЪрд╛рди рдХрд╛ рдХрд╛рдо рд╣реИ: AKS рдкрд░
kubelet рдкрд╣рдЪрд╛рди AcrPull рд░рдЦрддреА рд╣реИ; EKS рдкрд░ рдиреЛрдб рд╕рдореВрд╣ рдХреА рдЗрдВрд╕реНрдЯреЗрдВрд╕ рднреВрдорд┐рдХрд╛ AmazonEC2ContainerRegistryReadOnly рд░рдЦрддреА рд╣реИ (рдпрд╛ рдЖрдк
рдкреБрд▓ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рд╡рд░реНрдХрд▓реЛрдб рдкрд╣рдЪрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддреА рд╣реИ рдЬрдм рдРрдк рдХреЛрдб рдПрдХ рдХреНрд▓рд╛рдЙрдб API рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
(рдПрдХ рд░рд╣рд╕реНрдп рдкрдврд╝реЗрдВ, рдПрдХ рдмрдХреЗрдЯ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ, рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдбреЗрдЯрд╛ рдкреНрд▓реЗрди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ)ред рдПрдХ рд╢реБрджреНрдз HTTP рд╕реЗрд╡рд╛ рдЬреЛ рдХрднреА рдХреНрд▓рд╛рдЙрдб SDK рд╕реЗ рдмрд╛рдд
рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЙрд╕реЗ рдХрд┐рд╕реА рднреА рд╡рд░реНрдХрд▓реЛрдб рдкрд╣рдЪрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ - рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╡рд░реНрдХрд▓реЛрдб рдкрд╣рдЪрд╛рди AcrPull рдкреНрд░рджрд╛рди рдХрд░рдиреЗ
рд╕реЗ рдЗрдореЗрдЬ рдкреБрд▓ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреБрд▓ рдРрдк (рдФрд░ рдЗрд╕рдХреЗ рдлреЗрдбрд░реЗрдЯреЗрдб рдЯреЛрдХрди) рдХреЗ рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред
4. рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдВрд▓рдЧреНрди рд╣реЛрддреА рд╣реИрдВред AWS рднреВрдорд┐рдХрд╛ рд╕реЗ рдПрдХ IAM policy рдЬреЛрдбрд╝рддрд╛ рд╣реИ - рдЕрдиреБрдорддрд┐ рдкрд╣рдЪрд╛рди рдХреЗ рд╕рд╛рде рдпрд╛рддреНрд░рд╛ рдХрд░рддреА рд╣реИред Azure рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрди рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ RBAC role assignments рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдЕрдиреБрджрд╛рди рдПрдХреНрд╕реЗрд╕ рдХреА рдЬрд╛ рд░рд╣реА рдЪреАрдЬрд╝ рдкрд░ рд░рд╣рддрд╛ рд╣реИ, рдкрд╣рдЪрд╛рди рдкрд░ рдирд╣реАрдВред рд╡рд╣реА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ (рдпрд╣ рдкреЙрдб рдЙрд╕ рд╡реЙрд▓реНрдЯ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдСрдбрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВ: AWS рдкрд░, рднреВрдорд┐рдХрд╛ рдХреА рд╕рдВрд▓рдЧреНрди рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝реЗрдВ; Azure рдкрд░, рд╕рдВрд╕рд╛рдзрди рдкрд░ рднреВрдорд┐рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ (рдпрд╛ рдкрд╣рдЪрд╛рди рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреЛрдкреЛрдВ рдореЗрдВ) рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВред рдпрд╣ рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЙрдб рдХреЗ рдмреАрдЪ рд╡реНрдпрд╛рдкрдХ IAM-рдмрдирд╛рдо-RBAC рдЕрдВрддрд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдЗрдВрдЬреЗрдХреНрдЯреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ
рджреЛрдиреЛрдВ рд╡реЗрдмрд╣реБрдХ SDK рдХреЛ env vars рдФрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реМрдВрдкрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддрд╛рдХрд┐ рдРрдк рдХреЛрдб рдХрд┐рд╕реА рд░рд╣рд╕реНрдп рдФрд░ рдХрд┐рд╕реА рдХреНрд▓рд╛рдЙрдб-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рди рдХрд░реЗ:
- AWS:
AWS_ROLE_ARN,AWS_WEB_IDENTITY_TOKEN_FILE,AWS_REGIONред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЪреЗрди рдЖрдкрдХреЗ рд▓рд┐рдПAssumeRoleWithWebIdentityрдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред - Azure:
AZURE_CLIENT_ID,AZURE_TENANT_ID,AZURE_FEDERATED_TOKEN_FILE,AZURE_AUTHORITY_HOSTредDefaultAzureCredentialрдЖрдкрдХреЗ рд▓рд┐рдП Entra рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд░рддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди рдлрд╝рд╛рдЗрд▓ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╣реЛрддреА рд╣реИ рдФрд░ kubelet рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рддрдГ рдШреВрдорддреА рд╣реИ; SDK рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рддрд╛рдЬрд╝рд╛ рдХрд░рддрд╛ рд╣реИред рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдПрдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЪреЗрдХрд▓рд┐рд╕реНрдЯ рдЬреЛ рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ
рдЬрдм рдПрдХ рдкреЙрдб "рдкреНрд░рдорд╛рдгреАрдХреГрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛," рддреЛ рдЯреНрд░рд╕реНрдЯ рдЪреЗрди рдХреЛ рдХреНрд░рдо рдореЗрдВ рдЪрд▓реЗрдВ:
- рдХреНрд▓рд╕реНрдЯрд░ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдЪрд╛рд▓реВ рд╣реИ? рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ OIDC рдЬрд╛рд░реАрдХрд░реНрддрд╛ URL рдореМрдЬреВрдж рд╣реИ (AKS: рджреЛрдиреЛрдВ рдЯреЙрдЧрд▓ рд╕рд╣реА; EKS: IAM OIDC рдкреНрд░рджрд╛рддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реИ)ред рдХреЛрдИ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдирд╣реАрдВ, рдХреЛрдИ рдЯреНрд░рд╕реНрдЯ рдПрдВрдХрд░ рдирд╣реАрдВред
- рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдкреЙрдб рдореЗрдВ exec рдХрд░реЗрдВ рдФрд░ рдЯреЛрдХрди рдлрд╝рд╛рдЗрд▓ рдФрд░ env vars (
AWS_WEB_IDENTITY_TOKEN_FILE/AZURE_FEDERATED_TOKEN_FILE) рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред Azure рдкрд░ рдЧреБрдо рд╣реЛрдиреЗ рдХрд╛ рдЖрдорддреМрд░ рдкрд░ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреЙрдб рд▓реЗрдмрд▓ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ рдпрд╛ рдРрдб-рдСрди рдмрдВрдж рд╣реИред - рд╡рд┐рд╖рдп рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ? рдЯреНрд░рд╕реНрдЯ рдирд┐рдпрдо рдХреЗ рд╡рд┐рд╖рдп рдХреА рддреБрд▓рдирд╛
system:serviceaccount:<actual-namespace>:<actual-sa>рд╕реЗ рдХрд░реЗрдВред рдпрд╣ рд╕рдмрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдлрд▓рддрд╛ рд╣реИред - рджрд░реНрд╢рдХ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ?
sts.amazonaws.com/api://AzureADTokenExchange, рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдкрд░ рд╕рд╣рдорддред - рдЕрдиреБрдорддрд┐рдпрд╛рдБ? рдкрд╣рдЪрд╛рди рд╣рд▓ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА: рднреВрдорд┐рдХрд╛ рдкрд░ IAM policy, рдпрд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕рд╛рдзрди рдкрд░ RBAC role assignmentред рдпрд╣рд╛рдБ рдПрдХ рдЦрд╛рд▓реА рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдлрд▓рддрд╛ рд╣реИ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВ - рдПрдХ рдЙрдкрдпреЛрдЧреА рдЕрдВрддрд░, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдлреЗрдбрд░реЗрд╢рди рд╕реНрд╡рдпрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХреМрди рд╕реЗ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рдЗрд╕реЗ рдбреНрд░рд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ
рд╡рд░реНрдХрд▓реЛрдб рдкрд╣рдЪрд╛рди рд╡рд╣реАрдВ рдмреИрдарддреА рд╣реИ рдЬрд╣рд╛рдБ Kubernetes, рдХреНрд▓рд╛рдЙрдб IAM, рдФрд░ OIDC рдлреЗрдбрд░реЗрд╢рди рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддреАрди рдкрд░реАрдХреНрд╖рд╛ рдЯреНрд░реИрдХреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдХреНрд▓рд╛рдЙрдб рдХрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╣реИ, рддреЛ рджреВрд╕рд░реЗ рдХреНрд▓рд╛рдЙрдб рдкрд░ рд╡рд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдПрдХ рдЫреЛрдЯреА рдЫрд▓рд╛рдВрдЧ рд╣реИред
AWS рдкрдХреНрд╖ рдкрд░:
- AWS Certified Solutions Architect - Associate (SAA-C03) - IAM roles, EKS, рдФрд░ рдкрд╣рдЪрд╛рдиреЛрдВ рдХреЛ рдХреНрд▓рд╛рдЙрдб рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдХреИрд╕реЗ рдорд┐рд▓рддреА рд╣реИрдВред
- AWS Certified Security - Specialty (SCS-C03) - IAM trust policies, OIDC рдлреЗрдбрд░реЗрд╢рди, рдФрд░ рдиреНрдпреВрдирддрдо-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╕реНрдХреЛрдкрд┐рдВрдЧ (рдареАрдХ IRSA рдЯреНрд░рд╕реНрдЯ рдЪреЗрди)ред
Azure рдкрдХреНрд╖ рдкрд░:
- Microsoft Azure Administrator Associate (AZ-104) - AKS, managed identities, рдФрд░ RBAC role assignmentsред
- Microsoft Azure Security Engineer Associate (AZ-500) - Entra ID, managed identities, рдлреЗрдбрд░реЗрдЯреЗрдб рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓, рдФрд░ RBAC рдЧрд╣рд░рд╛рдИред
Kubernetes рдкрдХреНрд╖ рдкрд░:
- CNCF Certified Kubernetes Administrator (CKA) - ServiceAccounts, рдкреНрд░реЛрдЬреЗрдХреНрдЯреЗрдб рдЯреЛрдХрди, рдФрд░ рдкреЙрдб рд╕реНрдкреЗрдХреНрд╕ред
- CNCF Certified Kubernetes Security Specialist (CKS) - ServiceAccount рдЯреЛрдХрди рд╕реБрд░рдХреНрд╖рд╛, рдиреНрдпреВрдирддрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░, рдФрд░ рд╕реНрдерд┐рд░-рд░рд╣рд╕реНрдп рдПрдХреНрд╕рдкреЛрдЬрд░ рдХреЛ рдХрдо рдХрд░рдирд╛ред
рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛
IRSA рдФрд░ AKS Workload Identity рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджрд╛рд╡рд▓реА рдкрд╣рдиреЗ рд╣реБрдП рдПрдХ рд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ: рдХреНрд▓рд╕реНрдЯрд░ рдПрдХ ServiceAccount рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ
OIDC рдЯреЛрдХрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддрд╛ рд╣реИ, рдХреНрд▓рд╛рдЙрдб IdP рдПрдХ (subject, audience) рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЬрд╛рд░реАрдХрд░реНрддрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреЙрдб рдЯреЛрдХрди рдХреЛ
рдПрдХ рдПрдХрд▓ рдХреНрд▓рд╛рдЙрдб рдкрд╣рдЪрд╛рди рддрдХ рд╕реАрдорд┐рдд рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд░рддрд╛ рд╣реИ - AWS рдкрд░ рдПрдХ IAM role, Azure рдкрд░ рдПрдХ managed identityред
рдПрдХ рдмрд╛рд░ рдЯреНрд░рд╕реНрдЯ рддреНрд░рд┐рдХреЛрдг рд╕реАрдЦ рд▓реЗрдВ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдпрд╛рдВрддреНрд░рд┐рдХ рд╣реИ: role managed identity рдмрди рдЬрд╛рддрд╛ рд╣реИ, trust policy federated credential
рдмрди рдЬрд╛рддрд╛ рд╣реИ, attached policy RBAC assignment рдмрди рдЬрд╛рддрд╛ рд╣реИ, AssumeRoleWithWebIdentity рдПрдХ Entra рдЯреЛрдХрди рдПрдХреНрд╕рдЪреЗрдВрдЬ рдмрди рдЬрд╛рддрд╛ рд╣реИред
рддреАрди рдмрд╛рддреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВ - Azure рдХреЗ рджреЛ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЙрдЧрд▓, Azure рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рдкреЙрдб рд▓реЗрдмрд▓, рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рдЗрдореЗрдЬ рдкреБрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ
рдЕрд▓рдЧ рдкрд╣рдЪрд╛рди рд╣реИ - рдФрд░ рд╡реЗ рдЕрд╕реНрд╡реАрдХреГрддрд┐рдпрд╛рдБ рдЬреЛ рдкрд╣рд▓реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд▓рдЧрддреА рдереАрдВ, рдПрдХ рд╕реБрд╕рдВрдЧрдд, рдЬрд╛рдирдмреВрдЭрдХрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА
рд╣реИрдВред