Cloud SQL for SQL Server 與 Microsoft Entra ID 整合後,您就能使用現有的 Microsoft Entra ID 租戶,集中管理資料庫的身分和存取權。
這項整合功能可帶來下列好處:
集中式驗證。讓使用者和應用程式使用現有的 Microsoft Entra ID 身分登入 SQL Server 適用的 Cloud SQL 執行個體,不必重新輸入密碼。這項功能可免除管理 SQL Server 專屬登入資料和密碼的需求。
提升安全性。協助您在資料庫層級強制執行貴機構現有的安全防護政策,例如多重驗證 (MFA) 和條件式存取 (CA) 規則。
簡化使用者管理作業。如果使用者的 Microsoft Entra ID 帳戶遭到停用或移除,系統會自動撤銷該使用者的資料庫存取權。這項功能有助於簡化離職程序和存取權審查。
整合的先決條件
如要將 SQL Server 適用的 Cloud SQL 與 Microsoft Entra ID 整合,執行個體必須符合下列規定:
您必須擁有現有的 SQL Server 2022 執行個體,或建立新的執行個體。
Microsoft Entra ID 驗證僅支援 SQL Server 2022,不適用於 SQL Server 2017 或 SQL Server 2019。
啟用 Microsoft Entra ID 驗證。
啟用 Microsoft Entra ID 驗證前,請先在 Azure 入口網站中完成下列步驟:
- 找出 Microsoft Entra 租戶 ID。
在 Microsoft Entra ID 中建立新的應用程式註冊。
Cloud SQL for SQL Server 會使用這個應用程式與 Microsoft Entra 租戶 ID 通訊。建立應用程式時,請記下應用程式或用戶端 ID。
-
- 選取剛建立的應用程式註冊,然後按一下「API permissions」。
- 依序選取「Add a permission」 >「Microsoft Graph」 >「Application permissions」。
- 授予下列其中一組權限:
- 選項 1。
- Directory.Read.All
- 方法 2. 提供更具體的權限。
- Application.Read.All
- Group.Read.All
- User.Read.All
- 選項 1。
- 授予全租用戶管理員同意,允許應用程式使用這些權限。
網路連線
Microsoft Entra ID 是一項公用服務,使用公用端點進行驗證。如要讓 Microsoft Entra ID 驗證功能正常運作,Cloud SQL 執行個體必須能夠與這些公開端點建立輸出連線。以下各節將根據執行個體的網路連線設定,討論後續步驟:
具有公開 IP 的執行個體
如果 Cloud SQL 執行個體已設定公開 IP 位址,則內建網際網路輸出存取權。
雖然 Microsoft Entra ID 驗證不需要額外的網路設定,但請先查看限制再繼續。
具有私人 IP 的執行個體
如果 Cloud SQL 執行個體只設定了私人 IP 位址,就無法直接存取網際網路。您必須設定輸出路徑,允許執行個體連線至 Microsoft 的公開身分識別端點。Microsoft Entra ID 整合設定取決於私人執行個體的設定方式:
Private Service Connect
如果 Cloud SQL 執行個體已設定為使用私人 IP 位址,建議使用 Private Service Connect 啟用 Microsoft Entra ID,因為這樣可免除某些維護作業的負擔,例如:
- 管理防禦主機 VM。
- 維護路線。
- 建立過於廣泛的路徑,例如 PSA 連線所需的路徑。
繼續操作前,請先查看使用 Microsoft Entra ID 的限制。
如要啟用連線,您需要在消費者虛擬私有雲中設定 Cloud 網路位址轉譯 (Cloud NAT)。這樣一來,啟用 PSC 的執行個體就能使用 Cloud NAT 閘道,將連出流量傳送至公開的 Microsoft 端點。啟用後,內部路由會限制流量,只允許 Microsoft Entra ID 相關流量傳送至 Cloud NAT 執行個體。
如要啟用連線功能,請完成下列必要步驟:
私人服務存取權
如果 Cloud SQL 執行個體已設定為使用私人 IP 位址,且您使用 PSA,則必須完成下列步驟,才能啟用與 Microsoft Entra ID 的連線:
在 VPC 中部署防禦主機 VM。
在專案中建立防禦主機 VM 時,必須啟用 IP 轉送功能。如果您建立的是以 Linux 為基礎的防禦主機 VM,請設定剛建立的防禦主機 VM,執行 IP 轉送:
sudo sysctl net.ipv4.conf.all.forwarding=1 sudo iptables --table nat --append POSTROUTING --out-interface ens4 -j MASQUERADE設定必要的網路路徑,將 Microsoft Entra ID 驗證流量從 Cloud SQL 執行個體導向防禦主機 VM 主機,以連上網際網路。
為每個 Microsoft Entra ID 端點新增對應的路徑。您可以在 Azure IP 範圍和服務標記資源檔案的
AzureActiveDirectory.ServiceEndpoint區段中,找到目前的 IP 範圍。gcloud
針對每個 Microsoft Entra ID IP 範圍建立兩條路徑,並將
VM_NAME和VM_ZONE替換為堡壘主機 VM 的實際名稱和區域:gcloud --project=PROJECT_ID compute routes create NAME \ --network=NETWORK --destination-range=RANGE \ --priority=998 --next-hop-gateway=default-internet-gateway gcloud --project=PROJECT_ID compute routes create NAME \ --network=NETWORK --destination-range=RANGE --priority=999 \ --next-hop-instance=VM_NAME --next-hop-instance-zone=VM_ZONE \ --next-hop-ilb=ILB_VALUE更改下列內容:
- PROJECT_ID:Cloud SQL 執行個體所在的專案 ID。
- NAME:要建立的路由名稱。
- NETWORK:Cloud SQL 執行個體所在的網路名稱。
- RANGE:要使用的 IP 範圍。
- VM_NAME:要納入的堡壘主機 VM 名稱。
- VM_ZONE:要納入的堡壘主機 VM 所在區域,例如
us-central1。 ILB_VALUE:選用。內部 TCP/UDP 負載平衡器的轉送規則名稱或 IP 位址。如果您在堡壘主機 VM 前方設定負載平衡器,則必須在這個指令中加入
--next-hop-ilb旗標。詳情請參閱以內部直通式網路負載平衡器為下一個躍點。
範例如下:
gcloud --project=my-customer-project compute routes create my-route-1 --network=default --destination-range=20.20.32.0/27 --priority=998 --next-hop-gateway=default-internet-gateway gcloud --project=my-customer-project compute routes create my-route-2 --network=default --destination-range=20.20.32.0/27 --priority=999 --next-hop-instance=my-bastion-vm --next-hop-instance-zone=us-central1-c --next-hop-ilb=fr-ilb1使用上一步的相同指令,套用相同設定,允許 Microsoft Entra ID 憑證撤銷檢查的流量。請使用「DigiCert 憑證狀態 IP 位址」列出的 IP 範圍。
如果未完成這個步驟,Microsoft Entra ID 驗證可能仍可運作,但開啟新連線時可能會發生延遲。
管理 Microsoft Entra ID 驗證
您可以為新的或現有執行個體啟用 Entra ID 驗證。
建立啟用 Microsoft Entra ID 驗證的執行個體
建立新的 Cloud SQL for SQL Server 執行個體時,您可以啟用 Microsoft Entra ID 驗證。您必須提供在 Azure 入口網站中設定的應用程式註冊服務專屬 Microsoft Entra 用戶端 ID 和應用程式 ID (用戶端 ID)。
詳情請參閱「先決條件」。
gcloud
gcloud beta sql instances create INSTANCE_NAME \
--database-version=EDITION \
--tier=TIER \
--network=NETWORK
--root-password=PASSWORD
--entra-id-tenant-id=TENANT_ID \
--entra-id-application-id=APPLICATION_ID
更改下列內容:
- INSTANCE_NAME:要建立的執行個體名稱。
- EDITION:要使用的執行個體版本,例如
SQLSERVER_2022_STANDARD。 - TIER:要使用的執行個體層級或機型,例如
db-custom-2-3840。 - NETWORK:要使用的網路名稱。
- PASSWORD:執行個體密碼。
- TENANT_ID:Microsoft Entra 租戶 ID。
- APPLICATION_ID:應用程式或用戶端 ID。
範例如下:
gcloud beta sql instances create my-entraid-instance \
--database-version=SQLSERVER_2022_STANDARD \
--tier=db-custom-2-3840 \
--assign-ip \
--root-password=D61Xv36f!0lE \
--entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
--entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd
REST v1
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您要建立執行個體的專案名稱。
- INSTANCE_ID:要建立的執行個體 ID。
- EDITION:要使用的執行個體版本,例如
SQLSERVER_2022_STANDARD。 - REGION:您希望執行個體所在的區域,例如
us-central1。 - PASSWORD:執行個體密碼。
- TIER:要使用的執行個體層級或機型,例如
db-custom-2-3840。 - NETWORK:要使用的網路名稱。
- TENANT_ID:Microsoft Entra 租戶 ID。
- APPLICATION_ID:應用程式或用戶端 ID。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
JSON 要求主體:
{
"databaseVersion":"EDITION",
"name":"INSTANCE_ID",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":
{
"tier":"TIER",
"ipConfiguration":
{
"privateNetwork":"NETWORK"
},
"entraidConfig":
{
"tenantId": "TENANT_ID",
"applicationId": "APPLICATION_ID"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您要建立執行個體的專案名稱。
- INSTANCE_ID:要建立的執行個體 ID。
- EDITION:要使用的執行個體版本,例如
SQLSERVER_2022_STANDARD。 - REGION:您希望執行個體所在的區域,例如
us-central1。 - PASSWORD:執行個體密碼。
- TIER:要使用的執行個體層級或機型,例如
db-custom-2-3840。 - NETWORK:要使用的網路名稱。
- TENANT_ID:Microsoft Entra 租戶 ID。
- APPLICATION_ID:應用程式或用戶端 ID。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
JSON 要求主體:
{
"databaseVersion":"EDITION",
"name":"INSTANCE_ID",
"region":"REGION",
"rootPassword":"PASSWORD",
"settings":
{
"tier":"TIER",
"ipConfiguration":
{
"privateNetwork":"NETWORK"
},
"entraidConfig":
{
"tenantId": "TENANT_ID",
"applicationId": "APPLICATION_ID"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
管理現有執行個體的 Microsoft Entra ID 驗證
您可以隨時在現有執行個體上啟用、修改或停用 Microsoft Entra ID 設定。
如要修改執行個體的設定,您必須使用新的或已刪除的房客 ID 和應用程式 (用戶端) ID 值修補執行個體。
這個程序不涉及加入或退出網域。
您可以更新租戶 ID 和應用程式 ID 值,不必啟用或停用與 Microsoft Entra ID 的整合。
gcloud
gcloud beta sql instances patch INSTANCE_NAME \
--entra-id-tenant-id="NEW_TENANT_ID" \
--entra-id-application-id="NEW_APPLICATION_ID"
更改下列內容:
- INSTANCE_NAME:要修改的執行個體名稱。
- NEW_TENANT_ID:新的 Microsoft Entra 租戶 ID。如要停用 Microsoft Entra ID,請將這個字串留空。
- NEW_APPLICATION_ID:新的應用程式或用戶端 ID。如要停用 Microsoft Entra ID,請將這個字串留空。
範例如下:
gcloud beta sql instances patch my-existing-instance \
--entra-id-tenant-id=7e281aab-e994-4c83-88ed-d1674477a39c \
--entra-id-application-id=4c5ed2da-0478-4aaa-ab65-6dfd33ba8bfd
REST v1
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:要修改的執行個體所在的專案 ID。
- INSTANCE_ID:要修改的執行個體 ID。
- TENANT_ID:Microsoft Entra 租戶 ID。如要停用 Microsoft Entra ID,請將這個字串留空。
- APPLICATION_ID:應用程式或用戶端 ID。如要停用 Microsoft Entra ID,請將這個字串留空。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
JSON 要求主體:
{
"settings":
{
"entraidConfig":
{
"tenantId": "NEW_TENANT_ID",
"applicationId": "NEW_APPLICATION_ID"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:要修改的執行個體所在的專案 ID。
- INSTANCE_ID:要修改的執行個體 ID。
- TENANT_ID:Microsoft Entra 租戶 ID。如要停用 Microsoft Entra ID,請將這個字串留空。
- APPLICATION_ID:應用程式或用戶端 ID。如要停用 Microsoft Entra ID,請將這個字串留空。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
JSON 要求主體:
{
"settings":
{
"entraidConfig":
{
"tenantId": "NEW_TENANT_ID",
"applicationId": "NEW_APPLICATION_ID"
}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
將憑證新增至應用程式
如要讓 Microsoft Entra ID 驗證 Cloud SQL for SQL Server 執行個體,您必須將 Cloud SQL for SQL Server 執行個體的公開憑證上傳至 Microsoft Entra ID 應用程式註冊。
在執行個體上啟用 Microsoft Entra ID 驗證後,請為 Microsoft Entra ID 建立執行個體專屬憑證。
gcloud
gcloud beta sql ssl entraid-certs create --instance=INSTANCE_NAME更改下列內容:
- INSTANCE_NAME:要建立憑證的執行個體名稱。
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:執行個體的 ID。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }REST v1beta4
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:執行個體的 ID。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/addEntraIdCertificate
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }擷取執行個體的詳細資料,取得您剛建立的憑證詳細資料:
gcloud
gcloud beta sql ssl entraid-certs list --instance=INSTANCE_NAME --format="value(ssl_cert.cert)"更改下列內容:
- INSTANCE_NAME:與您剛建立的憑證相關聯的執行個體名稱。
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:執行個體的 ID。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates
請展開以下其中一個選項,以傳送要求:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
這個指令會列印憑證,您可以將憑證儲存至檔案,然後上傳至 Azure 入口網站。
您必須從檔案中移除所有內嵌的換行字元,並手動分隔每一行。否則檔案上傳會失敗。
舉例來說,您可能會收到類似以下的文字字串:
Line1\Line2\Line3您必須手動分隔每一行,如下所示:
Line1 Line2 Line3或者,如果您不想手動執行這項工作,請使用下列指令:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'更改下列內容:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_NAME:與您剛建立的憑證相關聯的執行個體名稱。
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:執行個體的 ID。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/listEntraIdCertificates
請展開以下其中一個選項,以傳送要求:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
這個指令會列印憑證,您可以將憑證儲存至檔案,然後上傳至 Azure 入口網站。
您必須從檔案中移除所有內嵌的換行字元,並手動分隔每一行。否則檔案上傳會失敗。
舉例來說,您可能會收到類似以下的文字字串:
Line1\Line2\Line3您必須手動分隔每一行,如下所示:
Line1 Line2 Line3或者,如果您不想手動執行這項工作,請使用下列指令:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "x-goog-user-project: PROJECT_ID" "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/listEntraIdCertificates" -s | jq -r '.certs[0].cert'更改下列內容:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_NAME:與您剛建立的憑證相關聯的執行個體名稱。
將憑證新增至 Azure 入口網站。
- 在 Azure 入口網站中前往「App Registration」。
- 開啟「憑證和密鑰」。
- 選取「上傳憑證」。瀏覽至從執行個體擷取的憑證檔案,然後新增該檔案。
- 按一下 [確定]。
輪替 Microsoft Entra ID 憑證
您必須在 Microsoft Entra ID 憑證到期前輪替憑證。建議您在預定到期日至少一週前開始進行這項程序:
請按照「將憑證新增至應用程式」一文中的步驟,在 Cloud SQL for SQL Server 執行個體上建立新的非現用憑證,然後使用 Azure 入口網站將憑證上傳至 Microsoft Entra ID。這不會影響目前使用中的憑證。
在 Cloud SQL for SQL Server 執行個體上啟用新憑證,這會觸發 Cloud SQL for SQL Server 開始使用新憑證進行所有新的驗證。
gcloud
gcloud beta sql ssl entraid-certs rotate --instance=INSTANCE_NAME更改下列內容:
- INSTANCE_NAME:與要輪替的憑證相關聯的執行個體名稱。
REST v1
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:執行個體的 ID。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate
請展開以下其中一個選項,以傳送要求:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
REST v1beta4
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:執行個體的 ID。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/rotateEntraIdCertificate
請展開以下其中一個選項,以傳送要求:
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。
執行個體現在會使用新憑證。
您可以安全地從 Microsoft Entra ID 應用程式註冊和 Cloud SQL for SQL Server 執行個體中移除舊憑證。詳情請參閱「Add and manage application credentials in Microsoft Entra ID」(在 Microsoft Entra ID 中新增及管理應用程式憑證)。
復原 Microsoft Entra ID 憑證
如果輪替為新憑證後發生問題,可以復原為先前的憑證。
如要執行回溯,先前的憑證必須仍然有效,且 Microsoft Entra ID 應用程式註冊仍須信任該憑證。
下列指令會立即在 Cloud SQL for SQL Server 執行個體上重新啟用指定的先前憑證。
gcloud
gcloud beta sql ssl entraid-certs rollback --instance=INSTANCE_NAME
更改下列內容:
- INSTANCE_NAME:與要復原的憑證相關聯的執行個體名稱。
REST v1
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:要復原憑證的執行個體 ID。
- CERTIFICATE_NAME:您要用來取代舊憑證的新憑證名稱,例如
sha1Fingerprint。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate
JSON 要求主體:
{
{
"RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:要復原憑證的執行個體 ID。
- CERTIFICATE_NAME:您要用來取代舊憑證的新憑證名稱,例如
sha1Fingerprint。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/rollbackEntraIdCertificate
JSON 要求主體:
{
{
"RotateEntraIdCertificateContext": {"nextVersion": "CERTIFICATE_NAME"}
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-01T19:13:21.834Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
建立初始 Microsoft Entra ID 登入
在執行個體上啟用 Microsoft Entra ID 驗證後,您需要建立 Microsoft Entra ID 登入資訊。
建立第一個 Microsoft Entra ID 登入。
這個初始登入項目代表 Microsoft Entra ID 使用者或群組,無法使用 T-SQL 建立。您必須使用 gcloud CLI 或 Cloud SQL Admin API 建立該項目:
gcloud
gcloud sql users create USER_NAME --instance=INSTANCE_NAME --type=ENTRAID_USER更改下列內容:
- :要建立的 SQL Server 適用的 Cloud SQL 使用者名稱。USER_NAME
- INSTANCE_NAME:要建立 Microsoft Entra ID 登入項目的執行個體名稱。
- ENTRAID_USER:Microsoft Entra ID 使用者名稱。
範例如下:
gcloud sql users create myentraiduser@mytenant.com --instance=my-entraid-instance --type=ENTRAID_USERREST v1
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:要更新的執行個體 ID。
- :要建立的 SQL Server 適用的 Cloud SQL 使用者名稱。USER_NAME
- ENTRAID_USER:Microsoft Entra ID 使用者名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON 要求主體:
{ "name": "USER_NAME" "type": "ENTRAID_USER" }請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }REST v1beta4
下列基本 API 呼叫並未顯示所有可能的欄位。如需 JSON 要求原型,請參閱「設定」。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:執行個體所在的專案 ID。
- INSTANCE_ID:要更新的執行個體 ID。
- :要建立的 SQL Server 適用的 Cloud SQL 使用者名稱。USER_NAME
- ENTRAID_USER:Microsoft Entra ID 使用者名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/users
JSON 要求主體:
{ "name": "USER_NAME" "type": "ENTRAID_USER" }請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }建立初始 Microsoft Entra ID 登入後,您就能以該使用者身分連線至資料庫。
建立後續的 Microsoft Entra ID 登入。
如上一步所述,您可以建立及管理其他 Microsoft Entra ID 登入。
或者,如果您偏好使用其他工具 (例如 SQL Server Management Studio (SSMS)),則必須先授予初始登入權限,才能管理其他登入:
GRANT ALTER ANY LOGIN TO [ENTRA_ID_USER] AS CustomerDbRootRole將 ENTRAID_USER 替換為 Microsoft Entra ID 使用者名稱。
授予權限後,這個登入項目就能使用標準 T-SQL 指令,建立及管理其他 Microsoft Entra ID 登入項目。指令範例如下:
CREATE LOGIN [<<ENTRA_ID_USER>>] FROM EXTERNAL PROVIDER將 ENTRAID_USER 替換為 Microsoft Entra ID 使用者名稱。
如要根據 Microsoft Entra ID 登入資訊建立使用者,或授予權限,請使用標準 T-SQL 指令。
如要進一步瞭解如何使用正確語法建立登入,請參閱「透過應用程式註冊,為 SQL Server 設定 Microsoft Entra 驗證」。
最佳做法
為協助隔離權限及更妥善地定義安全界線,我們強烈建議您為每個 Cloud SQL for SQL Server 執行個體建立專屬的 Microsoft Entra ID 應用程式註冊。撤銷應用程式的憑證不會影響其他不相關的執行個體。
詳情請參閱「如何在 Microsoft Entra ID 中註冊應用程式」。
疑難排解
下列各節有助於解決管理 Microsoft Entra ID 整合時可能遇到的問題。
私人 IP 執行個體的網路連線問題
整合設定期間,您可能會遇到下列問題:
- 建立 Microsoft Entra ID 登入作業的速度緩慢
- 無法建立 Microsoft Entra ID 登入
- 無法使用 Microsoft Entra ID 驗證連線至執行個體
如要解決這些問題,請執行下列連線測試:
在與 Cloud SQL for SQL Server 執行個體相同的 Google Cloud 專案和虛擬私有雲中,以及在相同區域中,建立僅設定私人 IP 的測試 VM。
使用遠端桌面通訊協定 (RDP) 或安全殼層通訊協定 (SSH),連線至您剛建立的 VM。接著,請執行下列指令來測試可連線性。這些步驟適用於 Linux 和 Windows VM:
curl -4iv login.microsoftonline.com curl -4iv graph.microsoft.com curl -4iv ocsp.digicert.com
如果無法連上任何端點 (無論是逾時或連線遭拒錯誤),請檢查網路設定是否符合下列條件:
- 如果是 Private Service Connect,請確認 Cloud NAT 已正確設定,允許發出網際網路連線。
- 如果是私人服務存取權,請確認自訂路徑和堡壘主機設定。
- 檢查虛擬私有雲防火牆規則,確保不會封鎖前往這些網域的輸出流量。
常見錯誤訊息
在 Microsoft Entra ID 驗證期間,您可能會遇到下列登入錯誤:
Login failed for user ""
如要解決這個問題,請確認這個 Microsoft Entra ID 使用者有 SQL Server 登入資訊。
從 Microsoft Active Directory 遷移
在下列情境中,您可以啟用 Microsoft Entra ID 驗證,而不必停用現有的 Microsoft Active Directory 驗證:
- 執行階段式遷移作業。使用客戶管理的 Active Directory (CMAD) 或 Managed Service for Microsoft Active Directory,將驗證授權從 Microsoft Active Directory 移至 Microsoft Entra ID。
- 使用混合式環境。同時啟用 Microsoft Active Directory 和 Microsoft Entra ID。
唯讀備用資源
- 如果將唯讀備用資源新增至已啟用 Microsoft Entra ID 的主要執行個體,系統會自動將唯讀備用資源設定為使用 Microsoft Entra ID。
- 如果主要執行個體已啟用 Microsoft Entra ID,且您將備份還原至該執行個體,系統會自動將相關聯的唯讀副本設定為使用 Microsoft Entra,因為身分不會變更。
複製執行個體和還原至其他執行個體
在下列情況下,系統不會自動為新執行個體設定 Microsoft Entra ID 整合:
- 主要執行個體的副本。
- 還原至非主要執行個體的備份。
在這種情況下,您必須在新執行個體上手動啟用 Microsoft Entra ID,然後將憑證重新上傳至 Microsoft Entra ID 應用程式。這項規定是安全措施,可防止多個不相關的執行個體使用相同的應用程式 ID。
限制
- Microsoft Entra ID 驗證僅支援 SQL Server 2022,不適用於 SQL Server 2017 或 SQL Server 2019。
- 如果您複製執行個體,或將備份還原至其他執行個體,新執行個體不會自動設定 Microsoft Entra ID 整合。詳情請參閱「備份與復原」。
- 如果高可用性 (HA) 執行個體設定了公開 IP,則不支援 Microsoft Entra ID 驗證。
- 已啟用 PSC 的主要執行個體及其對應的唯讀備用資源執行個體,都不支援 Microsoft Entra ID 驗證。
- 如果主要執行個體已附加副本,請避免輪替 Microsoft Entra ID 憑證。如果輪替主要執行個體的憑證,副本憑證不會更新。
- 您可以使用 gcloud CLI 或 Cloud SQL Admin API,設定 Microsoft Entra ID 與 SQL Server 適用的 Cloud SQL 整合。無法使用 Terraform 管理整合。
後續步驟
- 進一步瞭解 Microsoft Entra ID