Configura el acceso temporal

En este tema, se describe cómo configurar el acceso temporal (que caduca) a los recursos de Google Cloud con vinculaciones de funciones condicionales en tus políticas de administración de identidades y accesos (IAM). Mediante los atributos de fecha y hora, puedes aplicar controles basados en el tiempo cuando accedes a un recurso determinado. Por ejemplo, puedes otorgar acceso temporal a un proyecto que se inicia y se detiene a una hora específica, o de forma programada y recurrente.

Antes de comenzar

  • Lee la Descripción general de las condiciones para comprender los conceptos básicos de las vinculaciones de funciones condicionales de IAM.
  • Revisa los atributos de fecha y hora que se pueden usar en una expresión de condición.
  • Por el momento, todos los servicios de Google Cloud admiten los atributos de fecha y hora.

Otorga acceso temporal

Se puede usar una vinculación de función condicional para otorgar acceso por tiempo limitado a un recurso, lo que garantiza que un usuario ya no pueda acceder al recurso después de la fecha y hora de vencimiento especificadas.

Considera la siguiente situación: la política de seguridad de la información de la empresa ExampleCo hace hincapié en que ningún empleado debe tener acceso indefinido a los recursos en los proyectos de producción. Antes, los administradores configuraban y borraban de forma manual las vinculaciones de funciones de IAM para satisfacer las necesidades de emergencia de los ingenieros. A fin de reducir la sobrecarga administrativa, ExampleCo puede configurar una vinculación de función condicional con una condición de fecha y hora para establecer una fecha de finalización de la vinculación.

Para otorgar acceso con vencimiento a un recurso de proyecto, haz lo siguiente:

Console

  1. En Cloud Console, ve a la página IAM.

    Ir a la página IAM

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

  3. Desde el panel Editar permisos, ubica la función deseada para configurar una condición. Luego, en Condición, haz clic en Agregar condición.

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

  5. Puedes 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 en la que puedes seleccionar el tipo de condición y el operador deseados, así como otros detalles aplicables sobre la expresión. El editor de condiciones proporciona una interfaz basada en texto en la que puedes ingresar de forma manual una expresión mediante la sintaxis CEL.

    Creador de condiciones:

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

    Editor de condición:

    1. Haz clic en la pestaña Editor de condiciones y, luego, ingresa la siguiente expresión (reemplaza la marca de tiempo por la tuya):

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

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

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

Comando de gcloud

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

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

Comando:

gcloud projects get-iam-policy project-id --format=json > filepath

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

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

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

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:travis@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, configura la política nueva mediante la ejecución del comando gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id filepath

Se aplica la política nueva; el otorgamiento de función de travis@example.com vencerá en el momento especificado.

API de REST

Usa el patrón lectura-modificación-escritura para permitir el acceso hasta un momento específico.

Primero, lee la política de IAM para el proyecto:

El método projects.getIamPolicy de la API de Resource Manager obtiene la política de IAM de un proyecto.

Antes de usar cualquiera de los siguientes datos de solicitud, realiza estos reemplazos:

Método HTTP y URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

Cuerpo JSON de la solicitud:

{
  "options": {
    "requestedPolicyVersion": policy-version
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

A continuación, modifica la política para que permita el acceso hasta un momento específico. Asegúrate de cambiar el campo version al valor 3:

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

Por último, escribe la política actualizada:

El método projects.setIamPolicy de la API de Resource Manager establece la política en la solicitud como la nueva política de IAM del proyecto.

Antes de usar cualquiera de los siguientes datos de solicitud, realiza estos reemplazos:

  • project-id: El ID de tu proyecto de Google Cloud.

Método HTTP y URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene la política actualizada.


Administra el acceso según las horas y los días de la semana

Una vinculación de función condicional se puede usar para otorgar acceso a un recurso solo dentro de ciertas horas y días de la semana de forma recurrente.

Considera la siguiente situación: la empresa ExampleCo tiene un proyecto de control de calidad. Todo el equipo de control de calidad debe tener funciones con una gran cantidad de privilegios para completar su trabajo. ExampleCo debe cumplir con las leyes laborales de su ubicación, que limitan el horario laboral de lunes a viernes de 9:00 a.m. a 5:00 p.m. ExampleCo puede usar condiciones de fecha y hora para asegurarse de que sus empleados solo puedan acceder a Google Cloud durante la semana laboral y durante el horario laboral programado.

Para otorgar acceso a un recurso de proyecto solo durante ciertas horas y días de la semana de forma recurrente, haz lo siguiente:

Console

  1. En Cloud Console, ve a la página IAM.

    Ir a la página IAM

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

  3. Desde el panel Editar permisos, ubica la función deseada para configurar una condición. Luego, en Condición, haz clic en Agregar condición.

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

  5. Puedes 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 en la que puedes seleccionar el tipo de condición y el operador deseados, así como otros detalles aplicables sobre la expresión. El editor de condiciones proporciona una interfaz basada en texto en la que puedes ingresar de forma manual una expresión mediante la sintaxis CEL.

    Creador de condiciones:

    1. Haz clic en Agregar.
    2. En el menú desplegable Tipo de condición, selecciona Hora  Programación  Día de la semana.
    3. En el menú desplegable Operador, selecciona En el día o después de este.
    4. En el menú desplegable Día de la semana, selecciona Lunes.
    5. En el menú desplegable Elegir una zona horaria, selecciona la zona horaria que desees.
    6. Asegúrate de que el operador Y esté seleccionado a la izquierda y vuelve a hacer clic en Agregar.
    7. En el menú desplegable Tipo de condición, selecciona Hora  Programación  Día de la semana.
    8. En el menú desplegable Operador, selecciona En el día o antes de este.
    9. En el menú desplegable Día de la semana, selecciona Viernes.
    10. En el menú desplegable Elegir una zona horaria, selecciona la zona horaria que desees.

    En este momento, solo configuraste el acceso de lunes a viernes. Ahora, debes configurar el acceso de 9:00 a.m. (9:00) a 5:00 p.m. (17:00).

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

      1. En el menú desplegable Operador, selecciona En el día o después de este.
      2. En el menú desplegable Hora del día, selecciona 9 (9 a.m.).
      3. En el menú desplegable Elegir una zona horaria, selecciona la zona horaria que desees.
      4. En el menú desplegable Tipo de condición, selecciona Hora  Programación  Hora del día.
      5. En el menú desplegable Operador, selecciona En el día o antes de este. Tenga en cuenta que, para esta selección, “activado” se evaluará de manera lógica en todos los horarios entre las 17:00 (5:00 p.m.) y las 17:59 (5:59 p.m.). A fin de configurar el acceso para que venza a las 4:59 p.m., asegúrate de que la hora sea 16 en lugar de 17.
      6. En el menú desplegable Hora del día, selecciona 17 (5 p.m.).
      7. En el menú desplegable Elegir una zona horaria, selecciona la zona horaria que desees.
      8. Haz clic en Guardar para aplicar la condición.
      9. Una vez que el panel Editar condición esté cerrado, vuelve a hacer clic en Guardar desde el panel Editar permisos para actualizar la política de IAM.

      Configuraste el acceso de lunes a viernes de 9:00 a.m. a 5:00 p.m.

      Editor de condiciones:

      1. Haz clic en la pestaña Editor de condiciones y, luego, ingresa la siguiente expresión (reemplaza los valores del marcador de posición por los tuyos):

        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 hacer clic en Ejecutar Linter arriba del cuadro de texto en la parte superior derecha para validar la sintaxis CEL.

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

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

Comando de gcloud

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

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

Comando:

gcloud projects get-iam-policy project-id --format=json > filepath

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

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:rita@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 por la tuya). Si no usas la versión 263.0.0, o una posterior, de la herramienta de gcloud, asegúrate de haber actualizado el valor version3. Si usas una versión más reciente de la herramienta de gcloud, el valor máximo de la política se establecerá de forma automática para ti:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:rita@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, configura la política nueva mediante la ejecución del comando gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id filepath

Se aplica la política nueva; el otorgamiento de la función de rita@example.com permitirá el acceso entre los días y horarios especificados.

API de REST

Usa el patrón lectura-modificación-escritura para permitir el acceso programado.

Primero, lee la política de IAM para el proyecto:

El método projects.getIamPolicy de la API de Resource Manager obtiene la política de IAM de un proyecto.

Antes de usar cualquiera de los siguientes datos de solicitud, realiza estos reemplazos:

Método HTTP y URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy

Cuerpo JSON de la solicitud:

{
  "options": {
    "requestedPolicyVersion": policy-version
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

A continuación, modifica la política para permitir el acceso programado.

Agrega la siguiente expresión de condición destacada (reemplaza la marca de tiempo por la tuya). Asegúrate de haber actualizado el valor version3:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "user:rita@example.com"
      ],
      "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"
      }
    }
  ]
}

El método projects.setIamPolicy de la API de Resource Manager establece la política en la solicitud como la nueva política de IAM del proyecto.

Antes de usar cualquiera de los siguientes datos de solicitud, realiza estos reemplazos:

  • project-id: El ID de tu proyecto de Google Cloud.

Método HTTP y URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

Cuerpo JSON de la solicitud:

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:project-owner@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "members": [
          "user:rita@example.com"
        ],
        "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"
        }
      }
    ]
  }
}

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene la política actualizada.


Próximos pasos