Konfigurowanie ciągów połączeń z usługą Azure Storage

Parametry połączenia zawiera informacje o autoryzacji wymagane przez aplikację do uzyskiwania dostępu do danych na koncie usługi Azure Storage w czasie wykonywania przy użyciu autoryzacji klucza współdzielonego. Można skonfigurować parametry połączenia w celu:

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

Aby dowiedzieć się, jak wyświetlać klucze dostępu do konta i kopiować parametry połączenia, zobacz Zarządzanie kluczami dostępu do konta magazynu.

Ochrona kluczy dostępu

Klucze dostępu do konta magazynu zapewniają pełny dostęp do konfiguracji konta magazynu, a także danych. Zawsze należy zachować ostrożność, aby chronić klucze dostępu. Usługa Azure Key Vault umożliwia bezpieczne zarządzanie kluczami i obracanie ich. Dostęp do klucza współużytkowanego zapewnia użytkownikowi pełny dostęp do konfiguracji konta magazynu i jego danych. Dostęp do kluczy udostępnionych powinien być starannie ograniczony i monitorowany. Używaj tokenów SAS z ograniczonym zakresem dostępu w scenariuszach, w których nie można używać autoryzacji opartej na identyfikatorze Entra firmy Microsoft. Unikaj kodowania twardych kluczy dostępu lub zapisywania ich w dowolnym miejscu w postaci zwykłego tekstu, który jest dostępny dla innych osób. Obracanie kluczy, jeśli uważasz, że mogły zostać naruszone.

Ważne

Firma Microsoft zaleca używanie identyfikatora Entra firmy Microsoft do autoryzacji żądań względem danych obiektów blob, kolejek i tabel, jeśli to możliwe, zamiast używania kluczy konta (autoryzacja klucza współdzielonego). Autoryzacja za pomocą identyfikatora Entra firmy Microsoft zapewnia doskonałe zabezpieczenia i łatwość użycia w przypadku autoryzacji klucza współdzielonego. Aby uzyskać więcej informacji na temat korzystania z autoryzacji firmy Microsoft z aplikacji, zobacz Jak uwierzytelniać aplikacje platformy .NET za pomocą usług platformy Azure. W przypadku udziałów plików platformy Azure protokołu SMB firma Microsoft zaleca korzystanie z integracji usług lokalna usługa Active Directory Domain Services (AD DS) lub uwierzytelniania protokołu Kerberos firmy Microsoft Entra.

Aby uniemożliwić użytkownikom dostęp do danych na koncie magazynu przy użyciu klucza współużytkowanego, możesz uniemożliwić autoryzację klucza współdzielonego dla konta magazynu. Najlepszym rozwiązaniem w zakresie zabezpieczeń jest szczegółowy dostęp do danych z najmniejszymi uprawnieniami wymaganymi. Autoryzacja oparta na identyfikatorze Entra firmy Microsoft powinna być używana w scenariuszach obsługujących protokół OAuth. Protokół Kerberos lub SMTP powinien być używany dla usługi Azure Files za pośrednictwem protokołu SMB. W przypadku usługi Azure Files za pośrednictwem rest można używać tokenów SAS. Dostęp do klucza współużytkowanego powinien być wyłączony, jeśli nie jest wymagany, aby zapobiec jego nieumyślnemu użyciu. Aby uzyskać więcej informacji, zobacz Zapobieganie autoryzacji klucza współdzielonego dla konta usługi Azure Storage.

Aby chronić konto usługi Azure Storage przy użyciu zasad dostępu warunkowego firmy Microsoft Entra, musisz nie zezwalać na autoryzację klucza współdzielonego dla konta magazynu.

Jeśli wyłączono dostęp do klucza współużytkowanego i w dziennikach diagnostycznych jest widoczna autoryzacja klucza współużytkowanego, oznacza to, że zaufany dostęp jest używany do uzyskiwania dostępu do magazynu. Aby uzyskać więcej informacji, zobacz Zaufany dostęp do zasobów zarejestrowanych w subskrypcji.

Przechowywanie parametry połączenia

Aplikacja musi uzyskać dostęp do parametry połączenia w czasie wykonywania, aby autoryzować żądania wysyłane do usługi Azure Storage. Istnieje kilka opcji przechowywania kluczy dostępu do konta lub parametry połączenia:

  • Klucze kont można bezpiecznie przechowywać w usłudze Azure Key Vault. Aby uzyskać więcej informacji, zobacz About Azure Key Vault managed storage account keys (Informacje o kluczach konta zarządzanego magazynu usługi Azure Key Vault).
  • Parametry połączenia można przechowywać w zmiennej środowiskowej.
  • Aplikacja może przechowywać parametry połączenia w pliku app.config lub web.config. Dodaj parametry połączenia do sekcji App Ustawienia w tych plikach.

Ostrzeżenie

Przechowywanie kluczy dostępu do konta lub parametry połączenia w postaci zwykłego tekstu stanowi zagrożenie bezpieczeństwa i nie jest zalecane. Zapisz klucze konta w zaszyfrowanym formacie lub przeprowadź migrację aplikacji, aby używać autoryzacji firmy Microsoft w celu uzyskania dostępu do konta magazynu.

Konfigurowanie parametry połączenia dla Azurite

Emulator obsługuje jedno stałe konto i dobrze znany klucz uwierzytelniania na potrzeby uwierzytelniania za pomocą klucza wspólnego. To konto i klucz to jedyne poświadczenia klucza współużytkowanego dozwolone do użycia z emulatorem. Są to:

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

Uwaga

Klucz uwierzytelniania obsługiwany przez emulator jest przeznaczony tylko do testowania funkcjonalności kodu uwierzytelniania klienta. Nie służy ona żadnemu celowi zabezpieczeń. Nie można użyć konta magazynu produkcyjnego i klucza z emulatorem. Nie należy używać konta programistycznego z danymi produkcyjnymi.

Emulator obsługuje tylko połączenie za pośrednictwem protokołu HTTP. Jednak protokół HTTPS jest zalecanym protokołem umożliwiającym uzyskiwanie dostępu do zasobów na produkcyjnym koncie usługi Azure Storage.

Połączenie do konta emulatora przy użyciu skrótu

Najprostszym sposobem nawiązania połączenia z emulatorem z aplikacji jest skonfigurowanie parametry połączenia w pliku konfiguracji aplikacji, który odwołuje się do skrótu UseDevelopmentStorage=true. Skrót jest odpowiednikiem pełnego parametry połączenia emulatora, który określa nazwę konta, klucz konta i punkty końcowe emulatora dla każdej z usług 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 przyjmuje parametry połączenia. Na przykład konstruktor BlobContainerClient(String, String) przyjmuje parametry połączenia.

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

Przed wywołaniem kodu we fragmencie kodu upewnij się, że emulator jest uruchomiony.

Aby uzyskać więcej informacji na temat platformy Azurite, zobacz Use the Azurite emulator for local Azure Storage development (Używanie emulatora Azurite do lokalnego programowania w usłudze Azure Storage).

Konfigurowanie parametry połączenia dla konta usługi Azure Storage

Aby utworzyć parametry 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) lub HTTP, zastąp ciąg nazwą konta magazynu i zastąp myAccountNamemyAccountKey ciąg kluczem dostępu do konta:

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

Na przykład parametry połączenia może wyglądać podobnie do następujących:

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

Mimo że usługa Azure Storage obsługuje zarówno protokół HTTP, jak i HTTPS w parametry połączenia, zdecydowanie zaleca się użycie protokołu HTTPS.

Napiwek

Parametry połączenia konta magazynu można znaleźć w witrynie Azure Portal. Przejdź do pozycji Zabezpieczenia i klucze dostępu do sieci>w ustawieniach konta magazynu, aby wyświetlić parametry połączenia dla kluczy dostępu podstawowego i pomocniczego.

Tworzenie parametry połączenia przy użyciu sygnatury dostępu współdzielonego

Jeśli masz adres URL sygnatury dostępu współdzielonego (SAS), który udziela dostępu do zasobów na koncie magazynu, możesz użyć sygnatury dostępu współdzielonego w parametry połączenia. Ponieważ sygnatura dostępu współdzielonego zawiera informacje wymagane do uwierzytelnienia żądania, parametry połączenia z sygnaturą dostępu współdzielonego udostępnia protokół, punkt końcowy usługi i niezbędne poświadczenia dostępu do zasobu.

Aby utworzyć parametry połączenia, który zawiera 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 musi zawierać co najmniej jeden punkt końcowy.

Uwaga

Używanie protokołu HTTPS z sygnaturą dostępu współdzielonego jest zalecane jako najlepsze rozwiązanie.

Jeśli określasz sygnaturę dostępu współdzielonego w parametry 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 parametry połączenia, który zawiera sygnaturę dostępu współdzielonego usługi dla usługi Blob Storage:

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 parametry połączenia z kodowaniem adresu 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

Przykład sygnatury dostępu współdzielonego konta

Oto przykład parametry połączenia, który zawiera sygnaturę dostępu współdzielonego konta dla usługi Blob i File Storage. Należy pamiętać, że określono punkty końcowe dla obu usług:

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 tego samego parametry połączenia z kodowaniem adresu 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 parametry połączenia dla jawnego punktu końcowego magazynu

Możesz określić jawne punkty końcowe usługi w parametry połączenia zamiast używać domyślnych punktów końcowych. Aby utworzyć parametry połączenia, który określa jawny punkt końcowy, określ pełny punkt końcowy usługi dla każdej usługi, w tym specyfikację protokołu (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 parametry połączenia. Opcjonalnie możesz określić domyślne punkty końcowe dla innych usług, jeśli aplikacja ich używa.

Oto przykład parametry połączenia, który określa jawny punkt końcowy dla usługi 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 usługi 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 punktów końcowych w parametry połączenia są używane do konstruowania identyfikatorów URI żądań w usługach magazynu i dyktowania formy dowolnych identyfikatorów URI, które są zwracane do kodu.

Jeśli punkt końcowy magazynu został zamapowany na domenę niestandardową i pominięto ten punkt końcowy z parametry połączenia, nie będzie można użyć tej parametry połączenia, aby uzyskać dostęp 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 Mapowanie domeny niestandardowej na punkt końcowy usługi Azure Blob Storage.

Ważne

Wartości punktów końcowych usługi w parametry połączenia muszą być poprawnie sformułowanymi identyfikatorami URI, w tym https:// (zalecane) lub http://.

Tworzenie parametry połączenia z sufiksem punktu końcowego

Aby utworzyć parametry połączenia dla usługi magazynu w regionach lub wystąpieniach z różnymi sufiksami punktów końcowych, takimi jak platforma Microsoft Azure obsługiwana przez platformę 21Vianet lub Azure Government, użyj następującego formatu parametry połączenia. Wskaż, czy chcesz nawiązać połączenie z kontem magazynu za pośrednictwem protokołu HTTPS (zalecane) lub HTTP, zastąp ciąg nazwą konta magazynu, zastąp myAccountKey ciąg kluczem dostępu do konta i zastąp myAccountNamemySuffix sufiksem identyfikatora URI:

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

Oto przykład parametry połączenia dla usług magazynu na platformie Azure obsługiwanych przez firmę 21Vianet:

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

Autoryzowanie dostępu za pomocą klucza wspólnego

Aby dowiedzieć się, jak autoryzować dostęp do usługi Azure Storage przy użyciu klucza konta lub parametry połączenia, zobacz jeden z następujących artykułów:

Następne kroki