Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается создание учетных данных хранения в каталоге Unity для подключения к AWS S3. Поддержка S3 в Azure Databricks доступна только для чтения.
Учетные данные хранилища включают долговременные облачные учетные данные, которые предоставляют доступ к облачному хранилищу. Вы ссылаетесь на учетные данные хранилища и путь к облачному хранилищу при создании внешних расположений в каталоге Unity для управления доступом к внешнему хранилищу.
Дополнительные сведения об учетных данных хранения и внешних расположениях см. в разделе "Подключение к облачному хранилищу объектов" с помощью каталога Unity.
Сведения о других вариантах облачного хранилища, поддерживаемых каталогом Unity, см. в разделе "Параметры облачного хранилища", поддерживаемые каталогом Unity.
Замечание
Могут применяться расходы на передачу данных между облаками. При использовании бессерверных вычислений плата взимается в соответствии с политикой передачи данных и подключения Databricks.
Создание учетных данных хранилища
Чтобы создать учетные данные хранения для доступа к контейнеру S3, создайте роль AWS IAM, которая разрешает доступ к пути к контейнеру S3 и ссылается на роль IAM в определении учетных данных хранилища.
Требования
В Azure Databricks:
- Рабочая область Azure Databricks включена для работы с каталогом Unity.
-
CREATE STORAGE CREDENTIAL
привилегии на хранилище метаданных Unity Catalog, подключенное к рабочей области. Администраторы учетных записей и администраторы хранилища метаданных имеют эту привилегию по умолчанию.
В учетной записи AWS:
Контейнер S3, соответствующий следующим требованиям:
- Не используйте нотацию точек (например,
incorrect.bucket.name.notation
) в именах контейнеров S3. Хотя AWS разрешает точки в именах контейнеров, Azure Databricks не поддерживает контейнеры S3 с нотацией точек. Контейнеры, содержащие точки, могут вызвать проблемы совместимости с такими функциями, как Delta Sharing, из-за ошибок при проверке SSL-сертификатов. Дополнительные сведения см. в рекомендациях по именованию контейнеров AWS. - В контейнере не может быть подключен список управления доступом S3.
- Не используйте нотацию точек (например,
Возможность создавать роли IAM.
Шаг 1. Создание роли IAM
В AWS создайте роль IAM, которая предоставляет доступ к контейнеру S3, к которому пользователи будут получать доступ. Эта роль IAM должна быть определена в той же учетной записи, что и контейнер S3.
Подсказка
Если вы уже создали роль IAM, которая предоставляет этот доступ, вы можете пропустить этот шаг и перейти непосредственно к шагу 2. Предоставление Azure Databricks сведений о роли IAM.
Создайте роль IAM, которая позволяет получить доступ к контейнеру S3.
Создание роли — это двухэтапный процесс. На этом шаге вы создадите роль, добавив политику временного отношения доверия и внешний идентификатор заполнителя, который вы затем измените после создания учетных данных хранения в Azure Databricks.
После создания роли необходимо изменить политику доверия, так как роль должна быть самозаверяющей (то есть она должна быть настроена для доверия). Таким образом, роль должна существовать перед добавлением заявления о самостоятельном предположении. Сведения о ролях с собственным назначением смотрите в этой статье блога Amazon.
Это важно
Databricks блокирует новые и существующие учетные данные хранения на основе ролей IAM, которые не являются самозаверяющими. Дополнительные сведения см. в статье о политике принудительного применения ролей.
Чтобы создать политику, необходимо использовать временный внешний идентификатор.
Создайте роль IAM с настраиваемой политикой доверия.
В поле "Настраиваемая политика доверия" вставьте следующий код JSON политики.
Эта политика устанавливает отношение доверия между учетными записями, чтобы "Unity Catalog" мог принимать роль для получения доступа к данным в хранилище данных от имени пользователей Databricks. Это определяется ARN в
Principal
разделе. Это статическое значение, которое ссылается на роль, созданную Databricks.Политика задает внешний идентификатор
0000
в качестве заполнителя. На следующем шаге вы обновите это до внешнего идентификатора ваших учетных данных хранилища.{ "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" } } } ] }
Пропустите конфигурацию политики разрешений. Вы вернетесь, чтобы добавить это на следующем шаге.
Сохраните роль IAM.
Создайте следующую политику IAM в той же учетной записи, что и контейнер S3, заменив следующие значения:
-
<BUCKET>
: имя контейнера S3. -
<KMS-KEY>
: необязательно. Если шифрование включено, укажите имя ключа KMS, который шифрует содержимое контейнера S3. Если шифрование отключено, удалите весь раздел KMS политики IAM. -
<AWS-ACCOUNT-ID>
: идентификатор вашей учетной записи AWS (а не учетной записи Databricks). -
<AWS-IAM-ROLE-NAME>
: имя роли AWS IAM, созданной на предыдущем шаге.
Эта политика IAM предоставляет доступ для чтения и записи. Вы также можете создать политику, которая предоставляет доступ только для чтения. Однако это может быть ненужным, так как вы можете пометить учетные данные хранения как доступные только для чтения, и любой доступ на запись, предоставленный этой ролью 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" } ] }
Замечание
Если вам нужна более строгая политика IAM для каталога Unity, обратитесь к группе учетной записи Azure Databricks за помощью.
-
Создайте политику IAM для событий файлов в той же учетной записи, что и контейнер S3.
Замечание
Этот шаг является необязательным, но настоятельно рекомендуется. Если вы не предоставляете Azure Databricks доступ к настройке событий файлов от вашего имени, необходимо вручную настроить события файлов для каждого расположения. Если вы этого не сделаете, у вас будет ограниченный доступ к критически важным функциям, которые Databricks может выпустить в будущем. Дополнительные сведения о событиях файлов см. в разделе (Рекомендуется) Включить события файлов для внешнего расположения.
Политика IAM предоставляет Azure Databricks разрешение на обновление конфигурации уведомлений о событиях в контейнере, создание раздела SNS, создание очереди SQS и подписку на очередь SQS в раздел SNS. Это необходимые ресурсы для функций, использующих события файлов. Замените
<BUCKET>
именем контейнера 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-*"] } ] }
Присоедините политики IAM к роли IAM.
На вкладке "Разрешения роли" присоедините созданные вами политики IAM.
Шаг 2. Предоставление Azure Databricks сведений о роли IAM
В Azure Databricks войдите в рабочую область, связанную с хранилищем метаданных каталога Unity.
У вас должна быть привилегия
CREATE STORAGE CREDENTIAL
. Роли администратора хранилища метаданных и администратора учетной записи включают эту привилегию.Щелкните
Каталог.
На странице быстрого доступа нажмите кнопку "Внешние данные", перейдите на вкладку "Учетные данные>" и выберите "Создать учетные данные".
Выберите тип учетных данныхроли AWS IAM.
Введите имя для учетных данных, ARN роли IAM, которая разрешает каталогу Unity получить доступ к расположению хранилища в вашем облачном тенанте, и добавьте необязательный комментарий.
(Необязательно) Если вы хотите, чтобы пользователи имели доступ только для чтения к внешним расположениям, которые используют эти учетные данные хранения, в Дополнительных параметрах выберите Только чтение. Дополнительные сведения см. в разделе "Пометить учетные данные хранилища как доступные только для чтения".
Замечание
Так как Azure Databricks предоставляет только доступ только для чтения к контейнерам S3 с использованием учетных данных хранения, этот параметр не требуется задавать.
Нажмите кнопку Создать.
В диалоговом окне создания учетных данных хранилища скопируйте внешний идентификатор.
Нажмите кнопку Готово.
(Необязательно) Привязка учетных данных хранилища к определенным рабочим областям.
По умолчанию любой привилегированный пользователь может использовать учетные данные хранения в любой рабочей области, подключенной к хранилищу метаданных. Если вы хотите разрешить доступ только из определенных рабочих областей, перейдите на вкладку "Рабочие области" и назначьте рабочие области. Смотрите раздел (Необязательно) Назначение учетных данных для хранилища определенным рабочим областям.
Вы также можете создавать учетные данные хранения с помощью поставщика Databricks Terraform и databricks_storage_credential.
Шаг 3. Обновите политику доверительных отношений для роли IAM
В AWS измените политику отношений доверия, чтобы добавить внешний идентификатор учетных данных хранилища и сделать ее самозаверяющей.
Вернитесь к сохраненной роли IAM и перейдите на вкладку "Отношения доверия ".
Измените политику отношений доверия следующим образом:
Добавьте следующий ARN в утверждение "Allow". Замените
<YOUR-AWS-ACCOUNT-ID>
и<THIS-ROLE-NAME>
фактическими значениями вашего идентификатора учетной записи и ролей IAM."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
"sts:AssumeRole"
В заявлении обновите заместительный идентификатор до внешнего идентификатора удостоверения хранилища, который вы скопировали на предыдущем шаге."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
Теперь ваша политика должна выглядеть следующим образом, а текст замены обновлен таким образом, чтобы использовать внешний идентификатор, идентификатор учетной записи и значения ролей IAM вашего учетного хранилища.
{ "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>" } } } ] }
Шаг 4. Проверка учетных данных хранилища
После внесения изменений в политику доверия ролей IAM в Шаг 3, убедитесь, что роль IAM правильно настроена для использования в качестве учетных данных хранилища.
Замечание
Чтобы проверить конфигурацию, необходимо быть владельцем учетных данных хранилища, администратором хранилища метаданных или иметь CREATE EXTERNAL LOCATION
разрешения на учетные данные хранения.
В Azure Databricks войдите в рабочую область, связанную с хранилищем метаданных.
Щелкните
Каталог.
На странице быстрого доступа нажмите кнопку "Внешние данные > " и перейдите на вкладку "Учетные данные ".
В качестве альтернативы можно щелкнуть
в верхней части панели каталога и выбрать «Учетные данные».
Выберите учетные данные хранения, которые требуется проверить.
Нажмите
".
Если какая-либо из проверок завершается ошибкой, вернитесь к шагу 3: Обновление политики доверия роли IAM и пересмотрите политику доверия роли IAM, чтобы правильно её настроить.
Когда учетные данные хранилища подтверждены, вы сможете использовать их для создания внешнего расположения.
Политика самодействующего принудительного закрепления ролей
30 июня 2023 года AWS обновила политику доверия ролей IAM, чтобы требовать, чтобы роли IAM явно доверяли сами себе для STS:AssumeRole
вызовов. В результате Databricks требует, чтобы роли AWS IAM для учетных данных хранения были самозаверяющими. Дополнительные сведения см. в этой записи блога сообщества.
20 января 2025 года Databricks начал блокировать использование существующих учетных данных хранения с не самозаверяющей ролью IAM. Этот запрет может нарушить рабочие процессы и задания, которые выполняются с использованием учетных данных без самоподтверждения.
Чтобы проверить, является ли роль AWS IAM для учетных данных хранения самозаверяющейся, следуйте инструкциям на шаге 4. Проверьте учетные данные хранилища. Если проверка Получение роли от самого себя не прошла, вернитесь к Шагу 3: Обновление политики доверия роли IAM и перенастройте политику доверия роли IAM так, чтобы она доверяла самой себе.
Если у вас есть несколько учетных данных хранения в хранилище метаданных, которые требуется проверить, используйте следующую записную книжку, чтобы проверить возможности всех учетных данных хранения в хранилище метаданных:
Самопроверяющий блокнот валидации учетных данных хранилища
(Необязательно) Назначение учетных данных хранилища определенным рабочим областям
По умолчанию учетные данные хранения доступны во всех рабочих областях в метасторе. Это означает, что если пользователю предоставлена привилегия (например, CREATE EXTERNAL LOCATION
в учетных данных хранилища), он может использовать эту привилегию в любой рабочей области, подключенной к метахранилищу. Если вы используете рабочие области для изоляции доступа к данным пользователей, может потребоваться разрешить доступ к учетным данным хранилища только из определенных рабочих областей. Эта функция называется привязкой рабочей области или изоляцией учетных данных хранилища. Для получения инструкций см. раздел (Необязательно) Назначение учетных данных хранилища определенным рабочим областям.
Ограничения
- В рабочих областях, использующих управление бессерверным исходящим трафиком, кроссплатформенный доступ к контейнерам AWS S3 должен быть настроен с помощью API политик сети.
Дальнейшие шаги
Просмотр, обновление, удаление и предоставление другим пользователям разрешений на использование учетных данных хранения. См. раздел "Управление учетными данными хранилища".
Определите внешние местоположения с помощью учетных данных для хранилища. См. статью "Создание внешнего расположения для подключения облачного хранилища к Azure Databricks".