Concedendo AWS Resilience Hub acesso a recursos em seu cluster Amazon EKS - AWS Hub de resiliência

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á.

Concedendo AWS Resilience Hub acesso a recursos em seu cluster Amazon EKS

AWS Resilience Hub permite que você acesse recursos localizados nos clusters do Amazon EKS, desde que você tenha configurado as permissões necessárias.

Conceder as permissões necessárias AWS Resilience Hub para descobrir e avaliar recursos dentro do cluster Amazon EKS
  1. Configure um perfil do IAM para acessar o cluster do Amazon EKS.

    Se você configurou seu aplicativo usando o acesso baseado em função, você pode pular esta etapa e prosseguir para a etapa 2 e usar a função que você usou para criar o aplicativo. Para obter mais informações sobre como o AWS Resilience Hub usa os perfis do IAM, consulte Como o AWS Resilience Hub funciona com o IAM.

    Se você configurou seu aplicativo usando as permissões atuais de usuário do IAM, você deve criar um perfil do IAM AwsResilienceHubAssessmentEKSAccessRole na mesma conta do cluster do Amazon EKS. Esse perfil do IAM será então usado ao acessar seu cluster do Amazon EKS.

    Ao importar e avaliar seu aplicativo, AWS Resilience Hub usa uma função do IAM para acessar os recursos em seu cluster Amazon EKS. Essa função deve ser criada na mesma conta do seu cluster Amazon EKS e será mapeada com um grupo Kubernetes que inclui as permissões exigidas AWS Resilience Hub para avaliar seu cluster Amazon EKS.

    Se o seu cluster Amazon EKS estiver na mesma conta da conta de AWS Resilience Hub chamada, a função deverá ser criada usando a seguinte política de confiança do IAM. Nessa política de confiança do IAM, caller_IAM_role é usada na conta corrente para a qual chamar as APIs. AWS Resilience Hub

    nota

    Essa caller_IAM_role é a função associada à sua conta de AWS usuário.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::eks_cluster_account_id:role/caller_IAM_role" }, "Action": "sts:AssumeRole" } ] }

    Se o seu cluster Amazon EKS estiver em uma conta cruzada (uma conta diferente da conta de AWS Resilience Hub chamada), você deverá criar a função do AwsResilienceHubAssessmentEKSAccessRole IAM usando a seguinte política de confiança do IAM:

    nota

    Como pré-requisito, para acessar o cluster Amazon EKS que é implantado em uma conta diferente da conta do AWS Resilience Hub usuário, você deve configurar o acesso de várias contas. Para obter mais informações, consulte

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::eks_cluster_account_id:role/AwsResilienceHubExecutorRole" }, "Action": "sts:AssumeRole" } ] }
  2. Crie ClusterRole e ClusterRoleBinding (ouRoleBinding) funções para o AWS Resilience Hub aplicativo.

    ClusterRoleBindingCriará ClusterRole e concederá as permissões de somente leitura necessárias AWS Resilience Hub para analisar e avaliar recursos que fazem parte de determinados namespaces em seu cluster Amazon EKS.

    AWS Resilience Hub permite que você limite o acesso aos seus namespaces para gerar avaliações de resiliência preenchendo uma das seguintes opções:

    1. Conceda acesso de leitura em todos os namespaces ao aplicativo do AWS Resilience Hub .

      AWS Resilience Hub Para avaliar a resiliência dos recursos em todos os namespaces em um cluster do Amazon EKS, você deve criar o seguinte e. ClusterRole ClusterRoleBinding

      • resilience-hub-eks-access-cluster-role(ClusterRole) — Define as permissões necessárias AWS Resilience Hub para avaliar seu cluster Amazon EKS.

      • resilience-hub-eks-access-cluster-role-binding (ClusterRoleBinding): define um grupo nomeado de resilience-hub-eks-access-group em seu cluster do Amazon EKS, concedendo a seus usuários as permissões necessárias para executar avaliações de resiliência no AWS Resilience Hub.

      O modelo para conceder acesso de leitura em todos os namespaces ao aplicativo do AWS Resilience Hub é o seguinte:

      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 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 verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates 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. Concedendo AWS Resilience Hub acesso para ler namespaces específicos.

      Você pode limitar o acesso AWS Resilience Hub a recursos dentro de um conjunto específico de namespaces usando. RoleBinding Para isso, você deve criar as seguintes funções:

      • ClusterRole— AWS Resilience Hub Para acessar os recursos em namespaces específicos dentro de um cluster do Amazon EKS e avaliar sua resiliência, você deve criar as seguintes funções. ClusterRole

        • resilience-hub-eks-access-cluster-role: especifica as permissões necessárias para avaliar os recursos em namespaces específicos.

        • resilience-hub-eks-access-global-cluster-role— Especifica as permissões necessárias para avaliar recursos com escopo de cluster, que não estão associados a um namespace específico, em seus clusters do Amazon EKS. AWS Resilience Hub exige permissões para acessar recursos com escopo de cluster (como nós) em seu cluster Amazon EKS para avaliar a resiliência do seu aplicativo.

        O modelo para criar a função ClusterRole é o seguinte:

        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 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 --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: resilience-hub-eks-access-global-cluster-role rules: - apiGroups: - "" resources: - nodes verbs: - get - list - apiGroups: - karpenter.sh resources: - provisioners verbs: - get - list - apiGroups: - karpenter.k8s.aws resources: - awsnodetemplates verbs: - get - list --- EOF
      • RoleBindingfunção — Essa função concede as permissões necessárias AWS Resilience Hub para acessar recursos em namespaces específicos. Ou seja, você deve criar uma RoleBinding função em cada namespace para permitir o acesso AWS Resilience Hub a recursos dentro de um determinado namespace.

        nota

        Se você estiver usando ClusterAutoscaler para escalonamento automático, você também deve criar RoleBinding em kube-system. Isso é necessário para avaliar o seu ClusterAutoscaler, que faz parte do namespace kube-system.

        Ao fazer isso, você AWS Resilience Hub concederá as permissões necessárias para avaliar recursos dentro do kube-system namespace enquanto avalia seu cluster Amazon EKS.

        O modelo para criar a função RoleBinding é o seguinte:

        cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: resilience-hub-eks-access-cluster-role-binding namespace: <namespace> 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
      • ClusterRoleBindingfunção — Essa função concede as permissões necessárias AWS Resilience Hub para acessar recursos com escopo de cluster.

        O modelo para criar a função ClusterRoleBinding é o seguinte:

        cat << EOF | kubectl apply -f - --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: resilience-hub-eks-access-global-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-global-cluster-role apiGroup: rbac.authorization.k8s.io --- EOF
  3. Atualize aws-auth ConfigMap para mapear resilience-hub-eks-access-group com o perfil do IAM que é usado para acessar o cluster do Amazon EKS.

    Essa etapa cria um mapeamento entre o perfil do IAM usado na etapa 1 com o grupo do Kubernetes criado na etapa 2. Esse mapeamento concede permissões a perfis do IAM para acessar recursos dentro do cluster do Amazon EKS.

    nota
    • O ROLE-NAME refere-se ao perfil do IAM usado para acessar o cluster do Amazon EKS.

      • Se seu aplicativo estiver configurado para usar acesso baseado em funções, a função deverá ser a função de invocador ou a função de conta secundária que é passada AWS Resilience Hub durante a criação do aplicativo.

      • Se seu aplicativo estiver configurado para usar o usuário atual do IAM para acessar recursos, ele deverá ser AwsResilienceHubAssessmentEKSAccessRole.

    • ACCOUNT-IDdeve ser o ID da AWS conta do cluster Amazon EKS.

    É possível criar aws-auth ConfigMap usando uma das seguintes maneiras:

    • Usar o eksctl

      Use o comando a seguir para atualizar aws-auth ConfigMap:

      eksctl create iamidentitymapping \ --cluster <cluster-name> \ --region=<region-code> \ --arn arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME>\ --group resilience-hub-eks-access-group \ --username AwsResilienceHubAssessmentEKSAccessRole
    • Você pode editar manualmente aws-auth ConfigMap adicionando os detalhes do perfil do IAM à seção mapRoles de ConfigMap nos dados. Use o comando a seguir para editar o aws-auth ConfigMap.

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

      A seção mapRoles consiste nos seguintes parâmetros:

      • rolearn: o nome do recurso da Amazon (ARN) do perfil do IAM a ser adicionado.

        • Sintaxe do ARN: arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME>.

      • username: o username dentro do Kubernetes a ser mapeado para o perfil do IAM (AwsResilienceHubAssessmentEKSAccessRole).

      • groups: os nomes dos grupos devem corresponder aos nomes dos grupos criados na Etapa 2 (resilience-hub-eks-access-group).

      nota

      Se a seção mapRoles não existir, você deverá adicioná-la manualmente.

      Use o modelo a seguir para adicionar os detalhes do perfil do IAM à seção mapRoles de ConfigMap nos dados.

      - groups: - resilience-hub-eks-access-group rolearn: arn:aws:iam::<ACCOUNT-ID>:role/<ROLE-NAME> username: AwsResilienceHubAssessmentEKSAccessRole