AWS-Richtlinie zum Lesen/Schreiben von RDS

AWS-Richtlinie zum Lesen/Schreiben von RDS

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/*'

verwandte Informationen