设置 Amazon S3 存储桶的访问权限 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

设置 Amazon S3 存储桶的访问权限

您识别 AmazonS3 桶,然后授予快照访问它的权限。

标识要导出到的 Amazon S3 存储桶

标识要将数据库快照导出到的 Amazon S3 存储桶。使用现有 S3 存储桶或创建新的 S3 存储桶。

注意

要导出到的 S3 存储桶必须与快照位于同一 Amazon 区域中。

有关使用 Amazon S3 存储桶的详细信息,请参阅 Amazon Simple Storage Service 用户指南中的以下主题:

使用 IAM 角色提供对 Amazon S3 存储桶的访问权限

将数据库快照数据导出到 Amazon S3 之前,请授予快照导出任务对 Amazon S3 存储桶的写入访问权限。

要授予此权限,请创建一个 IAM 策略以提供对桶的访问权限,然后创建一个 IAM 角色并将该策略附加到该角色。稍后,您可以将此 IAM 角色分配给快照导出任务。

重要

如果计划使用Amazon Web Services Management Console导出快照,则可以选择在导出快照时自动创建 IAM 策略和角色。有关说明,请参阅 创建快照导出任务

授予数据库快照任务访问 Amazon S3 的权限
  1. 创建一个 IAM 策略。此策略提供允许快照导出任务访问 Amazon S3 的存储桶和对象权限。

    在策略中,包含以下必需操作,以允许将文件从 Amazon Aurora 桶传输到 S3 桶:

    • s3:PutObject*

    • s3:GetObject*

    • s3:ListBucket

    • s3:DeleteObject*

    • s3:GetBucketLocation

    在策略中,包含以下资源以标识 S3 桶以及该桶中的对象。以下资源列表显示用于访问 Amazon S3 的 Amazon Resource Name (ARN) 格式。

    • arn:aws:s3:::amzn-s3-demo-bucket

    • arn:aws:s3:::amzn-s3-demo-bucket/*

    有关为 Amazon Aurora 创建 IAM 策略的更多信息,请参阅创建和使用适用于 IAM 数据库访问的 IAM 策略。另请参阅 IAM 用户指南中的教程:创建和附加您的第一个客户托管式策略

    以下 Amazon CLI 命令使用这些选项创建一个名为 ExportPolicy 的 IAM 策略。该策略授予对名为 amzn-s3-demo-bucket 的存储桶的访问权限。

    注意

    创建策略后,请记下策略的 ARN。在将策略附加到 IAM 角色时,您在后面的步骤中需要使用 ARN。

    aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'
  2. 创建一个 IAM 角色,以便 Aurora 可以代入该 IAM 角色,代表您访问 Amazon S3 桶。有关更多信息,请参阅 IAM 用户指南中的创建向 IAM 用户委派权限的角色

    以下示例说明了如何使用 Amazon CLI 命令创建一个名为 rds-s3-export-role 的角色。

    aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  3. 将您创建的 IAM 策略附加到您创建的 IAM 角色。

    以下 Amazon CLI 命令将之前创建的策略附加到名为 rds-s3-export-role 的角色。将 your-policy-arn 替换为您在先前步骤中记下的策略 ARN。

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role

使用跨账户 Amazon S3 存储桶

您可以跨 Amazon 账户使用 Amazon S3 存储桶。要使用跨账户存储桶,请添加存储桶策略以允许访问您用于 S3 导出的 IAM 角色。有关更多信息,请参阅示例 2:存储桶拥有者授予跨账户存储桶权限

  • 将存储桶策略附加到存储桶,如下面的示例所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/Admin" }, "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }

使用跨账户 Amazon KMS key

您可以使用跨账户 Amazon KMS key 以加密 Amazon S3 导出的内容。首先,向本地账户添加密钥策略,然后在外部账户中添加 IAM 策略。有关更多信息,请参阅允许其他账户中的用户使用 KMS 密钥

要使用跨账户 KMS 密钥
  1. 向本地账户添加密钥策略。

    以下示例为外部账户 444455556666 中的 ExampleRoleExampleUser 提供了内部账户 123456789012 中的权限。

    { "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "*" }
  2. 在外部账户中添加 IAM 策略。

    以下示例 IAM 策略允许主体使用账户 123456789012 中的 KMS 密钥执行加密操作。要向账户 444455556666 中的 ExampleRoleExampleUser 授予此权限,请将策略附加到该账户中的用户或角色。

    { "Sid": "Allow use of KMS key in account 123456789012", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }