Разрешить лямбда принимать роль роли IAM, созданной из пула удостоверений? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь обменять токен, который мне дал amazon cognito, на роль, определенную в пуле удостоверений, используя "accept_role_with_web_identity" из boto3, но он выдает мне эту ошибку:

"botocore.exceptions.ClientError: Произошла ошибка (AccessDenied) при вызове операции AssumeRoleWithWebIdentity: Доступ запрещен "

Я должен что-то пропустить в политике?

Я уже пытался изменить политику длялямбда, к этому:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogStream"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:xxx:log-group:/aws/lambda/xxx:*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:xxx:log-group:/aws/lambda/rxx:*:*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "PermitAssumeRole",
            "Action": [
                "sts:AssumeRole"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iam::xxx:role/Auth_Role",
                "arn:aws:iam::xxx:role/Cognito_Unauth_Role"
            ]
        }
    ]
}

Мой код на boto3:

x = trial.assume_role_with_web_identity(RoleArn="arn:aws:iam::xxx:role/xxx",
                                         RoleSessionName="xx",WebIdentityToken=response['xx']['xx'])

Я ожидаю, что он сможет взять на себя роль созданного мной IAM.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Как сказал @franziga, отделите свою политику доверия (оператор PermitAssumeRole) от остальной политики (которая является политикой разрешений).Кроме того, ваша политика доверия, если Lambda должна взять на себя эту роль, должна быть такой же, как

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

ALso, если вы хотите, чтобы ваш Lambda имел такой же доступ, как и разрешения в ваших Cognito authenticated & unauthenticatedролей, вам нужно будет добавить эти разрешения в роль для Lambda.Насколько я знаю, вы не можете назначить роль другой роли.

0 голосов
/ 15 февраля 2019

Политика доверия должна быть отделена от политики разрешений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...