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 tus recursos solo se aplican si todas las partes de la operación en bloque se completan correctamente. Por ejemplo, si tu operación masiva intenta eliminar un nivel de acceso que está en uso en un perímetro de servicio, se produce un error. Como se ha producido un error, toda la operación falla y no se actualiza ningún recurso.
En este tema solo se describe la sustitución en bloque de niveles de acceso. Para obtener más información sobre la sustitución masiva de perímetros de servicio, consulta la documentación de Controles de Servicio de VPC.
Antes de empezar
Como las operaciones en bloque afectan a todos los niveles de acceso de tu organización, puede que quieras obtener una lista completa de ellos. La lista se puede formatear como YAML, lo que también puede facilitar los cambios en bloque de tus niveles de acceso.
Para obtener una lista con formato de los niveles de acceso, consulta List access levels (formatted) (Lista de niveles de acceso [con formato]).
Reemplazar niveles de acceso en bloque
En la siguiente sección se explica cómo sustituir de forma masiva los niveles de acceso.
gcloud
Para sustituir 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]
Donde:
FILE es el nombre de un archivo .yaml que define las nuevas condiciones de tus niveles de acceso.
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 ver más ejemplos de la estructura YAML de las condiciones, consulta el archivo YAML de ejemplo.
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,
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 obligatorio si no has definido una política de acceso predeterminada.
API
Para sustituir en bloque todos los niveles de acceso, llama a accessLevels.replaceAll
.
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels.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 AccessLevel
que especifiquen los cambios que quiere 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:
{ "accessLevels": [ object (AccessLevel), object (AccessLevel), ... ] "etag": string }
Cuerpo de la respuesta
Si la llamada se realiza 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/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"
]
}
]
}
}
]
}
}