Konfiguracja parametrów połączenia usługi Azure Storage

Ciąg połączenia zawiera informacje o autoryzacji wymagane przez aplikację do uzyskiwania dostępu do danych na koncie usługi Azure Storage czasie wykonywania przy użyciu autoryzacji klucza wspólnego. Parametry połączenia można skonfigurować w taki sposób, aby:

  • Połączenie do emulatora magazynu Azurite.
  • Uzyskiwanie dostępu do konta magazynu na platformie Azure.
  • Uzyskiwanie dostępu do określonych zasobów na platformie Azure za pomocą sygnatury dostępu współdzielonego (SAS).

Aby dowiedzieć się, jak wyświetlić klucze dostępu do konta i skopiować ciąg połączenia, zobacz Zarządzanie kluczami dostępu do konta magazynu.

Ochrona kluczy dostępu

Klucze dostępu do konta magazynu są podobne do hasła głównego konta magazynu. Zawsze należy zachować ostrożność, aby chronić klucze dostępu. Użyj Azure Key Vault, aby bezpiecznie zarządzać kluczami i je obracać. Unikaj dystrybuowania kluczy dostępu do innych użytkowników, kodowania ich na zawsze lub zapisywania ich w dowolnym miejscu w postaci zwykłego tekstu, który jest dostępny dla innych użytkowników. Wywróć klucze, jeśli uważasz, że zostały naruszone.

Uwaga

Firma Microsoft zaleca używanie usługi Azure Active Directory (Azure AD) do autoryzowania żądań względem danych obiektów blob i kolejek, jeśli to możliwe, zamiast klucza wspólnego. Usługa Azure AD zapewnia doskonałe zabezpieczenia i łatwość użycia klucza wspólnego. Aby uzyskać więcej informacji na temat autoryzowania dostępu do danych za pomocą usługi Azure AD, zobacz Autoryzowaniedostępu do kolejek i obiektów blob platformy Azure przy użyciu Azure Active Directory .

Przechowywanie parametrów połączenia

Aplikacja musi uzyskać dostęp do parametrów połączenia w czasie wykonywania, aby autoryzować żądania do usługi Azure Storage. Dostępnych jest kilka opcji przechowywania parametrów połączenia:

  • Możesz przechowywać swoje ciągi połączenia w zmiennej środowiskowej.
  • Aplikacja uruchomiona na komputerze stacjonarnym lub urządzeniu może przechowywać te ciągi połączenia wapp.config lubweb.config pliku. Dodaj ciąg połączenia do sekcji AppSettings w tych plikach.
  • Aplikacja uruchomiona w usłudze w chmurze platformy Azure może przechowywać ciąg połączenia w pliku schematu konfiguracji usługi platformy Azure (cscfg). Dodaj ciąg połączenia do sekcji ConfigurationSettings pliku konfiguracji usługi.

Przechowywanie parametrów połączenia w pliku konfiguracji ułatwia aktualizowanie parametrów połączenia w celu przełączania się między emulatorem magazynu Azurite a kontem usługi Azure Storage w chmurze. Wystarczy edytować ciąg połączenia, aby wskazać środowisko docelowe.

Możesz użyć tej Microsoft Azure Menedżer konfiguracji, aby uzyskać dostęp do parametrów połączenia w czasie wykonywania, niezależnie od tego, gdzie aplikacja jest uruchomiona.

Konfigurowanie parametrów połączenia dla aplikacji Azurite

Emulator obsługuje pojedyncze stałe konto i dobrze znane klucze uwierzytelniania na potrzeby uwierzytelniania klucza współużytkowanego. To konto i klucz są jedynymi poświadczeniami klucza współużytkowanego, które mogą być używane z emulatorem. Są to:

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

Uwaga

Klucz uwierzytelniania obsługiwany przez emulator jest przeznaczony tylko do testowania funkcji kodu uwierzytelniania klienta. Nie ma żadnego celu zabezpieczeń. Nie można używać konta magazynu produkcyjnego i klucza z emulatorem. Nie należy używać konta deweloperskiego z danymi produkcyjnymi.

Emulator obsługuje tylko połączenia za pośrednictwem protokołu HTTP. Protokół HTTPS jest jednak zalecanym protokołem do uzyskiwania dostępu do zasobów w środowisku produkcyjnym usługi Azure Storage.

Nawiązywanie połączenia z kontem emulatora przy użyciu skrótu

Najprostszym sposobem nawiązywania połączenia z emulatorem z aplikacji jest skonfigurowanie parametrów połączenia w pliku konfiguracji aplikacji, który odwołuje się do skrótu UseDevelopmentStorage=true . Skrót jest równoważny z pełnymi parametrami połączenia dla emulatora, który określa nazwę konta, klucz konta i punkty końcowe emulatora dla każdej usługi Azure Storage:

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;

Poniższy fragment kodu platformy .NET pokazuje, jak można użyć skrótu z metody, która pobiera parametry połączenia. Na przykład Konstruktor BlobContainerClient (String, String) przyjmuje parametry połączenia.

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

Upewnij się, że emulator jest uruchomiony przed wywołaniem kodu w fragmencie.

Aby uzyskać więcej informacji na temat aplikacji Azurite, zobacz Use the Azurite emulator for local Azure Storage development (Korzystanie z emulatora Azuritena Storage Azure).

Konfigurowanie parametrów połączenia dla konta usługi Azure Storage

Aby utworzyć ciąg połączenia dla konta usługi Azure Storage, użyj następującego formatu. Wskaż, czy chcesz nawiązać połączenie z kontem magazynu za pośrednictwem protokołu HTTPS (zalecane), czy HTTP, zastąp element nazwą konta magazynu i zastąp element swoim myAccountName myAccountKey kluczem dostępu do konta:

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

Na przykład twoje ciągi połączenia mogą wyglądać podobnie do:

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

Mimo że usługa Azure Storage obsługuje protokoły HTTP i HTTPS w ramach parametrów połączenia, zdecydowanie zaleca się użycie protokołu HTTPS.

Porada

Parametry połączenia konta magazynu można znaleźć w Azure Portal . Przejdź do pozycji USTAWIENIA Klucze dostępu w bloku menu konta magazynu, aby wyświetlić parametry połączenia dla podstawowych i pomocniczych kluczy > dostępu.

Tworzenie parametrów połączenia przy użyciu sygnatury dostępu współdzielonych

Jeśli masz adres URL sygnatury dostępu współdzielonego (SAS), który umożliwia dostęp do zasobów na koncie magazynu, możesz użyć SAS w parametrach połączenia. Ze względu na to, że sygnatura dostępu współdzielonego zawiera informacje wymagane do uwierzytelnienia żądania, parametry połączenia z sygnaturą dostępu współdzielonego udostępniają protokół, punkt końcowy usługi oraz poświadczenia niezbędne do uzyskania dostępu do zasobu.

Aby utworzyć parametry połączenia, które zawierają sygnaturę dostępu współdzielonego, Określ ciąg w następującym formacie:

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

Każdy punkt końcowy usługi jest opcjonalny, chociaż parametry połączenia muszą zawierać co najmniej jedną.

Uwaga

Najlepszym rozwiązaniem jest użycie protokołu HTTPS z sygnaturą dostępu współdzielonego.

Jeśli określisz sygnaturę dostępu współdzielonego w parametrach połączenia w pliku konfiguracji, może być konieczne zakodowanie znaków specjalnych w adresie URL.

Przykład sygnatury dostępu współdzielonego usługi

Oto przykład parametrów połączenia, które obejmują sygnaturę dostępu współdzielonego usługi dla magazynu obiektów blob:

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

Oto przykład tego samego ciągu połączenia z kodowaniem znaków specjalnych:

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

Przykład SAS konta

Oto przykład parametrów połączenia, które obejmują sygnaturę dostępu współdzielonego konta dla obiektów blob i magazynu plików. Należy pamiętać, że punkty końcowe dla obu usług są określone:

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

Oto przykład tych samych parametrów połączenia z kodowaniem adresów 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

Tworzenie parametrów połączenia dla jawnego punktu końcowego magazynu

Możesz określić jawne punkty końcowe usługi w parametrach połączenia zamiast używać domyślnych punktów końcowych. Aby utworzyć parametry połączenia określające jawny punkt końcowy, określ pełny punkt końcowy usługi dla każdej usługi, w tym specyfikację protokołu (HTTPS (zalecane) lub HTTP) w następującym formacie:

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

Jednym ze scenariuszy, w którym można określić jawny punkt końcowy, jest zamapowanie punktu końcowego usługi Blob Storage na domenę niestandardową. W takim przypadku możesz określić niestandardowy punkt końcowy dla usługi Blob Storage w parametrach połączenia. Opcjonalnie możesz określić domyślne punkty końcowe dla innych usług, jeśli twoja aplikacja z nich korzysta.

Oto przykład parametrów połączenia, które określają jawny punkt końcowy dla Blob service:

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

W tym przykładzie określono jawne punkty końcowe dla wszystkich usług, w tym domenę niestandardową dla Blob service:

# 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>

Wartości punktu końcowego w parametrach połączenia są używane do konstruowania URI żądania do usług magazynu i dyktowania formy wszelkich URI zwracanych do kodu.

Jeśli punkt końcowy magazynu został zamapowany na domenę niestandardową i pominięto ten punkt końcowy z parametrów połączenia, nie będzie można użyć tych parametrów połączenia do uzyskania dostępu do danych w tej usłudze z poziomu kodu.

Aby uzyskać więcej informacji na temat konfigurowania domeny niestandardowej dla usługi Azure Storage, zobacz Mapowaniedomeny niestandardowej na punkt końcowy usługi Azure Blob Storage .

Ważne

Wartości punktu końcowego usługi w parametrach połączenia muszą być dobrze uformowane, w tym https:// (zalecane) lub http:// .

Tworzenie parametrów połączenia z sufiksem punktu końcowego

Aby utworzyć ciąg połączenia dla usługi magazynu w regionach lub wystąpieniach z różnymi sufiksami punktu końcowego, takimi jak Azure (Chiny) — 21Vianet lub Azure Government, użyj następującego formatu parametrów połączenia. Wskaż, czy chcesz nawiązać połączenie z kontem magazynu za pośrednictwem protokołu HTTPS (zalecane), czy HTTP, zastąp element nazwą konta magazynu, zastąp element swoim kluczem dostępu do konta i zastąp sufiksem myAccountName myAccountKey mySuffix URI:

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

Oto przykładowe ciągi połączenia dla usług magazynu w Azure (Chiny) — 21Vianet:

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

Analizowanie parametrów połączenia

Biblioteka programu Microsoft Azure Configuration Manager dla platformy .NET zawiera klasę do analizowania parametrów połączenia w pliku konfiguracji. Klasa CloudConfigurationManager analizuje ustawienia konfiguracji. Analizuje on ustawienia aplikacji klienckich uruchamianych na pulpicie, na urządzeniu przenośnym, na maszynie wirtualnej platformy Azure lub w usłudze w chmurze platformy Azure.

Aby odwołać się do CloudConfigurationManager pakietu, Dodaj następujące using dyrektywy:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage;

Oto przykład, w którym przedstawiono, jak pobrać parametry połączenia z pliku konfiguracji:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

Użycie programu Azure Configuration Manager jest opcjonalne. Można również użyć interfejsu API, takiego jak Klasa configurationmanager.NET Framework.

Następne kroki