View a markdown version of this page

IAM 角色和許可參考 - AWS 彈性中樞

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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 存取項目是管理叢集身分驗證的偏好方法。您的叢集必須使用 APIAPI_AND_CONFIG_MAP 身分驗證模式。

aws eks create-access-entry \ --cluster-name cluster-name \ --principal-arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole \ --type STANDARD \ --kubernetes-groups '["resilience-hub-eks-access-group"]'

選項 B:使用 aws-auth ConfigMap

如果您的叢集使用 CONFIG_MAPAPI_AND_CONFIG_MAP 身分驗證模式,您可以改為編輯 aws-auth ConfigMap:

使用 eksctl:

eksctl create iamidentitymapping \ --cluster cluster-name \ --region region \ --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-name cluster-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"