Запрет AWS CloudFormation для удаления DynamoDB с помощью IAM
Я пытаюсь создать роль 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}', '*']]
Я что-то пропустил?
Спасибо.
3 ответа
Вы можете использовать DeletionPolicy
из RETAIN
чтобы предотвратить удаление таблицы при удалении стека или удалении таблицы из шаблона. Также новый UpdateReplacePolicy
не позволит CloudFormation удалить таблицу, когда это потребуется, из-за изменений первичного ключа.
Учитывая, что роль должным образом привязана к вызывающему пользователю / принципалу, возможно ли, что политика Arn из этого объединения не соответствует таблице Arn?
Также рассмотрите возможность сохранения ресурса вместо отказа в операции: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html
DynamoDB запустила новую функцию: защиту от удаления, которая отключает удаление таблицы независимо от того, разрешают ли какие-либо политики разрешений AWS Identity and Access Management (IAM) удаление таблицы.