#amazon-web-services #amazon-iam #amazon-quicksight
#amazon-web-services #amazon-iam #amazon-quicksight
Вопрос:
Я пытаюсь использовать функцию встраивания URL панели мониторинга QuickSight в мой ASP.NET Проект MVC. Для тестирования я просто пытаюсь вывести URL-адрес для встраивания в строку. Вот основная часть моего кода:
var awsCredentials = new BasicAWSCredentials("redacted", "redacted");
AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient(awsCredentials);
var tokenServiceRequest = stsClient.GetSessionToken();
var client = new AmazonQuickSightClient(
tokenServiceRequest.Credentials.AccessKeyId,
tokenServiceRequest.Credentials.SecretAccessKey,
tokenServiceRequest.Credentials.SessionToken,
Amazon.RegionEndpoint.APSoutheast2);
try
{
string machineTypeEmbedUrl =
client.GetDashboardEmbedUrlAsync(new GetDashboardEmbedUrlRequest
{
AwsAccountId = "redacted",
DashboardId = "redacted",
IdentityType = IdentityType.IAM,
ResetDisabled = true,
SessionLifetimeInMinutes = 100,
UndoRedoDisabled = false
}).Result.EmbedUrl;
}
catch (Exception ex)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest,ex.Message);
}
Для поддержки требуемых разрешений я настроил пользователя IAM с разрешенной ролью STS Assume следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1551593192075",
"Action": [
"sts:AssumeRole"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::redacted:role/assume-quicksight-role"
}
]
}
Я настроил указанную выше роль со следующими разрешениями и установил ее политику доверия, чтобы указанный выше пользователь IAM мог принять ее на себя.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "quicksight:RegisterUser",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "quicksight:GetDashboardEmbedUrl",
"Resource": "arn:aws:quicksight:ap-southeast-2:redacted:dashboard/redacted",
"Effect": "Allow"
}
]
}
Итак, насколько я могу судить, это должно сработать. При отладке выясняется, что я получаю токен сеанса, который передается в запрос embedUrl, однако я получаю следующую ошибку:
InnerException = {«Пользователь: arn:aws:iam:::user/api-dev-quicksight-пользователь не авторизован для выполнения: quicksight:GetDashboardEmbedUrl на ресурсе: arn: aws:quicksight:ap-southeast-2::dashboard/»}
Я не уверен, почему это происходит? У меня есть пользователь, который может взять на себя нужную роль, и у этой роли есть правильные разрешения для рассматриваемой панели мониторинга. Чего мне здесь не хватает?
Ответ №1:
Попробуйте изменить свою роль следующим образом (обратите внимание на ::
двойное двоеточие перед dashboard
):
...
"Action": "quicksight:GetDashboardEmbedUrl",
"Resource": "arn:aws:quicksight:ap-southeast-2::dashboard/*",
"Effect": "Allow"
...
Это должно позволить пользователю получить доступ ко всем вспомогательным ресурсам под панелью мониторинга.
Чтобы следовать принципу наименьших привилегий, рекомендованному AWS, вы должны перечислить все свои ресурсы:
...
"Resource": [
"arn:aws:quicksight:ap-southeast-2::dashboard/",
"arn:aws:quicksight:ap-southeast-2::dashboard/redacted"]
...
Комментарии:
1. Привет, Барни, я попробовал ваше первое предложение по удалению учетной записи и добавлению звездочки в конце, но это та же ошибка -Пользователь: arn: aws: iam::отредактированный:пользователь/api-dev-quicksight-пользователь не авторизован для выполнения: quicksight:GetDashboardEmbedUrl на ресурсе: arn: aws: quicksight: ap-southeast-2: отредактированный: панель мониторинга / отредактированный идентификатор dashboard_id
2. Интересно, что при редактировании роли консоль AWS сообщает мне, что GetDashboardEmbedUrl не распознан? — IAM не распознает одно или несколько действий. Название действия может содержать опечатку или может быть частью предварительно просмотренного или пользовательского сервиса
3. На самом деле, ошибка теперь другая. Он говорит, что
redacted_dashboard_id
сейчас недоступен. Попробуйте добавить правильный ресурс в список. Или вы можете установить для ресурсов роли значениеarn:aws:quicksight:ap-southeast-2:redacted:*
(обратите внимание на звездочку в конце).4. Что-то «выключено», я установил для ресурса значение «*», и это ВСЕ та же ошибка. Возможно, я что-то напутал в своем IAM User / доверительных отношениях / роли IAM / Политике IAM (для QuickSight), но я думаю, что все так и должно быть:/ Есть советы?
5. Итак, я, кажется, запутался в том, как заставить пользователя IAM взять на себя роль, имеющую требуемые разрешения, поскольку, когда я добавляю администратора к пользователю, это работает (поскольку теперь я получаю сообщение об ошибке, что вы можете встраивать панели мониторинга только на предприятии). Похоже, мне нужно вернуться к учебной доске о том, как заставить пользователя IAM взять на себя роль!