В моем сценарии я хочу политику, которая разрешит чтение и запись abc-database-backups/rds/postgresql-backup
на S3? Мы хотим, чтобы мои серверы имели этот доступ.
Что лучше: создать роль и прикрепить ее к серверам или добавить ключ к серверу?
Я попробовал это:
aws iam create-policy \
--policy-name rds-s3-integration-policy \
--policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketACL",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::bucket_name"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": "arn:aws:s3:::bucket_name/key_prefix/*"
}
]
}'
Я был бы очень благодарен за любую помощь, так как мой опыт в этой области несколько ограничен.
решение1
Использоватьроль, связанная с обслуживаниемдля RDS, чтобы предоставить доступ к S3 и любым другим именованным ресурсам, которые вам требуются. Убедитесь, что экземпляр RDS имеет эту роль. Вам также следует прочитатьэтот документоб импорте данных S3 в RDS PostgreSQL с использованием расширения.
Я адаптировал некоторую инфраструктуру CloudFormation как код, который у меня есть, который должен настроить роль. Вам нужно будет изменить разрешения и имя контейнера в соответствии с вашими требованиями. Он должен работать как есть, но мне пришлось подправить свой существующий код, поэтому если он не работает на 100%, пожалуйста, отредактируйте пост или комментарий, чтобы я мог его отредактировать.
AWSTemplateFormatVersion: '2010-09-09'
Description: Role for RDS
Resources:
RdsS3IntegrationRole:
Type: AWS::IAM::Role
Properties:
RoleName: RdsS3IntegrationRole
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Principal:
Service:
- rds.amazonaws.com
Action:
- sts:AssumeRole
RDSS3IntegrationPolicy:
Type: AWS::IAM::Policy
Properties:
Roles:
- !Ref 'RdsS3IntegrationRole'
PolicyName: RDSS3IntegrationPolicy
PolicyDocument:
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:ListBucket
- s3:PutObject
Resource:
- !Sub 'arn:aws:s3:::bucketname/*'
- !Sub 'arn:aws:s3:::bucketname'
- Effect: Allow
Action:
- kms:Decrypt
- kms:Encrypt
- kms:GenerateDataKey
- kms:ReEncryptTo
- kms:DescribeKey
- kms:ReEncryptFrom
Resource:
- !Sub 'arn:aws:kms:ap-southeast-2:${AWS::AccountId}:key/*'