跳至內容

如何設定 SSO 使用者以存取 Amazon EKS 叢集?

3 分的閱讀內容
0

我想要設定 AWS IAM Identity Center 使用者,以存取我的 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集。

解決方法

先決條件

  • 必須開啟並設定 IAM Identity Center
  • SSO 使用者必須與包含 EKS 叢集的 AWS 帳戶建立關聯
  • EKS 叢集必須支援 Access Entries (平台版本 eks.2 或更新版本)

若要設定 SSO 使用者存取您的 Amazon EKS 叢集,請完成以下步驟:

設定 AWS CLI 以進行 SSO 驗證

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

設定 AWS CLI 以使用 SSO 驗證,讓 SSO 使用者可以驗證並擔任 AWS Identity and Access Management (IAM) 角色。

如需更多使用 IAM Identity Center 設定 AWS CLI 的資訊,請參閱將 AWS CLI 與 IAM Identity Center 整合

設定 kubectl 以使用 SSO 設定檔

若要設定 kubectl 使用您的 SSO 設定檔,請執行以下 update-kubeconfig AWS CLI 命令:

aws eks update-kubeconfig --name your-cluster-name --profile your-sso-profile

**注意:**請將 your-cluster-name 替換為您的 EKS 叢集名稱。請將 your-sso-profile 替換為您的 SSO 設定檔名稱。

驗證叢集驗證模式

若要驗證叢集驗證模式,請執行以下 describe-cluster AWS CLI 命令:

aws eks describe-cluster --name your-cluster-name --query "cluster.accessConfig.authenticationMode" --profile your-sso-profile

**注意:**請將 your-cluster-name 替換為您的 EKS 叢集名稱。請將 your-sso-profile 替換為您的 SSO 設定檔名稱。

如果輸出顯示 APIAPI_AND_CONFIG_MAP,則表示已開啟 Access Entries。如果輸出顯示 CONFIG_MAP,則表示僅可使用 aws-auth ConfigMap 方法。

使用 Access Entries 設定存取

選擇以下其中一個權限層級:

授與全叢集管理員權限

請完成以下步驟:

  1. 開啟 Amazon EKS console (Amazon EKS 主控台)。
  2. 在導覽窗格中,選擇 Clusters (叢集)。
  3. 選取您的叢集。
  4. 選擇 Access (存取) 索引標籤。
  5. Access entries (存取項目) 區段中,選擇 Create access entry (建立存取項目)。
  6. IAM principal ARN (IAM 主體 ARN) 中,輸入不含路徑元件的 SSO 角色 ARN。
  7. Type (類型) 中,選擇 Standard (標準)。
  8. 選擇 Next (下一步)。
  9. Policy name (政策名稱) 中,選擇 AmazonEKSClusterAdminPolicy
  10. Access scope (存取範圍) 中,選擇 Cluster (叢集)。
  11. 選擇 Next (下一步),然後選擇 Create (建立)。

授與命名空間特定權限

請完成以下步驟:

  1. 開啟 Amazon EKS console (Amazon EKS 主控台)。
  2. 在導覽窗格中,選擇 Clusters (叢集)。
  3. 選取您的叢集。
  4. 選擇 Access (存取) 索引標籤。
  5. Access entries (存取項目) 區段中,選擇 Create access entry (建立存取項目)。
  6. IAM principal ARN (IAM 主體 ARN) 中,輸入不含路徑元件的 SSO 角色 ARN。
  7. Type (類型) 中,選擇 Standard (標準)。
  8. 選擇 Next (下一步)。
  9. 根據您的需求,在 Policy name (政策名稱) 中選擇 AmazonEKSAdminViewPolicyAmazonEKSEditPolicy
  10. Access scope (存取範圍) 中,選擇 Namespace (命名空間)。
  11. Namespace (命名空間) 中,輸入您的命名空間名稱。
  12. 選擇 Next (下一步),然後選擇 Create (建立)。

如需更多 Access Entries 的資訊,請參閱使用 EKS 存取項目將 IAM 使用者存取權授與 Kubernetes

使用 aws-auth ConfigMap 設定存取

**重要:**當您將 aws-auth 與 IAM Identity Center 搭配使用時,請使用不含路徑元件的 IAM 角色 ARN。例如,如果您的角色 ARN 為 arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdministratorAccess_1234567890abcdef,請移除路徑並使用 arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef

如果您的叢集不支援 Access Entries,或您偏好使用 aws-auth ConfigMap 方法,請完成以下步驟:

授與全叢集管理員權限

使用以下組態建立 YAML 檔案:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef
      username: sso-admin-user
      groups:
        - system:masters

**注意:**請將 rolearn 值替換為不含路徑元件的 SSO 角色 ARN。請將 sso-admin-user 替換為您偏好的使用者名稱。

套用組態:

kubectl apply -f aws-auth-configmap.yaml

授與命名空間特定權限

建立 Role 和 RoleBinding 以供特定命名空間存取:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: sso-user-role
  namespace: your-namespace
rules:
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: sso-user-rolebinding
  namespace: your-namespace
subjects:
- kind: User
  name: sso-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: sso-user-role
  apiGroup: rbac.authorization.k8s.io

**注意:**請將 your-namespace 替換為您的命名空間名稱。請將 sso-user 替換為您在 aws-auth ConfigMap 中指定的使用者名稱。

套用組態:

kubectl apply -f role-rolebinding.yaml

更新 aws-auth ConfigMap,將 SSO 角色對應至使用者名稱:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef
      username: sso-user

**注意:**請將 rolearn 值替換為不含路徑元件的 SSO 角色 ARN。

套用組態:

kubectl apply -f aws-auth-configmap.yaml

如需更多 aws-auth ConfigMap 的資訊,請參閱使用 ConfigMap 將 IAM 使用者存取權授與 Kubernetes

驗證存取

若要驗證 SSO 使用者可以存取叢集,請執行以下命令:

kubectl get nodes

如果命令傳回節點清單,則表示 SSO 使用者已成功通過叢集驗證。

相關資訊

叢集存取管理

AWS 官方已更新 5 個月前