本頁面提供身分與存取權管理 (IAM) 角色和權限的相關資訊,以及如何在 Cloud SQL 執行個體中使用這些角色和權限。
簡介
本頁將著重介紹與 Cloud SQL 具體相關的 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
,您可以從控制台下載,並在各種情況下用於驗證。
搭配 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 Engine、Cloud Run 函式和 Cloud Run。使用服務帳戶授權存取這些選項。服務帳戶會授權存取特定專案中的所有 Cloud SQL。當您建立應用程式或 Cloud Run 函式時,這項服務會為您建立這個帳戶。您可以在「IAM & Admin > IAM 」頁面中找到該帳戶,並查看相關後置字串:
無伺服器選項 | 服務帳戶後置字串 |
---|---|
App Engine | @gae-api-prod.google.com。iam.gserviceaccount.com |
Cloud Run 函式 | @appspot.gserviceaccount.com |
Cloud Run | [email protected] |
Cloud SQL 角色和 Cloud Storage 權限
Cloud SQL 中的匯入和匯出功能可搭配使用。匯出內容會寫入 Cloud Storage,匯入內容則會從 Cloud Storage 讀取。因此,您用於執行這些作業的服務帳戶需要具備 Cloud Storage 的讀取和寫入權限:
- 如要將資料匯入至 Cloud Storage,以及從 Cloud Storage 匯出資料,Cloud SQL 執行個體的服務帳戶必須在專案中設有
storage.objectAdmin
IAM 角色。您可以在執行個體的總覽頁面中,透過 Google Cloud 主控台查看執行個體的服務帳戶名稱。 - 您可以使用
gcloud storage buckets add-iam-policy-binding
指令,將此身分與存取權管理角色授予儲存桶的服務帳戶。 - 如需設定身分與存取權管理角色和權限的相關說明,請參閱「使用身分與存取權管理權限」。
- 詳情請參閱 Cloud Storage 的 IAM 說明。
使用 IAM 群組驗證功能的 Cloud SQL 角色和權限
使用 IAM 群組驗證功能時,您會建立群組。接著,您可以使用這些群組來管理 Cloud SQL 執行個體的存取權和資料庫權限。
下表列出管理 IAM 群組驗證所需的角色。
動作 | 角色 |
---|---|
建立、查看及管理群組。 |
|
查看 IAM 群組成員資格變更記錄。 |
|
授予、查看及設定專案層級的 IAM 權限。 |
|
在資料夾層級授予、查看及設定身分與存取權管理權限。 |
|
管理員可以授予 Cloud SQL 角色,或為每個群組授予個別的 Cloud SQL 權限。每個群組的成員都會繼承角色和權限。
Dataplex 整合功能的 Cloud SQL 角色和權限
如要提供 Dataplex 的 Cloud SQL 中繼資料存取權,您可以授予使用者 roles/cloudsql.schemaViewer
角色,或將 cloudsql.schemas.view
權限新增至自訂角色。
詳情請參閱「使用 BigQuery 通用目錄管理 Cloud SQL 資源」。
存取私人 Cloud SQL 執行個體的權限
當其他 Google Cloud 服務 (例如 BigQuery) 需要與您的 Cloud SQL 執行個體通訊,以便存取資料並透過私人連線對這項資料執行查詢時,該服務會使用內部路徑,而非虛擬私有雲 (VPC) 內的私人 IP 位址。無法透過任何 VPC 層級設定、防火牆規則、路徑政策或對等連線切斷來控管或限制流量。
相反地,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 身分 (Google Cloud 服務 (例如 BigQuery) 用來連線至 Cloud SQL 執行個體) 的 IAM 權限。如要進一步瞭解如何在 BigQuery 中授予及撤銷權限,請參閱「設定 Cloud SQL 存取權」一文。
其他情境中的 Cloud SQL 角色和權限
Cloud SQL 會與其他 Google Cloud 產品和工具互動。這些互動也需要特定角色和權限,這些角色和權限可能因情境而異。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 時更是如此。當您評估及規劃存取控制設定時,請牢記下列最佳做法:
授予權限時請遵循最小許可權原則最低權限原則是授予資源存取權的安全性指南。如果您根據最低權限原則授予存取權,即表示您只會將使用者完成指派工作所需的存取權授予使用者。
避免將具有
setIamPolicy
權限的角色授予您不認識的人。授予setIamPolicy
權限可讓使用者變更權限並控管資料。只有在您要委派物件及值區的管理控管權時,才可使用具有setIamPolicy
權限的角色。確認您已委派資源的管理控制權。請務必確認,如果具有管理員存取權的個人離開群組,其他團隊成員仍可管理資源。達成這項目標的兩種常見做法如下:
- 將專案的 Cloud SQL 管理員角色指派給群組,而非個人。
- 將專案的 Cloud SQL 管理員角色指派給至少兩位使用者。
後續步驟
- 進一步瞭解如何控管存取權