Puedes usar enlaces de acceso para controlar a qué aplicaciones y recursos pueden acceder tus grupos de usuarios. Un enlace 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 definir comportamientos específicos para cada aplicación.
Para asegurarte de que has configurado todo correctamente, puedes probar tus políticas antes de aplicarlas.
Cuando trabajes con enlaces de acceso, ten en cuenta lo siguiente:
- Un grupo de usuarios solo puede tener un enlace de acceso.
- Si un usuario pertenece a varios grupos, se le concede acceso si alguna política lo permite (
OR
noAND
). - En el caso de los controles de sesión, solo se aplica el enlace de acceso creado más recientemente.
Usar 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 prueba general o que la apliques a un pequeño grupo de prueba antes de implementarla en producción.
gcloud
Crea el enlace 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 ]
Haz los cambios siguientes:
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando al método
get
en el recurso de grupo. - ORG_ID: el ID de tu organización.
-
DEFAULT_ACCESS_LEVEL: nombre de nivel de acceso opcional, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SustituyePOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. -
DEFAULT_SESSION_LENGTH: duración de la sesión opcional en formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. -
DEFAULT_SESSION_REAUTH_METHOD: método opcional para pedir a los usuarios que vuelvan a verificar su identidad. Debe ser uno de los siguientes:
LOGIN
: aplica el inicio de sesión estándar, que puede incluir la autenticación multifactor u otros factores definidos por Workspace.PASSWORD
: solo se requiere una contraseña, aunque se hayan definido otros factores. Si las contraseñas se gestionan con un proveedor de identidades externo, se redirige a los usuarios al proveedor de identidades. Si la sesión del IdP está activa, los usuarios se vuelven a autenticar de forma implícita. Si el proveedor de identidades no está activo, los usuarios deben iniciar sesión a través de él.SECURITY_KEY
: requiere una llave de seguridad de hardware.
API
Crea un cuerpo JSON:
{ "groupKey": "GROUP_ID", "accessLevels": [ "DEFAULT_ACCESS_LEVEL" ], // optional: "sessionSettings": { "sessionLength": "DEFAULT_SESSION_LENGTH", "sessionReauthMethod": "DEFAULT_SESSION_REAUTH_METHOD" } }
Haz los cambios siguientes:
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando al método
get
en el recurso de grupo. -
DEFAULT_ACCESS_LEVEL: nombre de nivel de acceso opcional, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SustituyePOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. -
DEFAULT_SESSION_LENGTH: duración de la sesión opcional en formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. -
DEFAULT_SESSION_REAUTH_METHOD: método opcional para pedir a los usuarios que vuelvan a verificar su identidad. Debe ser uno de los siguientes:
LOGIN
: aplica el inicio de sesión estándar, que puede incluir la autenticación multifactor u otros factores definidos por Workspace.PASSWORD
: solo se requiere una contraseña, aunque se hayan definido otros factores. Si las contraseñas se gestionan con un proveedor de identidades externo, se redirige a los usuarios al proveedor de identidades. Si la sesión del IdP está activa, los usuarios se vuelven a autenticar de forma implícita. Si el proveedor de identidades no está activo, los usuarios deben iniciar sesión a través de él.SECURITY_KEY
: requiere una llave de seguridad de hardware.
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando 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 has usado para crear el rol Administrador de enlace de acceso de Cloud. Si no se ha definido la propiedad
access-context-manager/organization
, sustituyeORG_ID
en la marca opcional--organization
por el ID de la organización que usaste al crear el rol Administrador de enlaces de acceso a Cloud.
Si se ejecuta correctamente, deberías recibir una representación del objeto JSON. Si hay algún problema, recibirás un mensaje de error.
Definir 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 definir reglas predeterminadas para las aplicaciones que no tengan configuraciones específicas.
Puedes especificar aplicaciones en las vinculaciones de acceso mediante su ID de cliente de OAuth. Puedes especificar las siguientes aplicaciones con su nombre:
- Consola de Cloud
- SDK de Google Cloud
- Biblioteca de autenticación de Google Si usas las credenciales de aplicación predeterminadas (ADC) generadas por la CLI de gcloud y quieres usar el nombre, debes usar el ID de cliente predeterminado integrado en la CLI de gcloud. No puedes proporcionar un archivo de ID de cliente a la CLI de gcloud.
- Consola de Firebase
Este método es útil si quieres hacer lo siguiente:
- Aplicar políticas solo a determinadas aplicaciones.
Crea una política general, pero excluye algunas aplicaciones.
gcloud
Crea un archivo de vinculación en formato YAML con una lista de entradas de ámbito dentro de la lista
scopedAccessSettings
. Por 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
Haz los cambios siguientes:
- CLIENT_ID: el ID de cliente de OAuth. Debes usar
clientId
cuando una aplicación contengasessionSettings
. - ACCESS_LEVEL_A: nombre de un nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: duración de la sesión en formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. SESSION_REAUTH_METHOD: método opcional para pedir a los usuarios que vuelvan a verificar su identidad. Debe ser uno de los siguientes:
LOGIN
: aplica el inicio de sesión estándar, que puede incluir la autenticación multifactor u otros factores definidos por Workspace.PASSWORD
: Solo se requiere una contraseña, aunque se hayan definido otros factores. Si las contraseñas se gestionan mediante un IdP externo, se redirige a los usuarios al IdP. Si la sesión del IdP está activa, los usuarios se vuelven a autenticar de forma implícita. Si el IdP no está activo, los usuarios deben iniciar sesión a través del IdP.SECURITY_KEY
: requiere una llave de seguridad de hardware.
CLIENT_NAME: el nombre del cliente. Si la solicitud contiene
sessionSettings
, no puede usar el nombre del cliente. En su lugar, usa el ID de cliente de OAuth.ACCESS_LEVEL_B: nombre de un nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Para definir un nivel de acceso predeterminado para las aplicaciones que no estén definidas en el archivo YAML, usa el argumento
--level
. El archivo YAML solo admite ajustes específicos de la aplicación (scopedAccessSettings
).- CLIENT_ID: el ID de cliente de OAuth. Debes usar
Crea el enlace 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 ]
Haz los cambios siguientes:
- ORG_ID: el ID de tu organización.
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando al método
get
en el recurso de grupo. -
BINDING_FILE_PATH: ruta al archivo YAML que contiene el esquema de vinculación de acceso.
El archivo de vinculación solo admite
scopedAccessSettings
. -
DEFAULT_ACCESS_LEVEL: nombre de nivel de acceso opcional, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SustituyePOLICY_ID
por el ID de la política de acceso yACCESS_LEVEL_NAME
por el nombre del nivel de acceso. -
DEFAULT_SESSION_LENGTH: duración de la sesión opcional en formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. -
DEFAULT_SESSION_REAUTH_METHOD: método opcional para pedir a los usuarios que vuelvan a verificar su identidad. Debe ser uno de los siguientes:
LOGIN
: aplica el inicio de sesión estándar, que puede incluir la autenticación multifactor u otros factores definidos por Workspace.PASSWORD
: solo se requiere una contraseña, aunque se hayan definido otros factores. Si las contraseñas se gestionan con un proveedor de identidades externo, se redirige a los usuarios al proveedor de identidades. Si la sesión del IdP está activa, los usuarios se vuelven a autenticar de forma implícita. Si el proveedor de identidades no está activo, los usuarios deben iniciar sesión a través de él.SECURITY_KEY
: requiere una llave de seguridad de hardware.
Cómo funcionan juntos los argumentos --level
y --binding-file
- Si solo usas
--binding-file
, solo se aplicarán las políticas a las aplicaciones del archivo. - Si solo usas
--level
, el nivel de acceso se aplica a todas las aplicaciones. - Si usas ambas, las reglas se combinan. El valor
--level
se aplica a todas las aplicaciones, mientras que las políticas del archivo YAML especificado por--binding-file
solo se aplican a las aplicaciones definidas en el archivo.
Trabajar con los controles de sesión
- Para definir los controles de sesión predeterminados de 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 anularán la configuración predeterminada de esas aplicaciones específicas.
- Debes usar
--session-length
y--session-reauth-method
al mismo tiempo.
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"
]
}
}
}
]
}
Haz los cambios siguientes:
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando al método
get
en el recurso de grupo. -
DEFAULT_ACCESS_LEVEL: nombre de nivel de acceso opcional, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SustituyePOLICY_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 contengasessionSettings
. - ACCESS_LEVEL_A: nombre de un nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: la duración de la sesión en formato de duración ISO 8601, como
30m
para 30 minutos o2h
para dos horas. SESSION_REAUTH_METHOD: método opcional para pedir a los usuarios que vuelvan a verificar su identidad. Debe ser uno de los siguientes:
LOGIN
: aplica el inicio de sesión estándar, que puede incluir la autenticación multifactor u otros factores definidos por Workspace.PASSWORD
: Solo se requiere una contraseña, aunque se hayan definido otros factores. Si las contraseñas se gestionan mediante un IdP externo, se redirige a los usuarios al IdP. Si la sesión del IdP está activa, los usuarios se vuelven a autenticar de forma implícita. Si el IdP no está activo, los usuarios deben iniciar sesión a través del IdP.SECURITY_KEY
: requiere una llave de seguridad de hardware.
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: nombre de un 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 has usado para crear el rol Administrador de enlace de acceso de Cloud. Si no se ha definido la propiedad access-context-manager/organization
, sustituye ORG_ID
en la marca opcional --organization
por el ID de la organización que usaste al crear el rol Administrador de enlaces de acceso a Cloud.
Si se realiza correctamente, deberías recibir una representación del objeto JSON o un mensaje de error si ha habido algún problema.
Usar niveles de acceso de prueba para simular la aplicación
Los niveles de acceso de prueba te permiten probar tus políticas de acceso sin aplicarlas. De esta forma, puedes conocer el impacto de una política antes de que se publique. Puedes ver los registros de la prueba para saber qué habría ocurrido si la política estuviera activa.
Solo se pueden usar niveles de acceso en el modo de prueba. Los controles de sesión no están disponibles en el modo de ejecución de prueba.
Crear un enlace de prueba
Puedes definir niveles de acceso de prueba junto con niveles de acceso normales en el mismo enlace o usar enlaces independientes para las pruebas.
gcloud
Configura los ajustes 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
Haz los cambios siguientes:
- CLIENT_NAME: el nombre del cliente. Si la solicitud contiene
sessionSettings
, no puede usar el nombre del cliente. En su lugar, usa el ID de cliente de OAuth. - ACCESS_LEVEL_A: nombre de un nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: nombre de un 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 contengasessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: nombre de un nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
- CLIENT_NAME: el nombre del cliente. Si la solicitud contiene
Crea el enlace 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
Haz los cambios siguientes:
- ORG_ID: el ID de tu organización.
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando al método
get
en el recurso de grupo. -
BINDING_FILE_PATH: ruta 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: nombre de nivel de acceso opcional
con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Incluya esta marca para aplicar el nivel de acceso de prueba especificado a todas las aplicaciones de forma predeterminada si no se especifican en el archivo 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" ] } } ] }
Haz los cambios siguientes:
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando al método
get
en el recurso de grupo. -
DEFAULT_ACCESS_LEVEL: nombre de nivel de acceso opcional, que tiene el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SustituyePOLICY_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: nombre de nivel de acceso opcional
con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_NAME: el nombre del cliente. Si la solicitud contiene
sessionSettings
, no puede usar el nombre del cliente. En su lugar, usa el ID de cliente de OAuth. - ACCESS_LEVEL_A: nombre de un nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: 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
client_id
cuando una aplicación contengasessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: nombre de nivel de acceso con el formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
-
GROUP_ID: el ID del grupo. Si no tienes el ID del grupo, puedes obtenerlo
llamando 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 has usado para crear el rol Administrador de enlace de acceso de Cloud. Si no se ha definido la propiedad
access-context-manager/organization
, sustituyeORG_ID
en la marca opcional--organization
por el ID de la organización que usaste al crear el rol Administrador de enlaces de acceso a Cloud.Si se ejecuta correctamente, deberías recibir una representación del objeto JSON. Si hay algún problema, recibirás un mensaje de error.
Ver los registros de la prueba
Después de configurar una prueba, puedes consultar los registros para ver qué intentos de acceso se habrían denegado.
En la siguiente tabla se indican los campos de registro que puede usar para crear y ejecutar la consulta con la que obtener los registros:
Nombre del campo | Descripción |
---|---|
protoPayload.authenticationInfo.principalEmail |
ID de correo del principal al que se le ha denegado el acceso. |
protoPayload.metadata.deniedApplications |
Nombre de la aplicación cuyo acceso se ha denegado. |
protoPayload.metadata.evaluationResult |
El resultado de la evaluación de la política de acceso activa. 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 prueba. |
protoPayload.metadata.dryRunEvaluationResult |
El resultado de la evaluación de la política de acceso de la prueba, que indica la acción prevista cuando se aplique la política de acceso.
Valores posibles:
GRANTED o DENIED . |
Para obtener información sobre cómo crear una consulta de registros, consulta Lenguaje de consultas de almacenamiento de registros.