Запрет AWS CloudFormation для удаления DynamoDB с помощью IAM - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь создать роль AWS, которая не позволяет CloudFormation удалить таблицу.Например, я создал свою таблицу следующим образом:

UsersDynamoDBTable:
    Type: AWS::DynamoDB::Table
    Description: Users DynamoDB Table
    Properties:
      AttributeDefinitions:
        - AttributeName: hashKey
          AttributeType: S
        - AttributeName: rangeKey
          AttributeType: S
      KeySchema:
        - AttributeName: hashKey
          KeyType: HASH
        - AttributeName: rangeKey
          KeyType: RANGE
      BillingMode: PAY_PER_REQUEST
      GlobalSecondaryIndexes:
        - IndexName: index-rangeKey
          KeySchema:
            - AttributeName: rangeKey
              KeyType: HASH
            - AttributeName: hashKey
              KeyType: RANGE
          Projection:
            ProjectionType: ALL

Теперь предположим, что разработчик случайно удалил эти строки и обновил стек.Таким образом, таблица со всеми данными будет удалена.Поэтому я хотел бы создать роль, которая не позволяет CloudFormation удалять таблицы DynamoDB.Моей первой попыткой было создать нижеприведенную роль, но она не сработала.

PreventCloudFormationDeleteTableIAMRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - cloudformation.amazonaws.com
            Action:
              - sts:AssumeRole
      Policies:
        - PolicyName: PreventTableDeletePolicy
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Deny
                Action:
                  - dynamodb:DeleteTable
                Resource:
                  - !Join
                    - '/'
                    - - !Join [':', ['arn:aws:dynamodb', !Sub '${AWS::Region}', '*', 'table']]
                      - !Join ['', [!Sub '${StackName}', '*']]

Мне не хватает какой-либо конфигурации роли?

Спасибо.

Ответы [ 2 ]

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

Учитывая, что роль должным образом связана с вызывающим пользователем / принципалом, возможно ли, что политика Arn из этого объединения не соответствует таблице Arn?

Также рассмотрите возможность сохранения ресурса вместо отказа в операции: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html

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

Вы можете использовать DeletionPolicy из RETAIN, чтобы предотвратить удаление таблицы при удалении стека или таблицы из шаблона.Также новый UpdateReplacePolicy не позволит CloudFormation удалять таблицу, когда это необходимо сделать из-за изменений первичного ключа.

...