Puedes usar vinculaciones de acceso para controlar a qué aplicaciones y recursos pueden acceder tus grupos de usuarios. Una vinculación de acceso especifica cómo aplicar niveles de acceso y controles de sesión a un grupo de usuarios. Puedes aplicar el mismo nivel de acceso y control de sesión a todas las aplicaciones, o bien definir comportamientos específicos para aplicaciones individuales.
Para asegurarte de que todo esté configurado correctamente, puedes probar tus políticas antes de aplicarlas.
Cuando trabajes con vinculaciones de acceso, ten en cuenta el siguiente comportamiento:
- Un grupo de usuarios solo puede tener una vinculación de acceso.
- Si un usuario pertenece a varios grupos, se le otorga acceso si alguna política lo permite (
OR
, noAND
). - En el caso de los controles de sesión, solo se aplica la vinculación de acceso creada más recientemente.
Usa una sola configuración para todas las aplicaciones
Este método aplica el mismo nivel de acceso y control de sesión a todas las aplicaciones a las que accede un grupo de usuarios.
Te recomendamos que pruebes tu política con una ejecución de prueba o que la apliques a un grupo de prueba pequeño antes de implementarla en producción.
gcloud
Crea la vinculación de acceso.
gcloud access-context-manager cloud-bindings create \ --group-key GROUP_ID --organization ORG_ID --level DEFAULT_ACCESS_LEVEL [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]
Reemplaza lo siguiente:
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
get
en el recurso del grupo. - ORG_ID: Es el ID de tu organización.
-
DEFAULT_ACCESS_LEVEL: Es el nombre opcional del nivel de acceso, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. ReemplazaPOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. -
DEFAULT_SESSION_LENGTH: Es la duración opcional de la sesión con el formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. -
DEFAULT_SESSION_REAUTH_METHOD: Es el método opcional para desafiar a los usuarios a volver a verificar su identidad, que debe ser uno de los siguientes:
LOGIN
: Aplica el acceso estándar, que puede incluir la MFA o cualquier otro factor definido por Workspace.PASSWORD
: Solo requiere una contraseña, incluso si se definen otros factores. Si las contraseñas se administran con un IdP externo, los usuarios se redireccionan al IdP. Si la sesión del IdP está activa, se vuelve a autenticar a los usuarios de forma implícita. Si el IdP no está activo, los usuarios deben acceder a través de él.SECURITY_KEY
: Exige una llave de seguridad física.
API
Crea un cuerpo JSON:
{ "groupKey": "GROUP_ID", "accessLevels": [ "DEFAULT_ACCESS_LEVEL" ], // optional: "sessionSettings": { "sessionLength": "DEFAULT_SESSION_LENGTH", "sessionReauthMethod": "DEFAULT_SESSION_REAUTH_METHOD" } }
Reemplaza lo siguiente:
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
get
en el recurso del grupo. -
DEFAULT_ACCESS_LEVEL: Es el nombre opcional del nivel de acceso, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. ReemplazaPOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. -
DEFAULT_SESSION_LENGTH: Es la duración opcional de la sesión con el formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. -
DEFAULT_SESSION_REAUTH_METHOD: Es el método opcional para desafiar a los usuarios a volver a verificar su identidad, que debe ser uno de los siguientes:
LOGIN
: Aplica el acceso estándar, que puede incluir la MFA o cualquier otro factor definido por Workspace.PASSWORD
: Solo requiere una contraseña, incluso si se definen otros factores. Si las contraseñas se administran con un IdP externo, los usuarios se redireccionan al IdP. Si la sesión del IdP está activa, se vuelve a autenticar a los usuarios de forma implícita. Si el IdP no está activo, los usuarios deben acceder a través de él.SECURITY_KEY
: Exige una llave de seguridad física.
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
Envía la solicitud POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID es el ID de la organización que usaste para crear el rol de administrador de vinculación de acceso a la nube. Si no se configuró la propiedad
access-context-manager/organization
, reemplazaORG_ID
en la marca opcional--organization
por el ID de la organización que usaste cuando creaste el rol de administrador de vinculación de acceso a la nube.
Si se realiza correctamente, deberías recibir una representación del objeto JSON. Si hay un problema, recibirás un mensaje de error.
Define configuraciones para aplicaciones específicas
Este método te permite aplicar diferentes niveles de acceso y controles de sesión a distintas aplicaciones. También puedes establecer reglas predeterminadas para las aplicaciones que no tienen configuraciones específicas. Este método es útil cuando quieres hacer lo siguiente:
- Aplicar políticas solo a ciertas aplicaciones
Crear una política general, pero excluir algunas aplicaciones de ella
gcloud
Crea un archivo de vinculación en formato YAML con una lista de entradas de alcance dentro de la lista
scopedAccessSettings
. Para cada aplicación que quieras asignar a un nivel de acceso específico, incluye una entradaclientScope
.scopedAccessSettings: - scope: clientScope: restrictedClientApplication: clientId: CLIENT_ID activeSettings: accessLevels: - ACCESS_LEVEL_A sessionSettings: - sessionLength: SESSION_LENGTH sessionReauthMethod: SESSION_REAUTH_METHOD sessionLengthEnabled: true - scope: clientScope: restrictedClientApplication: # # because this app is specified by `name`, # it won't work with sessionSettings. # # if you add sessionSettings, make sure to # replace the `name` key with `clientId`, # and use the OAuth client ID as the value. # name: CLIENT_NAME activeSettings: accessLevels: - ACCESS_LEVEL_B
Reemplaza lo siguiente:
- CLIENT_ID: El ID de cliente de OAuth. Debes usar
clientId
cuando una aplicación contienesessionSettings
. - ACCESS_LEVEL_A: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: Es la duración de la sesión con el formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. SESSION_REAUTH_METHOD: Es el método opcional para desafiar a los usuarios a volver a verificar su identidad, que debe ser uno de los siguientes:
LOGIN
: Aplica el acceso estándar, que puede incluir la MFA o cualquier otro factor definido por Workspace.PASSWORD
: Solo requiere una contraseña, incluso si se definen otros factores. Si las contraseñas se administran con un IdP externo, los usuarios se redireccionan al IdP. Si la sesión del IdP está activa, los usuarios se reautenticen de forma implícita. Si el IdP no está activo, los usuarios deben acceder a través del IdP.SECURITY_KEY
: Exige una llave de seguridad física.
CLIENT_NAME: El nombre del cliente. Si la aplicación contiene
sessionSettings
, no puedes usar el nombre del cliente. En su lugar, usa el ID de cliente de OAuth.ACCESS_LEVEL_B: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Para establecer un nivel de acceso predeterminado para las aplicaciones que no se definen en el archivo YAML, usa el argumento
--level
. El archivo YAML solo admite parámetros de configuración específicos de la aplicación (scopedAccessSettings
).- CLIENT_ID: El ID de cliente de OAuth. Debes usar
Crea la vinculación de acceso.
gcloud access-context-manager cloud-bindings create --organization ORG_ID --group-key GROUP_ID --binding-file BINDING_FILE_PATH [ --level DEFAULT_ACCESS_LEVEL ] [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]
Reemplaza lo siguiente:
- ORG_ID: Es el ID de tu organización.
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
get
en el recurso del grupo. -
BINDING_FILE_PATH: Es la ruta de acceso al archivo YAML que contiene el esquema de vinculación de acceso.
El archivo de vinculación solo admite
scopedAccessSettings
. -
DEFAULT_ACCESS_LEVEL: Es el nombre opcional del nivel de acceso, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. ReemplazaPOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. -
DEFAULT_SESSION_LENGTH: Es la duración opcional de la sesión con el formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. -
DEFAULT_SESSION_REAUTH_METHOD: Es el método opcional para desafiar a los usuarios a volver a verificar su identidad, que debe ser uno de los siguientes:
LOGIN
: Aplica el acceso estándar, que puede incluir la MFA o cualquier otro factor definido por Workspace.PASSWORD
: Solo requiere una contraseña, incluso si se definen otros factores. Si las contraseñas se administran con un IdP externo, los usuarios se redireccionan al IdP. Si la sesión del IdP está activa, se vuelve a autenticar a los usuarios de forma implícita. Si el IdP no está activo, los usuarios deben acceder a través de él.SECURITY_KEY
: Exige una llave de seguridad física.
Cómo funcionan juntos los argumentos --level
y --binding-file
- Si solo usas
--binding-file
, solo las aplicaciones del archivo tendrán aplicadas las políticas. - Si solo usas
--level
, el nivel de acceso se aplica a todas las aplicaciones. - Si usas ambos, las reglas del archivo YAML tienen prioridad. El valor
--level
se aplica a todas las aplicaciones que no aparecen en el archivo.
Cómo trabajar con controles de sesión
- Para establecer controles de sesión predeterminados para todas las aplicaciones, usa
--session-length
y--session-reauth-method
. - Si también defines controles de sesión en el archivo YAML, esos controles de sesión anula la configuración predeterminada de esas aplicaciones específicas.
- Debes usar
--session-length
y--session-reauth-method
juntos.
API
Crea un cuerpo JSON:
{
"groupKey": "GROUP_ID",
//
// Optional; if specified, all applications that aren't defined in
// scopedAccessSettings have these access levels applied.
//
// If more than one access level is specified, the user is
// granted access if any one resolves to TRUE (OR logic, not AND).
//
// If you omit this key entirely, then no policy enforcement is
// applied by default.
//
"accessLevels": [
"DEFAULT_ACCESS_LEVEL"
],
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"clientId": "CLIENT_ID"
}
}
},
"activeSettings": {
"accessLevels": [
"ACCESS_LEVEL_A"
],
"sessionSettings": [
{
"sessionLength": "SESSION_LENGTH",
"sessionReauthMethod": "SESSION_REAUTH_METHOD",
"sessionLengthEnabled": true
}
]
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "CLIENT_NAME"
}
},
"activeSettings": {
"accessLevels": [
"ACCESS_LEVEL_B"
]
}
}
}
]
}
Reemplaza lo siguiente:
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
get
en el recurso del grupo. -
DEFAULT_ACCESS_LEVEL: Es el nombre opcional del nivel de acceso, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. ReemplazaPOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. - CLIENT_ID: El ID de cliente de OAuth. Debes usar
clientId
cuando una aplicación contienesessionSettings
. - ACCESS_LEVEL_A: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: Es la duración de la sesión con el formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. SESSION_REAUTH_METHOD: Es el método opcional para desafiar a los usuarios a volver a verificar su identidad, que debe ser uno de los siguientes:
LOGIN
: Aplica el acceso estándar, que puede incluir la MFA o cualquier otro factor definido por Workspace.PASSWORD
: Solo requiere una contraseña, incluso si se definen otros factores. Si las contraseñas se administran con un IdP externo, los usuarios se redireccionan al IdP. Si la sesión del IdP está activa, los usuarios se reautenticen de forma implícita. Si el IdP no está activo, los usuarios deben acceder a través del IdP.SECURITY_KEY
: Exige una llave de seguridad física.
CLIENT_NAME: El nombre del cliente. Si la aplicación contiene
sessionSettings
, no puedes usar el nombre del cliente. En su lugar, usa el ID de cliente de OAuth.ACCESS_LEVEL_B: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Envía la solicitud POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID es el ID de la organización que usaste para crear el rol de Administrador de vinculación de acceso a la nube. Si no se configuró la propiedad access-context-manager/organization
, reemplaza ORG_ID
en la marca opcional --organization
por el ID de la organización que usaste cuando creaste el rol de administrador de vinculación de acceso a la nube.
Si se realiza correctamente, deberías recibir una representación del objeto JSON o un mensaje de error si hubo un problema.
Usa niveles de acceso de ejecución de prueba para simular la aplicación forzosa
Los niveles de acceso de la ejecución de prueba te permiten probar tus políticas de acceso sin aplicarlas. Esto te ayuda a comprender el impacto de una política antes de que se publique. Puedes ver los registros de la ejecución de prueba para ver qué sucedería si la política estuviera activa.
Solo se pueden usar los niveles de acceso en el modo de ejecución de prueba. Los controles de sesión no están disponibles en el modo de ejecución de prueba.
Crea una vinculación de ejecución de prueba
Puedes definir niveles de acceso de prueba junto con niveles de acceso normales en la misma vinculación, o bien puedes usar vinculaciones separadas para las pruebas.
gcloud
Configura la configuración de acceso.
scopedAccessSettings: - scope: clientScope: restrictedClientApplication: name: CLIENT_NAME activeSettings: accessLevels: - ACCESS_LEVEL_A dryRunSettings: accessLevels: - DRY_RUN_ACCESS_LEVEL_1 - scope: clientScope: restrictedClientApplication: clientId: CLIENT_ID dryRunSettings: accessLevels: - DRY_RUN_ACCESS_LEVEL_2
Reemplaza lo siguiente:
- CLIENT_NAME: El nombre del cliente. Si la aplicación contiene
sessionSettings
, no puedes usar el nombre del cliente. En su lugar, usa el ID de cliente de OAuth. - ACCESS_LEVEL_A: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_ID: El ID de cliente de OAuth. Debes usar
clientId
cuando una aplicación contienesessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
- CLIENT_NAME: El nombre del cliente. Si la aplicación contiene
Crea la vinculación de acceso.
gcloud access-context-manager cloud-bindings create --organization ORG_ID --group-key GROUP_ID --binding-file BINDING_FILE_PATH --dry-run-level DEFAULT_DRY_RUN_ACCESS_LEVEL
Reemplaza lo siguiente:
- ORG_ID: Es el ID de tu organización.
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
get
en el recurso del grupo. -
BINDING_FILE_PATH: Es la ruta de acceso al archivo YAML que contiene el esquema de vinculación de acceso.
El archivo de vinculación solo admite
scopedAccessSettings
. - DEFAULT_DRY_RUN_ACCESS_LEVEL_2: Es un nombre de nivel de acceso opcional en el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Incluye esta marca para aplicar el nivel de acceso de ejecución de prueba especificado a todas las aplicaciones de forma predeterminada si no se especifican en el YAML.
API
Crea un cuerpo JSON:
{ "group_key": "GROUP_ID", // // Optional; if specified, all applications that aren't defined in // scopedAccessSettings have these access levels applied. // // If more than one access level is specified, the user is // granted access if any one resolves to TRUE (OR logic, not AND). // // If you omit this key entirely, then no policy enforcement is // be applied by default. // "access_levels": [ "DEFAULT_ACCESS_LEVEL" ], // // Optional; if specified, all applications that aren't defined in // scopedAccessSettings will have these dry run access levels applied. // "dry_run_access_levels": [ "DEFAULT_DRY_RUN_ACCESS_LEVEL" ], "scoped_access_settings": [ { "scope": { "client_scope": { "restricted_client_application": { "name": "CLIENT_NAME" } } }, "active_settings": { "access_levels": [ "ACCESS_LEVEL_A" ] }, "dry_run_settings": { "access_levels": [ "DRY_RUN_ACCESS_LEVEL_1" ] } }, { "scope": { "client_scope": { "restricted_client_application": { "client_id": "CLIENT_ID" } } }, "active_settings": { "access_levels": [ "DRY_RUN_ACCESS_LEVEL_2" ] } } ] }
Reemplaza lo siguiente:
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
get
en el recurso del grupo. -
DEFAULT_ACCESS_LEVEL: Es el nombre opcional del nivel de acceso, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. ReemplazaPOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. - DEFAULT_DRY_RUN_ACCESS_LEVEL: Es un nombre de nivel de acceso opcional en el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_NAME: El nombre del cliente. Si la aplicación contiene
sessionSettings
, no puedes usar el nombre del cliente. En su lugar, usa el ID de cliente de OAuth. - ACCESS_LEVEL_A: Es un nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: Es un nombre de nivel de acceso en el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_ID: El ID de cliente de OAuth. Debes usar
client_id
cuando una aplicación contienesessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: Es un nombre de nivel de acceso en el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
-
GROUP_ID: El ID del grupo. Si no tienes el ID del grupo disponible, puedes recuperarlo si llamas al método
Envía la solicitud POST:
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID es el ID de la organización que usaste para crear el rol de Administrador de vinculación de acceso a la nube. Si no se configuró la propiedad
access-context-manager/organization
, reemplazaORG_ID
en la marca opcional--organization
por el ID de la organización que usaste cuando creaste el rol de administrador de vinculación de acceso a la nube.Si se realiza correctamente, deberías recibir una representación del objeto JSON. Si hay un problema, recibirás un mensaje de error.
Consulta los registros de prueba de validación
Después de configurar una prueba sin conexión, puedes verificar los registros para ver qué intentos de acceso se habrían rechazado.
En la siguiente tabla, se enumeran los campos de registro que puedes usar para crear y ejecutar la consulta para obtener los registros:
Nombre del campo | Descripción |
---|---|
protoPayload.authenticationInfo.principalEmail |
ID de correo electrónico del principal al que se le deniega el acceso. |
protoPayload.metadata.deniedApplications |
Es el nombre de la aplicación para la que se deniega el acceso. |
protoPayload.metadata.evaluationResult |
Es el resultado de la evaluación de la política de acceso activo. Valores posibles: GRANTED o DENIED . |
protoPayload.metadata.appliedAccessLevels |
Los niveles de acceso aplicados que requiere la política de acceso activa. |
protoPayload.metadata.appliedDryRunAccessLevels |
Los niveles de acceso aplicados que requiere la política de acceso de la ejecución de prueba. |
protoPayload.metadata.dryRunEvaluationResult |
El resultado de la evaluación de la política de acceso de la ejecución de prueba, que indica la acción prevista cuando se aplica la política de acceso.
Valores posibles: GRANTED o DENIED . |
Para obtener detalles sobre cómo crear una consulta de registros, consulta Lenguaje de consulta de Logging.