協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
建立存取項目
在建立存取項目之前,請考慮以下事項:
-
正確設定的身分驗證模式。請參閱 變更驗證模式以使用存取項目。
-
存取項目包含一個 (且僅一個) 現有 IAM 主體的 Amazon Resource Name (ARN)。一個 IAM 主體不能包含在多個存取項目中。對於您指定的 ARN 的其他考量:
-
IAM 最佳實務建議使用具有短期憑證的 IAM 角色存取叢集,而不是使用具有長期憑證的 IAM 使用者進行存取。如需詳細資訊,請參閱《IAM 使用者指南》中的要求人類使用者搭配身分提供者使用聯合功能,以便使用暫時性憑證存取 AWS。
-
如果 ARN 用於 IAM 角色,則它可以包含路徑。
aws-authConfigMap項目中的 ARN 則不能包含路徑。例如, ARN 可以是arn:aws:iam::<111122223333>:role/<development/apps/my-role>或arn:aws:iam::<111122223333>:role/<my-role>。 -
如果存取項目的類型不是
STANDARD(請參閱與類型有關的下一個考量),則 ARN 必須與叢集位於相同 AWS 帳戶中。如果類型為STANDARD,則 ARN 可以與叢集所在之帳戶位於相同或不同的 AWS 帳戶中。 -
建立存取項目後,您無法變更該 IAM 主體。
-
如果您刪除具有此 ARN 的 IAM 主體,則存取項目並不會自動刪除。建議您刪除帶有您刪除之 IAM 主體的 ARN 的存取項目。如果您在不刪除存取項目的情況下重新建立 IAM 主體,則即使它具有相同的 ARN,存取項目也將無法運作。這是因為,儘管重新建立的 IAM 主體的 ARN 與此前的主體相同,但重新建立的 IAM 主體的
roleID或userID(您可以使用aws sts get-caller-identityAWS CLI 命令查看) 與原始 IAM 主體的不同。即使您看不到存取項目的 IAM 主體roleID或userID,Amazon EKS 也會將其與存取項目一起儲存。
-
-
每個存取項目都有一種類型。存取項目的類型取決於與其關聯的資源類型,並不定義許可。如果您不指定類型,則 Amazon EKS 會自動將類型設為
STANDARD-
EC2_LINUX- 用於與 Linux 或 Bottlerocket 自我管理的節點搭配使用的 IAM 角色 -
EC2_WINDOWS- 用於與 Windows 自我管理的節點搭配使用的 IAM 角色 -
FARGATE_LINUX- 用於與 AWS Fargate (Fargate) 搭配使用的 IAM 角色 -
HYBRID_LINUX- 用於與混合節點搭配使用的 IAM 角色 -
STANDARD- 未指定類型時為預設類型 -
EC2- 適用於 EKS 自動模式自訂節點類別。如需詳細資訊,請參閱 建立節點類別存取項目。 -
建立存取項目後,您無法變更類型。
-
-
無需為用於受管節點群組或 Fargate 設定檔的 IAM 角色建立存取項目。EKS 將建立存取項目 (如果啟用),或更新身分驗證組態映射 (如果存取項目不可用)
-
如果某個存取項目的類型為
STANDARD,則可以為其指定一個使用者名稱。如果您沒有指定使用者名稱的值,Amazon EKS 會根據存取項目的類型以及您指定的 IAM 主體是 IAM 角色還是 IAM 使用者,設定下列其中一個值。除非您有特定原因需要自己指定使用者名稱,否則建議您不要指定使用者名稱,而是讓 Amazon EKS 自動為您產生該使用者名稱。如果您自己指定使用者名稱:-
該名稱不能以
system:、eks:、aws:、amazon:或iam:開頭。 -
如果該使用者名稱用於 IAM 角色,則建議您在末尾新增
{{SessionName}}或{{SessionNameRaw}}。如果將{{SessionName}}或{{SessionNameRaw}}新增至使用者名稱,則必須在 {{SessionName}} 之前必須有冒號。該角色被擔任時,指定的 AWS STS 工作階段名稱會自動傳遞到叢集,並將顯示在 CloudTrail 日誌中。例如,使用者名稱不能為john{{SessionName}}。使用者名稱必須為:john{{SessionName}}或jo:hn{{SessionName}}。冒號只需位於{{SessionName}}之前。以下資料表中 Amazon EKS 產生的使用者名稱包含 ARN。由於 ARN 包含冒號,因此它符合此項要求。如果使用者名稱中不包含{{SessionName}},則不需要冒號。請注意,在{{SessionName}}中,特殊字元 "@" 在工作階段名稱中會被取代為 "-"。{{SessionNameRaw}}會保留工作階段名稱中的所有特殊字元。IAM 主體類型 Type Amazon EKS 自動設定的使用者名稱值 使用者
STANDARD使用者的 ARN。範例:
arn:aws:iam::<111122223333>:user/<my-user>Role
STANDARD角色被擔任時的 STS ARN。Amazon EKS 將
{{SessionName}}附加到角色。範例:
arn:aws:sts::<111122223333>:assumed-role/<my-role>/{{SessionName}}如果您指定的角色的 ARN 包含路徑,則 Amazon EKS 會將其從產生的使用者名稱中移除。
Role
EC2_LINUX或EC2_Windowssystem:node:{{EC2PrivateDNSName}}Role
FARGATE_LINUXsystem:node:{{SessionName}}Role
HYBRID_LINUXsystem:node:{{SessionName}}建立存取項目後,您可以對使用者名稱進行變更。
-
-
如果某個存取項目的類型為
STANDARD,且您希望使用 Kubernetes RBAC 授權,則可以在該存取項目中新增一個或多個群組名稱。建立存取項目後,您可以新增和移除群組名稱。為了使 IAM 主體能夠存取叢集上的 Kubernetes 物件,您必須建立和管理 Kubernetes 角色型授權 (RBAC) 物件。在您的叢集上建立 KubernetesRoleBinding或ClusterRoleBinding物件,並將群組名稱指定為kind: Group的subject。Kubernetes 會授權 IAM 主體存取您在 KubernetesRole或ClusterRole物件中指定的任何叢集物件,這些物件您也在繫結的roleRef中指定了。如果您指定群組名稱,則建議您熟悉 Kubernetes role-based 角色型授權 (RBAC) 物件。如需詳細資訊,請參閱 Kubernetes 文件中的使用 RBAC 授權。 重要
Amazon EKS 不會確認叢集上存在的任何 Kubernetes RBAC 物件是否包含您指定的任何群組名稱。例如,如果您為目前不存在的群組建立存取項目,EKS 將會建立該群組,而不是傳回錯誤。
您可以將 Amazon EKS 存取政策關聯到存取項目,而不是讓 Kubernetes 授權 IAM 主體存取叢集上的 Kubernetes 物件。Amazon EKS 授權 IAM 主體使用存取政策中的許可存取叢集上的 Kubernetes 物件。您可以將存取政策的許可範圍限定為您指定的 Kubernetes 命名空間。使用存取政策無需您管理 Kubernetes RBAC 物件。如需詳細資訊,請參閱 將存取政策與存取項目相關聯。
-
如果您建立類型為
EC2_LINUX或EC2_Windows的存取項目,則建立該存取項目的 IAM 主體必須具有iam:PassRole許可。如需詳細資訊,請參閱《IAM 使用者指南》中的授予使用者將角色傳遞至 AWS 服務的許可。 -
與標準 IAM 行為類似,存取項目的建立和更新採用最終一致模式,在初始 API 呼叫成功返回後可能需要幾秒鐘才能生效。您設計的應用程式必須能夠處理這些可能的延遲問題。建議您不要在應用程式的關鍵、高可用性程式碼路徑中包含存取項目建立或更新動作。而應在不常運作的、單獨的初始化或設定常式中進行 更改。另外,在生產工作流程套用這些變更之前,請務必確認變更已傳播完畢。
-
存取項目不支援服務連結角色。您無法建立主體 ARN 是服務連結角色的存取項目。您可以透過其 ARN 識別服務連結角色,其格式為
arn:aws:iam::*:role/aws-service-role/*。
您可以使用 AWS 管理主控台 或 AWS CLI 建立存取項目。
AWS 管理主控台
-
開啟 Amazon EKS 主控台
。 -
選擇要在其中建立存取項目的叢集名稱。
-
選擇存取索引標籤。
-
選擇建立存取項目。
-
對於 IAM 主體,選取現有 IAM 角色或使用者。IAM 最佳實務建議使用具有短期憑證的 IAM 角色存取叢集,而不是使用具有長期憑證的 IAM 使用者進行存取。如需詳細資訊,請參閱《IAM 使用者指南》中的要求人類使用者搭配身分提供者使用聯合功能,以便使用暫時性憑證存取 AWS。
-
對於類型,如果存取項目針對用於自我管理 Amazon EC2 節點的節點角色,請選取 EC2 Linux 或 EC2 Windows。否則,請接受預設值 (標準)。
-
如果您選擇的類型是標準並且您想要指定使用者名稱,則請輸入使用者名稱。
-
如果您選擇的類型是標準並且您想要對 IAM 主體使用 Kubernetes RBAC 授權,則請為群組指定一個或多個名稱。如果不指定任何群組名稱並希望使用 Amazon EKS 授權,則您可以在後續步驟中或在建立存取項目後關聯存取政策。
-
(選用) 您可以使用標籤為存取項目指派標籤。例如,為了更輕鬆地找到具有相同標籤的所有資源而指定標籤。
-
選擇下一步。
-
在新增存取政策頁面上,如果您選擇的類型是標準並且希望 Amazon EKS 授予該 IAM 主體對叢集上的 Kubernetes 物件的許可,請完成下列步驟。否則請選擇 Next (下一步)。/
-
對於政策名稱,請選擇存取政策。您無法檢視存取政策的許可,但其包含與 Kubernetes 面向使用者之
ClusterRole物件中的許可類似的許可。如需詳細資訊,請參閱 Kubernetes 文件中的 User-facing roles一節。 -
請選擇下列其中一個選項:
-
叢集:如果您希望 Amazon EKS 授予該 IAM 主體存取政策中針對叢集上所有 Kubernetes 物件的許可,請選擇此選項。
-
Kubernetes 命名空間:如果您希望 Amazon EKS 授予該 IAM 主體存取政策中針對叢集上特定 Kubernetes 命名空間中所有 Kubernetes 物件的許可,則請選擇此選項。對於命名空間,請輸入叢集上 Kubernetes 命名空間的名稱。如果要新增其他命名空間,則請選擇新增命名空間並輸入命名空間名稱。
-
-
如果要新增其他政策,則請選擇新增政策。您可以對每個政策設定不同的範圍,但每個政策只能新增一次。
-
選擇下一步。
-
-
檢查存取項目的組態。如果有任何內容看起來不正確,請選擇上一步以返回上一步並修正錯誤。如果組態正確,請選擇建立。
AWS CLI
-
依據《AWS 命令列介面使用者指南》中的安裝內容所述,安裝 AWS CLI。
-
要建立存取項目,您可以使用以下任何範例來建立存取項目:
-
為自我管理的 Amazon EC2 Linux 節點群組建立存取項目。用您的叢集名稱取代
my-cluster,用您的 AWS 帳戶 ID 取代111122223333,並用您的節點 IAM 角色的名稱取代EKS-my-cluster-self-management-ng-1。如果節點群組是 Windows 節點群組,請用EC2_Windows取代EC2_LINUX。aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/EKS-my-cluster-self-managed-ng-1 --type EC2_LINUX當指定
STANDARD以外的類型時,則不能使用--kubernetes-groups選項。您無法將存取政策與此存取項目關聯,因為其類型是STANDARD以外的值。 -
建立這樣的一個存取項目:允許一個未用於 Amazon EC2 自我管理節點群組且您希望 Kubernetes 透過其授予對叢集的存取權的 IAM 角色。用您的叢集名稱取代
my-cluster,用您的 AWS 帳戶 ID 取代111122223333,並用您的 IAM 角色名稱取代my-role。用您在叢集上的 KubernetesRoleBinding或ClusterRoleBinding物件中指定的群組名稱取代Viewers。aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role --type STANDARD --user Viewers --kubernetes-groups Viewers -
建立一個允許 IAM 使用者向叢集進行身分驗證的存取項目。在此提供此範例只是為了說明這種可能性。IAM 最佳實務建議使用具有短期憑證的 IAM 角色存取叢集,而不是使用具有長期憑證的 IAM 使用者進行存取。如需詳細資訊,請參閱《IAM 使用者指南》中的要求人類使用者搭配身分提供者使用聯合功能,以便使用暫時性憑證存取 AWS。
aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:user/my-user --type STANDARD --username my-user如果您希望此使用者對叢集的存取許可高於 Kubernetes API 探索角色中的許可,則您需要將存取政策關聯到該存取項目,因為不使用
--kubernetes-groups選項。如需詳細資訊,請參閱 Kubernetes 文件中的 將存取政策與存取項目相關聯 以及 API discovery roles兩節。
-