View a markdown version of this page

Referencia de roles y permisos de IAM - AWS Centro de resiliencia

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Referencia de roles y permisos de IAM

El papel de la IAM en la evaluación

Para poder realizar una evaluación, la próxima generación de Resilience Hub debe poder asumir una función de IAM con una serie de permisos de solo lectura para descubrir y comprender la configuración de sus recursos. AWS

Puede crear un rol de IAM en la consola de IAM. AWS Elija una política de confianza personalizada y utilice una política de confianza como esta:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "resiliencehub.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {} } ] }

Para los permisos, elige la política AWSResilienceHubAsssessmentExecutionPolicy gestionada y la política ReadOnlyAccess gestionada. La ReadOnlyAccess política es necesaria para obtener el mejor rendimiento de la evaluación del modo de fallo.

Función de IAM Service-Linked

Resilience Hub, de última generación, crea automáticamente un Service-Linked rol con la política AWSResilienceHubServiceRolePolicy gestionada. Esta función solo es necesaria para el soporte de AWS Organizations.

Permisos estatales de acceso a los archivos de Terraform

Si va a incluir archivos de estado de Terraform en su servicio Resilience Hub de próxima generación, otorgue permisos para leer los archivos de Terraform de su bucket de Amazon S3 con una política como la siguiente:

{ "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" } ] }

Permisos de Amazon EKS

Si va a incluir clústeres de Amazon EKS en su servicio Resilience Hub de próxima generación, siga el siguiente proceso de 3 pasos para proporcionar permisos a Resilience Hub de próxima generación para leer los datos de configuración de sus clústeres de Amazon EKS mediante el control de acceso basado en roles (RBAC) de Kubernetes.

Paso 1: aplique lo siguiente a su clúster de Amazon EKS

Esto otorga a la próxima generación de Resilience Hub acceso de solo lectura a los recursos de Kubernetes que necesita en todos los espacios de nombres:

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

Paso 2: Asignar la función de IAM al grupo Kubernetes

Asigne la función de IAM que creó al grupo de Kubernetes. resilience-hub-eks-access-group Puede utilizar las entradas de acceso de Amazon EKS (recomendadas) o las aws-auth ConfigMap.

Opción A: usar entradas de acceso EKS (recomendado)

Las entradas de acceso EKS son el método preferido para gestionar la autenticación de clústeres. El clúster debe usar nuestro API modo API_AND_CONFIG_MAP de autenticación.

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"]'

Opción B: usar aws-auth ConfigMap

Si su clúster usa CONFIG_MAP nuestro modo de API_AND_CONFIG_MAP autenticación, puede editar aws-auth en su lugar: ConfigMap

Usando 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

O edite manualmente: ConfigMap

kubectl edit -n kube-system configmap/aws-auth

Añada lo siguiente mapRoles en la sección de datos:

- groups: - resilience-hub-eks-access-group rolearn: arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole username: AwsResilienceHubAssessmentEKSAccessRole

Paso 3: Verificar

Confirme que los recursos del RBAC existen y que la asignación de funciones está implementada:

kubectl get clusterrole resilience-hub-eks-access-cluster-role kubectl describe clusterrolebinding resilience-hub-eks-access-cluster-role-binding

Si utiliza entradas de acceso (opción A):

aws eks describe-access-entry \ --cluster-name cluster-name \ --principal-arn arn:aws:iam::ACCOUNT-ID:role/ResilienceHubRole

Si utiliza aws-auth ConfigMap (opción B):

kubectl get configmap aws-auth -n kube-system -o yaml | grep -A 3 "ResilienceHubRole"