本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
必要的 IAM 許可和角色
AWS 受管政策
您可以將 AWSResilienceHubV2AssessmentExecutionPolicy 連接至您的 IAM 身分。執行評估時,此政策會授予其他服務的唯讀存取許可, AWS 以進行彈性探索、評估和管理。如需此政策中包含之許可的詳細資訊,請參閱 AWSResilienceHubV2AssessmentExecutionPolicy。
用於評估的 IAM 角色
若要執行評估,新一代的 Resilience Hub 必須擔任具有唯讀許可的 IAM 角色。此角色會探索和讀取 資源 AWS 的組態。
您可以在 IAM 主控台中建立 IAM AWS 角色。選擇自訂信任政策,並使用如下的信任政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "resiliencehub.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
如需許可,請選擇 AWSResilienceHubV2AssessmentExecutionPolicy受管政策和 ReadOnlyAccess受管政策。需要此ReadOnlyAccess政策才能獲得最佳的失敗模式評估效能。
IAM 服務連結角色
新一代 Resilience Hub 會使用 AWSResilienceHubServiceRolePolicy受管政策自動建立服務連結角色。只有 AWS Organizations 支援需要此角色。
Terraform 狀態檔案存取許可
如果您要將 Terraform 狀態檔案包含在新一代 Resilience Hub 服務中,請提供許可,以使用下列政策從 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"