本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定對 Amazon S3 儲存貯體的存取權
若要將資料匯出到 Amazon S3,請授予 Postgre 資料SQL庫執行個體存取檔案所在的 Amazon S3 儲存貯體的權限。
若要執行此操作,請使用下列程序。
透過角色授予 Postgre SQL 資料庫執行個體存取 Amazon S3 的IAM權限
-
建立IAM策略。
此政策提供儲存貯體和物件許可,讓您的 Postgre SQL 資料庫執行個體存取 Amazon S3。
在建立此原則的過程中,請採取下列步驟:
-
在政策中包含下列必要動作,以允許將檔案從 Postgre SQL 資料庫執行個體傳輸到 Amazon S3 儲存貯體:
-
s3:PutObject
-
s3:AbortMultipartUpload
-
-
包括用於識別 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
/*" ] } ] }' -
-
建立 IAM 角色。
您這樣做,以便 Amazon RDS 可以代表您擔任此IAM角色來訪問您的 Amazon S3 存儲桶。如需詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給IAM使用者。
建議您在資源型政策中使用
aws:SourceArn
和aws: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
" } } } ] }' -
將您建立的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 -
將IAM角色新增至資料庫執行個體。您可以使用 AWS Management Console 或 AWS CLI,如下所述。
使用主控台為 Postgre SQL 資料庫執行個體新增IAM角色
登入到 AWS Management Console 並打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/
。 -
選擇 Postgre 資SQL料庫執行個體名稱以顯示其詳細資訊。
-
在 [連線與安全性] 索引標籤的 [管理IAM角色] 區段中,選擇 [將角色新增至此執行個體] 底下要新增的IAM角色。
-
請在 Feature (功能) 下,選擇 s3Export。
-
選擇 Add role (新增角色)。
若要使用新增 Postgre SQL 資料庫執行個體的IAM角色 CLI
-
使用下列命令將角色新增至名為
my-db-instance
的 Postgre SQL 資料庫執行個體。Replace (取代)
與您在上一步中註明的角ARN色。使用your-role-arn
s3Export
作為--feature-name
選項的值。範例
用於 Linux, macOS,或 Unix:
aws rds add-role-to-db-instance \ --db-instance-identifier
my-db-instance
\ --feature-name s3Export \ --role-arnyour-role-arn
\ --regionyour-region
用於 Windows:
aws rds add-role-to-db-instance ^ --db-instance-identifier
my-db-instance
^ --feature-name s3Export ^ --role-arnyour-role-arn
^ --regionyour-region