Controlo de acesso com a IAM
Este tópico descreve como usar a gestão de identidades e acessos para controlar a forma como o Config Connector pode criar e gerir Google Cloud recursos.
Para instalar o Config Connector, autentique-se criando uma conta de serviço do IAM e, em seguida, usando a Workload Identity Federation para o GKE para associar as contas de serviço do IAM às contas de serviço do Kubernetes. O IAM permite que o Config Connector tome medidas em recursos específicos. Ao limitar as autorizações atribuídas às suas contas de serviço, tem maior controlo sobre os tipos de recursos que o Config Connector pode criar.
Pode optar por gerir recursos com uma única conta de serviço ou várias contas de serviço.
Uma única conta de serviço
Quando instala o Config Connector com o suplemento do GKE ou a instalação
manual, pode definir o modo de cluster no seu ConfigConnector
CustomResource.
Com o modo de cluster, pode usar uma única conta de serviço do IAM para criar e gerir recursos, mesmo que esteja a usar o Config Connector para gerir vários projetos.
O diagrama seguinte mostra como este modo funciona, em que a mesma conta de serviço gere dois projetos:
Várias contas de serviço
Pode usar várias contas de serviço definindo o modo de espaço de nomes no seu
ConfigConnector
CustomResource.
O modo com espaço de nomes permite-lhe dividir as autorizações com base nas respetivas preocupações de diferentes contas de serviço da IAM e isolar as autorizações entre diferentes espaços de nomes do Kubernetes, uma vez que pode associar uma conta de serviço diferente a cada espaço de nomes.
Escolha o modo com espaço de nomes se:
- Quiser isolar as autorizações de IAM ao nível do espaço de nomes do Kubernetes.
- Esperar gerir um grande número de Google Cloud recursos de vários Google Cloud projetos num único cluster.
Por exemplo, pode criar uma conta de serviço da IAM para cada projeto, organizar os recursos de cada projeto no mesmo espaço de nomes do Kubernetes e, em seguida, associar a conta de serviço da IAM correspondente ao espaço de nomes do Kubernetes. Isto permite-lhe separar as autorizações de IAM para cada projeto, de modo que cada projeto tenha um conjunto de autorizações distinto e não relacionado.
O diagrama seguinte mostra uma vista geral do funcionamento do modo com espaço de nomes, em que cada projeto é gerido por uma conta de serviço diferente:
No modo com espaço de nomes, cada conta de serviço do IAM está associada a um espaço de nomes por predefinição. Quando cria recursos nesse espaço de nomes, o Config Connector usa esta conta de serviço para criar Google Cloud
recursos. Existe um pod do Config Connector dedicado para cada espaço de nomes que se faz passar pela conta de serviço do IAM associada ao espaço de nomes.cnrm-controller-manager
Para saber como configurar o modo com espaço de nomes, consulte o artigo Instalar o Config Connector usando um modo com espaço de nomes.
Ajuste as autorizações após a instalação
Durante a instalação do Config Connector, pode ter selecionado uma função básica temporária e atribuído a função à conta de serviço para a qual configurou o Config Connector. Se tiver configurado o Config Connector no modo de espaço de nomes, pode ter mais do que uma conta de serviço de IAM.
Após concluir a instalação, pode ter de remover ou atualizar as autorizações gerais para se alinhar com as considerações de segurança e as práticas recomendadas.
Uma das principais vantagens do Config Connector é o conjunto de ferramentas unificado. Isto significa que pode usar o Config Connector para ajustar as funções e as autorizações da IAM. Pode usar os recursos IAMPolicyMember ou IAMPartialPolicy no Config Connector para configurar as autorizações da IAM. Isto requer uma conta de serviço de IAM com autorizações de administrador nos seus projetos, pastas ou organização. Esta conta de serviço tem de ser configurada para ser associada à instalação do Config Connector através do modo de cluster ou do modo com espaço de nomes.
As secções seguintes apresentam diferentes exemplos de políticas que usam o Config Connector para gerir autorizações da IAM.
Autorização de proprietário da organização
Para expandir as autorizações do Config Connector para que possa gerir todos os projetos e pastas de uma determinada organização, conclua os seguintes passos:
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 o seguinte:
NAMESPACE
com o nome do seu espaço de nomesSERVICE_ACCOUNT_NAME
com o nome da sua conta de serviçoHOST_PROJECT_ID
com o ID do projeto anfitrião da sua conta de serviçoroles/owner
com a função adequadaORGANIZATION_ID
com o ID da sua organização
Aplique o manifesto YAML ao cluster através do comando
kubectl
ou de quaisquer ferramentas de gestão de configuração à sua escolha.
Autorização de proprietário da pasta
Para expandir as autorizações do Config Connector para que possa gerir todos os projetos e pastas numa determinada pasta, conclua os seguintes passos:
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 o seguinte:
NAMESPACE
com o nome do seu espaço de nomesSERVICE_ACCOUNT_NAME
com o nome da sua conta de serviçoHOST_PROJECT_ID
com o ID do projeto anfitrião da sua conta de serviçoroles/owner
com a função adequadaFOLDER_ID
com o ID da pasta
Aplique o manifesto YAML ao cluster através do comando
kubectl
ou de quaisquer ferramentas de gestão de configuração à sua escolha.
Autorizações de proprietário do projeto
Para permitir que o Config Connector faça a gestão dos recursos de um projeto específico, conclua os seguintes passos:
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 o seguinte:
NAMESPACE
com o nome do seu espaço de nomesSERVICE_ACCOUNT_NAME
com o nome da sua conta de serviçoHOST_PROJECT_ID
com o ID do projeto anfitrião da sua conta de serviçoroles/owner
com a função adequadaPROJECT_ID
com o ID do projeto de destino
Aplique o manifesto YAML ao cluster através do comando
kubectl
ou de quaisquer ferramentas de gestão de configuração à sua escolha.
Funções predefinidas
Se preferir conceder autorizações mais limitadas ao Config Connector, pode atribuir uma ou mais funções de IAM à instalação do Config Connector criando alguns recursos IAMPolicyMember ou um recurso IAMPartialPolicy combinado. As seguintes funções são normalmente atribuídas à conta de serviço do Config Connector:
Editor: a atribuição da função de editor permite a maioria das funcionalidades do Config Connector, exceto as configurações ao nível do projeto ou da organização, como as modificações do IAM.
Função de administrador da conta de serviço do IAM: a concessão das autorizações
roles/iam.serviceAccountAdmin
permite que o Config Connector configure contas de serviço do IAM.Resource Manager: conceder uma função do Resource Manager como
roles/resourcemanager.folderCreator
permite que o Config Connector faça a gestão de pastas e organizações.
Funções personalizadas
Se as funções predefinidas não satisfizerem as suas necessidades, pode criar funções personalizadas com autorizações que define.
Para saber como criar e atribuir funções personalizadas, consulte o artigo Criar e gerir funções personalizadas.