Controles del servicio de VPC es una función de Google Cloud que te permite configurar un perímetro seguro para protegerte del robo de datos. En esta página, se muestra a usar los Controles del servicio de VPC Grupos privados de Cloud Build para agregar seguridad adicional a tus compilaciones.
Limitaciones
La protección de los Controles del servicio de VPC solo está disponible para las compilaciones que se ejecutan de forma privada piscinas; No puedes usar los Controles del servicio de VPC con compilaciones que se ejecuten en grupos predeterminados.
Los activadores de Pub/Sub de Cloud Build no son compatibles cuando Cuando se usen Controles del servicio de VPC.
Antes de comenzar
Para usar los ejemplos de la línea de comandos de esta guía, instala y configura Google Cloud CLI.
Configura una conexión privada entre tu red de nube privada virtual y la VPC en la que residen los grupos privados. Para obtener instrucciones, consulta configura tu entorno para crear grupos privados.
Configura un grupo privado en el perímetro de los Controles del servicio de VPC
Para usar los Controles del servicio de VPC con Cloud Build, primero debes crear y configurar un perímetro de servicio, que se hace a nivel de la organización. Esta configuración garantiza que se aplicarán las verificaciones de los Controles del servicio de VPC cuando se use Cloud Build y que los desarrolladores solo puedan ejecutar compilaciones que cumplan con los Controles del servicio de VPC.
Crea un perímetro de Controles del servicio de VPC
Permisos de administración de identidades y accesos: Para configurar un perímetro de servicio, necesitas las funciones de visualizador de la organización y editor de Access Context Manager. Si deseas obtener instrucciones para otorgar estos roles, consulta Configura el acceso a los recursos de Cloud Build.
Para crear un perímetro de Controles del servicio de VPC, sigue estos pasos:
Sigue la Guía de inicio rápido de los Controles del servicio de VPC para realizar lo siguiente:
- Crear un perímetro de servicio
Agrega el proyecto en el que planeas crear el grupo privado al perímetro.
Restringe la API de Cloud Build
Después de configurar el perímetro de servicio, se verificarán todas las llamadas a la API de Cloud Build para garantizar que se originen en su interior.
Otorga acceso a la cuenta de servicio al perímetro de los Controles del servicio de VPC
En los siguientes casos, debes otorgar acceso al perímetro de los Controles del servicio de VPC a la cuenta de servicio de Cloud Build o Compute Engine heredada para que tus compilaciones accedan a los recursos dentro del perímetro:
Si usas la cuenta de servicio heredada de Cloud Build o Compute Engine para iniciar compilaciones con un activador de compilación, la API de Cloud Build o la línea de comandos.
Si usas cuentas de servicio especificadas por el usuario para iniciar compilaciones con un activador de compilación.
No es necesario que otorgues acceso a la cuenta de servicio heredada de Cloud Build o Compute Engine al perímetro de Controles del servicio de VPC si usas para iniciar compilaciones con la API de Cloud Build o el comando línea.
Realiza los siguientes pasos para otorgar acceso al perímetro de los Controles del servicio de VPC a la cuenta de servicio de Cloud Build o Compute Engine heredada:
Anota la dirección de correo electrónico de la cuenta de servicio heredada:
Abrir la página de IAM
Selecciona el proyecto que agregaste al perímetro de servicio.
En la tabla de permisos, busca la dirección de correo electrónico que corresponde a la cuenta de servicio de Cloud Build heredada.
Actualiza la política de entrada del perímetro de servicio para permitir que la cuenta de servicio llame a las APIs de Cloud Build. Esta regla de entrada permite que la cuenta de servicio realice la llamada a la API de
CreateBuild
. Si quieres obtener más información para configurar las políticas de entrada de los Controles del servicio de VPC, consulta Configura las políticas de entrada y salida y Reglas de entrada y salida.- ingressFrom: identities: - serviceAccount:SERVICE_ACCOUNT_EMAIL sources: - accessLevel: '*' ingressTo: operations: - serviceName: 'cloudbuild.googleapis.com' methodSelectors: - method: '*' resources: - 'projects/PROJECT_NUMBER'
Actualiza la política del perímetro ejecutando el siguiente comando, en el que variables con valores adecuados:
gcloud beta access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=INGRESS-FILENAME \ --policy=POLICY_ID
Reemplaza las variables anteriores por lo siguiente:
SERVICE_ACCOUNT_EMAIL
: Es la dirección de correo electrónico del cuenta de servicio.PROJECT_NUMBER
: Es el número de proyecto de la El proyecto de Google Cloud que agregaste al perímetro de los Controles del servicio de VPC.PERIMETER_NAME
: Es el nombre del perímetro de los Controles del servicio de VPC.INGRESS-FILENAME
: Es el nombre del archivo de política de entrada.POLICY_ID
: Es el ID de la política de acceso.
Opcional: Habilita el acceso al perímetro para máquinas de desarrollo
Las verificaciones de los Controles del servicio de VPC se aplican a la API de Cloud Build, por lo que las llamadas a esta fallan si no se originan en el perímetro de servicio. Por lo tanto, para administrar compilaciones con la API de Cloud Build, la IU de Cloud Build en la consola de Google Cloud Google Cloud CLI, elige una de las siguientes opciones:
Usa una máquina que esté dentro del perímetro de los Controles del servicio de VPC. Por ejemplo, puedes usar una VM de Compute Engine o una máquina local conectada a tu red de VPC mediante VPN.
Otorga acceso al perímetro a los desarrolladores. Por ejemplo, puedes crear niveles de acceso que habiliten el acceso al perímetro según la dirección IP o la identidad de usuario. Para obtener más información, consulta Permite el acceso a recursos protegidos desde fuera del perímetro.
Configura restricciones de las políticas de la organización
Para asegurarte de que las verificaciones de los Controles del servicio de VPC se apliquen de forma correcta,
restringiendo las compilaciones de una organización de Google Cloud para que solo usen
grupos privados, establece la restricción de la política de la organización constraints/cloudbuild.allowedWorkerPools
.
Puedes aplicar la política de la organización a toda la organización o a un proyecto
o una carpeta de la organización. Por ejemplo, la política de tu organización puede especificar lo siguiente:
- Todas las compilaciones de la organización usan los grupos privados especificados.
- Todas las compilaciones de una carpeta usan los grupos privados especificados.
- Todas las compilaciones de un proyecto usan los grupos privados especificados.
Permisos de IAM: Para administrar las políticas de la organización, necesitas el rol de administrador de políticas de la organización (roles/orgpolicy.policyAdmin
). Si quieres obtener instrucciones para otorgar un rol, consulta
Configura el acceso a los recursos de Cloud Build.
El comando gcloud resource-manager org-policies allow
configura una política de la organización que requiere que las compilaciones de la organización solo usen el grupo privado especificado:
gcloud resource-manager org-policies allow \
cloudbuild.allowedWorkerPools \
projects/PRIVATEPOOL_PROJECT_ID/locations/LOCATION/workerPools/PRIVATEPOOL_ID \
--organization ORGANIZATION_ID
Reemplaza los valores de marcador de posición en los comandos anteriores por la siguiente información:
PRIVATEPOOL_ID
: Es el ID del grupo privado en el que se ejecutarán las compilaciones.PRIVATEPOOL_PROJECT_ID
: El ID del proyecto de Google Cloud que contiene el grupo privado.LOCATION
: La región que contiene el grupo privado.ORGANIZATION_ID
: El ID de la organización en la que ejecutas las compilaciones.
El comando admite los prefijos under:
y is
.
Para establecer una política de la organización que requiera que se usen todas las compilaciones de la organización a cualquier grupo privado de esa organización:
gcloud resource-manager org-policies allow \
cloudbuild.allowedWorkerPools under:organizations/ORGANIZATION_ID \
--organization ORGANIZATION_ID
En el ejemplo anterior, ORGANIZATION_ID
es el ID de la organización que
que contiene los grupos privados.
Para establecer una política de la organización que requiera todas las compilaciones de los proyectos de una para usar cualquier grupo privado en el proyecto especificado:
gcloud resource-manager org-policies allow \
cloudbuild.allowedWorkerPools under:projects/PROJECT_ID \
--folder FOLDER_ID
Donde PROJECT_ID
es el ID del proyecto que
contiene los grupos privados y FOLDER_ID contiene los
los proyectos en los que ejecutas las compilaciones.
Para establecer una política de la organización que requiera que todas las compilaciones de un proyecto usen cualquier grupo privado en el proyecto especificado:
gcloud resource-manager org-policies allow \
cloudbuild.allowedWorkerPools under:projects/PRIVATEPOOL_PROJECT_ID \
--project BUILD_PROJECT_ID
En el ejemplo anterior, PRIVATEPOOL_PROJECT_ID
es el ID del proyecto que contiene los grupos privados y BUILD_PROJECT_ID es el ID del proyecto en el que ejecutas las compilaciones.
Ten en cuenta las siguientes consideraciones cuando apliques el
Restricción de la política de la organización constraints/cloudbuild.allowedWorkerPools
:
Si aplicas esta restricción de política de la organización a un proyecto de Google Cloud, garantizar que todas las compilaciones del proyecto usen el grupo privado compilaciones que intentan para usar el grupo compartido predeterminado fallará.
Si tu organización de Google Cloud contiene servicios como App Engine o Cloud Run que implícitamente usan Cloud Build, Esta restricción de la política de la organización puede hacer que estos servicios no funcionen como se esperaba.
Crea un grupo privado en el perímetro de servicio
Console
Abre la página Grupo de trabajadores en la consola de Google Cloud:
Selecciona el proyecto en el que deseas crear el grupo privado.
En la página Grupo de trabajadores, haz clic en Crear.
En el panel lateral Crear un grupo privado, haz lo siguiente:
Ingresa un nombre para tu grupo privado.
Selecciona la región en la que quieres crear el grupo privado.
Selecciona el tipo de máquina de Compute Engine que deseas usar para tu grupo privado.
Ingresa el número del proyecto de Google Cloud en el que creaste tu red de VPC.
Ingresa el nombre de tu red de VPC
Desmarca Asignar IPs externas.
Haga clic en Crear.
gcloud
Crea un archivo de configuración de grupo privado en formato YAML o JSON y establece la marca
egressOption
enNO_PUBLIC_EGRESS
:privatePoolV1Config: networkConfig: egressOption: NO_PUBLIC_EGRESS peeredNetwork: PEERED_NETWORK workerConfig: diskSizeGb: 'PRIVATE_POOL_DISK_SIZE' machineType: PRIVATE_POOL_MACHINE_TYPE
Aquí:
PEERED_NETWORK
es la URL del recurso de red de la red que realiza un intercambio de tráfico con la red del proveedor de servicios.PEERED_NETWORK
deben tener el formatoprojects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME
, en el queNETWORK_PROJECT_ID
es el ID del proyecto de el proyecto de Google Cloud que contiene tu red de VPC yNETWORK_NAME
es el nombre de tu red de VPC.PRIVATE_POOL_MACHINE_TYPE
es la Compute Engine el tipo de máquina para la instancia de grupo privado. Para los tipos de máquinas compatibles, Consulta Esquema del archivo de configuración de grupo privado.PRIVATE_POOL_DISK_SIZE
es el tamaño del disco para la instancia del grupo privado en GB. Especifica un valor mayor o igual que 100 e inferior o igual a 1,000. Si especificas0
, Cloud Build usa el valor predeterminado de 100.egressOption
es la marca para habilitar el perímetro de los Controles del servicio de VPC en tu grupo de trabajadores. Configúralo comoNO_PUBLIC_EGRESS
para crear tu grupo de trabajadores dentro del perímetro de los Controles del servicio de VPC.
Ejecuta el siguiente comando
gcloud
, en el quePRIVATEPOOL_ID
es un identificador único para tu grupo privado,PRIVATEPOOL_CONFIG_FILE
es el nombre de tu archivo de configuración del grupo privado, yREGION
es el región en la que quieres crear el grupo privado:gcloud builds worker-pools create PRIVATEPOOL_ID --config-from-file PRIVATEPOOL_CONFIG_FILE --region REGION
Opcional: Habilita llamadas por Internet públicas en la red de VPC
Asegúrese de que su red de VPC esté configurada para permitir la conectividad de red a la ubicación en la que se aloja su repositorio (p. ej., github.com) con la siguiente configuración:
En tu archivo de configuración de grupo privado, asegúrate de que el campo
egressOption
esté configurado comoNO_PUBLIC_EGRESS
.La red de VPC en la que se ejecuta tu grupo privado se define como PeeredNetwork. Para permitir llamadas al host del repositorio, asegúrate de que esta VPC red permite la salida pública al host del repositorio. Para obtener información sobre cómo hacer consulta rutas y reglas de firewall.
Ejecuta compilaciones en un grupo privado dentro del perímetro de servicio
Las compilaciones que se ejecutan dentro del perímetro de servicio no tienen acceso a la Internet pública, por eso deberás realizar algunas acciones antes de ejecutar una compilación.
Envía imágenes y artefactos de compilación
Si tus compilaciones envían imágenes y artefactos a Container Registry (Obsoleto), Artifact Registry o Cloud Storage que están en un proyecto de Google Cloud diferente, asegúrate de agregarlo al mismo perímetro de servicio que el proyecto desde el que se originan tus compilaciones.
Crea un bucket de registros
La ejecución de la compilación dentro del perímetro de servicio no tendrá permisos para almacenar registros de compilación en el bucket de registros predeterminado de Cloud Storage. Elige una de las siguientes opciones:
- Elige si deseas almacenar tus registros de compilación en Cloud Logging mediante la configuración
loggingMode
comoCLOUD_LOGGING_ONLY
. - En tu proyecto privado, crea un bucket de registros de Cloud Storage para almacenar tus registros de compilación. Si deseas obtener instrucciones para hacer esto, consulta Almacena registros de compilación en un bucket creado por el usuario.
- Para inhabilitar los registros de compilación, establece
loggingMode
enNONE
.
Ejecuta compilaciones
Ejecuta tu compilación con las instrucciones que se indican en Ejecuta compilaciones en un grupo privado.
¿Qué sigue?
- Obtén más información sobre cómo ejecutar compilaciones en grupos privados.
- Obtén más información para configurar casos de uso de redes de uso común.