Cloud de Confiance by S3NS 提供 Identity and Access Management (IAM) 功能,可對特定 Cloud de Confiance by S3NS 資源授予存取權,避免未經授權者存取其他資源。本頁面說明 Cloud SQL 如何與 IAM 整合,以及如何使用 IAM 管理 Cloud SQL 資源的存取權和資料庫驗證。如要進一步瞭解 Cloud de Confiance IAM,請參閱 IAM 說明文件。
Cloud SQL 提供一組預先定義的角色,可協助您控管 Cloud SQL 資源的存取權。如果預先定義的角色無法提供您需要的權限組合,您也可以自行建立自訂角色。此外,您仍可使用舊版基本角色 (編輯者、檢視者和擁有者),但這些角色無法提供與 Cloud SQL 角色相同的精細控管功能。尤其是基本角色,可讓您存取 Cloud de Confiance by S3NS中的資源,而不僅限於 Cloud SQL。如要進一步瞭解基本 Cloud de Confiance by S3NS 角色,請參閱「基本角色」。
您可以在資源階層中的任何層級設定 IAM 政策,包括組織層級、資料夾層級或專案層級。資源會繼承所有父項資源的政策。
Cloud SQL 的 IAM 參考資料
- 在 Cloud de Confiance 控制台執行常見工作所需的權限
gcloud sql指令的必要權限- Cloud SQL Admin API 方法的必要權限
- 預先定義的 Cloud SQL IAM 角色
- 權限和角色
- 自訂角色
IAM 驗證概念
使用 IAM 驗證時,您無法將特定資源 (Cloud SQL 執行個體) 的存取權直接授予使用者,而是將權限分組為「角色」,並將角色授予「主體」。詳情請參閱「IAM 總覽」。
如果管理員的使用者透過 IAM 資料庫驗證機制登入,則可使用 IAM 驗證機制,透過 IAM 政策集中管理執行個體的存取控管。
IAM 政策涉及下列實體:
- 主體。在 Cloud SQL 中,您可以使用多種主體:使用者帳戶、服務帳戶 (用於應用程式) 或群組。詳情請參閱「身分相關概念」。
- 角色。角色是一組權限。您可以將角色授予主體,提供完成特定工作所需的權限。舉例來說,使用 IAM 資料庫驗證時,主體需要
cloudsql.instances.login權限才能登入執行個體,而 Cloud SQL 執行個體使用者角色就包含這項權限。如要取得權限,請將使用者、服務帳戶或群組繫結至預先定義的 Cloud SQL 角色,或包含該權限的自訂角色。如要進一步瞭解 IAM 角色,請參閱「角色」。 - 資源。主體存取的資源是 Cloud SQL 執行個體。根據預設,IAM 政策繫結會在專案層級套用,因此主體會取得專案中所有 Cloud SQL 執行個體的角色權限。
IAM 資料庫驗證
資料庫驗證程序會驗證嘗試存取資料庫的使用者身分。在 Cloud SQL 中,您可以為資料庫使用者採用下列類型的資料庫驗證機制:
- 資料庫的內建驗證機制會使用使用者名稱和密碼驗證資料庫使用者。
- IAM 資料庫驗證機制會使用 IAM,透過存取權杖驗證使用者。管理使用者或服務帳戶的方法有兩種。
- 個別:根據預設,使用 IAM 資料庫驗證時,您會將 IAM 角色和資料庫權限指派給個別使用者和服務帳戶。您可以將個別帳戶新增至執行個體,並分別管理每個帳戶的權限。
- 依群組:IAM 群組驗證功能可讓您在群組層級控管 Cloud SQL 執行個體的存取權。舉例來說,您可以將 Identity and Access Management 角色和資料庫權限指派給 Cloud Identity 群組。Cloud Identity 群組中的所有使用者和服務帳戶,都會繼承指派給群組的 IAM 角色和資料庫權限。
比較資料庫驗證選項
下表比較 Cloud SQL 的不同資料庫驗證方式。
| 功能 | 內建資料庫驗證 | IAM 資料庫驗證 (個別) | IAM 群組驗證 |
|---|---|---|---|
| 驗證方式 | 密碼 | 暫時驗證權杖 | 暫時驗證權杖 |
| 網路流量加密 | 不須使用 SSL | 必須符合 SSL 規定 | 必須符合 SSL 規定 |
| 使用者管理 | 手動 | 透過 IAM 集中管理 | 透過 IAM 和 Cloud Identity 群組集中管理 |
IAM 群組驗證
IAM 群組驗證功能可讓您在群組層級管理 Cloud SQL 使用者。Cloud Identity 群組就是群組的一例。這項功能可簡化資料庫使用者管理作業。您可以一次管理多個帳戶的 Cloud SQL IAM 角色或權限,不必逐一更新每位使用者或服務帳戶。您也可以授予及撤銷 Cloud Identity 群組的資料庫權限。您新增至 Cloud Identity 群組的所有新帳戶都會沿用該群組的權限。
啟用 IAM 群組驗證功能後,您可以執行下列操作:
- 將使用者新增至群組,並讓使用者自動繼承其 IAM 角色和資料庫權限。
- 將使用者從群組中移除,即可移除其 Cloud SQL 資料庫的登入權限和資料庫權限。
- 只要將登入或資料庫權限授予群組一次,就不必多次將相同權限授予不同使用者。
- 一次移除群組的登入權限或資料庫物件存取權。
雖然 IAM 角色和權限是在群組層級指派,但使用者和服務帳戶會使用個別的 IAM 帳戶和憑證登入,而非共用群組帳戶。使用者或服務帳戶首次登入後,Cloud SQL 會在執行個體上為其建立資料庫帳戶。
每個使用者或服務帳戶的個別登入和資料庫活動都會顯示在稽核記錄中。為了稽核,您可以查看資料庫中哪個帳戶執行了哪項動作。
如要進一步瞭解如何使用 Cloud Identity 群組,請參閱「Cloud Identity 總覽」。
將使用者或服務帳戶新增至群組時,Cloud SQL 會發生下列變更:
- 如果您已將 IAM 登入權限授予群組,則使用者或服務帳戶會取得 Cloud SQL 執行個體的登入權限,因為使用者或服務帳戶屬於該群組。
- 使用者會自動沿用授予群組的任何資料庫權限。
從群組中移除使用者或服務帳戶時,Cloud SQL 會發生下列變更:
- 使用者會失去先前因身為群組成員而繼承的所有資料庫權限。
- 如果使用者透過其他群組成員資格,取得 Cloud SQL 執行個體的 IAM 登入權限,可能仍可登入。不過,使用者登入後,不會擁有先前群組成員資格的資料庫權限。
IAM 群組驗證最佳做法
- 在 Cloud Identity 中撤銷 IAM 群組的登入權限 (
cloudsql.instances.login) 時,請務必一併從 Cloud SQL 執行個體中刪除該群組。 - 從 Cloud Identity 刪除群組時,請務必一併從 Cloud SQL 執行個體刪除該群組。
- 使用群組在資料庫中設定角色式存取控管。請務必為群組提供最低必要權限。
- 請勿將 IAM 群組驗證角色授予內建使用者。舉例來說,如果您有內建使用者
user-a,並建立 IAM 群組驗證使用者user-b@example.com,請勿將user-b@example.com角色授予user-a。
IAM 群組驗證限制
- 一個執行個體最多可新增 200 個 IAM 群組。
- 您無法在同一個執行個體上,新增屬於某個群組的個別 IAM 使用者或服務帳戶。換句話說,如果已有類型為
CLOUD_IAM_GROUP_USER或CLOUD_IAM_GROUP_SERVICE_ACCOUNT的相同帳戶,則無法新增類型為CLOUD_IAM_USER或CLOUD_IAM_SERVICE_ACCOUNT的帳戶。 - 如果執行個體上已有
CLOUD_IAM_USER或CLOUD_IAM_SERVICE_ACCOUNT類型的個人帳戶,則該帳戶無法用於 IAM 群組驗證。這些使用者類型不會從群組繼承 IAM 角色和資料庫權限。如要修正這個問題,並使用具備 IAM 群組驗證功能的帳戶,請移除個別 IAM 使用者或服務帳戶。
詳情請參閱「現有 IAM 使用者或服務帳戶未繼承授予其群組的資料庫權限」。 - Cloud Identity 群組成員資格的變更 (例如新增帳戶) 約需 15 分鐘才會生效。這不包含 IAM 變更所需的時間。
自動與手動 IAM 資料庫驗證
MySQL 適用的 Cloud SQL 提供兩種 IAM 資料庫驗證選項:自動和手動。
自動 IAM 資料庫驗證
自動 IAM 資料庫驗證可讓您將要求和管理存取權杖的工作,交給中介 Cloud SQL 連接器,例如 Cloud SQL Auth Proxy 或其中一個 Cloud SQL 語言連接器。有了自動 IAM 資料庫驗證機制,使用者只需在用戶端的連線要求中傳遞 IAM 資料庫使用者名稱即可。連接器會代表用戶端提交密碼屬性的存取權杖資訊。
自動 IAM 資料庫驗證必須使用 Cloud SQL 連接器,並由 Cloud SQL Auth Proxy、Go 連接器、Java 連接器和 Python 連接器支援。
為確保最安全可靠的使用體驗,建議您使用自動 IAM 資料庫驗證機制。IAM 資料庫驗證機制會使用 OAuth 2.0 存取權杖,這類權杖的效期很短,只有一小時。Cloud SQL 連接器可以要求及重新整理這些權杖,確保依賴連線集區的長期程序或應用程式能穩定連線。強烈建議您使用自動 IAM 資料庫驗證,而非手動驗證。
詳情請參閱「使用自動 IAM 資料庫驗證功能登入」。
手動 IAM 資料庫驗證
手動 IAM 資料庫驗證:IAM 主體必須在用戶端連線要求中,明確傳遞密碼屬性的存取權杖。主體必須先登入 Cloud de Confiance by S3NS ,並明確向 IAM 要求存取權杖。
您可以使用 gcloud CLI,明確要求具有 Cloud SQL Admin API 範圍的 OAuth 2.0 權杖,用於登入資料庫。以資料庫使用者身分登入時,請使用 IAM 資料庫驗證機制,並以電子郵件地址做為使用者名稱,存取權杖做為密碼。您可以直接連線至資料庫,或使用 Cloud SQL 連接器。
使用 IAM 資料庫驗證功能登入時,只能透過 SSL 連線。
詳情請參閱「使用手動 IAM 資料庫驗證機制登入」。
情境感知存取權和 IAM 資料庫驗證
如果您在 IAM 設定中使用情境感知存取權,就無法搭配 IAM 資料庫驗證機制使用 Cloud SQL 連接器,例如 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器。無論是手動登入,還是透過 IAM 驗證自動登入,都會失敗。請改為直接連線至執行個體。
使用者和服務帳戶管理
如要讓使用者和服務帳戶透過 IAM 資料庫驗證機制存取執行個體上的資料庫,您必須將他們新增至執行個體,或新增至有權存取執行個體的群組。詳情請參閱「新增使用 IAM 的使用者或服務帳戶」。
如果您使用 Cloud de Confiance 控制台新增使用者或服務帳戶,Cloud SQL 會要求您為使用者新增「Cloud SQL 使用者」角色。使用者必須具備這個角色,才能登入執行個體。
將 IAM 使用者新增至資料庫後,您必須手動授予資料庫權限。使用 MySQL GRANT 指令授予其他資料庫權限。Cloud SQL IAM 資料庫驗證機制的執行個體設定
您可以使用 cloudsql_iam_authentication 旗標,在執行個體上啟用 IAM 資料庫驗證功能。啟用這個旗標後,執行個體會啟用已設定 IAM 資料庫驗證的帳戶登入功能。如果您使用 Cloud de Confiance 控制台建立執行個體,系統預設會啟用這個旗標。
如要使用 IAM 群組驗證和 IAM 資料庫驗證,就必須啟用這個旗標。
設定旗標不會阻止現有的非 IAM 使用者使用使用者名稱和密碼登入。不過,如果停用執行個體的這項旗標,先前透過 IAM 資料庫驗證新增的使用者,將無法存取執行個體。詳情請參閱「設定執行個體,以便進行 IAM 資料庫驗證作業」。
不同執行個體情境的 Cloud SQL IAM 資料庫驗證
| 唯讀副本 | 即使主要執行個體已啟用 IAM 資料庫驗證功能,唯讀副本也不會自動啟用這項功能。建立唯讀副本後,您必須新增 IAM 資料庫驗證機制。詳情請參閱「設定 IAM 資料庫驗證的唯讀副本登入資訊」。 |
| 還原的執行個體 | 如果執行個體先前已備份,之後還原至同一專案中的相同或不同執行個體,則會套用目前的使用者登入授權。如果將備份還原至其他專案中的新執行個體,則須為新執行個體設定使用者授權。詳情請參閱「新增使用 IAM 資料庫驗證的使用者或服務帳戶」。 |
| 時間點還原執行個體 | 如果您在同一個專案中執行時間點還原,則目前的登入授權適用於目標執行個體。如果將執行個體時間點還原至其他專案,則須為新執行個體設定使用者授權。詳情請參閱「新增使用 IAM 資料庫驗證的使用者或服務帳戶」。 |
關於 IAM 條件
IAM 條件可讓您根據各種屬性授予角色。例如,您可以只允許在特定日期和時間存取,或只授予特定名稱 Cloud SQL 資源的存取權。
如要進一步瞭解 IAM 條件,請參閱「IAM 條件總覽」頁面。您也可以進一步瞭解如何搭配 Cloud SQL 使用 IAM 條件,包括查看範例。
使用 Cloud 稽核記錄
如要保留資料存取記錄 (包括登入記錄),可以使用稽核記錄。Cloud 稽核記錄預設為關閉。您必須啟用資料存取稽核記錄,才能追蹤登入活動。如果為了這個目的使用稽核記錄,會產生資料記錄費用。詳情請參閱「稽核記錄」、「設定資料存取稽核記錄」和「記錄資料定價」。
共用核心執行個體的效能
共用核心機型 (例如 db-f1-micro 和 db-g1-small) 仰賴 CPU 爆發功能,處理短暫的活動高峰。IAM 資料庫驗證比內建密碼驗證更耗費運算資源。因此,當共用核心執行個體不再爆量或 CPU 使用率偏高時,使用 IAM 資料庫驗證的連線可能會出現高延遲或逾時。
為確保最佳連線效能和可靠性,請按照下列指示操作:
- 實作永久連線集區:設定用戶端連線集區 (例如 Java 的 HikariCP、Python 的 SQLAlchemy 連線集區,或 Go 的
database/sql集區)、啟用代管連線集區,或使用 Cloud SQL Auth Proxy。 - 增加用戶端連線逾時時間:如果應用程式必須在 CPU 活動頻繁期間建立新連線,請在資料庫驅動程式或用戶端設定中,設定較長的連線逾時時間 (例如 10 到 15 秒)。
- 升級至專屬核心執行個體:編輯執行個體,改用專屬核心機型。專用核心機器提供不受限制的 CPU 分配,確保連線時間更快、更穩定。
限制
- IAM 資料庫驗證使用者帳戶的登入資訊必須全部使用小寫。例如:
example-user@example.com。不允許使用Example-User@example.com。 - 基於安全考量,使用 IAM 資料庫驗證機制登入時,只能透過 SSL 連線。系統會拒絕未加密的連線。
- 每個執行個體都有每分鐘登入配額,包括成功和失敗的登入。超過配額時,系統會暫時無法登入。建議您避免頻繁登入,並使用授權網路限制登入。登入授權配額為每分鐘 12,000 次 (每個執行個體)。
- 使用 MySQL 5.6 的執行個體不支援 IAM 資料庫驗證。
後續步驟
- 瞭解如何設定執行個體,以便進行 IAM 資料庫驗證作業。
- 瞭解如何將使用 IAM 資料庫驗證機制的使用者或服務帳戶新增至資料庫。
- 瞭解如何使用 IAM 資料庫驗證登入 Cloud SQL 資料庫。
- 瞭解如何在稽核記錄中查看登入資訊。
- 瞭解員工身分聯盟。