協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授予 EKS Auto Mode 負載平衡器控制器對特定 Secret 的存取權
在本教學課程中,您會授予 Amazon EKS Auto Mode 負載平衡器控制器對特定 Kubernetes 的讀取存取權Secret。這會解除封鎖 ALB 上的 OIDC 身分驗證Ingress。您可以使用以eks:managed群組為RoleBinding目標Role的命名空間範圍。
本教學課程大約需要 15 分鐘才能完成。您建立的 Kubernetes RBAC 物件不會產生 AWS 費用。
Amazon EKS Auto Mode 負載平衡器控制器支援 ALB Ingress 物件的 OIDC 身分驗證。它使用 alb.ingress.kubernetes.io/auth-type: oidc註釋來啟用此身分驗證。若要解決 OIDC 組態,控制器會讀取alb.ingress.kubernetes.io/auth-idp-oidc註釋中Secret名為 的 Kubernetes。其受管存取政策目前未get授予Secret物件,因此對帳程式失敗,並顯示類似如下的訊息:
Failed build model due to ingress: <ns>/<name>: secrets "<secret>" is forbidden: User "arn:aws:sts::<acct>:assumed-role/AWSServiceRoleForAmazonEKS/<session>" cannot get resource "secrets" in API group "" in the namespace "<ns>"
使用中所述的機制將其他 Kubernetes RBAC 授予 EKS Auto Mode 受管控制器,您可以在其Secret所需的 OIDC get上授予受管控制器。
先決條件
開始之前,請確定您已:
-
具有自動建立
AWSServiceRoleForAmazonEKS存取項目的 Amazon EKS Auto Mode 叢集。 -
kubectl已設定叢集存取。 -
安裝並設定具有
aws sts get-caller-identity和 AWS 許可的 CLIaws eks describe-access-entry。 -
使用
alb.ingress.kubernetes.io/auth-type: oidc註釋及其Secret參考的 KubernetesIngress的 ALB。
步驟 1:識別要新增至允許清單的秘密
ALB 上的 OIDC 組態Ingress如下所示。記錄Secret名稱和Ingress命名空間 — RBAC 物件必須位於與 相同的命名空間中Secret。
annotations: alb.ingress.kubernetes.io/auth-type: oidc alb.ingress.kubernetes.io/auth-idp-oidc: > { "issuer": "...", "authorizationEndpoint": "...", "tokenEndpoint": "...", "userInfoEndpoint": "...", "secretName": "oidc" }
此範例的其餘部分使用命名空間monitoring和Secret名稱 oidc。
步驟 2:套用命名空間範圍的角色和 RoleBinding
此表單會完全授予get一個命名空間Secret中名為 的 。將下列項目儲存為 eks-managed-oidc-secret-reader.yaml:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: eks-managed-oidc-secret-reader namespace: monitoring rules: - apiGroups: [""] resources: ["secrets"] resourceNames: ["oidc"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: eks-managed-oidc-secret-reader namespace: monitoring subjects: - kind: Group name: eks:managed apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: eks-managed-oidc-secret-reader apiGroup: rbac.authorization.k8s.io
套用它:
kubectl apply -f eks-managed-oidc-secret-reader.yaml
若要稍後將更多Secret物件新增至允許清單,請將它們的名稱附加到Role’s `resourceNames清單並重新套用。
步驟 3:確認傳入復原
負載平衡器控制器會在下一次通過Ingress時 (通常在幾分鐘內) 重新協調 。授予運作時,先前的secrets "oidc" is forbidden錯誤會停止出現在 上,Ingress而且負載平衡器會繼續。如果錯誤仍然存在,請重新檢查 Role’s `namespace、 resourceNames和RoleBinding主體。
移除授予
重要
只要 ALB Ingress使用 ,請將 Role和 保持在RoleBinding原位alb.ingress.kubernetes.io/auth-type: oidc。移除它們會重新中斷 上的 OIDC 解析度Ingress。
如果您在 上停止使用 OIDCIngress,請移除授予:
kubectl delete rolebinding eks-managed-oidc-secret-reader -n monitoring kubectl delete role eks-managed-oidc-secret-reader -n monitoring
相關資源
-
將其他 Kubernetes RBAC 授予 EKS Auto Mode 受管控制器 —
eks:managed群組的概念概觀,以及如何限制授予的範圍。 -
使用 EKS 存取項目授予 IAM 使用者 Kubernetes 的存取權 — Amazon EKS 存取項目。
-
Kubernetes 文件中的使用 RBAC 授權
。