Udostępnij przez


Utwórz poświadczenia do połączenia z usługą AWS S3 (tylko do odczytu)

W tym artykule opisano sposób tworzenia uwierzytelnienia magazynu w Unity Catalog w celu połączenia z AWS S3. Obsługa usługi S3 w usłudze Azure Databricks jest tylko do odczytu.

Poświadczenie magazynu zawiera długoterminowe poświadczenie chmury z dostępem do magazynu w chmurze. Podczas tworzenia lokalizacji zewnętrznych w Katalogu Unity odwołujesz się do poświadczeń magazynu i ścieżki magazynu w chmurze w celu zarządzania dostępem do magazynu zewnętrznego.

Aby uzyskać więcej informacji na temat poświadczeń magazynu i lokalizacji zewnętrznych, zobacz Connect to cloud object storage using Unity Catalog.

Aby uzyskać więcej informacji o innych opcjach magazynu w chmurze obsługiwanych przez Katalog Unity, zobacz Opcje magazynu w chmurze obsługiwane przez Katalog Unity.

Uwaga / Notatka

Mogą obowiązywać opłaty za transfer danych między chmurami. W przypadku korzystania z bezserwerowych obliczeń opłaty są naliczane zgodnie z zasadami transferu danych i łączności usługi Databricks.

Utwórz poświadczenie magazynu

Aby utworzyć poświadczenia magazynu na potrzeby dostępu do zasobnika S3, należy utworzyć rolę IAM platformy AWS, która autoryzuje dostęp do ścieżki zasobnika S3 i odwołuje się do tej roli IAM w definicji poświadczeń magazynu.

Wymagania

W usłudze Azure Databricks:

  • Obszar roboczy usługi Azure Databricks z obsługą Unity Catalog.
  • CREATE STORAGE CREDENTIAL uprawnienie do repozytorium metadanych Unity Catalog przypisanego do obszaru roboczego. Administratorzy kont i administratorzy magazynu metadanych mają domyślnie te uprawnienia.

Na koncie platformy AWS:

  • Zasobnik S3 spełniający następujące wymagania:

    • Nie używaj notacji kropkowej (na przykład incorrect.bucket.name.notation) w nazwach zasobnika S3. Mimo że platforma AWS zezwala na kropki w nazwach zasobników, usługa Azure Databricks nie obsługuje zasobników S3 z notacją kropką. Wiadra zawierające kropki mogą powodować problemy ze zgodnością z funkcjami, takimi jak Delta Sharing, z powodu niepowodzeń weryfikacji certyfikatu SSL. Aby uzyskać więcej informacji, zobacz najlepsze rozwiązania dotyczące nazewnictwa zasobników platformy AWS.
    • Zasobnik nie może mieć dołączonej listy kontroli dostępu S3.
  • Możliwość tworzenia ról IAM.

Krok 1. Tworzenie roli IAM

W AWS utwórz rolę IAM, która zapewnia dostęp do zasobnika S3, do którego mają uzyskiwać dostęp użytkownicy. Ta rola IAM musi być zdefiniowana na tym samym koncie co bucket S3.

Wskazówka

Jeśli masz już utworzoną rolę IAM zapewniającą ten dostęp, możesz pominąć ten krok i przejść bezpośrednio do kroku 2: Podaj usłudze Azure Databricks szczegóły roli IAM.

  1. Utwórz rolę IAM, która umożliwia dostęp do bucketu S3.

    Tworzenie roli to proces dwuetapowy. W tym kroku utworzysz rolę, dodając tymczasową politykę relacji zaufania i zastępczy identyfikator zewnętrzny, który następnie modyfikujesz po utworzeniu poświadczeń magazynowych w usłudze Azure Databricks.

    Należy zmodyfikować zasady zaufania po utworzeniu roli, ponieważ Twoja rola musi być samoprzydzielająca się (to znaczy, że musi być skonfigurowana, aby sobie ufać). Rola musi zatem istnieć przed dodaniem deklaracji samozałożeń. Aby uzyskać informacje o samozwańczych rolach, zobacz ten artykuł na blogu Amazon.

    Ważne

    Usługa Databricks blokuje nowe i istniejące poświadczenia magazynu, opierając się na rolach IAM, które nie są samodzielnie przypisywane. Aby uzyskać szczegółowe informacje, zobacz Zasady samodzielnego przypisania ról.

    Aby utworzyć politykę, należy użyć symbolu zastępczego dla identyfikatora zewnętrznego.

    1. Utwórz rolę IAM przy użyciu niestandardowych zasad zaufania.

    2. W polu Zasady zaufania niestandardowego wklej następujący kod JSON zasad.

      Ta polityka ustanawia relację zaufania między kontami, aby Unity Catalog mógł przyjąć rolę dostępu do danych w bucket na rzecz użytkowników Databricks. Jest to określone przez ARN w Principal sekcji. Jest to wartość statyczna, która odwołuje się do roli utworzonej przez usługę Databricks.

      Polityka ustawia identyfikator zewnętrzny na 0000 jako symbol zastępczy. Zaktualizujesz to do zewnętrznego identyfikatora dla poświadczeń dostępu do magazynu w późniejszym kroku.

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q"]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "StringEquals": {
                "sts:ExternalId": "0000"
              }
            }
          }
        ]
      }
      
    3. Pomiń konfigurację zasad uprawnień. Wrócisz, żeby to dodać w późniejszym kroku.

    4. Zapisz rolę IAM.

  2. Utwórz następującą politykę IAM na tym samym koncie co bucket S3, zastępując podane wartości:

    • <BUCKET>: nazwa zasobnika S3.
    • <KMS-KEY>: opcjonalne. Jeśli szyfrowanie jest włączone, podaj nazwę klucza usługi KMS, który szyfruje zawartość zasobnika S3. Jeśli szyfrowanie jest wyłączone, usuń całą sekcję KMS w polityce IAM.
    • <AWS-ACCOUNT-ID>: Identyfikator konta AWS (a nie konta usługi Databricks).
    • <AWS-IAM-ROLE-NAME>: nazwa roli IAM platformy AWS utworzonej w poprzednim kroku.

    Ta polityka IAM przyznaje dostęp do odczytu i zapisu. Można również utworzyć politykę, która udziela dostępu tylko do odczytu. Może to być jednak niepotrzebne, ponieważ można oznaczyć poświadczenie dostępu do magazynu w trybie tylko do odczytu, a zostanie zignorowany wszelki dostęp do zapisu przyznany przez tę rolę IAM.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload"
          ],
          "Resource": ["arn:aws:s3:::<BUCKET>/*", "arn:aws:s3:::<BUCKET>"],
          "Effect": "Allow"
        },
        {
          "Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"],
          "Resource": ["arn:aws:kms:<KMS-KEY>"],
          "Effect": "Allow"
        },
        {
          "Action": ["sts:AssumeRole"],
          "Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"],
          "Effect": "Allow"
        }
      ]
    }
    

    Uwaga / Notatka

    Jeśli potrzebujesz bardziej restrykcyjnej polityki IAM dla Unity Catalog, skontaktuj się z zespołem ds. kont Azure Databricks w celu uzyskania pomocy.

  3. Utwórz politykę IAM dla zdarzeń dotyczących plików na tym samym koncie co bucket S3.

    Uwaga / Notatka

    Ten krok jest opcjonalny, ale zdecydowanie zalecany. Jeśli nie przyznasz usłudze Azure Databricks dostępu do konfigurowania zdarzeń plików w Twoim imieniu, musisz ręcznie skonfigurować zdarzenia plików dla każdej lokalizacji. Jeśli tego nie zrobisz, będziesz mieć ograniczony dostęp do kluczowych funkcji, które Databricks może udostępnić w przyszłości. Aby uzyskać więcej informacji na temat zdarzeń plików, zobacz (Zalecane) Włączanie zdarzeń plików dla lokalizacji zewnętrznej.

    Zasady zarządzania dostępem i tożsamościami udzielają uprawnień usługi Azure Databricks do aktualizowania konfiguracji powiadomień o zdarzeniach zasobnika, tworzenia tematu SNS, tworzenia kolejki SQS i subskrybowania kolejki SQS do tematu SNS. Są to wymagane zasoby dla funkcji korzystających ze zdarzeń plików. Zastąp <BUCKET> nazwą wiadra S3.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "ManagedFileEventsSetupStatement",
          "Effect": "Allow",
          "Action": [
            "s3:GetBucketNotification",
            "s3:PutBucketNotification",
            "sns:ListSubscriptionsByTopic",
            "sns:GetTopicAttributes",
            "sns:SetTopicAttributes",
            "sns:CreateTopic",
            "sns:TagResource",
            "sns:Publish",
            "sns:Subscribe",
            "sqs:CreateQueue",
            "sqs:DeleteMessage",
            "sqs:ReceiveMessage",
            "sqs:SendMessage",
            "sqs:GetQueueUrl",
            "sqs:GetQueueAttributes",
            "sqs:SetQueueAttributes",
            "sqs:TagQueue",
            "sqs:ChangeMessageVisibility",
            "sqs:PurgeQueue"
          ],
          "Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
        },
        {
          "Sid": "ManagedFileEventsListStatement",
          "Effect": "Allow",
          "Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
          "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
        },
        {
          "Sid": "ManagedFileEventsTeardownStatement",
          "Effect": "Allow",
          "Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
          "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
        }
      ]
    }
    
  4. Dołącz zasady IAM do roli IAM.

    Na karcie Uprawnienia roli dołącz utworzone przed chwilą zasady IAM.

Krok 2: Nadaj Azure Databricks szczegóły roli IAM

  1. W usłudze Azure Databricks zaloguj się do obszaru roboczego połączonego z magazynem metadanych Unity Catalog.

    Musisz mieć CREATE STORAGE CREDENTIAL uprawnienia. Zarówno role administratora magazynu metadanych, jak i administratora konta obejmują te uprawnienia.

  2. Kliknij ikonę Dane.Wykaz.

  3. Kliknij przycisk Dane >zewnętrzne, przejdź do karty Poświadczenia i wybierz pozycję Utwórz poświadczenia.

  4. Wybierz typ poświadczeńroli IAM platformy AWS.

  5. Wprowadź nazwę poświadczenia, ARN roli IAM, która autoryzuje Unity Catalog do uzyskiwania dostępu do lokalizacji magazynowej w chmurze, oraz opcjonalny komentarz.

  6. (Opcjonalnie) Jeśli chcesz, aby użytkownicy mieli dostęp tylko do odczytu do lokalizacji zewnętrznych korzystających z tego poświadczenia magazynu, w obszarze Opcje zaawansowane wybierz pozycję Tylko do odczytu. Aby uzyskać więcej informacji, zobacz Oznaczanie poświadczeń magazynu jako tylko do odczytu.

    Uwaga / Notatka

    Ponieważ usługa Azure Databricks zapewnia jedynie dostęp do odczytu do zasobników S3 przy użyciu danych uwierzytelniających magazynu, nie ma potrzeby ustawiania tej opcji.

  7. Kliknij pozycję Utwórz.

  8. W oknie dialogowym Utworzone poświadczenie magazynu skopiuj zewnętrzny identyfikator.

  9. Kliknij Gotowe.

  10. (Opcjonalnie) Powiąż poświadczenie dostępu do magazynu danych z określonymi obszarami roboczymi.

    Domyślnie każdy uprzywilejowany użytkownik może używać poświadczeń magazynowania w dowolnym obszarze roboczym dołączonym do magazynu metadanych. Jeśli chcesz zezwolić na dostęp tylko z określonych obszarów roboczych, przejdź do karty Obszary robocze i przypisz obszary robocze. Zobacz (Opcjonalnie) Przypisywanie poświadczeń magazynu konkretnym obszarom roboczym.

Możesz również utworzyć poświadczenia magazynu przy użyciu dostawcy narzędzia Terraform usługi Databricks i databricks_storage_credential.

Krok 3. Aktualizacja zasad relacji zaufania roli IAM

W usłudze AWS zmodyfikuj politykę relacji zaufania, aby dodać zewnętrzny identyfikator poświadczenia magazynu oraz aby była samozałożeniowa.

  1. Wróć do zapisanej roli IAM i przejdź do karty Relacje zaufania.

  2. Edytuj zasady relacji zaufania w następujący sposób:

    Dodaj następujący ARN do instrukcji „Allow”. Zastąp <YOUR-AWS-ACCOUNT-ID> rzeczywistym identyfikatorem konta oraz <THIS-ROLE-NAME> rzeczywistymi wartościami ról IAM.

    "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
    

    W instrukcji "sts:AssumeRole" zaktualizuj symbol zastępczy, zamieniając identyfikator zewnętrzny na identyfikator zewnętrzny poświadczeń magazynowych, który skopiowałeś w poprzednim kroku.

    "sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
    

    Polityka powinna teraz wyglądać podobnie do poniższej, a wartość zastępcza została zaktualizowana w celu użycia zewnętrznego identyfikatora, identyfikatora konta oraz wartości roli IAM dla poświadczeń magazynu.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q",
              "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
            ]
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
            }
          }
        }
      ]
    }
    

Krok 4. Weryfikowanie poświadczeń magazynu

Po wprowadzeniu zmian w zasadach zaufania roli IAM w kroku 3: Zaktualizuj zasady relacji zaufania roli IAM, sprawdź, czy rola IAM została prawidłowo skonfigurowana do użycia jako poświadczenie magazynu.

Uwaga / Notatka

Aby zweryfikować konfigurację, musisz być właścicielem poświadczeń magazynowych, administratorem metastore lub mieć CREATE EXTERNAL LOCATION uprawnienia do poświadczeń magazynowych.

  1. W usłudze Azure Databricks zaloguj się do obszaru roboczego połączonego z magazynem metadanych.

  2. Kliknij ikonę Dane.Wykaz.

  3. Kliknij przycisk Dane >zewnętrzne i przejdź do karty Poświadczenia.

    Alternatywnie, możesz kliknąć ikonę kółka zębatego. w górnej części okienka katalogu i wybrać pozycję Poświadczenia.

  4. Wybierz poświadczenie magazynu, które chcesz zweryfikować.

  5. Kliknij przycisk Weryfikuj konfigurację.

  6. Jeśli którykolwiek z testów nie powiedzie się, wróć do kroku 3. Zaktualizuj zasady relacji zaufania roli IAM i przejrzyj zasady zaufania roli IAM, aby skonfigurować je poprawnie.

Po zweryfikowaniu poświadczeń magazynu można użyć go do utworzenia lokalizacji zewnętrznej.

Polityka samowyznaczania i egzekwowania ról

30 czerwca 2023 r. AWS zaktualizował zasady zaufania roli IAM, aby wymagać, aby role IAM wyraźnie ufały samym sobie podczas STS:AssumeRole wywołań. W związku z tym usługa Databricks wymaga, aby role IAM platformy AWS dla poświadczeń magazynu były zakładane samodzielnie. Aby uzyskać szczegółowe informacje, zobacz ten wpis w blogu społeczności.

20 stycznia 2025 r. usługa Databricks zaczęła blokować użycie istniejących poświadczeń magazynu przy założeniu, że role IAM nie są samodzielne. Ten zakaz może przerwać obciążenia i zadania, które są uruchamiane przy użyciu poświadczeń innych niż własne.

Aby sprawdzić, czy rola IAM platformy AWS dla poświadczeń magazynu samodzielnie się zakłada, postępuj zgodnie z instrukcjami w kroku 4: Weryfikowanie poświadczeń magazynu. Jeśli kontrola Samodzielne przyjęcie roli nie powiedzie się, wróć do Krok 3: Zaktualizuj zasady relacji zaufania roli IAM i skonfiguruj ponownie zasady zaufania roli IAM, aby ufały samej sobie.

Jeśli w metastore masz wiele poświadczeń magazynu, które chcesz sprawdzić, użyj następującego notesu, aby zweryfikować możliwości samodzielnego przypisania wszystkich poświadczeń magazynu.

Samowystarczalny notatnik do weryfikacji poświadczeń magazynowania

Pobierz laptopa

(Opcjonalnie) Przypisywanie poświadczeń magazynu do określonych obszarów roboczych

Domyślnie poświadczenie magazynu jest dostępne ze wszystkich obszarów roboczych w metastore. Oznacza to, że jeśli użytkownik otrzymał uprawnienie (na przykład CREATE EXTERNAL LOCATION) na danym poświadczeniu pamięci, może korzystać z tego uprawnienia z dowolnego obszaru roboczego dołączonego do magazynu metadanych. Jeśli używasz obszarów roboczych do izolowania dostępu do danych użytkownika, możesz umożliwić dostęp do poświadczeń magazynowych tylko z określonych obszarów roboczych. Ta funkcja jest znana jako powiązanie obszaru roboczego lub izolacja poświadczeń przechowywania. Aby uzyskać więcej informacji, zobacz (Opcjonalnie) Przypisywanie poświadczeń do określonych obszarów roboczych.

Ograniczenia

Dalsze kroki