附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
深入瞭解標記式 Oracle Cloud Infrastructure Identity and Access Management 政策
簡介
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 原則是強大且安全的雲端環境的基石。它們提供強大的彈性機制,可控制對 OCI 資源的存取,確保只有獲得授權的使用者和服務才能對指定的資源執行特定動作。
OCI IAM 原則是一組以人為可讀語法撰寫的宣告式敘述句,指定誰可以存取什麼以及在哪些條件之下。這些原則可讓組織強制實行最低權限原則,只授予使用者和服務執行工作所需的權限。這樣可以將安全風險降到最低,同時維持營運效率。
OCI IAM 原則適用於 OCI 階層的各種層級,包括區間、租用戶和特定資源,因此可高度適應複雜的組織結構。透過 OCI 的原則繼承和區間化,管理員可以根據其特定的安全性和操作需求建立精細的控制。如需有關 OCI 原則的詳細資訊,請參閱原則入門。
在本教學課程中,我們將探討原則最佳化的重要性、探索微調原則以達到最佳結果的最佳做法,以及強調可充分運用原則最佳化的案例。
目標
-
解密原則元件和語法。
-
瞭解調整 OCI IAM 原則的原因對於擴展性與原則限制至關重要。
-
提供可行的最佳實務做法。
-
強調在政策管理中標記的角色。
-
透過展示實際使用案例來突顯常見的挑戰和解決方案。
必要條件
-
存取 OCI 租用戶。
-
對 OCI 概念的基本瞭解。
-
OCI IAM 的知識。
-
熟悉原則語法。
-
瞭解區間化與標記基本知識。
-
最低特權原則意識。
-
OCI 原則限制知識。
-
具備治理和法規遵循標準的經驗。
解密政策元件與語法
若要有效調整 OCI IAM 原則,必須瞭解其結構和主要元件。OCI 中的原則透過指定誰 (主要)、何者 (動作) 以及何處 (範圍) 來定義權限。讓我們細分:
OCI IAM 原則的主要元件
-
主要項目 (主旨):要求存取的實體,可以是下列其中一項:
-
使用者: OCI 中的個別帳戶,通常代表人員。如需詳細資訊, 請參閱管理使用者.
-
群組:具有共用存取權需求的使用者集合。如需詳細資訊,請參閱使用群組。
-
動態群組:一組由特定規則識別的 OCI 資源 (例如運算執行處理、函數)。動態群組中的資源會根據標記或描述資料等條件自動分組。如需詳細資訊,請參閱管理動態群組。
-
資源主體:代表其操作的服務 (例如 OCI Functions 或 Oracle Autonomous Database)。資源主體可讓服務以 OCI 和其他資源安全地認證,而不需要明確的證明資料。如需詳細資訊,請參閱資源主體認證。
-
執行處理主體:運算執行處理特定的資源主體類型。它可讓執行處理使用 OCI IAM 原則直接與 OCI 服務 (例如 OCI Object Storage 或 Identity) 互動,而不需要在執行處理上執行的應用程式中內嵌證明資料。如需詳細資訊,請參閱執行處理主體。
-
-
動作 (動詞):指定主要項目可以執行的作業:
inspect
:檢視資源的相關描述資料。read
:檢視資源內的描述資料和資料。use
:執行讀取動作和有限的管理作業。manage
:執行所有動作,包括建立和刪除資源。
如需詳細資訊,請參閱作業。
-
資源 (資源類型):定義要套用動作的 OCI 資源類型,例如:
- 運算執行個體、儲存貯體、VCN、資料庫等。
- 您可以使用區間以階層方式組織資源,以進行更好的管理。
如需詳細資訊,請參閱資源。
-
範圍 (位置):指定原則適用的位置:
- 區間:資源的邏輯容器,可啟用階層式組織。
- 租用戶:整個 OCI 帳戶通常用於全域權限。
如需詳細資訊,請參閱地點。
-
比對規則 (條件):指定一或多個條件。對於邏輯 OR 或 AND,請分別使用 any 或 all 搭配多個條件。
- 單一條件的語法:
variable =|!= value
。 - 多個條件的語法:
any|all {<condition>,<condition>,...}
。
如需詳細資訊,請參閱條件。
- 單一條件的語法:
紅利提示:瞭解 OCI IAM 原則中的 Sets-Intersect Concept
OCI IAM 原則中的 sets-intersect 只有在兩組值之間重疊時,才用於授予存取權。這可確保根據群組成員資格、資源標記或其他屬性動態授予權限,而不是對原則中的特定使用者或群組進行硬式編碼。
-
OCI IAM 原則中的 Sets-Intersect 範例
Allow any-user to manage database-family-resources in tenancy where sets-intersect(request.groups.name, target.resource.compartment.tag.database.admins)
打破原則敘述句:
-
允許任何使用者:此原則適用於 OCI 中任何已認證的使用者 (不論特定群組成員身分為何)。
-
管理 database-family-resources:授予對所有資料庫相關資源 (自治式資料庫、資料庫系統、備份等等) 的完整管理控制。
-
在租用戶中:此原則適用於整個租用戶 (所有區間)。
-
其中 sets-intersect (
request.groups.name
,target.resource.compartment.tag.database.admins
)request.groups.name
:代表使用者所屬的群組。target.resource.compartment.tag.database.admins
:區間中的標記,其中包含可管理該區間中資料庫資源的允許群組清單。- sets-intersect (...):確保只有在使用者至少屬於標記中所列的一個群組時,才會授予存取權。
-
適用於大規模的 OCI IAM 政策模型
OCI IAM 原則是保護 OCI 上工作負載的基本部分之一。能夠為客戶擴展和支援大型工作負載至關重要。這就是為什麼我們建立了一個需要少量政策的政策模型,在 OCI 的政策限制內,該政策模型適用於任何規模的工作負載。下列是採用可擴充政策模型的部分原因。如需詳細資訊,請參閱 IAM With Identity Domains Limits 。
調整 OCI IAM 原則是維護安全、可擴展且高效率雲端環境的重要工作,同時維持在 OCI 的原則限制內。以下說明此處理程序的重要原因:
-
原則限制條件和限制條件: OCI 會對可以在租用戶和區間內建立的原則數目強制實行特定限制。如果未最佳化原則,在大規模或複雜的環境中可快速使用這些限制。
-
主要原因包括:
- 避免備援:針對不同的區間或資源重複定義類似的原則,可能會導致原則浮現,進而更難管理。
- 留在 OCI 原則限制內: OCI 每個原則和每個租用戶都有最多的原則敘述句數目。調整可確保您不會提前達到這些限制。
-
-
增強可管理性:隨著組織的成長,在多個區間中管理數百個原則變得不需調校即可完成。最佳化原則:
- 藉由減少原則總數來簡化管理。
- 提高清晰度並避免重疊或衝突的規則,使除錯和稽核更容易。
-
跨複雜環境的擴展性:調整後的原則可透過下列方式順暢調整:
-
效能最佳化: OCI 會在每次存取要求期間評估原則。大量備援或過度特定的原則可增加評估時間,進而導致存取控制決策變慢。最佳化原則可減少開銷,確保作業更快、更有效率。
-
遵循最低權限的原則:調整擴展性時,維持最低權限的原則是非常重要的。廣泛的未檢查原則可能會危害安全性,因此在最低存取和擴展性之間取得平衡至關重要。
Policy Management 中標記的角色
標記功能是 OCI 中的強大功能,可藉由微點控制資源,大幅強化原則管理。標記是描述資料標籤,以索引鍵 - 值組表示,可以連附至資源。他們協助大規模組織、管理及強制執行存取控制,特別是在具有多個團隊和專案的複雜雲端環境中。如需詳細資訊,請參閱標記功能總覽。
標記功能如何增強原則管理
-
簡化資源識別:標記提供統一的方式,根據專案、環境、擁有者或部門等屬性將資源分類。這可簡化將原則套用至特定資源子集的程序。
範例:使用
Project: ProjectX
標記資源會啟用目標存取原則。Allow group Developers to manage instances in tenancy where tag.Project = 'ProjectX'
-
啟用動態原則強制實行:以標記為基礎的原則會適應不斷變化的資源屬性。例如,如果新實例標記為
Environment: Production
,則會自動繼承為生產環境定義的原則。原則範例:
Allow group QA to inspect instances in tenancy where tag.Environment = 'Test'
-
簡化多重專案與多團隊治理:標記可透過將資源與特定團隊或專案建立關聯,協助隔離存取。這可降低管理多個群組的權限時的複雜性。
-
加速自動化:標記可驅動自動工作流程,以建立、監控及生命週期管理。例如,成本追蹤指令碼可以擷取所有標記為 CostCenter:Marketing 的資源,以產生詳細的費用報表。
-
改善成本管理與報告:標記可為特定專案、部門或環境提供精細的成本歸因。這有助於組織更有效地追蹤支出並最佳化預算。
標記治理:控制標記管理
為了在原則管理中維持一致性、可靠性和安全性,應嚴格控制標記的建立和修改。治理可確保標記正確套用,並符合組織標準。將標記管理限制在特定一組個人或群組,是維護組織雲端環境內控制、一致性及安全性的關鍵元素。
-
為何要限制標記管理?
標記功能是組織和控制資源的強大工具,但如果管理錯誤,可能會導致存取控制不一致或未經授權、成本追蹤問題以及治理挑戰。藉由對誰可以管理標記實施嚴格的原則,組織可以確保只有獲得授權的人員才能建立、修改或刪除重要標記,並保留環境的完整性。
-
防止未經授權的變更:標記通常與重要的業務流程連結,例如成本配置、資源分類及存取控制。允許未經限制的存取修改標記可能會導致未經授權或不小心的變更,這可能會破壞作業或導致資源配置錯誤。
-
確保一致性標記標準:組織受益於標準化標記架構,有助於組織資源並輕鬆追蹤。藉由將標記管理限制在已定義的管理員群組,組織可以確保遵守這些標準,避免標記實務發生分散和不一致的情況。
-
維護安全與規範:標記可以用來強制實施安全原則和規範需求。例如,標記可以定義環境 (例如 Production、 Development) 或機密資料分類。僅允許已授權的使用者修改這些標記,可確保機密環境受到保護並正確執行存取控制。
-
降低原則錯誤組態的風險: OCI 中的標記型原則 (例如資源存取控制) 取決於一致且準確的標記用法。如果錯誤的群組或個人可以修改或刪除標記,則可能會意外導致存取原則過大或受到限制。
-
-
如何限制 OCI 中的標記管理
在 OCI 中,標記管理可以透過建立和套用定義誰可以執行標記作業 (例如建立、更新或刪除標記) 的 OCI IAM 原則來控制。您可以量身打造這些原則,將存取權授予特定使用者、群組或區間,以確保只有經過授權的個人才能夠變更重要標記。
以下是將標記管理限制為特定個人或群組的一些方式:
-
使用以群組為基礎的存取控制:控制標記管理的第一個步驟是確保只授予特定群組管理標記所需的權限。例如,可以為指定的群組 (例如
TagAdmins
) 提供獨佔權限,以處理標記的建立和更新。OCI IAM 原則範例:
Allow group TagAdmins to manage tag-namespaces in tenancy
此原則可確保只有
TagAdmins
群組才能建立、修改或刪除整個租用戶的標記和標記命名空間。若要讓 devops 工程師或 Terraform Runner 群組等某些群組能夠透過主控台使用這些建立的標記進行命令檔,您可以定義下列原則。Allow group devopsTeam to use tag-namespaces in tenancy Allow group terraformRunner to use tag-namespaces in tenancy Allow dynamic-group terraformRunner to use tag-namespaces in tenancy
-
針對精細控制使用區間層級原則:您可以在區間層級套用標記管理原則,因此只有特定區間具備標記管理存取權。例如,如果您想要將標記管理限制在特定專案或業務單位,可以套用限制相關區間內標記存取的原則。
區間特定標記管理的範例原則:
Allow group TagAdmins to manage tag-namespaces in compartment ProjectA
這樣可確保只有
TagAdmins
群組中的使用者才能管理ProjectA
區間內的標記,限制其對其他區間的存取。此外,您可以建立群組,只允許使用者使用已建立的標記,但不能在區間層級進行修改。Allow group TagUser to use tag-namespaces in compartment ProjectA
-
使用標記命名空間標記控制: OCI 支援將相關標記群組在一起的
tag namespaces
。您可以控制誰可以管理特定命名空間內的標記,以便更精細地控制可存取特定類型標記的人員。命名空間特定標記管理的範例原則:
Allow group TagAdmins to manage tag-namespaces in tenancy where tag.namespace = 'Billing'
這可確保只有具備
TagAdmins
權限的使用者才能管理計費命名空間內的標記,以更嚴密的方式治理成本追蹤標記。 -
稽核和監控標記變更:為了確保標記管理保持安全,組織應實行稽核和監控原則,以追蹤對標記所做的任何變更。OCI 的稽核日誌可讓您檢視與標記建立、刪除及修改相關的動作。監控這些日誌可協助識別任何未經授權的嘗試,以修改標記或任何建議管理錯誤的模式。
-
實際使用案例的標記式 OCI IAM 原則
現在,在實際使用案例中,讓我們針對使用者原則和執行處理原則調整 OCI IAM 原則。但在我們這麼做之前,有些常見的政策是,不論客戶的使用案例為何,每個客戶都需要使用。
-
通用 OCI IAM 原則:
-
用於使用者管理的 OCI IAM 原則:
IAMAdmin
群組負責管理 OCI IAM 相關組態,例如 OCI IAM 網域、使用者和群組。Allow group IAMAdmin to manage domains in tenancy Allow group IAMAdmin to manage users in tenancy Allow group IAMAdmin to manage groups in tenancy
-
標記管理的 OCI IAM 原則:
InfoSec
群組負責管理安全相關組態,例如 OCI IAM 原則、使用者和標記命名空間。Allow group InfoSec to manage tag-namespaces in tenancy Allow group InfoSec to manage policies in tenancy Allow group InfoSec to use users in tenancy Allow group InfoSec to manage groups in tenancy where all {target.group.name != ‘Administrators’, target.group.name != ‘InfoSec’}
-
適用 (Terraform 執行程式) 的 OCI IAM 原則:
terraform-runner
群組專用於執行基礎架構佈建的 Terraform 自動化命令檔。Allow group terraform-runner to use tag-namespaces in tenancy Allow group terraform-runner to manage instance-family in compartment Tenants Allow group terraform-runner to manage virtual-network-family in compartment Tenants Allow group terraform-runner to manage volume-family in compartment Tenants Allow group terraform-runner to manage object-family in compartment Storage Allow group terraform-runner to manage secret-family in compartment Tenants Allow group terraform-runner to manage key-family in compartment Tenants
-
針對使用者主體調整 OCI IAM 原則
OCI IAM 政策模型:在此政策模型中,目標是撰寫少量由資料 (案例中的標記) 通知的可管理政策 (亦稱為「以屬性為基礎的存取控制」)。系統會將指定給目標資源或目標資源區間的標記稱為權限標記,以進行存取控制。
權限標記:定義租用戶中每個動詞 (動作) + 資源類型組合的權限標記。它們會定義您需要為目標資源指派給使用者群組的唯一權限。清單未設定完成。從少量權限標籤開始。取得政策模型的控點後,您可以新增更多權限標記。在本教學課程中,我們將建立權限標記命名空間作為 mgmt
。此外,我們將建立一個標記命名空間 (此 infosec
),其中包含一個名為 gname
的標記索引鍵。
-
對於具有四種資源類型的下列區間結構,以及指定這些資源的管理與使用權限,我們將會建立權限標記。
-
對於您需要指派給目標的每一個權限 (大多數情況下的區間),請建立一個群組。我們會將權限標記指定給資源 (使用區間預設標記) 和資源區間。標記值是應具有目標資源之指定權限的群組。
-
定義權限標記之後,我們便可以撰寫原則。最後的結果是,租用戶中定義的每個權限標記只需要一個原則。指定權限的相同原則將在整個租用戶中運作。
-
隨著我們加入更多工作負載,如果要管理更多資源類型,則您可能必須為這些權限標記新增更多權限標記和原則。否則,您只要將現有的權限標記指定給新的工作負載,其中包含應具有存取權的使用者群組。我們不需要為新工作負載編寫任何新的原則。
此方法在所有此處討論的範例中都保持一致,作為定義 OCI IAM 群組和原則的基礎。
範例 1:每個應用程式的區間
步驟 1:全面瞭解客戶的業務概要
CompanyA 是一家成長型技術公司,為其客戶開發和部署多個雲端原生應用程式。每個應用程式都符合特定的客戶群,並具備嚴格的安全性和規範需求。為了確保隔離、可擴展性和高效率的存取控制,CompanyA 使用結構化的區間化方法組織其 OCI 資源。
步驟 2:設計工作負載的區間結構
如所述,CompanyA 遵循 OCI IAM 政策模型來調整其 OCI IAM 原則。它們為其應用程式建立了不同的隔離專區,以維護資源隔離。
注意:只有管理員才能夠管理
mgmt
和infosec
標記命名空間。
步驟 3:設計下列類型 Verb+Resource 組合的權限標記
在 OCI 中建立群組。
-
以具備建立群組權限的管理員帳戶登入 OCI IAM 網域。
-
前往識別與安全,然後按一下識別底下的網域。
-
選取您的區間,然後按一下要為其建立群組的網域。
-
按一下群組。
-
根據權限標記定義您的群組。( 選擇性 ) 將您的使用者新增至這些群組。
注意:您必須為唯一的權限和目標組合建立群組。如果相同的功能群組使用者 (NetworkAdmin) 需要有管理所有目標之網路的存取權,則您只需要一個群組來管理所有目標的存取權。
以下為這些標記的權限標記和 OCI IAM 群組。請依照上述步驟,為每個定義的權限標記建立群組。
-
根區間:根區間可作為最上層管理層。我們的管理群組會標記權限標記。下列標記為:
- 管理員:管理整體租用戶管理的
manageall
權限。 - UseAdministrators:
useall
存取跨租用戶資源的權限。 - 稽核者:具備資源唯讀存取權的
readall
權限,可跨租用戶進行監控。
- 管理員:管理整體租用戶管理的
-
每個應用程式區間模型:CompanyA 有多個雲端應用程式。我們會為每個應用程式建立個別的父項區間。讓我們探索此模型如何套用至應用程式 1 (App1) 和應用程式 2 (App2) 作為父項區間。
-
應用程式 1 (App1):託管在 OCI 上的客戶導向應用程式。
- 網路區間: 適用於所有網路相關資源 (例如 VCN、子網路等等) 的區間。現在,您可以建立權限標記及其個別的 OCI IAM 群組。
- App1NetworkAdmin:用於管理 App1 網路資源之工程師的
managenetwork
資源權限標記。 - App1NetworkUser:
usenetwork
資源權限標記,適用於需要 App1 網路組態有限存取權的開發人員。 - App1NetworkReader:用於驗證 App1 網路設定之稽核者的
readnetwork
資源權限標記。
- App1NetworkAdmin:用於管理 App1 網路資源之工程師的
- 運算區間: 運算執行處理的區間。現在,您可以建立權限標記及其個別的 OCI IAM 群組。
- App1ComputeAdmin: App1 後端的系統管理員佈建和調整運算執行處理的
managecompute
資源權限標記。 - App1ComputeUser: App1 的開發人員部署及測試後端服務的
usecompute
資源權限標記。 - App1ComputeReader:監督 App1 之運算資源使用狀況的稽核者所使用的
readcompute
資源權限標記。
- App1ComputeAdmin: App1 後端的系統管理員佈建和調整運算執行處理的
- 資料區間: 資料庫和儲存相關資源的區間。現在,您可以建立權限標記及其個別的 OCI IAM 群組。
- App1DataAdmin:用於管理 Oracle 自治式資料庫和 App1 OCI 物件儲存的資料庫管理員的
managedb
資源權限標記。 - App1DataUser:
usedb
資源權限標記,可供存取資料集以進行 App1 相關分析的資料科學家使用。 - App1DataReader:稽核者複查 App1 資料庫組態的
readdb
資源權限標記。
- App1DataAdmin:用於管理 Oracle 自治式資料庫和 App1 OCI 物件儲存的資料庫管理員的
- 網路區間: 適用於所有網路相關資源 (例如 VCN、子網路等等) 的區間。現在,您可以建立權限標記及其個別的 OCI IAM 群組。
-
應用程式 2 (App2):用於 CompanyA 作業的內部企業資源規劃 (ERP) 系統。
注意:我們也將採用相同的區間結構方法,並在父項 App2 區間底下建立網路區間、運算區間和資料區間。為了避免冗餘,我們只會記下 App2 的權限標記和 OCI IAM 群組。
-
網路區間:
- App2NetworkAdmin:
managenetwork
資源權限標記。 - App2NetworkUser:
usenetwork
資源權限標記。 - App2NetworkReader:
readnetwork
資源權限標記。
- App2NetworkAdmin:
-
運算區間:
- App2ComputeAdmin:
managecompute
資源權限標記。 - App2ComputeUser:
usecompute
資源權限標記。 - App2ComputeReader:
readcompute
資源權限標記。
- App2ComputeAdmin:
-
資料區間:
- App2DataAdmin:
managedb
資源權限標記。 - App2DataUser:
usedb
資源權限標記。 - App2DataReader:
readdb
資源權限標記。
- App2DataAdmin:
-
-
注意:將權限標記套用至目標 (目標可以是資源或區間),以指定哪些群組將擁有 App1 和 App2 目標的特定權限。
步驟 4:撰寫這些權限標記的 OCI IAM 原則
我們將使用與此處討論的相同方法建立 CompanyA 的原則:更少 - 針對群組調整 OCI IAM 原則。因此,請建立一個標記命名空間 (我們將呼叫此 infosec
),其中包含一個名為 gname
的標記索引鍵。
-
以具備建立原則之權限的管理員帳戶登入 OCI IAM 網域。
-
前往識別與安全,然後按一下識別底下的原則。
-
選取根區間,然後按一下建立原則。
-
輸入原則的名稱、描述,然後一併新增原則敘述句。按一下建立。
-
所有資源原則:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
注意:請依照相同的程序來定義下列所有原則,並新增它們各自的原則敘述句。
-
雲端保全原則:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
網路原則:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
運算原則:
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcompute)
-
資料庫原則:
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
範例 2:每個客戶 / 租用戶的區間
步驟 1:全面瞭解客戶的業務概要
CompanyB 解決方案是領先的獨立軟體供應商 (ISV),在雲端基礎架構、資料管理和分析中提供以用戶為基礎的 SaaS 應用軟體。CompanyB 為各行各業的多個客戶提供無縫、安全且可擴展的解決方案。他們的成功需要使用設計完善的區間結構 OCI 來有效管理資源,同時遵守安全性和合規性需求。
步驟 2:設計工作負載的區間結構
CompanyB 已將客戶的工作負載隔離,並已建立專屬子區間。此外,它們也有網路區間、共用儲存體以及資料庫區間。即使是 CompanyB,也遵循 OCI IAM 政策模型來調整其 OCI IAM 政策。
步驟 3:設計下列類型 Verb+Resource 組合的權限標記
若要建立群組,請參閱範例 1 步驟 3。您必須為下方定義的所有權限標記建立群組。
-
根區間 - 集中式治理:根元件可作為監督整個 OCI 租用戶之所有資源和活動的中央層。我們的管理群組會標記權限標記。下列標記為:
- 管理員:管理整體租用戶管理的
manageall
權限。 - UseAdministrators:
useall
存取跨租用戶資源的權限。 - 稽核者:具備資源唯讀存取權的
readall
權限,可跨租用戶進行監控。
- 管理員:管理整體租用戶管理的
-
網路區間 - 作業骨幹:網路區間支援 CompanyB 的雲端網路基礎架構,可跨所有資源進行連線。這包括虛擬雲端網路 (VCN)、子網路、閘道及負載平衡器。讓我們定義權限標記及其個別的 OCI IAM 群組。
- NetworkAdmin:用於管理 CompanyB 網路資源之工程師的
managenetwork
資源權限標記。 - NetworkUser:
usenetwork
資源權限標記,適用於需要 CompanyB 網路組態有限存取權的開發人員。 - NetworkReader:用於驗證 CompanyB 網路設定之稽核者的
readnetwork
資源權限標記。
- NetworkAdmin:用於管理 CompanyB 網路資源之工程師的
-
租用戶區間 - 不同客戶工作負載的隔離區間:租用戶區間的結構為隔離每個從屬端 (租用戶) 的資源和工作負載。這可確保 CompanyB 提供安全和私有服務,同時維持營運效率。
-
租用戶 1 區間:租用戶 1 代表使用 CompanyB 進行應用程式開發與記錄日誌服務的主要企業從屬端。下列是權限標記和個別的 OCI IAM 群組:
t1devadmin
:租用戶 1 之開發團隊的manageappdev
資源權限具有管理權限,可設定及部署自訂應用程式。t1devuser
:useappdev
可監視與調整應用程式資源的資源權限。租用戶 1 的開發人員使用這些資源進行日常開發與測試。t1logsadmin
和t1devuser
:記錄日誌和監督角色的managelogs
和uselogs
資源權限可確保 administrators 可設定記錄日誌服務,而 developers 存取日誌則可對應用程式進行除錯和最佳化。t1devadmin
和t1devuser
:租用戶 1 的managecspm
和usecspm
資源權限,因為它們也著重於安全態勢,並且能夠監督及修正安全風險。
-
Tenant 2 and Tenant 3 Compartments: The structure for Tenant 2 and Tenant 3 mirrors that of Tenant 1, with roles like
t2devadmin
,t2devuser
,t3devadmin
,t3devuser
,t2logsadmin
andt3logsadmin
ensuring that each tenant operates in a fully isolated environment.此方法可讓 CompanyB 維持一致的治理,同時滿足特定租用戶的需求。 -
共用區間 - 所有租用戶的集中式資源:共用區間包含多個租用戶使用但依然以邏輯方式隔離的資源 (例如資料庫和物件儲存),以提供隱私權和安全性。
- 資料庫區間:
dbadmin
: CompanyB 資料庫管理員的managedb
資源權限會處理所有用戶使用的共用資料庫,包括佈建、調整及修正。dbuser
:租用戶特定使用者的usedb
資源權限會存取其個別的資料庫綱要或服務。dbreader
:稽核者的readdb
資源權限具有唯讀存取權,以確保資料庫組態符合安全原則。
- 儲存區間: OCI Object Storage 會集中管理,每個租用戶都有專用的儲存桶:
osadmin
:負責管理共用物件儲存資源的manageobject
資源權限。osuser
:useobject
用戶特定的儲存資源權限 (例如t1osur
、t2osur
、t3osur
) 可確保用戶只能存取其個別的儲存桶。osreader
:規範團隊的readobject
資源權限會複查儲存組態和使用模式。
- 資料庫區間:
-
步驟 4:撰寫這些權限標記的 OCI IAM 原則
若要建立原則,請參閱範例 1 步驟 4。您必須建立下列原則。
-
所有資源原則:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
雲端保全原則:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
網路原則:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
日誌原則:
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
Appdev 原則:
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageappdev) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useappdev) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readappdev)
-
資料庫原則:
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
儲存原則:
Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject) Allow any-user to read object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readobject)
範例 3:大型企業區間結構
步驟 1:全面瞭解客戶的業務概要
CompanyC 解決方案是專門從事創新軟體解決方案的跨國組織,決定將其關鍵任務工作負載移轉至 OCI。該公司在財務和醫療照護等高度監管的產業營運,其中安全、合規和擴展性至關重要。
步驟 2:設計工作負載的區間結構
現在讓我們探索 CompanyC 的區間結構,此區間遵循 OCI IAM 政策模型來調整其 OCI IAM 政策。
步驟 3:設計下列類型 Verb+Resource 組合的權限標記
若要建立群組,請參閱範例 1 步驟 3。您必須為下列所有權限標籤建立群組。
-
根區間 - 集中式治理:根元件可作為監督整個 OCI 租用戶之所有資源和活動的中央層。我們的管理群組會標記權限標記。下列標記為:
- 管理員:管理整體租用戶管理的
manageall
權限。 - UseAdministrators:
useall
存取跨租用戶資源的權限。 - 稽核者:具備資源唯讀存取權的
readall
權限,可跨租用戶進行監控。
- 管理員:管理整體租用戶管理的
-
產品區間:代管關鍵任務生產工作負載 (直接影響業務作業和一般使用者) 的區間。每個應用程式都有專屬的子區間,可用於資源隔離和最佳化管理。讓我們定義權限標記及其個別的 OCI IAM 群組。
- NetworkAdmin:用於管理 CompanyC 網路資源之工程師的
managenetwork
資源權限標記。 - NetworkReader:用於驗證 CompanyC 網路設定之稽核者的
readnetwork
資源權限標記。 - ComputeAdmin:
managecompute
資源權限標記,可供系統管理員佈建及調整 CompanyC 的運算執行處理。 - ComputeReader:監控 CompanyC 之運算資源使用狀況的稽核者所使用的
readcompute
資源權限標記。 - StorageReader:儲存管理員團隊管理儲存組態的
manageobject
資源權限。 - StorageReader:規範團隊的
readobject
資源權限會複查儲存組態和使用模式。 - SecurityAdmin: Compartment PROD 的
managecspm
資源權限也著重於安全態勢,並且能夠監控及修正安全風險。
現在,我們將繼續為應用程式特定的子區間定義權限標記和個別的 OCI IAM 群組。有時候,我們已經為這 3 個不同的應用程式區間合併並定義了權限。
- 應用程式區間:
- PRApp1NetAdmin、PRApp2NetAdmin 及 PRApp3NetAdmin: 分別管理 App1 、App2 及 App3 之網路資源的工程師,擁有
managenetwork
資源權限標記的管理 OCI IAM 群組。 - PRApp1NetUser、PRApp2NetUser 及 PRApp3NetUser: 分別管理 App1 、App2 及 App3 之網路資源的工程師,擁有
usenetwork
資源權限標記的管理 OCI IAM 群組。 - PRApp1ComputeAdmin、PRApp2ComputeAdmin 及 PRApp3ComputeAdmin: 分別管理 App1 、App2 及 App3 之 OCI Compute 執行處理的工程師,擁有
managecompute
資源權限標記的管理 OCI IAM 群組。 - PRApp1ComputeUser、PRApp2ComputeUser 及 PRApp3ComputeUser: 分別為 App1 、App2 及 App3 使用 OCI Compute 執行處理的工程師,以
usecompute
資源權限標記管理 OCI IAM 群組。 - PRApp1StorageAdmin、PRApp2StorageAdmin 及 PRApp3StorageAdmin: 分別為 App1 、App2 及 App3 管理 OCI Object Storage 之工程師的
manageobject
資源權限標記管理 OCI IAM 群組。 - PRApp1StorageUser、PRApp2StorageUser 及 PRApp3StorageUser: 分別為 App1 、App2 及 App3 使用 OCI Object Storage 的工程師,以
useobject
資源權限標記管理 OCI IAM 群組。
- PRApp1NetAdmin、PRApp2NetAdmin 及 PRApp3NetAdmin: 分別管理 App1 、App2 及 App3 之網路資源的工程師,擁有
- NetworkAdmin:用於管理 CompanyC 網路資源之工程師的
-
NPROD 區間:專用於暫存、開發和品質保證環境。此區間的結構與 PROD 類似,可確保一致性。讓我們定義權限標記及其個別的 OCI IAM 群組。
- NetworkAdmin:用於管理 CompanyC 網路資源之工程師的
managenetwork
資源權限標記。 - NetworkReader:用於驗證 CompanyC 網路設定之稽核者的
readnetwork
資源權限標記。 - ComputeAdmin:
managecompute
資源權限標記,可供系統管理員佈建及調整 CompanyC 的 OCI Compute 執行處理。 - ComputeReader:監控 CompanyC 之 OCI Compute 資源用量之稽核者的
readcompute
資源權限標記。 - StorageReader:儲存管理員團隊管理儲存組態的
manageobject
資源權限。 - StorageReader:規範團隊的
readStorage
資源權限會複查儲存組態和使用模式。 - SecurityAdmin:區間 NPROD 的
managecspm
資源權限,因為它們也著重於安全態勢,並且能夠監控和修正安全風險。
同樣地,現在我們將繼續為應用程式特定的子區間定義權限標記和個別的 OCI IAM 群組。
- 應用程式區間:
- NPApp1NetAdmin、NPApp2NetAdmin 及 NPApp3NetAdmin: 分別管理 App1 、App2 及 App3 之網路資源的工程師,擁有
managenetwork
資源權限標記的管理 OCI IAM 群組。 - NPApp1NetUser、NPApp2NetUser 及 NPApp3NetUser: 分別管理 App1 、App2 及 App3 之網路資源的工程師,擁有
usenetwork
資源權限標記的管理 OCI IAM 群組。 - NPApp1ComputeAdmin、NPApp2ComputeAdmin 及 NPApp3ComputeAdmin: 分別管理 App1 、App2 及 App3 之 OCI Compute 執行處理的工程師,擁有
managecompute
資源權限標記的管理 OCI IAM 群組。 - NPApp1ComputeUser、NPApp2ComputeUser 及 NPApp3ComputeUser: 分別為 App1 、App2 及 App3 使用 OCI Compute 執行處理的工程師,以
usecompute
資源權限標記管理 OCI IAM 群組。 - NPApp1StorageAdmin、NPApp2StorageAdmin 及 NPApp3StorageAdmin: 分別為 App1 、App2 及 App3 管理 OCI Object Storage 之工程師的
manageobject
資源權限標記管理 OCI IAM 群組。 - NPApp1StorageUser、NPApp2StorageUser 及 NPApp3StorageUser: 分別為 App1 、App2 及 App3 使用 OCI Object Storage 的工程師,以
useobject
資源權限標記管理 OCI IAM 群組。
- NPApp1NetAdmin、NPApp2NetAdmin 及 NPApp3NetAdmin: 分別管理 App1 、App2 及 App3 之網路資源的工程師,擁有
- NetworkAdmin:用於管理 CompanyC 網路資源之工程師的
-
共用區間: 共用區間會代管資源以進行監控,例如記錄日誌和雲端保全 OCI 服務。它也具有多個用戶所使用的加密和解密金鑰,同時確保邏輯隔離以維護私密性和安全性。您應用程式中需要存取這些服務的所有管理員都將新增至針對這些服務建立的 OCI IAM 群組中。讓我們定義權限標記及其個別的 OCI IAM 群組。
-
Oracle Cloud Guard 區間:
cspmAdmin
:管理 Oracle Cloud Guard for PROD 和 Non PROD 區間之管理員需有managecspm
資源權限標記的管理 OCI IAM 群組。cspmUser
: OCI IAM groups withusecspm
resources permission tag for engineers using/monitoring Oracle Cloud Guard for PROD and Non PROD compartments.cspmReader
:具備readcspm
資源權限標記的 OCI IAM 群組,供讀取 Oracle Cloud Guard for PROD 和 Non PROD 區間的工程師使用。
-
OCI 日誌記錄區間:
logsAdmin
: 管理 OCI IAM 群組含有管理 PROD 和 Non PROD 區間之 OCI 日誌記錄的managelogs
資源權限標記。logsUser
:針對 PROD 和 Non PROD 區間使用 / 監控 OCI Logging 的工程師,使用uselogs
資源權限標記的 OCI IAM 群組。logsReader
:具備readlogs
資源權限標記的 OCI IAM 群組,供讀取 PROD 和 Non PROD 區間的 OCI 日誌記錄的工程師使用。
-
金鑰區間:
kmsAdmin
: 管理 OCI IAM 群組含有管理 PROD 和 Non PROD 區間之金鑰保存庫的managekeys
資源權限標記。kmsUser
:針對使用 / 監控 PROD 和 Non PROD 區間之金鑰保存庫的工程師,使用usekeys
資源權限標記的 OCI IAM 群組。kmsReader
:具備readkeys
資源權限標記的 OCI IAM 群組,可供工程師讀取 PROD 和 Non PROD 區間的金鑰保存庫。
-
-
操場區間:用於實驗、開發及測試的彈性與隔離環境。此區間未與生產環境或規範限制連結,因此適用於創新。在這裡,我們只有一個 OCI IAM 管理員群組適用於非常子項區間,並將管理權限提供給測試需求所需的所有 OCI 資源。
-
開發區間:
DevAdmin
:具有managenetwork
、managecompute
、manageobject
、managekeys
、managelogs
資源權限的管理 OCI IAM 群組,可供開發管理員在開發區間中測試新的實行。
-
測試區間:
TestAdmin
:具有managenetwork
、managecompute
、manageobject
、managekeys
、managelogs
資源權限的管理 OCI IAM 群組,可供開發管理員在「測試區間」內測試新的實行。
-
效能測試區間:
PerfTestAdmin
:具有managenetwork
、managecompute
、manageobject
、managekeys
、managelogs
資源權限的管理 OCI IAM 群組,可供開發管理員在「效能測試區間」內測試新的實行。
-
步驟 4:撰寫這些權限標記的 OCI IAM 原則
若要建立原則,請參閱範例 1 步驟 4。您必須建立下列原則。
-
所有資源原則:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
日誌原則:
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
雲端保全原則:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
金鑰原則
Allow any-user to manage keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managekeys) Allow any-user to use keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usekeys) Allow any-user to read keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readkeys)
-
應用程式原則:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject)
-
遊樂場政策:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to manage vaults in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageVaults Allow any-user to manage keys in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageKeys
注意:每次您上線新工作負載時,都會出現此類情況:
- 請檢查您是否需要任何其他權限標記。接著建立這些權限標記的 OCI IAM 原則。
- 建立群組以管理對新工作負載區間的存取權。
- 使用權限標記和建立的群組標記工作負載區間。
精細存取控制的標記型權限模型
到目前為止,我們已討論過一系列資源的建立管理、使用者或讀取權限。不過,大多數客戶都需要精細的存取控制才能遵循最低權限的模型。教學課程的重點是瞭解政策模型,這也是我們談論簡單使用案例的原因。不過,讓我以四個網路人員為例,以及如何為這四個角色設計精細的權限標記和 OCI IAM 原則。
-
NetworkOwner:此人員或團隊擁有 OCI 租用戶的網路實行。他們有權設定 FastConnect 和管理所有應用程式網路的權限。
-
NetworkAdmin:此團隊擁有應用程式團隊的網路實作。他們可以為應用程式團隊建立 VCN。不過,它們無法存取設定網路防火牆或 FastConnect。
-
NetworkOperator:此小組擁有應用程式的網路。團隊可以在應用程式的 VCN 或共用的 VCN 中建立應用程式子網路。然而,它們沒有管理或更新 VCN 的權限。
-
NetworkUser:這是需要使用應用程式網路資源權限的應用程式管理員團隊。
我們會將 networkowner
、networkadmin
、networkoperator
和 networkuser
定義為網路區間上的四個標記。對於這些標記,我們將會指定可存取網路區間的群組名稱。
-
NetworkOwner 政策:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkowner)
-
NetworkAdmin 政策:
Allow any-user to manage vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage local-peering-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage service-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage internet-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin)
-
NetworkOperator 政策:
Allow any-user to {VCN_ATTACH,VCN_DETACH} in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator)
-
NetworkUser 政策:
Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use vnics in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser)
調整執行處理主體 OCI IAM 原則
範例 1:OCI 中共用儲存和加密密碼的多租用戶執行處理存取控制
步驟 1:全面瞭解客戶的業務概要
XYZ Cloud Solutions 是 SaaS 供應商,提供託管在 OCI 上的 Document Management System (DMS)。此平台為多個企業客戶提供服務,每個客戶都需要嚴格隔離其資料,同時利用共用基礎架構。
客戶需求:
- 每個企業 (租用戶) 都應該具有獨立的執行處理來處理及管理文件。
- 每個租用戶的加密密碼 (API 金鑰、資料庫證明資料) 都只能由該租用戶的執行處理存取。
- 所有租用戶都將其文件儲存在集中式 OCI 物件儲存區間中,但只能存取自己的儲存桶。
- 系統應支援自動調整規模,並輕鬆上線新租用戶。
步驟 2:設計工作負載的區間結構
現在讓我們探索 XYZ Cloud Solutions 的區間結構,此區間遵循 OCI IAM 政策模型來調整其 OCI IAM 政策。
-
隔離租用戶與區間:
- 為每個企業客戶 (Tenant1、Tenant2 等等) 建立專屬 OCI 區間。
- 在各自的區間內部署運算執行處理 (VM、函數或容器)。
- 具有存取控制的集中式儲存。
-
維護 OCI 物件儲存的儲存桶共用儲存區間:
- 每個租用戶都會取得一個標記為
Enterprise.Tenant=<TenantName>
的專用儲存桶。 - OCI IAM 原則可確保每個租用戶的執行處理只能從自己的儲存桶讀取。
- 使用 OCI 保存庫進行加密密碼管理。
- 每個租用戶都會取得一個標記為
-
將資料庫證明資料、API 金鑰及加密金鑰儲存在 OCI 保存庫中:
- 每個租用戶的加密密碼都以
Enterprise.Tenant=<TenantName>
標記。 - OCI IAM 原則只允許租用戶的執行處理擷取其加密密碼。
- 治理的企業標記策略。
- 每個租用戶的加密密碼都以
-
使用
Enterprise.Tenant
定義企業標記命名空間以追蹤租用戶擁有權:- 套用區間預設標記即可自動標記每個租用戶區間內的資源。
- 使用以標記為基礎的原則進行自動存取控制。
步驟 3:建立 OCI IAM 群組
為確保 OCI 多用戶環境中的安全和隔離存取管理,將定義下列原則:
-
InfoSec 群組:具有管理原則、標記、使用者和群組存取權的安全管理員。
-
Terraform-Runner Group:用於管理 OCI 資源的基礎架構即程式碼 (IaC) 執行群組。
注意:這些群組和 OCI IAM 原則已經如通用 OCI IAM 原則區段中所述建立。
步驟 4:為定義的群組建立 OCI IAM 原則
用戶資源存取原則:若要維持資料隔離,用戶資源只能存取自己的加密密碼和物件儲存。
Allow any-user to use object-family in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
Allow any-user to use secret-family in compartment Tenants where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
如果租用戶執行處理原則也需要建立新物件的權限,則您可以建立與租用戶名稱相同名稱的儲存桶名稱,並使用租用戶名稱標記與儲存桶名稱進行比較。
Allow any-user to manage objects in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.bucket.name
範例 2:針對共用 OCI 儲存模型中的多重服務資料存取進行微點存取控制
步驟 1:全面瞭解客戶的業務概要
XYZ Corp 是一家專門從事數位轉型解決方案的快速成長企業。XYZ Corp 在全球營運,並在多個區域營運,並利用 OCI 託管關鍵應用程式、管理資料,以及確保團隊之間的無縫協作。
客戶需求:
- 特定租用戶的所有管理服務執行處理都可以讀取共用儲存區間內的管理儲存桶。
- 特定租用戶的所有銷售服務執行處理都可以讀取共用儲存區間內的「銷售儲存桶」。
- 特定租用戶的所有供應服務執行處理都可以讀取共用儲存區間內的供應儲存桶。
- 特定租用戶的所有執行處理都可以在共用儲存區間內讀取 Shared Services 儲存桶。
- 特定租用戶的所有執行處理都可以讀取租用戶區間內該租用戶的加密密碼。
步驟 2:設計工作負載的區間結構
現在讓我們探索 XYZ Corp 的區間結構,此區間遵循 OCI IAM 政策模型來調整其 OCI IAM 政策。
-
建立租用戶特定區間:
- 為每個租用戶建立專用區間。
- 屬於租用戶的所有資源都必須在該租用戶的區間內佈建。
-
企業標記命名空間:
- 使用下列標記索引鍵定義企業標記命名空間:
Enterprise.Tenant
擷取用戶名稱。Enterprise.Service
擷取服務類型。例如,管理、銷售、供應或共用。
- 使用下列標記索引鍵定義企業標記命名空間:
-
租用戶區間的預設標記:
- 設定每個租用戶區間的區間預設標記,確定
Enterprise.Tenant
標記會自動套用至區間內的所有資源,擷取租用戶名稱。
- 設定每個租用戶區間的區間預設標記,確定
-
資源層次標記:
- 租用戶區間內的每個資源都應使用
Enterprise.Service
指定服務類型。例如,管理、銷售、供應等等。
- 租用戶區間內的每個資源都應使用
-
目標資源標記 (儲存桶和加密密碼):
- 將每個目標資源 (例如儲存桶和加密密碼) 標記為:
Enterprise.Tenant
擷取用戶名稱。Enterprise.Service
擷取關聯的服務類型。
- 將每個目標資源 (例如儲存桶和加密密碼) 標記為:
-
標記共用儲存桶:
- 若為共用儲存桶資源,請設定
Enterprise.Service = 'Shared'
以表示跨服務可存取性。
- 若為共用儲存桶資源,請設定
步驟 3:建立 OCI IAM 群組
為確保 OCI 多用戶環境中的安全和隔離存取管理,將定義下列原則:
-
InfoSec 群組:具有管理原則、標記、使用者和群組存取權的安全管理員。
-
Terraform-Runner Group:用於管理 OCI 資源的基礎架構即程式碼 (IaC) 執行群組。
-
動態群組 AdminInstances:使用比對規則
All {tag.Enterprise.Service.value=’Admin’}
。 -
動態群組 SalesInstances:使用比對規則
All {tag.Enterprise.Service.value=’Sales’}
。 -
動態群組 SupplyInstances:使用比對規則
All {tag.Enterprise.Service.value=’Supply’}
。
注意: InfoSec 和 Terraform-Runner 群組和 IAM 原則已經如上所述建立,如通用 OCI IAM 原則一節所述。
步驟 4:為定義的群組建立 OCI IAM 原則
用戶資源存取原則:若要維持資料隔離,用戶資源只能存取自己的加密密碼和物件儲存。
Allow dynamic-group AdminInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
Allow any-user to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Shared’}
Allow dynamic-group AdminInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
相關連結
認可
-
作者 - Chetan Soni (雲端資深工程師)
-
貢獻者 - Kiran Thakkar (首席雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Deep Dive into Tag based Oracle Cloud Infrastructure Identity and Access Management Policies
G30372-01
Copyright ©2025, Oracle and/or its affiliates.