AWS Systems ManagerChange Manager 不再開放給新客戶。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS Systems ManagerChange Manager可用性變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS 秘密和組態提供者 CSI 搭配 Amazon EKS 的 Pod 身分
AWS Secrets and Configuration Provider 與 Pod Identity Agent for Amazon Elastic Kubernetes Service 整合,可為在 Amazon EKS 上執行的應用程式提供增強的安全性、簡化組態並改善效能。從 AWS Systems Manager Parameter Store Secrets Manager 擷取參數或秘密時,Pod Identity 可簡化 Amazon EKS 的 AWS Identity and Access Management (IAM) 身分驗證。
Amazon EKS Pod 身分識別透過允許直接透過 Amazon EKS 介面設定許可、減少步驟數量,並消除在 Amazon EKS 和 IAM 服務之間切換的需求,簡化設定 Kubernetes 應用程式 IAM 許可的程序。Pod 身分識別可讓您跨多個叢集使用單一 IAM 角色,而無需更新信任政策,並支援角色工作階段標籤,以實現更精細的存取控制。這種方法不僅允許跨角色重複使用許可政策來簡化政策管理,還可以根據相符標籤啟用對 AWS 資源的存取,以增強安全性。
運作方式
-
Pod 身分識別可將 IAM 角色指派給 Pod。
-
ASCP 使用此角色進行身分驗證 AWS 服務。
-
如果獲得授權,ASCP 會擷取請求的參數,並將其提供給 Pod。
如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的了解 Amazon EKS Pod 身分識別的運作方式。
先決條件
重要
僅雲端中的 Amazon EKS 支援 Pod 身分識別。Amazon EC2 執行個體上的 Amazon EKS Anywhere
-
Amazon EKS 叢集 (1.24 版或更新版本)
-
透過 存取 AWS CLI 和 Amazon EKS 叢集
kubectl -
(選用) 存取兩個 AWS 帳戶 以進行跨帳戶存取
安裝 Amazon EKS Pod 身分識別代理程式
若要將 Pod 身分識別與叢集搭配使用,您必須安裝 Amazon EKS Pod 身分識別代理程式附加元件。
安裝 Pod 身分識別代理程式
-
在叢集上安裝 Pod 身分識別代理程式附加元件。
使用您的值取代
預設預留位置文字:eksctl create addon \ --name eks-pod-identity-agent \ --clusterclusterName\ --regionregion
使用 Pod 身分識別設定 ASCP
-
建立許可政策,針對 Pod 需要存取的參數,授予
ssm:GetParameters和ssm:DescribeParameters存取該參數的許可。 -
建立由 Amazon EKS 服務主體擔任的 IAM 角色,用於 Pod 身分識別:
將 IAM 政策連接至角色。
使用您的值取代
預設預留位置文字:aws iam attach-role-policy \ --role-nameMY_ROLE\ --policy-arnPOLICY_ARN -
建立 Pod 身分識別關聯。如需範例,請參閱《Amazon EKS 使用者指南》中的建立 Pod 身分識別關聯
-
建立指定要在 Pod 中掛載哪些參數或秘密的
SecretProviderClass:kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml在 IRSA 和 Pod 身分識別之間,
SecretProviderClass主要差異是選用參數usePodIdentity。這是可決定身分驗證方法的選用欄位。未指定時,它會預設為使用服務帳戶的 IAM 角色 (IRSA)。-
若要使用 EKS Pod 身分識別,請使用下列任何值:
"true", "True", "TRUE", "t", "T"。 -
若要明確使用 IRSA,請設定為下列任何值:
"false", "False", "FALSE", "f", or "F"。
-
-
部署在
/mnt/secrets-store下掛載參數或秘密的 Pod:kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml -
如果您使用私有 Amazon EKS 叢集,請確定叢集所在的 VPC 具有 AWS STS 端點。如需有關建立端點的資訊,請參閱 AWS Identity and Access Management User Guide 中的 Interface VPC endpoints。
驗證秘密掛載
若要驗證是否已正確掛載參數或秘密,請執行下列命令。
使用您的值取代預設預留位置文字:
kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MyParameter
設定 Amazon EKS Pod 身分識別以存取 Parameter Store 中的參數
-
建立許可政策,針對 Pod 需要存取的參數,授予
ssm:GetParameters和ssm:DescribeParameters存取該參數的許可。 -
如果您還沒有參數,請在 Parameter Store 中建立參數。如需相關資訊,請參閱在 Systems Manager 中建立 Parameter Store 參數。
疑難排解
您可以透過描述 Pod 部署來檢視大多數錯誤。
若要查看容器的錯誤訊息
-
使用下列命令取得 Pod 名稱清單。如果不使用預設命名空間,請使用
-n。namespacekubectl get pods -
若要描述 Pod,請在下列命令中,針對
pod-id使用您在上一個步驟中從 Pod 找到的 Pod ID。如果不使用預設命名空間,請使用-n。NAMESPACEkubectl describe pod/pod-id
若要查看 ASCP 的錯誤
-
若要在提供者日誌中尋找更多資訊,請在下列命令中,針對
PODID使用 csi-secrets-store-provider-aws Pod 的 ID。kubectl -n kube-system get pods kubectl -n kube-system logs pod/pod-id