2016-04-28 3 views
1

Я хотел бы создать пользователя в IAM, который может в принципе что-либо делать (создавать, изменять и удалять) для ресурсов, созданных самим пользователем.Пользовательская роль или политика пользователя AWS IAM самостоятельно

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

Целью является создание шаблона CloudFormation, который может выполнять пользователь, не являющийся пользователем, но все же создающий все необходимые ресурсы (включая такие элементы, как профили экземпляров и роли выполнения lambda). Таким образом, все такие ресурсы могут управляться только владеющим пользователем, что позволяет автономии и изоляции.

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

ответ

1

Это отнюдь не идеальное решение, и я не уверен, если это то, что вам нужно, но недавно я сделал что-то подобное, и это, как я ее решил:

У нас есть роль, которая имеет AmazonElasticMapReduceFullAccess и политики Cloudformation для чтения (управляется амазоном) и еще одна настраиваемая политика с разрешением coloudformation:DeleteStack (для удаления ресурсов кластера EMR).

Вы можете ограничить политику IAM на уровне ресурсов. Например, пользовательские политики для удаления стеков выглядят следующим образом:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "cloudformation:DeleteStack" 
     ], 
     "Resource": "arn:aws:cloudformation:*:*:stack/EMRCluster*" 
    } 
    ] 
} 

Как это работает в том, что, когда пользователь нуждается в кластере ОГО, они берут на себя роль и создать стек с именем EMRCluster<date>-<UUID> и когда они сделаны они удалите ресурсы кластера, используя Cloudformation. Это, строго говоря, не обязательно необходимо, поскольку пользователь уже имеет полный доступ к EMR и может удалять ресурсы (не только его) с веб-консоли EMR или через API-интерфейс boto3 EMR ... Это просто упрощает и позволяет пользователю просто сделать один вызов Cloudformation вместо управления EMR напрямую. Может показаться немного забавным создание и удаление кластеров с облачной информацией вместо прямого, но гораздо проще управлять одним шаблоном JSON, чем ваша настраиваемая конфигурация ...

Если вам не нравится, что ваш пользователь должен иметь полное разрешение на полный доступ к EMR (довольно много), я предлагаю вам поиграть с политикой полного доступа EMR, чтобы позволить пользователю создавать только определенные ресурсы и ограничивать удаление ресурсов аналогичным образом. Может быть, вы можете дать пользователю только разрешение называть Cloudformation с определенным шаблоном вместо этого? Я не уверен, что это будет работать без других разрешений, хотя ...

Кроме того, вы можете установить VisibleToAllUsers=False в свой шаблон (see the docs), так что только пользователь, создавший его, должен иметь возможность управлять кластером.

Смежные вопросы