Realizar cambios masivos en los niveles de acceso

Con Access Context Manager, puedes realizar actualizaciones masivas 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 tus recursos se aplican solo si todas las partes de la operación masiva son exitosas. Por ejemplo, si tu operación masiva intenta quitar un nivel de acceso que esté en uso por un perímetro de servicio, se generará un error. Debido a que se encuentra un error, la operación completa falla y no se actualizan los recursos.

En este tema, solo se describe el reemplazo masivo de los niveles de acceso. Para obtener más información sobre el reemplazo masivo de perímetros de servicio, consulta la documentación de Controles del servicio de VPC.

Antes de comenzar

Debido a que las operaciones masivas afectan a todos los niveles de acceso de tu organización, es posible que quieras obtener una lista completa de tus niveles de acceso. La lista puede tener el formato YAML, lo que también puede realizar cambios masivos en tus niveles de acceso con más facilidad.

Para obtener una lista con formato de niveles de acceso, consulta Niveles de acceso de listas (con formato).

Reemplazar los niveles de acceso de forma masiva

La siguiente sección detalla cómo reemplazar de forma masiva tus niveles de acceso.

gcloud

Para reemplazar de forma masiva todos los niveles de acceso, usa el comando replace-all.

gcloud access-context-manager levels replace-all \
  --source-file=FILE \
  --etag=ETAG \
  [--policy=POLICY_NAME]

Aquí:

  • FILE es el nombre de un archivo .yaml que define las condiciones nuevas para tus niveles de acceso existentes.

    Por ejemplo:

    - name: accessPolicies/11271009391/accessLevels/corpnet_access
      title: Corpnet Access
      description: Permit access to corpnet.
      basic:
        combiningFunction: AND
        conditions:
          - ipSubnetworks:
            - 252.0.2.0/24
            - 2001:db8::/32
    - name: accessPolicies/11271009391/accessLevels/prodnet_access
      title: Prodnet Access
      description: Permit access to prodnet.
      basic:
        combiningFunction: OR
        conditions:
          - members:
            - user:exampleuser@example.com
            - serviceAccount:exampleaccount@example.iam.gserviceaccount.com
          - ipSubnetworks:
            - 176.0.2.0/24
    

    Para obtener más ejemplos de la estructura de condiciones YAML, consulta el archivo YAML de ejemplo.

  • ETAG (opcional) es una string que representa la versión de destino de la política de acceso de tu organización. Si no incluyes una ETag, la operación masiva se dirige a la última versión de la política de acceso de tu organización.

    Para obtener la última etiqueta de política de acceso, list tus políticas de acceso.

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

API

Para reemplazar de forma masiva todos los niveles de acceso, llama a accessLevels.replaceAll.

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

Aquí:

  • 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 AccessLevel que especifiquen los cambios que deseas hacer.

De manera opcional, para incluir una versión específica de la política de acceso de tu organización, puedes incluir una ETag. Si no incluyes una ETag, la operación masiva se dirige a la última versión de la política de acceso de tu organización.

Por ejemplo:

{
  "accessLevels": [
    object (AccessLevel),
    object (AccessLevel),
    ...
  ]
  "etag": string
}

Cuerpo de la respuesta

Si se realiza de forma correcta, el cuerpo de la respuesta para la llamada contiene un recurso Operation que proporciona detalles sobre lo posterior a la operación.

Ejemplo de respuesta:

{
  "name": "operations/accessPolicies/11271009391/replaceLevels/1583523446234255",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.ReplaceAccessLevelsResponse",
    "accessLevels": [
      {
        "name": "accessPolicies/11271009391/accessLevels/corpnet_access",
        "title": "Corpnet access",
        "description": "Permit access to corpnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "252.0.2.0/24"
              ]
            }
          ]
        }
      },
      {
        "name": "accessPolicies/11271009391/accessLevels/prodnet_access",
        "title": "Prodnet access",
        "description": "Permit access to prodnet.",
        "basic": {
          "conditions": [
            {
              "ipSubnetworks": [
                "176.0.2.0/24"
              ]
            }
          ]
        }
      }
    ]
  }
}