检查点
Create an instance with name as lab-1 in Project 1
/ 10
Update the default zone
/ 10
Create a configuration for Username 2 and name it as user2
/ 10
Restricting Username 2 to roles/viewer in Project 2
/ 10
Create a new role with permissions for the devops team
/ 10
Check binding to roles/iam.serviceAccountUser
/ 5
Bound Username 2 to devops role
/ 5
Create an instance with name as lab-2 in Project 1
/ 5
Check the created service account
/ 5
Check the binding for the service account to roles/iam.serviceAccountUser
/ 10
Check the binding for the service account to roles/compute.instanceAdmin
/ 10
Check lab-3 has the service account attached
/ 10
透過 gcloud 設定 IAM 權限
GSP647
總覽
本研究室將介紹三個與 IAM 和 gcloud 相關的重要主題:
- 設定 gcloud 環境
- 使用多項 gcloud 設定
- 使用服務帳戶
在本研究室中,您將使用 gcloud
CLI 工具設定 Cloud Identity and Access Management (IAM) 的指令功能。
學習重點
在本研究室中,您將執行下列作業:
- 查看 IAM 並使用
gcloud
用戶端 - 建立多項 IAM 設定並在不同設定之間切換
- 找出並指派正確的 IAM 權限
- 建立並使用服務帳戶
初始環境
您一開始有兩個使用者帳戶和兩項專案:
-
user1
具備這兩項專案的「擁有者」權限 -
user2
只具備第一項專案的「檢視者」權限
第一項專案中有 Linux 虛擬機器 (VM) 在執行。
什麼是 IAM?
Google Cloud 提供 Cloud Identity and Access Management (IAM),可讓您定義使用者 (身分) 擁有的資源權限 (角色),藉此控管存取權。
在 IAM 中,您無法將特定資源的存取權直接授予使用者,而是將不同權限的角色授予經驗證的主體。IAM 的主體原稱為成員。某些 API 仍採行這種用法。
身分
在 Cloud IAM 中,您要將存取權授予「主體」。主體可分成以下類型:
- Google 帳戶
- 服務帳戶
- Google 群組
- Google Workspace 帳戶
- Cloud Identity 網域
- 所有已驗證的使用者
- 所有使用者
如要進一步瞭解上述身分類型,請參閱身分相關概念指南。
在本研究室中,您將使用 Google 帳戶、服務帳戶和 Cloud Identity 網域群組。
角色
角色是一組權限。您必須為使用者授予角色,以指派必要的權限,也就是將角色包含的所有權限授予使用者。
如要進一步瞭解角色,請參閱角色指南。
什麼是 gcloud?
gcloud CLI 屬於 Cloud SDK 的一部分。在系統上下載、安裝並初始化 SDK 之後,才能使用 gcloud 指令列工具。您可以透過指令列、指令碼和其他自動化機制使用這項工具,執行許多常見的平台工作。
如要進一步瞭解 gcloud,請參閱 gcloud CLI 總覽指南。
設定和需求
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
如何開始研究室及登入 Google Cloud 控制台
-
按一下「Start Lab」(開始研究室) 按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的暫時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,然後選取「在無痕式視窗中開啟連結」。
接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。 -
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}} 您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}} 您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。 -
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
工作 1:設定 gcloud 環境
本研究室已有名為「centos-clean」的 Compute Engine 執行個體,用於模擬未安裝 gcloud
的環境。請使用 Google Cloud 控制台連線至這個執行個體。
-
依序前往「導覽選單」>「Compute Engine」>「VM 執行個體」,開啟運算執行個體清單。
-
在含有「centos-clean」運算執行個體的那一行中,點選「SSH」。
- 首先請檢查版本,確認
gcloud
已安裝成功。在 SSH 工作階段中執行以下指令:
建立新執行個體並更新預設可用區
確認 gcloud
指令列工具已安裝完畢後,請建立運算執行個體來進行變更。
- 首先在 gcloud 中進行驗證。在 SSH 工作階段中執行以下指令:
當系統顯示「Do you want to continue (Y/n)?」提示訊息時,請按下 Enter 鍵。
-
在新分頁中前往所顯示的連結。
-
按一下您目前所用帳戶的使用者名稱 (
),然後點選「Allow」。 -
當系統顯示「Enter the following verification code in gcloud CLI on the machine you want to log into」提示訊息時,請點選複製按鈕,然後返回 SSH 工作階段,將程式碼貼到「Enter authorization code:」提示訊息中。
-
在 SSH 工作階段中設定區域和可用區:
- 在 SSH 工作階段中執行以下指令:
如果一切都已妥善設定,這項指令會建立執行個體。
但執行個體有多大?位在何處?使用的映像檔為何?
服務會採用幾種預設值,其中某些預設值可在 gcloud
設定中控管。舉例來說,執行個體的位置取決於可用區設定。
- 查看目前的 gcloud 設定。在 SSH 工作階段中執行以下指令:
您會看到 compute
部分、core
部分和 active configuration
。這三者都可變更,但在本研究室中,您只須變更可用區。請查看系統是在哪個可用區中建立 VM。
- 在 SSH 工作階段中執行以下指令,列出所有可使用的可用區:
-
找出您所在區域中的另一個可用區。例如,如果您目前的可用區是
us-west2-a
,可以選擇us-west2-b
。 -
將目前的可用區變更為同區域內的另一個可用區。在 SSH 工作階段中執行以下指令,並將
ZONE
替換為您選擇的可用區:
- 確認可用區已變更。在 SSH 工作階段中執行以下指令:
您會看到可用區已變更。
您可以使用 gcloud config set
指令變更其他設定。變更完成後即無法修改,並會寫入主目錄。
預設設定儲存在 ~/.config/gcloud/configurations/config_default 中。
建立執行個體時,如要使用非預設可用區,可以使用 --zone 參數,例如 gcloud compute instances create lab-1 --zone us-central1-f
。
- 確認可用區已寫入設定檔。在 SSH 工作階段中執行以下指令:
如您所見,設定是以文字形式儲存,並可備份或複製。
工作 2:建立多項 IAM 設定並在不同設定之間切換
您已設定一個帳戶。如需在不同團隊中工作或存取不同帳戶,您也可以透過 gcloud config
進行管理。
在下一項工作中,您將瞭解如何建立第二項設定,並在兩項設定之間切換。
建立新的 IAM 設定
在本研究室中,您有第二個可登入的 Google 帳戶。這個帳戶具有第一項專案的唯讀 (檢視者) 存取權。您要為該使用者建立新設定。
- 為第二個使用者帳戶建立新的
gcloud
設定。在 SSH 工作階段中執行以下指令:
-
選取選項 2:「Create a new configuration」。
-
「configuration name」:請輸入 user2。
-
「Log in with a new account」:選取選項 3。您要使用另一個提供的使用者名稱登入。
-
當系統顯示「Do you want to continue (Y/n)?」提示訊息時,請按下 Enter 鍵。
-
在新分頁中前往所顯示的連結。
-
按一下「Use another account」。
-
複製第二個使用者帳戶 (
),並貼到「email or phone」提示訊息中。 -
複製您在本研究室一開始時使用的密碼,並貼到「enter your password」提示訊息中。
-
按一下「I understand」。
-
按一下「Allow」。
這樣即可允許 Cloud SDK 取得與您 Google 帳戶相同的存取權。
-
當系統顯示「Enter the following verification code in gcloud CLI on the machine you want to log into」提示訊息時,請點選複製按鈕,然後返回 SSH 工作階段,將程式碼貼到「Enter authorization code:」提示訊息中。
-
在「Pick cloud project to use:」中,找出您目前的專案 (
),然後輸入對應至該專案的數字。
初始化完成後,您會看到系統已為您設定好可用區和區域。
測試新帳戶
這個新帳戶具有專案的唯讀權限,因此您可以試著查看並建立幾項資源,確認您是否確實在使用這個帳戶。
- 確認您是否可以查看第一項專案的詳細資料。在 SSH 工作階段中執行以下指令:
第二個使用者帳戶具有檢視者權限,因此系統應會列出 centos-clean
和 lab-1
執行個體。
- 您獲指派的角色為基本檢視者,因此請確認您在第一項專案中無法建立執行個體。在 SSH 工作階段中執行以下指令:
第二個使用者帳戶僅具有檢視者權限,無法建立執行個體,因此這項指令無法順利執行,但要過一小段時間才會顯示執行失敗。
- 變更回第一個使用者的設定 (default)。在 SSH 工作階段中執行以下指令:
您已改回使用原本的使用者帳戶憑證。稍後您要切換使用這兩個帳戶,瞭解不同的角色和權限。
工作 3:找出並指派正確的 IAM 權限
您有兩個使用者帳戶可用於這項專案。第一個使用者具有這兩項專案的完整控管權,可視為管理員帳戶。第二個使用者具有這兩項專案的唯讀權限,並可稱為開發運作使用者,該使用者身分代表一般開發運作層級的使用者。
接下來,您要使用 gcloud
為其中一項專案建立自訂角色,授予建立值區和執行個體的權限,藉此為開發運作使用者設定該專案的存取權。
查看角色和權限
- 如要查看所有角色,請在 SSH 執行階段中執行以下指令:
系統會傳回角色清單。在指令中加入 grep "name:"
可減少傳回的資料量,只傳回角色名稱。
檢查其中一個角色,確認其獲指派的權限。如要查看權限,請使用 gcloud iam roles describe
。試著查看簡易角色 roles/compute.instanceAdmin。
- 查看預先定義的
compute.instanceAdmin
角色。在 SSH 工作階段中執行以下指令:
如您所見,roles/compute.instanceAdmin 具有許多權限,但以下是稍後會用到的基本權限:
- compute.instances.create
- compute.instances.delete
- compute.instances.start
- compute.instances.stop
- compute.instances.update
- compute.disks.create
- compute.subnetworks.use
- compute.subnetworks.useExternalIp
- compute.instances.setMetadata
- compute.instances.setServiceAccount
如要查看角色和獲指派權限的完整清單,請參閱 IAM 權限參考指南。
將第二項專案的存取權授予第二個使用者
知道角色所含的權限後,請將角色和所有相關權限授予使用者帳戶。
繫結角色的方式有兩種:
- 繫結至使用者和機構
- 繫結至使用者和專案
接下來,您要針對第二項專案將「檢視者」基本角色繫結至第二個使用者。
測試第二個使用者沒有第二項專案的存取權
- 將
gcloud
設定切換回第二個使用者 (user2)。在 SSH 工作階段中執行以下指令:
您已切換回 user2
。
- 將
PROJECTID2
設為第二項專案。在 SSH 工作階段中執行以下指令:
bashrc
檔案,因此請謹慎使用。您會收到以下警告訊息:「WARNING: You do not appear to have access to project <第 2 項專案的 ID> or it does not exist.
」
- 當系統顯示「Do you want to continue (Y/n)?」提示訊息時,請輸入「N」並按下 Enter 鍵。
這表示 user 2 無法存取 PROJECTID2 專案,而您必須在下一部分中修正這個問題。
在第二項專案中為第二個使用者授予檢視者角色
- 切換回 default gcloud 設定,該設定有權為第二個使用者授予存取權。在 SSH 工作階段中執行以下指令:
- 安裝
jq
:
接著請將 USERID2
的值設為第二個使用者名稱,並針對第二項專案將檢視者角色繫結至第二個使用者。
- 在 SSH 工作階段中執行以下指令:
執行指令後會顯示如下的文字 (可能需要向上捲動):
工作 4:測試 user2 是否具有存取權
- 將 gcloud 設定切換至 user2。在 SSH 工作階段中執行以下指令:
- 將 user2 的設定變更為第二項專案。在 SSH 工作階段中執行以下指令:
這次不應出現錯誤訊息。
- 確認您具有檢視者權限。在 SSH 工作階段中執行以下指令:
您會看到這項專案中沒有任何執行個體。
- 嘗試以第二個使用者的身分在第二項專案中建立執行個體。在 SSH 工作階段中執行以下指令:
user2 只有專案的檢視者權限,因此這項指令會失敗。
- 將 gcloud 設定切換至 default。在 SSH 工作階段中執行以下指令:
您已改回使用原本的使用者帳戶憑證。
建立具有權限的新角色
接下來,請建立具有開發運作團隊所需權限的新角色。
- 建立名為「
devops
」且具有執行個體建立權限的自訂角色。在 SSH 工作階段中執行以下指令:
這項指令會在專案中建立名為「devops
」的自訂角色,且該角色具有建立和管理執行個體的權限。
系統會列出該角色的完整名稱。請注意,該角色位在專案中,因此路徑的模式為 projects/PROJECT/roles/ROLENAME
。
將角色繫結至兩項專案的第二個帳戶
建立角色後,您必須將使用者和該角色繫結至專案。請使用 gcloud projects add-iam-policy-binding
進行繫結。如要讓這項指令更容易執行,請先設定一些環境變數:專案 ID 和使用者帳戶。
- 將
iam.serviceAccountUser
角色繫結至第二項專案的第二個使用者。在 SSH 工作階段中執行以下指令:
您需要具備相關權限,才能建立已繫結服務帳戶的執行個體。iam.serviceAccountUser
角色具有這些權限,因此請使用這個預先定義的角色。
- 將
devops
自訂角色繫結至第二項專案的第二個使用者。第二個使用者帳戶會顯示在這個頁面的左側。確認 USERID 設為第二個使用者帳戶。
在 SSH 工作階段中執行以下指令:
執行指令後會顯示如下的文字 (可能需要向上捲動):
測試新指派的權限
- 將 gcloud 設定切換至 user2。在 SSH 工作階段中執行以下指令:
您已切換回 user2。
- 嘗試建立名為「lab-2」的執行個體。在 SSH 工作階段中執行以下指令:
user2 現在可以建立執行個體了。
- 確認執行個體是否存在。在 SSH 工作階段中執行以下指令:
您的環境
進行最後這幾項變更後,環境會如下所示:
工作 5:使用服務帳戶
您已瞭解如何進行驗證,以及如何使用 gcloud
透過角色存取 Google Cloud 服務。接下來,我們將介紹一般做法。
您的應用程式採用應用程式設計介面 (API) 讀取和寫入 Cloud Storage bucket。如果每次啟動新伺服器時都必須進行驗證,肯定會讓您感到困擾,也不符合雲端的精神!因此,您要使用「服務帳戶」。
服務帳戶是一種特殊的 Google 帳戶,屬於您的應用程式或虛擬機器 (VM),而不屬於個別使用者。應用程式會透過服務帳戶呼叫服務的 Google API,因此不會直接牽涉到使用者。
如要進一步瞭解服務帳戶,請參閱服務帳戶指南。
接下來請建立服務帳戶,將該服務帳戶與運算執行個體搭配使用,並測試該服務帳戶是否具備您需要的存取權。
建立服務帳戶
- 將 gcloud 設定切換至 default。
user2
無權設定服務帳戶。在 SSH 工作階段中執行以下指令:
- 在設定中將專案設為
PROJECTID2
。在 SSH 工作階段中執行以下指令:
請確認您指定的專案正確無誤。
- 建立服務帳戶。在 SSH 工作階段中執行以下指令:
- 取得服務帳戶的電子郵件地址。在 SSH 工作階段中執行以下指令:
- 將該電子郵件地址置於名為「
SA
」的區域變數中。在 SSH 工作階段中執行以下指令:
這項指令會將 SA 區域變數設為該服務帳戶的電子郵件地址。很實用吧!
- 將
iam.serviceAccountUser
角色授予該服務帳戶。在 SSH 工作階段中執行以下指令:
這個角色可讓該服務帳戶為運算執行個體指派服務帳戶。
工作 6:將服務帳戶與運算執行個體搭配使用
- 將
compute.instanceAdmin
角色授予服務帳戶。在 SSH 工作階段中執行以下指令:
這個角色可讓服務帳戶管理運算執行個體。
- 建立已繫結至開發運作服務帳戶的執行個體。您還須指定存取權範圍,定義執行個體可發出的 API 呼叫。在 SSH 工作階段中執行以下指令:
存取權範圍是為執行個體指定權限的傳統方法。存取權範圍並非安全機制,而是用來定義 gcloud
工具或用戶端程式庫要求所使用的預設 OAuth 範圍。如果發出的要求未透過 OAuth 驗證 (例如 gRPC 或 SignBlob API),存取權範圍就沒有任何作用。
設定執行個體以服務帳戶身分執行時,必須設定存取權範圍。
最佳做法是在執行個體上設定完整的 cloud-platform 存取權範圍,然後透過 IAM 角色安全地限制服務帳戶的 API 存取權。
存取權範圍只適用於個別執行個體。您可以在建立執行個體時設定存取權範圍,但一旦該執行個體的生命週期結束,存取權範圍就會失效。
如果您尚未替服務帳戶所屬的專案啟用相關 API,則存取權範圍不會生效。舉例來說,在虛擬機器執行個體上授予 Cloud Storage 的存取權範圍後,您必須為專案啟用 Cloud Storage API,執行個體才能呼叫 Cloud Storage API。
工作 7:測試服務帳戶
- 使用
gcloud compute ssh
連線至新建立的執行個體。在 SSH 工作階段中執行以下指令:
系統詢問是否要繼續時,請按下 Enter 鍵。
按下 Enter 鍵兩次,略過密碼設定步驟。
- 預設使用的映像檔已包含
gcloud
設定。在 SSH 工作階段中執行以下指令:
設定現已有服務帳戶。
- 建立執行個體,測試您是否已透過服務帳戶取得必要權限:
您可以按下 Enter 鍵,接受這個 VM 的預設可用區。
- 確認繫結的角色是否運作正常。在 SSH 工作階段中執行以下指令:
由於服務帳戶具備權限,因此系統會列出執行個體。
您的環境現在看起來如下所示
恭喜!
您已使用 Cloud SDK 工具 gcloud
完成下列工作:
- 安裝並設定 gcloud 用戶端
- 建立多項 IAM 設定並在不同設定之間切換
- 找出並指派正確的 IAM 權限
- 建立並使用服務帳戶
後續步驟/瞭解詳情
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 4 月 10 日
研究室上次測試日期:2024 年 4 月 10 日
Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。