Как разрешить роли и учетной записи, и всем Lambdas взять на себя роль? - PullRequest
2 голосов
/ 07 апреля 2020

У меня есть роль, которую я хотел бы разрешить как моей учетной записи root, так и всем моим Lambdas иметь возможность принять ее.

В доверительных отношениях у меня есть следующее:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXX:root",
        "Service": "lambda.amazonaws.com"

      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Однако, похоже, это не работает. Когда я пытаюсь взять на себя роль в своем коде в Lambda, я получаю сообщение об ошибке отказа в доступе.

Если бы мне пришлось удалить "Service": "lambda.amazonaws.com" и добавить указанную c роль лямбды к Principal.AWS, это сработает. Но у меня так много лямбд, и я не хочу добавлять каждую лямбда-роль в основной список.

Как установить доверительные отношения, чтобы учетная запись root и все лямбды могли принять эта роль?

1 Ответ

2 голосов
/ 07 апреля 2020

Указание "Service": "lambda.amazonaws.com" означает, что служба Lambda может запускать Lambda с этой ролью. Это не значит, что лямбда может взять на себя эту роль, как только она будет запущена.

Я думаю, что самое простое решение состоит из двух частей: вы задаете принципала в роли предполагаемая как свою AWS account, тогда вы даете возможность принять эту роль в роли выполнения Lambda, используя такой оператор:

{
    "Version": "2012-10-17",
    "Statement": {
        "Action": [
            "sts:AssumeRole"
        ],
        "Resource": [
            "arn:aws:iam::123456789012:role/AssumableRole"
        ],
        "Effect": "Allow"
    }
}

. Вы бы прикрепили этот же оператор к группе, содержащей пользователей, которым разрешено взять на себя роль.

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