本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要讓 RDS for Oracle 與 Amazon S3 整合,則您的資料庫執行個體必須具有 Amazon S3 儲存貯體的存取權。您的資料庫執行個體使用的 Amazon VPC 不需要提供存取給 Amazon S3 端點。
RDS for Oracle 支援在一個帳戶中的資料庫執行個體與不同帳戶中的 Amazon S3 儲存貯體之間傳輸檔案。如需採取額外步驟,下列各節中會說明這些步驟。
主題
步驟 1:建立 Amazon RDS 角色的 IAM 政策
在此步驟中,您會建立具有在 Amazon S3 儲存貯體和 RDS 資料庫執行個體之間傳輸檔案所需許可的 AWS Identity and Access Management (IAM) 政策。此步驟假設您已建立 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 儲存貯體
-
開啟 IAM 管理主控台
。 -
在 Access management (存取管理) 下,請選擇 Policies (政策)。
-
選擇 Create Policy (建立政策)。
-
在 Visual editor (視覺化編輯器) 標籤中,選擇 Choose a service (選擇服務),然後選擇 S3。
-
在 Actions (動作) 中,選擇 Expand all (全部展開),然後選擇從 Amazon S3 儲存貯體傳輸檔案至 Amazon RDS 所需的儲存貯體許可和物件許可。例如,請執行以下操作:
-
展開 List (清單),然後選取 ListBucket。
-
展開 Read (讀取),然後選取 GetObject。
-
展開 Write (寫入),然後選取 PutObject 和 DeleteObject。
-
展開 Permissions management (許可權限管理),然後選取 PutObjectAcl。若您計劃將檔案上傳至另一個帳戶所擁有的儲存貯體,而此帳戶需要儲存貯體內容的完全控制,則需要此許可權限。
物件許可權限是 Amazon S3 中物件作業的許可權限。您必須授予其儲存貯體中的物件,而非儲存貯體本身。如需詳細資訊,請參閱物件作業的許可權限。
-
-
選擇資源,然後執行下列動作:
-
選擇特定。
-
針對儲存貯體,請選擇新增 ARN。輸入您的儲存貯體 ARN。儲存貯體名稱會自動填入。接著選擇 Add (新增)。
-
如果顯示物件資源,請選擇新增 ARN 以手動新增資源,或選擇任何。
注意
您可以將 Amazon Resource Name (ARN) 設為更具體的 ARN 值,以允許 Amazon RDS 只能存取 Amazon S3 儲存貯體中的特定檔案或資料夾。如需如何為 Amazon S3 定義存取原則的詳細資訊,請參閱管理 Amazon S3 資源的存取許可。
-
-
(選用) 選擇 Add additional permissions (新增其他許可),將資源新增至政策。例如,請執行以下操作:
-
如果您的儲存貯體使用自訂 KMS 金鑰加密,請為服務選取 KMS。
-
針對手動動作,請選取下列項目:
-
加密
-
ReEncrypt from 和 ReEncrypt to
-
解密
-
DescribeKey
-
GenerateDataKey
-
-
針對資源,請選擇特定。
-
針對金鑰,請選擇新增 ARN。輸入自訂金鑰的 ARN 作為資源,然後選擇新增。
如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用伺服器端加密與存放於 AWS Key Management Service (SSE-KMS) 中的 KMS 金鑰保護資料。
-
如果您想要 Amazon RDS 存取其他儲存貯體,請新增這些儲存貯體的 ARN。(選擇性) 您也可以授權存取 Amazon S3 中的所有儲存貯體和物件。
-
-
選擇 Next: Tags (下一步:標籤),然後選擇 Next: Review (下一步:檢閱)。
-
在 Name (名稱) 輸入您的 IAM 政策名稱,例如
rds-s3-integration-policy
。您可使用此項名稱,建立與資料庫叢集相關的 IAM 角色。您也可以新增選用的 Description (描述) 值。 -
選擇 Create policy (建立政策)。
建立 AWS Identity and Access Management (IAM) 政策,授予 Amazon RDS 對 Amazon S3 儲存貯體的存取權。在您建立政策後,請記下政策的 ARN。您需要 ARN 才能進行後續步驟。
依據所需的存取類型,在政策中納入適當動作:
-
GetObject
– 必須從 Amazon S3 儲存貯體傳輸檔案至 Amazon RDS。 -
ListBucket
– 必須從 Amazon S3 儲存貯體傳輸檔案至 Amazon RDS。 -
PutObject
– 必須由 Amazon RDS 傳輸檔案至 Amazon S3 儲存貯體。
下列 AWS CLI 命令會建立名為
的 IAM 政策,並具有這些選項。其中將授予存取至名為 rds-s3-integration-policy
的儲存貯體。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 值
建立或編輯儲存貯體政策
登入 AWS Management Console ,並在 https://console.aws.amazon.com/s3/
:// 開啟 Amazon S3 主控台。 -
在 Buckets (儲存貯體) 清單中,選擇要建立儲存貯體政策的儲存貯體名稱,或您想編輯之儲存貯體政策的儲存貯體名稱。
-
選擇 Permissions (許可)。
-
在 Bucket policy (儲存貯體政策) 下方,選擇 Edit (編輯)。這會開啟「編輯儲存貯體政策」頁面。
-
在 Edit bucket policy (編輯儲存貯體政策) 頁面,瀏覽《Amazon S3 使用者指南》中的 Policy examples (政策範例)、選擇 Policy generator (政策產生器) 以自動產生政策,或在 Policy (政策) 區段編輯 JSON。
如果您選擇政策產生器, AWS 政策產生器會在新視窗中開啟:
-
在 AWS Policy Generator ( 政策產生器) 頁面上,在 Select Type of Policy (選取政策類型) 中選擇 S3 Bucket Policy (S3 儲存貯體政策)。
-
在提供的欄位中輸入資訊,以新增陳述式,然後選擇 Add Statement (新增陳述式)。針對您想要新增的任意數量陳述式重複此動作。如需這些欄位的詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素參考。
注意
為方便起見,Edit bucket policy (編輯儲存貯體政策) 頁面會在 Policy (政策) 文字欄位上方顯示目前儲存貯體的 Bucket ARN (Amazon Resource Name) (儲存貯體 ARN (Amazon 資源名稱))。您可以複製此 ARN,以在 AWS Policy Generator ( 政策產生器) 頁面上的陳述式中使用。
-
完成新增陳述式後,選擇 Generate Policy (產生政策)。
-
複製產生的政策文字,選擇 Close (關閉),然後退回 Amazon S3 主控台中的 Edit bucket policy (編輯儲存貯體政策) 頁面。
-
-
在 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
/*" ] } ] } -
選擇 Save changes (儲存變更),此選項會跳至儲存貯體許可頁面。
步驟 3:建立您的資料庫執行個體的 IAM 角色並附加政策
此步驟會假設您已於 步驟 1:建立 Amazon RDS 角色的 IAM 政策 中建立了 IAM 政策。於此步驟中,您會建立 RDS for Oracle 資料庫執行個體的角色,然後將政策附加至角色。
建立 IAM 角色以允許 Amazon RDS 存取 Amazon S3 儲存貯體
-
開啟 IAM 管理主控台
。 -
在導覽窗格中,選擇 Roles (角色)。
-
選擇 Create Role (建立角色)。
-
選擇 AWS 服務。
-
對於其他 AWS 服務的使用案例:,選擇 RDS,然後選擇 RDS – 將角色新增至資料庫。然後選擇下一步。
-
請在許可政策之下的搜尋輸入您在 步驟 1:建立 Amazon RDS 角色的 IAM 政策 建立的 IAM 政策名稱,然後於政策出現在清單時加以選取。然後選擇下一步。
-
在角色名稱中輸入 IAM 角色名稱,例如
rds-s3-integration-role
。您也可以新增選用的 Description (描述) 值。 -
選擇建立角色。
如要建立角色並將政策附加至該角色
-
建立 IAM 角色,讓 Amazon RDS 可代表您存取您的 Amazon S3 儲存貯體。
建議您在資源型信任關係中使用
aws:SourceArn
和aws:SourceAccount
全域條件內容索引鍵,將服務的許可限定於特定資來源。這是防止混淆代理人問題最有效的方式。您可以同時使用全域條件內容索引鍵和包含帳號 ID 的
aws:SourceArn
值。在此情況下,當在相同陳述式中使用aws:SourceAccount
值和aws:SourceArn
裡的帳户時,兩者必須使用同樣的帳户 ID。-
如果您想要跨服務存取單一資源,請使用
aws:SourceArn
。 -
如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用
aws:SourceAccount
。
在信任關係中,請務必使用
aws:SourceArn
全域條件內容索引鍵,其中包含存取角色的資源之完整 Amazon 資源名稱 (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 使用者。
-
-
角色建立後,請記下角色的 ARN。您需要 ARN 才能進行後續步驟。
-
請將您建立的政策連接到您建立的角色。
下列 AWS CLI 命令會將政策連接至名為 的角色
。rds-s3-integration-role
範例
對於 Linux、 macOS或 Unix:
aws iam attach-role-policy \ --policy-arn
your-policy-arn
\ --role-namerds-s3-integration-role
在 Windows 中:
aws iam attach-role-policy ^ --policy-arn
your-policy-arn
^ --role-namerds-s3-integration-role
將
替換為您前個步驟記下的政策 ARN。your-policy-arn
步驟 4:建立 IAM 角色與 RDS for Oracle 資料庫執行個體的關聯
設定 Amazon S3 整合許可的最後一個步驟是將您的 IAM 角色與資料庫執行個體建立關聯。請注意以下要求:
-
您必須能存取連接了必要 Amazon S3 許可政策的角色。
-
您一次只能將一個 IAM 角色與 RDS for Oracle 資料庫執行個體建立關聯。
-
您的資料庫執行個體必須處於可用狀態。
如要建立 IAM 角色與 RDS for Oracle 資料庫執行個體的關聯
登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/
:// 開啟 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇 RDS for Oracle 資料庫執行個體名稱以顯示其詳細資訊。
-
在 Connectivity & security (連線和安全) 索引標籤上,向下捲動至頁面底部的 Manage IAM roles (管理 IAM 角色) 區段。
-
對於新增 IAM 角色到此執行個體,請選擇您在 步驟 3:建立您的資料庫執行個體的 IAM 角色並附加政策 中建立的角色。
-
針對 Feature (功能) 選擇 S3_INTEGRATION。
-
選擇 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-arnyour-role-arn
在 Windows 中:
aws rds add-role-to-db-instance ^ --db-instance-identifier
mydbinstance
^ --feature-name S3_INTEGRATION ^ --role-arnyour-role-arn
將
替換為您前個步驟記下的角色 ARN。your-role-arn
S3_INTEGRATION
必須在 --feature-name
選項中指定。