本頁面說明使用者和服務帳戶如何使用 Cloud SQL IAM 資料庫驗證機制,登入 Cloud SQL 資料庫。詳情請參閱「IAM 驗證」。
事前準備
- 將執行個體設為使用 IAM 資料庫驗證機制。詳情請參閱「設定新執行個體,以便進行 IAM 資料庫驗證」。
- 將 IAM 使用者、服務帳戶或群組新增至資料庫。詳情請參閱「將 IAM 使用者或服務帳戶新增至資料庫」和「將群組新增至資料庫」。
- 將
roles/cloudsql.instanceUserIAM 角色新增至 IAM 使用者、服務帳戶或群組。這個預先定義的角色具備必要的 Cloud SQL IAMcloudsql.instances.login權限。您必須具備這項權限,才能使用 IAM 資料庫驗證機制登入資料庫執行個體。詳情請參閱「角色和權限」。 - 如果您使用 Cloud SQL Auth Proxy,請將
roles/cloudsql.clientIAM 角色新增至 IAM 使用者、服務帳戶或群組。這個預先定義的角色具備必要的 Cloud SQL IAMcloudsql.instances.connect權限。您必須具備這項權限,才能使用 Cloud SQL Auth Proxy 登入資料庫執行個體。詳情請參閱下列資源: - 將 IAM 使用者新增至資料庫時,新的資料庫使用者預設沒有任何資料庫權限。如要為使用者提供必要的資料庫權限,您可以在新增 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 Auth Proxy
向 Cloud de Confiance by S3NS驗證。
使用者
使用應用程式預設憑證 (ADC) 向 Cloud de Confiance by S3NS 進行驗證。
使用
gcloud auth application-default login指令。詳情請參閱「設定應用程式預設憑證」。服務帳戶
如要使用服務帳戶透過 ADC 向 Cloud de Confiance by S3NS 進行驗證,您可以使用服務帳戶模擬功能或服務帳戶金鑰。如要使用服務帳戶模擬功能,請替換 SERVICE_ACCOUNT_EMAIL_ADDRESS,然後執行下列指令:
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
詳情請參閱「設定應用程式預設憑證」。
使用
--auto-iam-authn旗標啟動 Cloud SQL Auth Proxy。更改下列內容:
- INSTANCE_CONNECTION_NAME:用於識別 Cloud SQL 執行個體的連線字串。如果您使用的通訊埠不是預設的 PostgreSQL 通訊埠,請指定通訊埠編號。如要進一步瞭解如何尋找及建構這個字串,請參閱「驗證 Cloud SQL Auth Proxy 的選項」。
./cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
如要進一步瞭解如何啟動 Proxy,請參閱「啟動 Cloud SQL Auth Proxy」。
準備好使用 Cloud SQL Auth Proxy 連線至執行個體時,請使用
psql用戶端登入。更改下列內容:
- HOSTNAME:Cloud SQL Auth Proxy 使用的 IP 位址。根據預設,Cloud SQL Auth Proxy 會使用
127.0.0.1的 localhost 位址,但您可以在啟動 Cloud SQL Auth Proxy 時指派其他 IP 位址。 - USERNAME:如果是 IAM,使用者名稱是使用者的完整電子郵件地址。如果是服務帳戶,則為服務帳戶的電子郵件地址,不含
.s3ns-system.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 Auth Proxy 使用的 IP 位址。根據預設,Cloud SQL Auth Proxy 會使用
Go
Java JDBC
Java R2DBC
Node.js
Python
使用手動 IAM 資料庫驗證機制登入
使用者或應用程式可以手動向 Cloud de Confiance by S3NS 要求存取權杖,並將權杖提供給資料庫,藉此使用 IAM 向資料庫進行驗證。您可以使用 gcloud CLI,明確要求具有 Cloud SQL Admin API 範圍的 OAuth 2.0 權杖,用於登入資料庫。以資料庫使用者身分登入時,如果採用手動 IAM 資料庫驗證機制,請使用電子郵件地址做為使用者名稱,並以存取權杖做為密碼。您可以直接連線至資料庫,或使用 Cloud SQL 連接器。
在這個程序中,您會向 Cloud de Confiance by S3NS進行驗證、要求存取權杖,然後將權杖做為 IAM 資料庫使用者的密碼傳入,連線至資料庫。請按照下列步驟操作,在不使用 Cloud SQL Auth Proxy 的情況下連線。
如要執行這些步驟,您必須:
gcloud sql generate-login-token 指令產生驗證權杖。如要使用手動 IAM 資料庫驗證機制登入,請按照下列步驟操作:
gcloud
向 Cloud de Confiance by S3NS驗證。
使用者
使用
gcloud auth login向 IAM 驗證身分。詳情請參閱「使用 gcloud CLI 進行驗證」。服務帳戶
使用
gcloud auth activate-service-account向 IAM 驗證。詳情請參閱「使用 gcloud CLI 進行驗證」。要求存取權杖,並使用用戶端登入。
更改下列內容:
- HOSTNAME:執行個體的 IP 位址,可以是公開 IP 位址或私人 IP 位址。
- USERNAME:如果是 IAM,使用者名稱是使用者的完整電子郵件地址。如果是服務帳戶,則為服務帳戶的電子郵件地址,不含
.s3ns-system.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 資料庫驗證機制的使用者和服務帳戶。
- 瞭解如何管理 IAM 資料庫驗證的使用者和服務帳戶。