Создание роли службы IAM, позволяющей Amazon Cognito отправлять SMS-сообщения для MFA - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь настроить Congito для управления моим пулом пользователей и настройки проверки телефона. К сожалению, документы AWS кажутся устаревшими.

Согласно этому документу, я должен увидеть кнопку создания роли IAM на моей странице coginto, но ее там нет: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-mfa.html

Cognito page

Я предполагаю, что они убрали эту опцию, но я также не вижу способа вручную создать правильную роль. Cognito не указан в качестве одной из служб, для которых вы можете создать роль.

enter image description here

На изображении выше есть вкладка «Идентификация в Интернете», поэтому я попытался ее использовать. Конечно, есть возможность создать роль и даже предоставить ей доступ SNS, необходимый для отправки SMS, но это не роль службы. Сгенерированный ARN не имеет / service-role / path, который имеет первое изображение. Я не могу найти способ изменить arn, чтобы включить его, и если я просто пытаюсь запустить свое приложение без него, я все равно получаю сообщение об ошибке:

[00:20:30] ошибка при регистрации объекта { [00:20:30] "code": "InvalidSmsRoleTrustRelationshipException", [00:20:30] «message»: «Роль не имеет доверительных отношений, позволяющих Cognito взять на себя роль», [00:20:30] "name": "InvalidSmsRoleTrustRelationshipException", [00:20:30]}

Cognito сломан прямо сейчас ?? Я уверен, что что-то упустил ...

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Для повторного заполнения роли Cognito, которую вы удалили, необходимо использовать aws cli, это невозможно в веб-интерфейсе.

aws iam create-role --path / service-role /--role-name words --assume-role-policy-document file: // morewords

0 голосов
/ 21 марта 2019

Как и здесь, вы должны использовать CLI для создания роли службы с флагом --path, чтобы получить этот префикс.Однако даже после его создания он все равно не будет работать для Cognito.Да, есть значение ExternalId, которое можно установить на прежнее значение, если вы вызываете cognito-idp get-user-pool-mfa-config --user-pool-id=...

Однако, даже если вы обновите его, чтобы отобразить тот же идентификатор, оно все равноможет не сработать (не для меня).Итак, вот фокус.Попросите веб-консоль AWS заново создать роль для вас.Для этого просто используйте новый пул пользователей.

Убедитесь, что у вас удалена старая роль.Настройте новый пул пользователей, включите MFA, и в нижней части этой страницы настроек вы увидите поле ввода с кнопкой «Создать роль», чтобы убедиться, что имя соответствует нашему предыдущему имени (даже не думайте, что здесь разрешены слэши).в любом случае).

Это создаст роль IAM.Затем вы должны отредактировать его и вернуть это исходное значение ExternalId.Опять же, вы можете найти это с помощью команды get-user-pool-mfa-config.

Обратите внимание, что у нового созданного пула теперь будет та же проблема.Это не позволит изменить настройки, потому что все равно будет думать, что роль находится в процессе создания.Тем не менее, ваш старый бассейн будет в порядке.Вы можете выполнить другую команду CLI, чтобы полностью отключить MFA для этого нового пула, если вам нужно / нужно с помощью aws cognito-idp set-user-pool-mfa-config --user-pool-id=xxx --region=xxx--mfa-configuration OFF, и / или просто удалить этот временный пул пользователей, который вы создали исключительно для повторного создания удаленной роли.

0 голосов
/ 28 октября 2018

Я только что попробовал, и я получил кнопку «Создать роль», но, глядя на ваш пользовательский интерфейс, вы уже создали роль, и в этот момент AWS скрывает ее и просто показывает арн.о роли, которая была создана.

Тем не менее, если вам нужно воссоздать ее с нуля по любой причине, вы можете сделать это;однако вам придется покинуть визуальный редактор.Самый простой способ назначить что-либо на страницу доверительных отношений, а затем, как только роль будет создана, выберите ее, перейдите на вкладку Доверительные отношения , нажмите Изменить доверительные отношения и затем заменитеjson со следующим:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "cognito-idp.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "generate-your-own-uuid-here"
        }
      }
    }
  ]
}

nb для полноты, встроенная политика для роли также должна быть:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:publish"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
...