本頁面概略說明如何建立基本存取層級。如要建立自訂存取層級,並在 Google Cloud 控制台中使用進階模式,請參閱「建立自訂存取層級」。
本頁面提供更具體的存取層級實作方式。請參閱以下範例:
事前準備
- 瞭解存取層級。
建立基本存取層級
控制台
如要建立基本存取層級,請按照下列步驟操作:
在 Google Cloud 控制台中,開啟「Access Context Manager」頁面。
如果系統提示您選取機構,請依提示選取您的機構。
按一下「Access Context Manager」頁面最上方的 [New] (新增)。
在「New Access Level」(建立新的存取層級) 窗格中:
在「Access level title」(存取層級標題) 欄位中,輸入存取層級的標題。標題長度不得超過 50 個字元,開頭須為英文字母,且只能包含數字、英文字母、底線和空格。
在「Conditions」(條件) 部分,按一下要新增的屬性類型的「add」(新增) 按鈕,然後提供要套用至該屬性的值。
如需可供新增屬性的完整清單,請參閱存取層級屬性。
舉例來說,如果您希望存取層級能考量要求源自您網路中的哪個位置,請選取 [IP Subnetworks] (IP 子網路) 屬性。
重複這個步驟,即可在同一個條件中新增多個屬性。如果條件有多個屬性,存取要求必須符合所有屬性。
存取層級條件可包含每種類型的一個屬性。部分屬性會提供其他選項,例如「Device Policy」(裝置政策) 屬性。
存取層級支援根據使用者身分設定條件。不過,如要將身分新增至條件,您必須使用 gcloud CLI 或 API 建立或更新存取層級。
使用「When condition is met, return」(符合條件時傳回) 選項,指定條件是否評估為 AND 運算,要求要求符合所有指定屬性 (TRUE),或評估為否定 (NAND) 運算,在要求不符合至少一個指定屬性時符合條件 (FALSE)。
舉例來說,如果您要拒絕來自網路內特定 IP 位址範圍的要求,請使用「IP Subnetworks」(IP 子網路) 屬性指定 IP 位址範圍,然後將條件設為「FALSE」。
或者按一下 [Add another condition] (新增其他條件),為您的存取層級新增其他條件,然後重複前兩個步驟。
舉例來說,如果您要拒絕大範圍 IP 位址中某個子集的存取要求,請建立新條件並為「IP Subnetworks」(IP 子網路) 屬性指定子集的 IP 位址範圍,然後將條件設為傳回「FALSE」。
如要將其他條件加到同一個存取層級,請重複這個步驟直到需要的條件都新增完畢。
如果您建立了多個條件,請使用「Combine condition with」(合併條件),指定存取層級是否要求要求至少符合其中一個條件 (「OR」),或符合所有條件 (「AND」)。
按一下 [儲存]。
gcloud
事前準備
- 如果機構還沒有存取權政策,請為機構建立存取權政策。
如要使用 gcloud 指令列工具建立存取層級,請使用 gcloud access-context-manager levels create 指令。
gcloud access-context-manager levels create LEVEL_NAME OPTIONS \ --policy=POLICY
其中:
LEVEL_NAME 是存取層級的專屬名稱。開頭須為英文字母,而且只能使用英文字母、數字和底線。名稱長度上限為 50 個半形字元。
OPTIONS 是下表中的必要選項。
選項 basic-level-specYAML 檔案:指定存取層級的一或多個條件。
title存取層級的簡短標題,存取層級的標題會顯示在 Google Cloud 控制台中。
combine-function(選用) 決定條件的合併方式。
有效值:
AND、ORdescription(選填) 存取層級的詳細說明。
POLICY 是組織存取權政策的 ID。如果您已設定預設政策,則可選擇是否要使用這個參數。
或者您可納入任何一個全 gcloud 標記。
basic-level-spec YAML 檔案
使用 gcloud 指令列工具建立存取層級時,必須為 basic-level-spec 選項提供 YAML 檔案。YAML 檔案會定義存取層級的一或多個條件。條件必須包含至少一個屬性。如果條件包含多個屬性,則會根據條件中的 negate 屬性是否設為 true,將這些屬性合併為 AND 運算 (全部必須為 true) 或 NAND 運算 (至少一個必須為 false)。
如需 YAML 檔案中可包含的完整屬性清單,請參閱存取層級屬性。
如要進一步瞭解存取層級和 YAML,請參閱存取層級的 YAML 範例。
範例指令
gcloud access-context-manager levels create Device_Trust \
--basic-level-spec=corpdevspec.yaml \
--combine-function=AND \
--description='Access level that conforms to corporate spec.' \
--title='Device_Trust Extended' \
--policy=1521580097614100
API
事前準備
- 如果機構還沒有存取權政策,請為機構建立存取權政策。
如要建立存取層級,請呼叫 accessLevels.create。
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
其中:
- POLICY 是組織存取權政策的 ID。
要求主體
要求主體必須包含 AccessLevel 資源,指定新存取層級的條件。每個 Condition 都有一或多個屬性,系統會根據 negate 欄位是否設為 true,將這些屬性評估為 AND 運算 (全部必須為 true) 或 NAND 運算 (至少一個必須為 false)。評估結果會決定是否符合條件。
回應主體
如果成功,呼叫的回應主體會包含 Operation 資源,其中提供有關 POST 作業的詳細資料。
實作範例
以下例子介紹幾個可讓您的機構用來導入存取層級的實際做法。請注意,這些例子假設您的機構已有存取權政策。
限制公司網路的存取權
這個例子說明如何建立只允許從特定 IP 位址範圍 (例如公司網路內的 IP 位址) 存取的存取層級條件。
藉由限制可獲存取權的 IP 位址範圍,您可以讓機構內外的攻擊者更難以竊取資料。
在本範例中,假設您要建立存取層級,允許一組內部稽核人員存取名為 sensitive-data 的專案 Cloud Logging 服務。稽核員所有裝置的指定 IP 都位於範圍在 203.0.113.0 到 203.0.113.127 之間的子網路。您知道除了稽核員使用的裝置以外,不會有任何其他裝置指派到該子網路。
如要使用私人 IP 位址範圍 (例如 192.168.0.0/16 或 172.16.0.0/12),請參閱「允許從內部 IP 位址存取受保護的資源」,瞭解其他資訊和使用 VPC Service Controls 的實作範例。
控制台
在 Google Cloud 控制台中,開啟「Access Context Manager」頁面。
如果系統提示您選取機構,請依提示選取您的機構。
按一下「Access Context Manager」頁面最上方的 [New] (新增)。
在「New Access Level」(建立新的存取層級) 窗格中,按一下「Conditions」(條件) 部分的 [Add attribute] (新增屬性),然後再按一下 [IP Subnetworks] (IP 子網路)。
在「IP Subnetworks」(IP 子網路) 方塊中,選取「Public IP」(公開 IP) 或「Private IP」(私人 IP)。
如果選取「Public IP」(公開 IP),請輸入一或多個 IPv4 或 IPv6 範圍,並採用 CIDR 區塊格式。
在本例中,如要將存取權限制為僅限稽核人員,請在「IP Subnetworks」(IP 子網路) 方塊中輸入
203.0.113.0/25。如果選取「私人 IP」,請按一下「選取虛擬私有雲網路」。您可以使用「Import options」(匯入選項) 清單中的三個選項之一,指定虛擬私有雲網路。
選項 1:
選取「Browse for VPC networks in your organization」(瀏覽貴組織中的虛擬私有雲網路),然後選取虛擬私有雲網路。
按一下「Add selected VPC networks」(新增所選虛擬私有雲網路)。
按一下「選取 IP 子網路」,然後選取子網路。
按一下「新增 IP 子網路」。
選項 2:
選取「Manually enter VPC network address」(手動輸入虛擬私有雲網路位址),然後輸入一或多個虛擬私有雲網路。
按一下「Add VPC network」(新增虛擬私有雲網路)。
按一下「選取 IP 子網路」,然後選取子網路。
按一下「新增 IP 子網路」。
選項 3:
選取「上傳 CSV 檔案 (覆寫現有網路)」。
如果您使用 CSV 檔案將虛擬私有雲網路和子網路新增至存取層級,Access Context Manager 會覆寫先前選取的虛擬私有雲網路和子網路。
按一下「瀏覽」,然後上傳 CSV 檔案。在 CSV 檔案中,您必須以下列格式指定虛擬私有雲網路和子網路:
VPC_NETWORK_NAME_1 | IP_RANGE_1 | IP_RANGE_2 | ... VPC_NETWORK_NAME_2 | . | . | ... . | . | . | ... . | . | . | ...
按一下「匯入聯播網」。
Access Context Manager 會使用 CSV 檔案,在「VPC network address」(虛擬私有雲網路位址) 和「IP subnetworks」(IP 子網路) 方塊中,分別填入虛擬私有雲網路名稱和子網路資訊。
如要瞭解虛擬私有雲網路名稱和私人 IP 位址格式,請參閱「在存取層級中使用內部 IP 位址」。
按一下 [儲存]。
gcloud
為存取層級建立 YAML 檔案,其中包含一或多個格式為 CIDR 區塊的 IPv4 或 IPv6 範圍。
在本例中,如要限制只有稽核人員可以存取,請在 YAML 檔案中輸入下列內容:
- ipSubnetworks: - 203.0.113.0/25如要使用私人 IP 位址,請在 YAML 檔案中輸入下列資訊:
- vpcNetworkSources: - vpcSubnetwork: network: VPC_NETWORK_NAME vpcIpSubnetworks: - IP_RANGE將 VPC_NETWORK_NAME 和 IP_RANGE 替換為「在存取層級中使用內部 IP 位址」一節所述的值。
儲存檔案。本例的檔案名稱為「CONDITIONS.yaml」。
建立存取層級。
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY
其中:
NAME 是存取層級的專屬名稱。開頭須為英文字母,且只能由英文字母、數字和底線組成。
TITLE 是人類可讀的標題。政策不得使用重複的標題。
POLICY 是組織存取權政策的 ID。如果您已設定預設政策,則可選擇是否要使用這個參數。
畫面會顯示類似以下的輸出:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
建立要求主體,以建立
AccessLevel資源,其中包含一或多個格式為 CIDR 區塊的 IPv4 或 IPv6 範圍。在本例中,如要僅限稽核員存取,請在要求主體中輸入以下程式碼:
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "ipSubnetworks": [ "203.0.113.0/25" ] } ] } }
其中:
NAME 是存取層級的專屬名稱。開頭須為英文字母,且只能由英文字母、數字和底線組成。
TITLE 是人類可讀的標題。政策不得使用重複的標題。
如要使用私人 IP 位址,請在要求主體中輸入下列資訊:
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "vpcNetworkSources": [ { "vpcSubnetwork": { "network": VPC_NETWORK_NAME, "vpcIpSubnetworks": [ IP_RANGE ] } } ] } ] } }
將 VPC_NETWORK_NAME 和 IP_RANGE 替換為「在存取層級中使用內部 IP 位址」一節所述的值。
呼叫
accessLevels.create建立存取層級。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
其中:
- POLICY 是組織存取權政策的 ID。
依裝置屬性限制存取權
本範例說明如何建立存取層級,只允許符合一組指定條件 (例如特定作業系統 (OS) 版本) 的裝置存取。
裝置資訊會透過端點驗證提供給 Access Context Manager。系統在決定是否授予存取權時,會檢查下列條件:
- 已啟用螢幕鎖定
- 已啟用儲存空間加密
- 裝置正在執行指定類型及版本的作業系統
在本例中,假設您的機構只使用安裝 Chrome 作業系統或 Windows 的電腦,而您希望採用額外的安全防護,因此建立存取層級來防止透過非上述作業系統的使用者存取。此外,為控管風險,您想要確保只有特定版本的 OS 能獲得存取權。
控制台
在 Google Cloud 控制台中,開啟「Access Context Manager」頁面。
如果系統提示您選取機構,請依提示選取您的機構。
按一下「Access Context Manager」頁面最上方的 [New] (新增)。
在「New Access Level」(建立新的存取層級) 窗格中,按一下「Conditions」(條件) 部分的 [Add attribute] (新增屬性),然後再按一下 [Device Policy] (裝置政策)。
新增裝置政策屬性:
按一下 [Add OS Policy] (新增 OS 政策),然後再按一下 [Chrome OS Policy] (Chrome OS 政策)。
在「Minimum version」(最低版本) 方塊中,輸入您允許的 Chrome OS 最低版本。
重複步驟 1 和步驟 2 來新增 Windows OS 政策。
按一下 [儲存]。
gcloud
為存取層級建立 YAML 檔案,其中包含具有 OS 限制的裝置政策。
在這個範例中,如要僅允許 Chrome OS 和 Windows 版本符合最低要求的裝置,請在 YAML 檔案中輸入下列內容:
- devicePolicy: osConstraints: - osType: DESKTOP_CHROME_OS minimumVersion: 11316.165.0 - osType: DESKTOP_WINDOWS minimumVersion: 10.0.1809儲存檔案。本例的檔案名稱為「CONDITIONS.yaml」。
建立存取層級。
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY
其中:
NAME 是存取層級的專屬名稱。開頭須為英文字母,且只能由英文字母、數字和底線組成。
TITLE 是人類可讀的標題。政策不得使用重複的標題。
POLICY 是組織存取權政策的 ID。如果您已設定預設政策,則可選擇是否要使用這個參數。
畫面會顯示類似以下的輸出:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
建立要求主體,建立包含 OS 限制裝置政策的
AccessLevel資源。在本例中,如要只允許指定最低版本以上的 Chrome OS 和 Windows 存取,您可在要求主體中輸入以下程式碼:
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "devicePolicy": { "osConstraints": [ { "osType": "DESKTOP_CHROME_OS", "minimumVersion": "11316.165.0" }, { "osType": "DESKTOP_WINDOWS", "minimumVersion": "10.0.1809" } ] } } ] } }
其中:
NAME 是存取層級的專屬名稱。開頭須為英文字母,且只能由英文字母、數字和底線組成。
TITLE 是人類可讀的標題。政策不得使用重複的標題。
呼叫
accessLevels.create建立存取層級。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
其中:
- POLICY 是組織存取權政策的 ID。
依使用者或服務帳戶授予存取權
人類使用者的存取層級通常會結合身分與其他情境,例如 IP 位址。相較之下,服務帳戶的存取層級是根據特定服務帳戶身分定義。舉例來說,Cloud Functions 需要身分才能與其他 Google Cloud 服務互動。
以下資訊說明如何授予特定使用者和服務帳戶存取權,同時納入現有存取層級,以顯示巢狀存取層級的範例。在這種情況下,無論指定使用者是否符合現有存取層級中指定的條件,都會納入這個存取層級。這個新的存取層級可視為限制較少的層級。
控制台
Google Cloud 控制台目前不支援將主體新增至存取層級。如要將主體新增至存取層級,請使用 gcloud 指令列工具或 API。
gcloud
建立 YAML 檔案,其中包含列出要授予存取權的主體條件。
新增系統管理員 (
sysadmin@example.com) 和服務帳戶 (service@project.iam.gserviceaccount.com)。- members: - user:sysadmin@example.com - serviceAccount:service@project.iam.gserviceaccount.com新增條件,列出要納入這個存取層級的現有存取層級。
在本範例中,假設存取層級名稱為
Device_Trust和IP_Trust,而247332951433是存取權政策的名稱。- members: - user:sysadmin@example.com - serviceAccount:service@project.iam.gserviceaccount.com - requiredAccessLevels: - accessPolicies/247332951433/accessLevels/Device_Trust - accessPolicies/247332951433/accessLevels/IP_Trust儲存檔案。本例的檔案名稱為「CONDITIONS.yaml」。
使用
create指令建立存取層級。gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --combine-function=OR \ --policy=POLICY
其中:
NAME 是存取層級的專屬名稱。開頭須為英文字母,且只能由英文字母、數字和底線組成。
TITLE 是人類可讀的標題。政策不得使用重複的標題。
POLICY 是組織存取權政策的 ID。如果您已設定預設政策,則可選擇是否要使用這個參數。
combine-function已設為OR。預設值AND要求必須符合「所有」條件,才能授予存取層級。即使不符合其他條件,OR值也會授予主體存取權。
畫面會顯示類似以下的輸出:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
建立要求主體,以建立
AccessLevel資源,其中包含列出要提供存取權的主體條件。在本範例中,您要新增系統管理員 (
sysadmin@example.com) 和服務帳戶 (service@project.iam.gserviceaccount.com)。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] } ] } }
其中:
NAME 是存取層級的專屬名稱。開頭須為英文字母,且只能由英文字母、數字和底線組成。
TITLE 是人類可讀的標題。政策不得使用重複的標題。
新增條件,列出要納入這個存取層級的現有存取層級。
在本範例中,假設存取層級名稱為
Device_Trust和IP_Trust,而247332951433是存取權政策的名稱。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] }, { "requiredAccessLevels": [ "accessPolicies/247332951433/accessLevels/Device_Trust", "accessPolicies/247332951433/accessLevels/IP_Trust" ] } ] } }
將
combiningFunction設為OR。combiningFunction的預設值AND要求必須符合「所有」條件,才能授予存取層級。即使不符合其他條件 (例如 IP 位址或從其他必要存取層級繼承的條件),OR值也會授予主體存取權。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] }, { "requiredAccessLevels": [ "accessPolicies/247332951433/accessLevels/Device_Trust", "accessPolicies/247332951433/accessLevels/IP_Trust" ] } ], "combiningFunction": "OR" } }
呼叫
accessLevels.create建立存取層級。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
其中:
- POLICY 是組織存取權政策的 ID。