協助改善此頁面
想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
服務帳戶的 IAM 角色
容器中Pod的應用程式可以使用 AWS SDK或 AWS CLI 來發出 AWS 服務 使用 AWS Identity and Access Management (IAM) 權限的API要求。應用程式必須使用 AWS 認證簽署其 AWS API要求。IAM服務帳戶的角色可讓您管理應用程式的登入資料,與 Amazon 執行個體設定檔為 Amazon EC2 EC2 執行個體提供登入資料的方式類似。您可以將角色與服務帳戶建立關聯,並將其設定為使用Kubernetes服務帳戶,而不是建立 AWS 登入資料並將其分發Pods到容器或使用 Amazon EC2 執行個體的IAM角色。您無法將IAM角色用於 Amazon EKS on 的本機叢集的服務帳戶 AWS Outposts。
IAM服務帳戶的角色具有下列優點:
-
最小權限 — 您可以將IAM權限限定為服務帳戶,而且只有使用Pods該服務帳戶的使用者才能存取這些權限。有此功能也就不需要第三方解決方案,例如
kiam
或kube2iam
。 -
認證隔離 — Pod's 容器只能擷取與容器使用之服務帳戶相關聯之IAM角色的認證。容器一律無法訪問其他 Pods 中其他容器使用的憑證。使用服務帳戶的IAM角色時,除非您封鎖 Amazon EC2執行個體中繼資料服務 (IMDS) 的Pod存取權,否則Pod's容器也會指派給 Amazon EKS 節點IAM角色的許可。如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -
可稽核性 — 可透過存取和事件記錄, AWS CloudTrail 以協助確保回溯性稽核。
透過完成下列程序啟用服務帳戶的IAM角色:
-
為您的叢集建立IAMOIDC提供者 – 對每個叢集只完成此程序一次。
注意
如果啟用了EKSVPC端點,則無法從該端點內部訪問EKSOIDC服務端點VPC。因此,您的操作(例如
eksctl
在中創建OIDC提供程序)VPC將無法運作,並在嘗試請求時導致超時https://oidc.eks.
。以下是範例錯誤訊息:region
.amazonaws.com** server can't find oidc.eks.
region
.amazonaws.com: NXDOMAIN若要完成此步驟,您可以在連接至網際網路的電腦中 AWS CloudShell 或之外執行命令。VPC或者,您可以在中建立分割水平條件式解析器VPC,例如 Route 53 解析器,以便為發行者使用不同的解析器,而不使用該OIDC解析器。URL VPC DNS如需中條件式轉送的範例CoreDNS,請參閱上的 Amazon EKS 功能要求
GitHub。 -
指派IAM角色給Kubernetes服務帳戶 – 對您希望應用程式擁有的每種非重複可組合完成此程序。
-
設定Pods為使用服Kubernetes務帳戶— 針對每個需要存取Pod的項目完成此程序 AWS 服務。
-
搭IRSA配使用 AWS SDK— 確認工作負載使用支援 AWS SDK的版本,並確認工作負載使用預設認證鏈結。
IAM、Kubernetes、和 OpenID Connect (OIDC) 背景資訊
在 2014 年,使用 OpenID Connect (OIDC) AWS Identity and Access Management 新增了對聯合身分的支援。此功能可讓您透過支援的身分識別提供者驗證 AWS API呼叫,並接收有效的 OIDC JSON Web Token (JWT)。您可以將此 Token 傳遞給 AWS STS AssumeRoleWithWebIdentity
API作業,並接收IAM臨時角色認證。您可以使用這些憑證與任何 AWS 服務互動,例如 Amazon S3 和 DynamoDB。
每個JWT令牌由一個簽名 key pair 簽名。金鑰由 Amazon 管理的OIDC供應商提供服務EKS,私鑰每 7 天輪換一次。Amazon EKS 保留公鑰,直到它們過期。如果您連接外部OIDC用戶端,請注意您必須在公開金鑰到期之前重新整理簽署金鑰。了解如何 獲取簽名密鑰以驗證OIDC令牌。
Kubernetes長期以來一直使用服務帳戶作為自己的內部識別系統。 Pods可以使用只有KubernetesAPI服務器可以驗證的自動掛載令牌(非 OIDCJWT)與KubernetesAPI服務器進行身份驗證。這些舊的服務帳戶 Token 不會過期,而輪換簽署金鑰是一項困難的程序。Kubernetes 版本 1.12
進一步支援新的 ProjectedServiceAccountToken
功能。此功能是 OIDC JSON Web Token,同時包含服務帳戶身分,並支援可設定的對象。
Amazon 會為每個叢集EKS託管一個公開OIDC探索端點,其中包含 ProjectedServiceAccountToken
JSON Web Token 的簽署金鑰,以便外部系統 (例如IAM) 可以驗證和接受由發行的OIDC權杖Kubernetes。