Предотвратить пользователю удаление элементов в таблице базы данных Aurora Serverless? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь создать политику, которая при подключении к пользователю IAM позволяет пользователю только читать данные из таблицы Aurora Бессерверной базы данных:

PolicyDocument:
    Version: 2012-10-17
    Statement:
    - Effect: "Allow"
      Action:
      - "rds-data:ExecuteSql"
      - "rds-data:ExecuteStatement"
      - "rds-data:GetItems"
      Resource:
      - !Join ['', ['arn:aws:rds:*:*:cluster:', !Ref RDSAuroraServerlessCluster]]
      - !Join ['', ['arn:aws:rds:*:*:cluster:', !Ref RDSAuroraServerlessCluster, ':*']]
    - Effect: "Deny"
      Action:
      - "rds-data:DeleteItems"
      Resource:
      - !Join ['', ['arn:aws:rds:*:*:cluster:', !Ref RDSAuroraServerlessCluster]]
      - !Join ['', ['arn:aws:rds:*:*:cluster:', !Ref RDSAuroraServerlessCluster, ':*']]

Как вы можете видеть политика явно запрещает пользователю удалять элементы.

Однако, следующий код, который использует API данных Python AWS SDK и где ключ доступа AWS и секретный ключ предназначены для Пользователь, к которому прикреплена вышеуказанная политика, успешно запускается:

rds_client = boto3.client('rds-data', aws_access_key_id='XXX', aws_secret_access_key='YYY')
response = rds_client.execute_statement(
     secretArn=self.db_credentials_secrets_store_arn,
     database=self.database_name,
     resourceArn=self.db_cluster_arn,
     sql='DELETE FROM TestTable where id = "ae94eae7";',
     parameters=[])

Я могу запросить таблицу после запуска этого кода и вижу, что строка действительно удалена.

Как я могу предотвратить удаление пользователем подобных строк?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...