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 Google Cloud projetos diferentes do seu projeto atual. 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íticas: 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 artefacto: 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. 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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  4. Para inicializar a CLI gcloud, 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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  10. Para inicializar a CLI gcloud, 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. 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 avaliador de políticas da Autorização binária (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.iam.gserviceaccount.com" \
      --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.iam.gserviceaccount.com" \
        --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.