設定對 Amazon S3 儲存貯體的存取權 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定對 Amazon S3 儲存貯體的存取權

若要將資料匯出到 Amazon S3,請授予 Postgre 資料SQL庫執行個體存取檔案所在的 Amazon S3 儲存貯體的權限。

若要執行此操作,請使用下列程序。

透過角色授予 Postgre SQL 資料庫執行個體存取 Amazon S3 的IAM權限
  1. 建立IAM策略。

    此政策提供儲存貯體和物件許可,讓您的 Postgre SQL 資料庫執行個體存取 Amazon S3。

    在建立此原則的過程中,請採取下列步驟:

    1. 在政策中包含下列必要動作,以允許將檔案從 Postgre SQL 資料庫執行個體傳輸到 Amazon S3 儲存貯體:

      • s3:PutObject

      • s3:AbortMultipartUpload

    2. 包括用於識別 Amazon S3 儲存貯體和儲存貯體中的物件的 Amazon 資源名稱 (ARN)。訪問 Amazon S3 的ARN格式是:arn:aws:s3:::amzn-s3-demo-bucket/*

    有關為 策的更多信息SQL,RDS請參閱。建立並使用 IAM 政策進行 IAM 資料庫存取另請參閱《IAM使用指南》中的教學課程:建立並附加您的第一個客戶管理政策

    如下所示 AWS CLI 命令會建立rds-s3-export-policy以這些選項命名的IAM策略。它授予對名為的存儲桶的訪問權限 amzn-s3-demo-bucket.

    警告

    建議您在私人資料庫中設定資料庫,VPC該資料庫已設定端點政策以存取特定值區。如需詳細資訊,請參閱 Amazon 使用VPC者指南中的使用 Amazon S3 的端點政策

    強烈建議您不要建立具有全資源存取權的政策。這個存取權可能會對資料安全構成威脅。如果您建立的原則能為 S3:PutObject 提供使用 "Resource":"*" 存取所有資源的存取權,則具有匯出許可的使用者可將資料匯出至您帳戶中的所有儲存貯體。此外,用戶可以將數據導出到您內的任何可公開寫入的存儲桶 AWS 地區

    建立政策後,請記下政策的 Amazon 資源名稱 (ARN)。將原則附加至IAM角色時,需要執行後續步驟。ARN

    aws iam create-policy --policy-name rds-s3-export-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3export", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation", "s3:AbortMultipartUpload" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'
  2. 建立 IAM 角色。

    您這樣做,以便 Amazon RDS 可以代表您擔任此IAM角色來訪問您的 Amazon S3 存儲桶。如需詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給IAM使用者

    建議您在資源型政策中使用 aws:SourceArnaws:SourceAccount 全域條件內容索引鍵,將服務的許可限定於特定資源。這是防止混淆代理人問題最有效的方式。

    如果同時使用這兩個全域條件內容索引鍵,且 aws:SourceArn 值包含帳戶 ID,則在相同政策陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 值中的帳戶時,必須使用相同的帳戶 ID。

    • 如果您想要跨服務存取單一資源,請使用 aws:SourceArn

    • 如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用 aws:SourceAccount

    在策略中,請務必使用具有完整資源ARN的aws:SourceArn全域條件內容索引鍵。下列範例示範如何使用 AWS CLI 指令可建立名為的角色rds-s3-export-role

    範例

    用於 Linux, macOS,或 Unix:

    aws iam create-role \ --role-name rds-s3-export-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'

    用於 Windows:

    aws iam create-role ^ --role-name rds-s3-export-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'
  3. 將您建立的IAM策略附加到您建立的IAM角色。

    如下所示 AWS CLI 命令會將先前建立的原則附加至您在先前步驟中記下ARN的原則名為「以rds-s3-export-role.取代your-policy-arn」的角色。

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role
  4. 將IAM角色新增至資料庫執行個體。您可以使用 AWS Management Console 或 AWS CLI,如下所述。

使用主控台為 Postgre SQL 資料庫執行個體新增IAM角色
  1. 登入到 AWS Management Console 並打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/

  2. 選擇 Postgre 資SQL料庫執行個體名稱以顯示其詳細資訊。

  3. 在 [連線與安全性] 索引標籤的 [管理IAM角色] 區段中,選擇 [將角色新增至此執行個體] 底下要新增的IAM角色

  4. 請在 Feature (功能) 下,選擇 s3Export

  5. 選擇 Add role (新增角色)

若要使用新增 Postgre SQL 資料庫執行個體的IAM角色 CLI
  • 使用下列命令將角色新增至名為my-db-instance的 Postgre SQL 資料庫執行個體。Replace (取代) your-role-arn 與您在上一步中註明的角ARN色。使用 s3Export 作為 --feature-name 選項的值。

    範例

    用於 Linux, macOS,或 Unix:

    aws rds add-role-to-db-instance \ --db-instance-identifier my-db-instance \ --feature-name s3Export \ --role-arn your-role-arn \ --region your-region

    用於 Windows:

    aws rds add-role-to-db-instance ^ --db-instance-identifier my-db-instance ^ --feature-name s3Export ^ --role-arn your-role-arn ^ --region your-region