上述两种访问方式都存在较大安全风险,并且难以在集群内做不同应用之间的权限区分,因此 VKE 提供了 IRSA 方案,帮助用户在集群内实现 Pod 级别隔离的应用关联 IAM 角色功能。
功能介绍
IRSA 是一种安全机制,允许 VKE 集群中的应用通过 Kubernetes Service Accounts (服务账号) 来使用火山引擎 IAM 角色。IRSA 机制将特定的 IAM 角色与服务账号关联,从而使得运行在 VKE 集群中的 Pod 能够通过该服务账号继承 IAM 角色的权限,访问各类云产品资源。
IRSA 功能的工作流程如下:
用户启动一个使用服务账号令牌投射的 Pod。相关说明,请参见 Kubernetes 文档:为 Pod 配置服务账号。
集群 API Server 为该 Pod 颁发使用 OIDC 身份生产的 Token(即 OIDC Token),kubelet 为该 Pod 挂载 OIDC Token 并定时刷新。
Pod 内程序使用挂载的 OIDC Token 文件访问 STS 服务的 AssumeRoleWithOIDC 接口,获取扮演指定 IAM 角色的临时凭证。
Pod 内程序使用获取到的临时凭证访问火山引擎其他云资源 OpenAPI。
功能优势
IRSA 机制具有如下关键优势:
最小权限原则:通过为每个服务账号分配具体的 IAM 角色,可以精细化控制服务的权限,确保服务只能访问所需的云产品资源,有助于提升业务安全性,遵守最小权限原则。