Uso de seguridad a nivel de fila (RLS) con reglas basadas en etiquetas para restringir el acceso a un conjunto de datos al incrustar paneles para usuarios anónimos - Amazon QuickSight

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de seguridad a nivel de fila (RLS) con reglas basadas en etiquetas para restringir el acceso a un conjunto de datos al incrustar paneles para usuarios anónimos

 Se aplica a: Enterprise Edition 
   Público objetivo: QuickSight administradores de Amazon y QuickSight desarrolladores de Amazon 

Al incrustar QuickSight paneles de Amazon en la aplicación para los usuarios que no están aprovisionados (registrados) QuickSight, puede utilizar la seguridad de nivel de fila (RLS) con etiquetas. En este caso, usted utiliza etiquetas para especificar qué datos pueden ver los usuarios en el panel de control en función de quiénes sean.

Por ejemplo, supongamos que usted es una empresa de logística que tiene una aplicación orientada al cliente para varios minoristas. Miles de usuarios de estos minoristas acceden a su aplicación para ver las métricas relacionadas con la forma en que se envían sus pedidos desde su almacén.

No desea administrar miles de usuarios QuickSight, por lo que utiliza la incrustación anónima para incrustar en su aplicación los paneles seleccionados que puedan ver los usuarios autenticados y autorizados. Sin embargo, debe asegurarse de que los minoristas solo vean los datos que son para su empresa y no para otros. Puede usar la RLS con etiquetas para asegurarse de que sus clientes solo vean los datos que son relevantes para ellos.

Para ello, complete los siguientes pasos:

  1. Agregue etiquetas de RLS a un conjunto de datos.

  2. Asigne valores a esas etiquetas en tiempo de ejecución mediante la operación de la API de GenerateEmbedUrlForAnonymousUser.

    Para obtener más información sobre cómo incrustar paneles para usuarios anónimos mediante la operación de la API de GenerateEmbedUrlForAnonymousUser, consulte Incrustar paneles QuickSight de datos para usuarios anónimos (no registrados).

Antes de que pueda usar la RLS con etiquetas, tenga en cuenta los siguientes puntos:

  • Actualmente, el uso de la RLS con etiquetas solo se admite para la incrustación anónima, específicamente para los paneles integrados que utilizan la operación de la API de GenerateEmbedUrlForAnonymousUser.

  • No se admite el uso de la RLS con etiquetas en los paneles integrados que utilizan la operación de la API de GenerateEmbedURLForRegisteredUser o la antigua operación de la API de GetDashboardEmbedUrl.

  • Las etiquetas RLS no son compatibles con AWS Identity and Access Management (IAM) ni con el tipo de identidad. QuickSight

  • Al aplicar los conjuntos de datos de SPICE a la seguridad de nivel de fila, cada campo del conjunto de datos puede contener hasta 2047 caracteres Unicode. Los campos que contienen más que esta cuota se truncan durante la incorporación de datos. Para obtener más información sobre las cuotas de datos de SPICE, consulte Cuotas de SPICE para los datos importados.

Paso 1: adición de etiquetas de RLS a un conjunto de datos

Puedes añadir reglas basadas en etiquetas a un conjunto de datos en Amazon QuickSight. Como alternativa, puede llamar a la operación de la API CreateDataSet o UpdateDataSet y añadir reglas basadas en etiquetas de esa forma. Para obtener más información, consulte Adición de etiquetas de RLS a un conjunto de datos mediante la API.

Utilice el siguiente procedimiento para añadir etiquetas RLS a un conjunto de datos en. QuickSight

Adición de etiquetas de RLS a un conjunto de datos
  1. En la página de QuickSight inicio, elija Conjuntos de datos a la izquierda.

  2. En la página Conjuntos de datos, elija el conjunto de datos al que desea agregar la RLS.

  3. En la página de detalles del conjunto de datos que se abre, en Seguridad a nivel de fila, seleccione Configurar.

    La opción de seguridad a nivel de fila al elegir un conjunto de datos en la página del conjunto de datos.
  4. En la página Configurar seguridad a nivel de fila que se abre, seleccione Reglas basadas en etiquetas.

  5. En Columna, elija una columna a la que quiera añadir reglas de etiquetas.

    Por ejemplo, en el caso de la empresa de logística, se utiliza la columna retailer_id.

    Solo se muestran las columnas con un tipo de datos de cadena.

  6. En Etiqueta, introduzca una clave de etiqueta. Puede introducir el nombre de etiqueta que desee.

    Por ejemplo, en el caso de la empresa de logística, se utiliza la clave de etiqueta tag_retailer_id. De este modo, se establece una seguridad de nivel de fila en función del distribuidor que accede a la aplicación.

  7. (Opcional) En Delimitador, elija un delimitador de la lista o introduzca el suyo.

    Puede usar delimitadores para separar las cadenas de texto al asignar más de un valor a una etiqueta. El valor de un delimitador puede tener 10 caracteres como máximo.

  8. (Opcional) En Coincidir con todo, seleccione * o introduzca su propio carácter o caracteres.

    Esta opción puede ser cualquier carácter que desee utilizar cuando quiera filtrar por todos los valores de esa columna del conjunto de datos. En lugar de enumerar los valores uno por uno, puede usar el carácter. Si se especifica este valor, puede tener al menos un carácter o 256 caracteres como máximo

    Tabla Administrar etiquetas.
  9. Elija Añadir.

    La regla de etiquetas se agrega al conjunto de datos y aparece en la parte inferior, pero aún no se ha aplicado. Para añadir otra regla de etiqueta al conjunto de datos, repita los pasos 5 a 9. Para editar una regla de etiquetas, elija el icono del lápiz que sigue a la regla. Para eliminar una regla de etiquetas, seleccione el icono de eliminación que sigue a la regla. Puede agregar hasta 50 etiquetas a un conjunto de datos.

  10. Cuando esté listo para aplicar las reglas de etiquetas al conjunto de datos, elija Aplicar reglas.

    Cuadro de diálogo de reglas basadas en etiquetas: botón Aplicar reglas para una seguridad a nivel de fila basada en etiquetas.
  11. En la página ¿Activar la seguridad basada en etiquetas? que se abre, seleccione Aplicar y activar.

    Las reglas basadas en etiquetas ahora están activas. En la página Configurar la seguridad a nivel de fila, aparece un botón para activar y desactivar las reglas de etiquetas para el conjunto de datos.

    Para desactivar todas las reglas basadas en etiquetas para el conjunto de datos, desactive la opción Reglas basadas en etiquetas y, a continuación, escriba “confirmar” en el cuadro de texto que aparece.

    Interruptor de las reglas basadas en etiquetas establecido en ON para configurar la seguridad a nivel de fila.

    En la página Conjuntos de datos, aparece un icono de candado en la fila del conjunto de datos para indicar que las reglas de etiquetas están habilitadas.

    Ahora puede usar las reglas de etiquetas para establecer los valores de las etiquetas en tiempo de ejecución, tal como se describe en Paso 2: asignación de valores a las etiquetas de RLS en tiempo de ejecución. Las reglas solo afectan a QuickSight los lectores cuando están activas.

    importante

    Una vez asignadas y habilitadas las etiquetas en el conjunto de datos, asegúrese de conceder a los QuickSight autores permisos para ver todos los datos del conjunto de datos al crear un panel.

    Para dar permiso a QuickSight los autores para ver los datos del conjunto de datos, crea un archivo o consulta de permisos para usarlos como reglas del conjunto de datos. Para obtener más información, consulte Creación de reglas de conjunto de datos para seguridad de nivel de fila.

Después de crear una regla basada en etiquetas, aparece una nueva tabla Administrar reglas que muestra cómo se relacionan entre sí las reglas basadas en etiquetas. Para realizar cambios en las reglas que aparecen en la tabla Administrar reglas, elija el icono del lápiz que sigue a la regla. A continuación, añada o elimine etiquetas y seleccione Actualizar. Para aplicar la regla actualizada al conjunto de datos, seleccione Aplicar.

Tabla Administrar reglas con los iconos de edición y eliminación.

(Opcional) Adición de la condición OR a las etiquetas de RLS

También puede añadir la condición OR a las reglas basadas en etiquetas para personalizar aún más la forma en que se presentan los datos a los usuarios de su QuickSight cuenta. Cuando utilizas la condición OR con tus reglas basadas en etiquetas, QuickSight aparecen imágenes si al menos una etiqueta definida en la regla es válida.

Adición de la condición OR a las reglas basadas en etiquetas
  1. En la tabla Administrar reglas, elija Agregar condición OR.

    Cuadro de diálogo de Administrar etiquetas: botón Agregar condición OR.
  2. En la lista desplegable Seleccionar etiqueta que aparece, elija la etiqueta para la que quiere crear una condición OR. Puede agregar hasta 50 condiciones OR a la tabla Administrar reglas. Puede añadir varias etiquetas a una sola columna de un conjunto de datos, pero la regla debe incluir al menos una etiqueta de columna.

    Elija las etiquetas que se aplicarán a la condición OR.
  3. Seleccione Actualizar para añadir la condición a la regla y, a continuación, seleccione Aplicar para aplicar la regla actualizada al conjunto de datos.

    El cuadro de diálogo de Administrar reglas con las reglas de RLS y el botón Aplicar.

Adición de etiquetas de RLS a un conjunto de datos mediante la API

Como alternativa, puede configurar y habilitar la seguridad de nivel de fila basada en etiquetas en su conjunto de datos llamando a la operación de la API CreateDataSet o UpdateDataSet. Utilice los siguientes ejemplos para aprender cómo hacerlo.

CreateDataSet

El siguiente es un ejemplo de creación de un conjunto de datos que usa RLS con etiquetas. Asume el escenario de la empresa de logística descrito anteriormente. Las etiquetas se definen en el elemento row-level-permission-tag-configuration. Las etiquetas se definen en las columnas para las que desea proteger los datos. Para obtener más información sobre este elemento opcional, consulta RowLevelPermissionTagConfigurationla referencia de la QuickSight API de Amazon.

create-data-set --aws-account-id <value> --data-set-id <value> --name <value> --physical-table-map <value> [--logical-table-map <value>] --import-mode <value> [--column-groups <value>] [--field-folders <value>] [--permissions <value>] [--row-level-permission-data-set <value>] [--column-level-permission-rules <value>] [--tags <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] [--row-level-permission-tag-configuration '{ "Status": "ENABLED", "TagRules": [ { "TagKey": "tag_retailer_id", "ColumnName": "retailer_id", "TagMultiValueDelimiter": ",", "MatchAllValue": "*" }, { "TagKey": "tag_role", "ColumnName": "role" } ], "TagRuleConfigurations": [ tag_retailer_id ], [ tag_role ] }' ]

Las etiquetas de este ejemplo se definen en la parte TagRules del elemento. En este ejemplo, se definen dos etiquetas basadas en dos columnas:

  • La clave de etiqueta tag_retailer_id está definida para la columna retailer_id. En este caso, para la empresa de logística, se establece la seguridad a nivel de fila en función del distribuidor que accede a la aplicación.

  • La clave de etiqueta tag_role está definida para la columna role. En este caso, para la empresa de logística, esto establece una capa adicional de seguridad a nivel de fila basada en la función del usuario que accede a la aplicación desde un distribuidor específico. Un ejemplo es store_supervisor o manager.

Para cada etiqueta, puede definir TagMultiValueDelimiter y MatchAllValue. Son opcionales.

  • TagMultiValueDelimiter: esta opción puede ser cualquier cadena que desee utilizar para delimitar los valores cuando los pase en tiempo de ejecución. El valor puede tener hasta 10 caracteres como máximo. En este caso, se utiliza una coma como valor delimitador.

  • MatchAllValue: esta opción puede ser cualquier carácter que desee utilizar cuando desee filtrar por todos los valores de esa columna del conjunto de datos. En lugar de enumerar los valores uno por uno, puede usar el carácter. Si se especifica, este valor puede tener al menos un carácter o 256 caracteres como máximo. En este caso, se utiliza un asterisco como valor de coincidencia con todos.

Al configurar las etiquetas para las columnas del conjunto de datos, actívelas o desactívelas mediante la propiedad Status obligatoria. Para habilitar las reglas de etiquetas, use el valor ENABLED de esta propiedad. Al activar las reglas de etiquetas, puede usarlas para establecer los valores de las etiquetas en tiempo de ejecución, tal como se describe en Paso 2: asignación de valores a las etiquetas de RLS en tiempo de ejecución.

A continuación se muestra un ejemplo de definición de respuesta.

{ "Status": 201, "Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset", "DataSetId": "RLS-Dataset", "RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2" }
UpdateDataSet

UpdateDataSet

Puede usar la operación de la API de UpdateDataSet para añadir o actualizar las etiquetas de RLS de un conjunto de datos existente.

A continuación, se muestra un ejemplo de actualización de un conjunto de datos con etiquetas de RLS. Asume el escenario de la empresa de logística descrito anteriormente.

update-data-set --aws-account-id <value> --data-set-id <value> --name <value> --physical-table-map <value> [--logical-table-map <value>] --import-mode <value> [--column-groups <value> [--field-folders <value>] [--row-level-permission-data-set <value>] [--column-level-permission-rules <value>] [--cli-input-json <value>] [--generate-cli-skeleton <value>] [--row-level-permission-tag-configuration '{ "Status": "ENABLED", "TagRules": [ { "TagKey": "tag_retailer_id", "ColumnName": "retailer_id", "TagMultiValueDelimiter": ",", "MatchAllValue": "*" }, { "TagKey": "tag_role", "ColumnName": "role" } ], "TagRuleConfigurations": [ tag_retailer_id ], [ tag_role ] }' ]

A continuación se muestra un ejemplo de definición de respuesta.

{ "Status": 201, "Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset", "DataSetId": "RLS-Dataset", "RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2" }
importante

Una vez asignadas y habilitadas las etiquetas en el conjunto de datos, asegúrese de conceder a los QuickSight autores permisos para ver todos los datos del conjunto de datos al crear un panel.

Para dar permiso a QuickSight los autores para ver los datos del conjunto de datos, crea un archivo o consulta de permisos para usarlos como reglas del conjunto de datos. Para obtener más información, consulte Creación de reglas de conjunto de datos para seguridad de nivel de fila.

Para obtener más información sobre el RowLevelPermissionTagConfiguration elemento, consulta RowLevelPermissionTagConfigurationla referencia de la QuickSight API de Amazon.

Paso 2: asignación de valores a las etiquetas de RLS en tiempo de ejecución

Puede usar etiquetas para RLS solo para incrustaciones anónimas. Puede establecer valores para las etiquetas mediante la operación de la API de GenerateEmbedUrlForAnonymousUser.

El siguiente ejemplo muestra cómo asignar valores a las etiquetas de RLS que se definieron en el conjunto de datos en el paso anterior.

POST /accounts/AwsAccountId/embed-url/anonymous-user HTTP/1.1 Content-type: application/json { “AwsAccountId”: “string”, “SessionLifetimeInMinutes”: integer, “Namespace”: “string”, // The namespace to which the anonymous end user virtually belongs “SessionTags”: // Optional: Can be used for row-level security [ { “Key”: “tag_retailer_id”, “Value”: “West,Central,South” } { “Key”: “tag_role”, “Value”: “shift_manager” } ], “AuthorizedResourceArns”: [ “string” ], “ExperienceConfiguration”: { “Dashboard”: { “InitialDashboardId”: “string” // This is the initial dashboard ID the customer wants the user to land on. This ID goes in the output URL. } } }

A continuación se muestra un ejemplo de definición de respuesta.

HTTP/1.1 Status Content-type: application/json { "EmbedUrl": "string", "RequestId": "string" }

La compatibilidad con RLS sin registrar a los usuarios solo QuickSight se admite en la operación de la GenerateEmbedUrlForAnonymousUser API. En esta operación, en SessionTags, puede definir los valores de las etiquetas asociadas a las columnas del conjunto de datos.

En este caso, se definen las siguientes asignaciones:

  • Los valores West, Central y South se asignan a la etiqueta tag_retailer_id en tiempo de ejecución. Se usa una coma para el delimitador, que se definió en TagMultipleValueDelimiter en el conjunto de datos. Para usar los valores de llamada en la columna, puede establecer el valor en *, que se definió como MatchAllValue al crear la etiqueta.

  • El valor shift_manager se asigna a la etiqueta tag_role.

El usuario que utilice la URL generada solo podrá ver las filas que tengan el valor shift_manager en la columna role. Ese usuario solo puede ver el valor West, Central o South en la columna retailer_id.

Para obtener más información sobre cómo incrustar paneles para usuarios anónimos mediante la operación de GenerateEmbedUrlForAnonymousUser APIIncrustar paneles QuickSight de datos para usuarios anónimos (no registrados), consulte o GenerateEmbedUrlForAnonymousUseren la referencia de la API de Amazon QuickSight