Crear un nivel de acceso básico

En esta página se describe cómo crear niveles de acceso básicos. Para crear niveles de acceso personalizados y usar el modo avanzado en la consola de Google Cloud , consulta el artículo Crear un nivel de acceso personalizado.

En esta página se incluyen implementaciones más específicas de los niveles de acceso. Consulta los siguientes ejemplos:

Antes de empezar

Crear un nivel de acceso básico

Consola

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

  1. Abre la página Access Context Manager (Administrador de contextos de acceso) en la Google Cloud consola.

    Abre la página Administrador de contextos de acceso.

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

  3. En la parte superior de la página Gestor de contexto de acceso, haga clic en Nuevo.

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

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

    2. En la sección Condiciones, haz clic en el botón Añadir del tipo de atributo que quieras añadir y, a continuación, indica los valores que quieras aplicar a ese atributo.

      Para ver una lista completa de los atributos que puede añadir, consulte la información sobre los atributos de nivel de acceso.

      Por ejemplo, si quieres que el nivel de acceso tenga en cuenta desde dónde se envía una solicitud en tu red, selecciona el atributo Subredes de direcciones IP.

      Repite este paso para añadir varios atributos a la misma condición. Si una condición tiene varios atributos, la solicitud de acceso debe cumplir todos los atributos.

      Una condición de nivel de acceso puede incluir un atributo de cada tipo. Algunos atributos incluyen opciones adicionales, como el atributo Política de dispositivos.

      Los niveles de acceso admiten condiciones basadas en la identidad del usuario. Sin embargo, para añadir identidades a una condición, debes crear o actualizar el nivel de acceso con la CLI de gcloud o la API.

    3. Use la opción Si se cumple la condición, devolver para especificar si quiere que la condición requiera que una solicitud cumpla todos los atributos especificados (TRUE) o si la solicitud debe cumplir cualquier otro atributo (FALSE).

      Por ejemplo, si quieres rechazar las solicitudes de un intervalo de direcciones IP de tu red, especifica el intervalo de direcciones IP con el atributo Subredes IP y, a continuación, define la condición como FALSE.

    4. También puedes hacer clic en Añadir otra condición para añadir una condición adicional a tu nivel de acceso y, a continuación, repetir los dos pasos anteriores.

      Por ejemplo, si quieres denegar el acceso a un subconjunto de direcciones IP dentro de un intervalo de direcciones IP más amplio, crea una condición, especifica el intervalo de direcciones IP del subconjunto en el atributo Subredes IP y define la condición para que devuelva FALSE.

      Repite este paso para añadir varias condiciones al mismo nivel de acceso.

    5. Si has creado más de una condición, usa Combinar condición con para especificar si quieres que el nivel de acceso requiera que se cumpla al menos una de las condiciones (OR) o todas ellas (AND).

    6. Haz clic en Guardar.

gcloud

Antes de empezar

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

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

Donde:

  • LEVEL_NAME es el nombre único del nivel de acceso. Debe empezar por una letra y solo puede incluir 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 varias 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 la consola Google Cloud .

    combine-function

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

    Valores válidos: AND, OR

    description

    (Opcional) Descripción detallada del nivel de acceso.

  • POLICY es el ID de la política de acceso de tu organización. Si tienes una política predeterminada, este parámetro es opcional.

También puede incluir cualquiera de las marcas de gcloud.

Archivo YAML basic-level-spec

Cuando usas la herramienta de línea de comandos gcloud para crear un nivel de acceso, debes proporcionar un archivo YAML para la opción basic-level-spec. El archivo YAML define una o varias condiciones para el nivel de acceso. Las condiciones deben contener al menos un atributo. Cuando una condición contiene más de un atributo, se combinan como una operación Y (todos deben ser verdaderos) o como una operación NAND (ninguno puede ser verdadero), en función de si el atributo negate se incluye en la condición.

Para ver una lista completa de los atributos que puede incluir en su archivo YAML, consulte el artículo 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' \
    --policy=1521580097614100

API

Antes de empezar

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

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

Donde:

  • POLICY es el ID 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 quieras para el nuevo nivel de acceso. Cada Condition tiene uno o varios atributos que se evalúan como una operación Y (todos deben ser verdaderos) o como una operación NAND (ninguno puede ser verdadero), en función de si el campo negate tiene el valor true. La evaluación resultante determina si se cumple o no la condición.

Cuerpo de la respuesta

Si la llamada se realiza correctamente, el cuerpo de la respuesta contiene un recurso Operation que proporciona detalles sobre la operación POST.

Implementaciones de ejemplo

En los siguientes ejemplos se muestran algunas de las formas prácticas en las que tu organización puede implementar niveles de acceso. En estos ejemplos se da por hecho que tu organización ya tiene una política de acceso.

Limitar el acceso en una red corporativa

En este ejemplo se describe cómo crear una condición de nivel de acceso que permita el acceso solo desde un intervalo de direcciones IP especificado (por ejemplo, las que se encuentran en una red corporativa).

Al restringir el intervalo de direcciones IP a las que se concede acceso, puedes dificultar la filtración de datos a un atacante que se encuentre dentro o fuera de tu organización.

En este ejemplo, supongamos que quieres crear un nivel de acceso que permita a un grupo de auditores internos acceder al servicio Cloud Logging de un proyecto llamado datos-sensibles. Todos los dispositivos de los auditores tienen asignadas IPs en una subred que va de 203.0.113.0 a 203.0.113.127. Sabes que no habrá ningún dispositivo asignado a esa subred que no sea el que usan los auditores.

Si quieres usar un intervalo de direcciones IP privadas (por ejemplo, 192.168.0.0/16 o 172.16.0.0/12), consulta Permitir el acceso a recursos protegidos desde una dirección IP interna para obtener más información y un ejemplo de implementación con Controles de Servicio de VPC.

Consola

  1. Abre la página Access Context Manager (Administrador de contextos de acceso) en la Google Cloud consola.

    Abre la página Administrador de contextos de acceso.

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

  3. En la parte superior de la página Gestor de contexto de acceso, haga clic en Nuevo.

  4. En el panel Nuevo nivel de acceso, en la sección Condiciones, haz clic en Añadir atributo y, a continuación, en Subredes de IP.

  5. En el cuadro Subredes de IP, selecciona IP pública o IP privada.

    • Si seleccionas IP pública, introduce uno o varios intervalos IPv4 o IPv6 con formato de bloques CIDR.

      En este ejemplo, para limitar el acceso solo a los auditores, introduce 203.0.113.0/25 en el cuadro Subredes IP.

    • Si seleccionas IP privada, haz clic en Seleccionar redes de VPC. Puede especificar redes de VPC mediante una de las tres opciones disponibles en la lista Opciones de importación.

      • Opción 1:

        1. Selecciona Buscar redes de VPC en tu organización y elige las redes de VPC.

        2. Haz clic en Añadir redes de VPC seleccionadas.

        3. Haz clic en Seleccionar subredes de IPs y selecciona las subredes.

        4. Haz clic en Añadir subredes de IP.

      • Opción 2:

        1. Selecciona Introducir manualmente la dirección de la red de VPC e introduce una o varias redes de VPC.

        2. Haz clic en Añadir red de VPC.

        3. Haz clic en Seleccionar subredes de IPs y selecciona las subredes.

        4. Haz clic en Añadir subredes de IP.

      • Opción 3:

        1. Selecciona Subir archivo CSV (sobrescribe las redes actuales).

          Si usas un archivo CSV para añadir redes VPC y subredes a un nivel de acceso, Access Context Manager sobrescribe las redes VPC y las subredes seleccionadas anteriormente.

        2. Haz clic en Examinar y sube el archivo CSV. En el archivo CSV, debe especificar las redes de VPC y las subredes con el siguiente formato:

          VPC_NETWORK_NAME_1       | IP_RANGE_1       | IP_RANGE_2       | ...
          VPC_NETWORK_NAME_2       | .                | .                | ...
          .                        | .                | .                | ...
          .                        | .                | .                | ...
          
        3. Haz clic en Importar redes.

          Con el archivo CSV, Access Context Manager rellena los nombres de las redes de VPC y la información de las subredes en los cuadros Dirección de red de VPC y Subredes IP, respectivamente.

      Para obtener información sobre el nombre de la red de VPC y el formato de la dirección IP privada, consulta Usar direcciones IP internas en niveles de acceso.

  6. Haz clic en Guardar.

gcloud

  1. Crea un archivo YAML para un nivel de acceso que incluya uno o varios intervalos de IPv4 o IPv6 con formato de bloques CIDR.

    En este ejemplo, para limitar el acceso solo a los auditores, introducirías lo siguiente en el archivo YAML:

    - ipSubnetworks:
      - 203.0.113.0/25
    

    Si quieres usar una dirección IP privada, debes introducir la siguiente información en el archivo YAML:

    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    

    Sustituye VPC_NETWORK_NAME y IP_RANGE por los valores descritos en la sección Usar una dirección IP interna en niveles de acceso.

  2. Guarda 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

    Donde:

    • NAME es el nombre único del nivel de acceso. Debe empezar por una letra y solo puede incluir letras, números y guiones bajos.

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

    • POLICY es el ID de la política de acceso de tu organización. Si tienes una política predeterminada, este parámetro es opcional.

    El resultado que verás debe parecerse al siguiente:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/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 varios intervalos IPv4 o IPv6 con el formato de bloques CIDR.

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

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

    Donde:

    • NAME es el nombre único del nivel de acceso. Debe empezar por una letra y solo puede incluir letras, números y guiones bajos.

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

    Si quieres usar una dirección IP privada, debes introducir la siguiente información en el cuerpo de la solicitud:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "vpcNetworkSources": [
            {
              "vpcSubnetwork": {
                "network": VPC_NETWORK_NAME,
                "vpcIpSubnetworks": [
                  IP_RANGE
                ]
              }
            }
           ]
         }
       ]
     }
    }

    Sustituye VPC_NETWORK_NAME y IP_RANGE por los valores descritos en la sección Usar una dirección IP interna en niveles de acceso.

  2. Crea el nivel de acceso llamando a accessLevels.create.

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

    Donde:

    • POLICY es el ID de la política de acceso de tu organización.

Limitar el acceso por atributos de dispositivo

En este ejemplo se describe cómo crear un nivel de acceso que solo conceda acceso a los dispositivos que cumplan un conjunto de requisitos especificado, como una versión determinada del sistema operativo.

La información sobre los dispositivos se proporciona al Administrador de contextos de acceso mediante la verificación de endpoints. Se pueden comprobar los siguientes criterios para determinar si se concede acceso:

  • El bloqueo de pantalla está habilitado
  • El cifrado del almacenamiento está habilitado
  • El dispositivo ejecuta un tipo y una versión de sistema operativo específicos

En este ejemplo, supongamos que tu organización solo utiliza máquinas que tienen instalado ChromeOS o Windows. Para añadir una capa de seguridad, quieres crear un nivel de acceso que impida el acceso a cualquier persona que utilice otros sistemas operativos. Además, para gestionar el riesgo, debes asegurarte de que solo puedan acceder determinadas versiones de los SO.

Consola

  1. Abre la página Access Context Manager (Administrador de contextos de acceso) en la Google Cloud consola.

    Abre la página Administrador de contextos de acceso.

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

  3. En la parte superior de la página Gestor de contexto de acceso, haga clic en Nuevo.

  4. En el panel Nuevo nivel de acceso, en la sección Condiciones, haz clic en Añadir atributo y, a continuación, en Política de dispositivos.

  5. Añade los atributos de la política de dispositivos:

    1. Haz clic en Añadir política de SO y, a continuación, en Política de ChromeOS.

    2. En el cuadro Versión mínima, introduce la versión mínima de ChromeOS que quieras permitir.

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

  6. Haz clic en Guardar.

gcloud

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

    En este ejemplo, para permitir solo los dispositivos con una versión mínima aceptable de ChromeOS y Windows, introducirías lo siguiente en el archivo YAML:

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. Guarda 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

    Donde:

    • NAME es el nombre único del nivel de acceso. Debe empezar por una letra y solo puede incluir letras, números y guiones bajos.

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

    • POLICY es el ID de la política de acceso de tu organización. Si tienes una política predeterminada, este parámetro es opcional.

    El resultado que verás debe parecerse al siguiente:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/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 los dispositivos con una versión mínima aceptable de ChromeOS y Windows, introducirías 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"
               }
             ]
           {
         }
       ]
     }
    }

    Donde:

    • NAME es el nombre único del nivel de acceso. Debe empezar por una letra y solo puede incluir letras, números y guiones bajos.

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

  2. Crea el nivel de acceso llamando a accessLevels.create.

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

    Donde:

    • POLICY es el ID de la política de acceso de tu organización.

Conceder acceso por usuario o cuenta de servicio

Conceder acceso en función de la identidad suele ser útil junto con las cuentas de servicio, por ejemplo, para permitir que una función de Cloud acceda a los datos.

En este ejemplo se describe cómo conceder acceso a usuarios y cuentas de servicio específicos, al tiempo que se incluyen los niveles de acceso actuales para mostrar un ejemplo de niveles de acceso anidados. En este caso, los usuarios especificados se incluyen en este nivel de acceso independientemente de si cumplen las condiciones especificadas en los niveles de acceso ya creados. Este nuevo nivel de acceso podría considerarse un nivel menos restrictivo que los niveles de acceso actuales.

Consola

Por el momento, la Google Cloud consola no permite añadir principales a los niveles de acceso. Si quieres añadir principales a los niveles de acceso, debes usar la herramienta de línea de comandos gcloud o la API.

gcloud

  1. Crea un archivo YAML que contenga una condición que incluya los principales a los que quieras dar acceso.

    En este ejemplo, quieres añadir a tu administrador de sistemas (sysadmin@example.com) y a una cuenta de servicio (service@project.iam.gserviceaccount.com).

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
  2. Añade una condición que incluya los niveles de acceso que quieras incluir en este nivel de acceso.

    En este ejemplo, supongamos que los niveles de acceso se llaman 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. Guarda el archivo. En este ejemplo, el archivo se llama CONDITIONS.yaml.

  4. Crea el nivel de acceso con el comando create.

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

    Donde:

    • NAME es el nombre único del nivel de acceso. Debe empezar por una letra y solo puede incluir letras, números y guiones bajos.

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

    • POLICY es el ID de la política de acceso de tu organización. Si tienes una política predeterminada definida, este parámetro es opcional.

    • La opción combine-function está configurada como OR. El valor predeterminado, AND, requiere que se cumplan todas las condiciones antes de conceder un nivel de acceso. El valor OR dará acceso a las entidades aunque no se cumplan otras condiciones.

    El resultado que verás debe parecerse al siguiente:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/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 las entidades a las que quieras dar acceso.

    En este ejemplo, quieres añadir a tu administrador de sistemas (sysadmin@example.com) y a 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"
           ]
         }
       ]
     }
    }

    Donde:

    • NAME es el nombre único del nivel de acceso. Debe empezar por una letra y solo puede incluir letras, números y guiones bajos.

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

  2. Añade una condición que incluya los niveles de acceso que quieras incluir en este nivel de acceso.

    En este ejemplo, supongamos que los niveles de acceso se llaman 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. Asigna el valor OR a combiningFunction.

    El valor predeterminado de combiningFunction, AND, requiere que se cumplan todas las condiciones para que se conceda un nivel de acceso. El valor OR dará acceso a las entidades aunque no se cumplan otras condiciones, como la dirección IP o las heredadas de otros niveles de acceso obligatorios.

    {
     "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. Crea el nivel de acceso llamando a accessLevels.create.

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

    Donde:

    • POLICY es el ID de la política de acceso de tu organización.