本頁面提供 Identity and Access Management (IAM) 角色和權限的相關資訊,以及這些角色和權限與 Cloud SQL 執行個體的搭配使用方式。
簡介
本頁面著重於與 Cloud SQL 相關的 IAM 方面。如要進一步瞭解 IAM 及其一般功能,請參閱「Identity and Access Management」。請特別參閱「管理 IAM 政策」一節。IAM 可讓您控管誰能存取 Cloud de Confiance by S3NS 專案中的資源。您套用至資源的一組存取規則稱為 IAM「政策」。套用至專案的 IAM 政策會定義使用者可對專案中所有資源執行的動作。
成員是 IAM 的「對象」。成員可以是個別使用者、群組、網域,甚至廣泛涵蓋大眾。成員會獲派角色,可讓成員在 Cloud SQL 和 Cloud de Confiance 中執行動作。每個角色都是一或多項權限的集合。權限是 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 和其他 Cloud de Confiance by S3NS 產品之間進行驗證。服務帳戶會提供 JSON 格式的 credentials,您可以從控制台下載,並在各種情境中用於驗證。
Cloud SQL Auth Proxy 的 Cloud SQL 角色和權限
如果您使用 Cloud SQL Auth Proxy,從 Compute Engine 執行個體連線至 Cloud SQL 執行個體,則可使用與 Compute Engine 執行個體相關聯的預設 Compute Engine 服務帳戶。
與所有連線至 Cloud SQL 執行個體的帳戶一樣,服務帳戶必須具備「Cloud SQL」>「Client」(用戶端) 角色。
Cloud SQL 角色和權限,以及無伺服器選項
Cloud de Confiance by S3NS 無伺服器選項包括 App Engine 和 Cloud Run。請使用服務帳戶,授權這些選項的存取權。服務帳戶會授權存取特定專案中的所有 Cloud SQL。當您建立應用程式或 Cloud Run functions 時,這項服務會為您建立這個帳戶。您可以在「IAM & Admin」(IAM 與管理) >「IAM」 頁面中找到該帳戶,並加上適當的後置字串:
| 無伺服器選項 | 服務帳戶後置字串 |
|---|---|
| App Engine | @gae-api-prod.google.com.s3ns-system.iam.gserviceaccount.com |
| Cloud Run functions | @appspot.s3ns-system.iam.gserviceaccount.com |
| Cloud Run | compute@developer.s3ns-system.iam.gserviceaccount.com |
Cloud Storage 的 Cloud SQL 角色和權限
Cloud SQL 的匯入和匯出功能會搭配運作。匯出作業會寫入 Cloud Storage,匯入作業則會從 Cloud Storage 讀取。因此,您用於這些作業的服務帳戶必須具備 Cloud Storage 的讀取和寫入權限:
- 如要將資料匯入 Cloud Storage 或從 Cloud Storage 匯出資料,Cloud SQL 執行個體的服務帳戶必須在專案中設定
storage.objectAdminIAM 角色。您可以在 Cloud de Confiance 控制台的執行個體「Overview」(總覽) 頁面中,找到執行個體的服務帳戶名稱。 - 您可以使用
gcloud storage buckets add-iam-policy-binding指令,將這個 IAM 角色授予 bucket 的服務帳戶。 - 如需設定 IAM 角色和權限的相關說明,請參閱「使用 IAM 權限」。
- 詳情請參閱 Cloud Storage 的 IAM。
Cloud SQL 角色和權限與 IAM 群組驗證
使用 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 執行個體的存取權限
當其他 Cloud de Confiance by S3NS 服務 (例如 BigQuery) 需要與 Cloud SQL 執行個體通訊,以便透過私人連線存取資料並對資料執行查詢時,該服務會使用內部路徑,而非虛擬私有雲 (VPC) 內部的私人 IP 位址。無法透過任何虛擬私有雲層級設定、防火牆規則、路由政策或切斷對等互連來控管或限制流量。
不過,Cloud SQL 在執行個體上提供設定旗標,可控制是否要為存取資料庫的其他 Cloud de Confiance by S3NS 服務啟用或停用這個內部路徑。
控管及撤銷權限
當其他 Cloud de Confiance by S3NS 服務 (例如 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.s3ns-system.iam.gserviceaccount.com的服務帳戶。這個服務帳戶具備兩項 Cloud SQL 權限:cloudsql.instances.connect和cloudsql.instances.get。BigQuery 會使用這些權限,透過內部路徑存取私人 Cloud SQL 執行個體。
如要控管誰能使用這個內部路徑,您可以授予和撤銷 IAM 權限,對象是Cloud de Confiance by S3NS 服務 (例如 BigQuery) 用來連線至 Cloud SQL 執行個體的使用者 IAM 身分。如要進一步瞭解如何在 BigQuery 中授予及撤銷權限,請參閱「設定 Cloud SQL 存取權」。
其他情境的 Cloud SQL 角色和權限
Cloud SQL 可與其他 Cloud de Confiance by S3NS 產品和工具互動。這些互動也需要特定角色和權限,具體視情境而定。Cloud SQL 說明文件針對下列各項情況,詳細說明這些需求:
- 從外部應用程式連線至 Cloud SQL。
- 使用客戶自行管理的加密金鑰 (CMEK)。
- 用於管理 VPC Service Controls 的 IAM 角色。
- 如要從 Google Kubernetes Engine 中執行的應用程式連線至 Cloud SQL 執行個體,您必須為服務帳戶的 JSON 金鑰檔案建立密鑰。
搭配專案使用 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,或為大量使用者管理 Cloud SQL 時。評估及規劃存取控管設定時,請留意下列最佳做法:
授予存取權時,請遵循最小權限原則。最小權限原則是授予資源存取權的安全指南。根據最小權限原則授予存取權時,您只會授予使用者完成指派工作所需的存取權。
請勿將具備
setIamPolicy權限的角色授予不認識的人。 授予setIamPolicy權限後,使用者就能變更權限並控管資料。只有在您想委派物件和 bucket 的管理控制權時,才應使用具備setIamPolicy權限的角色。請務必委派資源的管理控制權。 請務必確保即使具備管理員權限的個人離開群組,其他團隊成員仍可管理您的資源。常見的做法有以下兩種:
- 將專案的 Cloud SQL 管理員角色指派給群組,而非個人。
- 將專案的 Cloud SQL 管理員角色指派給至少兩位使用者。
後續步驟
- 進一步瞭解控管存取權