防止 AWS CloudFormation 使用 IAM 删除 DynamoDB



我正在尝试创建一个阻止CloudFormation删除表的AWS角色。例如,我按如下方式创建了我的表:

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}', '*']]

我是否缺少某些角色配置?

谢谢。

您可以使用

RETAIN DeletionPolicy来防止在删除堆栈或从模板中删除表时删除表。此外,新UpdateReplacePolicy将阻止 CloudFormation 在由于主键更改而需要删除表时删除表。

考虑到角色已正确附加到调用用户/委托人,该联接中的策略 Arn 是否可能与表 Arn 不匹配?

此外,请考虑保留资源,而不是拒绝操作:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html

DynamoDB 推出了一项新功能:删除保护,无论任何 AWS 身份和访问管理 (IAM) 权限策略是否允许删除表,都会禁用表删除。

更多内容:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html?icmpid=docs_console_unmapped#WorkingWithTables.Basics.DeletionProtection

相关内容

  • 没有找到相关文章

最新更新