今天要來介紹的是,剛進入雲端一定會面對到的部分:Project以及 IAM。我覺得這個相關的主題會是雲端裡面數一數二無聊的 QQ,但以一個完整的雲端架構而言,這卻是非常非常重要的部分。特別是 IAM 這個主題,單純這個主題,事實上身為一個雲端管理者、架構師,就可以上一整個月的課程了。
任何的 GCP 服務,都會屬於一個 Google Cloud Console 的 Project,無論是管理 API 、 管理計費方式、增加其他的協作者等都是基於 Project 為單位,而一個 Project 底下則可以有許多的資源 (Resources)。
一個 Project 可以包含非常多的使用者,且每個 Project 都是一個獨立的單位,獨立的隔間,他們會分開的計費。
每一個 Project 會有三個相關的識別屬性
GCP 也可以透過階層式的進行管理,以一個公司為例,通常會使用組織節點 (Organization Node),而一個公司底下可能會有不同的部門,這個時候就可以透過資料夾 (Folders) 進行管理,而每一個部門底下也可能會有多個 Project;每個 Project 底下則又可以有多個 Resources,範例如下圖所示。
不同的資料夾間,可以設定不同的 IAM 權限管理政策,通常來看,整個公司架構的樹狀圖中,位居越高位的管理權限越大,而越下面的權限越低。
Identity and Access Management (IAM),身分以及訪問權限管理,是雲端管理之中,最最重要的一件事情。如果一個 IAM 的階層管理做得越完善,越齊全,就越不可能會遇到一些看起來很荒謬的事情。
例如上述的新聞中,抖音公司的實習生誤刪了資料庫,包含了 ML 平台的 Batch 模型全部都被誤刪。先不考慮官方要嫁禍給實習生的部分,如果說新聞真正屬實的話,那我們就可以斷定說抖音公司的各種 Policy 可能設計的不夠完善。
在訂定各種權限控管時,我們最需要注意的重點是,權限能設定的越小越好,負責 A 專案的人就只能修改,更動 A 專案,盡量以不讓他接觸到其他不屬於他的資源為原則。
GCP 在 IAM 的定義上依照了 3 個元素。Who
can do what
on which resource
。
在 GCP 的 IAM Policy 當中,有 4 種 Who
的定義,
meow@gmail.com
meow@meowmeow.com
meow@googlegroups.com
Can do what,可以做什麼事情,這邊我們又可以把一個 Role 分成了三個部分,Service (服務)、Resource (資源) 與 Verb (動詞)。
例如說我們有一台 Compute Engine 的雲端 VM instances,我們可以設定有一個 IAM 中的使用者,只能幫他進行開機,而不能進行關機以及刪除,這種時候我們就可以設定他的 Services 是 compute
; 他的 Resource 是 instances
;而 Verb 則是 start
,我們可以給予該使用者一個 Role 為 compute.instances.start
,就能完成這樣的功能。
我們可以將上述的 role 套用在指定的 Project 或進一步的資源內,或是各種的服務上,舉例來說,我可以設定使用者只能操作指定的 Project 內的指定資源,只能幫指定的雲端 VM 進行開機等。
相信大家看到這邊,一定覺得如果我公司有上百個人的話,一行一行的幫所有人寫 role 是一件很辛苦的事情,所以 Google 也提供了 3 種 IAM role 可以供大家快速套用。這邊的 Role 主要就是定義 "Can do what" 的部分。
在 Primitive Role 中,我們可以把使用者分成 4 個部分。
相較於 Primitive Role,Predefined 的規則會更加的細緻一點點,我們可以不用把所有有編輯權限的人都設定為 Editor。例如說,我們可以選擇一個預設的 InstanceAdmin
的 Role,而這個 Role 就內建了許多精細的 Role。他內部包含了:
compute.instances.delete
compute.instances.get
compute.instances.list
compute.instances.setMachineType
compute.instances.start
compute.instances.stop
而通常足夠大的公司,需要將權限分的夠細的話,就需要透過 Custom Role 了,可以設定到最細的,哪一個人,擁有怎麼樣的權限。
今天的內容真的是又臭又長阿 QQ ,身為一個初學者,我們只需要知道,Google Cloud 的所有資源上面都要有一個 Project,而 Project 上可以用各種資料夾進行階層式的管理;每一個雲端的使用者都可以設定自己的雲端 Policy,而這些權限都要越小越好,以免發生意外,存取到不屬於他的資源;真的發生意外時,也可以讓災害降到最小。
今天的內容就到這邊,明天預計來跟各位介紹一下雲端最簡單最常用的資源:VM,虛擬機。