本頁面提供有關 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 & Admin」(IAM 與管理) >「IAM」 頁面中,為帳戶新增角色,並在「IAM & Admin」(IAM 與管理) >「Roles」(角色)頁面中,查看各角色所屬的權限。
Cloud SQL 會使用服務帳戶,在 Cloud SQL 和其他 Google Cloud 產品之間進行驗證。服務帳戶會以 JSON 格式提供 credentials,您可以從管理中心下載,並在各種情境中用於驗證。
使用 Cloud SQL Auth Proxy 時的 Cloud SQL 角色和權限
如果您使用 Cloud SQL Auth Proxy 從 Compute Engine 執行個體連線至 Cloud SQL 執行個體,可以使用與 Compute Engine 執行個體相關聯的預設 Compute Engine 服務帳戶。
與連線至 Cloud SQL 執行個體的所有帳戶一樣,服務帳戶必須具備「Cloud SQL」>「用戶端」角色。
無伺服器選項的 Cloud SQL 角色和權限
Google Cloud 無伺服器選項包括 App Engine 和 Cloud Run。使用服務帳戶授權存取這些選項。服務帳戶會授權存取特定專案中的所有 Cloud SQL。建立應用程式或 Cloud Run functions 時,這項服務會為您建立這個帳戶。您可以在「IAM & Admin」>「IAM」 頁面找到帳戶,並查看適當的後置字串:
| 無伺服器選項 | 服務帳戶後置字串 |
|---|---|
| App Engine | @gae-api-prod.google.com.iam.gserviceaccount.com |
| Cloud Run functions | @appspot.gserviceaccount.com |
| Cloud Run | compute@developer.gserviceaccount.com |
Cloud Storage 的 Cloud SQL 角色和權限
Cloud SQL 的匯入和匯出功能可搭配使用。匯出作業會寫入 Cloud Storage,匯入作業則會從 Cloud Storage 讀取資料。因此,您用於這些作業的服務帳戶必須具備 Cloud Storage 的讀取和寫入權限:
- 如要匯入及匯出 Cloud Storage 資料,Cloud SQL 執行個體的服務帳戶必須在專案中設定
storage.objectAdminIAM 角色。您可以在執行個體的「總覽」頁面,透過 Google Cloud 控制台找到執行個體的服務帳戶名稱。 - 您可以使用
gcloud storage buckets add-iam-policy-binding指令,將這個 IAM 角色授予服務帳戶,讓服務帳戶存取該儲存空間。 - 如需設定 IAM 角色和權限的相關說明,請參閱「使用 IAM 權限」。
- 詳情請參閱「Cloud Storage 的 IAM」。
使用 IAM 群組驗證的 Cloud SQL 角色和權限
使用 IAM 群組驗證時,您會建立群組。接著,您可以使用群組管理 Cloud SQL 執行個體的存取權和資料庫權限。
下表列出管理 IAM 群組驗證所需的角色。
| 動作 | 角色 |
|---|---|
| 建立、查看及管理群組。 |
|
| 查看 IAM 群組成員變更記錄。 |
|
| 在專案層級授予、查看及設定 IAM 權限。 |
|
| 在資料夾層級授予、查看及設定 IAM 權限。 |
|
管理員可以授予每個群組 Cloud SQL 角色,或個別授予 Cloud SQL 權限。各群組的成員會繼承角色和權限。
Knowledge Catalog 整合功能的 Cloud SQL 角色和權限
如要授予使用者存取 Knowledge Catalog 中 Cloud SQL 中繼資料的權限,可以指派roles/cloudsql.schemaViewer角色給使用者,或在自訂角色中新增 cloudsql.schemas.view 權限。
詳情請參閱「使用 Knowledge Catalog 管理 Cloud SQL 資源」。
存取私人 Cloud SQL 執行個體的權限
當 BigQuery 等其他 Google Cloud 服務需要與 Cloud SQL 執行個體通訊,透過私人連線存取資料並對這項資料執行查詢時,服務會使用內部路徑,而非虛擬私有雲 (VPC) 內的私人 IP 位址。您無法使用任何虛擬私有雲層級的設定、防火牆規則、路徑政策或切斷對等互連來控管或限制流量。
Cloud SQL 則是在執行個體上提供設定旗標,可控制是否為存取資料庫的其他 Google Cloud 服務開啟或關閉這個內部路徑。
控管及撤銷權限
當其他 Google Cloud 服務 (例如 BigQuery) 嘗試存取私人 Cloud SQL 執行個體時,必須提供具有 cloudsql.instances.connect IAM 權限的合法身分。
服務通常可以透過兩種方式達成這項要求:
- 轉送使用者的憑證。服務可將使用者的 IAM 身分轉送至 Cloud SQL,評估存取執行個體的權限。在這種情況下,使用者必須具備足夠的 IAM 權限,Cloud SQL 才能順利建立連線。
使用服務帳戶。BigQuery 等服務可使用預先設定的服務帳戶連線至 Cloud SQL 執行個體。在這種情況下,服務帳戶必須具備足夠的 IAM 權限。
舉例來說,在 BigQuery 和 Cloud SQL 之間的聯合連線中,啟用 BigQuery 連線 API 時,系統會建立名為
service-{PROJECT_NUMBER}@gcp-sa-bigqueryconnection.iam.gserviceaccount.com的服務帳戶。這個服務帳戶有兩項 Cloud SQL 權限:cloudsql.instances.connect和cloudsql.instances.get。 BigQuery 會使用這些權限,透過內部路徑存取私有 Cloud SQL 執行個體。
如要控管可使用這個內部路徑的對象權限,您可以將 IAM 權限授予或撤銷使用者的 IAM 身分,Google Cloud 服務 (例如 BigQuery) 會使用該身分連線至 Cloud SQL 執行個體。如要進一步瞭解如何在 BigQuery 中授予及撤銷權限,請參閱「設定 Cloud SQL 的存取權」。
其他情境的 Cloud SQL 角色和權限
Cloud SQL 可與其他 Google Cloud 產品和工具互動。 這些互動也需要特定角色和權限,且不同情境可能有所差異。Cloud SQL 說明文件詳細說明瞭以下各項案例的這些規定:
- 從外部應用程式連線至 Cloud SQL。
- 使用客戶自行管理的加密金鑰 (CMEK)。
- 用於管理 VPC Service Controls 的 IAM 角色。
- 如要從 Google Kubernetes Engine 中執行的應用程式連線至 Cloud SQL 執行個體,您需要為 服務帳戶的 JSON 金鑰檔案建立 Secret。
在專案中使用 IAM
以下各節說明如何對專案完成基本的 IAM 工作。
如要完成下列工作,您必須具備 resourcemanager.projects.getIamPolicy 和 resourcemanager.projects.setIamPolicy IAM 權限。
在專案層級政策中新增成員
如要查看與 Cloud SQL 相關聯的角色清單,請參閱「IAM 角色」。
控制台
gcloud
如要新增專案層級的 IAM 政策,請使用 gcloud beta projects add-iam-policy-binding。
查看專案的 IAM 政策
控制台
gcloud
如要查看專案的 IAM 政策,請使用 gcloud beta projects get-iam-policy。
從專案層級政策中移除成員
控制台
gcloud
如要移除專案層級的 IAM 政策,請使用 gcloud beta projects remove-iam-policy-binding。
最佳做法
與其他管理設定一樣,IAM 也需要積極管理才能發揮效用。將資源開放給其他使用者存取前,請務必瞭解您希望這些人扮演的角色。隨著時間推移,專案管理、使用模式和機構擁有權的變更,可能需要您修改專案的 IAM 設定,特別是當您在大型機構或為大型使用者群組管理 Cloud SQL 時。評估及規劃存取控管設定時,請參考下列最佳做法:
授予存取權時,請使用最小權限原則。 最小權限原則是授予資源存取權的安全性指南。根據最小權限原則授予存取權時,您只會授予使用者完成指派工作所需的存取權。
請勿將具有
setIamPolicy權限的角色授予不認識的人。 授予setIamPolicy權限後,使用者就能變更權限及控管資料。只有在想委派物件和儲存空間的管理控制權時,才應使用具有setIamPolicy權限的角色。請務必委派資源的管理控制權。請務必確保在擁有管理員存取權的使用者離開群組後,其他團隊成員仍可管理資源。常見做法如下:
- 將專案的 Cloud SQL 管理員角色指派給群組,而非個別使用者。
- 為專案指派至少兩名人員的 Cloud SQL 管理員角色。
後續步驟
- 進一步瞭解如何控管存取權