如何获取/生成AWS Quicksight安全仪表板网址

时间:2018-12-14 03:55:09

标签: amazon-web-services amazon-quicksight

我想将Quicksight仪表板嵌入到应用程序中。我浏览了AWS Quicksight文档,但没有找到安全的签名仪表板URL。

3 个答案:

答案 0 :(得分:1)

为了生成Quicksight安全仪表板网址,请执行以下步骤:

步骤1:创建一个新的身份池。转到https://console.aws.amazon.com/cognito/home?region=us-east-1,点击“创建新的身份库”

给一个适当的名字。 转到身份验证提供程序部分,选择认知。 给出用户池ID(您的用户池ID)和App Client ID(转到userpool中的App Clients并复制ID)。 点击“创建池” 。然后点击“允许” 以在IAM中创建身份池的角色。

步骤2:将自定义策略分配给身份池角色

使用以下JSON创建自定义策略。

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

注意:如果要将用户限制为仅一个仪表板,请在 quicksight:GetDashboardEmbedUrl 中将*替换为仪表板ARN 名称。 ,

然后转到IAM中的角色。 选择身份池的IAM角色,然后为该角色分配自定义策略。

步骤3:用于生成临时IAM(STS)用户的配置

使用用户凭据登录到您的应用程序。 为了创建临时IAM用户,我们使用Cognito凭据。 用户登录后,Cognito会生成3个令牌ID- IDToken,AccessToken,RefreshToken 。这些令牌将发送到您的应用程序服务器。

对于创建临时IAM用户,我们使用Cognito访问令牌,凭据如下所示。

 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
           }
       });

为生成临时IAM凭据,我们使用以下参数调用sts.assume角色方法。

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);
})

您可以为用户添加其他参数,例如持续时间(以秒为单位)。 现在,我们将获得临时用户的 AccessKeyId,SecretAccessKey 会话令牌

步骤4:在Quicksight中注册用户

借助第3步中使用的相同Cognito凭据,我们将通过具有以下参数的 quicksight.registerUser 方法来快速注册用户 >

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”);
                   }
               })

现在,该用户将立即注册。

步骤5:使用新凭据更新AWS配置。

以下代码显示了如何使用第3步生成的新凭证配置AWS.config()。

AWS.config.update({

                   accessKeyId: AccessToken,
                   secretAccessKey: SecretAccessKey ,
                   sessionToken: SessionToken, 
                   "region": Region
                 });

第6步::为仪表板生成EmbedURL:

通过使用第3步中生成的凭据,我们将使用以下参数调用 quicksight.getDashboardEmbedUrl

var params = {
  AwsAccountId: "account ID",
  DashboardId: "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);
    }
  });

现在,我们将获得仪表板的嵌入网址。

借助上述生成的网址,从前端调用 QuickSightEmbedding.embedDashboard 。 结果将是带有筛选器控件的嵌入式仪表板。

答案 1 :(得分:0)

此链接将为您提供aws cli https://aws.amazon.com/blogs/big-data/embed-interactive-dashboards-in-your-application-with-amazon-quicksight/

中的需求

这是第3步cli cmd,可为您提供嵌入的URL(我能够执行)

aws quicksight get-dashboard-embed-url --aws-account-id (your account ID) --dashboard-id (your dashgboard ID) --identity-type IAM

还有许多其他依赖项可以使嵌入的仪表板按aws dcouments。我无法成功做到这一点。 GL,让我知道您是否成功!

答案 2 :(得分:0)

PHP实现

(除了Siva Sumanth的回答)

https://gist.github.com/evgalak/d0d1adf099e2d7bff741c16a89bf30ba