RDS 將 for SQL Server 與 S3 整合的先決條件 - Amazon Relational Database Service

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

RDS 將 for SQL Server 與 S3 整合的先決條件

開始之前,請尋找或建立您要使用的 S3 儲存貯體。此外,新增許可,讓資料庫執行個體可以存取 S3 RDS 儲存貯體。若要設定此存取權,您可以建立IAM政策和IAM角色。

建立存取 Amazon S3 IAM的政策
  1. IAM管理主控台 中,選擇導覽窗格中的政策

  2. 建立新政策,並使用 Visual editor (視覺化編輯器) 索引標籤執行下列步驟。

  3. 針對 Service (服務),輸入 S3,然後選擇 S3 服務。

  4. 針對 Actions (動作),選擇下列選項,以授予資料庫執行個體所需的存取:

    • ListAllMyBuckets – 必要

    • ListBucket – 必要

    • GetBucketACL – 必要

    • GetBucketLocation – 必要

    • GetObject – 將 S3 中的檔案下載至 時需要D:\S3\

    • PutObject – 將 D:\S3\ 中的檔案上傳至 S3 時需要

    • ListMultipartUploadParts – 將 D:\S3\ 中的檔案上傳至 S3 時需要

    • AbortMultipartUpload – 將 D:\S3\ 中的檔案上傳至 S3 時需要

  5. 針對 Resources (資源),顯示的選項取決於您在上一步選擇的動作。您看到的選項可能是 bucket (儲存貯體)object (物件) 或兩者都有。針對每個項目,新增適當的 Amazon Resource Name (ARN)。

    針對儲存貯體 ,為您要使用的ARN儲存貯體新增 。例如,如果您的儲存貯體命名為 amzn-s3-demo-bucket,將 ARN設定為 arn:aws:s3:::amzn-s3-demo-bucket

    針對物件 ,輸入儲存貯體ARN的 ,然後選擇下列其中一項:

    • 若要允許存取指定儲存貯體中的所有檔案,對於 Bucket name (儲存貯體)Object name (物件名稱),請都選擇 Any (任何)

    • 若要授予對儲存貯體中特定檔案或資料夾的存取權,ARNs請提供您要SQL伺服器存取的特定儲存貯體和物件。

  6. 遵循主控台的指示操作,直到完成建立政策。

    以上為設定政策的簡略指南。如需建立IAM政策的更多詳細說明,請參閱 使用者指南中的建立IAM政策IAM

建立使用先前程序IAM政策IAM的角色
  1. IAM管理主控台 中,選擇導覽窗格中的角色

  2. 建立新的IAM角色,並選擇下列出現在主控台的選項:

    • AWS 服務

    • RDS

    • RDS – 將角色新增至資料庫

    然後在底部選擇 Next:Permissions (下一步:許可)

  3. 針對連接許可政策 ,輸入您先前建立IAM的政策名稱。然後從清單中選擇該政策。

  4. 遵循主控台的指示操作,直到完成建立角色。

    以上為設定角色的簡略指南。如果您想要建立角色的更詳細說明,請參閱 使用者指南中的IAM角色IAM

若要授予 Amazon 對 Amazon S3 儲存貯體的RDS存取權,請使用下列程序:

  1. 建立將 Amazon RDS存取權授予 S3 儲存貯體IAM的政策。

  2. 建立 Amazon RDS可以代表您擔任IAM的角色,以存取您的 S3 儲存貯體。

    如需詳細資訊,請參閱 IAM 使用者指南 中的建立角色以將許可委派給IAM使用者

  3. 將您建立IAM的政策連接至您建立IAM的角色。

建立 IAM 政策

包含適當動作,以授予資料庫執行個體所需的存取:

  • ListAllMyBuckets – 必要

  • ListBucket – 必要

  • GetBucketACL – 必要

  • GetBucketLocation – 必要

  • GetObject – 將 S3 中的檔案下載至 時需要D:\S3\

  • PutObject – 將 D:\S3\ 中的檔案上傳至 S3 時需要

  • ListMultipartUploadParts – 將 D:\S3\ 中的檔案上傳至 S3 時需要

  • AbortMultipartUpload – 將 D:\S3\ 中的檔案上傳至 S3 時需要

  1. 下列 AWS CLI 命令會建立rds-s3-integration-policy以這些選項命名IAM的政策。它授予名為 的儲存貯體存取權 amzn-s3-demo-bucket.

    用於 Linux, macOS、 或 Unix:

    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:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*" } ] }'

    用於 Windows:

    務必將行尾改成您的界面所支援的字元 (^ 而不是 \)。另外,在 Windows 中,您必須以 \ 逸出所有雙引號。為了避免需要逸出 中的引號JSON,您可以將其儲存到 檔案,並將其傳遞為 參數。

    首先,建立包含下列許可政策的 policy.json 檔案:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*" } ] }

    然後,使用以下命令建立政策:

    aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document file://file_path/assume_role_policy.json
  2. 建立政策後,請注意政策的 Amazon Resource Name (ARN)。您需要 ARN才能進行後續步驟。

建立 IAM 角色
  • 下列 AWS CLI 命令會為此目的建立rds-s3-integration-roleIAM角色。

    用於 Linux, macOS、 或 Unix:

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    用於 Windows:

    務必將行尾改成您的界面所支援的字元 (^ 而不是 \)。另外,在 Windows 中,您必須以 \ 逸出所有雙引號。為了避免需要逸出 中的引號JSON,您可以將其儲存到 檔案,並將其傳遞為 參數。

    首先,建立包含下列政策的 assume_role_policy.json 檔案:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    然後使用下列命令來建立IAM角色:

    aws iam create-role ^ --role-name rds-s3-integration-role ^ --assume-role-policy-document file://file_path/assume_role_policy.json
    範例 使用全域條件內容索引鍵來建立IAM角色

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

    您可以同時使用全域條件內容索引鍵和包含帳號 ID 的 aws:SourceArn 值。在此情況下,當在相同政策陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 裡的帳户時,兩者必須使用同樣的帳户 ID。

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

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

    在政策中,請務必使用aws:SourceArn全域條件內容索引鍵搭配存取角色之資源的完整 Amazon Resource Name (ARN)。對於 S3 整合,請務必包含資料庫執行個體 ARNs,如下列範例所示。

    用於 Linux, macOS、 或 Unix:

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier" } } } ] }'

    用於 Windows:

    將全域條件內容索引鍵新增至 assume_role_policy.json

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier" } } } ] }
將IAM政策連接至IAM角色
  • 下列 AWS CLI 命令會將政策連接至名為 的角色rds-s3-integration-roleyour-policy-arn 以ARN您在上一個步驟中記下的政策取代 。

    用於 Linux, macOS、 或 Unix:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-integration-role

    用於 Windows:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-integration-role