Nawiązywanie połączenia z usługą Azure Blob Storage przy użyciu protokołu SSH File Transfer Protocol (SFTP)

W tym artykule pokazano, jak bezpiecznie nawiązać połączenie z punktem końcowym usługi Blob Storage konta usługi Azure Storage przy użyciu klienta SFTP. Po nawiązaniu połączenia można przekazywać i pobierać pliki, a także modyfikować listy kontroli dostępu (ACL) w plikach i folderach.

Aby dowiedzieć się więcej o obsłudze protokołu SFTP dla usługi Azure Blob Storage, zobacz Protokół SSH File Transfer Protocol (SFTP) w usłudze Azure Blob Storage.

Wymagania wstępne

Łączenie klienta SFTP

Aby bezpiecznie nawiązać połączenie, a następnie przesłać pliki, możesz użyć dowolnego klienta SFTP. W poniższym przykładzie pokazano sesję programu Windows PowerShell korzystającą z protokołu Open SSH.

PS C:\Users\temp> sftp contoso4.contosouser@contoso4.blob.core.windows.net

Nazwa użytkownika SFTP to storage_account_name.username. W poprzednim przykładzie element storage_account_name to „contoso4”, a element username to „contosouser”. Połączona nazwa użytkownika ma postać „contoso4.contosouser”. Punkt końcowy usługi blob to "contoso4.blob.core.windows.net".

Aby ukończyć połączenie, może być konieczne odpowiadanie na co najmniej jeden monit. Na przykład, jeśli skonfigurowałeś lokalnego użytkownika z uwierzytelnianiem hasła, zostaniesz poproszony o wpisanie tego hasła. Może zostać również wyświetlony monit o zaufanie do klucza hosta. Prawidłowe klucze hosta są publikowane tutaj.

Uwaga

SFTP działa nad Blob Storage endpointem (blob.core.windows.net), a nie nad Data Lake Storage endpointem (dfs.core.windows.net). W związku z tym punkty końcowe usługi Data Lake Storage, takie jak contoso4.contosouser@contoso4.dfs.core.windows.net nie są obsługiwane.

Nawiązywanie połączenia przy użyciu domeny niestandardowej

Aby połączyć się z punktem końcowym usługi Blob przy użyciu domeny niestandardowej, użyj parametrów połączenia myaccount.myuser@customdomain.com. Jeśli nie określisz katalogu domowego dla użytkownika, użyj parametry połączenia myaccount.mycontainer.myuser@customdomain.com.

Ważne

Upewnij się, że Twój dostawca DNS nie wysyła żądań proxy, ponieważ taka akcja może spowodować wygaśnięcie czasu próby połączenia.

Aby dowiedzieć się, jak zamapować domenę niestandardową na punkt końcowy usługi blob, zobacz Mapowanie domeny niestandardowej na punkt końcowy usługi Azure Blob Storage.

Nawiązywanie połączenia przy użyciu prywatnego punktu końcowego

Aby połączyć się z punktem końcowym usługi Blob przy użyciu prywatnego punktu końcowego, użyj parametrów połączenia myaccount.myuser@myaccount.privatelink.blob.core.windows.net. Jeśli nie określisz katalogu domowego dla użytkownika, użyj myaccount.mycontainer.myuser@myaccount.privatelink.blob.core.windows.net.

Uwaga

Upewnij się, że zmieniasz konfigurację sieci na Włączoną dla wybranych sieci wirtualnych i adresów IP, a następnie wybierz swój prywatny punkt końcowy. W przeciwnym razie punkt końcowy usługi blob pozostaje publicznie dostępny.

Nawiązywanie połączenia przy użyciu routingu internetowego

Aby połączyć się z punktem końcowym usługi Blob za pomocą routingu internetowego, użyj parametrów połączenia myaccount.myuser@myaccount-internetrouting.blob.core.windows.net. Jeśli nie określisz katalogu domowego dla użytkownika, użyj myaccount.mycontainer.myuser@myaccount-internetrouting.blob.core.windows.net.

Transfer danych

Po nawiązaniu połączenia możesz przekazywać i pobierać pliki. Poniższy przykład przekazuje plik o nazwie logfile.txt przy użyciu aktywnej sesji Open SSH.

sftp> put logfile.txt
Uploading logfile.txt to /mydirectory/logfile.txt
logfile.txt
        100%    19    0.2kb/S    00.00

Po zakończeniu transferu możesz wyświetlić plik i zarządzać nim w witrynie Azure Portal.

Zrzut ekranu przedstawiający przekazany plik widoczny na koncie przechowywania.

Uwaga

Portal Azure korzysta z interfejsu API REST Blob oraz interfejsu API REST Data Lake Storage. Możliwość interakcji z przesłanym plikiem w Portalu Azure pokazuje współdziałanie między SFTP i REST.

Zapoznaj się z dokumentacją klienta SFTP, aby uzyskać wskazówki dotyczące nawiązywania połączeń i transferowania plików.

Wznów przesyłanie

Funkcja ponownego przekazywania dla usługi Azure Blob Storage SFTP jest teraz ogólnie dostępna. Ta funkcja pozwala wznowić przesyłanie plików od momentu awarii w przypadku częściowych awarii transferu, co oszczędza czas i zmniejsza zużycie przepustowości sieci. Azure Blob Storage SFTP obsługuje następujące tryby transferu SFTP:

  • Zapis: ten tryb umożliwia klientowi kontynuowanie przekazywania przez dodanie danych do istniejącego pliku z określonego punktu bez tworzenia nowego pliku.
  • Pisanie i tworzenie: ten tryb umożliwia klientowi wznowienie przesyłania, dodając do istniejącego pliku lub tworząc nowy, jeśli nie istnieje, zapewniając elastyczność, gdy plik nie jest początkowo obecny.
  • Dołączanie: ten tryb dodaje dane na końcu istniejącego pliku bez zastępowania bieżącej zawartości. Wcześniej ta funkcja obsługiwała w wersji zapoznawczej tylko tryb dołączania, co ograniczało możliwość wznawiania przesyłania w klientach SFTP, które nie obsługują trybu dołączania. Wraz z wprowadzeniem do ogólnej dostępności usługa Azure Blob Storage SFTP obsługuje teraz tryby write oraz write + create, co jest korzystne dla użytkowników korzystających z klientów SFTP bez trybu dołączania.

Uwaga

Wznawialne przesyłanie jest obsługiwane tylko w przypadku obiektów blob utworzonych przy użyciu protokołu SFTP. Nie można wznowić przekazywania istniejących obiektów blob utworzonych przy użyciu protokołu innego niż SFTP, takiego jak REST.

Modyfikowanie listy ACL pliku lub katalogu

Możesz zmodyfikować poziom uprawnień właściciela użytkownika, grupy właściciela i wszystkich innych użytkowników listy kontroli dostępu za pomocą klienta SFTP. Możesz również zmienić użytkownika i grupę będącą właścicielem. Aby dowiedzieć się więcej na temat obsługi ACL dla klientów SFTP, zobacz ACLs.

Uwaga

Użytkownicy będący właścicielami mogą teraz również modyfikować właściciela grupy i uprawnienia obiektu blob lub katalogu bez posiadania uprawnień do kontenera. To ulepszenie zostało dodane podczas fazy ogólnej dostępności ACL dla użytkowników lokalnych. Dla każdego użytkownika, który nie jest właścicielem, uprawnienia kontenera nadal są wymagane.

Modyfikuj uprawnienia

Aby zmienić poziom uprawnień użytkownika, właściciela grupy lub wszystkich innych użytkowników listy ACL, użytkownik lokalny musi mieć Modify Permission uprawnienia. Zobacz Udostępnij uprawnienia dla kontenerów.

W poniższym przykładzie ACL katalogu jest wyświetlana na konsolę. Następnie używa polecenia, chmod aby ustawić ACL na .777 Każdy 7 jest formą liczbową rwx (czytanie, pisanie i wykonywanie). Daje więc 777 uprawnienia do odczytu, zapisu i wykonywania dla użytkownika, właściciela grupy i wszystkich innych użytkowników. W tym przykładzie zaktualizowana lista ACL jest wyświetlana na konsoli. Aby dowiedzieć się więcej na temat liczbowych i krótkich form ACL, zobacz Krótkie formy uprawnień.

sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chmod 777 dir1
Changing mode on /dir1
sftp> ls -l
drwxrwxrwx     1234     5678                0 Mon, 08 Jan 2024 16:54:06 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2

Uwaga

Dodawanie lub modyfikowanie wpisów ACL dla użytkowników o nazwie, grup o nazwie i nazwanych zasad bezpieczeństwa nie jest jeszcze obsługiwane.

Zmień użytkownika właściciela

Aby zmienić użytkownika będącego właścicielem katalogu lub obiektu blob, użytkownik lokalny musi mieć uprawnienia Modify Ownership. Zobacz Udostępnij uprawnienia dla kontenerów.

W poniższym przykładzie ACL katalogu jest wyświetlana na konsolę. Identyfikator właściciela to 0. W tym przykładzie polecenie chown używane jest do ustawienia identyfikatora użytkownika będącego właścicielem na 1234 oraz do wyświetlenia tej zmiany w konsoli.

sftp> ls -l
drwxr-x---        0        0                0 Mon, 08 Jan 2024 16:00:12 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chown 1234 dir1
Changing owner on /dir1
sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp>

Zmienianie grupy właścicielskiej

Aby zmienić grupę będącą właścicielem katalogu lub obiektu blob, użytkownik lokalny musi mieć Modify Ownership uprawnienia. Zobacz Udostępnij uprawnienia dla kontenerów.

W poniższym przykładzie ACL katalogu jest wyświetlana na konsolę. Identyfikator grupy właścicieli to 0. W tym przykładzie użyto polecenia chgrp, aby ustawić identyfikator grupy właściciela na 5678 i wyświetlić zmianę w konsoli.

sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chgrp 5678 dir1
Changing group on /dir1
sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2