Configura el acceso temporal

Este tema describe cómo configurar el acceso temporal (con vencimiento) a recursos de Google Cloud mediante vinculaciones de función condicional en tus políticas de Cloud Identity and Access Management (Cloud IAM). Si usas los atributos de fecha y hora, puedes aplicar restricciones basadas en el tiempo cuando accedas a un recurso determinado. Por ejemplo, puedes otorgar acceso temporal a un proyecto que se inicie y se detenga a una hora específica o de manera programada y recurrente.

Antes de comenzar

Otorgar acceso temporal

Se puede usar una política condicional para otorgar acceso limitado por el tiempo a un recurso, lo que garantiza que el usuario ya no podrá acceder al recurso después de la fecha y hora de vencimiento especificadas.

Considere la siguiente situación: la política de seguridad de la información de la empresa ExampleCo enfatiza que ningún empleado debe tener acceso indefinido a los recursos de los proyectos de producción. Anteriormente, los administradores configuraban y borraban manualmente las políticas de Cloud IAM para satisfacer las necesidades de emergencia de los ingenieros. Para reducir la sobrecarga administrativa, ExampleCo puede configurar una política condicional con una condición de fecha y hora para establecer una fecha de finalización para la política.

Para otorgar acceso expirable a un recurso de proyecto:

Console

  1. Abre la página IAM en Cloud Console.

    Abrir la página IAM

  2. Haz clic en Seleccionar un proyecto, elige un proyecto y haz clic en Abrir.

  3. En la lista de miembros, busca el miembro deseado y haz clic en el botón .

  4. Desde el panel Editar permisos, busca la función deseada para configurar una condición. Luego, en Condición, haga clic en Agregar condición.

  5. En el panel Editar condición, ingrese un título y una descripción opcional para la condición.

  6. Puede agregar una expresión de condición mediante el Creador de condiciones o el Editor de condiciones. El creador de condiciones proporciona una interfaz interactiva para seleccionar el tipo de condición deseado, el operador y otros detalles aplicables sobre la expresión. El editor de condiciones proporciona una interfaz basada en texto para ingresar manualmente una expresión con la sintaxis CEL.

    Creador de condiciones

    1. En el menú desplegable Tipo de condición, seleccione Acceso con vencimiento.
    2. En el menú desplegable Operador, selecciona de.
    3. En el menú desplegable Hora, haga clic en el botón para seleccionar un intervalo de fecha y hora.
    4. Haga clic en Guardar para aplicar la condición.
    5. Una vez que el panel Editar condición esté cerrado, vuelva a hacer clic en Guardar desde el panel Editar permisos para actualizar su política de Cloud IAM.

    Editor de condiciones

    1. Haga clic en la pestaña Editor de condiciones e ingrese la siguiente expresión (reemplazando la marca de tiempo con la suya):

      request.time > timestamp("2020-07-01T00:00:00.000Z")
    2. Después de ingresar tu expresión, puedes optar por validar la sintaxis CEL haciendo clic en Run Linter arriba del cuadro de texto en la parte superior derecha.

    3. Haga clic en Guardar para aplicar la condición.

    4. Una vez que el panel Editar condición esté cerrado, vuelva a hacer clic en Guardar desde el panel Editar permisos para actualizar su política de Cloud IAM.

Comando de gcloud

Las políticas de Cloud IAM se establecen con el patrón lectura-modificación-escritura.

Ejecuta el comando gcloud projects get-iam-policy para obtener la política actual de Cloud IAM para el proyecto. En el siguiente ejemplo, la versión de JSON de la política se descarga en una ruta en el disco.

Comando:

    gcloud projects get-iam-policy [PROJECT-ID] --format json > [FILE-PATH]
    

Se descarga el formato JSON de la política de Cloud IAM:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/iam.securityReviewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar la política con acceso expirable, agrega la siguiente expresión de condición destacada (reemplaza la marca de tiempo con la tuya). Si no usas la versión 263.0.0 o posterior de la herramienta gcloud, asegúrate de haber actualizado el valor version a 3. Si usas una versión más reciente de la herramienta gcloud, el valor máximo de la política se establecerá automáticamente para ti:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/iam.securityReviewer",
          "condition": {
              "title": "Expires_July_1_2020",
              "description": "Expires on July 1, 2020",
              "expression":
                "request.time < timestamp('2020-07-01T00:00:00.000Z')"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

A continuación, configure la nueva política condicional mediante la ejecución del comando gcloud projects set-iam-policy:

    gcloud projects set-iam-policy [PROJECT-ID] [FILE-PATH]
    

Se aplica la nueva política condicional y la concesión de la función de user@example.com caducará a la hora especificada.

API de REST

Llame a projects.getIamPolicy() para obtener la política actual de Cloud IAM para el proyecto.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:getIamPolicy
    

El cuerpo de la solicitud se debe configurar de la siguiente manera:

{
      "options": {
        "requestedPolicyVersion": 3
      }
    }
    

El cuerpo de la respuesta contendrá la política de Cloud IAM del proyecto:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/iam.securityReviewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar la política con acceso expirable, agrega la siguiente expresión de condición destacada (reemplaza la marca de tiempo con la tuya). Asegúrese de haber actualizado el valor version a 3:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/iam.securityReviewer",
          "condition": {
              "title": "Expires_July_1_2020",
              "description": "Expires on July 1, 2020",
              "expression":
                "request.time < timestamp('2020-07-01T00:00:00.000Z')"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Llama a projects.setIamPolicy() para establecer la nueva política condicional de Cloud IAM para el proyecto, incluida la política actualizada en el cuerpo de la solicitud:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:setIamPolicy
    

La respuesta será la política actualizada.

Restringir el acceso a los días/horas de la semana

Una política condicional se puede usar para otorgar acceso a un recurso solo en ciertos días u horas de la semana de forma recurrente.

Considere la siguiente situación: la empresa ExampleCo tiene un proyecto de control de calidad. Se requiere que todo el equipo de garantía de calidad tenga funciones altamente privilegiadas para completar su trabajo. ExampleCo debe cumplir con las leyes laborales de su ubicación, que limitan el horario de atención de lunes a viernes de 9 a.m. a 5 p.m. ExampleCo puede usar las condiciones de fecha y hora para garantizar que sus empleados solo puedan acceder a Google Cloud durante la semana laboral y durante el horario de trabajo programado.

Para otorgar acceso a un recurso de proyecto solo para ciertos días u horas de la semana de manera recurrente:

Console

  1. Abre la página IAM en Cloud Console.

    Abrir la página IAM

  2. Haz clic en Seleccionar un proyecto, elige un proyecto y haz clic en Abrir.

  3. En la lista de miembros, busca el miembro deseado y haz clic en el botón .

  4. Desde el panel Editar permisos, busca la función deseada para configurar una condición. Luego, en Condición, haga clic en Agregar condición.

  5. En el panel Editar condición, ingrese un título y una descripción opcional para la condición.

  6. Puede agregar una expresión de condición mediante el Creador de condiciones o el Editor de condiciones. El creador de condiciones proporciona una interfaz interactiva para seleccionar el tipo de condición deseado, el operador y otros detalles aplicables sobre la expresión. El editor de condiciones proporciona una interfaz basada en texto para ingresar manualmente una expresión con la sintaxis CEL.

    Creador de condiciones

    1. Haga clic en Add.
    2. En el menú desplegable Tipo de condición, seleccione Hora Programación Día de la semana.
    3. En el menú desplegable Operador, selecciona Después del o De.
    4. En el menú desplegable Día de la semana, seleccione Lunes.
    5. En el menú desplegable Elegir una zona horaria, seleccione la zona horaria que desee de la lista.
    6. Asegúrate de que el operador Y esté seleccionado a la izquierda y, luego, vuelve a hacer clic en Agregar.
    7. En el menú desplegable Tipo de condición, seleccione Hora Programación Día de la semana.
    8. En el menú desplegable Operador, selecciona Antes del o A.
    9. En el menú desplegable Día de la semana, seleccione Viernes.
    10. En el menú desplegable Elegir una zona horaria, seleccione la zona horaria que desee de la lista.

    En este punto, configuraste el acceso solo de lunes a viernes. Ahora, podrás configurar el acceso de 9 a.m. (09:00) a 5 p.m. (17:00).

    1. Asegúrate de que el operador Y esté seleccionado a la izquierda y, luego, vuelve a hacer clic en Agregar.
    2. En el menú desplegable Tipo de condición, seleccione Hora Programación Hora del día.

      1. En el menú desplegable Operador, selecciona Después de o De.
      2. En el menú desplegable Hora del día, selecciona 9 (9 a.m.).
      3. En el menú desplegable Elegir una zona horaria, seleccione la zona horaria que desee de la lista.
      4. En el menú desplegable Tipo de condición, seleccione Hora Programación Hora del día.
      5. En el menú desplegable Operador, selecciona Antes de o A. Ten en cuenta que, para esta selección, "a" evaluará lógicamente todos los horarios entre las 17:00 (5 p.m.) y las 17:59 (5:59 p.m.). Para que el acceso venza a las 4:59 p.m., asegúrate de que la hora esté configurada en 16 en lugar de 17.
      6. En el menú desplegable Hora del día, seleccione 17 (5 p.m.).
      7. En el menú desplegable Elegir una zona horaria, seleccione la zona horaria que desee de la lista.
      8. Haga clic en Guardar para aplicar la condición.
      9. Una vez que el panel Editar condición esté cerrado, vuelva a hacer clic en Guardar desde el panel Editar permisos para actualizar su política de Cloud IAM.

      Ya configuraste el acceso de lunes a viernes de 9 a.m. a 5 p.m.

      Editor de condiciones

      1. Haga clic en la pestaña Editor de condiciones e ingrese la siguiente expresión (reemplazando los valores del marcador de posición por los suyos):

            request.time.getHours("Europe/Berlin") >= 9 &&
            request.time.getHours("Europe/Berlin") <= 17 &&
            request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
            request.time.getDayOfWeek("Europe/Berlin") <= 5
            
      2. Después de ingresar tu expresión, puedes optar por validar la sintaxis CEL haciendo clic en Run Linter arriba del cuadro de texto en la parte superior derecha.

      3. Haga clic en Guardar para aplicar la condición.

      4. Una vez que el panel Editar condición esté cerrado, vuelva a hacer clic en Guardar desde el panel Editar permisos para actualizar su política de Cloud IAM.

Comando de gcloud

Las políticas de Cloud IAM se establecen con el patrón lectura-modificación-escritura.

Ejecuta el comando gcloud projects get-iam-policy para obtener la política actual de Cloud IAM para el proyecto. En el siguiente ejemplo, la versión de JSON de la política se descarga en una ruta en el disco.

Comando:

    gcloud projects get-iam-policy [PROJECT-ID] --format json > [FILE-PATH]
    

Se descarga el formato JSON de la política de Cloud IAM:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar la política con acceso programado, agrega la siguiente expresión de condición destacada (reemplaza la marca de tiempo con la tuya). Si no estás usando la versión 263.0.0 o una versión más reciente de la herramienta gcloud, asegúrate de haber actualizado el valor version a 3. Si usas una versión más reciente de la herramienta gcloud, el valor máximo de la política se establecerá automáticamente para ti:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Business_hours",
              "description": "Business hours Monday-Friday",
              "expression":
                "request.time.getHours('Europe/Berlin') >= 9 &&
                request.time.getHours('Europe/Berlin') <= 17 &&
                request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
                request.time.getDayOfWeek('Europe/Berlin') <= 5"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

A continuación, configure la nueva política condicional mediante la ejecución del comando gcloud projects set-iam-policy:

    gcloud projects set-iam-policy [PROJECT-ID] [FILE-PATH]
    

Se aplica la nueva política condicional y la concesión de funciones de user@example.com permitirá el acceso entre los días y horarios especificados.

API de REST

Llame al projects.getIamPolicy() para obtener la política actual de Cloud IAM para el proyecto.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:getIamPolicy
    

El cuerpo de la solicitud se debe configurar de la siguiente manera:

{
      "options": {
        "requestedPolicyVersion":3
      }
    }
    

El cuerpo de la respuesta contendrá la política de Cloud IAM del proyecto:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer"
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 1
    }
    

Para configurar la política con acceso programado, agrega la siguiente expresión de condición destacada (reemplaza la marca de tiempo con la tuya). Asegúrese de haber actualizado el valor version a 3:

{
      "bindings": [
        {
          "members": [
            "user:user@example.com"
          ],
          "role": "roles/bigquery.dataViewer",
          "condition": {
              "title": "Business_hours",
              "description": "Business hours Monday-Friday",
              "expression":
                "request.time.getHours('Europe/Berlin') >= 9 &&
                request.time.getHours('Europe/Berlin') <= 17 &&
                request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
                request.time.getDayOfWeek('Europe/Berlin') <= 5"
          }
        }
      ],
      "etag": "BwWKmjvelug=",
      "version": 3
    }

Llama a projects.setIamPolicy() para establecer la nueva política condicional de Cloud IAM para el proyecto, incluida la política actualizada en el cuerpo de la solicitud:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/[PROJECT-ID]:setIamPolicy
    

La respuesta contendrá la política actualizada.

Próximos pasos