Usa las restricciones

En esta guía, se explica cómo crear una política de la organización con una restricción particular. Las restricciones que se usan en estos ejemplos no son restricciones reales, sino muestras generalizadas con fines educativos.

Para obtener más información sobre las restricciones y los problemas que resuelven, consulta la lista de todas las restricciones del servicio de políticas de la organización.

Antes de comenzar

Agrega un administrador de políticas de la organización

Para agregar a un usuario como Administrador de políticas de la organización, debes tener la función de Administrador de la organización. Esta función solo se puede otorgar a nivel de la organización. Debes tener la función de Administrador de políticas de la organización para configurar o cambiar las políticas de la organización.

Console

Para agregar un administrador de políticas de la organización, sigue estos pasos:

  1. Accede a Google Cloud Console como un administrador avanzado de G Suite o Cloud Identity y ve a la página Administrar recursos:

    Ir a la página Administrar de recursos

  2. En la lista desplegable Organización, selecciona tu organización.

  3. En la lista de recursos que aparece, selecciona la casilla de verificación junto al recurso de la organización.

  4. En el Panel de información del lado derecho, en Permisos, haz clic en Agregar miembro.

  5. Ingresa la dirección de correo electrónico del miembro que deseas agregar.

  6. En la lista desplegable Seleccionar una función, selecciona Política de la organización > Administrador de políticas de la organización.

  7. Haz clic en Guardar. Aparecerá un cuadro de diálogo para que confirmes la adición o actualización de la función nueva del miembro.

gcloud

Puedes usar archivos JSON o YAML con los comandos de gcloud. En este ejemplo, se usa JSON.

Para agregar un administrador de políticas de la organización a tu organización, sigue estos pasos:

  1. Obtén la política de Cloud IAM que deseas modificar y escríbela en un archivo JSON:
      gcloud organizations get-iam-policy ORGANIZATION_ID \
         --format json > iam.json
      
  2. El contenido del archivo JSON será similar al siguiente. Ten en cuenta que el campo de la versión es de solo lectura, por lo que no tendrás que proporcionarlo.

  3.    {
           "bindings": [
           {
               "members": [
                 "user:email1@gmail.com"
               ],
               "role": "roles/owner"
           },
           {
               "members": [
                 "serviceAccount:our-project-123@appspot.gserviceaccount.com",
                 "serviceAccount:123456789012-compute@developer.gserviceaccount.com"
               ],
               "role": "roles/editor"
           }
           ],
           "etag": "BwUjMhCsNvY=",
           "version": 1
       }
       
  4. Usa un editor de texto para agregar un objeto nuevo al arreglo de “vinculaciones” que define a los miembros del grupo y la función de esos miembros. Por ejemplo, para otorgarle la función “roles/orgpolicy.policyAdmin” al usuario “email2@gmail.com”, cambia el ejemplo anterior de la siguiente manera:

  5.    {
         "bindings": [
         {
           "members": [
             "user:email1@gmail.com"
           ],
         "role": "roles/owner"
         },
         {
           "members": [
             "serviceAccount:our-project-123@appspot.gserviceaccount.com",
             "serviceAccount:123456789012-compute@developer.gserviceaccount.com"
           ],
           "role": "roles/editor"
         },
         {
           "members": [
             "user:email2@gmail.com"
           ],
           "role": "roles/orgpolicy.policyAdmin"
         }
         ],
         "etag": "BwUjMhCsNvY="
       }
       
  6. Actualiza la política de la organización mediante la ejecución del siguiente comando:

  7.    gcloud organizations set-iam-policy ORGANIZATION_ID iam.json
       
  8. El comando genera la política actualizada:
       bindings:
         - members:
           - user:email1@gmail.com
             role: roles/owner
         - members:
           - serviceAccount:our-project-123@appspot.gserviceaccount.com
           - serviceAccount:123456789012-compute@developer.gserviceaccount.com
             role: roles/editor
         - members:
           - user:email2@gmail.com
             role: roles/orgpolicy.policyAdmin
         etag: BwUjMhXbSPU=
         version: 1
       

Usa restricciones de listas en la política de la organización

Configura la aplicación forzosa en el recurso de la organización

Puedes configurar una política de la organización en el recurso de tu organización que use una restricción de listas para denegar el acceso a un servicio en particular. En el siguiente proceso, se describe cómo configurar una política de la organización mediante la herramienta de línea de comandos de gcloud. Si quieres obtener instrucciones para ver y configurar las políticas de la organización con Cloud Console, consulta cómo crear y administrar las políticas.

  1. Obtén la política actual del recurso de la organización con el comando describe:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --organization ORGANIZATION_ID
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • ORGANIZATION_ID es un identificador único del recurso de la organización.

    • LIST_CONSTRAINT es la restricción de listas del servicio que deseas aplicar de forma forzosa.

    También puedes aplicar la política de la organización a una carpeta o proyecto con las marcas --folder o --project, y con el ID de la carpeta y el ID del proyecto, respectivamente.

    Como no se configuró una política, se muestra una política incompleta, como en el siguiente ejemplo:

    constraint: "constraints/LIST_CONSTRAINT"
    etag: BwVJi0OOESU=
    
  2. Usa el comando deny para agregar el valor denegado del servicio al que deseas restringir el acceso.

    gcloud beta resource-manager org-policies deny \
      LIST_CONSTRAINT VALUE_A \
      --organization ORGANIZATION_ID
    

    La salida del comando se verá de la siguiente forma:

    constraint: constraints/LIST_CONSTRAINT
    etag: BwVJi0OOESU=
    listPolicy:
      deniedValues:
        - VALUE_A
    updateTime: CURRENT_TIME
    
  3. Consulta la política vigente actual con describe --effective.

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    La salida del comando se verá de la siguiente forma:

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      deniedValues:
        - VALUE_A
    

    Debido a que esta política de la organización se estableció a nivel de la organización, todos los recursos secundarios que permiten la herencia la heredarán.

Configura la aplicación forzosa en un subárbol de jerarquías

Las restricciones de listas toman valores definidos de forma explícita para determinar qué recursos deben permitirse o denegarse. Algunas restricciones también pueden admitir valores que usen el prefijo under:, que especifica un subárbol que tiene ese recurso como raíz. El uso del prefijo under: en un valor permitido o denegado hace que la política de la organización actúe sobre ese recurso y sobre todos sus recursos secundarios. Para obtener información acerca de las restricciones que admiten el uso del prefijo under:, consulta la página sobre las restricciones de la política de la organización.

Un valor que usa el prefijo under: se denomina string del subárbol de jerarquías. Una string del subárbol de jerarquías especifica el tipo del recurso al que se aplica. Por ejemplo, si se usa una string del subárbol de projects/PROJECT_ID cuando se configura la restricción constraints/compute.storageResourceUseRestrictions, se permitirá o se denegará el uso del almacenamiento de Compute Engine en el PROJECT_ID y en todos sus recursos secundarios.

Los prefijos del valor del subárbol de jerarquías son una función Beta, pueden cambiar de formas no compatibles con las versiones anteriores y no están sujetos a ningún ANS o política de baja.

  1. Obtén la política actual del recurso de la organización con el comando describe:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --organization ORGANIZATION_ID
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • ORGANIZATION_ID es un identificador único del recurso de la organización.

    • LIST_CONSTRAINT es la restricción de listas del servicio que deseas aplicar de forma forzosa.

    También puedes aplicar la política de la organización a una carpeta o proyecto con las marcas --folder o --project, y con el ID de la carpeta y el ID del proyecto, respectivamente.

    Como no se configuró una política, se muestra una política incompleta, como en el siguiente ejemplo:

    constraint: "constraints/LIST_CONSTRAINT"
    etag: BwVJi0OOESU=
    
  2. Usa el comando deny para agregar el valor denegado del servicio al que deseas restringir el acceso. El prefijo under: establece la restricción para denegar el recurso nombrado y todos sus recursos secundarios.

    gcloud beta resource-manager org-policies deny \
      LIST_CONSTRAINT under:folders/VALUE_A \
      --organization ORGANIZATION_ID
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • under: es un prefijo que indica que lo que sigue es una string de subárbol.

    • folders/VALUE_A es el ID de la carpeta del recurso raíz que deseas denegar. Este recurso y todos sus recursos secundarios en la jerarquía de recursos serán denegados.

    • VALUE_B y VALUE_C son proyectos que existen en la jerarquía y tienen a VALOR_A como superior.

    El resultado del comando de denegación será el siguiente:

    constraint: constraints/LIST_CONSTRAINT
    etag: BwVJi0OOESU=
    listPolicy:
      deniedValues:
        - under:folders/VALUE_A
    updateTime: CURRENT_TIME
    

    También puedes aplicar el prefijo under: a organizaciones y proyectos, como en los siguientes ejemplos:

    • under:organizations/VALUE_X

    • under:projects/VALUE_Y

  3. Consulta la política vigente actual con describe --effective.

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    La salida del comando se verá de la siguiente forma:

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      deniedValues:
        - under:folders/VALUE_A
    

    La política ahora realiza una evaluación para denegar la carpeta VALUE_A y todos sus recursos secundarios, en este caso VALUE_B y VALUE_C.

Combina la política de la organización en un proyecto.

Puedes configurar una política de la organización personalizada en un recurso, que se combinará con cualquier política heredada de su recurso superior. Esta política combinada se evaluará para crear una nueva política vigente basada en las reglas de herencia.

  1. Obtén la política actual del recurso con el comando describe:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --project PROJECT_ID
    

    En el ejemplo anterior, se ilustra lo siguiente:

    • PROJECT_ID es el identificador único de tu proyecto.

    • LIST_CONSTRAINT es la restricción de listas del servicio que deseas aplicar de forma forzosa.

    Como no se configuró una política, se muestra una política incompleta, como en el siguiente ejemplo:

    constraint: "constraints/LIST_CONSTRAINT"
    etag: BwVJi0OOESU=
    
  2. Puedes mostrar la política vigente actual con el comando describe --effective:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
       --project PROJECT_ID
    

    El resultado del comando incluirá un valor denegado que hereda del recurso de la organización:

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      deniedValues:
        - VALUE_A
    
  3. Configura la política en el proyecto con el comando set-policy.

    1. Crea un archivo temporal /tmp/policy.yaml para almacenar la política:

       constraint: constraints/LIST_CONSTRAINT
       listPolicy:
         deniedValues:
           - VALUE_B
           - VALUE_C
         inheritFromParent: true
       

    2. Ejecuta el comando set-policy:

       gcloud beta resource-manager org-policies set-policy 
      --project PROJECT_ID /tmp/policy.yaml

    3. La salida del comando se verá de la siguiente forma:

       constraint: constraints/LIST_CONSTRAINT
       etag: BwVLO2timxY=
       listPolicy:
         deniedValues:
           - VALUE_B
           - VALUE_C
         inheritFromParent: true
       

  4. Vuelve a usar el comando describe --effective para mostrar la política actualizada:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --project PROJECT_ID
    

    La salida del comando incluirá el resultado vigente de la combinación de la política del recurso y el superior:

    constraint: constraints/LIST_CONSTRAINT
      listPolicy:
        deniedValues:
          - VALUE_A
          - VALUE_B
          - VALUE_C
    

Restablece el comportamiento predeterminado de la restricción

Puedes usar el valor restoreDefault en una política de la organización a fin de restablecer la política para que use el comportamiento predeterminado de la restricción. En el siguiente ejemplo, se supone que el comportamiento predeterminado de la restricción es admitir todos los valores.

  1. Obtén la política vigente del proyecto para mostrar la política combinada actual:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --project PROJECT_ID
    

    En este comando, PROJECT_ID es el identificador único de tu proyecto. La salida del comando se verá de la siguiente forma:

    constraint: constraints/LIST_CONSTRAINT
      listPolicy:
        deniedValues:
          - VALUE_A
          - VALUE_B
          - VALUE_C
    
  2. Configura la política en el proyecto con el comando set-policy.

    1. Crea un archivo temporal /tmp/restore-policy.yaml para almacenar la política:

       restoreDefault: {}
       constraint: constraints/LIST_CONSTRAINT
       

    2. Ejecuta el comando set-policy:

       gcloud beta resource-manager org-policies set-policy 
      --project PROJECT_ID /tmp/restore-policy.yaml

    3. La salida del comando se verá de la siguiente forma:

       constraint: constraints/LIST_CONSTRAINT
       etag: BwVJi9D3VLY=
       restoreDefault: {}
       

  3. Obtén la política vigente para verificar el comportamiento predeterminado:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --project PROJECT_ID
    

    La salida del comando admitirá todos los valores:

    Constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

Borra una política de la organización

Puedes borrar una política de la organización de un recurso. Un recurso sin un conjunto de políticas de la organización heredará cualquier política de su recurso superior. Si borras la política de la organización en el recurso de la organización, la política vigente será el comportamiento predeterminado de la restricción.

En los siguientes pasos, se describe cómo borrar una política en una organización:

  1. Borra la política en el recurso de la organización con el comando delete:

    gcloud beta resource-manager org-policies delete \
      LIST_CONSTRAINT --organization ORGANIZATION_ID
    

    En este comando, ORGANIZATION_ID es el identificador único del recurso de la organización. La salida del comando se verá de la siguiente forma:

    Deleted [<Empty>].
    
  2. Obtén la política vigente de la organización para verificar que no se aplique de forma forzosa:

    gcloud beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    La salida del comando se verá de la siguiente forma:

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

En los siguientes pasos, se describe cómo borrar una política de la organización en un proyecto:

  1. Borra la política de un proyecto con el comando delete:

    gcloud beta resource-manager org-policies delete \
      LIST_CONSTRAINT --project PROJECT_ID
    

    En este comando, PROJECT_ID es el identificador único de tu proyecto. La salida del comando se verá de la siguiente forma:

    Deleted [<Empty>].
    
  2. Obtén la política vigente del proyecto para verificar que no se aplique de forma forzosa:

    gcloud beta resource-manager org-policies describe \
      --effective \
      LIST_CONSTRAINT --project PROJECT_ID
    

    La salida del comando se verá de la siguiente forma:

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

Usa restricciones booleanas en la política de la organización

Configura la aplicación forzosa en el recurso de la organización

Puedes configurar una política de la organización en el recurso de tu organización para aplicar de forma forzosa una restricción booleana. En el siguiente proceso, se describe cómo configurar una política de la organización mediante la herramienta de línea de comandos de gcloud. Si quieres obtener instrucciones para ver y configurar las políticas de la organización con Cloud Console, consulta cómo crear y administrar las políticas.

  1. Obtén la política actual del recurso de la organización mediante el comando describe:

    gcloud beta resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    En este comando, ORGANIZATION_ID es el identificador único del recurso de la organización. También puedes aplicar la política de la organización en una carpeta o un proyecto con las marcas --folder o --project, y con el ID de la carpeta y el ID del proyecto, respectivamente.

    Como no se configuró una política, se muestra una política incompleta, como en el siguiente ejemplo:

    booleanPolicy: {}
    constraint: "constraints/BOOLEAN_CONSTRAINT"
    
  2. Configura la política para que se aplique de forma forzosa en la organización mediante el comando enable-enforce:

    gcloud beta resource-manager org-policies enable-enforce \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    La salida del comando se verá de la siguiente forma:

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    etag: BwVJitxdiwY=
    
  3. Consulta la política vigente actual con describe --effective:

    gcloud beta resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    La salida del comando se verá de la siguiente forma:

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    

Anula la política de la organización de un proyecto

Para anular la política de la organización de un proyecto, configura una política que inhabilite la aplicación forzosa de la restricción booleana en todos los recursos de la jerarquía del proyecto.

  1. Obtén la política actual del recurso para demostrar que está vacío.

    gcloud beta resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    En este comando, PROJECT_ID es el identificador único de tu proyecto. La salida del comando se verá de la siguiente forma:

    booleanPolicy: {}
    constraint: "constraints/BOOLEAN_CONSTRAINT"
    
  2. Obtén la política vigente del proyecto, que confirma que la restricción se aplica de forma forzosa en este proyecto.

    gcloud beta resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --project PROJECT_ID
    

    La salida del comando se verá de la siguiente forma:

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    
  3. Configura la política en el proyecto para que no aplique de forma forzosa la restricción mediante el comando disable-enforce:

    gcloud beta resource-manager org-policies disable-enforce \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    La salida del comando se verá de la siguiente forma:

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    etag: BwVJivdnXvM=
    
  4. Obtén la política vigente para demostrar que ya no se aplica de forma forzosa en el proyecto.

    gcloud beta resource-manager org-policies describe \
      --effective \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    La salida del comando se verá de la siguiente forma:

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    

Borra una política de la organización

Puedes borrar una política de la organización de un recurso. Un recurso sin un conjunto de políticas de la organización heredará cualquier política de su recurso superior. Si borras la política de la organización en el recurso de la organización, la política vigente será el comportamiento predeterminado de las restricciones.

En los siguientes pasos, se describe cómo borrar una política de la organización en una organización y en un proyecto:

  1. Borra la política del recurso de la organización con el comando delete:

    gcloud beta resource-manager org-policies delete \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    En este comando, ORGANIZATION_ID es un identificador único del recurso de la organización. La salida del comando se verá de la siguiente forma:

    Deleted [<Empty>].
    
  2. Obtén la política vigente de la organización para verificar que no se aplique de forma forzosa:

    gcloud beta resource-manager org-policies describe \
      --effective \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    La salida del comando se verá de la siguiente forma:

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    
  3. Borra la política de la organización del proyecto con el comando delete:

    gcloud beta resource-manager org-policies delete \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    La salida del comando se verá de la siguiente forma:

    Deleted [<Empty>].
    
  4. Obtén la política vigente del proyecto para verificar que no se aplique de forma forzosa:

    gcloud beta resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --project PROJECT_ID
    

    En este comando, PROJECT_ID es el identificador único de tu proyecto. La salida del comando se verá de la siguiente forma:

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT