обновить набор записей Route53 - кросс-аккаунт - PullRequest
0 голосов
/ 29 января 2020

Возникает проблема с доступом при попытке обновить набор записей с помощью лямбда-функции.

  • Лямбда - учетная запись A
  • Route53 - учетная запись B

У меня есть роль IAM, привязанная к лямбде в учетной записи A, с разрешением на роль роли IAM в учетной записи B. Роль IAM в учетной записи B имеет доступ для обновления набора записей в учетной записи B.

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

Может ли кто-нибудь мне помочь, если я что-то здесь упустил или мне нужна дополнительная настройка.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Вы используете лямбда-функцию в Account-A для вызова маршрута 53 в Account-B.

Для этого потребуется:

  • Роль IAM (Role-A) в Account-A, который назначен лямбда-функции. Он должен предоставить разрешение на вызов AssumeRole() с Resource, установленным на ARN Role-B в Account-B:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<Account-B>:role/role-b"
        }
    ]
}

И с такими доверительными отношениями:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
  • Роль IAM (Role-B) в Account-B, которая имеет разрешение на вызов Маршрута 53. Она также должна иметь политику доверия , позволяющую принимать ее Role-A в Account-A:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "route53:*",
            "Resource": "*"
        }
    ]
}

(Это слишком мощная политика. Было бы лучше ограничить ее указанными c Маршрутом 53 необходимых действий.)

И это доверительные отношения (указывающие на роль, созданную на предыдущем шаге):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<Account-A>:role/role-a"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
0 голосов
/ 29 января 2020

Вам нужно использовать STS, чтобы получить токен для вызова Route53 для учетной записи B. Вот документы по STS в boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts.html#STS .Client.assume_role

Вы будете получить учетные данные, которые вы будете использовать для вызова Route53.

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