本頁說明使用者和服務帳戶如何使用 Cloud SQL 身分與存取權管理資料庫驗證功能登入 Cloud SQL 資料庫。詳情請參閱「IAM 驗證」。
事前準備
- 設定執行個體以使用 IAM 資料庫驗證功能。詳情請參閱「為 IAM 資料庫驗證設定新的執行個體」。
- 將 IAM 使用者、服務帳戶或群組新增至資料庫。詳情請參閱「將 IAM 使用者或服務帳戶新增至資料庫」和「將群組新增至資料庫」。
- 將
roles/cloudsql.instanceUser
IAM 角色新增至 IAM 使用者、服務帳戶或群組。這是預先定義的角色,包含必要的 Cloud SQL IAMcloudsql.instances.login
權限。您必須具備這項權限,才能使用 IAM 資料庫驗證功能登入資料庫執行個體。詳情請參閱「角色和權限」。 當 IAM 使用者新增至資料庫時,新資料庫使用者預設不會擁有任何資料庫的權限。您必須使用
GRANT
指令,為 IAM 資料庫使用者授予任何必要的權限。詳情請參閱「向 IAM 使用者授予資料庫權限」和「向群組授予資料庫權限」。如果您使用 IAM 群組驗證功能,IAM 使用者或服務帳戶必須是已獲授 IAM 角色或登入 Cloud SQL 執行個體權限的群組成員。使用者或服務帳戶首次登入執行個體後,Cloud SQL 就會建立帳戶。
使用自動 IAM 資料庫驗證功能登入
您可以設定 Cloud SQL 連接器,讓系統自動代表使用者或應用程式處理 Cloud SQL 執行個體的驗證作業。連接器包括 Cloud SQL Auth Proxy、Go 連接器、Java 連接器和 Python 連接器,皆支援自動 IAM 資料庫驗證。使用 Cloud SQL 連接器時,如果啟用自動 IAM 資料庫驗證功能,用來啟動連接器的 IAM 帳戶必須與資料庫驗證帳戶相同。
如要使用自動 IAM 資料庫驗證功能登入,請按照下列步驟操作:
Cloud SQL 驗證 Proxy
驗證 Google Cloud。
User
使用應用程式預設憑證 (ADC) 驗證 Google Cloud 。
使用
gcloud auth application-default login
指令。詳情請參閱「設定應用程式預設憑證」。服務帳戶
如要使用服務帳戶透過 ADC 進行驗證,您可以使用服務帳戶冒用或服務帳戶金鑰。 Google Cloud 如要使用服務帳戶冒用功能,請替換 SERVICE_ACCOUNT_EMAIL_ADDRESS,然後執行下列指令:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
詳情請參閱「設定應用程式預設憑證」。
使用
--auto-iam-authn
標記啟動 Cloud SQL 驗證 Proxy。更改下列內容:
- INSTANCE_CONNECTION_NAME:用於識別 Cloud SQL 執行個體的連線字串。如果您使用的是預設 PostgreSQL 通訊埠以外的通訊埠,請指定通訊埠編號。如要進一步瞭解如何尋找及建構這個字串,請參閱「驗證 Cloud SQL 驗證 Proxy 的選項」。
./cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
如要進一步瞭解如何啟動 Proxy,請參閱「啟動 Cloud SQL 驗證 Proxy」。
準備好使用 Cloud SQL 驗證 Proxy 連線至執行個體時,請使用
psql
用戶端登入。更改下列內容:
- HOSTNAME:Cloud SQL 驗證 Proxy 使用的 IP 位址。根據預設,Cloud SQL 驗證 Proxy 會使用
127.0.0.1
的本機位址,但您可以在啟動 Cloud SQL 驗證 Proxy 時指派其他 IP 位址。 - USERNAME:對於 IAM,使用者名稱是使用者的完整電子郵件地址。如果是服務帳戶,則是服務帳戶的電子郵件地址,不含
.gserviceaccount.com
網域後置字串。 - PORT_NUMBER:選用。如果您在執行個體連線字串中指定了其他通訊埠,請指定該通訊埠號碼。
- DATABASE_NAME:要連線的資料庫名稱。
執行下列指令:
psql -h HOSTNAME \ -U USERNAME \ --port PORT_NUMBER \ --dbname=DATABASE_NAME
如要進一步瞭解如何連線至 Cloud SQL 驗證 Proxy,請參閱「連線至 psql 用戶端」一文。
- HOSTNAME:Cloud SQL 驗證 Proxy 使用的 IP 位址。根據預設,Cloud SQL 驗證 Proxy 會使用
Go
Java JDBC
Java R2DBC
Python
使用手動 IAM 資料庫驗證功能登入
使用者或應用程式可以使用 IAM 驗證資料庫,方法是手動向 Google Cloud 要求存取權杖,然後將其提交給資料庫。您可以使用 gcloud CLI,透過 Cloud SQL Admin API 範圍明確要求 OAuth 2.0 權杖,用於登入資料庫。當您以手動 IAM 資料庫驗證功能登入資料庫使用者時,請使用電子郵件地址做為使用者名稱,並將存取權存取權杖做為密碼。您可以使用這個方法,直接連線至資料庫,也可以使用 Cloud SQL 連接器。
在這個程序中,您會驗證 Google Cloud、要求存取權杖,然後將權杖傳遞為 IAM 資料庫使用者的密碼,以便連線至資料庫。請按照下列步驟,在不使用 Cloud SQL 驗證 Proxy 的情況下連線。
在這些步驟中,您必須:
gcloud sql generate-login-token
指令產生驗證權杖。如要使用手動 IAM 資料庫驗證功能登入,請按照下列步驟操作:
gcloud
驗證 Google Cloud。
User
使用
gcloud auth login
向 IAM 進行驗證。詳情請參閱「使用使用者帳戶授權」。服務帳戶
使用
gcloud auth activate-service-account
向 IAM 進行驗證。詳情請參閱「使用服務帳戶授權」。要求存取權憑證,並使用用戶端登入。
更改下列內容:
- HOSTNAME:執行個體的 IP 位址,可能是公開 IP 位址或私人 IP 位址。
- USERNAME:對於 IAM,使用者名稱是使用者的完整電子郵件地址。如果是服務帳戶,則是服務帳戶的電子郵件地址,不含
.gserviceaccount.com
網域後置字串。 - DATABASE_NAME:要連線的資料庫名稱。
PGPASSWORD=`gcloud sql generate-login-token` \ psql "sslmode=require \ hostaddr=HOSTNAME \ user=USERNAME \ dbname=DATABASE_NAME" \ --no-password
如果 Cloud SQL 執行個體上的
ssl_mode
已設為TRUSTED_CLIENT_CERTIFICATE_REQUIRED
,建議您使用自動 IAM 資料庫驗證功能登入,以便強制執行用戶端身分驗證。
後續步驟
- 進一步瞭解 IAM 資料庫驗證。
- 瞭解如何啟用稽核記錄中的登入資訊並查看相關資訊。
- 瞭解如何建立使用 Cloud SQL IAM 資料庫驗證功能的使用者和服務帳戶。
- 瞭解如何管理使用者和服務帳戶,以便進行身分與存取權管理資料庫驗證。