Antes de criar um pipeline do Image Builder, prepare seu ambiente Cloud de Confiance . Para preparar o ambiente, conclua as seguintes tarefas:
- Enviar uma solicitação de integração
- Ativar as APIs do Cloud necessárias
- Configurar a conta de serviço do Image Builder
- Configurar a política da organização de imagens confiáveis
- Configurar a rede VPC e os requisitos de acesso
- Configurar o Artifact Registry
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Cloud de Confiance para acessar serviços Cloud de Confiance by S3NS e APIs, não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
Funções exigidas
Para receber as permissões necessárias para preparar seu ambiente, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
- Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin) - Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin) ou administrador da conta de serviço (roles/iam.serviceAccountAdmin) - Administrador do Artifact Registry (
roles/artifactregistry.admin)
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 usando papéis personalizados ou outros papéis predefinidos.
Solicitação de integração
O Image Builder está disponível para todos os usuários com uma lista de permissões. Para integrar seu projeto Cloud de Confiance ao pipeline de personalização de imagens, envie o formulário de solicitação de acesso ou entre em contato com a equipe da sua conta Cloud de Confiance .
Contas de serviço cobertas pela lista de permissões
A lista de permissões concede acesso ao seu projeto pelo número dele. Como resultado, a lista de permissões abrange apenas as contas de serviço, que incluem o seguinte:
- Contas de serviço gerenciado pelo usuário que você cria no seu projeto.
- Contas de serviço padrão que o Cloud de Confiance cria no seu projeto, como a conta de serviço padrão do Compute Engine (
PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com).
A lista de permissões não abrange contas de serviço do Google porque o Cloud de Confiance cria essas contas em projetos do Google em vez de no seu projeto. As contas de serviço do Google incluem o seguinte:
- Agentes de serviço, como
service-PROJECT_NUMBER@gcp-sa-SERVICE.s3ns-system.iam.gserviceaccount.com. - A conta de serviço legada do Cloud Build
(
PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com), que é de propriedade e gerenciada pelo Google.
Para mais informações sobre esses tipos de conta de serviço, consulte Tipos de contas de serviço.
Se um build for executado como uma conta de serviço do Google, ele não poderá ler as imagens de contêiner do orquestrador do Image Builder no Artifact Registry. Como resultado, o pipeline falha com um erro de permissão negada. Para evitar essa falha, execute seus pipelines como uma conta de serviço gerenciado pelo usuário criada no projeto e especifique essa conta ao enviar um build. Para mais informações, consulte Configurar a conta de serviço do Image Builder e Conta de serviço padrão do Cloud Build.
Ativar APIs
O Image Builder exige que você ative as APIs Compute Engine, Cloud Build, Artifact Registry, Service Usage e Resource Manager. Para ativar as APIs usando o console Cloud de Confiance ou a Google Cloud CLI, selecione uma das seguintes guias:
Console
Ative as APIs Compute Engine, Cloud Build, Artifact Registry, Service Usage e Cloud Resource Manager.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você
criou o projeto, provavelmente já tem essa permissão com o papel de
Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de
Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin).
Saiba como conceder papéis.
gcloud
Ative as APIs Compute Engine, Cloud Build, Artifact Registry, Service Usage e Cloud Resource Manager:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você
criou o projeto, provavelmente já tem essa permissão com o papel de
Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de
Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin).
Saiba como conceder papéis.
gcloud services enable compute.googleapis.comcloudbuild.googleapis.com artifactregistry.googleapis.com serviceusage.googleapis.com cloudresourcemanager.googleapis.com
Configurar a conta de serviço do Image Builder
O orquestrador do Image Builder é executado usando uma conta serviço gerenciado pelo usuário. Quando você executa um pipeline de build de imagem, o Cloud Build anexa essa conta de serviço a instâncias temporárias de VM de worker e de teste para realizar ações de personalização e validação. Essa conta de serviço precisa ter os seguintes papéis:
- Administrador do Compute (
roles/compute.admin): gerencia instâncias de VM, discos permanentes e imagens do SO convidado. - Usuário da conta de serviço (
roles/iam.serviceAccountUser): permite que o Cloud Build anexe a conta de serviço ao worker efêmero e teste instâncias de VM. - Administrador do Storage (
roles/storage.admin): lê e grava artefatos e registros de build temporários no bucket de preparoworkdirdo Cloud Storage. - Gravador de registros do Logging (
roles/logging.logWriter): grava registros de execução no Cloud Logging. - Leitor do Service Usage (
roles/serviceusage.serviceUsageViewer): verifica os estados do serviço do projeto durante a execução do pipeline. - Editor do Cloud Build (
roles/cloudbuild.builds.editor): aciona e executa jobs do Cloud Build e exporta imagens. - (Opcional) Administrador do Artifact Registry (
roles/artifactregistry.admin): envia por upload os arquivos tar de imagem do SO gerados para o Artifact Registry.
É possível usar uma conta de serviço atual ou criar uma dedicada para seu pipeline de build. Use uma conta de serviço que esteja no seu projeto. Não execute seus pipelines como uma conta de serviço do Google, como a conta de serviço legada do Cloud Build, porque a lista de permissões do Image Builder não abrange essas contas. Para mais informações, consulte Contas de serviço cobertas pela lista de permissões e Conta de serviço padrão do Cloud Build.
Para criar uma conta de serviço dedicada e conceder os papéis necessários usando o console Cloud de Confiance ou a CLI gcloud, selecione uma das seguintes guias:
Console
-
Verifique se você tem o papel do IAM de criação de contas de serviço
(
-
No console Cloud de Confiance , acesse a página Criar conta de serviço.
Acesse "Criar conta de serviço" - Selecione o projeto.
-
No campo Nome da conta de serviço, insira um nome. O console Cloud de Confiance preenche o campo ID da conta de serviço com base nesse nome.
No campo Descrição da conta de serviço, insira uma descrição. Por exemplo,
Service account for quickstart. - Clique em Criar e continuar.
-
Conceda os seguintes papéis à conta de serviço: Compute Engine > Administrador do Compute, Contas de serviço > Usuário da conta de serviço, Cloud Storage > Administrador do Storage, Cloud Logging > Gravador de registros, Service Usage > Leitor de uso do serviço, Cloud Build > Editor do Cloud Build, Artifact Registry > Administrador do Artifact Registry.
Para conceder um papel, encontre a lista Selecionar um papel e escolha uma opção.
Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Continuar.
-
No campo Papel de usuários da conta de serviço, insira o identificador do principal que vai anexar a conta de serviço a outros recursos, como instâncias do Compute Engine.
Normalmente, é o identificador de um usuário em um pool de identidades de força de trabalho. Para mais detalhes, consulte Representar usuários do pool de força de trabalho nas políticas do IAM.
-
Clique em Concluído para terminar a criação da conta de serviço.
roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto
(roles/resourcemanager.projectIamAdmin). Saiba como conceder
papéis.
gcloud
Crie uma conta de serviço para seu pipeline de build:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name="Image Builder Service Account"Conceda os papéis necessários (
roles/compute.admin,roles/iam.serviceAccountUser,roles/storage.admin,roles/logging.logWriter,roles/serviceusage.serviceUsageViewereroles/cloudbuild.builds.editor) à sua conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/compute.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/logging.logWriter" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/serviceusage.serviceUsageViewer" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/cloudbuild.builds.editor"Opcional: conceda o papel opcional (
roles/artifactregistry.admin) à sua conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/artifactregistry.admin"
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço de build a ser criada. Por exemplo,custom-builder-sa.PROJECT_ID: o ID do projeto Cloud de Confiance .SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da sua conta de serviço de build.
Configurar a política da organização de imagens confiáveis
Como o Image Builder usa internamente as ferramentas padrão de importação e exportação de imagens do Compute Engine durante a execução da build, a política de imagens confiáveis (compute.trustedImageProjects) do projeto precisa permitir explicitamente imagens do seguinte projeto:
projects/compute-image-import
Se a política da organização restringir esse projeto, a fase de exportação da imagem vai falhar.
Para atualizar a política da organização:
- Na política da organização para a restrição
compute.trustedImageProjects, adicioneprojects/compute-image-importà sua lista de publishers permitidos. - Para instruções detalhadas sobre como configurar restrições de política da organização, consulte Configurar políticas de imagem confiáveis e Exportar uma imagem personalizada para o Cloud Storage.
Configurar a rede VPC e os requisitos de acesso
Durante as fases de build e validação, o Image Builder provisiona VMs de worker e de teste temporárias no seu projeto Cloud de Confiance . Por padrão, o Image Builder conecta instâncias à sua rede VPC default e atribui endereços IP externo efêmeros.
Se você especificar um network ou subnetwork personalizado ou configurar externalIP: none
no arquivo de receita imagebuilder.yaml:
- Acesso privado do Google e Cloud NAT:se as VMs de trabalho ou de teste forem
configuradas com
externalIP: none(sem IP externo), a sub-rede da VPC precisará ter o Acesso privado do Google ativado para que as instâncias possam acessar as APIs e os serviços do Google, como o Cloud Storage e o Artifact Registry. Se as etapas de personalização baixarem pacotes do SO ou dependências de repositórios externos da Internet, também será necessário configurar o Cloud NAT na sub-rede. - Regras de firewall:verifique se as regras de firewall da VPC permitem o tráfego
de saída para as APIs do Google e os repositórios de software necessários. Se você planeja se conectar a VMs de worker ativas para depuração interativa (
debug: true), verifique se as regras de firewall permitem a entrada na porta TCP 22. Se as instâncias de VM não tiverem um IP externo, permita a entrada do intervalo de IP do Identity-Aware Proxy (IAP)35.235.240.0/20para encaminhamento de TCP.
Configurar o Artifact Registry
Para armazenar e gerenciar suas imagens de SO personalizadas, metadados de segurança e atestados de procedência do build SLSA, configure um repositório genérico no Artifact Registry. Ao armazenar suas imagens no Artifact Registry, você mantém um registro seguro e imutável de imagens publicadas.
Ao configurar um destino do Artifact Registry, o Image Builder executa as seguintes etapas:
- Exporta o disco de inicialização da VM finalizada como um arquivo tar padrão (
.tar.gz). - Faz upload do arquivo tar para seu repositório genérico no Artifact Registry.
- Gera e assina atestados de procedência do build do SLSA para o artefato e o vincula aos metadados de origem.
- Registra a imagem do Compute Engine pronta para produção com o Compute Engine usando o URI do arquivo tar do Artifact Registry como a origem do modelo.
Para configurar um Artifact Registry genérico, conclua as seguintes tarefas:
Verifique se a conta de serviço usada para executar o pipeline do Image Builder tem o papel Administrador do Artifact Registry (
roles/artifactregistry.admin) no nível do repositório ou do projeto. Para instruções detalhadas, consulte Configurar a conta de serviço do Image Builder.Crie um repositório de formato
generic. Para criar o repositório, execute o comandogcloud artifacts repositories create:gcloud artifacts repositories create REPOSITORY_NAME \ --repository-format=generic \ --location=REPOSITORY_LOCATIONSubstitua os seguintes marcadores de posição:
REPOSITORY_NAME: um nome para o repositório genérico. Por exemplo,custom-os-images.REPOSITORY_LOCATION: uma região compatível. Por exemplo,us-central1.
A seguir
- Crie e gerencie pipelines usando o console Cloud de Confiance .
- Criar e gerenciar pipelines de forma programática.
- Saiba como definir receitas de personalização no esquema de receita de personalização.
- Revise a estrutura do arquivo de configuração do build (
cloudbuild.yaml).