Configurar el acceso entre proyectos en GKE

En esta página se explica cómo dar acceso a Autorización Binaria a políticas e imágenes de contenedor que se encuentran en proyectos distintos al proyecto actual. Google Cloud Por ejemplo, si despliegas imágenes en tu clúster de Google Kubernetes Engine (GKE) desde un repositorio de Artifact Registry o Container Registry (obsoleto) que pertenece a otro proyecto, tendrás que dar acceso al servicio de autorización binaria de tu proyecto a los metadatos de la imagen en el repositorio de origen.

Terminología

En este documento se utilizan los siguientes términos:

  • Agente de servicio: una cuenta de servicio gestionada por A Google Cloud. La autorización binaria usa un agente de servicio para interactuar con tus Google Cloud recursos, como los clústeres de GKE.
  • Proyecto de política: el proyecto que contiene tu política de autorización binaria. Google Cloud
  • Proyecto de clúster: el proyecto que contiene tu clúster de GKE. Google Cloud
  • Proyecto de artefactos: el proyecto que contiene tu repositorio de Artifact Registry o Container Registry (obsoleto). Google Cloud

Situaciones que requieren acceso entre proyectos

Debes conceder permisos entre proyectos en situaciones como las siguientes:

  • El proyecto de política es diferente del proyecto de clúster.
  • El proyecto del clúster es diferente del proyecto del artefacto.

Antes de empezar

  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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente 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. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  10. Para inicializar gcloud CLI, ejecuta el siguiente 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. El proyecto del clúster es diferente del proyecto de la política

    Asigna al agente de servicio de autorización binaria del proyecto del clúster el rol Evaluador de políticas de autorización binaria (roles/binaryauthorization.policyEvaluator) en el proyecto de la 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

    Haz los cambios siguientes:

    • POLICY_PROJECT_ID: el ID del proyecto que contiene tu política.
    • CLUSTER_PROJECT_ID: el ID de proyecto del clúster.

    El proyecto del clúster es diferente del proyecto del artefacto

    Asigna al agente de servicio de Autorización binaria del proyecto del clúster el rol Lector de Artifact Registry (roles/artifactregistry.reader) en el proyecto del 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

    Haz los cambios siguientes:

    • ARTIFACT_PROJECT_ID: el ID del proyecto que contiene tu repositorio de Artifact Registry.
    • CLUSTER_PROJECT_ID: el ID del proyecto que ejecuta tus clústeres de GKE.