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 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

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the 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 gcloud CLI, execute o seguinte comando:

    gcloud init
  5. 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 (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.

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

  7. 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
  8. Install the 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 gcloud CLI, execute o seguinte comando:

    gcloud init
  11. 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 (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.

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

  13. 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
  14. 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.