Udostępnij za pośrednictwem


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łącz się z emulatorem 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.

Ważne

Aby uzyskać optymalne zabezpieczenia, firma Microsoft zaleca używanie identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi w celu autoryzowania żądań względem danych obiektów blob, kolejek i tabel, jeśli to możliwe. Autoryzacja przy użyciu identyfikatora Entra firmy Microsoft i tożsamości zarządzanych zapewnia doskonałe zabezpieczenia i łatwość użycia w przypadku autoryzacji klucza współdzielonego. Aby dowiedzieć się więcej o tożsamościach zarządzanych, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure. Aby zapoznać się z przykładem włączania i używania tożsamości zarządzanej dla aplikacji platformy .NET, zobacz Authenticating Azure-hosted apps to Azure resources with .NET (Uwierzytelnianie aplikacji hostowanych na platformie Azure w zasobach platformy Azure przy użyciu platformy .NET).

W przypadku zasobów hostowanych poza platformą Azure, takich jak aplikacje lokalne, można używać tożsamości zarządzanych za pośrednictwem usługi Azure Arc. Na przykład aplikacje uruchomione na serwerach z obsługą usługi Azure Arc mogą używać tożsamości zarządzanych do łączenia się z usługami platformy Azure. Aby dowiedzieć się więcej, zobacz Uwierzytelnianie w odniesieniu do zasobów platformy Azure za pomocą serwerów z obsługą usługi Azure Arc.

W przypadku scenariuszy, w których są używane sygnatury dostępu współdzielonego (SAS), firma Microsoft zaleca używanie sygnatury dostępu współdzielonego delegowania użytkowników. Sygnatura dostępu współdzielonego delegowania użytkownika jest zabezpieczona przy użyciu poświadczeń usługi Microsoft Entra zamiast klucza konta. Aby dowiedzieć się więcej o sygnaturach dostępu współdzielonego, zobacz Udzielanie ograniczonego dostępu do danych za pomocą sygnatur dostępu współdzielonego. Aby zapoznać się z przykładem tworzenia i używania sygnatury dostępu współdzielonego delegowania użytkownika za pomocą platformy .NET, zobacz Tworzenie sygnatury dostępu współdzielonego delegowania użytkownika dla obiektu blob za pomocą platformy .NET.

Ochrona kluczy dostępu

Klucze dostępu do konta magazynu zapewniają pełny dostęp do danych konta magazynu i możliwość generowania tokenów SAS. 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 danych konta magazynu. Dostęp do kluczy udostępnionych powinien być starannie ograniczony i monitorowany. Używaj tokenów SAS delegowania użytkowników 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

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 korzystająca z tożsamości zarządzanych 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 dzierżawie firmy Microsoft Entra.

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 AppSettings 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.

Nawiązywanie połączenia z kontem 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 myAccountName myAccountKey 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 myAccountName mySuffix 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