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 la jerarquía.

Antes de comenzar

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

Para obtener instrucciones detalladas sobre cómo usar etiquetas, consulta Crea y administra etiquetas.

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

Si deseas 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 una etiqueta en particular, lo que requiere que se establezca 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 se aplican cuando se crea o actualiza un recurso. No es posible adjuntar una etiqueta a un recurso antes de su creación, por lo que las políticas de la organización condicionales no pueden evaluar las etiquetas en un recurso a medida que se crea, solo en las etiquetas que se heredan de recursos superiores.

Las etiquetas se evalúan según los recursos de la organización, la carpeta y el proyecto. La mayoría de los recursos por debajo de los proyectos en la jerarquía de recursos no se evalúan por la política de la organización, 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.

Consola

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

  1. Abre la página Políticas de la organización en la consola de Google Cloud.

    Abrir la página de las políticas de la organización

  2. Selecciona el Selector de proyectos en la parte superior de la página.

  3. En el Selector de proyectos, selecciona el proyecto para el que deseas establecer la política de la organización.

  4. 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.

  5. Si deseas personalizar las políticas de la organización para este recurso, haz clic en Editar (Edit).

  6. En la página Editar, selecciona Personalizar (Customize).

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

  8. Haz clic en Agregar regla.

  9. 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.

  10. 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, asigna una descripción a la condición. En la descripción, se proporciona contexto sobre las etiquetas necesarias y cómo afectan a los recursos.

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

      1. Selecciona Etiqueta en el menú desplegable Tipo de condición.

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

      3. Si seleccionaste el operador matches, ingresa el nombre con espacio de nombres de la etiqueta. Si seleccionaste el operador matches ID, ingresa los ID 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 a fin de que requieran todos ellos. 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 a la derecha de los campos de 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 condiciones 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.
  11. 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.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 los recursos pueden acceder a todos los puertos en serie, pero usa una condición para restringir solo el acceso del puerto en serie a los recursos que tengan la etiqueta coincidente.

Consola

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

  1. Abre la página Políticas de la organización en la consola de Google Cloud.

    Abrir la página de las políticas de la organización

  2. Selecciona el Selector de proyectos en la parte superior de la página.

  3. En el Selector de proyectos, selecciona el proyecto para el que deseas establecer la política de la organización.

  4. 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.

  5. Si deseas personalizar las políticas de la organización para este recurso, haz clic en Editar (Edit).

  6. En la página Editar, selecciona Personalizar.

  7. Haz clic en Agregar regla.

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

  9. 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, debes agregar solo una regla incondicional. De lo contrario, no se podrá guardar la política.

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

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

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

      1. Selecciona Etiqueta en el menú desplegable Tipo de condición.

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

      3. Si seleccionaste el operador matches, ingresa el nombre con espacio de nombres de la etiqueta. Si seleccionaste el operador matches ID, ingresa los ID 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 a fin de que requieran todos ellos. 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 a la derecha de los campos de 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 configura si la aplicación forzosa 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 condiciones 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 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, el recurso y todos sus recursos secundarios tendrán la restricción gcp.disableSerialPortAccess aplicada. La política de la organización rechazará cualquier recurso que tenga la etiqueta disableSerialAccess: yes. No se aplicará la restricción a los recursos que no tengan la etiqueta disableSerialAccess: yes.

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

Puedes usar etiquetas para agregar condicionalmente restricciones de políticas 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 que se aplique 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 la especificación 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 aplicadas 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 la etiqueta location: us-east adjunta se restringirá a ubicaciones dentro del grupo de valores us-east1-locations. Cualquier recurso que tenga adjunta la etiqueta location: us-west 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 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 haces condicional a la presencia de una etiqueta, no se podrá usar ningún recurso secundario que descienda de ese recurso, a menos que se los haya etiquetado. De esta manera, los recursos deben configurarse de acuerdo con tu plan de administración antes de que puedan usarse.

Para restringir los recursos de organizaciones, carpetas o proyectos sin etiquetar, puedes usar el operador lógico ! en una consulta condicional cuando creas 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 indicar 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. Necesitas el nombre con espacio de nombres de la clave de etiqueta, que aparece en Ruta de acceso de la clave de etiqueta, en los próximos pasos para crear una condición.

  3. Crea una política de la organización Restringir el uso de servicios de recursos a 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 que especifique que la política se aplica 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, un proyecto debe adjuntar o heredar la etiqueta sqlAdmin=enabled 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 etiquetas, lee la página Crea y administra etiquetas.

Si quieres obtener más información para crear y administrar restricciones de políticas de la organización, consulta Usa restricciones.