Uso
access_grant: access_grant_name {
user_attribute: user_attribute_name
allowed_values: [ "value_1", "value_2" , ... ]
}
|
Jerarquía
access_grant |
Valor predeterminado
Ninguno
Acepta
El nombre de un atributo del usuario con el parámetro secundario user_attribute y una lista de valores de atributos del usuario con el parámetro secundario allowed_values
|
Definición
Un otorgamiento de acceso es una estructura de LookML definida en un archivo de modelo que controla el acceso a otras estructuras de LookML, específicamente a exploraciones, uniones, vistas y campos. El parámetro access_grant define un otorgamiento de acceso.
access_grant toma el nombre de un atributo del usuario con el subparámetro user_attribute y una lista de valores aceptables para el atributo del usuario con el subparámetro allowed_values. Solo los usuarios a los que se les asigne uno de los valores permitidos en el atributo de usuario especificado pueden acceder a las estructuras para las que se requiere el otorgamiento de acceso.
Una vez definido, puedes usar el parámetro required_access_grants a nivel de Explorar, unión, vista o campo para requerir el otorgamiento de acceso a esas estructuras.
Por ejemplo, el siguiente LookML crea un otorgamiento de acceso llamado can_view_financial_data, que se basa en el atributo de usuario department. Solo los usuarios a los que se les asignan los valores "finance" o "executive" en el atributo de usuario department tienen acceso al permiso de acceso can_view_financial_data:
access_grant: can_view_financial_data {
user_attribute: department
allowed_values: [ "finance", "executive" ]
}
Luego, asocias el permiso de acceso can_view_financial_data con una estructura de LookML usando el parámetro required_access_grants:
dimension: financial_data_field
...
required_access_grants: [can_view_financial_data]
}
En este ejemplo, solo los usuarios que tengan el valor de atributo del usuario adecuado para el otorgamiento de acceso can_view_financial_data verán la dimensión financial_data_field.
Puedes definir varios permisos de acceso en un modelo y asignar varios permisos de acceso a una estructura de LookML con el parámetro required_access_grants. En ese caso, el usuario debe tener acceso a todos los permisos de acceso especificados para acceder a la estructura de LookML.
Por ejemplo, el siguiente LookML define dos concesiones de acceso diferentes:
access_grant: can_view_financial_data {
user_attribute: department
allowed_values: [ "finance", "executive" ]
}
access_grant: can_view_payroll_data {
user_attribute: view_payroll
allowed_values: [ "yes" ]
}
Luego, en el archivo de la vista, el parámetro required_access_grants especifica ambos permisos de acceso:
view: payroll {
...
required_access_grants: [can_view_financial_data, can_view_payroll_data]
}
En este caso, solo los usuarios que tengan el valor "finance" o el valor "executive" asignado a su atributo de usuario department y que tengan el valor "yes" asignado a su atributo de usuario view_payroll podrán acceder a la vista.
Ejemplos
Define una concesión de acceso que requiera que los usuarios tengan el valor "product_management" o el valor "engineering" en el atributo de usuario department para tener acceso a la concesión de acceso engineering:
access_grant: engineering {
user_attribute: department
allowed_values: [ "product_management", "engineering" ]
}
También puedes definir permisos de acceso con atributos del usuario que toman datos numéricos o de fecha y hora. Para ello, debes incluir los valores permitidos entre comillas dobles, como lo harías con una cadena. Por ejemplo, la siguiente concesión de acceso hace referencia al atributo de usuario id, que tiene un tipo de datos de número. Solo se otorgará acceso a los usuarios con el valor id de 1, 2, 3, 4 o 5:
access_grant: user_id {
user_attribute: id
allowed_values: ["1", "2", "3", "4", "5"]
}
En el siguiente ejemplo, se hace referencia al atributo del usuario start_date, que tiene el tipo de datos Fecha y hora. Solo se les otorgará acceso a los usuarios que tengan el valor 2020-01-01 en el atributo de usuario:
access_grant: start_date {
user_attribute: start_date
allowed_values: ["2020-01-01"]
}
Aspectos para tener en cuenta
No se permiten atributos de usuario editables por el usuario con otorgamientos de acceso
Las concesiones de acceso no pueden aceptar atributos de usuario que tengan un nivel de Acceso del usuario de Edición. Los usuarios pueden ver y editar los valores de los atributos de usuario que tienen un nivel de Acceso del usuario de Edición en su página de la cuenta. Por motivos de seguridad, solo se permiten los atributos del usuario que tienen un nivel de Acceso del usuario de Ninguno o Ver con access_grant.
Los valores que se indican en allowed_values deben coincidir exactamente con los valores de los atributos del usuario.
access_grant funcionará con los atributos del usuario que tengan el tipo de datos Filtro de cadena (avanzado), Filtro de número (avanzado) o Filtro de fecha y hora (avanzado). Sin embargo, para otorgar acceso, los valores que se indican en el parámetro allowed_values deben coincidir exactamente con el valor del atributo del usuario.
Por ejemplo, si creaste un atributo del usuario llamado numeric_range con el tipo de datos Filtro de número (avanzado), podrías usar una expresión de filtro de Looker para ingresar un rango de números, como [1, 20]. En ese ejemplo, la expresión de filtro de Looker en el atributo del usuario devolverá un rango de números entre 1 y 20, inclusive. Sin embargo, como access_grant requiere una coincidencia exacta, usar el parámetro allowed_values: ["10"] no otorgaría acceso. Para otorgar acceso, deberás usar allowed_values: ["[1, 20]"].
Esto también se aplica a los atributos del usuario que tienen varios valores. Por ejemplo, un atributo del usuario con el tipo de datos Filtro de número (avanzado) que tenga el valor 1, 3, 5 solo coincidirá con un otorgamiento de acceso con el parámetro allowed_values: ["1, 3, 5"]. Del mismo modo, un otorgamiento de acceso con el parámetro allowed_values: ["1"] no otorgaría acceso al usuario con varios valores en el atributo del usuario. Tampoco se otorgaría acceso a este usuario con un otorgamiento de acceso con el parámetro allowed_values: ["1", "3", "5"], ya que, si bien el parámetro allowed_values: [] puede aceptar varios valores, ninguno de los tres valores del parámetro allowed_values: ["1", "3", "5"] coincide exactamente con el valor del atributo del usuario 1, 3, 5. En este caso, se otorgaría acceso a un usuario con un valor de atributo del usuario de 1, 3 o 5, ya que cada uno de esos valores coincide con una de las opciones del parámetro allowed_values: ["1", "3", "5"].
Del mismo modo, access_grant requiere una coincidencia exacta con los atributos del usuario del tipo de datos String Filter (advanced). A diferencia de las expresiones de filtro de Looker típicas, el uso del parámetro allowed_values: [ "Ca%" ] no coincide con un atributo del usuario con los valores Canada o California. Solo se otorgaría acceso si el valor del atributo del usuario es exactamente Ca%.
Los usuarios a los que no se les otorga acceso experimentan un comportamiento diferente según la estructura de LookML
Un usuario que no tiene acceso a un permiso de acceso experimentará un comportamiento diferente según la estructura de LookML a la que intente acceder. Consulta las páginas de documentación de required_access_grants en los niveles Explorar, unir, ver o campo para obtener información sobre cómo se restringe el acceso a esas estructuras.
Los accesos otorgados en varios niveles se suman
Si anidas permisos de acceso, estos son aditivos. Por ejemplo, puedes crear required_access_grants para una vista y crear required_access_grants para un campo dentro de la vista. Para ver el campo, el usuario debe tener permisos de acceso tanto al campo como a la vista. Del mismo modo, para las uniones: Si creas required_access_grants para las vistas en una unión y también creas required_access_grants para la unión de estas dos vistas, un usuario debe tener permisos de acceso a ambas vistas y a la unión para ver la vista unida.
Acceder a estructuras que hacen referencia a estructuras restringidas
Los usuarios pueden tener acceso a Looks o paneles que contienen objetos de LookML a los que no tienen acceso. En estas situaciones, el Look o el panel se mostrarán como si esos objetos de LookML se hubieran quitado del modelo.
Supongamos que tenemos una exploración A, que contiene la unión A, la vista A y el campo A. A continuación, colocamos una restricción de acceso en Explorar A. Como se esperaba, la unión A, la vista A y el campo A heredarán esa restricción, pero solo cuando los usuarios interactúen con la exploración A. Si la unión A, la vista A o el campo A se usan en otra exploración B, no necesariamente tendrán restricciones de acceso. Por lo tanto, si planeas volver a usar elementos de LookML, te sugerimos que apliques restricciones de acceso en el nivel más bajo posible.