Un gran proyecto de inteligencia empresarial (BI) con muchos usuarios y equipos e información confidencial exige una arquitectura de seguridad multifacética. Dicha arquitectura debe proporcionar a los administradores y arquitectos de BI la capacidad de minimizar la cantidad de información accesible para los usuarios. Para una solución sencilla de administrar Amazon QuickSight permisos de acceso a activos y usuarios, puede utilizar el Interfaz de línea de comandos de AWS (CLI de AWS) o Consola de administración de AWS para editar manualmente el rol de usuario de QuickSight y el acceso al panel. Sin embargo, en casos específicos, una empresa puede tener fácilmente cientos o miles de usuarios y grupos, y estos métodos de administración de acceso no son eficientes. Hemos recibido una gran cantidad de solicitudes para proporcionar un enfoque programable avanzado para implementar y administrar una arquitectura de seguridad QuickSight centralizada.
Esta publicación describe las mejores prácticas para el control de acceso granular de autorización y autenticación QuickSight, y proporciona una aplicación en la nube centralizada con un Kit de desarrollo en la nube de AWS (AWS CDK) pila para descargar. Una de las ventajas de nuestra solución es que las empresas pueden implementar el marco de seguridad para administrar el control de acceso de su BI sin salir de AWS.
Todas las configuraciones se guardan en el Almacén de parámetros de AWS Systems Manager. El almacén de parámetros proporciona almacenamiento seguro y jerárquico para la gestión de datos de configuración y la gestión de secretos. Puede almacenar datos como el nombre de usuario, los permisos de usuario, las contraseñas y las cadenas de la base de datos como valores de parámetros. Puedes hacer referencia Gerente de sistemas de AWS parámetros en sus scripts y flujos de trabajo de configuración y automatización usando el nombre único que especificó cuando creó el parámetro.
La plantilla de aplicación de AWS CDK se ajusta a la infraestructura de integración e implementación continuas (CI/CD) y otorga o revoca todas las autenticaciones y autorizaciones en función de una política definida prescrita por AWS. Esto evita posibles errores humanos cometidos por los desarrolladores o administradores de BI. Los desarrolladores de BI pueden editar los parámetros de configuración para lanzar nuevos paneles a los usuarios finales. Al mismo tiempo, los administradores de BI pueden editar otro conjunto de parámetros para administrar usuarios o grupos. Este diseño de CI/CD de AWS CDK cierra las brechas entre las actividades de desarrollo y operación al aplicar la automatización en la creación e implementación de aplicaciones de BI.
Requerimientos de seguridad
En el diseño de aplicaciones de BI empresarial, la tenencia múltiple es un caso de uso común, que sirve a múltiples conjuntos de usuarios con una infraestructura. Los inquilinos pueden ser diferentes clientes de un proveedor de software independiente (ISV) o diferentes departamentos de una empresa. En un diseño de múltiples inquilinos, cada inquilino comparte los tableros, los análisis y otros activos de QuickSight. Cada usuario, que puede ver a todos los demás usuarios que pertenecen al mismo arrendatario (por ejemplo, al compartir contenido), permanece invisible para los demás arrendatarios. Dentro de cada inquilino, el equipo de administración de BI tiene que crear diferentes grupos de usuarios para controlar la autorización de datos, incluidos los permisos de acceso a activos y el acceso a datos de nivel granular.
Analicemos en detalle algunos casos de uso de permisos de acceso a activos. En una aplicación de BI, los diferentes activos generalmente se clasifican según los dominios comerciales (como un panel operativo o un panel de resumen ejecutivo) y la clasificación de datos (críticos, altamente confidenciales, solo internos y públicos). Por ejemplo, puede tener dos paneles para analizar los datos de resultados de ventas. La apariencia de ambos tableros es similar, pero la clasificación de seguridad de los datos es diferente. Un tablero, llamado Tablero crítico de ventas, contiene columnas y filas críticas de datos. El otro tablero, llamado Tablero altamente confidencial de ventas, contiene columnas y filas de datos altamente confidenciales. A algunos usuarios se les otorga permiso para ver ambos tableros, y otros tienen un nivel de permiso de seguridad más bajo y solo pueden acceder al Tablero altamente confidencial de ventas.
En el siguiente caso de uso, abordamos el acceso a datos de nivel granular de la siguiente manera:
- Acceso a nivel de fila (RLS) – Para los usuarios que pueden acceder al Panel crítico de ventas, algunos de ellos solo pueden ver datos de EE. UU. Sin embargo, algunos usuarios globales pueden ver los datos de todos los países, incluidos EE. UU. y el Reino Unido.
- Acceso a nivel de columna (CLS) – Algunos usuarios solo pueden ver columnas de datos de información de identificación no personal (PII) de un conjunto de datos, mientras que el equipo de recursos humanos puede ver todas las columnas del mismo conjunto de datos.
Los proyectos grandes pueden tener varios inquilinos, cientos de grupos y miles de usuarios en una cuenta de QuickSight. El equipo líder de datos desea implementar un protocolo para la creación y autenticación de usuarios a fin de reducir el costo de mantenimiento y el riesgo de seguridad. La arquitectura y el flujo de trabajo descritos en esta publicación ayudan al líder de datos a lograr este objetivo.
Además, para evitar errores humanos en la operación diaria, queremos que estos permisos de seguridad se otorguen y revoquen automáticamente y se ajusten a la infraestructura de CI/CD. Los detalles se explican más adelante en esta publicación.
Descripción de la arquitectura
El siguiente diagrama muestra la arquitectura de la cuenta QuickSight de esta solución.
- Los autores crean paneles y actualizan el almacén de parámetros de AWS Systems Manager para publicar paneles para diferentes grupos
- Los administradores aprueban las solicitudes de los autores.
- Los administradores actualizan la administración de usuarios (roles, espacio de nombres) editando AWS Systems ManagerParameter Store
- DevOps implementa las actualizaciones con AWS CDK
* Grupos: Los grupos de permisos de acceso a objetos controlan el propietario/espectador de los objetos. Los grupos de segmentos de datos combinados con RLS/CLS controlan el acceso a los datos.
*Conjuntos de datos: contiene todos los datos, restringidos por la seguridad de nivel de fila (RLS) y la seguridad de nivel de columna (CLS)
El siguiente diagrama ilustra el flujo de trabajo de autenticación de la arquitectura:
*Inicio de sesión por primera vez en QuickSight: si el usuario de QuickSight no está registrado antes de iniciar sesión por primera vez, se crea un lector y este lector solo puede ver el tablero de la página de destino, que se comparte con todos los usuarios de esta cuenta. La página de destino proporciona la lista de informes que este usuario puede ver.
El siguiente diagrama ilustra el flujo de trabajo de autorización de la arquitectura.
Detalles del diagrama de autorización:
- La información del usuario (departamento, equipo, ubicación geográfica) se almacena en Amazon Redshift, Amazon Athena o cualquier otra base de datos. En combinación con el mapeo de grupos de usuarios, las bases de datos RLS están diseñadas para controlar el acceso a los datos.
- Asignación de permisos por hora:
- De acuerdo con el mapeo del nombre (usuario) del empleado del grupo (membership.csv) y el mapeo del rol del grupo (/qs/console/roles), una función de AWS Lambda crea grupos, registra, usuarios, asigna miembros del grupo, elimina membresías del grupo, promueve lectores a autor o administrador, y elimina usuarios si son degradados de autor o administrador a lector.
- De acuerdo con el mapeo del tablero de grupo en /qs/config/access, una función de AWS Lambda actualiza los permisos del tablero para los grupos de QuickSight.
- De acuerdo con la asignación de espacios de nombres de grupos enmembership.csv, una función de AWS Lambda crea grupos de QuickSight en el espacio de nombres especificado.
- Ejemplos de parámetros de permisos de acceso a objetos y segmentos de datos:
- Parámetros de muestra del rol de usuario de QuickSight:
- Datos de muestra de membresía.csv:
En esta solución, los espacios de nombres personalizados se implementan para admitir la multiempresa. Él default
El espacio de nombres es para todos los usuarios internos de una empresa (lo llamamos OkTank). OkTank crea el 3rd-Party
espacio de nombres para usuarios externos. Si tenemos que admitir más inquilinos, podemos crear más espacios de nombres personalizados. De forma predeterminada, estamos limitados a 100 espacios de nombres por cuenta de AWS. Para aumentar este límite, comuníquese con el equipo de productos de QuickSight. Para obtener más información acerca de la tenencia múltiple, consulte Incorpore análisis de múltiples inquilinos en aplicaciones con Amazon QuickSight.
En cada espacio de nombres, creamos diferentes tipos de grupos. por ejemplo, en el default
espacio de nombres, creamos el BI-Admin
y BI-Developer
grupos para el admin
y author
usuarios. Xa reader
, implementamos dos tipos de grupos QuickSight para controlar los permisos de acceso a los activos y el acceso a los datos: grupos de permisos de acceso a objetos y grupos de segmentos de datos.
La siguiente tabla resume cómo los grupos de permisos de acceso a objetos controlan los permisos.
Nombre del grupo | Espacio de nombres | Permiso | Notas |
critical |
Predeterminado | Ver ambos paneles (que contienen los datos críticos y los datos altamente confidenciales) | |
highlyconfidential |
Predeterminado | Ver solo el panel de control altamente confidencial de ventas | |
BI-Admin |
Predeterminado | Gestión de cuentas y edición de todos los activos. | Usuarios en el BI-Admin grupo se les asigna el Admin Rol de usuario de QuickSight. |
BI-Developer |
Predeterminado | Editar todos los activos | Usuarios en el BI-Developer al grupo se les asigna la función de usuario Author QuickSight. |
Power-reader |
Predeterminado | Vea todos los activos y cree análisis ad hoc para ejecutar informes de análisis de autoservicio |
Usuarios en el Sin embargo, este grupo no puede guardar ni compartir sus informes ad hoc. |
3rd-party |
Espacios de nombres no predeterminados (3rd-party espacio de nombres, por ejemplo) |
Solo se puede compartir con los lectores (3rd-party-reader grupo, por ejemplo) en el mismo espacio de nombres |
En espacios de nombres no predeterminados, también podemos crear otros grupos de permisos de acceso a objetos, que es similar al grupo crítico en el espacio de nombres predeterminado. |
Para obtener más información sobre los grupos, usuarios y funciones de usuario de QuickSight, consulte Administrar el acceso de los usuarios dentro de Amazon QuickSight, Aprovisionamiento de usuarios para Amazon QuickSighty Uso de paneles administrativos para una vista centralizada de los objetos de Amazon QuickSight.
El segundo tipo de grupos (grupos de segmentos de datos), combinado con seguridad a nivel de fila conjuntos de datos y seguridad a nivel de columna, controle el acceso a los datos como se describe en la siguiente tabla.
Nombre del grupo | Espacio de nombres | Permiso | Lo que hacemos |
USA |
Predeterminado | Ver solo datos de EE. UU. en cualquier tablero | Nivel de fila |
GBR |
Predeterminado | Solo vea datos del Reino Unido en cualquier tablero | Nivel de fila |
All countries |
Predeterminado | Ver datos de todos los países en cualquier tablero | Nivel de fila |
non-PII |
Predeterminado | No puedo ver los números de Seguro Social, los ingresos anuales y todas las demás columnas de datos PII | Nivel de columna |
PII |
Predeterminado | Puede ver todas las columnas, incluidos los datos PII | Nivel de columna |
Podemos configurar grupos similares en espacios de nombres no predeterminados.
Estos diferentes grupos pueden superponerse entre sí. Por ejemplo, si un usuario pertenece a los grupos USA
, Critical
y PII
, pueden ver los datos de EE. UU. en ambos paneles, con todas las columnas. El siguiente diagrama de Venn ilustra las relaciones entre estos grupos.
En resumen, podemos definir una arquitectura de seguridad multifacética combinando las características de QuickSight, incluido el espacio de nombres, el grupo, el usuario, RLS y CLS. Todas las configuraciones relacionadas se guardan en el almacén de parámetros. La lista de usuarios de QuickSight y la información de asignación de grupos de usuarios se encuentran en un Servicio de almacenamiento simple de Amazon (Amazon S3) depósito como un archivo CSV (llamado membership.csv
). Este archivo CSV podría ser resultados de salida de consultas LDAP. Varios AWS Lambda Las funciones están programadas para ejecutarse cada hora (también puede invocar estas funciones a pedido, como diariamente, semanalmente o en cualquier momento que se ajuste a sus requisitos) para leer los parámetros y el membership.csv
. Según la configuración definida, las funciones de Lambda crean, actualizan o eliminan grupos, usuarios y permisos de acceso a activos.
Cuando se completan las configuraciones de seguridad necesarias, una función de Lambda llama a las API de QuickSight para obtener la información actualizada y registrar los resultados en un depósito S3 como archivos CSV. El equipo de administración de BI puede crear conjuntos de datos con estos archivos y visualizar los resultados con paneles. Para más información, ver Uso de paneles administrativos para una vista centralizada de los objetos de Amazon QuickSight y Creación de una consola administrativa en Amazon QuickSight para analizar las métricas de uso.
Además, los errores de las funciones de Lambda y los eventos de eliminación de usuarios se almacenan en este depósito de S3 para que los revise el equipo de administración.
Automatización
El siguiente diagrama ilustra el flujo de trabajo general de las funciones de Lambda.
Usamos un método programable para crear y configurar los grupos y usuarios automáticamente. Para cualquier solicitud de registro de usuario ad hoc (como que el usuario no esté registrado en membership.csv
pero debido a la latencia), siempre que el usuario pueda autenticarse, puede asumir la Gestión de identidades y accesos de AWS (IAM) rol quicksight-fed-user
a la autoaprovisionamiento como lector QuickSight. Este lector autoaprovisionado solo puede ver un tablero de página de destino, que proporciona la lista de tableros y grupos correspondientes. De acuerdo con el mapeo del grupo de paneles, este nuevo lector puede solicitar la membresía de un grupo determinado para acceder a los paneles. Si el propietario del grupo aprueba la aplicación, las funciones de Lambda por horas agregan al nuevo usuario al grupo la próxima vez que se ejecutan.
La canalización de CI/CD comienza desde AWS CDK. El administrador de BI y el autor pueden actualizar los parámetros de Systems Manager para lanzar nuevos paneles u otros activos de QuickSight en la pila de CDK de AWS. granular_access_stack.py
. El administrador de BI puede actualizar los parámetros de Systems Manager en la misma pila para crear, actualizar o eliminar espacios de nombres, grupos o usuarios. Luego, el equipo de DevOps puede implementar la pila de CDK de AWS actualizada para aplicar estos cambios a los parámetros de Systems Manager u otros recursos de AWS. Las funciones de Lambda se activan cada hora para llamar a las API para aplicar cambios a la cuenta de QuickSight relacionada.
Escala
Las funciones de Lambda están restringidas por el tiempo de ejecución máximo de 15 minutos. Para superar esta limitación, podemos convertir las funciones Lambda a Pegamento AWS Scripts de shell de Python con los siguientes pasos de alto nivel:
- Descargar boto3 archivos de rueda de pypi.org.
- Cargue el archivo de la rueda en un cubo S3.
- Descargue nuestra Funciones lambda y combínelos en un script de Python y cree un script de shell de AWS Glue Python.
- Agregue la ruta S3 del archivo de la rueda de Boto3 a la ruta de la biblioteca de Python. Si tiene varios archivos para agregar, sepárelos con una coma.
- Programe este trabajo de AWS Glue para que se ejecute a diario.
Para más información, consulte la Programe scripts ETL de AWS Glue en Python y Uso de bibliotecas de Python con AWS Glue.
Requisitos previos
Debe tener los siguientes requisitos previos para implementar esta solución:
- Una cuenta QuickSight Enterprise
- Conocimientos básicos de Python
- Conocimientos básicos de SQL
- Conocimientos básicos de BI
Crear los recursos
Cree sus recursos descargando la pila de CDK de AWS desde el Repositorio GitHub.
En granular_access
carpeta, ejecute el comando cdk deploy granular-access
para desplegar los recursos. Para más información, ver Taller de introducción a AWS CDK: Taller de Python.
Implementar la solución
Cuando implementa la pila de CDK de AWS, crea cinco funciones de Lambda, como se muestra en la siguiente captura de pantalla.
La pila también crea recursos de apoyo adicionales en su cuenta.
El granular_user_governance
La función es activada por el Reloj en la nube de Amazon regla de evento qs-gc-everyhour
. La información de grupos y usuarios se define en el archivo membership.csv
. El nombre del depósito S3 se almacena en el almacén de parámetros. /qs/config/groups
. El siguiente diagrama muestra el diagrama de flujo de esta función.
- Establecer el destino de
granular_user_governance
a otra función Lambda,downgrade_user
, con lassource=Asynchronous invocation
ycondition=On Success
.
El siguiente diagrama es un diagrama de flujo de esta función.
Para evitar interrumpir el acceso crítico a los activos de QuickSight controlados por el administrador o el autor, degradamos a un administrador o autor eliminando al usuario administrador o autor y creando un nuevo usuario lector con la función Lambda. downgrade_user
. granular_user_governance
La función maneja la degradación de administrador a autor, o la actualización de autor a administrador.
- Establecer el destino de
downgrade_user
a la función lambdagranular_access_assets_govenance
source=Asynchronous invocation
ycondition=On Success
.
El siguiente diagrama muestra un diagrama de flujo de esta función.
- Establecer el destino de
downgrade_user
a la función lambdacheck_team_members
source=Asynchronous invocation
ycondition=On Failure
.
El check_team_members
La función simplemente llama a las API de QuickSight para obtener información sobre espacios de nombres, grupos, usuarios y activos, y guarda los resultados en el depósito de S3. La clave S3 es monitoring/quicksight/group_membership/group_membership.csv
y monitoring/quicksight/object_access/object_access.csv
.
Además de los dos archivos de salida del paso anterior, los registros de errores y los registros de eliminación de usuarios (registros de downgrade_user
) también se guardan en el monitoring/quicksight
carpeta.
- Establecer el destino de
granular_access_assets_govenance
a la función lambdacheck_team_members
source=Asynchronous invocation
ycondition=On Success
orcondition=On Failure
.
Crear conjuntos de datos de seguridad a nivel de fila
Como paso final, creamos conjuntos de datos RLS. Esto le permite cambiar los registros del tablero en función de los usuarios que ven los tableros.
QuickSight admite RLS mediante la aplicación de un conjunto de datos administrado por el sistema que subselecciona registros del conjunto de datos del tablero. El mecanismo permite al administrador proporcionar un conjunto de datos de filtrado (el conjunto de datos RLS) con username
or groupname
columnas, que se filtran automáticamente al usuario que ha iniciado sesión. Por ejemplo, un usuario llamado YingWang
pertenece al grupo QuickSight BI
, por lo que todas las filas del conjunto de datos RLS que corresponden al nombre de usuario YingWang
o nombre del grupo BI
son filtrados. Las filas que quedan en el RLS después de aplicar los filtros de nombre de usuario y nombre de grupo se usan para filtrar aún más los conjuntos de datos del tablero haciendo coincidir las columnas con los mismos nombres. Para obtener más información acerca de la seguridad a nivel de fila, consulte Uso de la seguridad a nivel de fila (RLS) para restringir el acceso a un conjunto de datos.
En esta solución, exportamos la información del usuario de muestra al archivo membership.csv
, que se almacena en un depósito S3. En este archivo, proporcionamos algunos grupos de muestra para la definición de conjuntos de datos RLS. Estos grupos son los grupos de segmentos de datos, como se describe en el diseño de la arquitectura general. La siguiente captura de pantalla muestra algunos de los grupos y los usuarios en esos grupos.
El granular_user_governance
La función crea estos grupos y agrega los usuarios relacionados para que sean miembros de estos grupos.
¿Cómo creamos el conjunto de datos RLS? Digamos que tenemos una tabla llamada employee_information
en la base de datos de recursos humanos de nuestra organización. La siguiente captura de pantalla muestra algunos datos de muestra.
Sobre la base de la employee_information
tabla, creamos una vista llamada rls
para un conjunto de datos RLS. Consulte el siguiente código SQL:
La siguiente captura de pantalla muestra nuestros datos de muestra.
Ahora que tenemos la tabla lista, podemos crear el conjunto de datos RLS con el siguiente SQL personalizado:
La siguiente captura de pantalla muestra nuestros datos de muestra.
para el grupo quicksight-fed-all-countries
, configuramos el username
, country
y city
como nulo, lo que significa que todos los usuarios de este grupo pueden ver los datos de todos los países.
Para el nivel de país, solo las reglas de seguridad definidas en el groupname
y pais columns
se utilizan para filtrar. Él username
y city
las columnas se establecen como nulas. Los usuarios en el quicksight-fed-usa
El grupo puede ver los datos de EE. UU., y los usuarios en el quicksight-fed-gbr
El grupo puede ver los datos de GBR.
Para cada usuario con groupname
establecido como nulo, solo pueden ver el país y la ciudad específicos asignados a su nombre de usuario. Por ejemplo, TerryRigaud
solo puede ver datos de Austin, en los EE. UU.
En QuickSight, varias reglas en un conjunto de datos RLS se combinan con OR.
Con estas reglas RLS multifacéticas, podemos definir un patrón completo de acceso a datos.
Limpiar
Para evitar incurrir en cargos futuros, elimine los recursos que creó ejecutando el siguiente comando:
Conclusión
Esta publicación discutió cómo los administradores de BI pueden diseñar y automatizar el control de acceso granular de autorización y autenticación QuickSight. Combinamos funciones de seguridad de QuickSight, como seguridad a nivel de fila y de columna, grupos y espacios de nombres para brindar una solución completa. La gestión de estos cambios a través de "BIOps" garantiza un mecanismo sólido y escalable para gestionar la seguridad de QuickSight. Aprender más, Regístrese para una demostración de QuickSight.
Acerca de los autores
ying wang es ingeniero sénior de visualización de datos en la práctica especializada global de datos y análisis en los servicios profesionales de AWS.
Amir Bar O es Arquitecto Principal de Datos en Servicios Profesionales de AWS. Después de 20 años liderando organizaciones de software y desarrollando plataformas y productos de análisis de datos, ahora comparte su experiencia con clientes de grandes empresas y los ayuda a escalar sus análisis de datos en la nube.
- "
- &
- 100
- de la máquina
- Gestión de Acceso
- Mi Cuenta
- actividades
- Ad
- Adicionales
- Admin
- Todos
- Amazon
- análisis
- Analytics
- API
- Aplicación
- aplicaciones
- arquitectura
- activo
- Activos
- Austin
- Autenticación
- autorización
- Automatización
- AWS
- AWS Lambda
- MEJOR
- y las mejores prácticas
- frontera
- build
- Construir la
- inteligencia empresarial
- llamar al
- cases
- el cambio
- cargos
- Ciudad
- clasificación
- Soluciones
- código
- Algunos
- compañía
- contenido
- países
- Creamos
- Clientes
- página de información de sus operaciones
- datos
- acceso a los datos
- Data Analytics
- datos de gestión
- Visualización de datos
- Base de datos
- bases de datos
- Demanda
- Diseño
- destruir
- detalle
- desarrolladores
- Desarrollo
- DevOps
- dominios
- ingeniero
- Empresa
- clientes empresariales
- Evento
- Eventos
- ejecutivos
- exportar
- Caracteristicas
- filtros
- Nombre
- primer vez
- cómodo
- Marco conceptual
- función
- futuras
- Buscar
- subvenciones
- Grupo procesos
- Cómo
- hr
- HTTPS
- Cientos
- AMI
- Identidad
- Incluye
- por
- aumente
- información
- EN LA MINA
- integración
- Intelligence
- IT
- Trabajos
- únete
- Clave
- especialistas
- la landing page
- large
- ldap
- líder
- APRENDE:
- Nivel
- Biblioteca
- Limitada
- línea
- Lista
- Ubicación
- Largo
- Management
- Miembros
- nombres
- números
- solicite
- Otro
- Otros
- propietario
- contraseñas
- Patrón de Costura
- pii
- Plataformas
- política
- Director de la escuela
- Producto
- Productos
- proyecto
- proyecta
- público
- Python
- Testimoniales
- lectores
- archivos
- reducir
- Registro
- Relaciones
- Informes
- Requisitos
- Recursos
- Resultados
- una estrategia SEO para aparecer en las búsquedas de Google.
- Riesgo
- reglas
- Ejecutar
- correr
- ventas
- Escala
- EN LINEA
- Autoservicio
- Servicios
- set
- Compartir
- Acciones
- Cáscara
- sencillos
- So
- Social
- Software
- SQL
- STORAGE
- tienda
- SOPORTE
- soportes
- Todas las funciones a su disposición
- equipo
- Uk
- unión
- Actualizar
- Actualizaciones
- us
- Estados Unidos de America
- usuarios
- Ver
- visualización
- una vez por semana
- Sistemas de
- QUIENES
- dentro de
- flujo de trabajo
- años