Controle de acesso com o IAM
Este tópico descreve como usar o Identity and Access Management para controlar como o Config Connector pode criar e gerenciar recursos Google Cloud .
Para instalar o Config Connector, você faz a autenticação criando uma conta de serviço do IAM e usando a Federação de Identidade da Carga de Trabalho para GKE para vincular as contas de serviço do IAM às 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 gerenciar recursos com uma ou várias contas de serviço.
Uma conta de serviço única
Ao instalar o Config Connector com o complemento do GKE ou com a instalação
manual, é possível definir o modo de cluster na 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:
Várias contas de serviço
É possível usar várias contas de serviço definindo o modo com namespace na
CustomResource
ConfigConnector
.
O modo com namespace permite dividir as permissões com base nas respectivas preocupações de
diferentes contas de serviço do IAM e isolar as permissões entre
diferentes namespaces do Kubernetes, já que é possível associar uma conta de 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 Google Cloud em um único cluster.
Por exemplo, você cria uma conta de serviço do IAM para cada projeto, organiza os recursos de cada projeto no mesmo namespace do Kubernetes e vincula a conta de serviço do IAM correspondente ao 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:
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
Google Cloud. Há um pod cnrm-controller-manager
dedicado do Config Connector
para cada namespace que falsifica a identidade da conta de serviço do IAM
associada a ele.
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, você pode ter selecionado uma função básica temporária e atribuído a função à conta de serviço em que você configurou o Config Connector. Se você tiver configurado o Config Connector no modo de namespace, talvez tenha 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 papéis e permissões do IAM. Use os recursos IAMPolicyMember ou IAMPartialPolicy no Config Connector para configurar 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 configurada para se vincular à instalação do Config Connector no modo de cluster ou com namespace.
As seções a seguir listam diferentes exemplos de políticas que usam o Config Connector para gerenciar permissões do IAM.
Permissão de proprietário da organização
Para expandir as permissões do Config Connector para que ele possa gerenciar todos os projetos e pastas de uma determinada organização, siga estas etapas:
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 namespaceSERVICE_ACCOUNT_NAME
pelo nome da conta de serviçoHOST_PROJECT_ID
pelo ID do projeto host da sua conta de serviçoroles/owner
pelo papel apropriadoORGANIZATION_ID
pelo ID da organização
Aplique o manifesto YAML ao cluster usando
kubectl
ou qualquer ferramenta de gerenciamento de configuração que preferir.
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:
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 namespaceSERVICE_ACCOUNT_NAME
pelo nome da conta de serviçoHOST_PROJECT_ID
pelo ID do projeto host da sua conta de serviçoroles/owner
pelo papel apropriadoFOLDER_ID
pelo ID da pasta
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:
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 namespaceSERVICE_ACCOUNT_NAME
pelo nome da conta de serviçoHOST_PROJECT_ID
pelo ID do projeto host da sua conta de serviçoroles/owner
pelo papel apropriadoPROJECT_ID
pelo ID do projeto de destino
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: a concessão do papel de editor permite a maioria dos recursos do Config Connector, exceto as configurações abrangentes de Projeto ou Organização, como as modificações do IAM.
Papel 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.