本頁說明使用者和服務帳戶如何使用 Cloud SQL IAM 資料庫驗證登入 Cloud SQL 資料庫。詳情請參閱「IAM 驗證」。
事前準備
- 設定執行個體,以使用 IAM 資料庫驗證。詳情請參閱「為 IAM 資料庫驗證設定新的執行個體」。
- 將 IAM 使用者、服務帳戶或群組新增至資料庫。詳情請參閱「將 IAM 使用者或服務帳戶新增至資料庫」和「將群組新增至資料庫」。
- 將
roles/cloudsql.instanceUser
IAM 角色新增至 IAM 使用者、服務帳戶或群組。這是預先定義的角色,包含必要的 Cloud SQL IAMcloudsql.instances.login
權限。您必須具備這項權限,才能使用 IAM 資料庫驗證功能登入資料庫執行個體。詳情請參閱角色和權限。 將 IAM 使用者新增至資料庫時,新的資料庫使用者預設不會擁有任何資料庫的權限。您需要使用
GRANT
指令,授予 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 Auth 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 Auth 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 資料庫驗證的使用者和服務帳戶。
- 瞭解如何管理身分與存取權管理資料庫驗證功能的使用者和服務帳戶。