Associar políticas de acesso a entradas de acesso - Amazon EKS

Associar políticas de acesso a entradas de acesso

Você pode atribuir uma ou mais políticas de acesso para acessar entradas do tipo STANDARD. O Amazon EKS concede automaticamente aos outros tipos de entradas de acesso as permissões necessárias para funcionar adequadamente em seu cluster. As políticas de acesso do Amazon EKS incluem permissões do Kubernetes, não permissões do IAM. Antes de associar uma política de acesso a uma entrada de acesso, familiarize-se com as permissões do Kubernetes incluídas em cada política de acesso. Para ter mais informações, consulte Permissão da política de acesso a dados. Se nenhuma das políticas de acesso atender aos seus requisitos, não associe uma política de acesso a uma entrada de acesso. Em vez disso, especifique um ou mais nomes de grupos para a entrada de acesso e crie e gerencie objetos de controle de acesso baseados em funções do Kubernetes. Para ter mais informações, consulte Criar entradas de acesso.

  • Uma entrada de acesso existente. Para criar uma, consulte Criar entradas de acesso.

  • Um perfil ou usuário do AWS Identity and Access Management com as seguintes permissões: ListAccessEntries, DescribeAccessEntry, UpdateAccessEntry, ListAccessPolicies, AssociateAccessPolicy, e DisassociateAccessPolicy. Para obter mais informações, consulte Ações definidas pelo Amazon Elastic Kubernetes Service na Referência de autorização do serviço.

Antes de associar políticas de acesso às entradas de acesso, considere os seguintes requisitos:

  • Você pode associar várias políticas de acesso a cada entrada de acesso, mas só pode associar cada política a uma entrada de acesso uma vez. Se você associar várias políticas de acesso, a entidade principal do IAM da entrada de acesso tem todas as permissões incluídas em todas as políticas de acesso associadas.

  • Você pode definir o escopo de uma política de acesso para todos os recursos em um cluster ou especificando o nome de um ou mais namespaces do Kubernetes. Você pode usar caracteres curinga para o nome de um namespace. Por exemplo, se você quiser definir o escopo de uma política de acesso para todos os namespaces que começam com dev-, você pode especificar dev-* como um nome de namespace. Verifique se os namespaces existem no cluster e se a ortografia corresponde ao nome real do namespace no cluster. O Amazon EKS não confirma a ortografia nem a existência dos namespaces no seu cluster.

  • Você pode alterar o escopo de acesso de uma política de acesso depois de associá-la a uma entrada de acesso. Se você definiu o escopo da política de acesso para namespaces do Kubernetes, pode adicionar e remover namespaces da associação, conforme necessário.

  • Se você associar uma política de acesso a uma entrada de acesso que também tenha nomes de grupos especificados, a entidade principal do IAM terá todas as permissões em todas as políticas de acesso associadas. Ela também tem todas as permissões em qualquer objeto Role ou ClusterRole do Kubernetes especificado em qualquer objeto Role ou RoleBinding do Kubernetes que especificam os nomes dos grupos.

  • Se você executar o comando kubectl auth can-i --list, não verá nenhuma permissão Kubernetes atribuída pelas políticas de acesso associadas a uma entrada de acesso para a entidade principal do IAM que você está usando ao executar o comando. O comando só mostra permissões Kubernetes se você as concedeu em objetos Role ou ClusterRole do Kubernetes vinculados aos nomes de grupo ou nome de usuário que você especificou para uma entrada de acesso.

  • Se você se faz passar por um usuário ou grupo do Kubernetes ao interagir com objetos do Kubernetes em seu cluster, como usar o comando kubectl com --as username ou --as-group group-name , você está forçando o uso da autorização RBAC do Kubernetes. Como resultado, a entidade principal do IAM não tem permissões atribuídas por nenhuma política de acesso associada à entrada de acesso. As únicas permissões do Kubernetes que o usuário ou grupo que a entidade principal do IAM está representando tem são as permissões do Kubernetes que você concedeu a eles em objetos Role ou ClusterRole do Kubernetes que você vinculou aos nomes do grupo ou do usuário. Para que sua entidade principal do IAM tenha as permissões nas políticas de acesso associadas, não se faça passar por um usuário ou grupo do Kubernetes. A entidade principal do IAM ainda terá todas as permissões que você concedeu a ele nos objetos Role ou ClusterRole do Kubernetes que você vinculou aos nomes de grupo ou nome de usuário que você especificou para a entrada de acesso. Para obter mais informações, consulte Personificação de usuário na documentação do Kubernetes.

Você pode associar uma política de acesso a uma entrada de acesso usando o AWS Management Console ou a AWS CLI.

AWS Management Console

  1. Abra o console do Amazon EKS.

  2. Escolha o nome do cluster que tem uma entrada de acesso à qual você deseja associar uma política de acesso.

  3. Escolha a guia Acesso.

  4. Se o tipo da entrada de acesso for Padrão, você poderá associar ou desassociar as políticas de acesso do Amazon EKS. Se o tipo da sua entrada de acesso for diferente de Padrão, essa opção não estará disponível.

  5. Escolha Associar política de acesso.

  6. Em Nome da política, selecione a política com as permissões que você deseja que a entidade principal do IAM tenha.. Para visualizar as permissões incluídas em cada política, consulte Permissão da política de acesso a dados.

  7. Em Escopo de acesso, escolha um escopo de acesso. Se você escolher Cluster, as permissões na política de acesso serão concedidas à entidade principal do IAM para recursos em todos os namespaces do Kubernetes. Se você escolher Namespace do Kubernetes, poderá então escolher Adicionar novo namespace. No campo Namespace exibido, você pode inserir o nome de um namespace do Kubernetes no seu cluster. Se quiser que a entidade principal do IAM tenha as permissões em vários namespaces, você pode inserir vários namespaces.

  8. Escolha Adicionar política de acesso.

AWS CLI

  1. Versão 2.12.3 ou posterior ou versão 1.27.160 ou posterior da AWS Command Line Interface (AWS CLI) instalada e configurada no seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, use aws --version | cut -d / -f2 | cut -d ' ' -f1. Os gerenciadores de pacotes, como yum, apt-get ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte Instalar e Configuração rápida com aws configure, no Guia do usuário da AWS Command Line Interface. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-lo, consulte Instalar a AWS CLI no seu diretório pessoal, no Guia do usuário do AWS CloudShell.

  2. Visualize as políticas de acesso disponíveis.

    aws eks list-access-policies --output table

    Veja um exemplo de saída abaixo.

    --------------------------------------------------------------------------------------------------------- | ListAccessPolicies | +-------------------------------------------------------------------------------------------------------+ || accessPolicies || |+---------------------------------------------------------------------+-------------------------------+| || arn | name || |+---------------------------------------------------------------------+-------------------------------+| || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSAdminPolicy | AmazonEKSAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy | AmazonEKSClusterAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSEditPolicy | AmazonEKSEditPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSViewPolicy | AmazonEKSViewPolicy || |+---------------------------------------------------------------------+-------------------------------+|

    Para visualizar as permissões incluídas em cada política, consulte Permissão da política de acesso a dados.

  3. Visualize suas entradas de acesso existentes. Substitua my-cluster pelo nome do cluster.

    aws eks list-access-entries --cluster-name my-cluster

    Veja um exemplo de saída abaixo.

    { "accessEntries": [ "arn:aws:iam::111122223333:role/my-role", "arn:aws:iam::111122223333:user/my-user" ] }
  4. Associe uma política de acesso a uma entrada de acesso. O exemplo a seguir associa a política de acesso do AmazonEKSViewPolicy a uma entrada de acesso. Sempre que o perfil do IAM my-role tentar acessar objetos do Kubernetes no cluster, o Amazon EKS autorizará a função a usar as permissões na política para acessar objetos do Kubernetes somente nos namespaces my-namespace1 e my-namespace2 do Kubernetes. Substitua my-cluster pelo nome do cluster, 111122223333 pelo ID da conta AWS e my-role pelo nome do perfil do IAM para o qual você deseja que o Amazon EKS autorize o acesso aos objetos do cluster Kubernetes.

    aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \ --access-scope type=namespace,namespaces=my-namespace1,my-namespace2 --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy

    Se você quiser que a entidade principal do IAM tenha as permissões em todo o cluster, substitua type=namespace,namespaces=my-namespace1,my-namespace2 por type=cluster. Se você quiser associar várias políticas de acesso à entrada de acesso, execute o comando várias vezes, cada uma com uma política de acesso exclusiva. Cada política de acesso associada tem seu próprio escopo.

    nota

    Se você quiser alterar posteriormente o escopo de uma política de acesso associada, execute o comando anterior novamente com o novo escopo. Por exemplo, se você quisesse remover my-namespace2, executaria o comando novamente usando somente type=namespace,namespaces=my-namespace1 . Se você quisesse alterar o escopo de namespace para cluster, executaria o comando novamente usando type=cluster, removendo type=namespace,namespaces=my-namespace1,my-namespace2 .

  5. Determine quais políticas de acesso estão associadas a uma entrada de acesso.

    aws eks list-associated-access-policies --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role

    Veja um exemplo de saída abaixo.

    { "clusterName": "my-cluster", "principalArn": "arn:aws:iam::111122223333", "associatedAccessPolicies": [ { "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy", "accessScope": { "type": "cluster", "namespaces": [] }, "associatedAt": "2023-04-17T15:25:21.675000-04:00", "modifiedAt": "2023-04-17T15:25:21.675000-04:00" }, { "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy", "accessScope": { "type": "namespace", "namespaces": [ "my-namespace1", "my-namespace2" ] }, "associatedAt": "2023-04-17T15:02:06.511000-04:00", "modifiedAt": "2023-04-17T15:02:06.511000-04:00" } ] }

    No exemplo anterior, a entidade principal do IAM para essa entrada de acesso tem permissões de visualização em todos os namespaces no cluster e permissões de administrador em dois namespaces do Kubernetes.

  6. Desassocie uma política de acesso de uma entrada de acesso. Neste exemplo, a política AmazonEKSAdminPolicy é desassociada de uma entrada de acesso. No entanto, a entidade principal do IAM retém as permissões na política de acesso AmazonEKSViewPolicy para objetos nos namespaces my-namespace1 e my-namespace2 porque essa política de acesso não está dissociada da entrada de acesso.

    aws eks disassociate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy

Permissão da política de acesso a dados

As políticas de acesso incluem rules que contêm verbs (permissões) e resources do Kubernetes. As políticas de acesso não incluem permissões ou recursos do IAM. Semelhantes aos objetos Role e ClusterRole do Kubernetes, as políticas de acesso incluem apenas rules allow. Não é possível modificar o conteúdo de uma política de acesso. Você não pode criar suas próprias políticas de acesso. Se as permissões nas políticas de acesso não atenderem às suas necessidades, crie objetos RBAC do Kubernetes e especifique nomes de grupos para suas entradas de acesso. Para ter mais informações, consulte Criar entradas de acesso. As permissões contidas nas políticas de acesso são semelhantes às permissões nas funções de cluster do Kubernetes voltadas para o usuário. Para obter mais informações, consulte User-facing roles na documentação do Kubernetes.

Escolha qualquer política de acesso para ver seu conteúdo. Cada linha de cada tabela em cada política de acesso é uma regra separada.

Essa política de acesso inclui permissões que concedem à entidade principal do IAM a maioria das permissões aos recursos. Quando associada a uma entrada de acesso, seu escopo de acesso geralmente é um ou mais namespaces do Kubernetes. Se você quiser que uma entidade principal do IAM tenha acesso de administrador a todos os recursos do cluster, associe a política de acesso AmazonEKSClusterAdminPolicyAmazonEKSClusterAdminPolicy à sua entrada de acesso.

ARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy

Grupos de APIs Kubernetes Recursos Kubernetes Verbos (permissões) Kubernetes

apps

daemonsets, deployments, deployments/rollback, deployments/scale, replicasets, replicasets/scale, statefulsets, statefulsets/scale

create, delete, deletecollection, patch, update

apps

controllerrevisions, daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, replicasets, replicasets/scale, replicasets/status, statefulsets, statefulsets/scale, statefulsets/status

get, list, watch

authorization.k8s.io

localsubjectaccessreviews

create

autoscaling

horizontalpodautoscalers

create, delete, deletecollection, patch, update

autoscaling

horizontalpodautoscalers, horizontalpodautoscalers/status

get, list, watch

batch

cronjobs, jobs

create, delete, deletecollection, patch, update

batch

cronjobs, cronjobs/status, jobs, jobs/status

get, list, watch

discovery.k8s.io

endpointslices

get, list, watch

extensions

daemonsets, deployments, deployments/rollback, deployments/scale, ingresses, networkpolicies, replicasets, replicasets/scale, replicationcontrollers/scale

create, delete, deletecollection, patch, update

extensions

daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, ingresses, ingresses/status, networkpolicies, replicasets, replicasets/scale, replicasets/status, replicationcontrollers/scale

get, list, watch

networking.k8s.io

ingresses, ingresses/status, networkpolicies

get, list, watch

networking.k8s.io

ingresses, networkpolicies

create, delete, deletecollection, patch, update

policy

poddisruptionbudgets

create, delete, deletecollection, patch, update

policy

poddisruptionbudgets, poddisruptionbudgets/status

get, list, watch

rbac.authorization.k8s.io

rolebindings, roles

create, delete, deletecollection, get, list, patch, update, watch

configmaps, endpoints, persistentvolumeclaims, persistentvolumeclaims/status, pods, replicationcontrollers, replicationcontrollers/scale, serviceaccounts, services, services/status

get,list, watch

pods/attach, pods/exec, pods/portforward, pods/proxy, secrets, services/proxy

get, list, watch

configmaps, events, persistentvolumeclaims, replicationcontrollers, replicationcontrollers/scale, secrets, serviceaccounts, services, services/proxy

create, delete, deletecollection, patch, update

pods, pods/attach, pods/exec, pods/portforward, pods/proxy

create, delete, deletecollection, patch, update

serviceaccounts

impersonate

bindings, events, limitranges, namespaces/status, pods/log, pods/status, replicationcontrollers/status, resourcequotas, resourcequotas/status

get, list, watch

namespaces

get,list, watch

Essa política de acesso inclui permissões que concedem ao administrador principal do IAM acesso a um cluster. Quando associada a uma entrada de acesso, seu escopo de acesso geralmente é o cluster, em vez de um namespace do Kubernetes. Se quiser que uma entidade principal do IAM tenha um escopo administrativo mais limitado, considere associar a política de acesso AmazonEKSAdminPolicyAmazonEKSAdminPolicy à sua entrada de acesso.

ARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy

Grupos de APIs Kubernetes Kubernetes nonResourceURLs Recursos Kubernetes Verbos (permissões) Kubernetes

\*

\*

\*

\*

\*

Essa política de acesso inclui permissões que concedem a uma entidade principal do IAM acesso de listagem/visualização a todos os recursos em um cluster. Observe que isso inclui Segredos do Kubernetes.

ARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminViewPolicy

Grupos de APIs Kubernetes Recursos Kubernetes Verbos (permissões) Kubernetes

\*

\*

`get, watch``

Essa política de acesso inclui permissões para que uma entidade principal do IAM edite a maioria dos recursos do Kubernetes.

ARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy

Grupos de APIs Kubernetes Recursos Kubernetes Verbos (permissões) Kubernetes

apps

daemonsets, deployments, deployments/rollback, deployments/scale, replicasets, replicasets/scale, statefulsets, statefulsets/scale

create, delete, deletecollection, patch, update

apps

controllerrevisions, daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, replicasets, replicasets/scale, replicasets/status, statefulsets, statefulsets/scale, statefulsets/status

get, list, watch

autoscaling

horizontalpodautoscalers, horizontalpodautoscalers/status

get, list, watch

autoscaling

horizontalpodautoscalers

create, delete, deletecollection, patch, update

batch

cronjobs, jobs

create, delete, deletecollection, patch, update

batch

cronjobs, cronjobs/status, jobs, jobs/status

get, list, watch

discovery.k8s.io

endpointslices

get, list, watch

extensions

daemonsets, deployments, deployments/rollback, deployments/scale, ingresses, networkpolicies, replicasets, replicasets/scale, replicationcontrollers/scale

create, delete, deletecollection, patch, update

extensions

daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, ingresses, ingresses/status, networkpolicies, replicasets, replicasets/scale, replicasets/status, replicationcontrollers/scale

get, list, watch

networking.k8s.io

ingresses, networkpolicies

create, delete, deletecollection, patch, update

networking.k8s.io

ingresses, ingresses/status, networkpolicies

get, list, watch

policy

poddisruptionbudgets

create, delete, deletecollection, patch, update

policy

poddisruptionbudgets, poddisruptionbudgets/status

get, list, watch

namespaces

get, list, watch

pods/attach, pods/exec, pods/portforward, pods/proxy, secrets, services/proxy

get, list, watch

serviceaccounts

impersonate

pods, pods/attach, pods/exec, pods/portforward, pods/proxy

create, delete, deletecollection, patch, update

configmaps, events, persistentvolumeclaims, replicationcontrollers, replicationcontrollers/scale, secrets, serviceaccounts, services, services/proxy

create, delete, deletecollection, patch, update

configmaps, endpoints, persistentvolumeclaims, persistentvolumeclaims/status, pods, replicationcontrollers, replicationcontrollers/scale, serviceaccounts, services, services/status

get, list, watch

bindings, events, limitranges, namespaces/status, pods/log, pods/status, replicationcontrollers/status, resourcequotas, resourcequotas/status

get, list, watch

Essa política de acesso inclui permissões para que uma entidade principal do IAM visualize a maioria dos recursos do Kubernetes.

ARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy

Grupos de APIs Kubernetes Recursos Kubernetes Verbos (permissões) Kubernetes

apps

controllerrevisions, daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, replicasets, replicasets/scale, replicasets/status, statefulsets, statefulsets/scale, statefulsets/status

get, list, watch

autoscaling

horizontalpodautoscalers, horizontalpodautoscalers/status

get, list, watch

batch

cronjobs, cronjobs/status, jobs, jobs/status

get, list, watch

discovery.k8s.io

endpointslices

get, list, watch

extensions

daemonsets, daemonsets/status, deployments, deployments/scale, deployments/status, ingresses, ingresses/status, networkpolicies, replicasets, replicasets/scale, replicasets/status, replicationcontrollers/scale

get, list, watch

networking.k8s.io

ingresses, ingresses/status, networkpolicies

get, list, watch

policy

poddisruptionbudgets, poddisruptionbudgets/status

get, list, watch

configmaps, endpoints, persistentvolumeclaims, persistentvolumeclaims/status, pods, replicationcontrollers, replicationcontrollers/scale, serviceaccounts, services, services/status

get, list, watch

bindings, events, limitranges, namespaces/status, pods/log, pods/status, replicationcontrollers/status, resourcequotas, resourcequotas/status

get, list, watch

namespaces

get, list, watch

Atualizações de política de acesso

Visualize detalhes sobre as atualizações das políticas de acesso, desde que elas foram introduzidas. Para receber alertas automáticos sobre alterações nesta página, assine o feed RSS em Histórico de documentos.

Alteração Descrição Data

Adicionar AmazonEKSAdminViewPolicy

Adicione uma nova política para acesso de visualização expandido, incluindo recursos como Segredos.

23 de abril de 2024

Políticas de acesso introduzidas.

O Amazon EKS introduziu políticas de acesso.

29 de maio de 2023