Establece una política de la organización con etiquetas

Las etiquetas proporcionan una forma de permitir o rechazar políticas de manera condicional en función de si un recurso tiene una etiqueta específica. Puedes usar etiquetas y la aplicación condicional de políticas de la organización para proporcionar un control centralizado de los recursos en tu jerarquía.

Antes de comenzar

Para obtener más información sobre qué son las etiquetas y cómo funcionan, consulta la Descripción general de las etiquetas.

Para obtener instrucciones detalladas sobre cómo usar etiquetas, consulta Cómo crear y administrar etiquetas.

Establece una política de la organización con etiquetas

Si quieres usar etiquetas para determinar dónde debe aplicarse una política de la organización, debes especificar una condición en el archivo YAML de la política de la organización. Puedes configurar la condición para que coincida con un par clave-valor de etiqueta en particular, lo que requiere que se configure un valor de etiqueta particular para que se aplique la política de la organización.

La mayoría de las políticas de la organización se evalúan y aplican cuando se crea o se actualiza un recurso. No es posible adjuntar una etiqueta a un recurso antes de que se cree, por lo que las políticas condicionales de la organización no pueden evaluar etiquetas en un recurso mientras se crea, solo en etiquetas que se heredan de recursos superiores.

Las etiquetas se evalúan para los recursos de organización, carpeta y proyecto. La política de la organización no evalúa la mayoría de los recursos por debajo de los proyectos en la jerarquía de recursos, con ciertas excepciones, como los servicios de Cloud Run. Para obtener información sobre las restricciones específicas de las políticas de la organización, consulta Restricciones de las políticas de la organización.

Ejemplo de política de listas

En el siguiente ejemplo, se muestra cómo configurar un archivo de políticas de la organización que aplique la restricción gcp.resourceLocations. Esta política de la organización usa valores condicionales y no condicionales, establecidos dentro del mismo archivo de políticas.

Console

Para configurar la política de la organización, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. En el selector de proyectos, selecciona el proyecto en el que deseas establecer la política de la organización.

  3. En la página Políticas de la organización, selecciona una restricción de la lista. Aparecerá la página Detalles de la política de esa restricción.

  4. Si deseas actualizar la política de la organización para este recurso, haz clic en Administrar política.

  5. En la página Editar política, selecciona Anular política del superior.

  6. En Aplicación de la política, selecciona una opción de aplicación:

    • Para combinar y evaluar las políticas de la organización, selecciona Combinar con superior. Para obtener más información sobre la jerarquía de herencia y recursos, consulta la página sobre cómo obtener información de la evaluación de jerarquías.

    • Para anular las políticas heredadas de un recurso superior, selecciona Reemplazar.

  7. Haz clic en Agregar regla.

  8. En Valores de política, selecciona si esta política de la organización debe permitir todos los valores, rechazar todos los valores o especificar un conjunto personalizado de valores.

  9. De manera opcional, para que la política de la organización sea condicional en una etiqueta, haz clic en Agregar condición.

    1. En el campo Título, ingresa un nombre para la condición.

    2. En el campo Descripción, ingresa una descripción para la condición. En la descripción, se proporciona contexto sobre las etiquetas necesarias y cómo afectan los recursos.

    3. Puedes usar el Creador de condiciones si quieres crear una condición que requiera una etiqueta específica para que se aplique la restricción.

      1. En el cuadro Tipo de condición, selecciona Etiqueta.

      2. Selecciona el Operador para tu condición. Para hacer coincidir una etiqueta completa, usa el operador matches. Para hacer coincidir una clave de etiqueta y un valor de etiqueta, usa el operador matches ID.

      3. Si seleccionaste el operador matches, ingresa el valor con espacio de nombres de la etiqueta. Si seleccionaste el operador ID de coincidencias, ingresa los IDs de clave y valor.

      4. Puedes crear varias condiciones si haces clic en Agregar. Si agregas otra condición, puedes activar o desactivar And para configurar la lógica condicional de modo que las exija a todas. Puedes activar o desactivar Or para configurar la lógica condicional de modo que solo una de las condiciones sea verdadera.

      5. Para borrar una expresión, haz clic en la X grande que se encuentra a la derecha de los campos de la condición.

      6. Cuando termines de editar tus condiciones, haz clic en Guardar.

      En la siguiente figura, se muestra un ejemplo de configuración de una política de la organización que incluye condiciones.

      Ejemplo de la IU de las condiciones de la política de la organización.

    4. El Editor de condición se puede usar para crear una expresión condicional de manera programática. También mostrará una renderización programática de tu conjunto actual de condiciones.

      1. Puedes usar el Editor de condiciones para aplicar el operador lógico !. Por ejemplo, la consulta !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') aplicaría la restricción de la política de la organización a cualquier recurso que no tenga la etiqueta us-west1.
  10. Para aplicar la política, haz clic en Establecer política.

gcloud

Para configurar la política de la organización, ejecuta el siguiente comando:

gcloud org-policies set-policy POLICY_PATH

En el ejemplo anterior, POLICY_PATH es la ruta de acceso completa al archivo JSON de la política de la organización, que debería verse de la siguiente manera:

{
  "name":"RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations",
  "spec":{
    "rules":[
       {
        // As there is no condition specified, this allowedValue is enforced
        // unconditionally.
        "values":{
          "allowedValues": ["us-east1-locations"]
        },
      },
     {
        // This condition applies to the values block.
        "condition":{
          "expression":"resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
        },
        "values":{
          "allowedValues": ["us-west1-locations"]
        }
      }
    ]
  }
}

Aquí:

  • RESOURCE_TYPE es organizations, folders o projects.

  • RESOURCE_ID es el ID de la organización, el ID de la carpeta, el ID del proyecto o el número del proyecto, según el tipo de recurso especificado en RESOURCE_TYPE.

  • ORGANIZATION_ID es la organización superior de tu clave de etiqueta.

Para la política de la organización anterior, el recurso y todos sus recursos secundarios tendrán la restricción gcp.resourceLocations aplicada, con allowedValues de us-east1-locations únicamente. Se aplicará la restricción gcp.resourceLocations a cualquiera de estos recursos que tengan la etiqueta location: us-west1, con allowedValues de us-east1-locations y us-west1-locations.

De esta manera, se pueden aplicar conjuntos de valores condicionales y no condicionales para una restricción en una sola política de la organización.

Ejemplo de política booleana

En el siguiente ejemplo, se muestra cómo configurar un archivo de políticas de la organización que aplique la restricción compute.disableSerialPortAccess. Esta política de la organización especifica que todos los puertos en serie son accesibles para los recursos, pero usa una condición para restringir el acceso al puerto en serie solo a los recursos que tienen la etiqueta coincidente.

Console

Para configurar la política de la organización, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. En el selector de proyectos, selecciona el proyecto en el que deseas establecer la política de la organización.

  3. Selecciona una restricción de la lista de la página Políticas de la organización. Debería aparecer la página Detalles de la política para esa restricción.

  4. Si deseas actualizar la política de la organización para este recurso, haz clic en Administrar política.

  5. En la página Editar política, selecciona Anular política del superior.

  6. Haz clic en Agregar regla.

  7. En Aplicación, selecciona si la aplicación de esta política de la organización debe estar activada o desactivada.

  8. De manera opcional, para que la política de la organización sea condicional en una etiqueta, haz clic en Agregar condición. Ten en cuenta que si agregas una regla condicional a una política de la organización, solo debes agregar una regla no condicional o la política no se puede guardar.

    1. En el campo Título, ingresa un nombre para la condición.

    2. En el campo Descripción, ingresa una descripción para la condición. En la descripción, se proporciona contexto sobre las etiquetas necesarias y cómo afectan los recursos.

    3. Puedes usar el Creador de condiciones si quieres crear una condición que requiera una etiqueta específica para que se aplique la restricción.

      1. En el cuadro Tipo de condición, selecciona Etiqueta.

      2. Selecciona el Operador para tu condición. Para hacer coincidir una etiqueta completa, usa el operador matches. Para hacer coincidir una clave de etiqueta y un valor de etiqueta, usa el operador matches ID.

      3. Si seleccionaste el operador matches, ingresa el valor con espacio de nombres de la etiqueta. Si seleccionaste el operador ID de coincidencias, ingresa los IDs de clave y valor.

      4. Puedes crear varias condiciones si haces clic en Agregar. Si agregas otra condición, puedes activar o desactivar And para configurar la lógica condicional de modo que las exija a todas. Puedes activar o desactivar Or para configurar la lógica condicional de modo que solo una de las condiciones sea verdadera.

      5. Para borrar una expresión, haz clic en la X grande que se encuentra a la derecha de los campos de la condición.

      6. Cuando termines de editar tus condiciones, haz clic en Guardar.

      7. Una política de la organización con una condición aplicada debe tener solo una regla incondicional. Haz clic en Agregar regla y establece si la aplicación de esta política de la organización debe estar activada o desactivada de forma predeterminada.

      En la siguiente figura, se muestra un ejemplo de configuración de una política de la organización que incluye condiciones.

      Ejemplo de la IU de las condiciones de la política de la organización.

    4. El Editor de condición se puede usar para crear una expresión condicional de manera programática. También mostrará una renderización programática de tu conjunto actual de condiciones.

      1. Puedes usar el Editor de condiciones para aplicar el operador lógico !. Por ejemplo, la consulta !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') aplicaría la restricción de la política de la organización a cualquier recurso que no tenga la etiqueta us-west1.
  9. Para finalizar y aplicar la política de la organización, haz clic en Guardar (Save).

gcloud

Para configurar la política de la organización, ejecuta el siguiente comando:

gcloud org-policies set-policy POLICY_PATH

En el ejemplo anterior, POLICY_PATH es la ruta de acceso completa al archivo JSON de la política de la organización, que debería verse de la siguiente manera:

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess",
  "spec": {
    "rules": [
      {
        "condition": {
          "expression": "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
        },
        "enforce": true
      },
      {
        "enforce": false
      }
    ]
  }
}

Aquí:

  • RESOURCE_TYPE es organizations, folders o projects.

  • RESOURCE_ID es el ID de la organización, el ID de la carpeta, el ID del proyecto o el número del proyecto.

  • ORGANIZATION_ID es la organización superior de tu clave de etiqueta.

Para la política de la organización anterior, se aplicará la restricción gcp.disableSerialPortAccess al recurso y a todos sus recursos secundarios. La política de la organización rechazará cualquier recurso que tenga la etiqueta disableSerialAccess: yes. A los recursos que no tengan la etiqueta disableSerialAccess: yes no se les aplicará la restricción.

Agrega restricciones de forma condicional a la política de la organización

Puedes usar etiquetas para agregar condicionalmente restricciones de la política de la organización a los recursos en función de las etiquetas que hayan adjuntado. Puedes agregar varias condiciones dentro de la misma política de la organización, lo que te brinda un control detallado de los recursos a los que deseas aplicar la política de la organización.

Common Expression Language, o CEL, es el lenguaje de expresión que se usa para especificar expresiones condicionales. Una expresión condicional consta de una o más declaraciones que se unen mediante operadores lógicos (&&, || o !). Para obtener más información, consulta las especificaciones de CEL y su definición de lenguaje.

Considera una política de la organización para restringir las ubicaciones en las que se podrían crear recursos según las etiquetas que se aplican a esos recursos. Para ello, crea una política de la organización que aplique la restricción gcp.resourceLocations y usa condiciones a fin de limitar la aplicación forzosa solo a ciertos recursos.

Para comenzar, crea un archivo temporal, /tmp/policy.yaml, que contenga la política de la organización:

name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
    rules:
    - condition:
        expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-east')"
      values:
        allowedValues:
        - in:us-east1-locations
    - condition:
        expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west')"
      values:
        allowedValues:
        - in:us-west1-locations
    - values:
        deniedValues:
        - in:asia-south1-locations

En el ejemplo anterior, ORGANIZATION_ID es la organización superior de la clave de etiqueta.

En el ejemplo anterior, cualquier recurso que tenga adjunta la etiqueta location: us-east estará restringido a ubicaciones dentro del grupo de valores us-east1-locations. Cualquier recurso que tenga la etiqueta location: us-west adjunta se restringirá a ubicaciones dentro del grupo de valores us-west1-locations. Se bloquearán todos los recursos de la organización en las ubicaciones dentro del grupo de valores asia-south1-locations.

Luego, establece la política con el comando set-policy:

gcloud org-policies set-policy /tmp/policy.yaml

Restringe los recursos sin etiquetar

Puedes usar etiquetas y políticas de la organización condicionales para restringir cualquier recurso que no use una etiqueta en particular. Si configuras una política de la organización en un recurso que restringe los servicios y hace que sea condicional a la presencia de una etiqueta, no se podrán usar recursos secundarios que desciendan de ese recurso, a menos que se hayan etiquetado. De esta manera, los recursos deben configurarse de acuerdo con tu plan de administración antes de que se puedan usar.

Para restringir los recursos de la organización, las carpetas o los proyectos sin etiquetar, puedes usar el operador lógico ! en una consulta condicional cuando crees la política de la organización.

Por ejemplo, para permitir el uso de sqladmin.googleapis.com solo en proyectos que tienen la etiqueta sqladmin=enabled, puedes crear una política de la organización que rechace sqladmin.googleapis.com en proyectos que no tengan la etiqueta sqladmin=enabled.

  1. Crea una etiqueta que identifique si se aplicó una administración adecuada a los recursos. Por ejemplo, puedes crear una etiqueta con la clave sqlAdmin y el valor enabled para designar que este recurso debe permitir el uso de la API de Cloud SQL Admin. Por ejemplo:

    Crea una clave y un valor de etiqueta

  2. Haz clic en el nombre de la etiqueta recién creada. En los próximos pasos, necesitarás el nombre con espacio de nombres de la clave de etiqueta que aparece en Ruta de acceso de la clave de etiqueta para crear una condición.

  3. Crea una política de la organización Restrict Resource Service Usage en el nivel del recurso de la organización para denegar el acceso a la API de Cloud SQL Admin. Por ejemplo:

    Crea una política de la organización para restringir recursos

  4. Agrega una condición a la política de la organización anterior y especifica que la política se aplica de manera forzosa si la etiqueta de administración no está presente. El creador de condiciones no admite el operador lógico NOT, por lo que esta condición debe compilarse en el editor de condiciones. Por ejemplo:

    Compila una política de la organización condicional

    !resource.matchTag("012345678901/sqlAdmin", "enabled")

Ahora, la etiqueta sqlAdmin=enabled debe adjuntarse a un proyecto o heredarla antes de que los desarrolladores puedan usar la API de Cloud SQL Admin con ese proyecto.

Herencia de la política de la organización

Las restricciones de la Lista de políticas de la organización que se habilitan mediante etiquetas se fusionarán con la política de la organización existente, según las reglas de herencia normales. Estas reglas condicionales solo se aplicarán si la condición es verdadera.

Las restricciones booleanas de la política de la organización habilitadas mediante etiquetas anularán la política de la organización existente. Además, debido a que las políticas booleanas solo pueden tener dos estados, verdadero o falso, todas las declaraciones condicionales deben ser lo opuesto a la declaración sin condición para evitar que varias etiquetas entren en conflicto.

Por ejemplo, considera una política de la organización que aplique la restricción disableSerialPortAccess. El valor incondicional, que es el valor que se usa si no hay condiciones que lo anulen, es verdadero. Por lo tanto, cualquier otra declaración condicional para esta política debe establecerse en falso a fin de no entrar en conflicto.

¿Qué sigue?

Para obtener más información sobre cómo usar las etiquetas, lee la página Crea y administra etiquetas.

Para obtener más información sobre cómo crear y administrar restricciones de las políticas de la organización, consulta Usa restricciones.