Como administrador de la organización, puedes crear restricciones personalizadas para los trabajos y servicios de Cloud Run. Las políticas de la organización aplican estas restricciones personalizadas a nivel del proyecto, la carpeta o la organización.
En esta página, se detalla cómo crear restricciones personalizadas para servicios y trabajos, y aplicarlas a nivel del proyecto. Para obtener información sobre las políticas personalizadas de la organización, consulta Crea y administra políticas personalizadas de la organización.
Cloud Run te permite escribir cualquier cantidad de restricciones personalizadas con la mayoría de los campos configurados por el usuario en la API de Cloud Run Admin. Por ejemplo, puedes crear una restricción personalizada que bloquee los servicios o trabajos para que no establezcan la etapa de lanzamiento en alfa o beta.
Una vez aplicadas, las solicitudes que infrinjan una política que aplique una restricción personalizada muestran un mensaje de error en gcloud CLI y en los registros de Cloud Run. El mensaje de error contiene el ID de la restricción y la descripción de la restricción personalizada que se incumplió.
Antes de comenzar
- Debes tener el rol de administrador de políticas de la organización
roles/orgpolicy.policyAdmin
para crear y ver las políticas de la organización del cliente. Consulta los roles requeridos.
Limitaciones
- Las restricciones personalizadas de Cloud Run se deben especificar con las especificaciones de campo de la API de Cloud Run Admin v1.
- No se admiten etiquetas ni campos de nivel superior.
Personaliza restricciones comunes
En los siguientes ejemplos, se muestra cómo especificar restricciones personalizadas para casos de uso comunes con gcloud CLI. Si quieres obtener instrucciones para la consola de Google Cloud, consulta Crea y administra políticas personalizadas de la organización.
- Restringe la configuración de entrada
- Requiere un límite máximo de memoria
- Evita las etapas de lanzamiento que no sean de DG
- Exigir Autorización Binaria
- Solicita un sondeo en funcionamiento para cada contenedor
- Requiere un sidecar a través de un prefijo y un puerto de imagen de contenedor
Restringe la configuración de entrada
Crea una restricción personalizada que restringa la configuración de entrada de los servicios de Cloud Run nuevos o revisados y, luego, aplica la restricción personalizada a nivel del proyecto.
Para especificar una restricción personalizada que requiera que un servicio se configure como "Interno" con Google Cloud CLI, sigue estos pasos:
Crea un archivo nuevo
ingressConstraint.yaml
con el siguiente contenido:name: organizations/ORGANIZATION_ID/customConstraints/custom.ingressInternal resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "'run.googleapis.com/ingress' in resource.metadata.annotations && resource.metadata.annotations['run.googleapis.com/ingress'] == 'internal'" actionType: ALLOW displayName: IngressInternal description: Require ingress to be set to internal
Reemplaza ORGANIZATION_ID por el ID de tu organización.
Ejecuta el siguiente comando para agregar la restricción personalizada:
gcloud org-policies set-custom-constraint /ingressConstraint.yaml
Especifica una política nueva que aplique la restricción personalizada creada en el paso anterior. Para ello, crea un archivo
enforceIngressConstraint.yaml
nuevo con el siguiente contenido:name: projects/PROJECT_ID/policies/ingressInternal spec: rules: - enforce: true
Reemplaza PROJECT_ID por el ID de tu proyecto.
Ejecuta el siguiente comando para configurar la política nueva:
gcloud org-policies set-policy /enforceIngressConstraint.yaml
Requiere un límite máximo de memoria
Exige que todos los contenedores de servicios de Cloud Run nuevos o revisados tengan un límite de memoria establecido en menos de un valor determinado.
Para requerir un límite de memoria personalizado para el contenedor del servicio con Google Cloud CLI, sigue estos pasos:
Crea un archivo nuevo
memorylimitConstraint.yaml
con el siguiente contenido:name: organizations/ORGANIZATION_ID/customConstraints/custom.memoryLimit resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "resource.spec.template.spec.containers.all(container, 'memory' in container.resources.limits && container.resources.limits['memory'] <= 'MEMORY_LIMIT')" actionType: ALLOW displayName: memoryLimitCap description: Require the container memory limit to be set to <= MEMORY_LIMIT
Reemplaza lo siguiente:
- ORGANIZATION_ID por el ID de tu organización.
- MEMORY_LIMIT por el límite de memoria que deseas establecer.
Ejecuta el siguiente comando para agregar la restricción personalizada:
gcloud org-policies set-custom-constraint /memorylimitConstraint.yaml
Especifica una política nueva que aplique la restricción personalizada creada en el paso anterior. Para ello, crea un archivo
enforceMemorylimitConstraint.yaml
nuevo con el siguiente contenido:name: projects/PROJECT_ID/policies/custom.memoryLimit spec: rules: - enforce: true
Reemplaza PROJECT_ID por el ID de tu proyecto.
Ejecuta el siguiente comando para configurar la política nueva:
gcloud org-policies set-policy /enforceMemorylimitConstraint.yaml
Evita las etapas de lanzamiento que no sean de DG
Evita que la etapa de lanzamiento de Cloud Run cambie de la versión DG predeterminada a alfa o beta.
Para evitar que la etapa de lanzamiento se establezca en una etapa de lanzamiento que no sea de DG, haz lo siguiente:
Crea un archivo nuevo
launchstageConstraint.yaml
con el siguiente contenido:name: organizations/ORGANIZATION_ID/customConstraints/custom.launchStage resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "!('run.googleapis.com/launch-stage' in resource.metadata.annotations)" actionType: ALLOW displayName: launchStage description: Only allow unset launch stage (default is GA).
Reemplaza ORGANIZATION_ID por el ID de tu organización.
Ejecuta el siguiente comando para agregar la restricción personalizada:
gcloud org-policies set-custom-constraint /launchstageConstraint.yaml
Especifica una política nueva que aplique la restricción personalizada creada en el paso anterior. Para ello, crea un archivo
enforceLaunchstageConstraint.yaml
nuevo con el siguiente contenido:name: projects/PROJECT_ID/policies/launchStage spec: rules: - enforce: true
Reemplaza PROJECT_ID por el ID de tu proyecto.
Ejecuta el siguiente comando para configurar la política nueva:
gcloud org-policies set-policy /enforceLaunchstageConstraint.yaml
Exigir Autorización Binaria
Exige que Autorización binaria se configure como default
.
Para exigir que la autorización binaria se establezca en default
, sigue estos pasos:
Crea un archivo nuevo
binaryauthorizationConstraint.yaml
con el siguiente contenido:name: organizations/ORGANIZATION_ID/customConstraints/custom.binaryAuthorization resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "'run.googleapis.com/binary-authorization' in resource.metadata.annotations && resource.metadata.annotations['run.googleapis.com/binary-authorization'] == 'default'" actionType: ALLOW displayName: binaryAuthorization description: Require binaryAuthorization to be set to default.
Reemplaza ORGANIZATION_ID por el ID de tu organización.
Ejecuta el siguiente comando para agregar la restricción personalizada:
gcloud org-policies set-custom-constraint /binaryauthorizationConstraint.yaml
Para especificar la nueva política que aplica la restricción personalizada creada en el paso anterior, crea un archivo
enforceBinaryauthorizationConstraint.yaml
nuevo con el siguiente contenido:name: projects/PROJECT_ID/policies/binaryAuthorization spec: rules: - enforce: true
Reemplaza PROJECT_ID por el ID de tu proyecto.
Ejecuta el siguiente comando para configurar la política nueva:
gcloud org-policies set-policy /enforceBinaryauthorizationConstraint.yaml
Solicita un sondeo en funcionamiento para cada contenedor
Exige que los servicios tengan una prueba en funcionamiento para cada contenedor. Para ello, requiere que el campo livenessProbe.initialDelaySeconds
se establezca en un valor.
Para requerir una prueba en funcionamiento para cada contenedor, sigue estos pasos:
Crea un archivo nuevo
livenessprobeConstraint.yaml
con el siguiente contenido:name: organizations/ORGANIZATION_ID/customConstraints/custom.livenessProbe resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "resource.spec.template.spec.containers.all(container, has(container.livenessProbe.initialDelaySeconds))" actionType: ALLOW displayName: livenessProbe description: Require all containers to have a liveness probe configured with initialDelaySeconds.
Reemplaza ORGANIZATION_ID por el ID de tu organización.
Ejecuta el siguiente comando para agregar la restricción personalizada:
gcloud org-policies set-custom-constraint /livenessprobeConstraint.yaml
Especifica una política nueva que aplique la restricción personalizada creada en el paso anterior. Para ello, crea un archivo
enforceLivenessprobeConstraint.yaml
nuevo con el siguiente contenido:name: projects/PROJECT_ID/policies/livenessProbe spec: rules: - enforce: true
Reemplaza PROJECT_ID por el ID de tu proyecto.
Ejecuta el siguiente comando para configurar la política nueva:
gcloud org-policies set-policy /enforceLivenessprobeConstraint.yaml
Requiere un sidecar a través de un prefijo y un puerto de imagen de contenedor
Requiere que un servicio tenga al menos un contenedor sidecar que use una imagen que comience con un prefijo especificado y un puerto igual a un número especificado.
Para exigir que un contenedor comience con un prefijo establecido y use PORT = 8081
, sigue estos pasos:
Crea un archivo nuevo
requireSidecarConstraint.yaml
con el siguiente contenido:name: organizations/ORGANIZATION_ID/customConstraints/custom.requireSidecar resourceTypes: - run.googleapis.com/Service methodTypes: - CREATE - UPDATE condition: "resource.spec.template.spec.containers.exists(container, container.image.startsWith('us-docker.pkg.dev/cloud-ops-agents-artifacts/cloud-run-gmp-sidecar/') && container.ports.exists(port, port.containerPort == 8081))" actionType: ALLOW displayName: requireSidecar description: Require at least one container with an image that starts with "us-docker.pkg.dev/cloud-ops-agents-artifacts/cloud-run-gmp-sidecar/" and uses port 8081
Reemplaza ORGANIZATION_ID por el ID de tu organización.
Ejecuta el siguiente comando para agregar la restricción personalizada:
gcloud org-policies set-custom-constraint /requireSidecarConstraint.yaml
Especifica una política nueva que aplique la restricción personalizada creada en el paso anterior. Para ello, crea un archivo
enforceRequireSidecarConstraint.yaml
nuevo con el siguiente contenido:name: projects/PROJECT_ID/policies/requireSidecar spec: rules: - enforce: true
Reemplaza PROJECT_ID por el ID de tu proyecto.
Ejecuta el siguiente comando para configurar la política nueva:
gcloud org-policies set-policy /enforceRequireSidecarConstraint.yaml