Изменить активную политику федеративных пользователей AWS / федеративный токен (AWSJavaSDK) - PullRequest
0 голосов
/ 08 января 2019

Я использую этот API для получения федеративных токенов, которые позволят пользователям получать доступ к определенным ресурсам AWS, таким как S3 Buckets, и каталогам внутри этого сегмента ( AWSJavaSDK Get Federated Token ).

Можно ли отменить определенные аспекты их прикладной политики? Допустим, у этого пользователя есть доступ к определенному каталогу при первоначальном создании политики, тогда я хочу отменить только частичный доступ. Можно ли достичь этой функциональности без переиздания другого токена? Ниже приведен пример политики.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::productionapp"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::productionapp/*"]
    }
  ]
}

Есть ли другой способ добиться того, чего я здесь добиваюсь?

1 Ответ

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

Изменение разрешений, назначенных временным учетным данным, полученным из API федеративного токена, возможно только путем изменения разрешений пользователя IAM, который его создал. Этот пользователь не должен быть пользователем root, поскольку его разрешения не могут быть изменены.

Я бы, вероятно, использовал Шаг Функции для достижения этого:

  • Определите количество необходимых политик. Например, есть четыре пользователя A, B, C и D, которые будут использовать временные учетные данные. Через 1 час B и C больше не будут иметь доступа к определенным ресурсам.
  • Итак, нам нужны два пользователя IAM, один для группы A и B и один для группы B & C
  • Создание пользователей IAM для каждой группы пользователей, определенных для временных учетных данных
  • Создать лямбда-функцию GenerateTmpCredentials. Эта функция будет генерировать временные учетные данные для каждой группы пользователей с использованием соответствующих учетных данных IAM
  • Создать еще одну лямбда-функцию ChangePolicy. Эта функция создаст новый политика для группы пользователей, где частичный доступ должен быть отменен и назначить его пользователь IAM соответствующей группы пользователей
  • Теперь подключите его в пошаговом рабочем процессе функций (конечный автомат)

См. Шаблон конечного автомата для описанного выше рабочего процесса

{
  "StartAt": "GenerateTmpCredentials",
  "States": {
    "GenerateTmpCredentials": {
      "Type": "Task",
      "Resource": "<put arn of the GenerateTmpCredentials lambda>",
      "Next": "WaitOneHour"
    },
    "WaitOneHour": {
      "Type": "Wait",
      "Seconds": 3600,
      "Next": "ChangePolicy"
    },
    "ChangePolicy": {
      "Type": "Task",
      "Resource": "<put arn of the ChangePolicy lambda>",
      "End": true
    }
  }
}

Вышеупомянутый рабочий процесс сначала вызовет функцию GenerateTmpCredentials, затем подождет 1 час и после этого вызовет функцию политики ChangePolicy.

Вы можете запустить конечный автомат, используя API-шлюз или любую другую лямбду, в зависимости от ваших требований.

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