Con 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 masiva se realizan de forma correcta.
En este tema, solo se describe el reemplazo masivo de perímetros de servicio. Para obtener más información sobre el reemplazo masivo de niveles de acceso, consulta la documentación de Access Context Manager.
Obtén una lista de perímetros de servicio
Debido a que las operaciones masivas afectan a todos los perímetros de servicio de tu organización, puedes obtener una lista completa de los perímetros. También puedes darle formato a esta lista como YAML y usarla para realizar cambios masivos en tus perímetros.
Para obtener una lista con formato de los perímetros de servicio, consulta Enumera los perímetros de servicio (con formato).
Cuando anulas todos los parámetros de configuración del perímetro de servicio con el comando
replace-all, no debes establecer los campos etag en ellos. Es probable que los ETag
cambien entre la recuperación y la actualización de los perímetros, lo que provoca que el
comando replace-all muestre un error de discrepancia de ETag. Sin embargo, si deseas aplicar la verificación de ETag, puedes
establecer un etag para toda la solicitud de replace-all con el parámetro --etag
de nivel superior.
En lugar de quitar de forma manual cada una de las propiedades de etag en los
perímetros, puedes recuperarlos 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)"
Reemplaza perímetros de servicio de forma masiva
En la siguiente sección, se detalla cómo reemplazar de forma masiva tus perímetros de servicio.
gcloud
Para reemplazar de forma masiva 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 \
Aquí:
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.
FILE es el nombre de un archivo .yaml que define la nueva configuración para tus perímetros de servicio existentes.
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.comPara obtener más información sobre el formato del archivo YAML, consulta la estructura JSON del objeto
ServicePerimeterConfigde Access Context Manager.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,
listtus políticas de acceso.
API
Para reemplazar de forma masiva todos los perímetros de servicio, llama a servicePerimeters.replaceAll.
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters.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 ServicePerimeterConfig 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:
{ "servicePerimeters": [ object (ServicePerimeterConfig), object (ServicePerimeterConfig), ... ] "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/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"
]
}
}
]
}
}