Delen via


Een opslagreferentie maken om verbinding te maken met AWS S3 (alleen-lezen)

In dit artikel wordt beschreven hoe u opslagreferenties maakt in Unity Catalog om verbinding te maken met AWS S3. Ondersteuning voor S3 in Azure Databricks is alleen lezen.

Een opslagreferentie bevat een langetermijnreferentie voor de cloud met toegang tot cloudopslag. U verwijst naar een opslagreferentie en het cloudopslagpad wanneer u externe locaties in Unity Catalog maakt om de toegang tot externe opslag te beheren.

Zie Verbinding maken met cloudobjectopslag met behulp van Unity Catalog voor meer informatie over opslagreferenties en externe locaties.

Zie Cloudopslagopties die worden ondersteund door Unity Catalog voor meer informatie over andere cloudopslagopties die worden ondersteund door Unity Catalog.

Opmerking

Kosten voor gegevensoverdracht tussen de cloud kunnen van toepassing zijn. Wanneer u serverloze berekeningen gebruikt, wordt u gefactureerd volgens het Databricks-beleid voor gegevensoverdracht en connectiviteit.

De opslagreferentie maken

Als u een opslagreferentie wilt maken voor toegang tot een S3-bucket, maakt u een AWS IAM-rol die toegang verleent tot het S3-bucketpad en verwijst naar de IAM-rol in de definitie van de opslagreferentie.

Behoeften

In Azure Databricks:

  • Azure Databricks-werkruimte ingeschakeld voor Unity Catalog.
  • CREATE STORAGE CREDENTIAL privilege op de Unity Catalog-metastore gekoppeld aan de werkruimte. Accountbeheerders en metastore-beheerders hebben deze bevoegdheid standaard.

In uw AWS-account:

  • Een S3-bucket die voldoet aan de volgende vereisten:

    • Gebruik geen punt notatie (bijvoorbeeld incorrect.bucket.name.notation) in S3-bucketnamen. Hoewel AWS puntjes in bucketnamen toestaat, biedt Azure Databricks geen ondersteuning voor S3-buckets met punt notatie. Buckets met puntjes kunnen compatibiliteitsproblemen veroorzaken met functies zoals Delta Sharing vanwege validatiefouten in SSL-certificaten. Voor meer informatie, zie de aanbevolen procedures voor de naamgeving van AWS-buckets.
    • Aan de bucket kan geen S3-toegangsbeheerlijst zijn gekoppeld.
  • De mogelijkheid om IAM-rollen te maken.

Stap 1: Een IAM-rol maken

Maak in AWS een IAM-rol die toegang geeft tot de S3-bucket waartoe uw gebruikers toegang moeten hebben. Deze IAM-rol moet worden gedefinieerd in hetzelfde account als de S3-bucket.

Aanbeveling

Als u al een IAM-rol hebt gemaakt die deze toegang biedt, kunt u deze stap overslaan en direct naar stap 2 gaan: Azure Databricks de IAM-rolgegevens geven.

  1. Maak een IAM-rol die toegang tot de S3-bucket toestaat.

    Het maken van rollen is een proces in twee stappen. In deze stap maakt u de rol aan, en voegt u een tijdelijk vertrouwensrelatiebeleid en een tijdelijke aanduiding voor een externe ID toe. Deze wijzigt u vervolgens nadat u de opslagreferenties in Azure Databricks hebt aangemaakt.

    U moet het vertrouwensbeleid wijzigen nadat u de rol hebt gemaakt, omdat uw rol uit zichzelf moet kunnen worden aangenomen (dat wil zeggen, het moet worden geconfigureerd om zichzelf te vertrouwen). De rol moet daarom bestaan voordat u de verklaring voor zelfveronderstelling toevoegt. Zie dit Amazon-blogartikel voor meer informatie over zelf-aannemende rollen.

    Belangrijk

    Databricks blokkeert nieuwe en bestaande opslagreferenties op basis van IAM-rollen die niet zelf-aannemend zijn. Zie voor meer informatie het beleid voor het zelf aannemen van rollen.

    Om het beleid te maken, moet u een tijdelijke externe ID gebruiken.

    1. Maak de IAM-rol met een aangepast vertrouwensbeleid.

    2. Plak in het veld Aangepast vertrouwensbeleid de volgende beleids-JSON.

      Met dit beleid wordt een vertrouwensrelatie tussen accounts tot stand gebracht, zodat Unity Catalog de rol kan aannemen voor toegang tot de gegevens in de bucket namens Databricks-gebruikers. Dit wordt opgegeven door de ARN in de Principal sectie. Het is een statische waarde die verwijst naar een rol die is gemaakt door Databricks.

      Het beleid stelt de externe ID in op 0000 als tijdelijke aanduiding. U werkt dit later bij naar de externe ID van uw opslagreferentie.

      {
        "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. Sla de configuratie van het autorisatiebeleid over. U gaat terug om dat in een latere stap toe te voegen.

    4. Sla de IAM-rol op.

  2. Maak het volgende IAM-beleid in hetzelfde account als de S3-bucket, waarbij u de volgende waarden vervangt:

    • <BUCKET>: De naam van de S3-bucket.
    • <KMS-KEY>: optioneel. Als versleuteling is ingeschakeld, geeft u de naam op van de KMS-sleutel waarmee de inhoud van de S3-bucket wordt versleuteld. Als versleuteling is uitgeschakeld, verwijdert u de volledige KMS-sectie van het IAM-beleid.
    • <AWS-ACCOUNT-ID>: De account-id van uw AWS-account (niet uw Databricks-account).
    • <AWS-IAM-ROLE-NAME>: De naam van de AWS IAM-rol die u in de vorige stap hebt gemaakt.

    Dit IAM-beleid verleent lees- en schrijftoegang. U kunt ook een beleid maken dat alleen-lezentoegang verleent. Dit kan echter onnodig zijn omdat u de opslagreferentie kunt markeren als alleen-lezen en alle schrijftoegang die door deze IAM-rol wordt verleend, wordt genegeerd.

    {
      "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"
        }
      ]
    }
    

    Opmerking

    Als u een meer beperkend IAM-beleid voor Unity Catalog nodig hebt, neemt u contact op met uw Azure Databricks-accountteam voor hulp.

  3. Maak een IAM-beleid voor bestandsevenementen in hetzelfde account als de S3-bucket.

    Opmerking

    Deze stap is optioneel, maar wordt ten zeerste aanbevolen. Als u Azure Databricks geen toegang verleent om bestandsevenementen namens u te configureren, moet u bestandsevenementen handmatig configureren voor elke locatie. Als u dit niet doet, hebt u beperkte toegang tot essentiële functies die Databricks in de toekomst kan vrijgeven. Zie (Aanbevolen) Bestandsevenementen inschakelen voor een externe locatie voor meer informatie over bestandsevenementen.

    Het IAM-beleid verleent Azure Databricks toestemming om de configuratie van gebeurtenismeldingen van uw bucket bij te werken, een SNS-onderwerp te maken, een SQS-wachtrij te maken en de SQS-wachtrij te abonneren op het SNS-onderwerp. Dit zijn vereiste resources voor functies die bestandsevenementen gebruiken. Vervang door <BUCKET> de naam van de S3-bucket.

    {
      "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. Koppel het IAM-beleid aan de IAM-rol.

    Voeg op het tabblad Machtiging van de rol het IAM-beleid toe dat u zojuist hebt gemaakt.

Stap 2: Geef Azure Databricks de details van de IAM-rol

  1. Meld u in Azure Databricks aan bij een werkruimte die is gekoppeld aan de Unity Catalog-metastore.

    Je moet de CREATE STORAGE CREDENTIAL bevoegdheid hebben. De beheerdersrollen metastore en accountbeheerders omvatten beide deze bevoegdheid.

  2. Klik op het pictogram Gegevens.Catalogus.

  3. Klik op de knop Externe gegevens > , ga naar het tabblad Referenties en selecteer Referentie maken.

  4. Selecteer een referentietype van de AWS IAM-rol.

  5. Voer een naam in voor de referentie, de IAM Role ARN waarmee Unity Catalog toegang krijgt tot de opslaglocatie in uw cloudtenant en een optionele opmerking.

  6. (Optioneel) Als u wilt dat gebruikers alleen-lezentoegang hebben tot de externe locaties die gebruikmaken van deze opslagreferentie, selecteert u in geavanceerde optiesalleen-lezenselecteren. Zie Een opslagreferentie markeren als alleen-lezen voor meer informatie.

    Opmerking

    Omdat Azure Databricks alleen-lezentoegang biedt tot S3-buckets met behulp van opslagreferenties, hoeft u deze optie niet in te stellen.

  7. Klik op Create.

  8. In het dialoogvenster Opslagreferentie gemaakt, kopieer de Externe ID.

  9. Klik op Gereed.

  10. (Optioneel) Koppel de opslagreferentie aan specifieke werkruimten.

    Standaard kan elke bevoegde gebruiker de opslagreferentie gebruiken voor elke werkruimte die is gekoppeld aan de metastore. Als u alleen toegang vanuit specifieke werkruimten wilt toestaan, gaat u naar het tabblad Werkruimten en wijst u werkruimten toe. Zie (Optioneel) Wijs de opslagreferentie toe aan specifieke werkruimten.

U kunt ook een opslagreferentie maken met behulp van de Databricks Terraform-provider en databricks_storage_credential.

Stap 3: Het vertrouwensrelatiebeleid voor de IAM-rol bijwerken

Wijzig in AWS het vertrouwensrelatiebeleid om de externe ID van uw opslagreferenties toe te voegen en deze zelf-vertrouwend te maken.

  1. Ga terug naar de opgeslagen IAM-rol en ga naar het tabblad Vertrouwensrelaties .

  2. Bewerk het vertrouwensrelatiebeleid als volgt:

    Voeg de volgende ARN toe aan de "Allow"-verklaring. Vervang <YOUR-AWS-ACCOUNT-ID> en <THIS-ROLE-NAME> door uw werkelijke account-id en IAM-rolwaarden.

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

    Werk in de "sts:AssumeRole" instructie de externe ID van de tijdelijke aanduiding bij naar de externe ID van uw opslagreferentie-ID die u in de vorige stap hebt gekopieerd.

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

    Uw beleid moet er nu als volgt uitzien, waarbij de vervangingstekst is bijgewerkt om de externe ID, account-ID en IAM-rolwaarden van uw opslagreferentiegegevens te gebruiken.

    {
      "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>"
            }
          }
        }
      ]
    }
    

Stap 4: De opslagreferentie valideren

Nadat u de wijzigingen hebt aangebracht in het vertrouwensbeleid voor IAM-rollen in stap 3: werk het vertrouwensrelatiebeleid voor de IAM-rol bij, controleert u of uw IAM-rol correct is geconfigureerd voor gebruik als opslagreferentie.

Opmerking

Als u de configuratie wilt valideren, moet u de eigenaar van de opslagreferentie zijn, een metastore-beheerder of u hebt CREATE EXTERNAL LOCATION machtigingen voor de opslagreferentie.

  1. Meld u in Azure Databricks aan bij een werkruimte die is gekoppeld aan de metastore.

  2. Klik op het pictogram Gegevens.Catalogus.

  3. Klik op de knop Externe gegevens > en ga naar het tabblad Referenties .

    Als alternatief kunt u op het tandwielpictogram klikken. Tandwielpictogram boven aan het deelvenster Catalogus en referenties selecteren.

  4. Selecteer de opslagreferentie die u wilt valideren.

  5. Klik op de knop Configuratie valideren.

  6. Als een van de controles mislukt, gaat u terug naar stap 3: werk het vertrouwensrelatiebeleid voor de IAM-rol bij en controleer het vertrouwensbeleid van de IAM-rol om ze correct te configureren.

Wanneer de opslagreferentie is gevalideerd, kunt u deze gebruiken om een externe locatie te maken.

Zelf-aannemend beleid voor het afdwingen van rollen

Op 30 juni 2023 heeft AWS het vertrouwensbeleid voor IAM-rollen bijgewerkt om te vereisen dat IAM-rollen expliciet op zichzelf vertrouwen voor STS:AssumeRole-aanroepen. Als gevolg hiervan vereist Databricks dat AWS IAM-rollen voor opslagreferenties zichzelf aannemen. Zie dit blogbericht van de community voor meer informatie.

Op 20 januari 2025 begon Databricks het gebruik van bestaande opslagreferenties te blokkeren met niet-zelf-aannemende IAM-rollen. Dit verbod kan werkbelastingen en taken breken die worden uitgevoerd met niet-zelf-uitgaande referenties.

Als u wilt controleren of een AWS IAM-rol voor een opslagreferentie zelf wordt aangenomen, volgt u de instructies in stap 4: De opslagreferentie valideren. Als de controle Rol zelf aannemen mislukt, gaat u opnieuw naar stap 3: werk het vertrouwensrelatiebeleid voor de IAM-rol bij en configureer het vertrouwensbeleid van de IAM-rol opnieuw om zichzelf te vertrouwen.

Als u meerdere opslagreferenties in een metastore hebt en deze wilt verifiëren, gebruik dan het volgende notebook om de zelf-aannamecapaciteiten van alle opslagreferenties in uw metastore te verifiëren.

Notitieboekje voor verificatie van zelf-veronderstellende opslagreferenties

Notebook krijgen

(Optioneel) De opslagreferentie toewijzen aan specifieke werkruimten

Standaard is een opslagreferentie toegankelijk vanuit alle werkruimten in de metastore. Dit betekent dat als een gebruiker een bevoegdheid (zoals CREATE EXTERNAL LOCATION) heeft gekregen voor die opslagreferentie, deze bevoegdheden kan uitoefenen vanuit elke werkruimte die is gekoppeld aan de metastore. Als u werkruimten gebruikt om de toegang tot gebruikersgegevens te isoleren, wilt u mogelijk alleen toegang tot een opslagreferentie vanuit specifieke werkruimten toestaan. Deze functie staat bekend als werkruimtebinding of opslagreferentie-isolatie. Zie (Optioneel) Een opslagreferentie toewijzen aan specifieke werkruimten voor instructies.

Beperkingen

Volgende stappen