如何透過 VPC 將資料從 AWS S3 搬遷至 Google Cloud Storage

我們的雲端儲存移轉服務可以讓您安全的將資料從 Amazon S3 傳輸到 Google Cloud Storage 中。為了使用 GCP 的服務,客戶將 PB 量級的資料從 S3 移轉至 Cloud Storage 中,並希望可以強化此傳輸服務。使用 VPC Service ControlsGCP 上針對敏感資料定義安全邊界的一個服務,增加一層或多層的安全防護,讓您更安全的移轉資料。

讓我們來看看如何使用 VPC Service Controls 安全的將資料傳輸至 Cloud Storage 中。在這個範例中,我們會爲 service account 制定一個簡單版的 VPC Service Control rule,如果您需要更多功能,也可以將他設定的複雜些。如果您想了解更多應用案例,VPC Service Control 相關文件會有更多進階 rules 的介紹。這裡可以看到一些實作範例。

除了從 S3 移轉資料,Cloud Storage Transfer Service 也可以在 Cloud Storage buckets 和 HTTP/HTTPS servers 之間傳輸資料。

這個教學假設您已經擁有 GCP 帳戶或是 GCP 免費試用版。進入雲端控制台,選擇或創建一個專案並啟用 billing。

讓我們開始傳輸資料

跟著這個流程讓您的資料從 S3 移轉至 Cloud Storage。

步驟 1:新增一個具有傳輸資料權限的 AWS IAM 用戶,並確保該用戶能夠存取 S3 中的檔案並傳輸資料。

GCP 需要有 Amazon S3 的資料存取權。您新增的 AWS IAM 用戶需要有以下角色:

  • 列表 Amazon S3 中每個 bucket
  • 取得 Amazon S3 中 bucket
  • 讀取 Amazon S3 中 bucket 下的物件

您也需要新增至少一個傳輸資料的訪問/密鑰 。您也可以針對不同業務需求,爲每一筆傳輸作業建立獨立的訪問/密鑰。

步驟 2:創建你的 VPC Service Control perimeter

從 Cloud Console 中,創建你的 VPC Service Control perimeter,並啟用您想在這個 perimeter 內想要保護的 APIs。

注意,VPC Service Control 頁面在 Cloud Console 中預設是不可見的,即使你擁有 organization admin 權限,也看不見這個頁面。需要透過 organization admin 在 IAM page 中授予 Access Context Manager Admin 權限給設定 VPC Service Control 的 users。他的頁面看起來如下:

步驟 3:取得運行傳輸作業的 service account 的名稱。

此 service account 應位於將啟動移轉作業的 GCP 專案中。設計上,此 GCP 專案將不會位在您的 VPC Service Control 的 perimeter 中。

service account 的名稱格式如下:
project-[ProjectID]@storage-transfer-service.iam.gserviceaccount.com

您可以使用此 API 解析來確認您的 service account 名稱。

步驟 4:在 Access Context Manager 中創建一個 access policy

注意:一個組織節點只能有一個存取權政策。如果你透過控制台新增 access level,它會自動為你創建一個 access policy。

或是通過 command line 新增 policy,如下所示:

gcloud access-context-manager policies create \
--organization ORGANIZATION_ID --title POLICY_TITLE

當 command 完成,您將會看到如下內容:

Create request issued
Waiting for operation [accessPolicies/POLICY_NAME/create/1521580097614100] to complete...done.
Created.
步驟 5:在 access policy 上創建一個 access level 將存取限制在一個使用者或 service account

這即是一個 access policy 上的一個 access level 的簡單範例,其限制了對於該 project 的 VPC 存取僅能透過該 service account 完成。當然,更複雜的 access level rules 組合是可以做到的。然而,這裡我們透果一個簡單的例子作為 VPC Service Controls 的一個 “Hello, world” 範例。

步驟 5.1:創建一個 .yaml 文件來設定擁有存取權限的成員。
- members:
   - user:sysadmin@example.com
   - serviceAccount:service@project.iam.gserviceaccount.com
步驟 5.2:儲存文件

在這個範例中,將文件命名為 CONDITIONS.yaml。下一步,創建 access level。

gcloud access-context-manager levels create NAME \
  --title TITLE \
  --basic-level-spec CONDITIONS.yaml \
  --combine-function=OR \
  --policy=POLICY_NAME

您將會看到以下輸出:

Create request issued for: NAME
Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
Created level NAME.
步驟 6:將 access level 綁定至您所創建的 VPC Service Control

此步驟為確認您剛所創建的 access level 作用在 VPC Service Control perimeter 保護範圍內的服務上,如下所示:

步驟 7:開始傳輸作業

從 controlled perimeter 外的專案中啟動檔案傳輸至位於 controlled perimeter 內的專案的 Cloud Storage Bucket。這個傳輸只能透過你在上一步 access level 中設定的那個 service account 驅動。如下所示:

完成!您存在 S3 中的資料現在已經移轉到 Google Cloud Storage 中,您可以對其做管理、修改或移轉。透過以下資源,以了解更多關於傳輸資料到 GCP 的資訊:

相關文章

(原文翻譯自 Google Cloud。)

 


連絡「GCP 專門家」