Controle de acesso com o IAM


Neste tópico, descrevemos como usar o Identity and Access Management para controlar como o Config Connector pode criar e gerenciar recursos do Google Cloud.

Para instalar o Config Connector, você precisa fazer a autenticação criando um conta de serviço e usar a federação de identidade da carga de trabalho do GKE para GKE para vincular o IAM contas de serviço com as contas de serviço do Kubernetes. O IAM permite que o Config Connector realize ações em recursos específicos. Ao limitar as permissões atribuídas às suas contas de serviço, você tem maior controle sobre os tipos de recursos que o Config Connector pode criar.

É possível optar por gerenciar recursos com uma ou várias conta de serviço e contas de serviço.

Uma conta de serviço única

Ao instalar o Config Connector com o complemento do GKE ou manual instalação, é possível definir o modo de cluster em ConfigConnector CustomResource. Com o modo de cluster, é possível usar uma única conta de serviço do IAM para criar e gerenciar recursos, mesmo se o Config Connector estiver sendo usado para gerenciar vários projetos.

O diagrama a seguir mostra como esse modo funciona, em que a mesma conta de serviço gerencia dois projetos:

Diagrama que mostra o Config Connector gerenciando vários Projetos com a mesma conta de serviço

Várias contas de serviço

Para usar várias contas de serviço, defina o modo com namespace no ConfigConnector CustomResource. O modo com namespace permite que você divida as permissões com base nas respectivas preocupações de diferentes contas de serviço do IAM e isolam as permissões diferentes namespaces do Kubernetes, porque é possível associar um serviço diferente para cada namespace.

Escolha o modo com namespace se você:

  • Quer isolar as permissões do IAM no nível do namespace do Kubernetes.
  • É possível gerenciar um grande número de recursos do Google Cloud de vários projetos do Google Cloud em um único cluster.

Por exemplo, você cria uma conta de serviço do IAM para cada organização, organizar recursos de cada projeto no mesmo namespace do Kubernetes e vincule a conta de serviço do IAM correspondente Namespace do Kubernetes. Isso permite separar as permissões do IAM para cada projeto, de modo que cada um tenha um conjunto de permissões distinto e não relacionado.

O diagrama a seguir mostra uma visão geral de como o modo com namespace funciona, em que cada projeto é gerenciado por uma conta de serviço diferente:

Diagrama mostrando o Config Connector gerenciando vários projetos usando os dois
serviço diferente
contas

No modo com namespace, cada conta de serviço do IAM é vinculada a um namespace por padrão. Quando você cria recursos nesse namespace, o Config Connector usa essa conta de serviço para criar recursos do Google Cloud. Há um pod cnrm-controller-manager dedicado do Config Connector para cada namespace que personifica a conta de serviço do IAM associados ao namespace.

Para saber como configurar o modo com namespace, consulte Como instalar o Config Connector usando um modo com namespace.

Ajustar as permissões após a instalação

Durante a instalação do Config Connector, é possível que você tenha selecionado um um papel básico e atribuiu esse papel à conta de serviço em que você configurou Config Connector. Se você tiver configurado o Config Connector no modo de namespace, poderá ter mais de uma conta de serviço do IAM.

Depois de concluir a instalação, talvez seja necessário remover ou atualizar as permissões amplas para alinhá-las às considerações de segurança e às práticas recomendadas.

Uma das principais vantagens do Config Connector é a ferramenta unificada. Isso significa que você pode usar o Config Connector para ajustar os papéis e as permissões do IAM. Você pode usar o IAMPolicyMember ou IAMPartialPolicy no Config Connector para definir as permissões do IAM. Para isso, é necessário ter uma conta de serviço do IAM com permissões de administrador em seus projetos, pastas ou organização. Essa conta de serviço precisa ser configurado para vincular ao Config Connector a instalação pelo modo de cluster ou com namespace.

As seções a seguir listam diferentes exemplos de políticas que usam o Config Connector para gerenciar as permissões do IAM.

Permissão do proprietário da organização

Para expandir as permissões do Config Connector para gerenciar todos os projetos e pastas de uma determinada organização, siga estas etapas:

  1. Crie o seguinte manifesto YAML:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Organization
       external: ORGANIZATION_ID
    

    Substitua:

    • NAMESPACE pelo nome do namespace.
    • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço
    • HOST_PROJECT_ID pelo ID do projeto host da conta de serviço.
    • roles/owner pelo papel apropriado
    • ORGANIZATION_ID pelo ID da organização
  2. Aplique o manifesto YAML ao cluster usando kubectl ou qualquer ferramenta de gerenciamento de configuração de sua escolha.

Permissão de proprietário da pasta

Para expandir as permissões do Config Connector para que ele possa gerenciar todos os projetos e pastas em uma determinada pasta, siga estas etapas:

  1. Crie o seguinte manifesto YAML:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Folder
       external: folders/FOLDER_ID
    

    Substitua:

    • NAMESPACE pelo nome do namespace.
    • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço
    • HOST_PROJECT_ID pelo ID do projeto host da conta de serviço.
    • roles/owner pelo papel apropriado
    • FOLDER_ID pelo ID da pasta
  2. Aplique o manifesto YAML ao cluster usando kubectl ou qualquer ferramenta de gerenciamento de configuração que preferir.

Permissões de proprietário do projeto

Para permitir que o Config Connector gerencie os recursos de um projeto específico, conclua as etapas a seguir:

  1. Crie o seguinte manifesto YAML:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Project
       external: projects/PROJECT_ID
    

    Substitua:

    • NAMESPACE pelo nome do namespace.
    • SERVICE_ACCOUNT_NAME pelo nome da conta de serviço
    • HOST_PROJECT_ID pelo ID do projeto host da conta de serviço.
    • roles/owner pelo papel apropriado
    • PROJECT_ID pelo ID do projeto de destino.
  2. Aplique o manifesto YAML ao cluster usando kubectl ou qualquer ferramenta de gerenciamento de configuração que preferir.

Papéis predefinidos

Se você preferir conceder permissões mais limitadas ao Config Connector, atribua uma ou mais funções do IAM à instalação do Config Connector criando alguns recursos IAMPolicyMember ou um recurso IAMPartialPolicy combinado. Os papéis a seguir são comumente atribuídos à conta de serviço do Config Connector:

  • Editor: conceder o papel de editor. permite a maioria dos recursos do Config Connector, exceto em todo o projeto ou organização configurações, como modificações do IAM.

  • Função de administrador da conta de serviço do IAM: a concessão das permissões roles/iam.serviceAccountAdmin permite que o Config Connector configure contas de serviço do IAM.

  • Resource Manager: conceder uma função de Resource Manager, como roles/resourcemanager.folderCreator, permite que o Config Connector gerencie pastas e organizações.

Papéis personalizados

Se os papéis predefinidos não atenderem às suas necessidades, crie papéis personalizados com permissões definidas por você.

Para saber como criar e atribuir papéis personalizados, consulte Como criar e gerenciar papéis personalizados.

A seguir