Configura el acceso entre proyectos en GKE

En esta página, se muestra cómo otorgar acceso a la Autorización Binaria a las políticas y a las imágenes de contenedor que existen en proyectos diferentes Google Cloud de los de tu proyecto actual. Por ejemplo, si implementas 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, deberás otorgar al servicio de autorización binaria en tu proyecto acceso a los metadatos de imágenes en el repositorio de código fuente.

Terminología

En este documento, se usan los siguientes términos:

  • Agente de servicio: Una Google Cloud-cuenta de servicio administrada por. 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 Google Cloud proyecto que contiene tu política de Autorización Binaria.
  • Proyecto del clúster: El Google Cloud proyecto que contiene tu clúster de GKE.
  • Proyecto de artefactos: El Google Cloud proyecto que contiene tu repositorio de Artifact Registry o Container Registry (obsoleto) .

Situaciones que requieren acceso entre proyectos

Debes otorgar permisos entre proyectos en situaciones como las siguientes:

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

Antes de comenzar

  1. Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Instala Google Cloud CLI.

  3. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Crea o selecciona un Google Cloud proyecto.

    Roles necesarios para seleccionar o crear un proyecto

    • Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crear un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos (roles/resourcemanager.projectCreator), que contiene el resourcemanager.projects.create permiso. Obtén más información para otorgar roles.
    • Para crear un Google Cloud proyecto de, haz lo siguiente:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el Google Cloud proyecto que estás creando.

    • Selecciona el Google Cloud proyecto que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre de tu Google Cloud proyecto.

  6. Verifica que la facturación esté habilitada para tu Google Cloud proyecto.

  7. Habilita la API de Binary Authorization:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el serviceusage.services.enable permiso. Obtén más información para otorgar roles.

    gcloud services enable binaryauthorization.googleapis.com
  8. Instala Google Cloud CLI.

  9. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  10. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  11. Crea o selecciona un Google Cloud proyecto.

    Roles necesarios para seleccionar o crear un proyecto

    • Seleccionar un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crear un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos (roles/resourcemanager.projectCreator), que contiene el resourcemanager.projects.create permiso. Obtén más información para otorgar roles.
    • Para crear un Google Cloud proyecto de, haz lo siguiente:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el Google Cloud proyecto que estás creando.

    • Selecciona el Google Cloud proyecto que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre de tu Google Cloud proyecto.

  12. Verifica que la facturación esté habilitada para tu Google Cloud proyecto.

  13. Habilita la API de Binary Authorization:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el serviceusage.services.enable permiso. Obtén más información para otorgar roles.

    gcloud services enable binaryauthorization.googleapis.com

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

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

Reemplaza lo siguiente:

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

Proyecto de clúster diferente al proyecto de artefacto

Otorga al agente de servicio de autorización binaria en el proyecto del clúster la función de lector de Artifact Registry (roles/artifactregistry.reader) en el proyecto de 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

Reemplaza lo siguiente:

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