Realizar cambios masivos en los niveles de acceso

Mediante Access Context Manager, puedes realizar actualizaciones en forma masiva 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 de carga masiva son exitosas. Por ejemplo, si tu operación masiva intenta quitar un nivel de acceso que utiliza un perímetro de servicio, se genera 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 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 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).

Reemplazo masivo de los niveles de acceso

En la siguiente sección, se 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 de YAML, consulta el archivo YAML de ejemplo.

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

    Para obtener la última ETag de la 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 solo es necesario 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 realizar.

De manera opcional, puedes incluir una ETag para que apunte a una versión específica de la política de acceso de tu organización. Si no incluyes una ETag, la operación masiva apunta 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 de la llamada contendrá un recurso Operation que proporciona detalles sobre lo posterior a la operación.

Respuesta de ejemplo:

{
  "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"
              ]
            }
          ]
        }
      }
    ]
  }
}