CloudFormation - IAM - Контроль доступа с тегами - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть это требование для создания роли, которую могут использовать разработчики. У нас есть только одна учетная запись для Dev и Prod (я не рекомендую, я знаю). Созданные ресурсы помечаются с помощью dev или prod для идентификации среды. Требование заключается в том, что разработчики могут иметь ReadOnlyAccess в обеих средах, но могут иметь полный доступ только к ресурсам, помеченным 'dev'

Так что, если разработчик хочет создать ресурс, он должен пометить его с помощью dev. Также он может изменять другие ресурсы, созданные другими пользователями, которые также помечены как dev. Из документации AWS я создал шаблон CloudFormation с приведенным ниже фрагментом, но заметил, что разрешен только ReadOnlyAccess. Разработчик не может создавать ресурсы с тегом «dev» и не может изменять ресурсы, которые уже имеют тег «dev». Любые указатели будут полезны.

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

RoleDeveloper:
Type: AWS::IAM::Role
Properties:
  RoleName: DeveloperRole
  AssumeRolePolicyDocument:
    Version: 2012-10-17
    Statement: 
      - Effect: Allow
        Principal:
          AWS: !Sub arn:aws:iam::${UserAccountId}:root
        Action:
          - 'sts:AssumeRole'
  Path: /      
  Policies:
    - PolicyName: FullDeveloperAccessWithDevTag
      PolicyDocument:
        Version: 2012-10-17
        Statement: 
          - Effect: Allow
            Action: "*"
            Resource: "*"
            Condition:
              StringEquals:
                aws:ResourceTag/env:
                  - dev
  ManagedPolicyArns:
    - arn:aws:iam::aws:policy/ReadOnlyAccess

1 Ответ

0 голосов
/ 07 февраля 2020

Подстановочный знак не проблема. Скорее проблема в том, что не каждый вызов API будет соответствовать условию.

Например, s3:ListBucket не принимает тег как условие. Кроме того, dynamodb:ListTables.

Кроме того, хотя некоторые команды (которые я называю Действиями) будут принимать условия, они не обязательно будут принимать теги в качестве Условий.

Вот документация, которая показывает условия для DynamoDB: Разрешения API DynamoDB: справочник по действиям, ресурсам и условиям - Amazon DynamoDB . Я не вижу ссылок на теги.

Однако теги доступны в качестве ключей условий для Amazon EC2: Действия, ресурсы и ключи условий для Amazon EC2 - AWS Управление идентификацией и доступом

Таким образом, некоторые сервисы и вызовы API просто не могут быть ограничены тегами.

...