跨帳戶共用資源

本指導教學可能會產生成本。 使用「成本估算器」根據您的預計用量生成成本估算。

本指導教學將逐步引導您瞭解如何在帳戶之間共用雲端型資源的不同選項。

網際網路上提供了不可計數的服務數目。 您可能在許多服務提供者擁有帳戶。 若要使用這些服務,您通常會使用使用者身分 (ID) 與密碼的組合,或提供某種形式的 API 金鑰或存取記號 (通常與其他鑑別層次 (因素) 結合) 來存取它們。 使用微服務型架構建置雲端原生應用程式時,個別元件可以使用相同的技術來彼此存取以進行協同作業。 理想情況下,可以自動化設定,並將存取權限定為必要下限,以提高安全。

聚焦於雲端服務時,它可能稱為 連接器服務連結服務對服務授權。 這類自動化服務連結提供更緊密的整合,且通常會將鑑別和授權結合成單一自動化設定。 一般而言,服務連結需要服務位於相同的雲端帳戶中。 該分組是合理的,並簡化了開發和作業。 但有時,組織,特別是安全與合規相關的需求,可能意味著將部分服務分開,並將它們保留在中央帳戶中。 因此,應用程式必須跨帳戶共用資源。 共用可以在 IBM Cloud 企業環境 中的帳戶之間進行,也可以在沒有正式企業組織的情況下進行。

本指導教學會逐步引導您完成在帳戶之間共用雲端資源的一般使用案例及好處。 您將瞭解如何使用 Terraform 手動或完全自動化來實作那些共用實務範例。

目標

  • 瞭解跨帳戶共用資源的好處
  • 瞭解跨帳戶共用資源的不同技術

資源共用概觀

尋找多個應用程式存取及使用相同資源或部分資源並不罕見。 一個範例是當應用程式和運算環境必須在相同的公司網路上存活時。 另一個實務範例是在中央儲存體中收集安全日誌。 在微服務架構中,它需要我們配置服務來存取及使用外部資源。 接著,共用資源必須授權存取,且它們之間的網路會配置成支援這類協同作業,但不支援更多。

資源共用的部分一般使用案例如下:

  • 安全相關基礎架構的中央管理。 從專用帳戶監視安全,並在單一位置聚集安全日誌。 管理中央金鑰管理系統 (KMS) 中的所有加密金鑰。
  • 網址和子網路的協調。 應用程式和運算環境需要適合相同的網路,並且需要共用位址範圍和網域名稱。
  • 災難回復資源的中央管理,包括 IBM Cloud Backup for Classic 之類的備份服務。 應用程式及其服務可能設計為高可用性,但在最壞情況下,可能會有其他集中組織的資源可供使用。 這包括保留多個全球可用的資源副本,例如儲存在 replicated Object Storage buckets 中。
  • 可能的話,透過共用更昂貴的服務來控制成本。 並非每個開發專案都需要將所有服務部署為專用實例。 通常,在帳戶內或之間共用服務實例已足夠。 即使在正式作業環境中,也可以根據服務實例的成本/價值因素及技術可行性來共用服務實例。 這可以透過利用 專用型錄及限制公用型錄 來限制帳戶中的可用服務,然後集中提供受限服務的實例來組織。
  • 公司層次或業務單位的資源集中管理。 這可能是品牌行銷或集中管理範本、基本映像檔 (虛擬機器、儲存器) 等等所需的資產。 同樣地,專用型錄和 Container Registry 是一般服務。
  • 讓稀少資源可供更多使用者使用。 有時,資源類型只能以有限數量提供。 透過共用,更多應用程式可以從中受益。 這可能需要速率限制。

分享安全資源

通常,安全是在公司層次進行管理,並已制定全公司的規則。 因此,執法亦由中央管理。 當工作負載移至雲端環境時仍然如此。 資源共享是集中管理安全以及評估和強制執行合規性的基礎。

共用安全相關資源
共用安全相關資源

上圖顯示下列實務範例:

  1. 帳戶 A科目 B 中 Object Storage 和 Databases for MongoDB 的實例會利用 Key Protect中 主要科目 所管理的加密金鑰。
  2. 主要帳戶 中的 Security and Compliance Center 控管所有三個帳戶中的資源 (請參閱上方的黑行)。
  3. 帳戶 A帳戶 B 中的IBM Cloud Activity Tracker Event Routing實例將審核日誌定向到主帳戶中的IBM Cloud Logs (請參閱上面的藍色線)。 IBM Cloud Logs配置為保留審核日誌以滿足分析和公司要求。

共用可以在 IBM Cloud Enterprise 環境 中的帳戶之間進行,也可以在沒有正式企業組織的情況下進行。

加密金鑰管理

在幾乎所有環境中,資料都會以加密方式儲存。 依預設,加密是由提供者管理,這表示加密金鑰是由雲端提供者提供及維護。 為了提高安全性,客戶可以利用金鑰管理服務 (KMS) 來使用自己的金鑰。 在 IBM Cloud中,KMS 可以位於與使用加密金鑰的服務相同的帳戶或位於另一個帳戶中。 這可讓您集中管理所有公司帳戶的加密金鑰。 如此一來,就可以監視使用情形,並在需要時使加密金鑰失效。

Key ProtectHyper Protect Crypto Services 支援此部署型樣。 您可以配置對整個實例的存取權,或為了加強安全,對個別 金鑰環-金鑰集合 的存取權。Hyper Protect Crypto Services 搭配 Unified Key Orchestrator 甚至可讓您在不同雲端提供者的金鑰儲存庫之間編排加密金鑰。

Security and Compliance Center

Security and Compliance Center 具有 Posture Management 功能。 它可協助監視已部署的環境是否安全,並根據法規遵循目標來評量它們。 在企業中,您可以從中央實例 定義範圍以監視及評量多個帳戶或帳戶群組

IBM Cloud Logs

IBM® Cloud Logs允許管理作業系統日誌、應用程式日誌、平台日誌和審核日誌,並提供搜尋和過濾功能。 IBM® Cloud Logs Routing用於將平台日誌路由到IBM Cloud Logs實例或其他支援的實例。 在更大的背景下進行整合分析,從而提高(安全)洞察力。 配置為保留在您自己的Object Storage儲存桶中以進行長期儲存。 請參閱描述租用戶和帳戶特定目標的 日誌路由

IBM Cloud Activity Tracker Event Routing

所有IBM Cloud服務都會產生與安全相關的操作的事件。 透過利用IBM Cloud Activity Tracker Event Routing,安全記錄可以集中到一個或幾個IBM Cloud Logs實例,並長期儲存在您管理的Object Storage桶中。 透過聚集一個位置中的所有記錄,安全事件可以輕鬆地產生關聯,從而增加對發生事件的洞察,甚至容許及早偵測。

網路資源的共用

在企業環境定義中設計及開發雲端原生應用程式通常涉及協調網路資源 (例如位址範圍及子網路、網域名稱及資料流量遞送)。 不同的帳戶及其應用程式和運算環境需要適合網路及其結構。 這需要共用網路資源。

共用網路資源
共用網路資源

  1. Transit Gateway 服務用於在三個帳戶之間交互連接 VPC 環境和標準基礎架構。
  2. 每一個帳戶都有一個 DNS Services 實例來管理專用網域名稱。 實例已連接至共用 DNS 區域。

DNS Services

您可以使用 DNS Services,從 IBM Cloud中部署的資源解析專用位址 (網域名稱)。 無法從公用網際網路解析網域名稱。 DNS 區域是網域名稱的集合,由 DNS 資源記錄組成。 其他帳戶可以使用 DNS 區域及其記錄,從而建立鏈結區域。

Transit Gateway

Transit Gateway 服務容許在 IBM Cloud 環境 (包括標準基礎架構和 Virtual Private Clouds (VPC)) 之間建立連線功能。 您甚至可以 連接在不同帳戶中管理的環境。 流經 Transit Gateway 的資料會停留在 IBM Cloud 專用網路內,且不會公開到公用網際網路。

實作資源共用

如簡介中所述,通常會存取一個 (雲端) 帳戶以外的服務。 視整合層次而定,有不同的方式來授權服務存取權及實作鑑別。 下面將討論這些可用的選項。

使用密碼或 API 金鑰進行鑑別

許多資源容許產生多個認證。 通常,它們是由使用者身分 (ID) 與密碼的組合所組成,或僅由單一 API 金鑰所組成。 通常可以指定認證的專用權集,例如,容許唯讀存取權或可存取、修改或甚至建立及刪除的範圍。 然後會針對相依服務或應用程式匯入或配置認證,以存取該資源。 即使可以存取,設定也需要一些 (手動) 工作,而且整體來說,它們只是鬆散耦合或整合。

在 IBM Cloud內,部分計算服務包括 Code EngineKubernetes Service 容許自動建立及配置認證,即所謂的 服務連結

服務至服務授權

存取另一個服務的更緊密整合方法是 建立服務對服務授權(s2s 授權)。 您建立 IBM Cloud Identity and Access Management (IAM) 原則,以授權來源服務存取目標服務。 因為鑑別是透過識別要求存取權的來源服務來完成,所以不需要密碼或 API 金鑰形式的認證。 因為已建立 IAM 原則,所以會自動處理鑑別及授權。

跨帳戶授權

IAM 支援在另一個 IBM Cloud 帳戶中的來源服務與現行帳戶中的目標之間建立服務對服務授權。 因此,它容許透過建立 IAM 授權原則在帳戶之間共用資源。 您可以利用 CLI 或執行 Terraform 程式碼,以多種方式建立這類原則,包括 在瀏覽器主控台中 (如下所示)。

在下列範例中,來源帳戶中的特定 Object Storage 實例獲授與現行帳戶中所識別 Key Protect 實例的 讀者 角色。

授與服務對服務授權
授與服務對服務授權

下列顯示用於建立 具有相同 IAM 授權原則的資源的 Terraform 程式碼:

resource "ibm_iam_authorization_policy" "cross_account_policy" {
  source_service_account      = data.ibm_iam_account_settings.account_a_settings.account_id
  source_service_name         = "cloud-object-storage"
  source_resource_instance_id = data.ibm_resource_instance.cos_resource_instance.guid

  target_service_name         = "kms"
  target_resource_instance_id = data.ibm_resource_instance.kms_resource_instance.guid

  roles                       = ["Reader"]
  description                 = "read access on Key Protect in Main Account for Account A"
}

可以使用 IBM Cloud CLI 搭配 iam service-policy-create 指令 來建立相同的授權原則:

ibmcloud iam authorization-policy-create cloud-object-storage kms Reader --source-service-account source_account_id --source-service-instance-id cos_instance_id --target-service-instance-id kms_instance_id

主控台、Terraform 提供者及 CLI 都使用 IAM 原則管理 API 來建立原則。

下一步,在授權原則就緒的情況下,可以建立使用 Key Protect 根金鑰的已加密儲存體儲存區。 下列顯示使用資源 ibm_cos_bucket的 Terraform 程式碼。 屬性 key_protect 會保留根金鑰的 CRN。

resource "ibm_cos_bucket" "cos_bucket" {
  bucket_name          = "cos-bucket"
  resource_instance_id = data.ibm_resource_instance.cos_resource_instance.id
  region_location      = var.region
  key_protect          = data.ibm_kms_key.central_kms_root_key.id
  storage_class        = "smart"
}

您可以在 GitHub 儲存庫 跨帳戶資源共用中找到更多範例。

一般服務對服務授權

Key ProtectHyper Protect Crypto Services 之類金鑰管理服務 (KMS) 的相依關係通常適用於雲端型解決方案。 KMS 實例會保留主要金鑰,以進行客戶管理的加密。 大部分服務都支援客戶控制的加密金鑰。 在上述範例中,許多其他服務可以使用跨帳戶共用的 KMS 實例,而不是 cloud-object-storage (Object Storage)。

服務對服務授權的其他一般 (目標) 服務及資源共用的候選項包括:

  • Object Storage: 數個服務需要或能夠將資料和日誌檔儲存在儲存體儲存區中。 這包括保存存取日誌及監視資料。 其他服務需要存取儲存區才能執行資料分析。 還有另一個服務種類需要存取權來訂閱變更通知,以觸發執行動作。
  • Event Notifications: 若要將事件的相關資訊推送至訂閱者,服務實例需要存取 Event Notifications 實例。
  • Secrets Manager: 此服務會儲存並提供給其他服務 IAM API 金鑰、SSL/TLS 憑證及其他密碼。 因此,相依 (來源) 服務需要存取 Secrets Manager。
  • Cloud Internet Services (CIS): 它會管理網域名稱及其他網路資料,因此可用於例如憑證驗證。
  • IBM Cloud Logs RoutingIBM Cloud Activity Tracker Event Routing:需要對IBM Cloud Logs等目標的服務存取權。

請注意,上述清單不完整。

摘要

存取不同帳戶中的資源,即使共用資源也是常見的作法。 有數個使用者受益於資源共用的使用案例。 在概述中討論了這些問題。 使用者身分和密碼的組合或用來存取資源的 API 金鑰通常會作為鑑別。 存取權可以限定為一組專用權,例如,僅容許讀取權或一些其他受限動作。 有時,存取資源 (如應用程式或計算環境 (「服務連結」)) 可以建立及管理這些類型的認證。 不需要認證的更緊密整合是 IBM Cloud 服務對服務授權的概念。 存取資源 (來源) 和存取資源 (目標) 由其內容 (鑑別) 來識別,並指派存取角色 (授權)。 這種關係甚至可以跨越帳戶界限來建立。 這可讓您簡單配置,但仍可安全地跨帳戶資源共用。

跨服務共用及重複使用功能的摘要
服務 功能
安全和觀察
Security and Compliance Center 掃描企業中的多個帳戶或帳戶群組
IBM Cloud Activity Tracker Event Routing 將您的IBM Cloud Activity Tracker Event Routing事件路由到另一個帳戶並整合事件數據
IBM Cloud Logs Routing 將日誌路由到目標,例如 IBM Cloud Logs 或 Event Streams
Key Protect 使用 服務對服務授權 來共用加密金鑰。 組織金鑰環中的金鑰,以更簡單的管理及加強安全。
Hyper Protect Crypto Services 使用 服務對服務授權 來共用加密金鑰。 組織金鑰環中的金鑰,以更簡單的管理及加強安全。
Hyper Protect Crypto Services,含 Unified Key Orchestrator 將 Hyper Protect Crypto Services 實例連接至 IBM Cloud 及協力廠商雲端 中的金鑰儲存庫。
Secrets Manager Secrets Manager
網路
Transit Gateway 使用 Transit Gateway跨帳戶連接
DNS Services 在 DNS Services
帳戶設定
型錄 利用 專用型錄及限制公用型錄 來限制帳戶中的可用服務
資料庫
IBM Cloudant 跨帳戶的資料抄寫
Cloud Databases 跨帳戶還原備份

您可以在 GitHub 儲存庫 cross-account-resource-sharing中找到如何為其中部分服務設定資源共用的程式碼範例。