您可以運用多種 Google Cloud 產品和服務,協助貴機構為在 Google Cloud上執行的應用程式和工作負載,制定身分控管和存取權管理方法。本文件適用於客戶團隊的安全性管理員、營運經理和企業架構師,旨在說明這些工具和控制選項,以及如何使用這些工具和控制選項。
本文假設您已具備下列條件:
- Google Cloud 專案。
- 具備管理權限的使用者帳戶,可管理 Cloud Identity 群組和使用者。您需要這項存取權,才能執行本文中的範例程序。
不具備管理權限的使用者帳戶,無法管理 Cloud Identity 群組和使用者。您需要這個帳戶,才能測試本文範例程序中設定的部分控制項。
如果您尚未取得 Google Cloud 專案存取權和 Cloud Identity 管理權,請參閱「建立 Google Cloud 專案」和「設定 Cloud Identity」。
找出未使用的帳戶和權限
最佳做法是移除不再需要的使用者帳戶,因為未使用的 (孤立) 使用者帳戶和服務帳戶可能會造成安全風險。您可以透過下列方式使用 Google Cloud 政策智慧,協助企業瞭解及降低風險:
- 協助企業管理員找出不再使用的帳戶和權限,例如員工離職或變更角色。
- 協助找出工作完成後遭棄用的服務帳戶。
查看及套用身分與存取權管理建議
身分與存取權管理 (IAM) 建議工具是政策智慧工具和服務套件的一部分。這項工具會運用機器學習技術提供智慧型存取權控管建議,協助您找出不再需要資源存取權的帳戶。 Google Cloud 接著,您可以查看建議並決定是否套用。IAM 建議工具也有助於在貴機構的所有成員中,維持最低權限原則。除了提供建議,建議工具服務還會運用機器學習技術提供詳細的洞察資訊。深入分析是根據資源用量得出的結果,可突顯顯著的模式。舉例來說,您可以收集專案中權限使用情況的額外資訊、找出未使用的權限 (這些權限已不再需要),以及找出未使用的服務帳戶。
您可以在 Google Cloud 控制台中查看及套用 IAM 建議,大規模提升企業安全。在下列範例程序中,您會使用 BigQuery 檢視及調整貴機構的存取權。如要設定 BigQuery 整合,請將 IAM 建議事項工具的建議匯出至 BigQuery 資料集。接著,您可以使用 Looker Studio 和 Looker 等視覺化工具查詢及查看這些資料。
導入作業
在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
新專案會自動啟用 BigQuery。如要在現有專案中啟用 BigQuery,請啟用 BigQuery API。
設定 BigQuery 資料移轉服務,從 IAM 建議引擎提取資料。 詳情請參閱將建議匯出至 BigQuery。
前往 BigQuery 頁面。
將下列查詢複製並貼至「Editor」(編輯器) 欄位:
SELECT recommendation_details FROM PROJECT_ID.DATASET.TABLE_NAME WHERE recommender = "google.iam.policy.Recommender" AND recommender_subtype = "REMOVE_ROLE"
更改下列內容:
PROJECT_ID
:您用來執行這個範例的 Google Cloud 專案 IDDATASET
:您在設定 BigQuery 資料移轉服務作業時選取的資料集名稱。TABLE_NAME
:BigQuery 資料移轉服務作業建立的資料表名稱。
執行這項查詢,找出 IAM 推薦工具建議的
recommender_subtype
子類型REMOVE_ROLE
。按一下「執行」。您可以使用查詢結果找出未使用的角色,並適當調整 IAM 角色繫結。
您可以將查詢結果儲存到試算表。詳情請參閱「將查詢結果儲存到 Google 試算表」。
允許使用者要求存取資源
企業管理員必須允許使用者要求資源存取權。通常,這類要求會經過核准程序,由指定核准者或一組核准者核准要求,然後才會授予存取權。Google 群組可讓您對一群使用者套用存取權政策,並根據群組成員資格授予資源存取權,遵循政策管理最佳做法。這樣一來,當群組成員異動時 (加入、移動及離開),政策就會隨之更新。
您可以透過 Google 網路論壇對整個群組執行存取權授予和變更作業,省去逐一為個別使用者或服務帳戶執行存取權授予和變更作業的麻煩。您還可以輕鬆為 Google 群組新增成員或移除成員,無需再為了新增或移除使用者而頻繁更新 IAM 政策。
使用 Google 群組設定資源存取權
您可以使用 Cloud Identity 建立及管理 Google 群組。 Cloud Identity 是一項「身分認證即服務」(IDaaS) 解決方案,能管理使用者和群組。您也可以設定 Cloud Identity,在 Google 與其他身分識別提供者 (例如 Active Directory 和 Azure Active Directory) 之間連結身分識別。Google 網路論壇也允許使用者要求加入群組。這項要求會轉送給群組管理員,由他們核准或拒絕要求。詳情請參閱「建立群組與選擇群組設定」。
建立及管理 Google 群組,授予資源存取權時,請務必考量所選設定的影響。 Google Cloud 雖然我們建議盡量減少可管理群組的使用者人數,但仍建議您設定多位群組管理員,確保隨時都能存取群組。此外,我們也建議您限制只有貴機構中的使用者才能加入群組。
導入作業
在本範例程序中,您會建立 Google 群組,並授予檢視者群組存取範例 Google Cloud 專案的權限。您新增至這個群組的成員 (或您應要求授予存取權的成員),可以查看範例Google Cloud 專案。
建立範例 Google 群組
下列步驟假設您已設定 Cloud Identity。詳情請參閱「設定 Cloud Identity」。確認您具備管理群組的權限。
前往 Google Cloud 控制台的「Groups」(群組) 頁面。
點選「建立」。
填寫群組詳細資料。
如要將成員新增至群組,請按一下「新增成員」,然後輸入成員的電子郵件地址,並選擇他們的 Google 協作平台群組角色。
完成後,按一下「提交」即可建立群組。
群組設定只能在 Google 網路論壇中管理。如要設定群組,請按一下「在 Google 網路論壇中管理這個群組」。如要選取可加入群組的使用者,請在「哪些人可以加入群組」選單中, 選取「僅限機構使用者」。
按一下 [建立群組]。
授予群組 Google Cloud 專案存取權
- 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
開啟 Cloud Shell:
執行下列指令,授予群組專案的檢視者存取權:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=group:GROUP_EMAIL --role=roles/viewer
更改下列內容:
GROUP_EMAIL
:您建立的群組電子郵件地址PROJECT_ID
:您的 Google Cloud 專案 ID
測試貴機構使用者的使用者存取要求程序
在下列程序中,您會使用測試使用者帳戶,示範貴機構使用者要求存取 Google 群組的步驟。
- 以非管理員使用者身分登入 Google 網路論壇。您在「建立 Google 群組範例」 中建立的群組會顯示在「所有群組」下方。如果找不到群組,請使用搜尋功能。
如要要求存取群組,請按一下「要求加入群組」。
授予存取權後,您用來提出要求的非管理員使用者帳戶,應該就能查看該群組具有檢視者存取權的 Google Cloud
PROJECT_ID
專案。
授予 Google Cloud 資源的限時存取權
在某些情況下,企業使用者可能需要暫時存取 Google Cloud 資源。如果開發人員需要暫時存取資源來執行特定工作,短期存取權就非常實用。 Google Cloud 短期存取權也有下列優點:
- 減少行政負擔。
- 確保遵循最低權限原則,並及時授予存取權。
當使用者在緊急情況下需要存取資源,且需要快速直接介入時,管理員可以授予這類存取權。不過,手動追蹤短期存取權限並確保及時移除,可能並不容易。身分與存取權管理條件式存取權政策可讓您使用條件式角色繫結,設定 Google Cloud 資源的暫時存取權 (有效期),有助於減少管理員的這項負擔。
使用條件式角色繫結和群組成員資格到期時間
您可以將條件式角色繫結新增至新的或現有的 IAM 政策,進一步控管資源的存取權。 Google Cloud 以下是您可能使用條件式角色繫結,將臨時存取權授予使用者或群組的範例:
- 在指定時間後失效的專案存取權。
- 每月或每季重複進行的專案。
- 存取 Compute Engine 執行個體,以管理停止執行個體等工作。
使用 Google 群組授予使用者資源存取權時,您可以透過 Cloud Identity Groups API,使用群組成員資格期限功能設定群組成員資格期限。 Google Cloud指定時間過後,系統會自動將使用者從群組中移除。
導入作業
您可以使用條件式角色繫結,授予開發人員管理特定 Compute Engine 執行個體的臨時存取權。在本例中,角色繫結的到期日設為 2021 年 12 月 31 日。
在 Cloud Shell 中設定下列變數:
export INSTANCE=create example-instance-1 export ZONE=us-west1-b export USER=USER_ID_TO_GIVE_TEMPORARY_ACCESS_TO
將
USER_ID_TO_GIVE_TEMPORARY_ACCESS_TO
替換為貴機構中要授予臨時存取權的使用者名稱。建立 Compute Engine 執行個體範例:
gcloud compute instances create $INSTANCE \ --zone $ZONE \ --machine-type g1-small
按照下列步驟,將這個執行個體的臨時存取權授予貴機構中的使用者。
授予所選使用者臨時存取權:
gcloud compute instances add-iam-policy-binding $INSTANCE \ --zone=$ZONE \ --member="user:$USER" \ --role='roles/compute.instanceAdmin.v1' \ --condition='expression=request.time < timestamp("2022-01-01T00:00:00Z"),title=expires_end_of_2021,description=Expires at midnight on 2021-12-31'
保留您建立的 Compute Engine 執行個體。您會在本文稍後的「管理具備權限的存取權」一節中使用這個執行個體。
或者,您也可以執行下列指令來刪除
example-instance-1
執行個體:gcloud compute instances delete $INSTANCE
記錄與身分相關的生命週期事件
如要稽核 IAM 生命週期事件 (例如政策變更、服務帳戶建立和服務帳戶指派),請使用 Cloud 稽核記錄。管理員可以使用 Cloud 稽核記錄回溯查看歷史資料,以進行鑑識和分析。分析稽核記錄有助於瞭解存取模式和存取異常情形。稽核記錄分析在下列情境中也很重要:
- 分析資料外洩期間的權限和資源存取權。
- 分析因 IAM 政策異動而導致的實際工作環境問題,特別是想驗證是哪個使用者或程序進行變更時。
Cloud 稽核記錄會儲存使用者執行的動作、活動發生地點和時間等資訊。稽核記錄的分類如下:
建議您使用下列稽核記錄,進行與身分和存取權相關的管理記錄:
- 管理員活動稽核記錄
- 政策遭拒的稽核記錄
管理員活動稽核記錄會儲存對 Google Cloud 資源所做的變更,例如專案、Compute Engine 執行個體和服務帳戶。管理員活動稽核記錄會儲存下列事件:
- 建立服務帳戶。
- 身分與存取權管理政策變更。
- 下載服務帳戶金鑰。
如果使用者或服務帳戶因違反安全政策而遭拒存取 Google Cloud 服務,稽核記錄會記錄這類「政策拒絕」事件。
為身分生命週期事件設定 Cloud 稽核記錄
您可以在 Google Cloud 控制台中查看稽核記錄,也可以使用 Cloud Logging API 或指令列介面查詢記錄。
所有稽核記錄都有保留期限。 如果貴企業需要將稽核記錄保留的時間超過預設保留期限,請建立記錄接收器,將記錄匯出至 BigQuery 或其他接收器目的地。將記錄檔匯出至 BigQuery 後,您就能查看資料欄的子集和所選資料 (一段時間內的資料或其他維度),並進行匯總分析。
導入作業
以下範例程序說明如何查詢 Google Cloud 專案記錄,檢查是否發生下列任一事件:
- 身分與存取權管理政策已變更。
- 已建立新的服務帳戶。
- 已產生新的服務帳戶金鑰。
查看身分與存取權管理政策的變更
- 前往 Google Cloud 控制台的「記錄」>「記錄檔探索工具」頁面。
- 在「Logs Explorer」頁面中,選取現有的 Google Cloud 專案。
將下列查詢貼到查詢產生器:
logName="projects/<PROJECT>/logs/cloudaudit.googleapis.com%2Factivity" AND (resource.type="project" OR resource.type="service_account") AND resource.labels.project_id="<PROJECT>" AND (protoPayload.methodName="SetIamPolicy" OR protoPayload.methodName="google.iam.admin.v1.CreateServiceAccount" OR protoPayload.methodName="google.iam.admin.v1.CreateServiceAccountKey")
將
PROJECT
替換為您的 Google Cloud 專案 ID。點選「執行查詢」
查看群組成員身分變更
活動記錄會追蹤 Google 群組成員資格的變更。如要瞭解如何存取這些記錄,請參閱查看群組成員變更記錄。
存取認證
企業可使用政策分析工具,定期或不定期驗證使用者是否具備適當的資源存取權。 Google Cloud 這項驗證對於法規遵循和稽核用途至關重要。安全人員和稽核人員也能藉此查看哪些使用者有權存取哪些資源,以及存取權的範圍。透過 Policy Analyzer,您可以找出哪些身分或主體 (使用者、服務帳戶、群組和網域) 有權存取貴機構資源階層中的哪些 Google Cloud 資源。此外,這項工具也有助於判斷存取權類型。以下是 Policy Analyzer 可協助您解答的一些問題示例:
- 哪些使用者可以存取服務帳戶。
- 哪些使用者可以讀取含有個人識別資訊 (PII) 的 BigQuery 資料集中的資料。
您可以使用下列方法搭配政策分析工具:
- 使用 Google Cloud 控制台。
- 使用 API。
- 將 IAM 政策資料匯出至 BigQuery,進行非同步分析。
使用政策分析工具檢查使用者存取權
以下查詢範例說明如何透過政策分析工具,深入瞭解使用者存取權類型:
- 主體 (使用者、服務帳戶、群組和網域) 擁有的角色或權限;例如,檢查前員工對正式版專案的存取權。
- 使用者可存取哪些資源,例如前員工對您實際工作環境專案資源的存取權。
- 哪些主體具備特定資源的存取權,例如特定使用者可在專案中刪除哪些值區。
導入作業
在下列範例程序中,您將使用政策分析工具驗證使用者擁有的權限。
在 Cloud Shell 中,為專案啟用 Cloud Asset API:
輸入下列指令,找出使用者可存取的資源:
gcloud asset analyze-iam-policy --organization="YOUR_ORG_ID" \ --identity="user:USERNAME_TO_CERTIFY"
請將下列項目改為對應的值:
YOUR_ORG_ID
:您的 Google Cloud 機構 IDUSERNAME_TO_CERTIFY
:要驗證存取權限的使用者名稱。 Google Cloud
將 IAM 政策資料擷取至 BigQuery。 詳情請參閱「將政策分析結果寫入 BigQuery」。
管理特殊存取權
貴機構的部分使用者可能需要特定 Google Cloud 資源的特殊權限,才能執行管理工作。舉例來說,這些使用者可能需要管理特定 Google Cloud 專案、設定專案帳單和預算,或是管理 Compute Engine 執行個體。
您不必永久授予使用者資源的特殊權限,而是允許使用者要求即時特殊權限。使用即時特殊權限存取權管理,有助於達成下列目標:
- 降低他人不慎修改或刪除資源的風險。舉例來說,如果使用者只有在需要時才擁有特殊權限,就能避免他們在其他時間執行指令碼,以免無意間影響不應變更的資源。
- 建立稽核記錄,指出權限啟用的原因。
- 進行稽核和審查,分析過去的活動。
或者,您也可以將具備特殊權限的存取權授予服務帳戶,並允許使用者模擬服務帳戶。
授予使用者特殊權限
從廣義來說,企業使用者在「Google Cloud 」中的特殊權限管理可歸納如下:
- 讓企業使用者能夠要求取得特殊存取權。
- 查看 Cloud 稽核記錄,分析具備特殊權限的存取要求和存取模式。管理員可以透過這些記錄,查看高權限存取模式並偵測異常情況。建議企業視需要將這些記錄匯出,以供稽核之用。
- 確保具備特殊權限的存取權會自動到期,或定期接受審查。
為所有具備資源存取權的使用者啟用兩步驟驗證 (也稱為多重驗證)。您也可以使用 Access Context Manager 建立精細的屬性式存取控管機制,在使用者具備特殊存取權時,強制執行額外的安全防護層。舉例來說,您可以設定存取層級,規定使用者必須連上公司網路,才能使用資源的特殊存取權。
導入作業
在本範例程序中,您 (管理員) 將建立 Google 群組,以取得 Compute Engine 執行個體的特殊存取權。您在 Google Cloud 中建立服務帳戶,並授予該帳戶管理 Compute Engine 執行個體的權限。將群組與服務帳戶建立關聯,這樣一來,群組成員在具備特權群組成員資格的期間,就能模擬服務帳戶身分。
建立具有特殊存取權的 Google 群組
以 Google Cloud 管理員身分選取或建立 Google Cloud 專案。
為專案啟用計費功能。 啟用計費功能
請按照「允許使用者要求存取資源」一文中的步驟,建立新的 Google 群組。
將群組命名為:
elevated-compute-access
建立 Google Cloud 服務帳戶
在 Cloud Shell 中,為您在「建立 Google 群組以取得具備權限的存取權」中建立的專案啟用 IAM 服務帳戶憑證 API。
設定下列變數:
export PROJECT_ID=$DEVSHELL_PROJECT_ID export PRIV_SERVICE_ACCOUNT_NAME=elevated-compute-access export DELEGATE_GROUP=GROUP_EMAIL_ADDRESS
將
GROUP_EMAIL_ADDRESS
替換為您建立的 Google 群組完整名稱。建立服務帳戶:
gcloud IAMservice-accounts create $PRIV_SERVICE_ACCOUNT_NAME \ --description="Elevated compute access" \ --display-name="Elevated compute access"
將 Compute 管理員角色授予服務帳戶:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PRIV_SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/compute.admin"
將您建立的 Google 群組的服務使用情形消費者存取權授予專案:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="group:$DELEGATE_GROUP" \ --role="roles/serviceusage.serviceUsageConsumer"
這項權限可讓 Google 群組成員模擬您建立的服務帳戶。
授予 Google 群組模擬您建立的服務帳戶權限:
gcloud IAMservice-accounts add-iam-policy-binding $PRIV_SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com --member="group :$DELEGATE_GROUP" --role="roles/iam.serviceAccountTokenCreator"
如果您已建立並保留 Compute Engine 執行個體範例,供「授予資源的限時存取權 Google Cloud 」程序使用,請略過這個步驟。您可以使用範例執行個體執行本範例中的步驟。
或者,您也可以使用下列指令建立 Compute Engine 執行個體範例:
gcloud compute instances create example-instance-1 \ --zone us-west1-b \ --machine-type g1-small
在本例中,您會使用這些執行個體,驗證獲派特權群組成員資格的使用者是否可以存取執行個體。
啟用稽核記錄
企業管理員可以啟用 Cloud 稽核記錄,確保系統記錄特權存取權,以供審查和分析。本節程序說明如何啟用稽核記錄。
取得專案目前的 IAM 政策:
gcloud projects get-iam-policy $PROJECT_ID > /tmp/policy.yaml
修改政策檔案,啟用 Compute Engine API 的資料存取記錄:
cat <<EOF >> /tmp/policy.yaml auditConfigs: - auditLogConfigs: - logType: ADMIN_READ - logType: DATA_READ - logType: DATA_WRITE service: compute.googleapis.com EOF
設定新政策:
gcloud projects set-iam-policy $PROJECT_ID /tmp/policy.yaml
使用非管理員使用者帳戶測試模擬
您可以要求加入群組,並在獲得成員資格後模擬服務帳戶,藉此使用非管理員使用者帳戶測試設定。
本節程序說明企業使用者如何要求 Google Cloud 資源的特殊存取權。在本範例程序中, Google Cloud 資源是Google Cloud 專案的 Compute Engine 執行個體。如要示範貴機構使用者在取得群組成員資格後,如何模擬服務帳戶,請要求加入相關 Google 群組。
- 使用非管理員使用者帳戶登入 Google 群組,然後要求加入
elevated-compute-access
群組。 使用相同帳戶登入 Google Cloud。 管理員核准要求後,您應該就能存取群組。在這個範例程序中,我們假設您的群組成員資格要求已獲得核准。
中用於設定 Google 群組的使用者帳戶是群組管理員。在 Cloud Shell 執行下列指令,設定預設專案:
gcloud config set project PROJECT_ID
嘗試列出這個專案中的 Compute Engine 執行個體:
gcloud compute instances list
您會看到錯誤訊息,指出 Google Cloud 使用者 沒有存取 Compute Engine 資源的權限。
執行下列指令:
gcloud compute instances list --impersonate-service-account=elevated-compute-access@$PROJECT_ID.iam.gserviceaccount.com
這個指令會模擬您在獲派
elevated-compute-access
Google 群組成員資格時取得存取權的服務帳戶,列出專案中的 Compute Engine 執行個體。您會看到以管理員帳戶建立的
example-instance-1
Compute Engine 執行個體。
檢查稽核記錄
Google Cloud 管理員可以存取及查看產生的稽核記錄。
使用具備管理員權限的使用者帳戶登入 Google Cloud 控制台,存取稽核記錄。
在 Cloud Logging 中輸入下列查詢,即可查看資料存取記錄:
logName="projects/<PROJECT_ID>/logs/cloudaudit.googleapis.com%2Fdata_access" AND protoPayload.authenticationInfo.principalEmail="elevated-compute-access@PROJECT_ID.iam.gserviceaccount.com"
將
PROJECT_ID
替換為專案 ID,然後執行查詢。這項查詢會顯示 Google 群組中的哪些使用者模擬服務帳戶,以存取 Compute Engine 執行個體。此外,您還能查看其他相關詳細資料,例如服務帳戶遭模擬的時間,以及要求標頭的詳細資料。
查看稽核記錄酬載,特別是酬載中的
protoPayload.authenticationInfo
物件。系統會將模擬服務帳戶的使用者名稱,記錄為firstPartyPrincipal
物件的principalEmail
鍵值。管理員也可以在 Security Command Center 資訊主頁中,查看事件威脅發現項目。如要進一步瞭解 Security Command Center,請參閱「使用 Event Threat Detection」。
後續步驟
- 瞭解零信任。
- 瞭解 Policy Intelligence 如何為 Google Cloud 資源提供智慧型存取控管機制。
- 請參閱這篇文章 Google Cloud,瞭解如何排解政策和存取權問題。
- 請參閱這篇文章 Google Cloud ,瞭解建立及管理服務帳戶的最佳做法。
- 如需更多參考架構、圖表和最佳做法,請瀏覽 Cloud 架構中心。