Administra el acceso con privilegios justo a tiempo a los proyectos

Last reviewed 2024-01-04 UTC

En este documento, se describe cómo puedes usar una herramienta de código abierto para implementar acceso privilegiado justo a tiempo a los proyectos de Google Cloud. El acceso privilegiado a tiempo te permite otorgar acceso temporal a los proyectos a un conjunto limitado de usuarios solo cuando se necesita el acceso.

El documento es para administradores que administran el acceso de los usuarios a los recursos de Google Cloud. Suponemos que estás familiarizado con Google Cloud, Identity and Access Management (IAM) y conceptos relacionados.

Descripción general de la administración de acceso con privilegios justo a tiempo

Cuando sigues el principio de privilegio mínimo, otorgas a los usuarios el acceso suficiente para que puedan realizar las actividades diarias, pero no pueden hacer nada más. Seguir este principio te ayuda a reducir los riesgos. Sin embargo, puede generar inconvenientes para los usuarios cuando necesitan realizar una acción con privilegios, por ejemplo, lidiar con un incidente inesperado. Los ejemplos incluyen la solución de un problema en un sistema de producción o la solución de un problema que involucra datos sensibles.

Una forma de abordar este problema es proporcionar acceso con privilegios justo a tiempo, es decir, proporcionar acceso con privilegios solo cuando sea necesario. Una idea clave de la administración de acceso con privilegios justo a tiempo es distinguir entre el acceso permanente y el acceso apto:

  • El acceso permanente se aplica hasta que lo revoques. De acuerdo con el principio del privilegio mínimo, es mejor limitar el acceso permanente y proporcionarlo solo a los pocos usuarios que deben tenerlo.
  • El acceso apto no se aplica de inmediato. En su lugar, un usuario al que se le otorgó acceso apto a un proyecto debe activar explícitamente ese acceso antes de que pueda acceder al proyecto. También deben proporcionar una justificación para hacerlo. Después de que se haya activado el acceso del usuario, el acceso se vence automáticamente después de un período corto.

El uso de la administración de acceso con privilegios justo a tiempo puede ayudarte a hacer lo siguiente:

  • Reducir el riesgo de que alguien modifique o borre recursos por accidente. Por ejemplo, cuando los usuarios tienen acceso con privilegios solo cuando es necesario, ayuda a evitar que ejecuten secuencias de comandos en otros momentos que afectan de manera involuntaria los recursos que no deberían poder cambiar.
  • Crear un registro de auditoría que indique por qué se activaron los privilegios.
  • Realizar auditorías y revisiones para analizar la actividad pasada.

Usar el acceso justo a tiempo para implementar el acceso con privilegios

Just-In-Time Access es una aplicación de código abierto diseñada para ejecutarse en App Engine o Cloud Run y te permite implementar acceso privilegiado a los recursos de Google Cloud justo a tiempo. La aplicación permite a los administradores, usuarios y auditores realizar las siguientes tareas:

  • Los administradores pueden otorgar un rol a un usuario o grupo y agregar la siguiente condición de IAM para que el rol sea apto:

    has({}.jitAccessConstraint)
    
  • Los usuarios pueden buscar proyectos y roles a los que puedan acceder mediante la aplicación de Just-In-Time Access.

    En la siguiente captura de pantalla de la aplicación Just-In-Time Access, se muestra una lista de las roles para las que un usuario es apto en un proyecto:

    Captura de pantalla de la aplicación Just-In-Time Access que muestra 2 roles aptos y 1 que se activa.

    Luego, pueden activar uno o más roles y proporcionar una justificación para obtener acceso:

    Captura de pantalla de la aplicación Just-In-Time Access que muestra el formulario para ingresar una justificación.

    Después de que un usuario activa un rol, Just-In-Time Access otorga acceso temporal al usuario al proyecto.

  • Los auditores pueden usar Cloud Logging para revisar cuándo y por qué los usuarios activaron los roles aptos.

Para proteger la aplicación del acceso no autorizado, solo se puede acceder a Just-In-Time Access a través de Identity-Aware Proxy (IAP). Con IAP, un administrador puede controlar qué usuarios pueden acceder a Just-In-Time Access y qué condiciones adicionales deben cumplir para obtener acceso.

Antes de comenzar

Antes de implementar la aplicación de acceso justo a tiempo, debes decidir para qué parte de la jerarquía de recursos deseas administrar el acceso privilegiado justo a tiempo. Puedes administrar el acceso a los siguientes recursos:

  • Un solo proyecto
  • Una carpeta que contiene varios proyectos
  • Todos los proyectos de tu organización

Para completar la implementación, necesitas lo siguiente:

  • Acceso de administrador avanzado a la cuenta de Cloud Identity o Google Workspace que corresponde a la organización de Google Cloud que usas.
  • Permiso para modificar la política de IAM del proyecto, la carpeta o la organización que deseas administrar mediante Just-In-Time Access.
  • Un segundo usuario de Cloud Identity o Google Workspace que puedas usar para probar el acceso.

También necesitas un proyecto de Google Cloud para implementar la aplicación Just-In-Time Access.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

Implementa Just-In-Time Access

En esta sección, se describe cómo implementar la aplicación Just-In-Time Access en App Engine o Cloud Run.

La implementación de la aplicación Just-In-Time Access en Cloud Run requiere una configuración más compleja que la implementación de la aplicación en App Engine. Por lo tanto, te recomendamos que uses App Engine, a menos que realices implementaciones en una región que no admita App Engine, o si no puedes usar App Engine por otros motivos.

El código para Just-In-Time Access está en un repositorio de GitHub.

En esta sección, se supone que eres administrador.

Configura tu proyecto de Google Cloud

  1. In the Google Cloud console, switch to your project and enable required APIs:

    App Engine

    Enable the Cloud Asset Inventory, Resource Manager, Identity-Aware Proxy, Container Registry, Cloud Build, Identity and Access Management y Directory APIs.

    Enable the APIs

    Cloud Run

    Enable the Cloud Asset Inventory, Resource Manager, Identity-Aware Proxy, Container Registry, Cloud Run, Compute Engine, Identity and Access Management y Directory APIs.

    Enable the APIs

  2. Abra Cloud Shell.

    Abre Cloud Shell

  3. Configura una variable de entorno para que contenga tu ID del proyecto:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID de tu proyecto.

  4. Crea una cuenta de servicio para la aplicación Just-In-Time Access:

    SERVICE_ACCOUNT=$(gcloud iam service-accounts create jitaccess --display-name "Just-In-Time Access" --format "value(email)")
    
  5. Para permitir que la aplicación cree tokens con su cuenta de servicio, otórgale el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator):

    gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT \
      --member "serviceAccount:$SERVICE_ACCOUNT" \
      --role "roles/iam.serviceAccountTokenCreator"
    

    La aplicación usa el permiso para crear tokens a fin de acceder a la API de Directory y, de forma opcional, para controlar los flujos de trabajo de aprobación de varias partes.

Otorga permiso a la aplicación Just-In-Time Access para administrar las vinculaciones de IAM

Ahora otorgas el rol de Administrador de IAM de proyecto a la cuenta de servicio de la aplicación. Este rol permite que la aplicación Just-In-Time Access cree vinculaciones temporales de IAM cuando debe otorgar acceso a tiempo.

Debido a que el rol de Administrador de IAM de proyecto tiene muchos privilegios, debes limitar el acceso a la cuenta de servicio de la aplicación y al proyecto que la contiene.

Usa los siguientes lineamientos:

  • Limita la cantidad de usuarios que pueden acceder al proyecto y evita que se otorguen a los usuarios el rol de Propietario o Editor.
  • Limita la cantidad de usuarios que pueden actuar como la cuenta de servicio. Los usuarios que deberían poder realizar este uso de identidad incluyen aquellos que tienen el rol Service Account User o Service Account Token Creator.

Para otorgar el rol de Administrador de IAM de proyecto a la cuenta de servicio, haz lo siguiente:

  1. Otorga el rol Administrador de IAM de proyecto (roles/resourcemanager.projectIamAdmin) y Visualizador de recurso de Cloud (roles/cloudasset.viewer) a la parte de tu jerarquía de recursos para la que quieres administrar el acceso con privilegios justo a tiempo para lo siguiente:

    Proyecto

    SCOPE_ID=RESOURCE_PROJECT_ID
    SCOPE_TYPE=projects
    
    gcloud projects add-iam-policy-binding $SCOPE_ID \
        --member "serviceAccount:$SERVICE_ACCOUNT" \
        --role "roles/resourcemanager.projectIamAdmin" \
        --condition None
    
    gcloud projects add-iam-policy-binding $SCOPE_ID \
        --member "serviceAccount:$SERVICE_ACCOUNT" \
        --role "roles/cloudasset.viewer" \
        --condition None
    

    Reemplaza RESOURCE_PROJECT_ID por el ID del proyecto de Google Cloud para el que deseas administrar el acceso. Este proyecto es diferente del que recibirá la implementación de Just-In-Time Access.

    Folder

    SCOPE_ID=RESOURCE_FOLDER_ID
    SCOPE_TYPE=folders
    
    gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
        --member "serviceAccount:$SERVICE_ACCOUNT" \
        --role "roles/resourcemanager.projectIamAdmin" \
        --condition None
    gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
        --member "serviceAccount:$SERVICE_ACCOUNT" \
        --role "roles/cloudasset.viewer" \
        --condition None
    

    Reemplaza RESOURCE_FOLDER_ID por el ID de la carpeta que contiene los proyectos para los que deseas administrar el acceso.

    Organización

    SCOPE_ID=ORGANIZATION_ID
    SCOPE_TYPE=organizations
    
    gcloud organizations add-iam-policy-binding $SCOPE_ID \
        --member "serviceAccount:$SERVICE_ACCOUNT" \
        --role "roles/resourcemanager.projectIamAdmin" \
        --condition None
    gcloud organizations add-iam-policy-binding $SCOPE_ID \
        --member "serviceAccount:$SERVICE_ACCOUNT" \
        --role "roles/cloudasset.viewer" \
        --condition None
    

    Reemplaza ORGANIZATION_ID por el ID de tu organización.

Otorga acceso para permitir que la aplicación resuelva membresías a grupos

La aplicación Just-In-Time Access te permite otorgar acceso apto a un usuario específico o a un grupo completo. Para evaluar las membresías grupales, la aplicación debe tener permiso para leer información de membresía del grupo desde tu cuenta de Cloud Identity o Google Workspace.

A fin de otorgar permiso de acceso a la cuenta de servicio de la aplicación para leer las membresías del grupo, haz lo siguiente:

  1. Abre la Consola del administrador de Google y accede como un usuario administrador avanzado.

  2. Ve a Cuenta > Roles de administrador:

    Ve a Roles de administrador

  3. Haz clic en Lector de grupos > Administradores.

  4. Haz clic en Asignar cuentas de servicio.

  5. Ingresa la siguiente dirección de correo electrónico:

    jitaccess@PROJECT_ID.iam.gserviceaccount.com
    

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

  6. Haga clic en Agregar.

  7. Haz clic en Asignar rol.

Busca tu ID de cliente de la cuenta de Cloud Identity o Google Workspace

Para evaluar las membresías grupales con la API de Directory, la aplicación Just-In-Time Access necesita tu ID de cliente de la cuenta de Cloud Identity o Google Workspace. Para buscar este ID, haz lo siguiente:

  1. En la Consola del administrador de Google, ve a Cuenta > Configuración de la cuenta:

    Ir a Configuración de la cuenta

  2. Copia el ID de cliente de tu cuenta. El ID de cliente comienza con C.

    Necesitarás el ID de cliente en un paso posterior.

  3. Cierra la Consola del administrador.

Implemente la aplicación

Ahora estás listo para implementar la aplicación Just-In-Time Access en App Engine o Cloud Run.

App Engine

Para implementar la aplicación Just-In-Time Access en App Engine, realiza los siguientes pasos.

  1. En Cloud Shell, configura una variable de entorno para que contenga el ID de cliente de tu cuenta de Cloud Identity o Google Workspace:

    ACCOUNT_CUSTOMER_ID=CUSTOMER_ID
    

    Reemplaza CUSTOMER_ID con el ID de cliente que buscaste antes.

  2. Crea una aplicación de App Engine:

    gcloud app create --region LOCATION
    

    Reemplaza LOCATION por una ubicación de App Engine compatible.

  3. Clona el repositorio de GitHub y cambia a la rama latest:

    git clone https://github.com/GoogleCloudPlatform/jit-access.git
    cd jit-access/sources
    git checkout latest
    
  4. Crea un archivo de configuración para la aplicación Just-In-Time Access:

    cat << EOF > app.yaml
    
    runtime: java17
    instance_class: F2
    service_account: $SERVICE_ACCOUNT
    env_variables:
        RESOURCE_SCOPE: $SCOPE_TYPE/$SCOPE_ID
        RESOURCE_CATALOG: AssetInventory
        RESOURCE_CUSTOMER_ID: $ACCOUNT_CUSTOMER_ID
        ACTIVATION_TIMEOUT: 60
        JUSTIFICATION_HINT: "Bug or case number"
        JUSTIFICATION_PATTERN: ".*"
    EOF
    

    En este archivo de configuración, puedes personalizar los valores de las variables. Para obtener una lista de opciones de configuración, consulta la página Opciones de configuración en el repositorio asociado de GitHub.

  5. Implementa la aplicación:

    gcloud app deploy --appyaml app.yaml
    

    Toma nota de la target url en el resultado. Esta será la URL pública de la aplicación Just-In-Time Access.

    Si ves el mensaje de error NOT_FOUND: Unable to retrieve P4SA, vuelve a ejecutar el comando.

Cloud Run

Para implementar la aplicación Just-In-Time Access en Cloud Run, debes realizar los siguientes pasos.

  1. En Cloud Shell, configura una variable de entorno para que contenga el ID de cliente de tu cuenta de Cloud Identity o Google Workspace:

    ACCOUNT_CUSTOMER_ID=CUSTOMER_ID
    

    Reemplaza CUSTOMER_ID con el ID de cliente que buscaste antes.

  2. Selecciona una región para realizar la implementación:

    gcloud config set run/region REGION
    

    Reemplaza REGION por una región que admita Cloud Run.

  3. Crea un servicio de backend:

    gcloud compute backend-services create jitaccess-backend \
      --load-balancing-scheme=EXTERNAL \
      --global
    

    Más adelante, usarás este servicio de backend para configurar un IAP y un balanceador de cargas.

  4. Clona el repositorio de GitHub y cambia a la rama latest:

    git clone https://github.com/GoogleCloudPlatform/jit-access.git
    cd jit-access/sources
    git checkout latest
    
  5. Compila la aplicación y envía la imagen del contenedor a Container Registry:

    PROJECT_ID=$(gcloud config get-value core/project)
    
    docker build -t gcr.io/$PROJECT_ID/jitaccess:latest .
    docker push gcr.io/$PROJECT_ID/jitaccess:latest
    
  6. Crea un archivo de configuración para la aplicación Just-In-Time Access:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format 'value(projectNumber)')
    REGION=$(gcloud config get-value run/region)
    IAP_BACKEND_SERVICE_ID=$(gcloud compute backend-services describe jitaccess-backend --global --format 'value(id)')
    
    cat << EOF > app.yaml
    
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: jitaccess
      namespace: $PROJECT_NUMBER
      labels:
        cloud.googleapis.com/location: $REGION
      annotations:
        run.googleapis.com/ingress: internal-and-cloud-load-balancing
    spec:
      template:
        spec:
          serviceAccountName: $SERVICE_ACCOUNT
          containers:
          - image: gcr.io/$PROJECT_ID/jitaccess:latest
            env:
            - name: RESOURCE_SCOPE
              value: "$SCOPE_TYPE/$SCOPE_ID"
            - name: RESOURCE_CATALOG
              value: "AssetInventory"
            - name: RESOURCE_CUSTOMER_ID
              value: "$ACCOUNT_CUSTOMER_ID"
            - name: ACTIVATION_TIMEOUT
              value: "60"
            - name: JUSTIFICATION_HINT
              value: "Bug or case number"
            - name: JUSTIFICATION_PATTERN
              value: ".*"
            - name: IAP_BACKEND_SERVICE_ID
              value: "$IAP_BACKEND_SERVICE_ID"
    EOF
    
    

    En este archivo de configuración, puedes personalizar los valores de las variables. Para obtener una lista de opciones de configuración, consulta la página Opciones de configuración en el repositorio asociado de GitHub.

  7. Implementa la aplicación:

    gcloud run services replace app.yaml
    

Configura un balanceador de cargas

Ahora debes configurar un balanceador de cargas para la aplicación Just-In-Time Access.

App Engine

App Engine configura el balanceador de cargas de forma automática.

Cloud Run

Configura un balanceador de cargas HTTPS para tu servicio de Cloud Run:

  1. Reserva una dirección IP externa estática para el balanceador de cargas.

    gcloud compute addresses create jitaccess-ip --global
    
  2. Crea un certificado SSL administrado para el balanceador de cargas:

    gcloud compute ssl-certificates create jitaccess \
      --domains PUBLIC_FQDN \
      --global
    

    En el ejemplo anterior, PUBLIC_FQDN es el nombre de dominio público (FQDN) completamente calificado que deseas usar, por ejemplo, jitaccess.example.com.

  3. Busca la dirección IP del balanceador de cargas:

    gcloud compute addresses describe jitaccess-ip \
      --global \
      --format=value\(address\)
    
  4. Crea un registro A de DNS en tu zona DNS pública que apunte a la dirección IP del balanceador de cargas. El nombre completamente calificado del registro DNS debe coincidir con el nombre que usaste en el certificado SSL.

  5. Crea un grupo de extremos de red sin servidores para el servicio de Cloud Run y conéctalo al servicio de backend:

    gcloud compute network-endpoint-groups create jitaccess \
      --region $(gcloud config get-value run/region) \
      --network-endpoint-type=serverless  \
      --cloud-run-service jitaccess
    gcloud compute backend-services add-backend jitaccess-backend \
      --global \
      --network-endpoint-group jitaccess \
      --network-endpoint-group-region $(gcloud config get-value run/region)
    
  6. Crea un frontend para el balanceador de cargas que use la dirección IP externa y reenvíe el tráfico al servicio de backend:

    gcloud compute url-maps create jitaccess \
      --default-service jitaccess-backend
    gcloud compute target-https-proxies create jitaccess-proxy \
      --ssl-certificates jitaccess \
      --url-map jitaccess
    gcloud compute forwarding-rules create jitaccess-https \
      --load-balancing-scheme EXTERNAL \
      --address jitaccess-ip \
      --target-https-proxy jitaccess-proxy \
      --global \
      --ports=443
    

Configura Identity-Aware Proxy

Ahora debes configurar IAP para la aplicación de Just-In-Time Access.

  1. En Cloud Shell, configura una pantalla de consentimiento de OAuth:

    gcloud iap oauth-brands create \
        --application_title "Just-In-Time Access" \
        --support_email=$(gcloud config get core/account)
    
  2. En la consola de Google Cloud, ve a Seguridad > Identity-Aware Proxy:

    Ve a IAP

  3. Establece IAP como habilitado.

Ahora debes definir qué usuarios pueden acceder a la aplicación Just-In-Time Access. Puedes otorgar acceso a usuarios individuales, grupos o a un dominio completo.

  1. En la consola de Google Cloud, ve a IAM y administración >IAM.

    Ir a IAM

  2. Haz clic en Otorgar acceso y, luego, establece los siguientes valores:

    1. En la lista de principales, selecciona un usuario, grupo o dominio.
    2. En la lista de roles, selecciona Usuario de aplicación web protegida con IAP.

    El rol de usuario de aplicación web protegida por IAP permite a los usuarios abrir la aplicación Just-In-Time Access, pero el rol aún no les proporciona acceso a ningún recurso adicional.

  3. Haz clic en Guardar.

La vinculación del rol puede tomar unos minutos en aplicarse.

App Engine

Se completó la configuración de IAP.

Cloud Run

Para completar la configuración de IAP, otorga el rol Invocador de Cloud Run (roles/run.invoker) al agente de servicio que usa IAP:

PROJECT_NUMBER=$(gcloud projects list \
  --filter $(gcloud config get-value project) \
  --format "value(PROJECT_NUMBER)")

gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
  --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com" \
  --role "roles/run.invoker"

Prueba Just-In-Time Access

Ahora puedes probar el proceso de otorgar acceso apto y el proceso de uso de la aplicación de Just-In-Time Access para activar el acceso apto.

Otorga acceso apto

Para comenzar, otorga acceso apto a un segundo usuario de Cloud Identity o Google Workspace.

  1. En la consola de Google Cloud, usa la lista de proyectos para seleccionar un proyecto que forme parte de la jerarquía de recursos que administra la aplicación Just-In-Time Access.
  2. En la página de IAM, haz clic en Otorgar acceso.
  3. Ingresa la dirección de correo electrónico del segundo usuario de Cloud Identity o Google Workspace y selecciona un rol, como Proyecto > Navegador.
  4. Haz clic en Agregar condición:
  5. Ingresa un título como Eligible for JIT access.
  6. Selecciona Editor de condiciones y, luego, ingresa la siguiente expresión CEL:

    has({}.jitAccessConstraint)
    
  7. Guarde los cambios.

Activa el acceso

Ahora puedes cambiar de usuario y solicitar acceso temporal a un recurso.

  1. Abre una ventana de incógnito del navegador y navega a la URL de la aplicación Just-In-Time Access que anotaste antes.
  2. Accede con el usuario al que le otorgaste acceso apto.
  3. En la aplicación Just-In-Time Access, selecciona un rol y un recurso para el que deseas activar el acceso.
  4. Ingresa una justificación, como testing, y haz clic en Solicitar acceso.

    En la página siguiente, observa que tu acceso se activó de manera temporal.

Analizar los registros

Ahora puedes volver al usuario administrativo y revisar el registro.

  1. En la consola de Google Cloud, ve a Logging > Explorador de registros.

    Ir al Explorador de registros

  2. Configura Mostrar consulta como habilitada.

  3. Ingrese la siguiente consulta:

    labels.event="api.activateRole"
    
  4. Haga clic en Run query.

    El resultado es similar a este:

    {
    "textPayload": "User EMAIL activated role 'ROLE' on '//cloudresourcemanager.googleapis.com/projects/PROJECT_ID' for themselves",
    "severity": "INFO",
    "labels": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "event": "api.activateRole",
        "role": "ROLE",
        "clone_id": "00c6...",
        "user": "EMAIL",
        "justification": "testing",
        ...
      },
    ...
    }
    

    Observa que se creó un registro para cada rol que activaste. El registro incluye un conjunto de etiquetas que puedes usar para crear filtros personalizados.

Actualiza Just-In-Time Access

En esta sección, se describe cómo puedes actualizar una implementación existente de Just-In-Time Access para usar una versión más reciente de la aplicación o usar una configuración diferente.

En esta sección, se supone que eres administrador.

  1. En la consola de Google Cloud, cambia a tu proyecto y, luego, abre Cloud Shell.

    Abre Cloud Shell

  2. Configura una variable de entorno para que contenga tu ID del proyecto:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID de tu proyecto.

  3. Clona el repositorio de GitHub y cambia a la rama latest:

    git clone https://github.com/GoogleCloudPlatform/jit-access.git
    cd jit-access/sources
    git checkout latest
    
  4. Descarga el archivo de configuración que usaste antes para implementar la aplicación y guárdalo en un archivo app.yaml:

    App Engine

    APPENGINE_VERSION=$(gcloud app versions list --service default --hide-no-traffic --format "value(version.id)")
    APPENGINE_APPYAML_URL=$(gcloud app versions describe $APPENGINE_VERSION --service default --format "value(deployment.files.'app.yaml'.sourceUrl)")
    
    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" $APPENGINE_APPYAML_URL -o app.yaml
    cat app.yaml
    

    Si descargas el archivo app.yaml, puedes descargar tu configuración actual en la consola de Google Cloud.

    Cloud Run

    gcloud config set run/region REGION
    gcloud run services describe jitaccess --format yaml > app.yaml
    

    Reemplaza REGION por la región que contiene la implementación existente de Cloud Run.

  5. Si deseas realizar cambios en la configuración, edita el archivo app.yaml. Para obtener una lista de opciones de configuración, consulta la página Opciones de configuración en el repositorio asociado de GitHub.

  6. Implementa la aplicación:

    App Engine

    sed -i 's/java11/java17/g' app.yaml
    gcloud app deploy --appyaml app.yaml
    

    Cloud Run

    PROJECT_ID=$(gcloud config get-value core/project)
    
    docker build -t gcr.io/$PROJECT_ID/jitaccess:latest .
    docker push gcr.io/$PROJECT_ID/jitaccess:latest
    
    IMAGE=$(docker inspect --format='{{index .RepoDigests 0}}'  gcr.io/$PROJECT_ID/jitaccess)
    sed -i "s|image:.*|image: $IMAGE|g" app.yaml
    
    gcloud run services replace app.yaml
    

¿Qué sigue?