本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAM 角色和許可參考
用於評估的 IAM 角色
為了執行評估,新一代的 Resilience Hub 需要能夠擔任具有許多唯讀許可的 IAM 角色,以探索和了解 資源 AWS 的組態。
您可以在 IAM 主控台中建立 IAM AWS 角色。選擇自訂信任政策,並使用如下的信任政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "resiliencehub.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
如需許可,請選擇 AWSResilienceHubAsssessmentExecutionPolicy受管政策和 ReadOnlyAccess受管政策。需要此ReadOnlyAccess政策才能獲得最佳的失敗模式評估效能。
IAM 服務連結角色
新一代 Resilience Hub 會使用 AWSResilienceHubServiceRolePolicy受管政策自動建立服務連結角色。只有 AWS Organizations 支援需要此角色。
Terraform 狀態檔案存取許可
如果您要在新一代 Resilience Hub 服務中包含 Terraform 狀態檔案,請提供許可,以使用下列政策從 Amazon S3 儲存貯體讀取 Terraform 檔案:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/path-to-state-file" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::s3-bucket-name" } ] }
Amazon EKS 許可
如果您在新一代 Resilience Hub 服務中包含 Amazon EKS 叢集,請遵循下列 3 步驟程序,提供新一代 Resilience Hub 許可,以使用 Kubernetes 角色型存取控制 (RBAC) 讀取 Amazon EKS 叢集的組態資料。
步驟 1:將下列項目套用至您的 Amazon EKS 叢集
這可讓新一代 Resilience Hub 唯讀存取其在所有命名空間中所需的 Kubernetes 資源:
cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-cluster-role rules: - apiGroups: - "" resources: - pods - replicationcontrollers - nodes - services verbs: - get - list - apiGroups: - apps resources: - deployments - replicasets verbs: - get - list - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - apiGroups: - autoscaling.k8s.io resources: - verticalpodautoscalers verbs: - get - list - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - apiGroups: - karpenter.sh resources: - provisioners - nodepools verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates - ec2nodeclasses verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: resilience-hub-eks-access-cluster-role-binding subjects: - kind: Group name: resilience-hub-eks-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: resilience-hub-eks-access-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
步驟 2:將 IAM 角色映射至 Kubernetes 群組
將您建立的 IAM 角色映射至 Kubernetes resilience-hub-eks-access-group 群組。您可以使用 Amazon EKS 存取項目 (建議) 或 aws-auth ConfigMap。
選項 A:使用 EKS 存取項目 (建議)
EKS 存取項目是管理叢集身分驗證的偏好方法。您的叢集必須使用 API或 API_AND_CONFIG_MAP 身分驗證模式。
aws eks create-access-entry \ --cluster-namecluster-name\ --principal-arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole \ --type STANDARD \ --kubernetes-groups '["resilience-hub-eks-access-group"]'
選項 B:使用 aws-auth ConfigMap
如果您的叢集使用 CONFIG_MAP或 API_AND_CONFIG_MAP 身分驗證模式,您可以改為編輯 aws-auth ConfigMap:
使用 eksctl:
eksctl create iamidentitymapping \ --clustercluster-name\ --regionregion\ --arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole \ --group resilience-hub-eks-access-group \ --username AwsResilienceHubAssessmentEKSAccessRole
或手動編輯 ConfigMap:
kubectl edit -n kube-system configmap/aws-auth
在資料區段mapRoles的 下新增此項目:
- groups: - resilience-hub-eks-access-group rolearn: arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole username: AwsResilienceHubAssessmentEKSAccessRole
步驟 3:驗證
確認 RBAC 資源存在且角色映射已就緒:
kubectl get clusterrole resilience-hub-eks-access-cluster-role kubectl describe clusterrolebinding resilience-hub-eks-access-cluster-role-binding
如果使用存取項目 (選項 A):
aws eks describe-access-entry \ --cluster-namecluster-name\ --principal-arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole
如果使用 aws-auth ConfigMap (選項 B):
kubectl get configmap aws-auth -n kube-system -o yaml | grep -A 3 "ResilienceHubRole"