共用方式為


設定 Azure 儲存體連接字串

連接字串包含在執行階段使用共用金鑰讓應用程式存取 Azure 儲存體帳戶中資料所需的授權資訊。 您可以設定連接字串,以進行下列動作:

  • 連線至 Azurite 儲存體模擬器。
  • 在 Azure 中存取儲存體帳戶。
  • 透過共用存取簽章 (SAS) 存取 Azure 中的指定資源。

若要了解如何檢視您的帳戶存取金鑰和複製連接字串,請參閱管理儲存體帳戶存取金鑰

重要

為了實現最佳安全性,Microsoft 建議盡可能使用具有受控識別的 Microsoft Entra ID 來授權對於 Blob、佇列和資料表資料的請求。 相較於共用金鑰授權,使用 Microsoft Entra ID 和受控識別來授權可提供更優異的安全性,也更容易使用。 若要深入了解受控識別,請參閱什麼是 Azure 資源受控識別?。 如需如何為 .NET 應用程式啟用和使用受控識別的範例,請參閱使用 .NET 向 Azure 資源驗證 Azure 裝載的應用程式

對於裝載於 Azure 外部的資源,例如內部部署應用程式,您可以透過 Azure Arc 使用受控識別。例如,在已啟用 Azure Arc 的伺服器上執行的應用程式可以使用受控識別來連線到 Azure 服務。 若要深入了解,請參閱透過已啟用 Azure Arc 的伺服器向 Azure 資源進行驗證

針對使用共用存取簽章 (SAS) 的案例,Microsoft 建議使用使用者委派 SAS。 使用者委派 SAS 會使用 Microsoft Entra 認證來保護,而不是使用帳戶金鑰。 若要了解共用存取簽章,請參閱使用共用存取簽章授與資料的有限存取權。 如需如何使用 .NET 來建立和運用使用者委派 SAS 的範例,請參閱使用 .NET 建立 Blob 的使用者委派 SAS

保護您的存取金鑰

儲存體帳戶存取金鑰提供儲存體帳戶資料的完整存取權,並可產生 SAS 權杖。 請務必小心保護您的存取金鑰。 使用 Azure Key Vault,以安全的方式管理及輪替金鑰。 共用金鑰的存取權會授與使用者對儲存體帳戶資料的完整存取權。 共用金鑰的存取權應謹慎地加以限制和監視。 若無法使用 Microsoft Entra ID 型授權,請使用存取範圍受限的使用者委派 SAS 權杖。 避免將存取金鑰寫入程式碼,或將其以純文字儲存在他人可以存取的位置。 如果您認為金鑰可能已遭盜用,請輪替金鑰。

重要

若要防止使用者使用共用金鑰存取儲存體帳戶中的資料,您可以禁止儲存體帳戶的共用金鑰授權。 作為安全性最佳做法,建議以最低許可權對資料進行細項存取。 使用受控識別的 Microsoft Entra ID 型授權應用於支援 OAuth 的案例。 Kerberos 或 SMTP 應該用於透過 SMB 的 Azure 檔案儲存體。 針對透過 REST 的 Azure 檔案儲存體,可以使用 SAS 權杖。 如果不需要防止意外使用共用金鑰,則應停用共用金鑰存取。 如需詳細資訊,請參閱防止 Azure 儲存體帳戶使用共用金鑰授權

若要使用 Microsoft Entra 條件式存取原則來保護 Azure 儲存體帳戶,您必須禁止儲存體帳戶的共用金鑰授權。

如果您已停用共用金鑰存取,而且您在診斷記錄中看到回報的共用金鑰授權,這表示信任的存取權正用來存取儲存體。 如需詳細資訊,請參閱 Microsoft Entra 租用戶中註冊之資源的受信任存取權

儲存連接字串

您的應用程式需要在執行階段存取連接字串,才能授權給對 Azure 儲存體進行的要求。 您有幾種選項可用於儲存帳戶存取金鑰或連接字串:

  • 您可以將帳戶金鑰安全地儲存在 Azure Key Vault 中。 如需詳細資訊,請參閱關於 Azure Key Vault 受控儲存體帳戶金鑰
  • 您可以將連接字串儲存在環境變數中。
  • 應用程式可將連接字串儲存在 app.configweb.config 檔案中。 將連接字串新增至這些檔案中的 AppSettings 區段。

警告

以純文字儲存您的帳戶存取金鑰或連接字串會產生安全性風險,不建議使用。 以加密格式儲存您的帳戶金鑰,或移轉您的應用程式,以使用 Microsoft Entra 授權來存取儲存體帳戶。

設定 Azurite 的連接字串

模擬器支援共用金鑰驗證的單一固定帳戶及已知驗證金鑰。 此帳戶和金鑰都是唯一允許搭配模擬器使用的共用金鑰認證。 畫面如下:

Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

注意

模擬器所支援的驗證金鑰僅可用來測試用戶端驗證碼的功能。 它不提供任何安全性用途。 您無法將生產儲存體帳戶和金鑰與模擬器搭配使用。 您不應該將開發帳戶與生產資料搭配使用。

模擬器只透過 HTTP 支援連線。 不過,HTTPS 是建議的通訊協定,用於存取生產 Azure 儲存體帳戶中的資源。

使用捷徑連接到模擬器帳戶

從您的應用程式連線到模擬器的最簡單方法,就是在應用程式參照捷徑 UseDevelopmentStorage=true 的組態檔中設定連接字串。 此捷徑相當於模擬器的完整連接字串,會指定每個 Azure 儲存體服務的帳戶名稱、帳戶金鑰和模擬器端點:

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;

下列 .NET 程式碼片段會示範如何從採用連接字串的方法使用捷徑。 例如,BlobContainerClient(String, String) 建構函式會採用連接字串。

BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();

在呼叫程式碼片段中的程式碼之前,請先確定模擬器可執行。

如需 Azurite 的詳細資訊,請參閱使用 Azurite 模擬器進行本機 Azure 儲存體開發

設定 Azure 儲存體帳戶的連接字串

若要建立 Azure 儲存體帳戶的連接字串,請使用以下格式。 指出您是否要透過 HTTPS (建議選項) 或 HTTP 連線至儲存體帳戶、使用您的儲存體帳戶名稱來取代 myAccountName,以及使用您的帳戶存取金鑰來取代 myAccountKey

DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey

例如,您的連接字串看起來可能如下所示︰

DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>

雖然 Azure 儲存體可同時支援連接字串中的 HTTP 和 HTTPS,但強烈建議您使用 HTTPS

提示

您可以在 Azure 入口網站中找到儲存體帳戶的連接字串。 瀏覽至儲存體帳戶設定中的 [安全性 + 網路]>[存取金鑰],以查看這主要和次要存取金鑰的連接字串。

使用共用存取簽章建立連接字串

如果您具有授與您存取儲存體帳戶中資源的共用存取簽章 (SAS) URL,您可以在連接字串中使用 SAS。 因為 SAS 包含驗證要求所需的資訊,所以含有 SAS 的連接字串會提供通訊協定、服務端點,以及存取資源所需的認證。

若要建立包含共用存取簽章的連接字串,請以下列格式指定字串:

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

雖然連接字串必須包含至少一個服務端點,但是每個服務端點都是選用的。

注意

建議最好搭配使用 HTTPS 與 SAS。

如果您在組態檔的連接字串中指定 SAS,則可能需要編碼 URL 中的特殊字元。

服務 SAS 範例

以下範例是包含服務 SAS for Blob 儲存體的連接字串:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

而以下範例是具有 URL 編碼的相同連接字串︰

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&amp;sr=b&amp;si=tutorial-policy-635959936145100803&amp;sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

帳戶 SAS 範例

以下範例是包含帳戶 SAS for Blob 和檔案儲存體的連接字串。 請注意,指定兩個服務的端點︰

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

而以下範例是具有 URL 編碼的相同連接字串︰

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&amp;sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&amp;spr=https&amp;st=2016-04-12T03%3A24%3A31Z&amp;se=2016-04-13T03%3A29%3A31Z&amp;srt=s&amp;ss=bf&amp;sp=rwl

建立明確儲存體端點的連接字串

您可以在連接字串中指定明確的服務端點,而不使用預設端點。 若要建立指定明確端點的連接字串,請使用下列格式來指定每個服務的完整服務端點,包括通訊協定規格 (HTTPS (建議選項) 或 HTTP):

DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey

您可能想要指定明確端點的一個案例為是否您已將 Blob 儲存體端點對應至自訂網域。 在此情況下,您可以在連接字串中指定 Blob 儲存體的自訂端點。 您可以選擇性地指派其他服務的預設端點 (如果應用程式有使用這些服務) 。

以下是針對 Blob 服務指定明確端點的連接字串範例︰

# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>

此範例會指定所有服務的明確端點,包括 Blob 服務的自訂網域︰

# All service endpoints
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
FileEndpoint=https://myaccount.file.core.windows.net;
QueueEndpoint=https://myaccount.queue.core.windows.net;
TableEndpoint=https://myaccount.table.core.windows.net;
AccountName=storagesample;
AccountKey=<account-key>

連接字串中的端點值可用來建構連線至儲存體服務的要求 URI,並要求任何傳回到您程式碼的 URI 形式。

如果你已將儲存體端點對應至自訂網域,且從連接字串中省略該端點,則無法使用該連接字串,從程式碼中存取該服務中的資料。

如需針對 Azure 儲存體設定自訂網域的詳細資訊,請參閱將自訂網域對應至 Azure Blob 儲存體端點

重要

連接字串中的服務端點值必須是格式正確的 URI,包括 https://(建議) 或 http://

建立包含端點尾碼的連接字串

若要在具有不同端點尾碼的區域或執行個體 (例如由 21Vianet 操作的 Microsoft Azure 或 Azure Government) 中建立儲存體服務的連接字串,請使用下列連接字串格式。 指出您是否要透過 HTTPS (建議) 或 HTTP 連線至儲存體帳戶、使用您的儲存體帳戶名稱來取代 myAccountName、使用您的帳戶存取金鑰來取代 myAccountKey,以及使用 URI 尾碼來取代 mySuffix

DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;

以下是儲存體服務的範例連接字串,此儲存體服務位於由 21Vianet 操作的 Azure 中:

DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;

使用共用金鑰授權存取

若要了解如何使用帳戶密鑰或連接字串,授權存取 Azure 儲存體,請參閱下列其中一篇文章:

下一步