Configure o acesso entre projetos no GKE

Esta página mostra como conceder acesso à autorização binária a políticas e imagens de contentores que existem em projetos diferentes do seu projeto atual. Google Cloud Por exemplo, se implementar imagens no cluster do Google Kubernetes Engine (GKE) a partir de um repositório do Artifact Registry ou do Container Registry (obsoleto) pertencente a um projeto diferente, tem de conceder ao serviço de autorização binária no seu projeto acesso aos metadados de imagens no repositório de origem.

Terminologia

Este documento usa os seguintes termos:

  • Agente do serviço: uma conta de serviço gerida pela Google Cloud. A autorização binária usa um agente de serviço para interagir com os seus Google Cloud recursos, como clusters do GKE.
  • Projeto de política: o Google Cloud projeto que contém a sua política de autorização binária.
  • Projeto do cluster: o Google Cloud projeto que contém o seu cluster do GKE.
  • Projeto do Artifact Registry: o projeto que contém o seu repositório do Artifact Registry ou Container Registry (descontinuado). Google Cloud

Cenários que requerem acesso entre projetos

Tem de conceder autorizações entre projetos em situações como as seguintes:

  • O seu projeto de políticas é diferente do projeto de cluster.
  • O projeto do cluster é diferente do projeto do artefacto.

Antes de começar

  1. Install the Google Cloud CLI.

  2. Configure a CLI gcloud para usar a sua identidade federada.

    Para mais informações, consulte o artigo Inicie sessão na CLI gcloud com a sua identidade federada.

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

    gcloud init
  4. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Verify that billing is enabled for your Google Cloud project.

  6. Enable the Binary Authorization API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable binaryauthorization.googleapis.com
  7. O projeto do cluster é diferente do projeto da política

    Conceda ao agente de serviço da Autorização binária no projeto do cluster a função de Binary Authorization Policy Evaluator (roles/binaryauthorization.policyEvaluator) no projeto da 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." \
      --role=roles/binaryauthorization.policyEvaluator

    Substitua o seguinte:

    • POLICY_PROJECT_ID: o ID do projeto que contém a sua política.
    • CLUSTER_PROJECT_ID: o ID do projeto do cluster.

    O projeto do cluster é diferente do projeto do artefacto

    Conceda ao agente de serviço da Autorização binária no projeto do cluster a função Leitor do Artifact Registry (roles/artifactregistry.reader) no projeto do artefacto.

    gcloud projects add-iam-policy-binding ARTIFACT_PROJECT_ID \
        --member="serviceAccount:service-$(gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)')@gcp-sa-binaryauthorization." \
        --role=roles/artifactregistry.reader

    Substitua o seguinte:

    • ARTIFACT_PROJECT_ID: o ID do projeto que contém o seu repositório do Artifact Registry.
    • CLUSTER_PROJECT_ID: o ID do projeto que executa os seus clusters do GKE.