設定 Oracle 與 Amazon S3 整合RDS的IAM許可 - Amazon Relational Database Service

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

設定 Oracle 與 Amazon S3 整合RDS的IAM許可

若要讓 RDS Oracle 與 Amazon S3 整合,您的資料庫執行個體必須能夠存取 Amazon S3 儲存貯體。資料庫執行個體VPC使用的 Amazon 不需要提供 Amazon S3 端點的存取權。

RDS for Oracle 支援在一個帳戶中的資料庫執行個體與不同帳戶中的 Amazon S3 儲存貯體之間傳輸檔案。如需採取額外步驟,下列各節中會說明這些步驟。

步驟 1:為您的 Amazon RDS角色建立IAM政策

在此步驟中,您會建立 AWS Identity and Access Management (IAM) 政策,具有在 Amazon S3 RDS 儲存貯體與資料庫執行個體之間傳輸檔案所需的許可。此步驟假設您已建立 S3 儲存貯體。

在您建立政策之前,請記住下列資訊:

  • 儲存貯體的 Amazon Resource Name (ARN)

  • 如果您的儲存貯體使用 SSE-KMS 或 SSE-S3 加密,則為 AWS KMS 金鑰ARN使用 。

    注意

    RDS for Oracle 資料庫執行個體無法存取使用 SSE-C 加密的 Amazon S3 儲存貯體。

如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用伺服器端加密保護資料

建立IAM政策以允許 Amazon RDS存取您的 Amazon S3 儲存貯體
  1. 開啟 IAM 管理主控台

  2. Access management (存取管理) 下,請選擇 Policies (政策)。

  3. 選擇 建立政策

  4. Visual editor (視覺化編輯器) 標籤中,選擇 Choose a service (選擇服務),然後選擇 S3

  5. 針對動作 ,選擇全部展開 ,然後選擇將檔案從 Amazon S3 儲存貯體傳輸至 Amazon 所需的儲存貯體許可和物件許可RDS。例如,請執行以下操作:

    • 展開清單 ,然後選擇 ListBucket

    • 展開讀取 ,然後選擇 GetObject

    • 展開寫入 ,然後選擇 PutObjectDeleteObject

    • 展開許可管理 ,然後選擇 PutObjectAcl。若您計劃將檔案上傳至另一個帳戶所擁有的儲存貯體,而此帳戶需要儲存貯體內容的完全控制,則需要此許可權限。

    物件許可權限是 Amazon S3 中物件作業的許可權限。您必須授予其儲存貯體中的物件,而非儲存貯體本身。如需詳細資訊,請參閱物件作業的許可權限

  6. 選擇資源,然後執行下列動作:

    1. 選擇特定

    2. 針對儲存貯體 ,選擇新增 ARN。輸入您的儲存貯體 ARN。儲存貯體名稱會自動填入。接著選擇 Add (新增)

    3. 如果顯示物件資源,請選擇新增ARN以手動新增資源,或選擇任何

      注意

      您可以設定 Amazon Resource Name (ARN) 為更具體ARN的值,讓 Amazon 只能RDS存取 Amazon S3 儲存貯體中的特定檔案或資料夾。如需如何為 Amazon S3 定義存取原則的詳細資訊,請參閱管理 Amazon S3 資源的存取許可

  7. (選用) 選擇 Add additional permissions (新增其他許可),將資源新增至政策。例如,請執行以下操作:

    1. 如果您的儲存貯體使用自訂KMS金鑰加密,請KMS針對 服務選取 。

    2. 針對手動動作,請選取下列項目:

      • 加密

      • ReEncrypt 從ReEncrypt 到

      • 解密

      • DescribeKey

      • GenerateDataKey

    3. 針對資源,請選擇特定

    4. 針對金鑰 ,選擇新增 ARN。輸入自訂金鑰ARN的 作為資源,然後選擇新增

      如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南 中的使用存放在 AWS Key Management Service (SSE-KMS) 中的KMS金鑰進行伺服器端加密保護資料

    5. 如果您想要 Amazon RDS存取其他儲存貯體,ARNs請為這些儲存貯體新增 。(選擇性) 您也可以授權存取 Amazon S3 中的所有儲存貯體和物件。

  8. 選擇 Next: Tags (下一步:標籤),然後選擇 Next: Review (下一步:檢閱)

  9. 針對名稱 ,輸入IAM政策的名稱,例如 rds-s3-integration-policy。當您建立要與資料庫執行個體建立關聯的IAM角色時,請使用此名稱。您也可以新增選用的 Description (描述) 值。

  10. 選擇 Create policy (建立政策)。

建立 AWS Identity and Access Management (IAM) 政策,授予 Amazon 對 Amazon S3 儲存貯體的RDS存取權。建立政策後,請注意政策ARN的 。您需要 ARN進行後續步驟。

依據所需的存取類型,在政策中納入適當動作:

  • GetObject – 將檔案從 Amazon S3 儲存貯體傳輸到 Amazon 時的必要項目RDS。

  • ListBucket – 將檔案從 Amazon S3 儲存貯體傳輸到 Amazon 時的必要項目RDS。

  • PutObject – 將檔案從 Amazon 傳輸RDS到 Amazon S3 儲存貯體時所需。

下列 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": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'

下列範例包含自訂KMS金鑰的許可。

aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

用於 Windows:

aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'

下列範例包含自訂KMS金鑰的許可。

aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

步驟 2:(選用) 為您的 Amazon S3 儲存貯體建立IAM政策

只有在下列情況中才需要此步驟:

  • 您計劃從一個帳戶 (帳戶 A) 將檔案上傳至 Amazon S3 儲存貯體,然後從另一個帳戶 (帳戶 B) 進行存取。

  • 帳戶 B 擁有儲存貯體。

  • 帳戶 B 需要載入儲存貯體中物件的完整控制。

若上述條件不適用於您,請跳到 步驟 3:為您的資料庫執行個體建立IAM角色,並連接您的政策

如要建立儲存貯體政策,請確定您具有下列項目:

  • 帳戶 A 的帳戶 ID

  • 帳户 A 的使用者名稱

  • 帳戶 B 中 Amazon S3 儲存貯體ARN的值

建立或編輯儲存貯體政策
  1. 登入 AWS Management Console 並在 開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/

  2. Buckets (儲存貯體) 清單中,選擇要建立儲存貯體政策的儲存貯體名稱,或您想編輯之儲存貯體政策的儲存貯體名稱。

  3. 選擇 Permissions (許可)。

  4. Bucket policy (儲存貯體政策) 下方,選擇 Edit (編輯)。這會開啟「編輯儲存貯體政策」頁面。

  5. 編輯儲存貯體政策頁面上,探索 Amazon S3 使用者指南 中的政策範例,選擇政策產生器以自動產生政策,或在政策區段JSON中編輯 。

    如果您選擇政策產生器 , AWS 政策產生器會在新視窗中開啟:

    1. AWS Policy Generator ( 政策產生器) 頁面上,在 Select Type of Policy (選取政策類型) 中選擇 S3 Bucket Policy (S3 儲存貯體政策)。

    2. 在提供的欄位中輸入資訊,以新增陳述式,然後選擇 Add Statement (新增陳述式)。針對您想要新增的任意數量陳述式重複此動作。如需這些欄位的詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素參考

      注意

      為了方便起見,編輯儲存貯體政策頁面會在政策文字欄位上方顯示目前儲存貯體的儲存貯體 ARN(Amazon Resource Name)。您可以複製此項目ARN,以便在AWS 政策產生器頁面上的陳述式中使用。

    3. 完成新增陳述式後,選擇 Generate Policy (產生政策)。

    4. 複製產生的政策文字,選擇 Close (關閉),然後退回 Amazon S3 主控台中的 Edit bucket policy (編輯儲存貯體政策) 頁面。

  6. Policy (政策) 方塊中,編輯現有政策,或從政策產生器貼上儲存貯體政策。請務必先處理安全性警告、錯誤、一般警告,以及建議,然後再儲存政策。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-A-ID:account-A-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }
  7. 選擇 Save changes (儲存變更),此選項會跳至儲存貯體許可頁面。

步驟 3:為您的資料庫執行個體建立IAM角色,並連接您的政策

此步驟假設您已在 中建立IAM政策步驟 1:為您的 Amazon RDS角色建立IAM政策。在此步驟中,您會為 RDS for Oracle 資料庫執行個體建立角色,然後將政策連接至角色。

建立IAM角色以允許 Amazon RDS存取 Amazon S3 儲存貯體
  1. 開啟 IAM 管理主控台

  2. 在導覽窗格中,選擇 Roles (角色)。

  3. 選擇 Create Role (建立角色)。

  4. 選擇 AWS 服務

  5. 對於其他 AWS 服務的使用案例:,選擇 RDS ,然後選擇 RDS - 將角色新增至資料庫 。然後選擇下一步

  6. 針對許可政策 下的搜尋,輸入您在 中建立IAM的政策名稱步驟 1:為您的 Amazon RDS角色建立IAM政策,並在政策出現在清單中時選取該政策。然後選擇下一步

  7. 針對角色名稱 ,輸入IAM角色的名稱,例如 rds-s3-integration-role。您也可以新增選用的 Description (描述) 值。

  8. 選擇建立角色

如要建立角色並將政策附加至該角色
  1. 建立 Amazon RDS可以代表您擔任IAM的角色,以存取您的 Amazon S3 儲存貯體。

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

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

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

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

    在信任關係中,請務必使用aws:SourceArn全域條件內容索引鍵搭配存取角色之資源的完整 Amazon Resource Name (ARN)。

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

    範例

    用於 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:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

    用於 Windows:

    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:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

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

  2. 建立角色後,請注意角色ARN的 。您需要 ARN才能執行後續步驟。

  3. 請將您建立的政策連接到您建立的角色。

    下列 AWS CLI 命令會將政策連接至名為 的角色rds-s3-integration-role

    範例

    用於 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

    your-policy-arn 以ARN您在上一個步驟中記下的政策取代 。

步驟 4:將您的IAM角色與 RDS for Oracle 資料庫執行個體建立關聯

設定 Amazon S3 整合許可的最後一個步驟是將您的IAM角色與資料庫執行個體建立關聯。請注意以下要求:

  • 您必須具有角色的存取權,並已將必要的 Amazon S3 許可政策連接至該IAM角色。

  • 您一次只能將一個IAM角色與 RDS for Oracle 資料庫執行個體建立關聯。

  • 您的資料庫執行個體必須處於可用狀態。

將您的IAM角色與 RDS for Oracle 資料庫執行個體建立關聯
  1. 登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Databases (資料庫)。

  3. 選擇 RDS for Oracle 資料庫執行個體名稱以顯示其詳細資訊。

  4. 連線與安全索引標籤上,向下捲動至頁面底部的管理IAM角色區段。

  5. 對於將IAM角色新增至此執行個體 ,請選擇您在 中建立的角色步驟 3:為您的資料庫執行個體建立IAM角色,並連接您的政策

  6. 針對功能 ,選擇 S3_INTEGRATION

    新增 S3_INTEGRATION 角色
  7. 選擇 Add role (新增角色)

下列 AWS CLI 命令會將 角色新增至名為 的 Oracle 資料庫執行個體mydbinstance

範例

用於 Linux, macOS、 或 Unix:

aws rds add-role-to-db-instance \ --db-instance-identifier mydbinstance \ --feature-name S3_INTEGRATION \ --role-arn your-role-arn

用於 Windows:

aws rds add-role-to-db-instance ^ --db-instance-identifier mydbinstance ^ --feature-name S3_INTEGRATION ^ --role-arn your-role-arn

your-role-arn 以ARN您在上一個步驟中記下的角色取代 。S3_INTEGRATION必須為 --feature-name選項指定 。