協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授予使用者使用外部OIDC提供者Kubernetes的存取權
Amazon EKS 支援使用 OpenID Connect (OIDC) 身分識別提供者做為叢集使用者驗證的方法。 OIDC身分識別提供者可以與 () 搭配使用,也可以作為 AWS Identity and Access Management (IAM) 的替代方案。如需使用的更多資訊IAM,請參閱授與IAM使用者和角色對 Kubernetes 的存取權 APIs。設定叢集身分驗證後,您可以建立 Kubernetes roles
和 clusterroles
指派許可給角色,然後使用 Kubernetes rolebindings
和 clusterrolebindings
將角色繫結至身分。如需詳細資訊,請參閱Kubernetes文件中的使用RBAC授權
考量事項
-
您可以將一個 OIDC 身分提供者與叢集建立關聯。
-
Kubernetes 不提供 OIDC 身分提供者。您可以使用現有的公有 OIDC 身分提供者,也可以執行您自己的身分提供者。如需認證提供商的清單,請參閱 OpenID 網站上的 OpenID 認證
。 -
OIDC身分提供者URL的發行者必須可公開存取,以便 Amazon EKS 能夠探索簽署金鑰。Amazon EKS 不支援使用自我簽署憑證的OIDC身分識別提供者。
-
您無法停用叢集的IAM驗證,因為在將節點加入叢集時仍然需要驗證。
-
Amazon EKS 叢集仍必須由 AWS IAM主體建立,而不是OIDC身分識別提供者使用者。這是因為叢集建立者會與 Amazon 互動 EKSAPIs,而不是. Kubernetes APIs
-
OIDC如果開啟控制平面的記錄,則會在叢集的稽核 CloudWatch 記錄檔中列出身分識別提供者驗證的使用者。如需詳細資訊,請參閱啟用或停用控制平面日誌。
-
您無法使用供應OIDC商 AWS Management Console 的帳戶登入。您只能透過 AWS Management Console 使用 AWS Identity and Access Management 帳戶登入來檢視主控台中的Kubernetes資源。
關聯 OIDC 身分提供者
在可以將 OIDC 身分提供者與叢集建立關聯之前,您需要提供商的下列資訊:
- 發行人 URL
-
允許API服務器發現用於驗證令牌URL的公共簽名密鑰的OIDC身份提供者。URL必須以
https://
並且應該與提供程序 OIDC ID 令牌中的iss
聲明相對應。根據標OIDC準,允許路徑組件,但查詢參數不允許。通常只URL包含主機名稱,例如https://server.example.org
或https://example.com
。這URL應該指向以下級別,.well-known/openid-configuration
並且必須可以通過互聯網公開訪問。 - 用戶端 ID (也稱為對象)
-
向身分識別提供者發出驗證要求的用戶端應用程式OIDC識別碼。
您可以使用 eksctl
或 AWS Management Console關聯身分提供者。
範例IAM政策
如果要防止OIDC身分識別提供者與叢集建立關聯,請建立以下IAM政策,並將其與 Amazon EKS 管理員的IAM帳戶建立關聯。如需詳細資訊,請參閱IAM使用指南中的建立IAM政策和新增IAM身分許可和服務授權參考中的 Amazon Elastic Kubernetes Service 的動作、資源和條件金鑰。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:
us-west-2
.amazonaws.com:111122223333
:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }
下列範例政策允許 OIDC 身分提供者關聯,如果 clientID
為 kubernetes
以及 issuerUrl
為 https://cognito-idp.us-west-2amazonaws.com/*
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCognitoOnly", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:
us-west-2
:111122223333
:cluster/my-instance
", "Condition": { "StringNotLikeIfExists": { "eks:issuerUrl": "https://cognito-idp.us-west-2
.amazonaws.com/*" } } }, { "Sid": "DenyOtherClients", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2
:111122223333
:cluster/my-instance
", "Condition": { "StringNotEquals": { "eks:clientId": "kubernetes
" } } }, { "Sid": "AllowOthers", "Effect": "Allow", "Action": "eks:*", "Resource": "*" } ] }
合作夥伴驗證的 OIDC 身分提供者
Amazon 與為相容OIDC身分供應商提供支援的合作夥伴網路EKS保持關係。如需如何將身分供應商與 Amazon EKS 整合的詳細資訊,請參閱下列合作夥伴的文件。
合作夥伴 | 產品 | 文件 |
---|---|---|
PingIdentity |
Amazon EKS 旨在為您提供廣泛的選擇來涵蓋所有使用案例。如果您開發的商業支援OIDC相容身分提供者並未列於此處,請透aws-container-partners過 @amazon .com