Neste documento, descrevemos como configurar o provisionamento automático e o gerenciamento do ciclo de vida de identidades das cargas de trabalho gerenciadas para o Compute Engine. Configure pools de ACs para emitir certificados usando oCertificate Authority Service (AC), que é um serviço do Google Cloud altamente disponível e escalonável que simplifica e automatiza a implantação, o gerenciamento e a segurança dos serviços de AC. Cloud de Confiance by S3NS Cada VM é provisionada com credenciais X.509 do pool de AC configurado. Essas credenciais podem ser usadas para estabelecer conexões mTLS.
Antes de começar
- Revise a documentação sobre a visão geral das identidades das cargas de trabalho gerenciadas.
Ative a API Compute Engine:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de Service Usage role (
roles/serviceusage.serviceUsageAdmin), que contém aserviceusage.services.enablepermissão. Saiba como conceder papéis.gcloud services enable compute.googleapis.com
Funções exigidas
Para receber as permissões necessárias para criar VMs que usam certificados de identidade da carga de trabalho gerenciada para autenticação em outras cargas de trabalho, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Administrador da instância do Compute (v1) (
roles/compute.instanceAdmin.v1) -
Usuário da conta de serviço (
roles/iam.serviceAccountUser)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Visão geral
Com as identidades das cargas de trabalho gerenciadas para o Compute Engine, é possível implementar comunicações mutuamente autenticadas e criptografadas entre duas VMs do Compute Engine. Os aplicativos de carga de trabalho em execução nas VMs configuradas podem usar as credenciais X.509 para o mTLS por VM mTLS. O agente convidado alterna automaticamente esses certificados mTLS e atualiza as credenciais na VM.
Ao usar identidades das cargas de trabalho gerenciadas, é possível administrar de forma centralizada a identidade das cargas de trabalho. As VMs do Compute Engine podem ser autorizadas a receber uma identidade de carga de trabalho com base em atributos de chave, como o ID da instância, o nome da instância ou a conta de serviço anexada. Para que as cargas de trabalho sejam atestadas, o administrador ou desenvolvedor de computação precisa criar instâncias de VM para a carga de trabalho com um nome de instância, ID de instância, nome da conta de serviço ou ID da conta de serviço correspondente.
As identidades das cargas de trabalho gerenciadas estão em conformidade com o padrão de código aberto
Secure Production Identity Framework for Everyone (SPIFFE).
Os IDs do SPIFFE para Cloud de Confiance cargas de trabalho estão no seguinte formato:
spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID.
O TRUST_DOMAIN corresponde a um pool de Identidade da carga de trabalho do Identity and Access Management (IAM).
As identidades das cargas de trabalho gerenciadas são definidas em um pool de Identidade da carga de trabalho, que atua como um contêiner de nível superior para manter identidades de cargas de trabalho que têm um limite de confiança comum. Em um pool de Identidade da carga de trabalho, as identidades são organizadas em limites administrativos chamados namespaces. Para que uma carga de trabalho receba uma identidade gerenciada, é necessário definir políticas de atestado para autorizá-la. Uma política de atestado de carga de trabalho garante que apenas cargas de trabalho confiáveis possam declarar uma identidade gerenciada.
Para usar identidades de carga de trabalho gerenciada nos aplicativos, execute as tarefas a seguir:
Administrador de segurança:
- Crie identidades das cargas de trabalho gerenciadas em um pool de Identidade da carga de trabalho.
- Defina a política de atestado da carga de trabalho.
- Configure o Certificate Authority Service para emitir certificados para identidades das cargas de trabalho gerenciadas.
- Autorize que identidades das cargas de trabalho gerenciadas solicitem certificados do pool de AC.
- Defina a configuração de emissão de certificados e confiança no pool de Identidade da carga de trabalho.
Administrador de computação:
- Configure instâncias para usar identidades de carga de trabalho para instâncias individuais do Compute Engine
- Acesse as credenciais das cargas de trabalho em uma instância do Linux.
Configurar identidades das cargas de trabalho gerenciadas no Identity and Access Management
Siga as instruções em Configurar autenticação de identidades das cargas de trabalho gerenciadas.
Essas instruções detalham como concluir as seguintes ações:
- Crie um pool de identidade da carga de trabalho.
- Criar namespaces no pool de Identidade da carga de trabalho. Você usa os namespaces para criar limites administrativos para suas identidades das cargas de trabalho gerenciadas, por exemplo, um namespace para cada um dos aplicativos que pertencem à sua organização.
- Criar uma identidade da carga de trabalho gerenciada em um namespace no pool de Identidade da carga de trabalho. Por exemplo, é possível criar um namespace para um aplicativo e criar identidades gerenciadas nesse namespace para os microsserviços compatíveis com esse aplicativo.
- Opcional: crie uma conta de serviço para criar regras de atestado com base no ID da conta de serviço.
- Criar uma política de atestado da carga de trabalho que permita que sua carga de trabalho receba credenciais da identidade da carga de trabalho gerenciada. É possível autorizar as VMs do Compute Engine a receberem uma identidade da carga de trabalho gerenciada com base em atributos de chave, como o ID da instância, o nome da instância ou a conta de serviço anexada.
- Configurar o Certificate Authority Service para que emita certificados para identidades das cargas de trabalho gerenciadas:
- Configurar o pool de CAs raiz
- Configurar as CAs subordinadas
- Autorizar o pool de Identidade da carga de trabalho gerenciada a solicitar certificados do pool de AC
Ativar identidades das cargas de trabalho gerenciadas para instâncias de computação individuais
É possível ativar identidades das cargas de trabalho gerenciadas para uma instância de computação ao criar a instância ou atualizando a configuração de uma instância atual.
Criar instâncias com identidades das cargas de trabalho gerenciadas ativadas
Ao criar uma instância de computação, para ativar o recurso de identidades das cargas de trabalho gerenciadas para a instância, faça isto:
- Se o atestado da instância para a identidade da carga de trabalho for baseado em uma conta de serviço, especifique essa conta de serviço.
Inclua as
--identitye--identity-certificateflags.
gcloud
Use o comando gcloud alpha compute instances create
para criar uma nova instância.
Se você estiver usando uma conta de serviço para atestado, inclua as informações da conta de serviço ao criar a instância.
É possível adicionar outras linhas ao comando para configurar a instância, como tipo de máquina e imagem, em vez de usar os valores padrão. Para mais informações, consulte Criar e iniciar uma instância de VM.
gcloud alpha compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com \ --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER \ --identity-certificate \ ...
Substitua:
INSTANCE_NAME: um nome exclusivo para a instância. Para mais detalhes sobre nomes válidos de instâncias, consulte Nomear recursos.INSTANCE_ZONE: a zona em que a instância será criada.SERVICE_ACCOUNT_NAME: o nome da conta de serviço que tem permissão para receber a identidade da carga de trabalho gerenciada.PROJECT_ID: o ID do projeto em que a conta de serviço foi criada.TRUST_DOMAIN: o ID do domínio de confiança, no seguinte formato:$POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
O valor do domínio de confiança usa os seguintes marcadores:
POOL_ID: o nome do pool de identidade da carga de trabalhoPROJECT_NUMBER: o número do projeto em que o pool de identidade da carga de trabalho foi criado
NAMESPACE: o nome do namespace que contém a política de atestado da carga de trabalho que autoriza a carga de trabalho a declarar uma identidade de carga de trabalho gerenciadaWORKLOAD_IDENTIFIER: o nome da identidade da carga de trabalho gerenciada que foi criada no namespace do pool de identidade da carga de trabalho
Ativar identidades das cargas de trabalho gerenciadas em instâncias atuais
Para ativar identidades das cargas de trabalho gerenciadas em uma instância de computação atual, atualize a instância para definir as seguintes configurações:
- Se o atestado da instância para a identidade da carga de trabalho for baseado em uma conta de serviço e a instância ainda não tiver uma conta de serviço anexada, crie e anexe uma conta de serviço à instância.
- Ative o recurso usando a flag
--identity-certificatee especifique qual identidade de carga de trabalho gerenciada usar com a flag--identity. Reinicie a VM.
gcloud
Use o comando gcloud alpha compute instances update
para atualizar a configuração de uma instância.
Se a instância ainda não tiver uma conta de serviço anexada, anexe a conta de serviço à instância.
Atualize a configuração de uma instância atual para ativar identidades das cargas de trabalho gerenciadas.
gcloud alpha compute instances update INSTANCE_NAME \ --zone=ZONE \ --identity-certificate \ --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER
Substitua:
INSTANCE_NAME: o nome da instância;ZONE: a zona em que a instância está localizada.TRUST_DOMAIN: o ID do domínio de confiança, no seguinte formato:none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
O valor do domínio de confiança usa os seguintes marcadores: *
POOL_ID: o nome do pool de identidade da carga de trabalho *PROJECT_NUMBER: o número do projeto em que o pool de identidade da carga de trabalho foi criado +NAMESPACE: o nome do namespace que contém a política de atestado da carga de trabalho que autoriza a carga de trabalho a declarar uma identidade de carga de trabalho gerenciada +WORKLOAD_IDENTIFIER: o nome da identidade da carga de trabalho gerenciada que foi criada no namespace do pool de identidade da carga de trabalhoPare a VM.
gcloud alpha compute instances stop INSTANCE_NAME \ --zone=ZONE
Substitua:
INSTANCE_NAME: o nome da instância;ZONE: a zona em que a instância está localizada.
Inicie a VM.
gcloud alpha compute instances start INSTANCE_NAME \ --zone=ZONE
Substitua:
INSTANCE_NAME: o nome da instância;ZONE: a zona em que a instância está localizada.
Acessar credenciais das cargas de trabalho em uma VM do Linux
Depois de criar e iniciar uma instância de computação que usa identidades das cargas de trabalho gerenciadas, a Cloud de Confiance infraestrutura (incluindo o agente convidado) provisiona e gerencia automaticamente a rotação das credenciais da instância.
Os certificados de carga de trabalho, incluindo a chave privada e os pacotes de confiança, são colocados em um diretório específico no sistema de arquivos da VM: /var/run/secrets/workload-spiffe-credentials. Os aplicativos podem ler diretamente os certificados, a chave privada e o pacote de confiança do sistema de arquivos para estabelecer conexões mTLS.
O agente convidado do Compute Engine no SO convidado executa um job de atualização da carga de trabalho e, se necessário, cria o diretório /var/run/secrets/workload-spiffe-credentials. As permissões de diretório são definidas como 0755 (rwxr-xr-x).
O diretório contém os seguintes arquivos criados com as permissões 0644 (rw-r--r--):
private_key.pem: uma chave privada formatada por PEM.certificates.pem: um pacote de certificados X.509 formatados por PEM que podem ser apresentados a outras VMs como a cadeia de certificados do cliente ou usados como uma cadeia de certificados do servidor.ca_certificates.pem: um pacote de certificados X.509 formatados por PEM para usar como âncoras de confiança ao validar certificados de peerings.spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.googconfig_status: um arquivo de registro que contém mensagens de erro.
Como atualizar as credenciais e o pacote de confiança
O plano de controle do Compute Engine alterna de maneira automática e periódica as credenciais das identidades das cargas de trabalho gerenciadas e as âncoras de confiança.
Se os aplicativos usarem o sistema de arquivos para acessar as credenciais das cargas de trabalho e o pacote de confiança, o agente convidado do Compute Engine atualizará automaticamente as credenciais e o pacote de confiança, por exemplo, quando os certificados mTLS forem alternados.
Atualizar a emissão de certificados e a configuração de confiança
É possível modificar a configuração de emissão de certificados e a configuração de confiança em uma VM que usa identidades das cargas de trabalho gerenciadas.
Atualizar VMs individuais do Compute Engine
Para atualizar a configuração de emissão de certificados e a configuração de confiança, atualize o pool de Identidade da carga de trabalho. Use o
gcloud alpha iam workload-identity-pools update comando,
conforme mostrado no exemplo a seguir:
gcloud alpha iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
--inline-trust-config-file=TC_JSON_FILE_PATH \
--project=PROJECT_ID
Substitua:
WORKLOAD_IDENTITY_POOL_ID: o ID do pool de identidade da carga de trabalhoCIC_JSON_FILE_PATH: o caminho para o novo arquivo de configuração de emissão de certificados formatado em JSON (cic.json)TC_JSON_FILE_PATH: opcional: o caminho para o novo arquivo de configuração de confiança formatado em JSON (tc.json). Se as cargas de trabalho forem autenticadas em diferentes domínios de confiança, especifique esse arquivo. Caso contrário, omita a configuração--inline-trust-config.PROJECT_ID: o nome do Cloud de Confiance projeto.
Resolver problemas
Para encontrar métodos para diagnosticar e resolver erros comuns relacionados à recuperação de credenciais das cargas de trabalho, consulte a documentação Resolver problemas de autenticação entre cargas de trabalho.
Para resolver problemas com pools ou políticas de atestado mal configurados, consulte os registros de auditoria dos pools de identidade da carga de trabalho.
A seguir
- Saiba mais sobre os seguintes conceitos: