我们公司已经建立了一个自定义管理门户网站,我们希望为我们的用户提供一个名为“报告”的新链接,该链接将链接到aws quicksight仪表板,但我们不希望他们再次以快速方式登录我们无法使用该应用程序(管理员门户网站)使用特定角色自动登录它们以查看仪表板。我们怎样才能做到这一点?
答案 0 :(得分:0)
AWS支持单点登录。 我相信您可以为用户使用该功能。 请点击here了解更多信息
答案 1 :(得分:0)
注意::仅当您使用AWS Cognito时,此答案才适用
为了生成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);
}
}
);
现在,我们将获得仪表板的嵌入URL。 在上面生成的网址的帮助下,从前端调用 QuickSightEmbedding.embedDashboard 。 结果将是带有筛选器控件的嵌入式仪表板。