In meinem Szenario möchte ich eine Richtlinie, die das Lesen und Schreiben auf S3 zulässt abc-database-backups/rds/postgresql-backup
. Wir möchten, dass meinen Servern dieser Zugriff hinzugefügt wird.
Ist es besser, eine Rolle zu erstellen und sie den Servern zuzuordnen oder dem Server einen Schlüssel hinzuzufügen?
Ich habe Folgendes versucht:
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/*"
}
]
}'
Ich wäre für jede Hilfe sehr dankbar, da meine Erfahrung auf diesem Gebiet eher begrenzt ist.
Antwort1
Benutze einenServiceverknüpfte Rolledamit RDS Zugriff auf S3 und alle anderen benannten Ressourcen bietet, die Sie benötigen. Stellen Sie sicher, dass die RDS-Instanz diese Rolle hat. Lesen Sie auchdieses Dokumentzum Importieren von S3-Daten in RDS PostgreSQL mithilfe einer Erweiterung.
Ich habe einige CloudFormation-Infrastrukturen als Code angepasst, der eine Rolle einrichten sollte. Sie sollten die Berechtigungen und den Bucket-Namen Ihren Anforderungen entsprechend ändern. Es sollte so funktionieren, wie es ist, aber ich musste meinen vorhandenen Code anpassen. Wenn es also nicht 100 % funktioniert, bearbeiten Sie bitte den Beitrag oder Kommentar, damit ich es bearbeiten kann.
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/*'