Я играл с настройкой прав доступа к ресурсам на основе тегов в EC2, используя подход, подобный тому, который описан в ответе на следующий вопрос: Могу ли я ограничить группу пользователей в доступе / запуске / прекратить только определенные AMI или экземпляры EC2?
Я использовал это в сочетании с лямбда-функцией для автоматической пометки экземпляров EC2, устанавливая Owner
и PrincipalId
на основе пользователя IAM, который вызвал соответствующее действие ec2:RunInstances
. Подход, который я использовал для этого, описан в следующем сообщении в блоге AWS: Как автоматически помечать ресурсы Amazon EC2 в ответ на события API
Сочетание этих двух подходов привело к тому, что мои ограниченные пользовательские разрешения для EC2 выглядели так в моем шаблоне CloudFormation:
LimitedEC2Policy:
Type: "AWS::IAM::Policy"
Properties:
PolicyName: UserLimitedEC2
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: ec2:RunInstances
Resource:
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:subnet/${PrivateSubnetA}'
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:subnet/${PrivateSubnetB}'
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:subnet/${PrivateSubnetC}'
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:security-group/${BasicSSHAccessSecurityGroup.GroupId}'
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:key-pair/${AuthorizedKeyPair}'
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:network-interface/*'
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:instance/*'
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:volume/*'
- !Sub 'arn:aws:ec2:${AWS::Region}::image/ami-*'
Condition:
StringLikeIfExists:
ec2:Vpc: !Ref Vpc
StringLikeIfExists:
ec2:InstanceType: !Ref EC2AllowedInstanceTypes
- Effect: Allow
Action:
- ec2:TerminateInstances
- ec2:StopInstances
- ec2:StartInstances
Resource:
- !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:instance/*'
Condition:
StringEquals:
ec2:ResourceTag/Owner: !Ref UserName
Users:
- !Ref IAMUser
Эти разрешения IAM ограничивают пользователей для запуска экземпляров EC2 в пределах ограниченного набора подсетей, в пределах одного VPC и группы безопасности. Тогда пользователи могут только запускать / останавливать / завершать экземпляры, которые были помечены их пользователем IAM в теге Owner
.
Я хотел бы, чтобы пользователи могли также создавать и удалять любые дополнительные теги в своих ресурсах EC2, например устанавливать тег Name
. Что я не могу понять, так это то, как я могу сделать это, не позволяя им также изменять теги Owner
и PrincipalId
на ресурсах, которые они не «владеют».
Можно ли ограничить действия ec2:createTags
и ec2:deleteTags
, чтобы пользователи не могли устанавливать определенные теги?