Realizar cambios en bloque en los perímetros de servicio

Con Administrador de contextos de acceso, puedes hacer cambios en bloque en los recursos que pertenecen a la política de acceso de tu organización, como los niveles de acceso y los perímetros de servicio. Los cambios en los recursos solo se aplican si todas las partes de la operación en bloque se completan correctamente.

En este tema solo se describe la sustitución en bloque de perímetros de servicio. Para obtener más información sobre la sustitución masiva de niveles de acceso, consulta la documentación de Access Context Manager.

Obtener una lista de perímetros de servicio

Como las operaciones masivas afectan a todos los perímetros de servicio de tu organización, puedes obtener una lista completa de tus perímetros. También puedes dar formato YAML a esta lista y usarla para hacer cambios en bloque en tus perímetros.

Para obtener una lista con formato de los perímetros de servicio, consulta Mostrar perímetros de servicio (con formato).

Cuando se anulan todas las configuraciones de perímetros de servicio con el comando replace-all, no se deben definir los campos etag en los perímetros. Es probable que las etiquetas Etag cambien entre la obtención y la actualización de los perímetros, lo que provoca que el comando replace-all devuelva un error de falta de coincidencia de etiquetas Etag. Sin embargo, puedes definir un etag para toda la solicitud replace-all con el parámetro --etag de nivel superior si quieres aplicar la comprobación de etag.

En lugar de quitar manualmente cada una de las propiedades etag de los perímetros, puede obtener los perímetros sin propiedades etag especificando un --format con todos los campos excepto etag.

gcloud access-context-manager perimeters list \
  --policy=POLICY_NAME \
  --format="json(name,title,description,perimeterType,status,spec,useExplicitDryRunSpec)"

Reemplazar perímetros de servicio en bloque

En la siguiente sección se explica cómo sustituir en bloque tus perímetros de servicio.

gcloud

Para sustituir en bloque todos los perímetros de servicio, usa el comando replace-all.

gcloud access-context-manager perimeters replace-all POLICY_NAME \
  --source-file=FILE \
  --etag=ETAG \

Donde:

  • POLICY_NAME es el nombre de la política de acceso de tu organización. Este valor solo es obligatorio si no has definido una política de acceso predeterminada.

  • FILE es el nombre de un archivo .yaml que define los nuevos ajustes de los perímetros de servicio.

    Por ejemplo:

    - name: accessPolicies/11271009391/servicePerimeters/storage_perimeter
      title: Storage Perimeter
      description: Perimeter to protect Storage resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - storage.googleapis.com
    - name: accessPolicies/11271009391/servicePerimeters/bigquery_perimeter
      title: BigQuery Perimeter
      description: Perimeter to protect BigQuery resources.
      perimeterType: PERIMETER_TYPE_REGULAR
      status:
        restrictedServices:
        - bigquery.googleapis.com
    

    Para obtener más información sobre el formato del archivo YAML, consulta la estructura JSON del objeto ServicePerimeterConfig de Administrador de contextos de acceso.

  • ETAG (opcional) es una cadena que representa la versión de destino de la política de acceso de tu organización. Si no incluye un etag, la operación en bloque se dirigirá a la versión más reciente de la política de acceso de su organización.

    Para obtener el último etag de tu política de acceso, consulta tus listpolíticas de acceso.

API

Para reemplazar en bloque todos los perímetros de servicio, llama a servicePerimeters.replaceAll.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters.replaceAll?alt=json

Donde:

  • 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 una lista de objetos ServicePerimeterConfig que especifiquen los cambios que quieras hacer.

De forma opcional, para orientar la segmentación a una versión específica de la política de acceso de tu organización, puedes incluir un etag. Si no incluye una etag, la operación masiva se dirigirá a la versión más reciente de la política de acceso de su organización.

Por ejemplo:

{
  "servicePerimeters": [
    object (ServicePerimeterConfig),
    object (ServicePerimeterConfig),
    ...
  ]
  "etag": string
}

Cuerpo de la respuesta

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

Respuesta de ejemplo:

{
  "name": "operations/accessPolicies/11271009391/replacePerimeters/1583523447707087",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceServicePerimetersResponse",
    "servicePerimeters": [
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "Storage Perimeter",
        "description": "Perimeter to protect Storage resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/corpnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/servicePerimeters/storage_perimeter",
        "title": "BigQuery Perimeter",
        "description": "Perimeter to protect BigQuery resources.",
        "status": {
          "accessLevels": [
            "accessPolicies/11271009391/accessLevels/prodnet_access"
          ],
          "restrictedServices": [
            "bigtable.googleapis.com"
          ]
        }
      }
    ]
  }
}