AWS Quicksight: panel de incrustación

También puede incrustar sus paneles de Quicksight en aplicaciones / páginas web externas o puede controlar el acceso de los usuarios mediante el servicio AWS Cognito. Para realizar el control de usuarios, puede crear un grupo de usuarios y un grupo de identidades en Cognito y asignar políticas de panel de control Embed al grupo de identidades.

AWS Cognito es un servicio de IAM que permite a los administradores crear y administrar usuarios temporales para proporcionar acceso a las aplicaciones. Con el uso del grupo de identidades, puede administrar los permisos en estos grupos de usuarios.

Veamos cómo podemos generar una URL de panel segura y realizar el control del usuario:

Paso 1: creación de grupos de usuarios y usuarios

Cree un grupo de usuarios en AWS Cognito y cree usuarios. IrAmazon Cognito → Manage User Pools → Create a User Pool.

Paso 2: creación de un grupo de identidades

Cuando se crea el grupo de usuarios, el siguiente paso es crear un grupo de identidades. Irhttps://console.aws.amazon.com/cognito/home?region=us-east-1

Haga clic en "Crear nuevo grupo de identidades".

Ingrese el nombre apropiado de un grupo de identidades. Vaya a la sección Proveedores de autenticación y seleccione la opción "Cognito".

Paso 3: creación de roles de Cognito

Ingrese el ID del grupo de usuarios (su ID del grupo de usuarios) y el ID del cliente de la aplicación (vaya a Clientes de la aplicación en el grupo de usuarios y copie el ID).

Lo siguiente es hacer clic en 'Crear grupo' y hacer clic en 'Permitir' para crear roles del grupo de identidades en IAM. Creará 2 roles de Cognito.

Paso 4: asignación de una política personalizada

El siguiente paso es asignar una política personalizada a los roles de identidad creados en el paso anterior:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Action": "quicksight:RegisterUser",
         "Resource": "*",
         "Effect": "Allow"
      },
      {
         "Action": "quicksight:GetDashboardEmbedUrl",
         "Resource": "*",
         "Effect": "Allow"
      },
      {
         "Action": "sts:AssumeRole",
         "Resource": "*",
         "Effect": "Allow"
      }
   ]
}

Puede pasar el nombre de recurso de Amazon (ARN) del panel de control en vista rápida: GetDashboardEmbedUrl ”en lugar de“ * ”para restringir el acceso del usuario a un solo panel.

Paso 5: Iniciar sesión en la aplicación Cognito

El siguiente paso es iniciar sesión en la aplicación Cognito con credenciales de usuario en el grupo de usuarios. Cuando el usuario inicia sesión en la aplicación, Cognito genera 3 tokens:

  • IDToken
  • AccessToken
  • Actualizar Token

Para crear un usuario de IAM temporal, las credenciales son las que se muestran a continuación:

AWS.config.region = 'us-east-1';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId:"Identity pool ID", Logins: {
      'cognito-idp.us-east-1.amazonaws.com/UserPoolID': AccessToken
   }
});

Para generar credenciales de IAM temporales, debe llamar al método sts.assume role con los siguientes parámetros:

var params = {
   RoleArn: "Cognito Identity role arn", RoleSessionName: "Session name"
};
sts.assumeRole(params, function (err, data) {
   if (err) console.log( err, err.stack); 
   // an error occurred
   else {
      console.log(data);
   })
}

Paso 6: registrar al usuario en Quicksight

El siguiente paso es registrar al usuario en Quicksight usando "quicksight.registerUser" para las credenciales generadas en el paso 3 con los siguientes parámetros:

var params = {
   AwsAccountId: “account id”,
   Email: 'email',
   IdentityType: 'IAM' ,
   Namespace: 'default',
   UserRole: ADMIN | AUTHOR | READER | RESTRICTED_AUTHOR | RESTRICTED_READER,
   IamArn: 'Cognito Identity role arn',
   SessionName: 'session name given in the assume role creation',
};
quicksight.registerUser(params, function (err, data1) {
   if (err) console.log("err register user”); 
   // an error occurred
   else {
      // console.log("Register User1”);
   }
})

Paso 7: actualización del archivo de configuración de AWS

Lo siguiente es actualizar la configuración de AWS para el usuario generada en el paso 5.

AWS.config.update({
   accessKeyId: AccessToken,
   secretAccessKey: SecretAccessKey ,
   sessionToken: SessionToken,
   "region": Region
});

Paso 8: generación de la URL de inserción para el panel de Quicksight

Con las credenciales creadas en el paso 5, llame a quicksight.getDashboardEmbedUrl con los siguientes parámetros para generar la URL.

var params = {
   AwsAccountId: "Enter AWS account ID",
   DashboardId: "Enter dashboard Id",
   IdentityType: "IAM",
   ResetDisabled: true,
   SessionLifetimeInMinutes: between 15 to 600 minutes,
   UndoRedoDisabled: True | False
}
quicksight.getDashboardEmbedUrl(params,function (err, data) {
   if (!err) {
      console.log(data);
   } else {
      console.log(err);
   }
});

Debe llamar a "QuickSightEmbedding.embedDashboard" desde su aplicación utilizando la URL generada anteriormente.

Al igual que Amazon Quicksight, el panel integrado también admite las siguientes funciones:

  • Opción de desglose
  • Acciones personalizadas (enlace a una nueva pestaña)
  • Filtros en pantalla
  • Descarga a CSV
  • Ordenar por imágenes
  • Habilitación del informe por correo electrónico
  • Restablecer el tablero a la opción predeterminada
  • Deshacer / rehacer acciones en el tablero