注意:此答案仅在您使用 AWS Cognito 时适用
要生成 Quicksight 安全仪表板 URL,请按照以下步骤操作:
第 1 步:创建一个新的身份池。转到https://console.aws.amazon.com/cognito/home?region=u-east-1,点击‘创建新身份池’
- 给一个合适的名字。
- 转到Authentication Providers部分,选择Cognito。
- 提供用户池 ID(您的用户池 ID)和应用客户端 ID(转到应用
用户池中的客户端和副本 ID)。
- 点击“创建池”。然后点击‘允许’创建角色
IAM 中的身份池。
第 2 步:将自定义策略分配给身份池角色
{
“版本”:“2012-10-17”,
“陈述”: [
{
"Action": "quicksight:RegisterUser",
“资源”:“*”,
“效果”:“允许”
},
{
"Action": "quicksight:GetDashboardEmbedUrl",
“资源”:“*”,
“效果”:“允许”
},
{
"动作": "sts:AssumeRole",
“资源”:“*”,
“效果”:“允许”
}
]
}
注意:如果您想限制用户只能使用一个仪表板,请将 * 替换为 quicksight 中的仪表板 ARN 名称:GetDashboardEmbedUrl,
- 然后转到 IAM 中的角色。
- 选择身份池的 IAM 角色并分配自定义策略
角色。
第 3 步:配置生成临时 IAM(STS) 用户
为了创建临时 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 role
具有以下参数的方法。
变量参数 = {
RoleArn: "Cognito Identity 角色 arn",
RoleSessionName: "会话名称"
};
sts.assumeRole(参数,函数(错误,数据){
if (err) console.log(err, err.stack); // 发生错误
别的 {
控制台.log(数据);
})
- 您可以为
用户。
- 现在,我们将获得 AccessKeyId、SecretAccessKey 和 Session
临时用户的令牌。
第 4 步:在 Quicksight 中注册用户
- 借助 步骤 3 中使用的相同 Cognito 凭据,我们将
使用 quicksight.registerUser 在 quicksight 中注册用户
具有以下参数的方法
变量参数 = {
AwsAccountId:“帐户 ID”,
电子邮件:'电子邮件',
身份类型:'IAM',
命名空间:'默认',
用户角色:管理员 |作者 |读者 | RESTRICTED_AUTHOR | RESTRICTED_READER,
IamArn: 'Cognito 身份角色 arn',
SessionName: '假设角色创建中给出的会话名称',
};
quicksight.registerUser(params, function (err, data1) {
if (err) console.log("err register user”); // an error occurred
else {
// console.log("Register User1”);
}
});
第 5 步:使用新凭证更新 AWS 配置。
- 下面的代码显示了如何使用新配置 AWS.config()
生成的凭据第 3 步。
AWS.config.update({
accessKeyId:访问令牌,
秘密访问密钥:秘密访问密钥,
sessionToken:会话令牌,
“地区”:地区
});
第 6 步:为仪表板生成 EmbedURL:
- 通过使用在步骤 3 中生成的凭据,我们将调用
quicksight.getDashboardEmbedUrl 使用以下参数
变量参数 = {
AwsAccountId: "账户 ID",
DashboardId: "仪表板 ID",
身份类型:“IAM”,
重置禁用:真,
SessionLifetimeInMinutes:15 到 600 分钟之间,
UndoRedoDisabled: 真 |错误的
}
quicksight.getDashboardEmbedUrl(参数,
功能(错误,数据){
如果(!错误){
控制台.log(数据);
} 别的 {
控制台日志(错误);
}
}
);
- 现在,我们将获取仪表板的嵌入网址。
- 从前端调用 QuickSightEmbedding.embedDashboard
上面生成的 url 的帮助。
- 结果将是嵌入在您的应用程序中的仪表板
过滤控件。