View a markdown version of this page

Referência de funções e permissões do IAM - AWS Resilience Hub

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Referência de funções e permissões do IAM

Papel do IAM para avaliação e teste de resiliência

Para executar uma avaliação ou um teste de resiliência, a próxima geração do Resilience Hub precisa ser capaz de assumir uma função do IAM. As avaliações exigem permissões somente de leitura para descobrir e entender a configuração de seus recursos. AWS Além disso, o teste de resiliência exige permissões para iniciar e gerenciar AWS Fault Injection Service (AWS FIS) experimentos em seu nome.

Você pode criar uma função do IAM no console AWS do IAM. Escolha Política de confiança personalizada e use uma política de confiança como esta:

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

Para obter permissões, anexe a política AWSResilienceHubV2AssessmentExecutionPolicy gerenciada. Essa política concede acesso somente para leitura a AWS serviços para descoberta, avaliação e gerenciamento de resiliência.

nota

O AWSResilienceHubV2AssessmentExecutionPolicy substitui o anterior AWSResilienceHubAsssessmentExecutionPolicy para uso com a próxima geração do Resilience Hub. Para obter detalhes sobre as permissões incluídas nesta política, consulte AWSResilienceHubV2AssessmentExecutionPolicy.

Se você usar o teste de resiliência, anexe também a política AWSResilienceHubResilienceTestingPolicy gerenciada. Essa política concede ao Resilience Hub as AWS FIS permissões necessárias para iniciar e gerenciar experimentos em seu nome.

nota

Se a política gerenciada não estiver disponível em sua conta, crie uma política embutida com as mesmas permissões. Para obter o conteúdo da política, consulteAWSResilienceHubResilienceTestingPolicy.

Service-Linked Função do IAM

O Resilience Hub de próxima geração cria automaticamente uma Service-Linked função com a política AWSResilienceHubServiceRolePolicy gerenciada.

Permissões de acesso ao arquivo de estado do Terraform

Se você estiver incluindo arquivos de estado do Terraform em seu serviço Resilience Hub de próxima geração, forneça permissões para ler os arquivos do Terraform do seu bucket do Amazon S3 com uma política como esta:

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

Função de execução do IAM para testes de resiliência

Os testes de resiliência são executados sob uma função do IAM que AWS Fault Injection Service pressupõe a injeção de falhas em seus recursos. As permissões necessárias dependem do modelo de teste, e os testes de conta única e de várias contas usam estruturas de função diferentes. Para ver as políticas de confiança e permissões para cada teste, consulteFunções de execução do IAM para testes de resiliência.

Permissões do Amazon EKS

Se você estiver incluindo clusters do Amazon EKS em seu serviço do Resilience Hub de próxima geração, siga o processo de três etapas a seguir para fornecer permissões do Resilience Hub de última geração para ler dados de configuração para seus clusters do Amazon EKS usando o controle de acesso baseado em funções (RBAC) do Kubernetes.

Etapa 1: aplique o seguinte ao seu cluster Amazon EKS

Isso concede ao Resilience Hub de próxima geração acesso somente para leitura aos recursos do Kubernetes necessários em todos os namespaces:

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

Etapa 2: mapear a função do IAM para o grupo Kubernetes

Mapeie a função do IAM que você criou para o grupo resilience-hub-eks-access-group Kubernetes. Você pode usar as entradas de acesso do Amazon EKS (recomendadas) ou aws-auth ConfigMap o.

Opção A: Usar entradas de acesso EKS (recomendado)

As entradas de acesso EKS são o método preferido para gerenciar a autenticação do cluster. Seu cluster deve usar API nosso modo API_AND_CONFIG_MAP de autenticação.

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

Opção B: usando aws-auth ConfigMap

Se seu cluster usa o modo CONFIG_MAP de API_AND_CONFIG_MAP autenticação, você pode editar o ConfigMap aws-auth em vez disso:

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

Ou edite manualmente o ConfigMap:

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

Adicione isso mapRoles na seção de dados:

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

Etapa 3: Verificar

Confirme se os recursos do RBAC existem e se o mapeamento de funções está em vigor:

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

Se estiver usando entradas de acesso (Opção A):

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

Se estiver usando aws-auth ConfigMap (Opção B):

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