Configurar o acesso entre projetos no GKE

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 diferentes Google Cloud 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 CloudGoogle Cloud. A autorização binária usa um agente de serviço para interagir com os seus Google Cloud recursos, como os clusters do GKE.
  • Projeto de política: O Google Cloud projeto que contém sua política de autorização binária.
  • Projeto de cluster: o Google Cloud projeto do Google Cloud que contém seu cluster do GKE.
  • Projeto artefato: O Google Cloud projeto 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

  1. Faça login na sua Google Cloud conta. Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. Instale a Google Cloud CLI.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  4. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  5. Crie ou selecione um Google Cloud projeto do Google Cloud.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, você precisa do papel Criador de projetos (roles/resourcemanager.projectCreator), que contém a resourcemanager.projects.create permissão. Saiba como conceder papéis.
    • Criar um Google Cloud projeto do Google Cloud:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o Google Cloud projeto que você está criando.

    • Selecione o Google Cloud projeto do Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do seu Google Cloud projeto.

  6. Verifique se o faturamento está ativado para o Google Cloud projeto.

  7. Ative a API Binary Authorization:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel Administrador de uso do serviço do IAM role (roles/serviceusage.serviceUsageAdmin), que contém a serviceusage.services.enable permission. Saiba como conceder papéis.

    gcloud services enable binaryauthorization.googleapis.com
  8. Instale a Google Cloud CLI.

  9. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  10. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  11. Crie ou selecione um Google Cloud projeto do Google Cloud.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: a seleção de um projeto não exige um papel específico do IAM. Você pode selecionar qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, você precisa do papel Criador de projetos (roles/resourcemanager.projectCreator), que contém a resourcemanager.projects.create permissão. Saiba como conceder papéis.
    • Criar um Google Cloud projeto do Google Cloud:

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o Google Cloud projeto que você está criando.

    • Selecione o Google Cloud projeto do Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do seu Google Cloud projeto.

  12. Verifique se o faturamento está ativado para o Google Cloud projeto.

  13. Ative a API Binary Authorization:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel Administrador de uso do serviço do IAM role (roles/serviceusage.serviceUsageAdmin), que contém a serviceusage.services.enable permission. 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-binding POLICY_PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe CLUSTER_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-binding ARTIFACT_PROJECT_ID \
    --member="serviceAccount:service-$(gcloud projects describe CLUSTER_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.