本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
IAM 角色和权限参考
用于评估的 IAM 角色
为了进行评估,下一代 Resilience Hub 需要能够扮演具有多个只读权限的 IAM 角色,以发现和了解您的 AWS 资源配置。
您可以在 IAM 控制台中创建 AWS IAM 角色。选择 “自定义信任策略”,然后使用如下所示的信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "resiliencehub.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
要获得权限,请选择AWSResilienceHubAsssessmentExecutionPolicy托管策略和ReadOnlyAccess托管策略。该ReadOnlyAccess策略是故障模式评估的最佳性能所必需的。
IAM Service-Linked 角色
下一代 Resilience Hub 会自动使用AWSResilienceHubServiceRolePolicy托管策略创建 Service-Linked 角色。只有 Organizations 支持 AWS 才需要此角色。
Terraform 状态文件访问权限
如果您要将 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" } ] }
亚马逊 EKS 权限
如果您要将 Amazon EKS 集群纳入您的下一代弹性中心服务,请按照以下三步流程提供下一代弹性中心权限,以便使用 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 角色映射到 resilience-hub-eks-access-group Kubernetes 群组。您可以使用 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"