角色和權限

本頁說明 Identity and Access Management (IAM) 角色和權限,以及如何搭配 Cloud SQL 執行個體使用。

簡介

這個頁面將著重介紹與 Cloud SQL 具體相關的 IAM 面向。如需 IAM 及其一般功能的相關詳細說明,請參閱「身分與存取權管理」。特別是「管理 IAM 政策」一節。透過 IAM,您可以控管哪些人有權存取 Google Cloud 專案中的資源。您套用到資源的這套存取權規則就稱為 IAM 政策。套用至專案的 IAM 政策會定義使用者可對專案內所有資源執行的動作。

「成員」是指 IAM 的「權限授予對象」。成員可以是個別使用者、群組、網域,甚至廣泛涵蓋大眾。成員會獲派指定「角色」,透過角色授予的權限,在 Cloud SQL 及 Google Cloud 更廣的範圍中執行動作。每個角色具有一或多項「權限」。權限是 IAM 的基本單位:每種權限都能讓您執行特定動作。如需 Cloud SQL 中所有可用角色和權限的完整清單,請參閱「Cloud SQL 中的 IAM 角色」和「Cloud SQL 中的 IAM 權限」。

使用帳戶連線至 Cloud SQL 執行個體時,該帳戶必須具備「Cloud SQL > 用戶端」角色 (roles/cloudsql.client),其中包含連線所需的權限

您可以在「IAM 與管理」>「IAM」 頁面中,為帳戶新增角色,並在「IAM 與管理」>「角色」頁面中,查看各角色所屬的權限。

Cloud SQL 會使用服務帳戶,在 Cloud SQL 和其他 Google Cloud 產品之間進行驗證。服務帳戶會以 JSON 格式提供 credentials,您可以從主控台下載,並在各種情況下用於驗證。

例如:從 Docker 容器中執行的應用程式連線。

搭配 Cloud SQL 驗證 Proxy 使用的 Cloud SQL 角色和權限

如果您使用 Cloud SQL Auth Proxy 從 Compute Engine 執行個體連線至 Cloud SQL 執行個體,可以使用與 Compute Engine 執行個體相關聯的預設 Compute Engine 服務帳戶。

與連線至 Cloud SQL 執行個體的所有帳戶一樣,服務帳戶必須具備「Cloud SQL」>「用戶端」角色。

使用無伺服器選項時的 Cloud SQL 角色和權限

Google Cloud 無伺服器選項包括 App EngineCloud Run

使用服務帳戶授權存取權。服務帳戶會授權存取特定專案中的所有 Cloud SQL。建立應用程式或 Cloud Run 函式時,這項服務會為您建立這個帳戶。您可以在「IAM & Admin」(IAM 與管理) >「IAM」(IAM) 頁面中找到該帳戶,並加上適當的後置字元:

無伺服器選項 服務帳戶後置字串
App Engine @gae-api-prod.google.com.iam.gserviceaccount.com
Cloud Run 函式 @appspot.gserviceaccount.com
Cloud Run compute@developer.gserviceaccount.com
與連線至 Cloud SQL 執行個體的所有帳戶一樣,服務帳戶必須具備「Cloud SQL」>「用戶端」角色。

Cloud Storage 的 Cloud SQL 角色和權限

Cloud SQL 的匯入和匯出功能可搭配使用。匯出作業會寫入 Cloud Storage,匯入作業則會從該處讀取資料。因此,您用於這些作業的服務帳戶必須同時具備 Cloud Storage 的讀取和寫入權限:

  • 如要匯入及匯出 Cloud Storage 的資料,Cloud SQL 執行個體的服務帳戶必須在專案中設定 storage.objectAdmin IAM 角色。您可以在執行個體的「總覽」頁面,透過 Google Cloud 控制台找到執行個體的服務帳戶名稱。
  • 您可以使用 gcloud storage buckets add-iam-policy-binding 指令,將這個身分與存取權管理角色授予 bucket 的服務帳戶。
  • 如需設定 IAM 角色和權限的相關說明,請參閱「使用 IAM 權限」。
  • 詳情請參閱 Cloud Storage 的 IAM

使用 IAM 群組驗證的 Cloud SQL 角色和權限

使用 IAM 群組驗證時,您需要建立群組。接著,您可以使用這些群組管理 Cloud SQL 執行個體的存取權和資料庫權限。

下表列出管理 IAM 群組驗證所需的角色。

動作 角色
建立、查看及管理群組。

roles/resourcemanager.organizationViewer

查看 IAM 群組成員資格變更記錄。

roles/logging.viewer

授予、查看及設定專案層級的 IAM 權限。

roles/resourcemanager.projectIamAdmin

在資料夾層級授予、查看及設定 IAM 權限。

roles/resourcemanager.folderIamAdmin

管理員可以授予每個群組Cloud SQL 角色,或提供個別的 Cloud SQL 權限。每個群組的成員都會沿用角色和權限。

Dataplex Universal Catalog 整合的 Cloud SQL 角色和權限

如要在 Dataplex Universal Catalog 中提供 Cloud SQL 中繼資料的存取權,您可以將 roles/cloudsql.schemaViewer 角色授予使用者,或將 cloudsql.schemas.view 權限新增至自訂角色。

詳情請參閱「使用 Dataplex Universal Catalog 管理 Cloud SQL 資源」。

存取私人 Cloud SQL 執行個體的權限

當 BigQuery 等其他 Google Cloud 服務需要與 Cloud SQL 執行個體通訊,透過私人連線存取資料及查詢資料時,該服務會使用內部路徑,而非虛擬私有雲 (VPC) 內的私人 IP 位址。您無法透過任何虛擬私有雲層級的設定、防火牆規則、路徑政策或切斷對等互連來控管或限制流量。

Cloud SQL 執行個體提供設定旗標,可控制是否為存取資料庫的其他 Google Cloud 服務開啟或關閉這個內部路徑。

控管及撤銷權限

當 BigQuery 等其他 Google Cloud 服務嘗試存取私人 Cloud SQL 執行個體時,必須提供具有 cloudsql.instances.connect IAM 權限的合法身分。

服務通常會透過以下兩種方式達成這項要求:

  1. 轉送使用者的憑證。服務可將使用者的 IAM 身分轉送至 Cloud SQL,評估存取執行個體的權限。在這種情況下,使用者必須具備足夠的 IAM 權限,Cloud SQL 才能順利建立連線。
  2. 使用服務帳戶。BigQuery 等服務可以使用預先設定的服務帳戶連線至 Cloud SQL 執行個體。在這種情況下,服務帳戶必須具備足夠的 IAM 權限。

    舉例來說,在 BigQuery 和 Cloud SQL 之間的聯合連線中,啟用 BigQuery Connection API 時,系統會建立名為 service-{PROJECT_NUMBER}@gcp-sa-bigqueryconnection.iam.gserviceaccount.com 的服務帳戶。這個服務帳戶有兩項 Cloud SQL 權限:cloudsql.instances.connectcloudsql.instances.get。 BigQuery 會使用這些權限,透過內部路徑存取私有 Cloud SQL 執行個體。

如要控管可使用這個內部路徑的對象,您可以授予及撤銷使用者 IAM 身分的 IAM 權限,Google Cloud 服務 (例如 BigQuery) 會使用該身分連線至 Cloud SQL 執行個體。如要進一步瞭解如何在 BigQuery 中授予及撤銷權限,請參閱「設定 Cloud SQL 的存取權」。

其他情境的 Cloud SQL 角色和權限

Cloud SQL 會與其他 Google Cloud 產品和工具互動。 這些互動也需要特定角色和權限,而這些角色和權限可能因情境而異。Cloud SQL 說明文件詳細說明瞭下列各項案例的這些規定:

針對專案使用 IAM

以下各節說明如何在專案中完成基本的 IAM 工作。

如要完成下列工作,您必須具備 resourcemanager.projects.getIamPolicyresourcemanager.projects.setIamPolicy IAM 權限。

將成員新增至專案層級政策

如需與 Cloud SQL 相關的角色清單,請參閱 IAM 角色

控制台

  1. 前往 Google Cloud 控制台的「IAM & Admin」(IAM 與管理) 頁面
  2. 在頂端列的專案下拉式選單中,選取要新增成員的專案。
  3. 按一下「Add」(新增)。隨即顯示「Add members, roles to project」(將成員和角色新增至專案) 對話方塊。
  4. 在「新增成員」欄位中,指定您要授予存取權的實體名稱。
  5. 在「Select a role」(請選取角色) 下拉式選單中,授予成員適當的角色。如要瞭解哪些角色會影響 Cloud SQL 資源,請查看「Project」(專案) 及「Cloud SQL」子選單。
  6. 按一下 [儲存]

gcloud

如要新增專案層級的 IAM 政策,請使用 gcloud beta projects add-iam-policy-binding

查看專案的 IAM 政策

控制台

  1. 前往 Google Cloud 控制台的「IAM & Admin」(IAM 與管理) 頁面
  2. 在頂端列的專案下拉式選單中,選取要查看政策的專案。
  3. 您可以透過以下兩種方式查看專案權限:
    • 依「成員」查看:查看與個別成員相關的「角色」欄,瞭解各成員擁有的角色。
    • 角色查看:使用與個別角色相關的下拉式選單,查看哪些成員具備該角色。

gcloud

如要查看專案的 IAM 政策,請使用 gcloud beta projects get-iam-policy

從專案層級政策中移除成員

控制台

  1. 前往 Google Cloud 控制台的「IAM & Admin」(IAM 與管理) 頁面
  2. 在頂端列的專案下拉式選單中,選取要移除成員的專案。
  3. 請務必依「成員」查看權限,然後選取要移除的成員。
  4. 按一下 [移除]
  5. 在隨即出現的重疊視窗中,按一下「確認」

gcloud

如要移除專案層級的 IAM 政策,請使用 gcloud beta projects remove-iam-policy-binding

最佳做法

就像其他管理設定,IAM 也需要積極管理才能發揮作用。將資源提供給其他使用者存取之前,請務必確定要指派什麼角色給這些人。經過一段時間後,專案管理、使用模式和機構擁有權都可能會異動,需要您修改專案的 IAM 設定,尤其當您是在大型機構或是為大型使用者群組管理 Cloud SQL 時更是如此。評估及規劃存取控制設定時,請牢記下列最佳做法:

  • 授予權限時請遵循最小許可權原則最低權限原則是授予資源存取權的安全性方針。如果您根據最低權限原則授予存取權,即表示您只將使用者完成指派工作所需的存取權授予使用者。

  • 避免授予具 setIamPolicy 權限的角色給您不認識的人。 授予 setIamPolicy 權限可讓使用者變更權限並控管資料。只有在您要委派物件及值區的管理控制權時,才可使用具有 setIamPolicy 權限的角色。

  • 確認您已委派資源的管理控制權。 請務必確保如果具有管理員存取權的成員離開群組,其他團隊成員仍可管理資源。常見做法如下:

    • 為專案指派 Cloud SQL 管理員角色時,請指派給群組,而非個別使用者。
    • 為專案指派至少兩位人員擔任 Cloud SQL 管理員

後續步驟