Nesta página, mostramos como conceder o acesso de autorização binária a políticas e imagens de contêiner que existem em projetos do Google Cloud diferentes do projeto atual. Por exemplo, se você implantar imagens no cluster do Google Kubernetes Engine (GKE) de um repositório do Artifact Registry ou do Container Registry (descontinuado) de outro projeto, será necessário conceder ao serviço de autorização binária no projeto acesso aos metadados de imagem no repositório de origem.
Terminologia
Neste documento, usamos os seguintes termos:
- Agente de serviço : uma conta serviço gerenciado pelo Google Cloud. A autorização binária usa um agente de serviço para interagir com os recursos do Google Cloud, como os clusters do GKE.
- Projeto de política : o projeto Google Cloud que contém sua política de autorização binária.
- Projeto de cluster : o projeto Google Cloud que contém seu cluster do GKE.
- Projeto artefato : o projeto Google Cloud que contém seu repositório do Artifact Registry ou do Container Registry (descontinuado).
Situações que exigem acesso entre projetos
É necessário conceder permissões entre projetos em situações como as exibidas a seguir:
- O projeto de política é diferente do projeto do cluster.
- O projeto do cluster é diferente do projeto de artefato.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Binary Authorization:
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 binaryauthorization.googleapis.com
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Binary Authorization:
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 binaryauthorization.googleapis.com
Projeto de cluster diferente do projeto de política
Conceda ao agente de serviço de autorização binária no projeto de cluster o papel
Avaliador de políticas de autorização binária
(roles/binaryauthorization.policyEvaluator)
no projeto de política.
gcloud projects add-iam-policy-bindingPOLICY_PROJECT_ID\ --member="serviceAccount:service-$(gcloud projects describeCLUSTER_PROJECT_ID--format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \ --role=roles/binaryauthorization.policyEvaluator
Substitua:
POLICY_PROJECT_ID: o ID do projeto que contém seus artefatos.CLUSTER_PROJECT_ID: o ID do projeto do cluster.
Projeto do cluster diferente do projeto de artefato
Conceda ao agente de serviço de autorização binária no projeto de cluster o papel
Leitor do Artifact Registry
(roles/artifactregistry.reader) no projeto de artefato.
gcloud projects add-iam-policy-bindingARTIFACT_PROJECT_ID\ --member="serviceAccount:service-$(gcloud projects describeCLUSTER_PROJECT_ID--format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \ --role=roles/artifactregistry.reader
Substitua:
ARTIFACT_PROJECT_ID: o ID do projeto que contém o repositório do Artifact Registry.CLUSTER_PROJECT_ID: o ID do projeto que executa os clusters do GKE.