Crear un nivel de acceso básico

En esta página, se describe, en general, cómo crear niveles de acceso básicos. Para crear niveles de acceso personalizados y usar el Modo avanzado en Google Cloud Console, consulta Crea un nivel de acceso personalizado.

En esta página, se incluyen implementaciones más detalladas de los niveles de acceso. Consulta los siguientes ejemplos:

Antes de comenzar

Crea un nivel de acceso básico

Console

Para crear un nivel de acceso básico, sigue estos pasos:

  1. Abra la página Access Context Manager en Cloud Console.

    Abrir la página de Access Context Manager

  2. Si se le solicita, seleccione su organización.

  3. En la parte superior de la página Access Context Manager, haz clic en Nuevo.

  4. En el panel Nuevo nivel de acceso, realiza lo siguiente:

    1. En el cuadro Título del nivel de acceso, ingresa un título para el nivel de acceso. El título debe tener 50 caracteres como máximo, comenzar con una letra y solo puede contener números, letras, guiones bajos y espacios.

      De forma predeterminada, las condiciones se crean en el modo básico. Si deseas crear condiciones mediante el modo avanzado, consulta Crea un nivel de acceso personalizado.

    2. En la sección Condiciones, haga clic en Agregar atributo y, luego, seleccione el atributo que desea agregar a la condición.

      Para obtener una lista completa de los atributos que puedes agregar, lee sobre los atributos de nivel de acceso.

      Por ejemplo, si quieres que el nivel de acceso tenga en cuenta la procedencia de una solicitud en tu red, selecciona el atributo Subredes IP.

      Repita este paso para agregar varios atributos a la misma condición. Cuando una condición tiene varios atributos, todos los atributos deben cumplirse con la solicitud de acceso.

    3. Usa la opción Cuándo se cumple la condición para especificar si deseas que el nivel de acceso requiera que una solicitud cumpla con todos los atributos especificados (TRUE) o si la solicitud debe cumplir con cualquiera de esos atributos (FALSE).

      Por ejemplo, si deseas denegar solicitudes de un rango de direcciones IP determinado de tu red, especifica el rango de direcciones IP con el atributo de Subredes de IP y, luego, establecer la condición en FALSE.

    4. También puedes hacer clic en Agregar otra condición para agregar una condición adicional a tu nivel de acceso y, luego, repetir los dos pasos anteriores.

      Por ejemplo, si deseas denegar el acceso a un subconjunto de direcciones IP dentro de un rango de direcciones IP más amplio, crea una condición nueva, especifica el rango de direcciones IP del subconjunto para atributos Subredes IP, y configura la condición para que muestre FALSE.

      Repite este paso para agregar varias condiciones al mismo nivel de acceso.

    5. En la sección Condiciones, usa la opción Combinar condiciones para especificar si deseas que el nivel de acceso requiera una solicitud para cumplir con todas las condiciones de nivel de acceso. (AND) o solo una de las condiciones (OR).

    6. Haga clic en Guardar.

gcloud

Antes de comenzar

Para crear un nivel de acceso con la herramienta de línea de comandos de gcloud, usa el comando gcloud access-context-manager levels create.

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY_NAME

Aquí:

  • LEVEL_NAME es el nombre único para el nivel de acceso. Debe comenzar con una letra y, además, incluir solo letras, números y guiones bajos. El nombre puede tener un máximo de 50 caracteres.

  • OPTIONS son las opciones obligatorias de la siguiente tabla.

    Opciones
    basic-level-spec

    Un archivo .yaml que especifica una o más condiciones para el nivel de acceso.

    title

    Un título corto para el nivel de acceso. El título del nivel de acceso se muestra en Cloud Console.

    combine-function

    (Opcional) Determina cómo se combinan las condiciones.

    Valores válidos: AND, OR

    description

    (Opcional) Una descripción con formato largo del nivel de acceso.

  • POLICY_NAME es el nombre de la política de acceso de tu organización.

De manera opcional, puedes incluir cualquiera de las marcas de gcloud-wide.

Archivo basic-level-spec .yaml

Cuando usas la herramienta de línea de comandos de gcloud a fin de crear un nivel de acceso, debes proporcionar un archivo .yaml para la opción basic-level-spec. El archivo .yaml define una o más condiciones para el nivel de acceso. Las condiciones deben contener al menos un atributo.

Para obtener una lista completa de los atributos que puedes incluir en tu archivo .yaml, lee sobre los atributos de nivel de acceso.

Para obtener más información sobre los niveles de acceso y YAML, consulta el ejemplo de YAML para un nivel de acceso.

Comando de ejemplo

gcloud access-context-manager levels create Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=AND \
    --description='Access level that conforms to corporate spec.' \
    --title='Device_Trust Extended'

API

Antes de comenzar

Para crear un nivel de acceso, llama a accessLevels.create.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels

Aquí:

  • POLICY_NAME es el nombre de la política de acceso de tu organización.

Cuerpo de la solicitud

El cuerpo de la solicitud debe incluir un recurso AccessLevel que especifique las condiciones que deseas para el nuevo nivel de acceso.

Cuerpo de la respuesta

Si tiene éxito, el cuerpo de respuesta de la llamada contiene un recurso Operation que proporciona detalles sobre la operación POST.

Implementaciones de ejemplo

Los siguientes ejemplos abarcan algunas de las formas prácticas en las que tu organización podría querer implementar niveles de acceso. En estos ejemplos, se supone que tu organización ya tiene una política de acceso.

Limita el acceso de una red corporativa

En este ejemplo, se describe cómo crear una condición de nivel de acceso que permite el acceso solo desde un rango específico de direcciones IP (por ejemplo, las direcciones dentro de una red corporativa).

Si restringes el rango de direcciones IP a las que se les otorga acceso, puedes dificultar el robo de datos a un atacante que está dentro o fuera de tu organización.

Para este ejemplo, supón que deseas crear un nivel de acceso que permitirá que un grupo de auditores internos acceda al servicio de Cloud Logging en un proyecto llamado sensitive-data. A todos los dispositivos para los auditores se les asignan IP en una subred que está entre 203.0.113.0 y 203.0.113.127. Sabes que no habrá ningún dispositivo asignado a esa subred que no sean los que usan los auditores.

Console

  1. Abra la página Access Context Manager en Cloud Console.

    Abrir la página de Access Context Manager

  2. Si se le solicita, selecciona tu organización.

  3. En la parte superior de la página Access Context Manager, haz clic en New.

  4. En el panel Nivel de acceso nuevo, en la sección Condiciones, haz clic en Agregar atributo y, luego, en Subredes IP.

  5. En el cuadro Subredes IP, ingrese uno o más rangos IPv4 o IPv6 formateados como bloques CIDR.

    En este ejemplo, para limitar el acceso a los auditores, debes ingresar 203.0.113.0/25 en el cuadro Subredes de IP.

  6. Haga clic en Save.

gcloud

  1. Crea un archivo .yaml para un nivel de acceso que incluya uno o más rangos IPv4 o IPv6 con formato de bloques CIDR.

    En este ejemplo, para limitar el acceso solo a los auditores, debes ingresar lo siguiente en el archivo .yaml:

    - ipSubnetworks:
      - 203.0.113.0/25
    
  2. Guarde el archivo. En este ejemplo, el archivo se llama CONDITIONS.yaml.

  3. Crea el nivel de acceso:

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY_NAME
    

    Aquí:

    • NAME es el nombre único para el nivel de acceso. Debe comenzar con una letra y, además, incluir solo letras, números y guiones bajos.

    • TITLE es un título legible. Debe ser único para la política.

    • POLICY_NAME es el nombre de la política de acceso de tu organización.

    Deberías ver un resultado similar a este:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. Crea un cuerpo de solicitud para crear un recurso AccessLevel que incluya uno o más rangos IPv4 o IPv6 con formato de bloques CIDR.

    En este ejemplo, para limitar el acceso solo a los auditores, debes ingresar lo siguiente en el cuerpo de la solicitud:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "ipSubnetworks": [
             "203.0.113.0/25"
           ]
         }
       ]
     }
    }
    

    Aquí:

    • NAME es el nombre único para el nivel de acceso. Debe comenzar con una letra y, además, incluir solo letras, números y guiones bajos.

    • TITLE es un título legible. Debe ser exclusivo de la política.

  2. Llama a accessLevels.create para crear el nivel de acceso.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels
    

    Aquí:

    • POLICY_NAME es el nombre de la política de acceso de tu organización.

Limita el acceso por dispositivos en una red

En este ejemplo, se describe cómo crear un nivel de acceso que otorgue acceso solo a los dispositivos que cumplen con un conjunto específico de requisitos, como una versión determinada del sistema operativo (SO).

La información sobre los dispositivos se proporciona a Access Context Manager mediante la Verificación de extremos. Se pueden verificar los siguientes criterios cuando se determina si se otorga o no el acceso:

  • El bloqueo de pantalla está habilitado
  • La encriptación de almacenamiento está habilitada
  • El dispositivo ejecuta un tipo y una versión de sistema operativo especificado.

Para este ejemplo, supón que tu organización usa solo máquinas que tengan instalado el Sistema operativo Chrome o Windows. Para agregar una capa de seguridad, es recomendable que crees un nivel de acceso que impida el acceso de alguien que use otros sistemas operativos. Además, para administrar el riesgo, debes asegurarte de que solo algunas versiones de los SO puedan acceder.

Console

  1. Abra la página Access Context Manager en Cloud Console.

    Abrir la página de Access Context Manager

  2. Si se le solicita, selecciona tu organización.

  3. En la parte superior de la página Access Context Manager, haz clic en Nuevo.

  4. En el panel Nuevo nivel de acceso, en la sección Condiciones, haz clic en Agregar atributo y, luego, en Política de dispositivo.

  5. Agrega los atributos de política de dispositivo:

    1. Haz clic en Agregar política de SO y, luego, en Política del Sistema operativo Chrome.

    2. En el cuadro Versión mínima, ingresa la versión mínima del Sistema operativo Chrome que deseas permitir.

    3. Repite los pasos 1 y 2 para la política del SO Windows.

  6. Haga clic en Save.

gcloud

  1. Crea un archivo .yaml para un nivel de acceso que incluya una política de dispositivo con restricciones de SO.

    En este ejemplo, para permitir solo los dispositivos con una versión mínima aceptable del Sistema operativo Chrome y Windows, debes ingresar lo siguiente en el archivo .yaml:

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. Guarde el archivo. En este ejemplo, el archivo se llama CONDITIONS.yaml.

  3. Crea el nivel de acceso:

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY_NAME
    

    Aquí:

    • NAME es el nombre único para el nivel de acceso. Debe comenzar con una letra y, además, incluir solo letras, números y guiones bajos.

    • TITLE es un título legible. Debe ser único para la política.

    • POLICY_NAME es el nombre de la política de acceso de tu organización.

    Deberías ver un resultado similar a este:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. Crea un cuerpo de solicitud para crear un recurso AccessLevel que incluya una política de dispositivo con restricciones de SO.

    En este ejemplo, para permitir solo dispositivos con una versión mínima aceptable del Sistema operativo Chrome y Windows, debes ingresar lo siguiente en el cuerpo de la solicitud:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "devicePolicy": {
             "osConstraints": [
               {
                 "osType": "DESKTOP_CHROME_OS",
                 "minimumVersion": "11316.165.0"
               },
               {
                 "osType": "DESKTOP_WINDOWS",
                 "minimumVersion": "10.0.1809"
               }
             ]
           {
         }
       ]
     }
    }
    

    Aquí:

    • NAME es el nombre único para el nivel de acceso. Debe comenzar con una letra y, además, incluir solo letras, números y guiones bajos.

    • TITLE es un título legible. Debe ser único en la política.

  2. Para crear el nivel de acceso, llama a accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels
    

    Aquí:

    • POLICY_NAME es el nombre de la política de acceso de tu organización.

Limita el acceso por usuario o cuenta de servicio

Otorgar el acceso basado en la identidad a menudo es útil junto con las cuentas de servicio. Por ejemplo, para habilitar una función de Cloud Functions a fin de acceder a los datos.

En este ejemplo, se describe cómo otorgar acceso a cuentas de servicio y usuarios específicos que no cumplen con los criterios de otros niveles de acceso. En este ejemplo, supón que tienes un administrador del sistema y una cuenta de servicio que deseas proporcionar acceso a los servicios de un proyecto, independientemente de las condiciones especificadas en otros niveles de acceso.

Console

En este momento, Cloud Console no admite la adición de miembros a niveles de acceso. Si deseas agregar miembros a los niveles de acceso, debes usar la herramienta de línea de comandos de gcloud o la API.

gcloud

  1. Crea un archivo .yaml que contenga una condición que enumere los miembros a los que deseas proporcionar acceso.

    En este ejemplo, deseas agregar tu administrador de sistema (sysadmin@example.com) y una cuenta de servicio (service@project.iam.gserviceaccount.com).

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
  2. Agrega una condición que enumere los niveles de acceso que no deseas aplicar a los miembros. La negación se logra mediante la configuración de la función de combinación en OR en el paso 4.

    En este ejemplo, supongamos que los niveles de acceso se denominan Device_Trust y IP_Trust, y que 247332951433 es el nombre de tu política de acceso.

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
    - requiredAccessLevels:
        - accessPolicies/247332951433/accessLevels/Device_Trust
        - accessPolicies/247332951433/accessLevels/IP_Trust
    
  3. Guarde el archivo. En este ejemplo, el archivo se llama CONDITIONS.yaml.

  4. Crea el nivel de acceso:

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --combine-function=OR \
       --policy=POLICY_NAME
    

    Aquí:

    • NAME es el nombre único para el nivel de acceso. Debe comenzar con una letra y, además, incluir solo letras, números y guiones bajos.

    • TITLE es un título legible. Debe ser único en la política.

    • POLICY_NAME es el nombre de la política de acceso de tu organización.

    • combine-function se configura como OR. El valor predeterminado AND requiere que se cumplan todas las condiciones antes de que se otorgue un nivel de acceso. Con el valor OR se da acceso a los miembros incluso si no se cumplen otras condiciones, como la dirección IP o las heredadas de otros niveles de acceso requeridos.

    Deberías ver un resultado similar a este:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. Crea un cuerpo de solicitud para crear un recurso AccessLevel que incluya una condición que enumere los miembros a los que deseas proporcionar acceso.

    En este ejemplo, deseas agregar tu administrador de sistema (sysadmin@example.com) y una cuenta de servicio (service@project.iam.gserviceaccount.com).

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         }
       ]
     }
    }
    

    Aquí:

    • NAME es el nombre único para el nivel de acceso. Debe comenzar con una letra y, además, incluir solo letras, números y guiones bajos.

    • TITLE es un título legible. Debe ser único en la política.

  2. Agrega una condición que enumere los niveles de acceso que no deseas aplicar a los miembros. La negación se logra mediante la configuración de la función de combinación en OR en el siguiente paso.

    En este ejemplo, supongamos que los niveles de acceso se denominan Device_Trust y IP_Trust, y que 247332951433 es el nombre de tu política de acceso.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ]
     }
    }
    
  3. Establece combiningFunction en OR.

    El valor predeterminado para combiningFunction, AND, requiere que se cumplan todas las condiciones antes de otorgar un nivel de acceso. Con el valor OR se da acceso a los miembros incluso si no se cumplen otras condiciones, como la dirección IP o las heredadas de otros niveles de acceso requeridos.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ],
       "combiningFunction": "OR"
     }
    }
    
  4. Para crear el nivel de acceso, llama a accessLevels.create.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels
    

    Aquí:

    • POLICY_NAME es el nombre de la política de acceso de tu organización.